% \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}
%</driver>
% \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}
%
%</class>
%    \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
%</topsty>
%    \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}
%</topfrn>
%    \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}
%</topcfg>
%    \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
%</topcmn>
%    \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}
%</top14>
%    \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
}
%</toptrst>
%    \end{macrocode}
% \Finale
% \endinput