% \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}[2008/12/14 v.5.00 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{2912} % %% \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. % % \section{Format PDF suitable for archiving} % Politecnico di Torino as well as many other Italian and non Italian universities are % moving towards archiving theses in electronic format, specifically in the PDF one. The % problem of course is: ``Will it be possible to read the archived documents, say, fifty % years from now?'' % % This essential question has been answered by the International Standards Organization % (ISO) that in 2005 published the regulation ISO~19005-1. This regulation defines a % PDF variant suitable for archiving, named PDF/A, that has two sub-formats % distinguished as PDF/A-1a, and PDF/a-1b. The `a' sub-format is more exacting, while % the `b' one is less stringent. % % The requirements for the `a' sub-format imply not only those imposed on the `b' one, % but also that all characters are conforming to UNICODE and that the logical structure % of the document be maintained. The requirements for the `b' sub-format are that the % document must be reproducible without modifications exactly as it was at the moment % of archiving. Both sub-formats must contain \emph{metadata} that are searchable even % without decompressing the normally compressed PDF file, and that contain information % useful for archive maintenance; among these informations, of course, the PDF/A % category the document belongs to, the document title, the authors, and few other % optional information, such as the keywords that ease up the library search. % % Since version 1.40, the program \texttt{pdflatex}, possibly with the addition of % some patches, is capable of producing PDF/A-1b conforming files, provided that some % attention is put into the manipulation of the source file of the thesis. With the % distribution of the 2008 version of the \TeX\ system, the executable \texttt{pdflatex} % has version number 1.40.9 and should be capable of producing PDF/A-1b files without % the need of any patch. % % The particular attention needed to avoid problems with the PDF/A certification is % summarized as follows: % \begin{itemize} % \item The preliminary essential requirement is that the \texttt{pdflatex} used to % typeset the thesis be sufficiently recent to support the PDF/A requirements. Have % a 2008, or even better, a 2009 version of the \TeX\ system installed on your PC. % Do not try to typeset the thesis % with the `old' \LaTeX; you must process the input thesis file(s) with % \texttt{pdflatex}; in the following, no specific check will be made in order % to verify if you are actually % using \texttt{pdflatex}. If you really need to use the `old' \LaTeX, you get a DVI % file and you need to transform it with |dvips| into a PS file; at this point you % have lost the possibility of exploiting the internal commands of |pdflatex| version % 1.40.9 or later. You can still produce a PDF/A final document, but you have to % transform it with |ghostscript|; read the |ghostscript| (version 8.61 or later) % documentation file |ps2pdf.html| in order to find out how to produce the correct PS % to PDF/A transformation. % \item Download from \textsc{ctan} and install the package \textsf{pdfx}, if it is % not already part of your \TeX\ system installation. % \item Install in the main % \texttt{pdfx} directory a good version of a color model % profile file, such as, for example, \texttt{ECI-RGB-V1.0.icc} (see in the download % page of the site \texttt{www.eci.org}). %\item If your thesis main file, the one you run your \texttt{pdflatex} on, is named, % say, \texttt{JohnSmithMasterThesis.tex}, prepare in the same directory another file % named \texttt{JohnSmithMasterThesis.xmpdata} that contains the \emph{metadata} % relative to the thesis; pay attention to follow the stringent syntax described and % exemplified in the \textsf{pdfx} documetation. A minimal set of \emph{metadata} % example would be the following one: % \begin{verbatim} % \Title{Experiments in Trichotetratomy} % \Author{John Smith} % \end{verbatim} % Keywords require a specific XML style format that can be examined in the package % documentation. %\item Some mathematical symbol commands obtained from the standard \LaTeX\ set-up % and the standard mathematical fonts require some patching that is already included % in this \texttt{ToPtesi} bundle; but it is not excluded that with other fonts similar % patches might be requested. %\item Use only PNG and JPEG images with RGB color profiles. %\item If you include PDF images that contain some text, be sure that the font for % this text is completely embedded in the included file. Should the PDF file come % from an external drawing program be sure to configure that program so that it embeds % all the fonts used in the image. If you don't succeed, open the PDF file with % the free program \texttt{inkscape} and save it back in PDF format; the missing fonts % will be replaced with their traced outlines and this will not disturb the PDF/A % conformity. %\item Verify your final PDF file with a suitable program and do not give up doing the % necessary corrections or modifications while the verification program keeps saying % the this or that is not conforming to the PDF/A specification. A suitable program % is the Preflight plug-in of Adobe Acrobat Professional version 8 or later, but this, % although the most authoritative, is a commercial program; probably your university % has special facilities for this task. %\end{itemize} % % Up to day the realization of a PDF/A conforming file sets forth several problems % that are of great concern for the large Institutions that have thousands of document % a year to archive; it is not a question implied in the free nature of the % \texttt{pdflatex} program, that, on the opposite, according to our experience has % a very high rate of % success in producing PDF/A conforming documents. If you stick to the default \TeX\ % system fonts and use this patched version of \texttt{ToPtesi} you should be able to % avoid most problems. % % \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}% [2008/12/15 v.5.00 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}% [2008/12/15 v.5.00 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\ifT@Ppdfa \T@Ppdfafalse \newif\ifchapterbibliography \chapterbibliographyfalse \DeclareOption{cucitura}{\@bindingtrue} \DeclareOption{14pt}{\input{topsiz14.clo}} \DeclareOption{chapterbib}{\chapterbibliographytrue} \DeclareOption{trieste}{\AtEndOfPackage{\RequirePackage{trieste}}} \DeclareOption{classica}{\AtEndOfPackage{\RequirePackage{trieste}}} \DeclareOption{pdfa}{\T@Ppdfatrue} % \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 width equals the established caption width; % 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 that 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 \abovecaptionskip \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} % % Last but not least, here come the specifications for the PDF/A-1b format. First of % all the patches to the macros |\not| and |\mapstochar| that produce problems with % the format, because they have a declared width of 0\,pt; this is no problem for % \texttt{latex} or \texttt{pdflatex}, but it is a problem for the PDF/A format. % Therefore these command must be replaced by equivalent ones that do not use zero-width % glyps. For |\not|, another slash can be used, but in order to have it the right size % in all math typesetting modes it is necessary to have a different command for % every mode; this is achieved with the |\mathchoice| primitive as such: % \begin{macrocode} \renewcommand*\not{\mathrel{\mathchoice% {\rlap{$\displaystyle\mkern2.5mu\mathnormal{/}$}}% {\rlap{$\textstyle\mkern2.5mu\mathnormal{/}$}}% {\rlap{$\scriptstyle\mkern2.5mu\mathnormal{/}$}}% {\rlap{$\scriptscriptstyle\mkern2.5mu\mathnormal{/}$}}% }} % \end{macrocode} % Actually the zero-width property of the slash must be simulated with a zero-width box % but within this box it is necessary to specify the typesetting style of the math % mode material. % % A similar trick is used to patch the |\mapstochar| command but no other glyph was % found suitable for substituting the original one; therefore we had to make it up % with the |picture| environment: % \begin{macrocode} \renewcommand\mapstochar{\mathrel{\mathchoice {\displaystyle\unitlength=0.0555\fontdimen6\font \picture(0,0)\put(1,1.5){\linethickness{0.72\unitlength}% \line(0,1){6}}\endpicture} {\textstyle\unitlength=0.0555\fontdimen6\font \picture(0,0)\put(1,1.5){\linethickness{0.72\unitlength}% \line(0,1){6}}\endpicture} {\scriptstyle\unitlength=0.0555\fontdimen6\font \picture(0,0)\put(1,0.55){\linethickness{0.61\unitlength}% \line(0,1){5}}\endpicture} {\scriptscriptstyle\unitlength=0.0555\fontdimen6\font \picture(0,0)\put(1,0.2){\linethickness{0.56\unitlength}% \line(0,1){4}}\endpicture} }} % \end{macrocode} % The above patches are introduced irrespective of using \texttt{pdflatex} for producing % a PDF/A compliant file; one might need to produce a traditional PDF file, or even a % DVI file, to be converted to the PS format, in order to possibly further transform % it to PDF/A by means of \texttt{ghostscript} (see the details in the % \texttt{ps2pdf.html} file belonging to the \texttt{ghostscript} documentationx). % % Finally, if the class option |pdfa| was specified, we load the |pdfx.sty| file % with the suitable option for typesetting a (hopefully) PDF/A conforming file. % We must remember that |pdfx.sty| on turn loads % the |hyperref.sty| file with the necessary |pdfa| option. The user, therefore does % not need to reload that package, but is free to configure it through the % |\hypersetup| command arguments right at the beginning of the thesis main file. % \begin{macrocode} \ifT@Ppdfa\RequirePackage[a-1b]{pdfx}\fi % % \end{macrocode} % \subsection{The package file \texttt{topfront.sty}} % This file is input by \texttt{toptesi}, version 5.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 5.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}[2008/12/15 v.5.00 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}% [2008/12/15 v.5.00 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 font 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}% [2008/12/15 v.5.00 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}% [2008/12/15 v.5.00 specific options for classical thesis typesetting] \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