% \iffalse meta-comment
%<*internal>
\begingroup
\input docstrip.tex
\keepsilent
\preamble
  ______________________________________________________
  The TOPtesi package 
  Copyright (C) 2011 Claudio Beccari 
  All rights reserved

  License information appended

\endpreamble
\postamble

Copyright 2005-2011 Claudio Beccari

Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
this license is at: http://www.latex-project.org/lppl.txt

This work is "author-maintained"

This work consists of this file toptesi.dtx, a README file
and the derived files:
 
toptesi.cls, toptesi.sty, topfront.sty, topcommand.sty,
toptesi.cfg, and the English documentation toptesi.pdf.
 
Furthermore the bundle contains the documentation source file toptesi-doc-xetex.tex  
and the derived file toptesi-doc-xetex.pdf.

The toptesi-example.tex source file is just an example that shows how
to use the various commands; by commenting or uncommenting certain
source lines it is possible to typeset different kind of theses and their
frontpages.

The toptesi.cfg file is a sample of a local configuration file that can be
freely edited and modified.

By running pdflatex on toptesi.dtx the user gets the class, sty and cfg files,
and the English documentation file in pdf format.

The documentation file toptesi-doc-xetex.pdf is in Italian; its source file is 
another example of how to use toptesi while typesetting with XeLaTeX.
\endpostamble
\askforoverwritefalse

\generateFile{toptesi.cls}{t}{\from{toptesi.dtx}{class}}
\generateFile{toptesi.sty}{t}{\from{toptesi.dtx}{topsty}}
\generateFile{topcoman.sty}{t}{\from{toptesi.dtx}{topcmn}}
\generateFile{topfront.sty}{t}{\from{toptesi.dtx}{topfrn}}
\generateFile{toptesi.cfg}{t}{\from{toptesi.dtx}{topcfg}}

\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</internal>
%
% Copyright 1989--2011 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 self unpacking file toptesi.dtx
% which is part of the distribution.
%
% \fi
%
% \iffalse
%<*driver>
\documentclass{ltxdoc}
\ProvidesFile{toptesi.dtx}[2011/10/18 v.5.59c Documented TeX file for
the TOPtesi bundle]
\GetFileInfo{toptesi.dtx}
\title{The TOPtesi bundle}
\date{\fileversion\space\filedate}
 \author{Claudio Beccari}
 
\usepackage{metalogo}
\def\prog#1{\textsf{#1}}
\begin{document}\errorcontextlines=9
\maketitle
 \setlength\hfuzz{20pt}
 \DocInput{toptesi.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{2590}
%
%% \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\ This ambition can't be fulfilled, though, because of the complexity of the
% title page (and possibly of the legal page) requirements. This version is experimentally
% compliant with the \XeLaTeX\ program. Up to now the few conflicts that have been spotted
% have been solved with suitable corrections or additions. The most important feature with
% XeLaTeX is that the option pdfa cannot be used any more, because it resorts to a
% compilation with pdf\LaTeX; the typesetting engine \XeTeX\ does not produce directly
% any PDF output but a modified, extended DVI output, even if this format is immediately
% transformed into a PDF file through a special version, xdvipdfmx, of the conversion
% program. Another minor XeLaTeX feature is that it cannot fully exploit the typesetting
% facilities of the |microtype| package, but the wide choice of OpenType fonts replaces
% almost completely such missing feature.
% \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{topcoman.sty} that defines a certain number
% of user commands suitable for typesetting technical matters.
% \item Previous version of this bundle contained also the logos of a certain number of
% universities. These logos are not distributed anymore because of legal constraints. Every
% one who is working on his/her degree course final report must retrieve the logo of his/her
% university, but s/he should pay attention to use it according to the rules and limitations
% of the university.
% \item A documentation file \texttt{toptesi-doc-xetex.pdf}, written in Italian, where every
% feature is explained in detail; essential information is given in this English
% documentation.
% The source file of the documentation \texttt{toptesi-doc-xetex.tex} may be used as a sample
% for typesetting one's thesis with XeLaTeX.
% \end{itemize}
%
% The above files are complemented with a configuration file that any user may
% customize 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} and
% \textsf{polyglossia} packages contains localizations for many languages, but such
% localisations deal with the standard infix \LaTeX\ names and phrases and do not cope
% with the thesis title page requirements.
%
% TOPtesi was specifically conceived for typesetting theses with the \LaTeX\ mark-up, and
% initially was using the \textsf{tex} typesetting engine; later on this engine was
% substantially substituted by the \textsf{pdftex} engine, which was capable of direct
% output of PDF files. Since about 2006 the typesetting engine \XeTeX\ is available; the
% most important feature of this engine is its capability of using OpentType fonts, among
% which those that are resident in the specific platform where the document is being
% typeset. For what concerns theses this might be of essential importance when the thesis
% refers to specific languages that use different scripts (Greek, Russian, Bulgarian,
% Chinese, Japanese, Korean, Arabic, Farsi, Thai, and so on).
%
% This version of TOPtesi has been tested with \XeLaTeX. Some conflicts have been spotted
% and solved; may be there are still hidden ones, so at this version number this bundle
% should be considered as a ``beta'' one. The only main drawback still present when running
% \XeLaTeX\ is the fact that this program cannot still \emph{directly} produce the output
% file in PDF format, although it automatically transforms its specific output file into
% PDF format. This implies that the specific \textsf{pdftex} features required to produce
% a PDF/A compliant output PDF file, suitable for long term archiving, cannot be used. But
% with some attention the PDF file output by \XeLaTeX\ may be converted to PDF/A by using
% the program \prog{ghostscript}.
%
% \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. 
%
% 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 ``gone-by-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. If \XeLaTeX\ has to be used, some essential preamble specific
% commands are to be used, but essentially the body of the thesis has the same mark-up.
%
% \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 fields; 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 margins so as to cope with the thesis binding
% that is generally not made up by sewing together a number of signatures;
% the default outer displacement is fixed to~7mm, but it can be customized by means
% of a proper entry in the configuration file or by an explicit command in the preamble.
%
% \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
% default size perhaps is too small, but 11 point or 12 point typesetting may be adequate. 
%
% \Item[autoretitolo] This option modifies the left hand (even numbered) pages
% in two side typesetting; normally the even numbered page 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 other
% 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; most commands receive one
% argument; only the command |\titolo| and |\cleardoublepage| accept 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 its title
% \Item[titolo]  gets the master or PhD 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 above 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 the 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 above
%                 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 author
% \Item[candidata]  gets the name of the female author
% \Item[secondocandidato]  gets the name of the second male author
% \Item[secondacandidata]  gets the name of the second female author
% \Item[terzocandidato]  gets the name of the third male author
% \Item[terzacandidata]  gets the name of the third female author; 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 ``Laureando:''; in other
%                 languages it is necessary to specify this string in the proper gender and
%                 number. Alternatively it is possible to redefine the macros |\Candidato|
%                 (masculine singular), |\Candidata| (feminine singular), |\Candidati|
%                 (masculine or mixed gender plural), |\Candidate| (feminine plural), in
%                 order to adjust the candidates' labels to 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.
% \Item[setbindingcorrection] sets up the length to displace the text block to the external
%                 margin so as to have a wider internal margin to accommodate for the binding
%                 correction. Its argument is not optional and is used to modify the default
%                 correction of 7\,mm.
% \Item[cleardoublepage] may be used as the default command, but it accepts an optional
%                 argument in order to chose the page style for the possible blank page to be
%                 output in order to open the next major section on an odd page when
%                 typesetting with the |twosides| option. 
% \Item[setcleardoublepage] uses its argument to establish the default page style when
%                 typesetting a blanck page by means of the command |\cleardoublepage|. If
%                 this command is not used the default page style is |plain|.
% \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} or \texttt{book} 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{graphicx}
% extension package, besides those provided by the \texttt{babel} or \texttt{polyglossia}
% packages.
% If the source thesis file is being typeset by means of \XeLaTeX\ the \texttt{babel}
% package is not loaded; in its place the \texttt{polyglossia} package is loaded that
% should implement in \XeLaTeX\ most of the functionality provided by \texttt{babel} to
% \LaTeX. ``Most'' means that not all the functionality is available, therefore it's better
% to consult the documentation of \texttt{polyglossia} before using its built in commands.
%
% 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 by means of \textsf{pdflatex}, it would be necessary to
% specify the option \texttt{french} among the \emph{class} options, and so start the
% document by specifying |\selectlanguage{french}|.
% But the user should pay attention to use \texttt{babel} in the proper way:
% \begin{itemize}
% \item Due to the way \LaTeX\ classes load the requested package files, and to the fact that
% the \texttt{babel} package has already been loaded by the \texttt{toptesi} class, the user
% cannot reload it with a different list of language options; therefore the latter language
% options \emph{must be specified} as global class options; therefore, if the thesis has
% to be typeset, for example, in French, is is necessary to do the following:
%\begin{verbatim}
%\documentclass[...,french,...]{toptesi}
%...
%\begin{document}
%\selectlanguage{french}
%\end{verbatim}
% But if the thesis should be typeset in French by means of \XeLaTeX, then it is perfectly
% legal to specify the auxiliary language in this way:
%\begin{verbatim}
%\documentclass[...]{toptesi}
%\setotherlanguage{french}
%...
%\begin{document}
%\selectlanguage{french}
%\end{verbatim}
% \item With the 2010 \TeX\ system full distributions, both \TeX Live and MiKTeX, all known
% (to \LaTeX) language hyphenation rules are preloaded; with other less up to date
% \TeX\ system distributions this might not be true. With both distributions also the
% language hyphenation rules known to \XeLaTeX\ are all preloaded.
% Remember that \texttt{babel} and \texttt{polyglossia} macros select the language
% typesetting rules, but hyphenation is activated only if the program format file has been
% generated with the pertinent language hyphenation rules. You can check this detail by
% reading the first dozen lines of your thesis \texttt{.log} file; there is the list of all
% language hyphenation rules that are available in the format file.
% While (American) English is the default and almost any \emph{basic} distribution of the
% \TeX\ system has many language defaults, it is more likely that French is preloaded while
% Italian is not. Complete distributions don't exhibit this flaw.
%
% Should the required language(s) be missing, the user is forced to read his/her 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 very properly;
% it would be very upsetting to use fine software for producing a perfectly typeset thesis
% that, unfortunately, has wrong hyphenation points! Luckily enough, recent distributions
% of the \TeX\ system have all the known hyphenation rules preloaded; in any case even older
% distributions have available command line commands or graphical user interfaces that make
% it easy to perform the tasks of changing the list of preloaded hyphenation rules and
% rebuilding all the format files, moving them to the proper places.
% \end{itemize}
%
% The TOPtesi bundle adds very little to the user commands; nevertheless the package
% \texttt{topcoman.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 with 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 you select the other language; with the presence of the definitions
% contained in \texttt{topcoman.sty} such useful commands remain available with every
% language. The \texttt{polyglossia} package does not produce any useful additional command
% for writing in a ISO compliant way, therefore the macros contained in the
% \texttt{topcoman.sty} package come very handy.
%
% 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 Greek
% letters so that they are typeset in ``italics''; they are in effects taken from the math
% italic alphabet, instead of the default roman one. This option is useful with \LaTeX,
% while with \XeLaTeX\ it is unnecessary, due to the larger set of math alphabets and math
% font commands that are available with proper UNICODE math fonts. Beware: in French, in
% spite of the ISO regulations, the Greek math symbols are supposed to be always upright,
% both the upper and lower case letters; with XeLaTeX there are no problems; when using
% pdfLaTeX it's necessary to use font that have both varieties of Greek letters, such as the
% Times eXtended , the Palatino eXtende, the Fourier fonts, et cetera.
% %
% \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; another 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 mathematical quantities, and
% upright type for whatever is not a variable, from the names of
% functions (such as sin, cos, log, etc.), to any index that contains
% 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
% inserting 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{unitsx} 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{unitsx} 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, for
% example $35^\circ$; 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, and the ISO regulations
% require it to be typed with an upright serifed font, just as operators are.
% %
% \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 ISO regulations require
% the upright type for ``e'' and any mathematical constant, but
% the electron charge $e$ is typeset in math italics because this is a physical
% ``constant'', not a mathematical one. \XeTeX\ allows to typeset upright Greek letters,
% so there is the facility to typeset an upright ``pi'' (the number) to be distinguished
% from an inclined ''pi'' (the angle).
% %
% \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 
% lines are not longer than 80 characters. There exists an external package
% \texttt{listings}, that the user might want to load, that does a similar work in a more
% professional and configurable way; this package simpler command might be preferable for its
% simplicity, but of course it is not compulsory.
% \end{description}
%
% All these commands are defined into the separate package \texttt{topcoman.sty}
% that can be used as an independent extension package with (possibly) any document class.
%
% \section{Format PDF suitable for archiving}
% This section in general does not apply if the thesis is typeset by means of \XeLaTeX,
% because the typesetting engine in this case cannot directly produce a PDF formatted output
% file. For this reason the option \texttt{pdfa}, that shall be described shortly, should
% not specified to the class |toptesi|; at the same time if this option is specified, but
% the thesis is typeset by means of \XeLaTeX, the effects of this options are disabled.
%
% Politecnico di Torino as well as many other Italian and foreign 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\footnote{In 2011 the updated regulation
% 19005-2:2011 has been published, but ths does not imply substancial modifications in this
% thesis bundle.} 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 library searches.
%
% Since version 1.40, the program \texttt{pdflatex} 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 is capable of producing
% PDF/A-1b files.
%
% 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} engine used to
% typeset the thesis be sufficiently recent to support the PDF/A requirements. It's
% better to have the most recent distribution of the \TeX\ system installed on your PC.
% Do not try to typeset the thesis with the `old' \LaTeX; you \emph{must} process the input
% thesis file(s) with \texttt{pdflatex} or with \prog{xelatex}; 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 by means of |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. A procedure similar to this one is available when the
% thesis is typeset by means of \XeLaTeX, and produces valid results provided some
% caution is exercised when using fonts.
%
% \item Download from \textsc{ctan} and install the package \textsf{pdfx}, if it is
% not already part of your \TeX\ system complete distribution. 
% \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 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} documentation. 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. The UNICODE math fonts used by \XeLaTeX\ do not require any
% patch, but unfortunately its PDF byproduct is not PDF/A compliant (it must be converted
% by means of \prog{ghostscript}).
% \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.
% \item If you use \prog{xelatex} for typesetting your thesis, you have to accompany your
% master file with another one that contains the metadata and othe necessary information.
% Be sure to call this auxiliary file as the masterfile name glued with |-def.ps|; so if
% your mastefile is named \texttt{JohnSmithMasterThesis.tex}, name this auxiliary file as
% \texttt{JohnSmithMasterThesis-def.ps} and fill in the necessary metadata and other
% thechnical information into this file in the line marked with |% Customize|. Then run
% the \prog{ghostscript} program with the proper name (different for Windows or UNIX-like
% platforms) with the proper input parameters and options. There are strong chances that
% if you follow the general recommendations shown here and in the document
% |toptesi-doc-xetex.pdf| file, the output file will be PDF/A compliant.
%\end{itemize}
%
% Let's issue a warning: if you are using Adobe Reader X (or later), this program will open
% a PDF file beginning with an information header claiming that the file is PDF/A
% compliant; maybe it's true, but do not trust this information too much, at least don't
% believe that this information is a ``certification'' of the PDF/A compliance. I have seen
% files with this comforting information that did not pass the Preflight test!
%
% Up to today the realization of PDF/A conforming files 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 \prog{pdflatex}
% and \prog{xelatex} programs, that, on the opposite, according to my experience have
% a very high rate of success in producing PDF/A compliant documents. If you stick to
% the default \TeX\ system Type~1 256-glyph, or to the UNICODE encoded otf or ttf 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}
   [2011/10/18 v.5.59c 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{ifxetex}
\ifxetex
  \RequirePackage{fontspec}
  \@ifundefined{define@boolkey}{\RequirePackage{xkeyval}}{\relax}
  \RequirePackage{polyglossia}
  \setmainlanguage{italian}
  \setotherlanguage{english}
  \renewcommand*{\iflanguage}[1]{\ifnum\the\language=\csname l@#1\endcsname
  \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\else
  \RequirePackage[english,italian]{babel}
\fi
\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
% stand aolone 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}[2011/10/18 v.5.59c Extension for toptesi.cls]%
%    \end{macrocode}
%
% We start with defining the debugging macros; these trace commands and macros
% are the usual ones 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{size14.clo} is distributed with the \texttt{extsizes} pacckage and is already
% included in any complete distribution of the major \TeX\ system ones; in previous versions
% of this bundle there was a specific option class file for this large size, but with the
% latest complete distributions available, there is no chance that the existing option file
% is missing.
%
% \texttt{chapterbib} allows to set a list of references at the end of each chapter.
%
% For the options specific to the \texttt{classica} style 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
\newif\if@xivpt \@xivptfalse
%    \end{macrocode}
%
%    \begin{macrocode}
\newlength\T@Pbinding\setlength\T@Pbinding{7mm}
\def\setbindingcorrection#1{\T@Pbinding=#1}
\newif\if@binding \@bindingfalse
\newif\ifT@Ppdfa  \T@Ppdfafalse
\newif\ifchapterbibliography \chapterbibliographyfalse
\newif\ifclassica \classicafalse
\DeclareOption{cucitura}{\@bindingtrue}
\DeclareOption{14pt}{\@xivpttrue}
\DeclareOption{chapterbib}{\chapterbibliographytrue}
\DeclareOption{trieste}{\classicatrue}% Just for backwards compatibility
\DeclareOption{classica}{\classicatrue}
\DeclareOption{autoretitolo}{\ifclassica\@utoretitolotrue\fi}
\DeclareOption{oldstyle}{\ifclassica\@ldstyletrue\fi}
\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}
\if@xivpt\input{size14.clo}\fi
%    \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. These changes are
% executed at the |\begin{document}| stage.
%    \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
%
\AtBeginDocument{%
\if@binding
 \typeout{Messaggio Toptesi: Ricalcolo i margini}
 \advance\oddsidemargin \T@Pbinding
 \advance\evensidemargin -\T@Pbinding
 \advance\marginparwidth -\T@Pbinding
\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 {\scshape\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 {\scshape\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 {\scshape\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}
% Bisogna ridefinre anche il modo di inserire nell'indice i capitoli non numerati con le pagine in
% numeri romani maiuscoletti
%    \begin{macrocode}
\renewcommand*\l@chapter[2]{%
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\hfil \nobreak
      \hb@xt@\@pnumwidth{\hss\unless\ifxetex\normalfont\fi\scshape{#2}}\par
      \penalty\@highpenalty
    \endgroup
  \fi}
%    \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
    \cleardoublepage\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}
\def\@endpart{\vfil\cleardoublepage
              \if@tempswa
                \twocolumn
              \fi}  
%    \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 largeer or a smaller 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 setting 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. Actually the
% code that defines the mathematical active comma is a new addition that lets the comma
% perform correctly in its double function (decimal separator and punctuation mark). The
% only point where this code fails is when a list of numbers is typeset: When a numeric list
% must be typeset, such as, for example, $\forall i=0,\,1,\,2,\,3, n$, in the source code
% a space \emph{must} be inserted after every punctuating comma while no space follows a
% decimal comma: for example \verb*+$\forall i=0, 1, 2, 3,n$+.  The space before the |n| is
% not necessary (but it wouldn't hurt) because |n| is not recognized as a digit, therefore
% the ``intelligent'' comma inserts the necessary space by itself.
%
%    \begin{macrocode}
 \DeclareMathSymbol{\virgola}{\mathpunct}{letters}{"3B}
 \DeclareMathSymbol{\virgoladecimale}{\mathord}{letters}{"3B}
 \AtBeginDocument{\mathcode`\,=\string"8000}
 {\catcode `,=\active \gdef,{\futurelet\let@token\m@thcomma}}
\def\m@thcomma{\let\@tempB\virgola
\@tfor\@tempA:=0123456789\do{%
\expandafter\ifx\@tempA\let@token\let\@tempB\virgoladecimale 
\@break@tfor\fi}\@tempB}
%
\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} or of \texttt{polyglossia}; 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.
% \item If XeLaTeX is being used for typesetting it suffixes to specify in the preamble the name
% of the other language to be used, by means of the |setotherlanguage| command, and to define the
% summary and acknowledgments names in the same way as with pdf\/\LaTeX; the same must be done at
% the beginning of the document to declare the new language a the default one.
% \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. For using XeLaTeX as the typesetting engine it's necessary to load such packages at the ``begin document'' step, so that all a the other settings, especially fonts, are already established. May be it should be better done also when using pdf\/\LaTeX\ as the typesetting engine, but the past experience has not shown any inconvenience. 
%    \begin{macrocode}
\ifxetex
	\AtBeginDocument{\RequirePackage{topfront}
		\RequirePackage{topcoman}}
\else
	\RequirePackage{topfront}
	\RequirePackage{topcoman}
\fi
\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 commands 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}
\ifxetex\else
\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}
}}\fi
%    \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). The
% patches are avoided if XeLaTeX is being used with the UNICODE math definitions.
%
% 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.
%
% Nevertheless if \XeLaTeX\ is being used to typeset the document, loading of the package
% |pdfx| is skipped; at the same time the |hyperref| package is being loaded anyhow
% just because the |pdfa| option was specified, but at least the |pdfa| option is
% specified, so that even if it's necessary to resort to |ghostscript| in order to produce
% a PDF/A compliant file, at least the hyperlinks to external sites are suitably
% ``sterilized''.
%    \begin{macrocode}
\ifT@Ppdfa
  \unless\ifxetex
     \RequirePackage[a-1b]{pdfx}
  \else
     \RequirePackage{hyperref}
  \fi
\fi
%    \end{macrocode}
%
% \subsection{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 signs 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 linear sequences, as in plain text, but 
% bi-dimensional structures as in mathematics.
%
% 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.
%
% The singular and plural masculine and feminine strings for ``candidate'' are redefined.
% For other languages the configuration file comes in handy.
%    \begin{macrocode}
\ifclassica
\def\Candidato{Laureando}
\def\Candidata{Laureanda}
\def\Candidati{Laureandi}
\def\Candidate{Laureande}
\fi
%    \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} option 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 if 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 with 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{\unless\ifxetex\latintext\fi
           \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{\unless\ifxetex\latintext\fi
           \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{\unless\ifxetex\latintext\fi\footnotesize
           \textsc{%
           \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle}}%
           \setbox\tw@\hbox{\unless\ifxetex\latintext\fi\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
             \unless\ifxetex\latintext\fi\footnotesize\textsc{%
             \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle
             }}%
             \setbox\tw@\vbox{\hsize.48\textwidth\parindent\z@\raggedleft
                 \unless\ifxetex\latintext\fi\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); localization commands 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{\ifclassica
  \def\@submitdate{{\large\textsc{\AnnoAccademico}} {\Large\s@tanno#1!}}
  \else
  \PackageWarning{toptesi}{\string\annoaccademico\space is usable only 
  			when the\MessageBreak
  			`classica' option is in force}%
  \def\@submitdate{\AnnoAccademico\ #1 --- Needs `classica' option}
  \fi}
\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 changed 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 mathematical 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 it is used as an ordinary symbol through |\mathord|. 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@}
\newcommand*\nota[1][\mathord{*}]{%
    \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. These three commands, though, are available irrespective of the
% \texttt{classica} option, so that they can be used also for theses outside the humanities
% fields.
%
%    \begin{macrocode}
\newcommand*\paginavuota{\clearpage\thispagestyle{empty}\null\clearpage}
%
\newenvironment{dedica}{\clearpage
    \if@twoside
        \ifodd\c@page\else\thispagestyle{empty}\null\clearpage\fi
    \fi
    \thispagestyle{empty}%
    \list{}{\labelwidth\z@
    \leftmargin.5\textwidth
    \parindent\z@
    \raggedright\LARGE\itshape}\item[]
}{%
    \endlist\clearpage
}
%
\newenvironment{citazioni}{%
    \clearpage\thispagestyle{empty}
    \list{}{\labelwidth\z@
    \leftmargin.5\textwidth
    \parindent\z@
    \raggedright}\item[]
}{%
    \endlist\clearpage
}
%    \end{macrocode}
% Another enhancement that |toptesi| has compared to the original |report| class is a
% redefined |\cleardoublepage| macro. This new macro may leave, as usual, a blank page in
% order to skip to an odd numbered one. But the default style of this blank page may be set
% as the user likes best. The default style is |plain|, because I think that it's better to
% always have a numbered page than a totally white page. Nevertheless what I think it is more
% suitable is not something anybody should agree with; therefore the command accepts an
% optional argument so as to use the style s/he likes best; moreover the command
% |\setcleardoublepage| redefines the default style as many times the user would like to
% switch style. |\TT@clpagedefault| contains the default style; |\setcleardoublepage|
% redefines the above default, and |\cleardoublepage| uses the symbolic name
% |\TT@clpagedefault| or the optional argument and therefore uses the style that has been set
% as the default one or the style the uses wants to use in a particular instance.
%    \begin{macrocode}
\def\TT@clpagedefault{plain}
\newcommand*\setcleardoublepage[1]{\gdef\TT@clpagedefault{#1}}
\renewcommand\cleardoublepage[1][\TT@clpagedefault]{\clearpage\if@twoside \ifodd\c@page\else
    \hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\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}[2011/10/18 v.5.59c Title page for TOPtesi]
%    \end{macrocode}
%
% The title page information depends on the type of ``thesis' that is being typeset.
% Since the topfront package may be used independently form the accompanying class \texttt{toptesi},
% it's necessary to define the switch |\ifclassica| in case it was not already defined. 
% Therefore we thest if the switch is undefined, and in case we define ti.
% Furthermore 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. All 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 appropriate infix string is typeset in the title page.
%    \begin{macrocode}
\@ifundefined{ifclassica}{%
    \expandafter\newif\csname ifclassica\endcsname}{\relax}
\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 might 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 to name the School's director or
% coordinator instead of the tutor. 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 is 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
        \unless\ifclassica
            \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, no 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 to 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 we have the only active macro |\frontespizio|, the real 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 into the footer; in this way the information that must be typeset in
% the title page is not crunched in too little a 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}%
      \ifclassica
            \hbox to \hsize{\hfil\vrule\@width\z@
        \@height3.5ex\vrule\@height1.4\p@\@depth-\p@\@width50mm\hfil}%
      \fi
      }}%
      \def\@oddfoot{\vbox to 15mm{\vss
     \ifclassica
        \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; 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
                {\Large \@nomeat}\par}\vfill
      \fi
%    \end{macrocode}
% Then the faculty name comes next; but for 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\@facname%
      \fi
      \par\medskip}%
%    \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
                \@title \par}
      \end{center}
% con l'eventuale sottotitolo
      \ifx\@subtitle\empty \else
            \begin{center}%
              \large\textrm{\@subtitle}\par
            \end{center}%
      \fi
%    \end{macrocode}
% If the option \texttt{classica} is in force the thesis might be divided in several volumes;
% theses in humanities are apparently 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}
      \ifclassica
            \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 of supervisors.
%    \begin{macrocode}
      \vfill
      \iflaureatriennale
            \let\@nomerelatore\empty
      \else
            \ifdottorato
                  \edef\@nomerelatore{\@PhDdirector}%
            \else
                  \ifx\@principaladviser\empty\else
                        \def\@nomerelatore{\Relatore:}%
                  \fi
                  \unless\ifclassica
                        \ifx\@secondadviser\empty \else
                              \def\@nomerelatore{\Relatori:}%
                        \fi
                  \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 PhD candidate 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 supervisor(s) and of the candidate(s) name(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 centered 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 a 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 a 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{\ifclassica\else\large\fi
                  \textbf{\protect\@nomerelatore}}\\[.6ex]
            \hbox{\large\textrm{\protect\@principaladviser}}%
            \ifx\@secondadviser\empty \else
               \ifclassica
                  \ifx\@thirdadviser\empty
                     \ifx\@secondadviser\empty\else
                           \\[1.5ex]\textbf{\Correlatore:}%
                     \fi
                  \else
                     \\[1.5ex]\textbf{\Correlatori:}%
                  \fi
               \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{\unless\ifclassica\large\fi
               \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
% signature. With the \texttt{classica} option in force the two boxes are simply aligned.
%    \begin{macrocode}
             \unless\ifclassica
               \begin{flushleft}%
                     \BoxRelatori
               \end{flushleft}\par\vspace*{-1.5\baselineskip}
               \begin{flushright}%
                     \BoxCandidati
               \end{flushright}\else
               \noindent
               \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}\par
             \fi
          \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 customize 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}[2011/10/18 v.5.59c Additional TOPtesi commands]
%    \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. This may be useful unless the XeTeX
% typesetting engine is used; in facts the Unicode math defines specific commands for setting
% any Latin or Greek mathematical letter in any possible font shape and series.
%    \begin{macrocode}
\RequirePackage{ifxetex}
\ifxetex\else
\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
}\fi
%    \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. Should the |babel| package not be loaded, then we provide the
% useful command |\textormath| provided by |babel|. We define the text version of the
% subscript and  ensure also that the |textcomp| package is loaded; of course it it's already
% loaded the |\RequirePackage| command performs the necessary tests and possibly does not load
% anything. 
%    \begin{macrocode}
\providecommand{\ensuremath}[1]{\ifmmode#1\else$#1$\fi}%
\providecommand{\textormath}{\ifmmode\expandafter\@secondoftwo\else
    \expandafter\@firstoftwo\fi}
\providecommand*\textsubscript{\raisebox{-0.5ex}}
\ifxetex\else
\RequirePackage{textcomp}
\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 if the thesis is typeset with \textsf{pdflatex} that loads that
% package; these commands are not predefined if the thesis is typeset with \XeLaTeX\ that does
% not load the \texttt{babel} package; 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}{\textormath{\textohm}{\mathrm{\Omega}}}
\providecommand{\ped}[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
\providecommand{\ap}[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
\providecommand{\unit}[1]{\ensuremath{{\mathrm{\,#1}}}}
\providecommand{\gei}{\ensuremath{{\mathop{\mathrm{j}}\nolimits}}}
\providecommand{\eu}{\ensuremath{{\mathop{\mathrm{e}}\nolimits}}}
\providecommand{\micro}{\textormath{\textmu}{\ifxetex\mathup{μ}\else
    \ifx\muup\undefined\mu\else\muup\fi\fi}}
\providecommand{\gradi}{\textormath{\textdegree}{^\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{\ttfamily\footnotesize \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{\ttfamily\footnotesize\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 \global\let^^L\newpage}
%    \end{macrocode}
%
% Remember that the comma as a decimal separator is required for all languages except English.
% If you use they package outside TOPtesi, but as an extension of other packages, it's up to
% you to define an ``intelligent comma'' macro or to load either the |icomma.sty| or the
% |nccomma.sty| package that defines such a macro: the |icomma| package defines the comma as
% a mathematical active character that recognizes the subsequent token as a space token so as
% to insert a punctuation comma; |nccomma| behaves more or less as the macro defined in
% TOPtesi and recognizes digits so as to use a decimal comma.
%
% 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; in TOPtesi
% roman numerals are used only for folios, but in order to be compliant with the package
% |hyperref|, I avoided using this new macro for folios; in other situations there are no 
% problems with the choice of font shapes and series. We need a robust command in order to
% set the script math size
%    \begin{macrocode}
\DeclareRobustCommand*{\simulatedSC}[1]{%
	{\check@mathfonts\fontsize{\sf@size}{\f@baselineskip}\selectfont#1}}%
%    \end{macrocode}
%
% A user, Antonio Mele, suggested and requested the possibility of having
% the figure and table names 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}
%
%
% \Finale
% \endinput
%
