From 686137f5b9989a1484cec92103ccd5222c0e75b6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 24 Aug 2007 18:48:04 +0000 Subject: new latex package toptesi (8jul07) git-svn-id: svn://tug.org/texlive/trunk@4806 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/toptesi/toptesi.dtx | 2357 ++++++++++++++++++++ Master/texmf-dist/source/latex/toptesi/toptesi.ins | 113 + 2 files changed, 2470 insertions(+) create mode 100644 Master/texmf-dist/source/latex/toptesi/toptesi.dtx create mode 100644 Master/texmf-dist/source/latex/toptesi/toptesi.ins (limited to 'Master/texmf-dist/source/latex/toptesi') diff --git a/Master/texmf-dist/source/latex/toptesi/toptesi.dtx b/Master/texmf-dist/source/latex/toptesi/toptesi.dtx new file mode 100644 index 00000000000..fe502447533 --- /dev/null +++ b/Master/texmf-dist/source/latex/toptesi/toptesi.dtx @@ -0,0 +1,2357 @@ +% \iffalse meta-comment +% +% Copyright 1989--2006 Claudio Beccari +% +% This file is part of the TOPtesi bundle +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This file has the LPPL maintenance status "author-maintained". +% +% The list of all files belonging to the TOPtesi bundle is +% given in the file `manifest.txt'. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% +% \iffalse +%<*driver> +\documentclass{ltxdoc} +\ProvidesFile{toptesi.dtx}[2006/12/15 v.4.06 Documented TeX file for +the TOPtesi bundle] +\GetFileInfo{toptesi.dtx} +\title{The TOPtesi bundle} +\date{\fileversion\space\filedate} + \author{Claudio Beccari} + +\begin{document}\errorcontextlines=9 +\maketitle + \setlength\hfuzz{20pt} + \DocInput{toptesi.dtx} +\end{document} +% +% \fi +% +% \CheckSum{2842} +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \begin{abstract} +% This file describes the TOPtesi bundle; it is a set of files designed to +% typeset with \LaTeX\ a university final report that in Italian is generally +% called ``tesi''; It was originally developed at the Technical University +% of Turin (Politecnico di Torino) but it was adapted for typesetting theses in any +% Italian university. Well\dots\ since the Erasmus student mobility is very +% extended and many Italian students participate in the so called \textit{double degree} +% programs; their theses, or whatever they are called in other countries, +% may be typeset so as to comply also with the host university rules; therefore this +% set of files has the ambition to be suited for typesetting theses in any university in the +% world\dots +% \end{abstract} +% +% \section{Introduction} +% The TOPtesi bundle collects a certain number of files, specifically +% \begin{itemize} +% \item a class file \texttt{toptesi.cls} to be used as the main document class; the main +% document may be any of a certain number of reports that in Italy +% are called with various names: ``monografia'', ``monografia di laurea'', +% ``tesi di laurea'', ``tesi di laurea specialistica'', ``tesi di laurea +% magistrale'', ``tesi di dottorato'', ``dissertazione di dottorato'', and so on. +% All these documents have in common the fact that they all conclude a period of university +% education. Moreover since they may conclude a double degree university program, they may +% receive foreign names such as, for example, ``Projet de fin d'\'etudes'', ``Master thesis'', +% and the like. +% \item An extension package \texttt{toptesi.sty} that contains most of the code +% for the real typesetting; it might be used as an extension to the report class file, +% although this use is discouraged. +% \item A second extension package \texttt{topfront.sty} that contain the commands +% and the typesetting macros for the title page; this file may be used as an +% independent extension package to be added to, say, the report class file for typesetting +% just the title page; this file might be used as a template for setting up the +% title page fixed information in languages different from Italian. +% \item A third extension package \texttt{topcomand.sty} that defines a certain number +% of user commands suitable for typesetting technical matters. +% \item A fourth extension package \texttt{trieste.sty} and its accompanying package option +% \texttt{topsiz14.clo} that is used as an option by +% \texttt{toptesi.cls} in order to define a certain number of variations required +% for theses in humanities at the university of Trieste; these variations are not so important +% ones, but they may be preferred also in other faculties so that the suitable option +% comes handy also in other situations. +% \item The logos of a certain number of Italian universities both in \texttt{.eps} and in +% \texttt{.jpg} or \texttt{.pdf} formats; such logos are included for the user sake, but +% the user should pay attention to use them according to the rules and limitations of +% each university and is strongly advised to look up such regulations in each university Web +% site. +% \item A documentation file \texttt{toptesi-doc.pdf} written in Italian where every feature +% is explained in detail; simpler information is given in this English documentation. +% \end{itemize} +% +% The above files are complemented with a configuration file that any user may +% personalize at will; these personalizations make it easy to configure the +% bundle so as to make it suitable for another language; in facts the \textsf{babel} +% package contains localizations for many languages but they refer to the standard +% infix \LaTeX\ names and phrases and they do not cope with the thesis title page requirements. +% +% \section{User commands} +% The \texttt{toptesi.cls} is basically an extension of the standard class +% \texttt{report.cls}; It redefines the page typesetting grid, the headers and the footers, +% and the title page layout and commands. +% \texttt{toptesi.cls} does not set such crazy settings as ``double spaced'' text; it is +% intended to typeset the thesis with the quality of a \LaTeX\ well typeset document, not as +% a typewriter written one. I suppose that typewriter documents have completely vanished +% except perhaps in the legal professions, especially in Italy where legal documents have to +% be written on special paper produced by the State Polygraphic Institute and carrying a +% watermark and the Republic's Seal; without a special printer it would be very difficult to +% typeset on such a paper. +% +% Theses very often are full of specialized material: formulas, diagrams and pictures, +% texts written in non latin alphabets, special symbols for philological mark-up, and the like; +% a common typewriter would not be suitable and the quality of the contents requires professional +% typesetting; this is why I strongly believe that instructions on typesetting styles that +% refer to the good old times of mechanical typewriters should be banned. +% +% Most new commands refer themselves to the information that should be typeset in the +% title page; some class options specify special stylistic page details; the rest is simple +% and traditional \LaTeX\ mark-up as it is implemented in the \LaTeX\ kernel and in the +% report document class. +% +% \subsection{Class options} +% The class accepts all the options accepted by the report document class plus the ones +% defined here: +% \begin{description}\def\Item[#1]{\item[\texttt{#1}]} +% \Item[chapterbib] Allows to typeset a list of references at the end +% of each chapter and the bibliography items are numbered with a \emph{chapter.item} +% indication. +% +% \Item[classica] Specifies a general modification of certain details that are +% supposed to be more adequate in the humanities; specifically this option +% lets old style numbers to be used for certain numerical pieces of information; +% some variations are also introduced in the title page. +% +% \Item[cucitura] In two sided printing it is better to move the +% typesetting grid towards the outer edges so as to cope with the thesis binding +% that is generally not made by sawing a number of signatures; the outer displacement +% is fixed to~7mm. +% +% \Item[14pt] Extends the normal size choice to 14 points; it is appreciated +% in various fields of humanities, but I would discourage this use in a technical +% thesis, where 10 point perhaps is too small, but 11 point or 12 point typesetting +% may be adequate. It is worth mentioning that this option implements the font +% settings in e different way from what is being done with the \texttt{extsizes} bundle of +% classes; this is why the original \texttt{size14.clo} class option file has been renamed +% \texttt{topsiz14.clo} so as to avoid conflicts with the \texttt{size14.clo} file belonging +% to that bundle. +% +% \Item[autoretitolo] This option modifies the left handed (even numbered) pages +% in two side typesetting; normally the even numbered headings contain +% the chapter title, while the odd numbered ones contain the current section title. +% If the \texttt{classica} option has been specified, then with this option it is possible to +% have even numbered % headings contain the author's name and the thesis title, while the odd +% numbered ones contain the chapter title. Since the thesis title might be too +% long to fit in the header together with the author's name, the |\title| macro +% as been modified so as to accept an optional short title, similarly to the +% sectioning commands. +% +% \Item[oldstyle] Also this option works only if \texttt{classica} had already been +% specified; it typesets several numerical data with the old style numbers. +% \end{description} +% +% \subsection{Title page commands} +% The user must specify a certain number of commands in order to have the +% title page contain all the required information. It must be specified that +% most of these commands may be used in the configuration file so as to avoid repeating +% the same data for different ``reports''; well, a university student might write a +% bachelor's ``monografia'', then a master thesis and finally a doctoral dissertation; +% why should s/he repeat his/her name, the name of the institution, and so on? +% all the user commands for the title page redefine default values or strings; +% therefore if none of the required information is given, the default values and strings are +% typeset, possibly with hilarious results\dots +% +% Since most users are supposed to be Italian, the user commands are mostly in Italian; +% the following description gives their names and meanings; every command receives an argument; +% only the command |\title| accepts an optional argument according to the usual \LaTeX\ syntax: +% \[ +% \makebox[0pt]{% +% \texttt{\char92}\emph{command}\relax +% \texttt{[}\emph{opt\_arg}\texttt{]}\relax +% \texttt{\char123}\emph{req\_arg}\texttt{\char125}\relax +% } +% \] +% \begin{description} +% \def\cs#1{\texttt{\char92#1}} +% \def\Item[#1]{\item[\normalfont\cs{#1}]} +% \Item[frontespizio] is the actual command that typesets the title page and this command +% uses all the information that is passed to it by means of the following +% commands. +% \Item[monografia] sets the bachelor's report style and retrieves the report title +% \Item[titolo] gets the thesis title and an optional thesis short title +% \Item[sottotitolo] gets the thesis subtitle if any +% \Item[materia] gets the name of the subject the thesis deals with +% \Item[Materia] alias for \cs{materia} +% \Item[direttore] gets the name of the Doctoral School Director +% \Item[coordinatore] gets the name of the Doctoral School Coordinator +% \Item[QualificaDirettore] gets the phrase that describes the director or coordinator +% official position; by using the command \cs{direttore} the default phrase +% ``Direttore della Scuola di Dottorato'' is printed over the ``director's'' name; +% if \cs{coordinatore} is used the default phrase ``Coordinatore della +% Scuola di Dottorato'' is printed instead. If neither one is applicable or a +% description in another language is required, this macro is available for +% specifying such position. +% \Item[relatore] gets the name of thesis first supervisor +% \Item[secondorelatore] gets the name of the second supervisor +% \Item[terzorelatore] gets the name of the third supervisor; it is assumed that the number of supervisors +% never exceeds three. +% \Item[tutore] gets the name of the doctorate tutor; there is no difference with regards +% to the \cs{relatore}, but the default phrase ``Tutore'' is printed over this +% person's name. +% \Item[TutorName] gets the phrase that describes the tutor position, possibly in a different +% language. +% \Item[AdvisorName] gets the string that qualifies the supervisor(s); the default string +% is ``Relatore:'' or ``Relatori:'' for the plural; in another language +% this command is used to define the string, say, ``Supervisors:'' if the +% thesis has been supervised by more than one person. +% \Item[CoAdvisorName] gets the string that qualifies the co-supervisor(s); the default string is +% ``Correlatore:'' or ``Correlatori:'' in the plural; this command may be used to +% define the string, say, ``Corapporteur:'' in a French Projet de fin +% d'\'etudes. +% \Item[candidato] gets the name of the male student +% \Item[candidata] gets the name of the female student +% \Item[secondocandidato] gets the name of the second male student +% \Item[secondacandidata] gets the name of the second female student +% \Item[terzocandidato] gets the name of the third male student +% \Item[terzacandidata] gets the name of the third female student; most often the thesis +% author is just one person; but there are some institutions where group +% final works are accepted; it is assumed that the group does not contain more +% than three authors. The specification of the gender allows the software +% to determine the correct labeling phrase in the proper gender and proper number. +% For different languages there might be no difference in gender but +% there is a difference in the plural ending. +% \Item[CandidateName] gets the string that describes the student status in a foreign language +% or even in Italian; the default string is ``Candidato:'' (with colons) +% adjusted to masculine, or feminine, singular or plural; with the option +% \texttt{classica} the string becomes ``Laureato:''; in other languages +% it is necessary to specify this string in the proper gender and number +% \Item[sedutadilaurea] gets the date of the final exam, or presentation, or defense of the +% thesis; if this date is omitted the default date is the current +% month and year in Italian +% \Item[esamedidottorato] an alias for \cs{sedutadilaurea} to be used for doctoral dissertations +% \Item[ciclodidottorato] gets the roman numeral that specifies the doctoral cycle +% \Item[CycleName] redefines the string that expresses the name of the doctoral cycle; +% by default this is ``ciclo'' but this command is useful to set the +% name in a different language. +% \Item[corsodilaurea] gets the proper name of the degree course; the phrase that describes +% the degree course is specified, if necessary, with the following +% command; with this one you specify just, say, ``Electrical Engineering'' +% \Item[CorsoDiLaureaIn] gets the generic name of the degree course, for example ``Bachelor +% Degree in'' +% \Item[TesiDiLaurea] gets the generic phrase that describes the thesis; by default it is +% ``Tesi di Laurea''; in English one might set it to ``Master Thesis''. +% \Item[NomeMonografia] gets the phrase that describes the bachelor's report; by default +% it is ``Monografia di Laurea''. In some Italian universities it might +% be called ``Tesi di Laurea'', so that the master thesis should be given +% another qualification, for example ``Tesi di Laurea Magistrale''. +% \Item[NomeDissertazione] gets the phrase that describes the doctoral thesis; by default it is +% ``Tesi di Dottorato''. +% \Item[InName] infix strings often require adjusting of the prepositions; this macro gets +% the preposition that stands for ``in'' (the default). In German it might +% become ``auf'' +% \Item[NomeAnnoAccademico] defines the infix string that stands for ``Academic year''. +% This macro is +% defined only if the option \texttt{classica} is in force; after all +% the command |\annoaccademico| is defined only with that option. +% \Item[logosede] specifies the name of the file that contains the university logo; no default +% is defined; rather a warning message is issued if no name is given +% or the file is missing, but typesetting goes on without the inclusion +% of any logo. +% \end{description} +% +% Since the infix strings are all memorized into control sequences and for each of them it +% is possible to use a defining command, all strings can be modified at will, so that there +% is no difficulty to localize the package in another language; this comes particularly handy for the +% Erasmus students on double degree programs. +% +% As a final remark notice that the commands for typesetting the title page are contained in the package +% \texttt{topfront.sty}, which can be used as an autonomous extension to the \texttt{report} +% document class. One could easily typeset just the title page with a separate \TeX\ source file +% so as to test the completeness of the commands and coherence of the configuration file or +% for just printing the isolated title page. +% +% \subsection{Typesetting commands} +% The bundle and the TOPtesi document class accept all \LaTeX\ commands provided by +% the \LaTeX\ \texttt{kernel}, the \texttt{report} document class, and the \texttt{graphics} +% extension package, besides those provided by the \texttt{babel} package. +% +% With this respect it must be underlined that the Italian and English languages are specified by +% default, the Italian one being the default language. An initial specification of +% |\selectlanguage{english}| sets the English language as default. Should a student typeset the thesis +% in French, it would be necessary to specify the option \texttt{french} among the class options, +% and so start the document by specifying |\selectlanguage{french}|. Nevertheless these +% \texttt{babel} macros select the English or the French typesetting rules, but hyphenation +% is activated only if the program format file has been generated with the pertinent languages. +% While (American) English is the default and almost any distribution of the \TeX\ system +% has many language defaults, it is more likely that French is preloaded while Italian is not. +% The user should verify which are the default languages preloaded into the format file; this +% information is written in the very first lines of any \texttt{.log} file generated by any +% run of \LaTeX, \texttt{pdflatex} or even plain \TeX. +% +% Should the required languages be missing, the user is forced to read the distribution +% instructions, so as to find out how to configure his/her system so as to consider the languages +% s/he wants to work with, and finally s/he must recreate the format files and put them in +% the proper places of the standard or the local folder tree. The user is invited to carefully +% investigate on these fine points and to configure the system properly; it would be very +% upsetting using fine software for producing a perfectly typeset thesis that, unfortunately, +% has wrong hyphenation points! +% +% The TOPtesi bundle adds very little to the user commands; nevertheless the package +% \texttt{topcomand.sty}, +% that is part of this bundle and is automatically loaded, defines some useful commands for +% typesetting technical matters in such a way as to fulfill the ISO regulations. +% Some of these commands are already defined in the \texttt{babel} Italian option, but if your thesis +% is written in different languages it may happen that such commands are not available any more when +% another language is selected. +% +% The following description specifies these particular commands. +% \begin{description} +% \def\Item[#1]{\item[\normalfont\texttt{\char92#1}]} +% \Item[DeclareSlantedCapitalGreekLetters] does exactly what its name +% means: it changes the definitions of the mathematical capital Geek +% letters so that they are typeset in ``italics''; they are in effects taken from the math +% italic alphabet, instead of the default roman one. +% % +% \Item[ensuremath] should be already defined in the \LaTeX\ kernel; +% should one still be using an obsolete version, this command gets +% available anyhow. +% % +% \Item[ohm] typesets an upright capital omega even if the capital Greek +% letters are in italics; the good point is that |\ohm| can be used also +% in text mode. +% % +% \Item[ped] inserts a subscript in upright type; the ISO regulations +% require the use of italics for physical or mathematica quantities, and +% upright type for whatever is not a variable, from the names of +% functions (such as sin, cos, log, etc.), to the indices that contain +% information on something that is not variable. This means that $V_i$ +% requires an italic index to imply that the object $V$ is the $i$-th in +% a set, while, say, $V_{\mathrm{max}}$ indicates the maximum value of the +% variable $V$. This command may be used both in math and in text mode. +% % +% \Item[ap] similarly |\ap| inserts an apex in upright type, both in math +% and in text mode. +% % +% \Item[unit] sets the unit of measure close to the numerical measure by +% insetting a non breakable thin space and by setting the units of +% measure in upright type; this works both in math and text mode. Of +% course it is necessary to input the |\unit| command without intervening +% spaces in the source file; it's necessary to typeset, say, +% |35\unit{km}| and to avoid to input \verb*+35 \unit{km}+. This command, +% as it is defined, conflicts with the definition of the homonymous +% command |\unit| as defined by the \texttt{units} package, but since +% this latter package is necessarily input \emph{after} +% \texttt{topcomand.sty} is read, the last definition is the one in +% force, therefore if one wishes to use the \texttt{units} package s/he +% should not encounter any inconsistencies. +% % +% \Item[micro] sets the decimal prefix $\mu$ in typesetting units of +% measure. +% % +% \Item[gradi] sets the small circle that defines the sexagesimal +% degrees; it may be used also for the celsius degrees by writing in the +% source file, say, |35\unit{\gradi C}| in order to get +% $35\,^\circ\mathrm{C}$. +% % +% \Item[gei] inserts the imaginary unit in upright type with the +% ``spelling'' used by the technologists: ``j''. This command may be +% redefined, of course, but this strange name is due to the fact that +% nowadays the letter ``j'' in Italian is called with the English name +% (much shorter than the traditional Italian name ``i~lunga'') and the +% indicated spelling ``gei'' is the phonetic Italian rendering of the +% English word. The imaginary unit is not a variable, it is an operator, +% so that the ISO regulations require for this symbol an upright type. +% % +% \Item[eu] inserts the Euler number symbol ``e'' in upright type; since +% this entity is not a variable, but it is a mathematical constant, the +% ISO regulations require it to be written in upright type. The electron +% charge $e$ is not upright because this physical ``constant'' is not +% that constant\dots +% % +% \Item[listing] requires for its argument the name of a file and typesets it in verbatim mode; +% this command is very useful for typesetting the listings of the programs that were written +% for the thesis; for best results it is recommended that the source program has lines not +% longer than 80 characters. +% \end{description} +% +% All these commands are defined into the separate package \texttt{topcoman.sty} +% that can be used as an independent extension package for any document class. +% +% \StopEventually{} ^^A qui si puo' mettere una bibliografia +% +% \section{Documented code} +% \subsection{The class code} +% +% Here begins the usual machinery for stating the required \TeX\ format +% and for sharing some code between the driver and the class part of the code, since they are +% supposed to carry the same date and version number, besides the description string. +% \begin{macrocode} +%<*class> +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{toptesi}% +[2006/04/04 v.4.00.02 Class for typesetting university theses] +% \end{macrocode} +% +% The class itself is very simple since it requires just the \texttt{report} +% document class and some packages with some default options. All options +% specified for the \texttt{toptesi} class are passed on to the \texttt{report} +% class; the latter, on turn, is called with the \texttt{a4paper} option. +% According to the \LaTeX\ machinery of option passing the options passed on to +% the loaded class should be appended to the existing options, so that if \texttt{letterpaper} +% was specified in the calling statement of \texttt{toptesi}, this last option would +% override the default \texttt{a4paper} option. The same holds true for the other package +% options except for the encoding name used as an option for the \texttt{inputenc} package; this % simply does not work and the package is not loaded any more as it was in the previous % versions\footnote{Thanks to Enrico Gregorio who pointed out this feature.}. +% Similarly if another language was specified in the list of \texttt{toptesi} +% options, this language would be appended yo the \texttt{babel} package default options +% and would become the default language. +% \begin{macrocode} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} +\ProcessOptions\relax +% +\LoadClass[a4paper]{report} +\RequirePackage[english,italian]{babel} +\RequirePackage{toptesi} +% +% +% \end{macrocode} +% \subsection{The \texttt{toptesi.sty} code} +% The greatest part of the \texttt{toptesi} class code is saved into a separate file +% partly for backward compatibility reasons (before version 3.x \texttt{toptesi} was just +% an extension to the \texttt{report} class) and partly because it might be used as a standaolone +% package, although, take notice, it might conflict with the \texttt{book} class code and certainly +% it is incompatible with the \texttt{article} class. This package must contain its own \TeX\ +% format declaration and might have different version and subversion numbers compared to the +% class file and the other invoked packages that are part of the same bundle. +% +% \begin{macrocode} +%<*topsty> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{toptesi}% +[2006/08/22 v.4.00.03 Extension for toptesi.cls]% +% \end{macrocode} +% +% We start with defining the debugging macros; these trace commands and macros +% and are the usual one I use for debugging. I know the \texttt{trace} package is supposed +% to be much better, but I am used to these ones. +% \begin{macrocode} +\def\TRON{\tracingcommands \tw@ \tracingmacros \tw@} +\def\TROFF{\tracingcommands\z@ \tracingmacros \z@} +\let\TROF\TROFF +% \end{macrocode} +% Now we define the specific package macros: \texttt{classica} and \texttt{trieste} +% are identical; \texttt{trieste} is maintained for backward compatibility. +% The option \texttt{14pt} is for choosing a normal size of 14pt; the class option +% file \texttt{topsiz14.clo} has a name that should not conflict with other +% similar class option packages and is in line with the other standard \texttt{size??.clo} +% files. \texttt{chapterbib} allows to set a list of references at the end of each chapter. +% \begin{macrocode} +\newif\if@binding \@bindingfalse +\newif\ifchapterbibliography \chapterbibliographyfalse +\DeclareOption{cucitura}{\@bindingtrue} +\DeclareOption{14pt}{\input{topsiz14.clo}} +\DeclareOption{chapterbib}{\chapterbibliographytrue} +\DeclareOption{trieste}{\AtEndOfPackage{\RequirePackage{trieste}}} +\DeclareOption{classica}{\AtEndOfPackage{\RequirePackage{trieste}}} +% +\ProcessOptions\relax +% \end{macrocode} +% The \texttt{graphicx} package is loaded by default; it is required for +% inserting the university logo; if the user forgets that this package has already been loaded +% nothing dramatic happens, because the |\usepackage| and |\RequirePackage| macros +% perform the necessary tests in order to avoid reloading the same packages again and again. +% \begin{macrocode} +\RequirePackage{graphicx} +% \end{macrocode} + +% The text height gets set so as to cope with the standard UNI A4 size; in +% any case the typesetting grid is set to an height of 585pt and is then +% rounded to an integer number of lines depending on the size option +% that has been chosen. The |\topmargin|, |\headheight| and |\headsep| +% parameters have already been set in the size class option file, so that here +% just a small adjustment is made. +% +% \begin{macrocode} +\textheight 585pt +\divide\textheight by \baselineskip +\multiply\textheight by \baselineskip +\advance\textheight by \topskip +% \end{macrocode} +% For the text grid width a certain reduction is made if the extra size of 14pt is chosen. +% \begin{macrocode} +\ifx\f@size\@xivpt + \textwidth=138mm +\else + \textwidth=150mm +\fi +% \end{macrocode} +% Because of the above adjustment the right and left margins must be recomputed; +% in any case they must be recomputed because the default positioning of the +% text grid is centered; only if the class option \texttt{cucitura} is specified +% (|\if@binding| in this case is true) the text grids are moved to the outside +% in order to leave a wider inner margin. At the same time if the text grid is moved to +% the outside, the marginal note width must be reduced accordingly. +% \begin{macrocode} +\oddsidemargin=\paperwidth +\advance\oddsidemargin -\textwidth +\divide\oddsidemargin \tw@ +\advance\oddsidemargin -1in +\evensidemargin=\oddsidemargin +\marginparwidth\oddsidemargin +\advance\marginparwidth 1in +\advance\marginparwidth-2.5\marginparsep +% +\if@binding + \typeout{Messaggio Toptesi: Ricalcolo i margini} + \advance\oddsidemargin 7mm + \advance\evensidemargin -7mm + \advance\marginparwidth -7mm + \advance\marginparwidth -7mm +\fi +% \end{macrocode} +% +% We now establish the page style. We start by setting to ``empy'' the tokens that +% keep the left and the right marks; we define a box so as to set the headers +% inside this box; we redefine also the plain page styles; it is actually a leftover +% from the previous versions when the page number was set at the foot in bold face, +% but we leave it here without the bold face specification, so that in future versions +% folios may be redefined in a common way with the other page styles. +% Notice that in all page styles folios are always in the footers. +% By defining |\lapagina| to be equivalent to |\thepage| we can later on +% redefine |\lapagina| the way we like; we actually do so with the option +% \texttt{classica}. +% \begin{macrocode} +\def\lapagina{\thepage} +\mark{{}{}} +\newbox\@intesta +% +\def\ps@plain{\let\@mkboth\@gobbletwo +\def\@oddfoot{\null\hfill {{\lapagina}}\hfill \null}\def\@oddhead{} +\def\@evenhead{}\let\@evenfoot\@oddfoot} +% \end{macrocode} +% Other page styles are defined in a different way according to the choice of +% one side or two side printing. In any case the header is set without capitalization +% as it happens in all the default document classes, and it is underlined at a fixed +% distance from the base line. If the chapter or section heading a warning is issued +% so as to invite the user to exploit the sectioning commands optional short argument. +% \begin{macrocode} +\if@twoside + \def\ps@headings{\let\@mkboth\markboth% + \def\@oddfoot{\null\hfill {{\lapagina}} \hfill\null} + \let\@evenfoot\@oddfoot + % + \def\@evenhead{\setbox\@intesta\hbox{\footnotesize\slshape + \leftmark}% + \ifdim\wd\@intesta>\textwidth \headWarn{\chapter}\fi% + \underline{\makebox[\textwidth]{\footnotesize\slshape + \strut\leftmark}}}% + \def\@oddhead{\setbox\@intesta\hbox{\footnotesize\slshape + \rightmark}% + \ifdim\wd\@intesta>\textwidth \headWarn{\section}\fi% + \underline{\makebox[\textwidth]{\footnotesize\slshape + \strut\rightmark}}}% + \def\chaptermark##1{\markboth{\thechapter\ -- ##1}{}} + \def\sectionmark##1{\markright{\ifnum\c@secnumdepth>\z@ + \thesection\ -- \fi ##1}}} +\else + \def\ps@headings{\let\@mkboth\markboth + \def\@oddfoot{\null \hfill {\lapagina} \hfill \null} + \def\@evenfoot{} + \def\@oddhead{\setbox\@intesta\hbox{\footnotesize\slshape + \rightmark}% + \ifdim\wd\@intesta>\textwidth \headWarn{\chapter}\fi% + \underline{\makebox[\textwidth]{\footnotesize\slshape + \strut\rightmark}}}% + \def\chaptermark##1{\markright{\thechapter\ -- ##1}}} +\fi +% +\def\headWarn#1{\PackageWarning{toptesi}{% + THE HEADING IS TOO LONG\MessageBreak + Use the optional argument of command \string#1\MessageBreak + See the LaTeX Handbook (1994) on section C.4.1\MessageBreak}} +% \end{macrocode} +% The various tables of contents or figures or tables require some boolean variables to +% be defined; in facts, although the ISO regulations require that every technical report contains +% the list of figures and/or tables, in Italy theses rarely contain these lists; after all: is +% a thesis a technical report? We require also some other boolean variables to handle +% the difference between front matter and main matter; this differences are already defined +% in the \texttt{book} document class, but not in the \texttt{report} one. +% \begin{macrocode} +\newif\iffigurespage +\newif\iftablespage +\newif\ifnumeriromani +\newif\iffrontmatter +% \end{macrocode} +% The |\frontmatter| and |\mainmatter| commands are defined and at the beginning +% of the document the default situation of front matter is established. +% \begin{macrocode} +\def\frontmatter{\clearpage\ps@plain\pagenumbering{roman}% + \numeriromanitrue\frontmattertrue\@openrightfalse} +\def\mainmatter{\if@twoside\@openrighttrue\fi + \clearpage\ps@headings\pagenumbering{arabic}% + \numeriromanifalse\frontmatterfalse} +\AtBeginDocument{\frontmatter} +% \end{macrocode} +% The main matter is automatically established with the first |\chapter| command issued by +% the user; this means that every command that starts a section at the ``chapter'' level within +% the front matter must be executed without an explicit call to |\chapter|. +% +% By default we set to false the boolean variables that control the typesetting of the +% list of figures and the list of tables. +% \begin{macrocode} +\figurespagefalse +\tablespagefalse +% \end{macrocode} +% We have to define the front matter sectioning names |\sommario| and |\ringraziamenti| +% so as to remain in the front matter. +% \begin{macrocode} +\def\sommario{% + \iffrontmatter\else\frontmattertrue\fi + \if@openright\cleardoublepage\else\clearpage\fi + \global\@topnum\z@ + \@afterindentfalse + \@schapter{\summaryname}% + \addcontentsline{toc}{chapter}{\summaryname}% + } +% +\def\ringraziamenti{% + \iffrontmatter\else\frontmattertrue\fi + \if@openright\cleardoublepage\else\clearpage\fi + \global\@topnum\z@ + \@afterindentfalse + \@schapter{\acknowledgename}% + \addcontentsline{toc}{chapter}{\acknowledgename}% + } +% \end{macrocode} +% The strings |\summaryname| and |\acknowledgename| are not defined in any +% language option to \texttt{babel}. Default definitions are given below, but the user +% must define new names for localizing the package in a language different from +% Italian and English. +% +% We have to modify the |\chapter| and |\part| commands so that as the user +% first issues one of these commands the typesetting style is switched to the +% one for the main matter. +% \begin{macrocode} +\renewcommand\chapter{% + \iffrontmatter\mainmatter\fi + \if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +% +\renewcommand\part{% + \iffrontmatter\mainmatter\fi + \if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{empty}% + \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi + \null\vfil + \secdef\@part\@spart} +% \end{macrocode} +% At the same time we have to make sure that |\tableofcontents|, +% |\listoftables| and |\listoffigures| do not exit from the front matter style. +% We assume these commands are issued while in front matter, the default at the begin +% document step, so we have to avoid to use starred or un-starred |\chapter| commands. +% \begin{macrocode} +\renewcommand\tableofcontents{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \if@openright\cleardoublepage\else\clearpage\fi + \global\@topnum\z@ + \@afterindentfalse + \@schapter{\contentsname}% + \@starttoc{toc}% + \clearpage + \if@restonecol\twocolumn\fi + } +\renewcommand\listoffigures{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \if@openright\cleardoublepage\else\clearpage\fi + \global\@topnum\z@ + \@afterindentfalse + \@schapter{\listfigurename} + \@mkboth{\listfigurename}{\listfigurename}% + \@starttoc{lof}% + \clearpage + \if@restonecol\twocolumn\fi + } +\renewcommand\listoftables{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \if@openright\cleardoublepage\else\clearpage\fi + \global\@topnum\z@ + \@afterindentfalse + \@schapter{\listtablename}% + \@mkboth{\listtablename}{\listtablename}% + \@starttoc{lot}% + \clearpage + \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% We need to define |\indici| that typesets the table of contents and, optionally, +% the lists of tables and/or figures while assuring that the front matter style is used for +% typesetting. +% \begin{macrocode} +\def\indici{% + \iffrontmatter\else\frontmattertrue\fi + \tableofcontents + \iftablespage + {\addvspace{10pt} + \let\saveaddvspace=\addvspace + \def\addvspace##1{} + \listoftables + \let\addvspace=\saveaddvspace} + \fi + \iffigurespage + {\addvspace{10pt} + \let\saveaddvspace=\addvspace + \def\addvspace##1{} + \listoffigures + \let\addvspace=\saveaddvspace} + \fi +} +% \end{macrocode} +% +% Command |\onecolumn| is not actually necessary; it simply overrides the possible +% misused option \texttt{twocolumn} in the opening document class statement; +% no thesis should be typeset in double column. +% \begin{macrocode} +\onecolumn +% \end{macrocode} +% +% Here come some declarations for vertical justification and for avoiding an hyphenated +% word at the bottom of a page +% \begin{macrocode} +\if@twoside + \flushbottom +\else + \ifx\@xivpt\f@size + \raggedbottom + \else + \flushbottom + \fi +\fi +\brokenpenalty=10000 +% \end{macrocode} +% +% Here comes a questionable command and/or environment; good typesetting +% requires the baseline skip to be proportioned to the font size, generally it is some 10--20\% +% larger than the font size. In some reasonable instances a wider or a narrower baseline skip +% might be required; the \LaTeX\ kernel allows to use the |\linespread| command; +% in the previous versions of this bundle a command |\interlinea| and an environment +% \texttt{interlinea} were defined so as to allow to set the line spread factor. +% The experience has shown that students tend to use this command so as to typeset a poor +% and thin thesis on more pages. Well, every instrument can be judiciously or maliciously used; +% this is one of those double sided instruments. +% \begin{macrocode} +\def\interlinea#1{\linespread{#1}\selectfont} +\def\endinterlinea{\par} +% \end{macrocode} +% But whatever might be the current line spread factor within figures and tables we reset +% this factor to the unit value; floating bodies do not belong to this or that section +% of text where a different spread factor might be reasonable. +% \begin{macrocode} +\def \@floatboxreset {% + \reset@font + \linespread{1}% + \normalsize + \@setminipage +} +% \end{macrocode} +% Since we are at it we define the floating bodies placing parameters; not only the +% values ``here'', ``top of the page'' and ``bottom of the page'', that we set as default ones +% leaving to the user to explicitly specify the ``page of floats'', but also the numerical and +% geometrical parameters that control the float placements. +% These geometrical parameters are critical and everybody has his/her own ideas of +% what are the best values for them. According to my experience these parameters work quite well +% but I would not suggest them for every kind of typewritten document. +% In particular the zero value for the text fraction appears strange, but students have +% the tendency to create large figures (more than large tables) and these tend to clog the figure queue. +% A 100\% space for the top of page figures and a requirement of 0\% text allows large floats +% to exit the queue provided they do not exceed the text height. +% \begin{macrocode} +\def\fps@figure{htb} \def\fps@table{htb} +% +\setcounter{topnumber}{2} +\def\topfraction{1} +\setcounter{bottomnumber}{1} +\def\bottomfraction{.5} +\setcounter{totalnumber}{3} +\def\textfraction{0} +\def\floatpagefraction{0} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{1} +\def\dblfloatpagefraction{0} +% \end{macrocode} +% One command that the default definition does not satisfy me very much is the caption command; +% actually it is the internal |\@makecaption| macro that performs the job. The point is that +% I prefer a narrower justified caption rather than a caption where the last line is just a short word +% or the right segment of an hyphenated word. If one sets the +% |\finalhyphendemerits| counter to an incredibly high value, one might succeed +% in avoiding hyphenation in the last word of a caption; but this might lead +% to a very loose typesetting of the caption paragraph, especially +% if the horizontal box that contains it hardly exceeds the caption width. +% I initially set the caption width (a new length) to the overall text width diminished by 3em; +% then if the caption text, inclusive of the caption type string and number, is shorter than +% the text width it is typeset as centered text; if it exceeds the text width +% it is set as a justified paragraph whose line with equals the established caption with; +% but in any case the last line of the paragraph is measured and if it is shorter than one third +% of the caption width, this width is shortened a little bit and the paragraph is set again +% with this shortened caption width; in order to be sure that one iteration is +% sufficient, the shrinking of the caption width must be computed according to +% the number of lines the paragraph occupies. +% In order to count the number of lines the caption paragraph occupies it is +% necessary to recall that the first line occupies a vertical space that equals +% |\topskip| while the other lines occupy a vertical space equal to +% |\baselineskip|; the latter one is generally larger than |\topskip| therefore +% the integer division of the height of the vertical box divided by the +% |\baselineskip| is truncated to count a line less than the true value. +% In our case if the caption does not stay in one line, its text is typeset in a +% vertical box with a line spread of 0.95 so as to make the caption a little +% more compact than the regular text. +% The baseline skip is a little shorter than the regular one, but it should +% still exceed the default |\topskip|; when we first typeset the caption in a +% vertical box we strip off the last line +% and we must remember the presence of this line in our arithmetics. +% If the length of the stripped last line is longer that one third of the +% caption width, then the vertical box is recomposed by restacking the +% individual lines, but if this last line is shorter than one third of the +% caption width, this width is recomputed in this way: let $N-1$ be the number +% of lines obtained with the integer division, i.e.\ one line less than those +% actually contained in the vertical box. Let $x$ be the initial caption +% width and $x_2$ the last line width; let $y$ be the new caption width; then +% the total length of the caption of width $x$ is $Nx+x_2$ and this should be +% distributed over $N+1$ lines; if we obtained the new caption width $y$ by +% dividing the total length by $N+1$ we should be able to typeset the whole +% caption with all the lines of equal length. This does not actually take place +% because the new lines do not necessarily contain the same amount of inter word +% space, some words might have been hyphenated in a different way, and so on. +% Moreover we do not want a caption that barely exceeds the length of +% |\captionwidth| to be retyped into a two line caption width is about one half +% of the width of the other captions. Therefore we allow for some white space in +% the last line by computing the new caption width with the following formula +% \[ y=\frac{(N+0.5)x + x_2}{N+1} \] +% \begin{macrocode} +\newdimen\captionwidth +\long\def\@makecaption#1#2{% + \begingroup + \small \parskip\z@ \parindent\z@ + \finalhyphendemerits 100000\relax + \linespread{0.95}\selectfont + \vskip \abovedisplayskip + \vskip \abovedisplayskip\captionwidth=\hsize + \advance\captionwidth-3em + \setbox0 \hbox{#1.\quad#2}% + \ifdim\wd0>\hsize + \setbox1 \vbox{\hsize=\captionwidth + \unhbox0\par\global\setbox2\lastbox}% + \setbox2\hbox{\unhbox2}% + \ifdim\wd2<0.333333\captionwidth + \count255=\ht1 \advance\count255 \dp1 + \divide\count255\baselineskip + \advance\count255\@ne + \@tempdima=\wd2 + \advance\@tempdima \count255\captionwidth + \advance\@tempdima 0.5\captionwidth + \advance \count255\@ne + \divide \@tempdima \count255 + \captionwidth=\@tempdima + \setbox0 \vbox{\hsize\captionwidth + #1.\quad#2} + \else + \setbox2\hbox to\captionwidth{\unhbox2 \hfill}% + \setbox0\vbox{\unvbox1\box2}% + \fi + \fi + \makebox[\hsize]{\box0}% + \endgroup +} +% \end{macrocode} +% +% The option \texttt{chapterbib} requires a redefinition of the \texttt{thebibliogrpahy} +% environment in case a separate reference list is required for every chapter. +% The point is that for this task the reference key must contain also the +% chapter number; the rest is simply a redefinition of the environment that behaves +% differently according to the chosen option. In any case the bibliography goes to the +% table of contents as a unnumbered chapter or section. +% \begin{macrocode} +\def\redef@bibitem{\def\@bibitem##1{\item\if@filesw + \immediate\write\@auxout + {\string\bibcite{##1}{\thechapter.\the\c@enumi}}\fi\ignorespaces}} +% +\def\thebibliography#1{% + \ifchapterbibliography\section*{\bibname}\relax + \if@twoside\markright{\bibname}\fi + \addcontentsline{toc}{section}{\bibname}\relax + \redef@bibitem + \list{[\thechapter.\arabic{enumi}]}{% + \settowidth\labelwidth{[\thechapter.#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep\itemsep\z@ plus 1pt\parsep\z@ + \usecounter{enumi}} + \else + \chapter*{\bibname}\relax + \@mkboth{\bibname}{\bibname}\relax + \addcontentsline{toc}{chapter}{\bibname}\relax + \list{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep\itemsep\z@ plus 1pt\parsep\z@ + \usecounter{enumi}} + \fi + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} + +\let\endthebibliography=\endlist +% \end{macrocode} +% +% For what regards footnotes nothing is changed except resetting the +% line spread to one, in case the current value is different. +% \begin {macrocode} +\long\def\@footnotetext#1{\insert\footins{\linespread{1}\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% + \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces#1\strut}}} +% \end{macrocode} +% +% These last heterogeneous definitions are partly important and partly residues of +% the good old times of MS-DOS v.3 when a Ctrl-Z character would be placed at the +% end of files. It's a long time that such version is not being used, but some +% old time files might still be around. +% +% The cryptic code that redefines the comma in math mode establishes that this +% character is a normal math character, instead of a math punctuation mark; +% this should not be necessary with the Italian option for the \texttt{babel} +% package and it is possible that in a future version it will be eliminated. +% +% |\topmargin| set to 0pt simply means that the real top margin is 25.4mm, i.e.\ one +% inch, since the output offset is one inch by default. +% \begin{macrocode} +\mathcode`\,="013B +\catcode`\^^Z=10 +\topmargin 0pt +% \end{macrocode} +% +% The TOPtesi bundle contains two new chapter like sections activated with +% the commands |\sommario| and |\ringraziamenti| respectively. The infix strings +% that start these sections depend on the used language. +% +% Because of this it is necessary to extend the list of infix string definitions provided +% the |\captions|$\langle$\texttt{language}$\rangle$ macros defined by the +% language description files of \texttt{babel}; for this purpose we define a macro for +% adding new items for these two new sectioning commands. This macro receives three arguments: +% the first is the babel language name, the second is the string for the summary name, and finally +% the third is the string for the acknowledgements name; everything is contained within a group +% and only the relevant captions macro is globally redefined. The token register `0' is normally +% for scratch usage, but the fact that its value is restored upon exiting the +% group provides the necessary protection against an involuntary reassignment +% to this register. At the same time if a specific language option was not +% specified, a warning message is issued, but compilations goes on any way +% without the sectioning string names. For being sure no other undefined error +% messages are issued, the |\summaryname| and |\acknowledgename| are let to +% |\empty|. +% \begin{macrocode} +\let\summaryname\empty +\let\acknowledgename\empty +\newcommand*\ExtendCaptions[3]{{% +\@ifundefined{captions#1}{% +\PackageWarning{toptesi}{Language option #1 not specified\MessageBreak +Skipping any redefinition\MessageBreak}% +}{% +\expandafter\let\expandafter\@tempA\csname captions#1\endcsname + \toks0=\expandafter{\@tempA% + \def\summaryname{#2}% + \def\acknowledgename{#3}}% + \expandafter\xdef\csname captions#1\endcsname{\the\toks0}% + }}}% +% \end{macrocode} +% For Italian and English there are no problems; we provide immediately these extensions +% by means of the newly available macro: +% \begin{macrocode} +\ExtendCaptions{italian}{Sommario}{Ringraziamenti} +\ExtendCaptions{english}{Summary}{Acknowledgements} +% \end{macrocode} +% In facts the \texttt{babel} options for Italian and English have already been loaded by +% default; therefore both caption macros |\captionsitalian| and |\captionsenglish| are +% already defined and can be freely extended. For any other language the corresponding +% language option must be entered in the class opening statement, otherwise a warning +% is issued but compilation is not stopped. Therefore if, for example, the user wants to write the +% thesis in Spanish, the thesis main file shall start like this: +% \begin{verbatim} +% \documentclass[...,spanish]{toptesi} +% \ExtendCaptions{spanish}{Resumen}{Agradecimientos} +% ... +% \begin{document} +% \selectlanguahe{spanish} +% ... +% \end{verbatim} +% and the rest of the thesis will be typeset correctly in Spanish. Remember +% that Italian is the default language and nothing is necessary for setting up +% the Italian defaults. If English is desired, then after |\begin{document}| is +% is necessary to specify the default language; for ease of use the following +% macros are defined so they can be used instead of the lengthy \texttt{babel} +% command; after the beginning of the document it is then possible to specify +% |\inglese| or |\english|, and the default language turns into English. +% These shorthand commands can be alternated so as to switch from one language +% to the other; nevertheless remember that there are more correct ways to +% switch languages with the \texttt{babel} commands without changing +% the infix strings. +% \begin{macrocode} +\def\italiano{\selectlanguage{italian}}% +\def\english{\selectlanguage{english}}% +\let\inglese\english +% \end{macrocode} +% At the beginning of the document the following commands are executed; the general macro |\italiano| sets the +% summary and the acknowledgements names in Italian, as the default language; and the |\@chapapp| +% macro is redefined so as to agree with the default language. If a different default language is desired, +% we recall it again, it is necessary to do the following: +% \begin{itemize} +% \item specify |\english| \emph{after} the |\begin{document}| statement, if English is +% supposed to be the default language, or +% \item specify the language name, other than Italian or English, among the class options; use +% the |\ExtendCaptions| macro for extending the list of sectioning commands infix strings as explained above; +% specify with |\selectlanguage| the new language as the default one \emph{after} the |\begin{document}| statement. +% \end{itemize} +% \begin{macrocode} +\AtBeginDocument{% + \italiano + \renewcommand\@chapapp{\chaptername}% + } +% \end{macrocode} +% +% At last the subsidiary and independent packages \texttt{topcoman} and \texttt{topfront} +% are requested for input and file input is explicitly ended. +% \begin{macrocode} +\RequirePackage{topfront} +\RequirePackage{topcoman} +\def\sf@size{7} +% +% +% \end{macrocode} +% \subsection{The package file \texttt{topfront.sty}} +% This file is input by \texttt{toptesi}, version 4.x, but it can be used as an +% independent extension package. +% +% It contains all the definition for the composition of just the title page +% along the style requirements of \texttt{toptesi}, version 4.x. +% It makes use of an optional configuration file where the user can define +% a lot of default information and all the infix language dependent strings +% that are peculiar to this title page. +% +% This file specifies that it requires the \LaTeXe\ format and identifies itself. Since the +% package might be used to extend the performances of other classes, this package does not +% specify any input encoding, assuming that the calling class already provided this information. +% \begin{macrocode} +%<*topfrn> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{topfront}[2006/09/04 v.4.00.04 Title page for TOPtesi] +% \end{macrocode} +% +% The title page information depends on the type of ``thesis' that is being typeset. +% The following commands specify the kind of information that is going to be typeset. +% Some boolean variables are automatically set by the commands in order to change some +% formatting depending on the kind of thesis. For languages that distinguish +% feminine from masculine adjectives or qualifications some automatic machinery is +% set up in order to format some infix strings in a way that copes with the singular or plural +% forms; in particular when there is a multitude of authors (maximum three) of different gender +% the adjectives or qualifications are set masculine plurals, while when there is just one author +% or the authors are of the same gender the adjectives or qualifications are set according to +% number and gender. Al this is done by setting or resetting the truth value associated to +% the boolean variable \texttt{femminile}. The boolean variable \texttt{dottorato} +% controls the PhD thesis format, while the other variable \texttt{laureatriennale} +% controls the formatting of the bachelor's degree report. All other theses are treated +% as master theses, and in all cases the appropiate infix string is typeset in the title +% page +% \begin{macrocode} +\newif\iffemminile +\newif\ifdottorato \dottoratofalse +\newif\iflaureatriennale \laureatriennalefalse +% \end{macrocode} +% +% The thesis title is specified by means of the following commands; |\monografia|, +% the name of the bachelors degree final report, sets also the corresponding +% boolean variables and redefines the command |\titolo| so as to avoid +% duplications and inconsistencies; of course something could still be inconsistent +% if the commands are given in the wrong order. +% +% |\titolo| accepts an optional argument, the ``short title'', more or less +% as the standard sectioning commands; this is due to the fact that with the +% class option \texttt{autoretitolo} the thesis title is written together +% with the author's name in the even side headings; if the thesis full title +% is too long it produces overfull headlines with ugly results; a short title +% may solve the inconvenience. The |\sottotitolo| command is another way +% to maintain a short title; all the supplementary title information may be +% typeset in the subtitle. +% \begin{macrocode} +\def\monografia#1{\global\laureatriennaletrue + \global\dottoratofalse + \global\def\titolo##1{\PackageWarning{toptesi}% + {Il titolo e' gia' stato impostato con + il comando \string\monografia}}% + \gdef\@title{#1}} +\let\@stitle\empty +\newcommand*{\titolo}[2][]{{\def\@tempA{#1}% + \ifx\@tempA\empty\gdef\@stitle{#2}\else\gdef\@stitle{#1}\fi + \gdef\@title{#2}}} +\def\sottotitolo#1{\gdef\@subtitle{#1}} +% \end{macrocode} +% +% The |\materia| or its alias |\Materia| are used to specify the +% subject of the thesis; as a silly example a set of commands that reflect +% this subtle difference might be the following: +% \begin{verbatim} +% \materia{Applied Tetratricotomy} +% \titolo{The tetratricotomy of blond hair} +% \sottotitolo{Accurate measurements of the four fourths +% of tetratricotomized blond hair} +%\end{verbatim} +% and the title page, for example, will contain something like this:\\[\bigskipamount] +% \begin{minipage}{\textwidth}\centering +% {\Large Master Thesis\\ in\\ Applied Tetratricotomy\par}\bigskip +% {\huge The tetratricotomy of blond hair\par}\bigskip +% {\large Accurate measurements of the four fourths\\ +% of tetratricotomized blond hair} +% \end{minipage}\bigskip +% \begin{macrocode} +\let\@materia\empty +\def\Materia#1{\def\@materia{#1}}\let\materia\Materia +% \end{macrocode} +% +% Things get more complicated for doctoral theses; in general there is no supervisor; +% at most if a professor is assigned to supervise or control the doctoring's work +% this may be called in whatever mode but here we assume his name is input +% with the command |\tutore| even if ``tutor'' does not appear as the best choice; +% in any case in Italian ``tutore'' does not have the same meaning as the English ``tutor''. +% Most Doctoral Schools require in place to name the School's director or +% coordinator. This is why this person's name can be introduced with +% |\direttore| or |\coordinatore|; the actual label printed over this person +% name is ``Direttore'' or ``Coordinatore'' % but it can be changed with +% |\QualificaDirettore|. +% \begin{macrocode} +\newif\ifDirettore \Direttorefalse +\def\tutore#1{\gdef\@tutore{#1}} +\def\direttore{\Direttoretrue\relatore}% +\def\coordinatore{\Direttorefalse\relatore}% +\def\QualificaDirettore#1{\gdef\@PhDdirector{#1}} +% \end{macrocode} +% +% For ``normal'' theses we may have from one to three supervisors and from +% one to three authors; not all universities accept a multitude of supervisors +% and/or authors of the same thesis, but some do; this is why this bundle +% accepts up to three names for each category. +% The |\second...| commands set the plural forms of the labels printed above +% the name lists. For the candidates there are different commands to input +% ladies or gentlemen names; according to the masculine (ending in `o') or feminine +% (ending in `a') commands the appropriate truth values are assigned to the +% boolean variable \texttt{femminile} and the labels are set accordingly. +% +% Notice that in the case of bachelor degree final report no supervisor name is printed +% even if one or more supervisor names are specified. This must be kept in mind in order +% to avoid surprises in finding missing information in the title page. Further on there +% are suggestions for circumventing this fact. +% \begin{macrocode} +\def\relatore#1{\gdef\@principaladviser{#1}} +\def\secondorelatore#1{\gdef\@secondadviser{#1}} +\def\terzorelatore#1{\gdef\@thirdadviser{#1}} +\def\candidato#1{\gdef\@author{#1}\femminilefalse} +\def\candidata#1{\gdef\@author{#1}\femminiletrue} +\def\secondocandidato#1{\gdef\@secondauthor{#1}\femminilefalse} +\def\secondacandidata#1{\gdef\@secondauthor{#1}} +\def\terzocandidato#1{\gdef\@thirdauthor{#1}\femminilefalse} +\def\terzacandidata#1{\gdef\@thirdauthor{#1}} +% \end{macrocode} +% +% The next set of macros is used to typeset the ``date'' of the +% thesis defense or presentation or whatever is done for the final +% exam. The macro si sort of complicated because the input format for this +% ``date'' may vary from a single year, to a year range, to a month and year specification +% so that different actions must be taken; if the option \texttt{classica} is in +% force\footnote{This option cannot be active if this extension package is used to extend +% a document class other than \texttt{toptesi}; nevertheless if the package \texttt{trieste.sty} +% is loaded before this package, the relevant information equivalent to \texttt{classica} +% is fully defined and this package works as it should.} then the formatting of the ``date'' +% may be still different. This command is aliased with |\esamendidottorato| which literally means +% ``defense of the doctoral dissertation''; nevertheless both commands refer to a simple date in +% one of those formats. +% +% |\getseduta| splits the date in its two components, month and year; +% if the argument is a single string without intervening spaces, the first one is the string +% itself and the second is empty; this emptiness may be tested and in case the date formatting +% is modified accordingly. +% In particular if the string is a single spaceless one, this string is +% assigned to |\@submitdate|; otherwise a different treatment is made according to the fact that +% \texttt{classica} is in force; if \texttt{classica} is not in force the total string, +% including spaces is assigned to |\@submitade|. If \texttt{classica} is in force, +% |\s@dutaTrieste| is called with the whole string. On turn |\s@dutaTrieste| verifies +% if the date should be typeset with old style numbers or in the usual way; in the latter case +% the whole string is assigned to |\@submitdate|; in the former one the year part may be a +% single year or a year range; This separation is tested by splitting the year part across +% one dash; If the dash is present the extremes of the year range are assigned to |\1| and |\2|, +% otherwise the year part is a single year;. If a single year is given this is simply typeset +% with old style numbers and the appropriate commands are assigned to the |\@submitdate| +% control sequence.. If a year range is given, this year range is also typeset with old style +% numbers, and the dash is executed with a regular en-dash surrounded with white space. +% +% \begin{macrocode} +\def\sedutadilaurea#1{\getseduta#1 !} +\def\getseduta#1 #2!{% + \def\@tempA{#2}% + \ifx\@tempA\empty + \def\@submitdate{#1}% + \else + \expandafter + \ifx\csname StileTrieste\endcsname\relax + \def\@submitdate{#1 #2}% + \else + \s@dutaTrieste#1 #2!% + \fi + \fi +}% +\def\s@dutaTrieste#1 #2!{% + \if@ldstyle + \s@paranumeri#2-!% + \ifx\2\empty + \edef\@submitdate{\noexpand#1 \noexpand\oldstylenums{#2}}% + \else + \s@paranumeri#2!% + \edef\@submitdate{\noexpand#1 + \noexpand\oldstylenums{\1} -- \noexpand\oldstylenums{\2}}% + \fi + \let\1\undefined + \let\2\undefined + \else + \def\@submitdate{#1 #2}% + \fi +} +\def\s@paranumeri#1-#2!{\def\1{#1}\def\2{#2}}% +\let\esamedidottorato\sedutadilaurea +% \end{macrocode} +% +% The next macros are used to assign strings to some literal information +% to be typeset in the title page. |\ciclodidottorato| requires an uppercase roman numeral +% (in Italy), but it can accept anything that can precede the infix word ``cycle''. +% Macros |\corsodilaurea| and |\corsodidottorato| specify the degree course qualification; +% You would specify just ``Elettronica'', for example, and the package will +% write in the title page ``Corso di Laurea in Elettronica''. The infix part may be changed +% depending on the default language and the configuration file. +% +% |\scuoladidottorato| gets the name of the PhD School; |\ateneo| gets the the generic name +% of the university; |\nomeateneo| gets the proper name of the university. In Italy Universities +% are generally named after the city they are in; in large cities where there are several +% universities, each one of them has a proper name. For example the generic name might be +% ``Universit\`a di Roma'' and the proper name might be ``La Sapienza''. +% |\facolta| receives an optional argument that is the uppercase roman numeral +% specific of the faculty and a compulsory argument that corresponds to the +% type of faculty; for example, +% with |\facolta[II]{Ingegneria}| the package typesets in the title page +% ``II Facolt\`a di Ingengeria''; if the optional argument is not specified non +% roman numeral is typeset; the infix string \verb*+Facolt\`a di + may be +% changed with the configuration file depending on the default language. +% Finally |\logosede| gets the name of the graphic file that contains +% the information relative to the university logo. If such logo is not +% available, the user does not specify this command; if the user uses this +% command to insert the university logo but the file is not available the usual +% \texttt{graphicx} package warning is issued but compilation goes on +% without the logo. +% The |\tutoreaziendale| macro is the last addition; several students who work +% on their thesis or final project in a company want to have the company +% supervisor name printed in the +% title page; this does not preclude expressing the student's deepest thanks in +% the acknowledgements +% section, but it does not harm ro name this person also in the title page. +% \begin{macrocode} +\def\ciclodidottorato#1{\gdef\@ciclo{#1 \@cyclename}}% +\def\corsodilaurea#1{\global\dottoratofalse\gdef\@corso{#1}} +\def\corsodidottorato#1{\global\dottoratotrue\global\laureatriennalefalse + \gdef\@corso{#1}} +\def\scuoladidottorato#1{\global\dottoratotrue\global\laureatriennalefalse + \gdef\@phdschool{#1}} +\def\ateneo#1{\gdef\@ateneo{\expandafter\uppercase{\expandafter #1}}} +\def\nomeateneo#1{\gdef\@nomeat{\expandafter\uppercase{\expandafter #1}}} +\newcommand\facolta[2][]{\gdef\@facname{#2}\gdef\@facnumber{#1}} +\def\logosede#1{\edef\@logosede{\noexpand\includegraphics[width=3cm]{#1}}} +\def\tutoreaziendale#1{\gdef\@tutoreaziendale{#1}} +% \end{macrocode} +% +% The following commands are user commands that modify the infix strings +% according to the language used and to the specifications of the actual +% university. All these commands can be put in the configuration file so as to +% specify what is desired as a default. +% If these commands are specifically used to redefine something before issuing +% the |\frontespizio| command, the command that actually typesets the title +% page, the new definitions override the configuration ones. +% +% \begin{description} +% \def\Item[#1]{\item[\normalfont\texttt{\char92#1}] +% sets or changes the string} +% \Item[FacoltaDi] ``Facolt\`a di'' in, say, ``Faculty of'' +% \Item[DottoratoIn] ``Dottorato in'' in, say, ``PhD in'' +% \Item[CorsoDiLaureaIn] ``Corso di Laurea in'' in, say, ``Master of Science in'' +% \Item[TesiDiLaurea] ``Tesi di Laurea'' in, say, ``Tesi di Laurea Magistrale'' +% \Item[NomeMonografia] ``Monografia di Laurea'' in, say, ``Tesi di Laurea'' +% \Item[NomeDissertazione] ``Dissertazione'' in, say, ``PhD dissertation'' +% \Item[InName] ``in'' in, say, ``auf'' +% \Item[CandidateName] ``Candidato'' in, say, ``Laureando'' +% \Item[AdvisorName] ``Relatore'' in, say, ``Supervisors'' +% \Item[CoAdvisorName] ``Correlatore'' in, say, ``Corapporteur'' +% \Item[NomeTutoreAziendale] ``Supervisore aziendale'' in, say, ``XYZ Company Supervisor'' +% \Item[TutorName] ``Tutore'' in, say, ``Supervisor'' +% \Item[CycleName] ``ciclo'' in, say, ``cycle'' +% \Item[NomePrimoTomo] ``Tomo primo'' in, say, ``First volume'' +% \Item[NomeSecondoTomo] ``Tomo secondo'' in, say, ``Second volume'' +% \item[NomeTerzoTomo] ``Tomo terzo'' in, say, ``Third volume'' +% \item[NomeQuartoTomo] ``Tomo quarto'' in, say, ``Fourth volume'' +% \end{description} +% In the above description the first string is generally the default one, while the +% second string is just an example of the corresponding string to be set in another language +% or to be changed in Italian. The last four commands clearly show the difficulty of +% localizing language strings: it is necessary to localize the whole phrase, because of +% the position of the adjectives. +% \begin{macrocode} +\newcommand\FacoltaDi[1]{\gdef\@faculty{#1}} +\newcommand\DottoratoIn[1]{\gdef\@PhDname{#1}} +\newcommand\CorsoDiLaureaIn[1]{\gdef\@laureaname{#1}} +\newcommand\TesiDiLaurea[1]{\gdef\@TesiDiLaurea{#1}} +\newcommand\NomeMonografia[1]{\gdef\@monografia{#1}} +\newcommand\NomeDissertazione[1]{\gdef\@dissertazione{#1}} +\newcommand\InName[1]{\gdef\@InName{#1}} +\newcommand\CandidateName[1]{\gdef\@nomecandidato{#1}} +\newcommand\AdvisorName[1]{\gdef\Relatore{#1}\gdef\Relatori{#1}} +\newcommand\CoAdvisorName[1]{\gdef\Correlatore{#1}\gdef\Correlatori{#1}} +\newcommand\TutorName[1]{\gdef\Tutore{#1}} +\newcommand\NomeTutoreAziendale[1]{\gdef\@tutoreaziendalename{#1}} +\newcommand\CycleName[1]{\gdef\@cyclename{#1}} +\newcommand\NomePrimoTomo[1]{\gdef\PrimoTomo{#1}} +\newcommand\NomeSecondoTomo[1]{\gdef\SecondoTomo{#1}} +\newcommand\NomeTerzoTomo[1]{\gdef\TerzoTomo{#1}} +\newcommand\NomeQuartoTomo[1]{\gdef\QuartoTomo{#1}} +% \end{macrocode} +% +% Now we can read the configuration file if it exists; in any case what is possibly +% defined or redefined in the configuration file must not be redefined in the following +% Lines and this is why everything is subject to the test |\@ifundefined|. Most default +% definitions are simply ``blank''; the others are in Italian. All of them, except the +% supervisor and candidate strings may be individually be redefined in the configuration file +% or in the preamble. Those that cannot be redefined such as the four ``candidate'' strings +% may be actually redefined through the only |\CandidateName| that should be used in a language depended +% way and with the correct number and gender once for all. The four endings in the Italian +% strings allow to exercise the correct selection only for Italian; a specific test is made +% inside the |\frontespizio| command; because of this the same machinery cannot be used, say, for French +% but may be in the future this feature is resolved in a proper way. The same is true for the supervisor +% and the co-supervisor strings that may be changed once for all with |\AdvisorName| and |\CoAdvisorName|. +% \begin{macrocode} +\IfFileExists{toptesi.cfg}{\input{toptesi.cfg}}{} +% +\@ifundefined{@cyclename}{\def\@cyclename{ciclo}}{} +\@ifundefined{@title}{\def\@title{}}{} +\@ifundefined{@author}{\def\@author{}}{} +\@ifundefined{@principaladviser}{\def\@principaladviser{}}{} +\@ifundefined{@secondadviser}{\def\@secondadviser{}}{} +\@ifundefined{@thirdadviser}{\def\@thirdadviser{}}{} +\@ifundefined{@PhDdirector}{% + \edef\@PhDdirector{\ifDirettore Direttore \else Coordinatore \fi + del corso di dottorato}}{} +\@ifundefined{@tutore}{\def\@tutore{}}{} +\@ifundefined{@secondauthor}{\def\@secondauthor{}}{} +\@ifundefined{@thirdauthor}{\def\@thirdauthor{}}{} +% +\@ifundefined{@nomerelatore}{\def\@nomerelatore{}}{} +\@ifundefined{@nomecandidato}{\def\@nomecandidato{}}{} +\@ifundefined{Candidato}{\def\Candidato{Candidato}}{} +\@ifundefined{Candidata}{\def\Candidata{Candidata}}{} +\@ifundefined{Candidati}{\def\Candidati{Candidati}}{} +\@ifundefined{Candidate}{\def\Candidate{Candidate}}{} +\@ifundefined{Relatore}{\def\Relatore{Relatore}}{} +\@ifundefined{Relatori}{\def\Relatori{Relatori}}{} +\@ifundefined{Correlatore}{\def\Correlatore{Correlatore}}{} +\@ifundefined{Correlatori}{\def\Correlatori{Correlatori}}{} +\@ifundefined{Tutore}{\def\Tutore{Tutore}}{} +\@ifundefined{@tutoreaziendale}{\def\@tutoreaziendale{}}{} +\@ifundefined{@tutoreaziendalename}% + {\def\@tutoreaziendalename{Supervisore Aziendale}}{} +\@ifundefined{@subtitle}{\def\@subtitle{}}{} +% +\@ifundefined{@corso}{\def\@corso{}}{} +\@ifundefined{@ciclo}{\def\@ciclo{}}{} +\@ifundefined{@ateneo}{\def\@ateneo{POLITECNICO DI TORINO}}{} +\@ifundefined{@nomeat}{\def\@nomeat{}}{}% Nome proprio dell'ateneo +\@ifundefined{@facolta}{\def\@facname{Ingegneria}}{} +\@ifundefined{@facnumber}{\def\@facnumber{}}{} +\@ifundefined{@faculty}{\def\@faculty{Facolt\`a di}}{} +% +\@ifundefined{PrimoTomo}{\def\PrimoTomo{Tomo primo}}{} +\@ifundefined{SecondoTomo}{\def\SecondoTomo{Tomo secondo}}{} +\@ifundefined{TerzoTomo}{\def\TerzoTomo{Tomo terzo}}{} +\@ifundefined{QuartoTomo}{\def\QuartoTomo{Tomo quarto}}{} +% \end{macrocode} +% If the final exam date is not given the default value is the current month +% and the current year typeset in Italian; therefore the user is strongly +% requested to enter a date either with the |\sedutadilaurea| or the +% |\esamedidottorato| commands. The university logo command by default is also empty. +% \begin{macrocode} +\@ifundefined{@submitdate}{\def\@submitdate{\ifcase\the\month\or% + Gennaio\or Febbraio\or Marzo\or Aprile\or Maggio\or Giugno\or + Luglio\or Agosto\or Settembre\or Ottobre\or Novembre\or Dicembre\fi + \space \the\year}}{} +\@ifundefined{@logosede}{\let\@logosede\relax}{} +% +\@ifundefined{@TesiDiLaurea}{\def\@TesiDiLaurea{Tesi di Laurea}}{} +\@ifundefined{@phdschool}{\def\@phdschool{SCUOLA DI DOTTORATO}}{} +\@ifundefined{@PhDname}{\def\@PhDname{Dottorato in}}{} +\@ifundefined{@laureaname}{\def\@laureaname{Corso di Laurea in }}{} +\@ifundefined{@dissertazione}{\def\@dissertazione{Tesi di Dottorato}}{} +\@ifundefined{@monografia}{\def\@monografia{Monografia di Laurea}}{} +\@ifundefined{@InName}{\def\@InName{in}}{} +% \end{macrocode} +% +% Finally it comes the only active macro |\frontespizio|, the one macro that +% actually typesets the title page. The macro starts with a local redefinition +% of the \texttt{myheadings} page style; with this style the university name +% goes into the header, while the exam date goes in the footer; in this way the +% information that must be typeset in the title page is not crunched in too +% little space and the overall text bounding box assumes a shape similar to that +% of the page. +% +% Everything is closed within a group so all definitions remain local. +% \begin{macrocode} +\def\frontespizio{% +\begingroup + \def\ps@myheadings{\let\@mkboth\markboth + \def\@oddhead{\vbox{% + \hbox to \hsize{\hfill {\LARGE \@ateneo}\hfill}% + \expandafter + \ifx\csname StileTrieste\endcsname\relax + \else + \hbox to \hsize{\hfil\vrule\@width\z@ + \@height3.5ex\vrule\@height1.4\p@\@depth-\p@\@width50mm\hfil}% + \fi + }}% + \def\@oddfoot{\vbox to 15mm{\vss + \expandafter + \ifx\csname StileTrieste\endcsname\relax + \else + \hbox to \hsize{\hfil\raisebox{-.3ex}[\z@][\z@]{% + \vrule\@height-2.6\p@\@depth3\p@\@width50mm}\hfil}% + \fi + \hbox to\hsize{\hfill{\Large{\@submitdate}}\hfill}}% + }% + \let\@evenhead\@oddhead + \let\@evenfoot\@oddfoot + }% +% \end{macrocode} +% +% We want also the title page to be set in the middle of the page irrespective of +% the binding correction; so we assign the average of the two side margins to each margin. +% \begin{macrocode} + \advance\oddsidemargin \evensidemargin + \divide\oddsidemargin \tw@ + \evensidemargin \oddsidemargin +% \end{macrocode} +% +% We select the \texttt{myheadings} page style; setting the page counter to zero +% is a remain of old settings, but it does not hurt; the |\null| command inserts a void horizontal box +% into the vertical list; it is useful to act as a block against which the vertical glue pushes +% for setting the subsequent material. The normal font is chosen in case preceding commands did change +% the font characteristics. +% \begin{macrocode} + \thispagestyle{myheadings}% + \null\setcounter{page}{1}% + \normalfont +% \end{macrocode} +% The generic university name is already in the header; if it is non blank the first thing +% we set in the page is the university proper name and some vertical glue. +% \begin{macrocode} + \ifx\@nomeat\empty \else + {\vspace*{-3\topskip}\centering + \expandafter{\Large \@nomeat}\par}\vfill + \fi +% \end{macrocode} +% Then the faculty name comes next; but fot the doctoral school it uses the doctoral +% school name entered with |\scuoladidottorato|, otherwise it inserts the faculty +% ordinal number or prefix and name already entered with the optional and required +% arguments of |\facolta|. +% \begin{macrocode} + \begin{center} + {\rmfamily\mdseries + \ifdottorato + \large \@phdschool + \else + \LARGE\ifx\@facnumber\empty\else\@facnumber\space\fi + \@faculty\space\expandafter{\@facname}% + \fi + \par}% +% \end{macrocode} +% Further specification: it inserts the field of the PhD research or the degree course name; for example +% it inserts the line ``Philosophy Degree in Applied Tetratricotomy~--~XVI~cycle'' or +% ``Master of Science in Applied Tetratricotomy''. +% \begin{macrocode} + \ifx\@corso\empty \else{\large + \ifdottorato + {\@PhDname\@corso\ifx\@ciclo\empty\else~--~\@ciclo\fi}% + \else + {\@laureaname\@corso}% + \fi + \par} + \fi + \end{center} +% \end{macrocode} +% It now centers the name of the report, be it ``Doctoral Dissertation'' or ``Master Thesis'' or whatever; in case +% the command |\materia| was used, it then centers the area which the thesis deals with. +% \begin{macrocode} + \vfill + \begin{center} + \LARGE + \ifdottorato + \@dissertazione% + \else + \iflaureatriennale + \@monografia% + \else + \@TesiDiLaurea% + \fi + \fi + \ifx\empty\@materia\else + \\\@InName\\\@materia + \fi + \end{center} +% \end{macrocode} +% Next comes the real title entered with |\titolo| or |\monografia| and the possible subtitle. +% \begin{macrocode} + \vfill + \begin{center} + {\huge\bfseries \baselineskip=0.95em plus 1pt + \expandafter{\@title \par}} + \end{center} +% con l'eventuale sottotitolo + \ifx\@subtitle\empty \else + \begin{center}% + \large\textrm{\expandafter{\@subtitle}}\par + \end{center}% + \fi +% \end{macrocode} +% If the option \texttt{classica} is in force the thesis might be divided in several volumes; +% apparently these in humanities are often oversized. In this case the |\frontespizio| +% command may be given at the beginning of every volume and the counter \texttt{tomo} is +% stepped up; the volume number is therefore printed in each title page; the infix string +% may be redefined as it was shown above. +% \begin{macrocode} + \expandafter + \ifx\csname StileTrieste\endcsname\relax + \else + \expandafter + \ifnum\value{tomo}>\z@ + \par\bigskip + \noindent\makebox[\textwidth]{% + \large\textbf{% + \ifcase\c@tomo% + \or \PrimoTomo% + \or \SecondoTomo% + \or \TerzoTomo% + \or \QuartoTomo% + \else + \PackageWarning{toptesi}{% + Counter tomo equals \the\c@tomo\MessageBreak + It was not considered a thesis might get + divided in more than four volumes}% + \fi}}% + \fi + \fi + \par +% \end{macrocode} +% Going down in the title page now comes the optional insertion of the university logo; this is a simple task +% once |\@logosede| has been defined, and this was done either with an explicit command |\logosede| with its argument +% in the preamble, or a specific line in the configuration file. +% \begin{macrocode} + \ifx\@logosede\@empty\else + \vspace*{\bigskipamount} + {\centering \@logosede\par}\fi +% \end{macrocode} +% +% the final task is to typeset the possible supervisors' names, the candidates' names and all the rest +% of the bureaucratical terms. We have to distinguish between a bachelor degree report that is not +% supposed to have a supervisor, from the doctoral dissertation where we do not indicate the supervisor, but +% the School Director, and the master thesis where there might be one or more supervisors; with the +% \texttt{classica} option in force no label is printed over the supervisor's name, unless there is +% a plurality od supervisors. +% \begin{macrocode} + \vfill + \iflaureatriennale + \let\@nomerelatore\empty + \else + \ifdottorato + \edef\@nomerelatore{\@PhDdirector}% + \else + \ifx\@principaladviser\empty\else + \def\@nomerelatore{\Relatore:}% + \fi + \@ifundefined{StileTrieste}% + {\ifx\@secondadviser\empty \else + \def\@nomerelatore{\Relatori:}% + \fi}{}% + \fi + \fi +% \end{macrocode} +% Similarly the label names for the exam candidates are chosen; in Italian the names are infix strings +% that are selected according the gender and the number; if these labels have to be set in a different language +% it is necessary to define one string that has to be selected by the user according to number and gender. +% The label for the doctorship is left empty. +% \begin{macrocode} + \ifdottorato + \let\@nomecandidato\empty + \else + \iflanguage{italian}{% + \iffemminile + \def\@nomecandidato{\Candidata:}% + \else + \def\@nomecandidato{\Candidato:}% + \fi + \ifx\@secondauthor\empty \else + \iffemminile + \def\@nomecandidato{\Candidate:}% + \else + \def\@nomecandidato{\Candidati:}% + \fi + \fi}{} + \fi +% \end{macrocode} +% +% For the names of the supervisor(s) and of the candidate(s) a different approach is used for each one +% of the three categories of theses. If a bachelor degree report is dealt with, the name of the \emph{only} +% candidate is centerd and written in caps-and-small-caps. +% \begin{macrocode} + \iflaureatriennale + \begin{center}% + \large\mdseries\textsc{\@author} + \end{center}% +% \end{macrocode} +% For doctoral and master theses two virtual boxes (actually macros) are filled up so as to align +% the supervisor name(s) and, in second virtual box, the candidate name(s). The label is set in the +% first line with proper number and gender; in the second line the first name, and in the subsequent lines, +% if there are any, the other names. These virtual boxes actually contain a tabular environment each; these +% environments shall be actually typeset when these virtual box macros are executed. If the \texttt{classica} +% option is in force no label is set over the principal advisor name, but a label is set over the co-advisor +% name(s). The type size is also e little different for the \texttt{classica} option. The |\protect| command +% is used to protect the names in case they contain accent macros that might be expanded at the wrong moment. +% \begin{macrocode} + \else +% Per laurea e dottorato con relatori e correlatori... + \def\BoxRelatori{% + \begin{tabular}[t]{l}% + \hbox{{\@ifundefined{StileTrieste}{\large}{}% + \textbf{\protect\@nomerelatore}}}\\[.6ex] + \hbox{{\large\textrm{\protect\@principaladviser}}}% + \ifx\@secondadviser\empty \else + \@ifundefined{StileTrieste}{}{% + \ifx\@thirdadviser\empty + \ifx\@secondadviser\empty\else + \\[1.5ex]\textbf{\Correlatore:}% + \fi + \else + \\[1.5ex]\textbf{\Correlatori:}% + \fi} + \\[.6ex]\hbox{{\large\textrm{\protect\@secondadviser}}}% + \fi + \ifx\@thirdadviser\empty \else + \\[.6ex] \hbox{{\large\textrm{\protect\@thirdadviser}}}% + \fi + \end{tabular}% + }% +% \end{macrocode} +% A similar approach is taken for the candidate name(s) +% \begin{macrocode} + \def\BoxCandidati{% + \begin{tabular}[t]{l}% + \hbox{{\expandafter + \@ifundefined{StileTrieste}{\large}{}% + \textbf{\protect\@nomecandidato}}}\\[.6ex] + \hbox{{\large\textrm{\protect\@author}}}% + \ifx\@secondauthor\empty + \else + \\\hbox{{\large\textrm{\protect\@secondauthor}}}% + \fi + \ifx\@thirdauthor\empty + \else + \\\hbox{{\large\textrm{\protect\@thirdauthor}}}% + \fi + \end{tabular}% + }% +% \end{macrocode} +% The real typesetting of these name lists takes place now; if the thesis is referred to the +% PhD school one type of layout is used, otherwise the default master thesis layout is used; remember +% that the bachelor degree case has already taken place. For the doctoral dissertation the doctoring +% person name is typeset centered in one line by itself and everything else is set 3em below +% into a three column table extended to the |\hsize|, the first line containing the person labels +% and the second line containing the true names. The central column is used just for spacing, but it does +% not contain anything. +% \begin{macrocode} + \ifdottorato + \begin{center}\large + \textbf{\@author}\\[3em] + {\normalsize + \begin {tabular*}{\hsize}{@{\extracolsep{\fill}}ccc} + \ifx\@tutore\empty\else + \textbf{\Tutore} + \fi + &\relax& + \ifx\@principaladviser\empty\else + \textbf{\@nomerelatore} + \fi + \\ + \ifx\@tutore\empty\else + \@tutore + \fi + &\relax& + \ifx\@principaladviser\empty\else + \@principaladviser + \fi + \end{tabular*} + }% + \end{center} + \else +% \end{macrocode} +% For the master thesis the two virtual boxes are set one besides the other but skewed +% so that to the right or, respectively, to the left of every name there is enough space for the signatures. +% With the \texttt{classica} option in force the two boxes are simply aligned. +% \begin{macrocode} + \expandafter + \@ifundefined{StileTrieste}{% + \begin{flushleft}% + \BoxRelatori + \end{flushleft}\par\vspace*{-1.5\baselineskip} + \begin{flushright}% + \BoxCandidati + \end{flushright}\par}{% + \noindent + \makebox[\textwidth]{\BoxRelatori + \hfill\BoxCandidati}\par}% + \fi + \fi +% \end{macrocode} +% The final item is the optional name of the company supervisor. +% \begin{macrocode} +\ifx\@tutoreaziendale\@empty\else + \vfill\vfill + {\centering \textbf{\@tutoreaziendalename}\\[.6ex] + \@tutoreaziendale\par} +\fi +% \end{macrocode} +% All the material now is on the page; we put some more vertical glue and we close +% the page sending it to the output file; the final |\endgroup| closes the |\begingroup| that was +% set at the beginning of this long macro. +% \begin{macrocode} + \vfill\par\null + \if@twoside\cleardoublepage\else\clearpage\fi +\endgroup} +% +% \end{macrocode} +% +% \subsection{A sample configuration file} +% The following code generates a simple configuration file that the user +% can change at will; it can be used as a template for generating a really +% personal configuration file. +% \begin{macrocode} +%<*topcfg> +%% +%%================================================================ +%% This file is the only file of the TOPtesi bundle that the user +%% can modify without restrictions in order to personalize the +%% contents of this configuration file to his/her needs. The user +%% can add or remove lines, comment or uncomment lines, change the +%% arguments to the macros, add definitions and so on. +%%================================================================ +%% +\ateneo{Politecnico di Torino} +\facolta{Ingegneria} +\FacoltaDi{Facolt\`a di } +%%\DottoratoIn{Corso di dottorato in } +\CorsoDiLaureaIn{Corso di Laurea in } +\TesiDiLaurea{Tesi di Laurea Magistrale} +%%\NomeMonografia{Monografia di Laurea} +%%\NomeDissertazione{Tesi di Dottorato} +\InName{in} +%%\TutorName{Tutore} +%%\CycleName{ciclo} +% +% \end{macrocode} +% \subsection{The package file \texttt{topcoman.sty}} +% This file may be used as an independent extension package for the \texttt{report} +% document class, and possibly for other classes +% \begin{macrocode} +%<*topcmn> +\NeedsTeXFormat{LaTeX2e} % lavora solo con LaTeX 2e +\ProvidesPackage{topcoman}% + [2006/12/15 v.4.01 Additional commands for the TOPtesi bundle] +% \end{macrocode} +% The new command |\DeclareSlantedCapitalGreekLetters| optionally sets the capital +% Greek letters in math mode with the glyphs taken from the math italic fonts, not from +% the math roman fonts, at is is by default; some persons prefer to use both symbols with +% different meanings, so this command lets them do so. +% \begin{macrocode} +\newcommand*\DeclareSlantedCapitalGreekLetters{% + \mathchardef\Gamma="7100 + \mathchardef\Delta="7101 + \mathchardef\Theta="7102 + \mathchardef\Lambda="7103 + \mathchardef\Xi="7104 + \mathchardef\Pi="7105 + \mathchardef\Sigma="7106 + \mathchardef\Upsilon="7107 + \mathchardef\Phi="7108 + \mathchardef\Psi="7109 + \mathchardef\Omega="710A +} +% \end{macrocode} +% The |\ensuremath| command is defined in the \LaTeX\ kernel from a certain version on; +% should the user employ a really old \LaTeXe\ implementation this definition +% supplies the missing one. +% \begin{macrocode} +\providecommand{\ensuremath}[1]{\ifmmode#1\else$#1$\fi}% +% \end{macrocode} +% The following commands may be already defined; should they be missing they are supplied here. +% The greatest part of them is already defined in the Italian option to the +% \texttt{babel} language; but remember; this package may be used as a stand alone one, without +% the initial call by the \texttt{toptesi} document class, so that the language Italian might +% be undefined. +% \begin{macrocode} +\providecommand{\ohm}{\ensuremath{{\mathrm{\Omega}}}} +\providecommand{\ped}[1]{\ensuremath{_{\mathrm{#1}}}} +\providecommand{\ap}[1]{\ensuremath{^{\mathrm{#1}}}} +\providecommand{\unit}[1]{\ensuremath{{\mathrm{\,#1}}}} +\providecommand{\gei}{\ensuremath{{\mathop{\mathrm{j}}\nolimits}}} +\providecommand{\eu}{\ensuremath{{\mathop{\mathrm{e}}\nolimits}}} +\providecommand{\micro}{\ensuremath{\ifx\muup\undefined\mu\else\muup\fi}} +\providecommand{\gradi}{\ensuremath{^\circ}} +% \end{macrocode} +% +% The next set of definitions are used to list a program file. There are +% better packages to perform this task in the CTAN archives. This set of macros +% has the advantage that is very short and light on the computer memory; nevertheless +% it performs its duty pretty well. The font face is the typewriter one; the +% font size is chosen so as to +% allow approximately 80 characters in the text width of the thesis. It respects +% the possible indentation tabs (ASCII code 9) by inserting the correct amount +% of typewriter spaces so as to align every line to the correct boundary which +% is ``zero modulo eight''. If the program file contains some form feed ASCII +% characters (ASCII code 12), this \TeX\ code inserts a new page command. The +% code may appear strange, and it does because it makes heavy use of the dirty +% tricks of appendix~D of the \TeX\-book. +% \begin{macrocode} +\def\listing#1{\par\begingroup +\programma \input #1 \endgroup} +\def\uncatcodespecials{\def\do##1{\catcode`##1=12}\dospecials} +\def\programma{\footnotesize\tt \parindent 0pt +\def\par{\leavevmode\egroup\box0\endgraf} +\catcode`\`=\active \catcode`\^^I=\active \catcode`\^^L=\active +\obeylines \uncatcodespecials \obeyspaces +\everypar{\startbox}} +% \end{macrocode} +% The above code does the whole work, but the alignment to the tab stops and the +% new page command associated to the form feed ASCII character are done with the +% following definitions. +% \begin{macrocode} +\newdimen\tabwidth \setbox0=\hbox{\footnotesize\tt\space} \tabwidth=8\wd0 +\def\startbox{\setbox0=\hbox\bgroup} +{\obeyspaces\global\let =\ } +{\catcode`\`=\active \gdef`{\relax\lq}} +{\catcode`\^^I=\active +\gdef^^I{\leavevmode\egroup \dimen0=\wd0 +\divide\dimen0 by\tabwidth +\multiply\dimen0 by\tabwidth +\advance\dimen0 by\tabwidth +\wd0=\dimen0 \box0 \startbox}} +{\catcode`\^^L=\active \gdef^^L{\par\penalty-10000}} +% \end{macrocode} +% +% The following code is already set in the \texttt{toptesi} package; here it is +% repeated because this package might be used as a stand alone one. Remember that +% the comma as a decimal separator is required for all languages except English. +% \begin{macrocode} +\mathcode`\,="013B +\catcode`\^^Z=10 +% \end{macrocode} +% +% The following commands are used to write the ``lower case'' roman numerals +% with the small-caps; in order to avoid complications with missing fonts or math +% environments we make sure to typeset these numerals with script size capitals; +% this solution is not probably the best one but it works; it typesets +% these roman numerals with the current font; for this thesis bundle roman numerals +% are used only for folios, therefore there are no problems with a choice of fonts shapes +% and series. But for this task we need a robust command in order to set the script math +% size +% \begin{macrocode} +\DeclareRobustCommand*{\simulatedSC}[1]{% + {\fontsize{\sf@size}{\f@baselineskip}\selectfont#1}}% +\renewcommand*{\@roman}[1]{\simulatedSC{\@Roman#1}}% +% \end{macrocode} +% +% A user, Antonio Mele, suggested and requested the possibility of having +% the figure and table name inserted automatically when the |\ref|command is +% issued. For single citations the solution works fine, but for range +% references it does not work. In Italian the name must be lower case while in +% other languages, specifically in English, the name has a capital initial. +% Since this feature might be handy in certain circumstances and annoying in +% other ones, this feature can be turned on and off at will with the enabling +% and disabling commands. By default the feature is disabled. +% \begin{macrocode} +\def\ft@figure{\iflanguage{italian}{\MakeLowercase{\figurename}}% + {\figurename}~} +\def\ft@table{\iflanguage{italian}{\MakeLowercase{\tablename}}% + {\tablename}~} +% +\newcommand*\EnableFigTabNames{% + \let\p@figure\ft@figure\let\p@table\ft@table} +\newcommand*\DisableFigTabNames{% + \let\p@figure\empty\let\p@table\empty} +% +\DisableFigTabNames +% +% \end{macrocode} +% \subsection{The class option file \texttt{topsiz14.clo}} +% Among the options available there is the possibility of typesetting the thesis with +% a large normal font size, specifically 14pt. The following file is just a copy of the +% other size??.clo class option files where the font dimensions have been modified so +% as to be coherent whit a normal size of 14pt. There is nothing unusual except that +% the font sizes are taken from the kernel macros where the magic numbers of non +% integer sizes are specified. The baseline skips are substantially the ones taken +% from the 10pt default size and multiplied by 1.44, or those of the 12pt option +% multiplied by 12; in both cases they were rounded to integers most of the times. +% Since the whole bundle works only under \LaTeXe, we deleted all the tests for +% compatibility with \LaTeX\,209 and the corresponding test branches. +% \begin{macrocode} +%<*top14> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{topsiz14.clo}% + [2006/04/16 v.4.00.01 TopTesi 14pt size-option file] +\renewcommand\normalsize{% + \@setfontsize\normalsize\@xivpt{18}% + \abovedisplayskip 14\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 8.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\normalsize +\renewcommand\small{% + \@setfontsize\small\@xiipt{14}% + \abovedisplayskip 13\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 7.5\p@ \@plus3.5\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\renewcommand\footnotesize{% + \@setfontsize\footnotesize\@xipt{13} + \abovedisplayskip 12\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 7\p@ \@plus3\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 6\p@ \@plus2\p@ \@minus2\p@ + \parsep 3\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\renewcommand\scriptsize{\@setfontsize\scriptsize\@xpt{12}} +\renewcommand\tiny{\@setfontsize\tiny\@viiipt\@xpt} +\renewcommand\large{\@setfontsize\large\@xviipt{22}} +\renewcommand\Large{\@setfontsize\Large\@xxpt{25}} +\renewcommand\LARGE{\@setfontsize\LARGE\@xxvpt{30}} +\renewcommand\huge{\@setfontsize\huge\@xxvpt{30}} +\let\Huge=\huge +\if@twocolumn + \setlength\parindent{1em} +\else + \setlength\parindent{1.5em} +\fi +\setlength\smallskipamount{3.5\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\medskipamount{7\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\bigskipamount{14\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\headheight{14\p@} +\setlength\headsep {36\p@} +\setlength\topskip {14\p@} +\setlength\footskip{30\p@} +\if@compatibility \setlength\maxdepth{4\p@} \else +\setlength\maxdepth{.5\topskip} \fi + \setlength\@tempdima{\paperwidth} + \addtolength\@tempdima{-2in} + \setlength\@tempdimb{390\p@} + \if@twocolumn + \ifdim\@tempdima>2\@tempdimb\relax + \setlength\textwidth{2\@tempdimb} + \else + \setlength\textwidth{\@tempdima} + \fi + \else + \ifdim\@tempdima>\@tempdimb\relax + \setlength\textwidth{\@tempdimb} + \else + \setlength\textwidth{\@tempdima} + \fi + \fi + \@settopoint\textwidth + \setlength\@tempdima{\paperheight} + \addtolength\@tempdima{-2in} + \addtolength\@tempdima{-1.5in} + \divide\@tempdima\baselineskip + \@tempcnta=\@tempdima + \setlength\textheight{\@tempcnta\baselineskip} +\addtolength\textheight{\topskip} +\if@twocolumn + \setlength\marginparsep{10\p@} +\else + \setlength\marginparsep{10\p@} +\fi +\setlength\marginparpush{7\p@} + \if@twoside + \setlength\@tempdima {\paperwidth} + \addtolength\@tempdima {-\textwidth} + \setlength\oddsidemargin {.4\@tempdima} + \addtolength\oddsidemargin {-1in} + \setlength\marginparwidth {.6\@tempdima} + \addtolength\marginparwidth {-\marginparsep} + \addtolength\marginparwidth {-0.4in} + \else + \setlength\@tempdima {\paperwidth} + \addtolength\@tempdima {-\textwidth} + \setlength\oddsidemargin {.5\@tempdima} + \addtolength\oddsidemargin {-1in} + \setlength\marginparwidth {.5\@tempdima} + \addtolength\marginparwidth {-\marginparsep} + \addtolength\marginparwidth {-0.4in} + \addtolength\marginparwidth {-.4in} + \fi + \ifdim \marginparwidth >2in + \setlength\marginparwidth{2in} + \fi + \@settopoint\oddsidemargin + \@settopoint\marginparwidth + \setlength\evensidemargin {\paperwidth} + \addtolength\evensidemargin{-2in} + \addtolength\evensidemargin{-\textwidth} + \addtolength\evensidemargin{-\oddsidemargin} + \@settopoint\evensidemargin + \setlength\topmargin{\paperheight} + \addtolength\topmargin{-2in} + \addtolength\topmargin{-\headheight} + \addtolength\topmargin{-\headsep} + \addtolength\topmargin{-\textheight} + \addtolength\topmargin{-\footskip} + \addtolength\topmargin{-.5\topmargin} + \@settopoint\topmargin +\setlength\footnotesep{10.4\p@} +\setlength{\skip\footins}{13\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\@fptop{0\p@ \@plus 1fil} +\setlength\@fpsep{10\p@ \@plus 2fil} +\setlength\@fpbot{0\p@ \@plus 1fil} +\setlength\@dblfptop{0\p@ \@plus 1fil} +\setlength\@dblfpsep{10\p@ \@plus 2fil} +\setlength\@dblfpbot{0\p@ \@plus 1fil} +\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@} +\def\@listi{\leftmargin\leftmargini + \parsep 5\p@ \@plus2.5\p@ \@minus\p@ + \topsep 10\p@ \@plus4\p@ \@minus6\p@ + \itemsep5\p@ \@plus2.5\p@ \@minus\p@} +\let\@listI\@listi +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 5\p@ \@plus2.5\p@ \@minus\p@ + \parsep 2.5\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2.5\p@\@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +% +% \end{macrocode} +% \subsection{The package file \texttt{trieste.sty} for the \texttt{classica} option} +% As mentioned above, the \texttt{classica} option was devised in order to cope with theses +% in humanities and the specifications came from Paolo Ciacchi, a student of the University +% of Trieste, who was preparing a master thesis in classical Greek philology. The necessity of +% the large normal size derived from the necessity of having clear mark-up signs among the +% myriad philologists use, that sometimes let me believe that the philological mark-up requires +% typesetting environments similar to the mathematical ones, since the material to be typeset +% does not form a linear sequence, as in plain text, but a bi-dimensional structure as in mathematics. +% In previous version this file was input with the option \texttt{trieste}, but another option \texttt{classica} +% was defined so as not to tie these facilities only to the University of Trieste. +% +% The other requirements involve the title page and I agreed to implement them, since they are +% likely to be useful for other universities as well; the effort for localizing this bundle +% makes this point less stringent compared to the previous versions, but there are other layout fine points that +% cannot be solved with a simple substitution of infix strings. +% +% In order to have the whole bundle be aware of the option classica a specific control sequence +% is defined so as to be unique to this file. This definition is not ``undefined'' only if this file +% has already been input. +% \begin{macrocode} +%<*toptrst> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{trieste}% + [2005/12/08 v.4.00.00 opzioni specifiche per Trieste] +\def\StileTrieste{classica} +% \end{macrocode} +% +% For the options specific to this package a couple of boolean variables are defined and the option +% definitions set them to the value ``true''. +% \begin{macrocode} +\newif\if@utoretitolo \@utoretitolofalse +\newif\if@ldstyle \@ldstylefalse +\DeclareOption{autoretitolo}{\@utoretitolotrue} +\DeclareOption{oldstyle}{\@ldstyletrue} +\ProcessOptions +% \end{macrocode} +% The singular and plural masculine and feminine strings for ``candidate'' are redefined. For other languages +% the configuration file comes in handy. +% \begin{macrocode} +\def\Candidato{Laureando} +\def\Candidata{Laureanda} +\def\Candidati{Laureandi} +\def\Candidate{Laureande} +% \end{macrocode} +% +% Since theses in humanities may end up to occupy several volumes (classically ``tomo'' +% in Italian means ``volume'', although the latter spelling is valid also in Italian with the same meaning +% but appears to be neglected by the humanists; in English ``tome'' indicates a ``large book''; in Italian the +% meaning nuance of ``tomo'' is a little different because it is used to indicate the volumes +% into which a large typeset work is divided; the humanists, as usual, know well their words and use them properly!) +% a mechanism is set up to create a different title page for each volume; we need a volume counter +% and a command to start each volume; the |\frontespizio| macro typesets the real title page and we have +% already seen that it can print the volume ordinal. The localization allows to change the infix string that +% is going to be printed. When several tomes are involved, instead of using the |\frontespizio| macro, +% use the |\tomo| one, that provides to stepping up the volume counter before actually printing the new tome +% title page. +% \begin{macrocode} +\newcounter{tomo} +\newcommand*{\tomo}{\clearpage\stepcounter{tomo}\frontespizio} +% \end{macrocode} +% Folios as well are to be redefined and also the page styles require a redefinition so as to being +% able to use old style numbers. The macro |\lapagina| (it's not a case the this macro name is the +% direct translation of ``the page'') contains the folio number; if it is in roman numerals nothing +% happens, but if the old style numbers are required the folio is surrounded by the proper macros +% so as to expand the folio macro before typesetting it in old style. The page style does not need +% an actual redefinition, because the original definition in file \texttt{toptesi.sty} already uses +% |\lapagina| as the typeset folio indicator. +% \begin{macrocode} +\renewcommand*{\lapagina}{% + \ifnumeriromani + \thepage + \else + \if@ldstyle + \expandafter\oldstylenums\expandafter{\thepage}% + \else + \thepage + \fi + \fi + } +% \end{macrocode} +% But we actually have to redefine the page style for the new headings because the \texttt{classica} +% options changes completely the left and the right headers depending on the option \texttt{autoretitolo}; +% in this case the left header contains the candidate's name a a short version of the thesis title, +% while the right heading contains the chapter (short) title; if this option is not in force, headings +% appear as usual. The redefinition of the \texttt{headings} page style is made only of this option +% is in force. IN case of two side printing where the left head and the right head are different, +% the left heading contains the author name and the short title name; if there are other authors the +% first author name is printed followed by ``et al.''; if the over all header string exceeds the text +% width, a message is printed so as to induce the user to make use of the optional |\titolo| argument, +% the one that is supposed to contain the short title. In the right heading there is the chapter title; +% again if the header turns out to bee too wide, a message is issued to the user. +% +% More complicated things are done when typesetting on one side; in facts the author name +% (possibly followed by ``et al.'') and the short thesis title are typeset on the left +% of the only header while the chapter title is typeset on the right; in the unlikely +% situation where these two elements separated by at least 2em of white space do not exceed +% the text width, they are printed, but if they do, as it is likely to happen, then my suggestion +% would be not to use the \texttt{autoretitolo} option, but if the user absolutely wants this +% layout, then the author's name, possibly followed by ``et al.'', and the short thesis title +% are set in a vertical box; the same happens for the chapter title in another box; these +% texts are set withe ragged margins on the center, and finally these boxes are set one next +% to the other with an intermediate glob of infinitely stretchable glue, and finally set +% in the header box with a rule underneath the two of them. The result might be barely acceptable +% if both vertical boxes do not exceed two lines and no words have to be hyphenated, but in +% general I believe it is an ugly layout; the user is warned! +% \begin{macrocode} +\if@utoretitolo + \if@twoside +% + \renewcommand*{\ps@headings}{\let\@mkboth\markboth% + \def\@oddfoot{\null \hfill \textbf{\lapagina} \hfill \null}% + \let\@evenfoot\@oddfoot +% + \def\@evenhead{% + \setbox\@intesta\hbox{\latintext + \footnotesize\strut\textsc{% + \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle}% + }% + \ifdim\wd\@intesta>\textwidth\headwrn{\titolo}\fi + \underline{\makebox[\textwidth]{\box\@intesta}}}% + \def\@oddhead{\latintext + \setbox\@intesta\hbox{% + \footnotesize\strut\textsl{\rightmark}}% + \ifdim\wd\@intesta>\textwidth \headWarn{\section}\fi% + \underline{\makebox[\textwidth]{\box\@intesta}}}% + \def\chaptermark##1{\markright{\thechapter\ -- ##1}{}}% + \def\sectionmark##1{}}% + \else + \renewcommand*{\ps@headings}{\let\@mkboth\markboth + \def\@oddfoot{\null \hfill \textbf{\lapagina}\hfill \null}% + \let\@evenfoot\empty\let\@evenhead\empty + \def\@oddhead{{\setbox\z@\hbox{\latintext\footnotesize + \textsc{% + \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle}}% + \setbox\tw@\hbox{\latintext\footnotesize\textsl{\rightmark}}% + \dimen@=2em\advance\dimen@\wd\z@\advance\dimen@\wd\tw@ + \ifdim\dimen@<\textwidth \relax + \else + \setbox\z@\vbox{\hsize.48\textwidth\parindent\z@\raggedright + \latintext\footnotesize\textsc{% + \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle + }}% + \setbox\tw@\vbox{\hsize.48\textwidth\parindent\z@\raggedleft + \latintext\footnotesize\textsl{\rightmark}}% + \fi + \setbox\@intesta\vbox to\z@{% + \vss\hbox to\textwidth{\strut\box\z@\hfill\box\tw@}}% + \underline{\box\@intesta}}}% + \def\chaptermark##1{\markright{\thechapter\ -- ##1}}} + \fi +\fi +% \end{macrocode} +% Here |\annoaccademico| is defined that typesets the infix string corresponding to +% ``Anno accademico'' followed by the year range in old style numbers (irrespective +% of the \texttt{oldstyle} option); Commands for the localization are provided so as +% to set a different string, possibly through the configuration file. In order to set +% an adequate en-dash between the old style numbers a new definition is given that +% takes care to set the dash at a height above the base line that copes the specific +% shape of the old style numbers. +% \begin{macrocode} +\newcommand*\NomeAnnoAccademico[1]{\gdef\AnnoAccademico{#1}} +\@ifundefined{AnnoAccademico}{\gdef\AnnoAccademico{Anno accademico}}{} +% +\def\annoaccademico#1{% + \def\@submitdate{{\large\textsc{\AnnoAccademico}} {\Large\s@tanno#1!}}} +\def\s@tanno#1-#2!{\oldstylenums{#1\EnDash#2}} + +\def\EnDash{{\settowidth{\dimen@}{\large\sc I}% +\setbox\tw@\hbox{2}\dimen\tw@.5\ht\tw@\advance\dimen\tw@-.5\dp\tw@ +\dimen4\dimen\tw@\advance\dimen4by.0385ex\relax +\advance\dimen\tw@-.0385ex\relax +\makebox[1.5\dimen@]{% + \vrule\@width\dimen@\@height\dimen4\@depth-\dimen\tw@}}} +% \end{macrocode} +% The footnote rule separator is also longer that the default one. Dealing with notes +% the footnote separator is also changes as well as the footnote skip. But the humanists +% like to have also unnumbered notes within numbered ones, as if they were two separate +% sets; of course specialized extensions are available on CTAN, but as a poor man solution +% the command |\nota| was introduced that inserts a note with a symbol as a note mark; +% the symbol \emph{must} be a mathematica symbol as the dagger or the double dagger; +% by default it is the asterisk. At the same time the default definition of the mathematical +% asterisk is that of a binary operator; I have experienced that the note symbol gets a +% better positioning if if is declared an ordinary symbol, treated as, say, a letter. This +% is why its math code is redefined. A final unusual request was to be able to put a blank +% unnumbered note, as a (rather wide) note separator. The command |\NoteWhiteLine| has to +% be used at the end of the text of the preceding note. +% \begin{macrocode} +\renewcommand\footnoterule{% + \kern-6\p@ + \hrule\@width.4\columnwidth + \kern5.6\p@} +\setlength\footnotesep{12\p@} +\setlength{\skip\footins}{24\p@ \@plus 4\p@ \@minus 2\p@} +\DeclareMathSymbol{*}{\mathalpha}{symbols}{"03} +\newcommand*\nota[1][*]{% + \xdef\@thefnmark{\ensuremath{\m@th#1}}\@footnotemark\@footnotetext +} +\newcommand*{\NoteWhiteLine}{\par\vspace*{-.3\baselineskip}} +% \end{macrocode} +% +% The humanists asked me to create some other simple macros: one for skipping a whole page, +% without header and footer; another to compose a dedication page; a third one for typesetting +% a page with one or more witty sentences. The first request has a trivial solution, but at +% least |\paginavuota| is much shorter to type in that its expansion. +% +% The environments \texttt{dedica} for the dedication, and \texttt{citazioni} for the witty +% sentences are almost identical; both typeset their content with a reduced text width, half +% of the normal one; this column is typeset on the right of the page. The \texttt{dedica} +% environment is supposed to be used in the front matter, while the witty sentence environment +% may be used anywhere. The dedication is typeset in |\Large| font size and in italics; if the +% author wants a different size and/or a different shape s/he must specify it at the beginning +% of the dedication. The \texttt{citazioni} environment typesets its material with the default +% font shape series and size, so the author has to specify any change s/he desires. +% +% \begin{macrocode} +\newcommand*\paginavuota{\clearpage\thispagestyle{empty}\null\clearpage} +% +\newenvironment{dedica}{\clearpage + \if@twoside + \ifodd\c@page\else\thispagestyle{empty}\clearpage\fi + \fi + \thispagestyle{empty}% + \list{}{\labelwidth\z@ + \leftmargin.5\textwidth + \parindent\z@ + \raggedright\LARGE\itshape}\item[] +}{% + \endlist\clearpage +} +% +\newenvironment{citazioni}{% + \clearpage\thispagestyle{empty} + \list{}{\labelwidth\z@ + \leftmargin.5\textwidth + \parindent\z@ + \raggedright}\item[] +}{% + \endlist\clearpage +} +% +% \end{macrocode} +% \Finale +% \endinput diff --git a/Master/texmf-dist/source/latex/toptesi/toptesi.ins b/Master/texmf-dist/source/latex/toptesi/toptesi.ins new file mode 100644 index 00000000000..17d9b77fcf7 --- /dev/null +++ b/Master/texmf-dist/source/latex/toptesi/toptesi.ins @@ -0,0 +1,113 @@ +%% +%% This file is necessary to extract from file toptesi.dtx the following files: +%% toptesi.cls, +%% toptesi.sty, +%% topcoman.sty, +%% topfront.sty, +%% topsiz14.clo, +%% trieste.sty, +%% toptesi.cfg +%% that are strictly speaking the components of the TOPtesi bundle and form +%% the Work. The extraction is performed by means of the doctrip utility +%% that extracts practically only the uncommented lines so that their loading +%% becomes very quick. The bundle documentations in Italian is contained +%% in the document toptesi-doc.pdf (part of the bundle), and further +%% documentation in English may be obtained by LaTeX processing the +%% documented TeX source file toptesi.dtx. +%% +%% ---------------------------------------- +%% +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT NOTICE: +%% +%% Copyright 1989--2006 Claudio Beccari +%% All rights reserved. +%% +%% Permission is granted to distribute verbatim copies of this file +%% together with toptesi.dtx. +%% +%% No other permissions to copy or distribute this file in any form +%% are granted and in particular no permission to modify its contents. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{toptesi.ins} +\input docstrip.tex +\preamble + +Copyright 1989--2005 Claudio Beccari All rights reserved. + + This system is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + +IMPORTANT NOTICE: + +This file is subject to the LPPL licence, version 1.3 or any subsequent +version. Copy of the LaTeX Project Public Licence is downloadable from +any CTAN archive. + + +\endpreamble + +\keepsilent + +\Msg{*** Generazione dei file del pacchetto TOPtesi ***} + +\generateFile{toptesi.cls}{t}{\from{toptesi.dtx}{class}} +\generateFile{toptesi.sty}{t}{\from{toptesi.dtx}{topsty}} +\generateFile{topcoman.sty}{t}{\from{toptesi.dtx}{topcmn}} +\generateFile{topfront.sty}{t}{\from{toptesi.dtx}{topfrn}} +\generateFile{topsiz14.clo}{t}{\from{toptesi.dtx}{top14}} +\generateFile{trieste.sty}{t}{\from{toptesi.dtx}{toptrst}} +\generateFile{toptesi.cfg}{t}{\from{toptesi.dtx}{topcfg}} + + + + +\ifToplevel{% +\Msg{***********************************************************} +\Msg{*\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space*} +\Msg{* Now move all files to a folder that is on \space\space + \space\space\space\space\space\space\space\space\space\space + \space\space*} +\Msg{* the LaTeX search path \space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space*} +\Msg{*\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space*} +\Msg{* In order to produce the English documentation run LaTeX *} +\Msg{* on toptesi.dtx. \space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space*} +\Msg{*\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space\space\space\space\space\space\space\space*} +\Msg{* \space\space\space\space\space\space\space\space\space + \space\space\space\space + Buon lavoro! Happy TeXing! \space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + \space*} +\Msg{***********************************************************} +} + +\endinput -- cgit v1.2.3