summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/toptesi
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-10-22 19:50:59 +0000
committerKarl Berry <karl@freefriends.org>2017-10-22 19:50:59 +0000
commitb2fad8915b87bb45e4d3ffafd0f8119da45a921e (patch)
treef45834fea9954883b7fc8d5f4b85b956f7b6be4a /Master/texmf-dist/source/latex/toptesi
parent96c2540c6bcd6585ee23a0d384bea78715befec8 (diff)
toptesi (22oct17)
git-svn-id: svn://tug.org/texlive/trunk@45577 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/toptesi')
-rw-r--r--Master/texmf-dist/source/latex/toptesi/toptesi.dtx8730
1 files changed, 6932 insertions, 1798 deletions
diff --git a/Master/texmf-dist/source/latex/toptesi/toptesi.dtx b/Master/texmf-dist/source/latex/toptesi/toptesi.dtx
index c27fbef0194..7fde862f100 100644
--- a/Master/texmf-dist/source/latex/toptesi/toptesi.dtx
+++ b/Master/texmf-dist/source/latex/toptesi/toptesi.dtx
@@ -7,8 +7,8 @@
\preamble
______________________________________________________
- The TOPtesi package
- Copyright (C) 2005-2016 Claudio Beccari
+ The TOPtesi bundle
+ Copyright (C) 2015-2017 Claudio Beccari
All rights reserved
License information appended
@@ -16,7 +16,7 @@
\endpreamble
\postamble
-Copyright 2005-2016 Claudio Beccari
+Copyright 2005-2017 Claudio Beccari
Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
@@ -25,14 +25,14 @@ 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, topcoman.sty,
-toptesi.cfg, and the English documentation toptesi.pdf.
+the manifest.txt file, and the derived files:
+ toptesi.cls, toptesi.sty, topfront.sty, topcommand.sty,
+ toptesi-scudo.sty, toptesi-scudo.def, toptesi.cfg, and the
+ English documentation toptesi.pdf.
Furthermore the bundle contains the documentation source
-file toptesi-it-pdftex.tex and the derived file
-toptesi-it-pdftex.pdf.
+file toptesi-it.tex and the derived file
+toptesi-it.pdf.
The toptesi-example.tex source file is just an example
that shows how to use the various commands; by commenting
@@ -43,19 +43,27 @@ The topfront-example.tex source file is an example of how
to produce just the title page with TOPtesi and the external
package frontespizio.
+The toptesi-scudo-example.tex source file is an example
+that shows the particular features available with TOPtesi,
+when a doctoral thesis is produced for the SCUola di
+DOttorato (ScuDo) of Politecnico di Torino.
+
The toptesi.cfg file is a sample of a local configuration
file that can be copied to another file and its copy freely
-edited and customized.
+edited and customised.
By running pdflatex on toptesi.dtx the user gets the class,
-sty and cfg files and the English documentation file in
-pdf format.
+sty, def and cfg files and the English documentation file in
+PDF format.
The source file of the Italian documentation file
-toptesi-it-pdftex.pdf is another example of how to use TOPtesi.
-In spite of its name, toptesi-it-pdftex.tex may be typeset
-with pdfLaTeX, XeLaTeX, and LuaLateX; see the first comment
-lines of the file for how-to information.
+toptesi-it.pdf is another example of how to use TOPtesi.
+This file toptesi-it.tex may be typeset with pdfLaTeX,
+XeLaTeX, and LuaLateX; see the first comment lines of
+the file for how-to information. In spite of being mainly
+written in Italian, it contains several sections in English
+for the benefit of foreign students attending the Doctoral
+School of Turin.
\endpostamble
\askforoverwritefalse
@@ -65,6 +73,11 @@ lines of the file for how-to information.
\file{topcoman.sty}{\from{toptesi.dtx}{topcmn}}
\file{topfront.sty}{\from{toptesi.dtx}{topfrn}}
\file{toptesi.cfg}{\from{toptesi.dtx}{topcfg}}
+ \file{toptesi-scudo.sty}{\from{toptesi.dtx}{topscu}}
+ \file{toptesi-monografia.sty}{\from{toptesi.dtx}{topmon}}
+ \file{toptesi-sss.sty}{\from{toptesi.dtx}{topsss}}
+ \file{toptesi-magistrale.sty}{\from{toptesi.dtx}{topmag}}
+ \file{toptesi-dottorale.sty}{\from{toptesi.dtx}{topdoc}}
}
\def\tmpa{plain}
@@ -72,7 +85,7 @@ lines of the file for how-to information.
\endgroup
%</internal>
%
-% Copyright 1989--2015 Claudio Beccari
+% Copyright 1989--2017 Claudio Beccari
%
% This file is part of the TOPtesi bundle
% -------------------------------------------
@@ -90,15 +103,15 @@ lines of the file for how-to information.
% 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.
+% The set of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is created by the self unpacking file toptesi.dtx
+% which is the principal part of the distribution.
%
% \fi
%
% \iffalse
%^^A The following trick uses the same date for every file header.
-%<class,topsty,topcmn,topfrn>\NeedsTeXFormat{LaTeX2e}[2015/01/01]
+%<class,topsty,topcmn,topfrn,topscu,topmon,topsss,topmag>\NeedsTeXFormat{LaTeX2e}[2016/01/01]
%<*driver>
\ProvidesFile{toptesi.dtx}[%
%</driver>
@@ -106,13 +119,23 @@ lines of the file for how-to information.
%<topsty>\ProvidesPackage{toptesi}[%
%<topcmn>\ProvidesPackage{topcoman}[%
%<topfrn>\ProvidesPackage{topfront}[%
-%<*driver,class,topsty,topcmn,topfrn>
-2016/11/25 v.5.9.06
+%<topscu>\ProvidesPackage{toptesi-scudo}[%
+%<topmon>\ProvidesPackage{toptesi-monografia}[%
+%<topsss>\ProvidesPackage{toptesi-sss}[%
+%<topmag>\ProvidesPackage{toptesi-magistrale}[%
+%<topdoc>\ProvidesPackage{toptesi-dottorale}[%
+%<*driver,class,topsty,topcmn,topfrn,topscu,topmon,topsss,topmag,topdoc>
+2017/10/22 v.~6.1.09
%<class>Class for typesetting university theses]
%<topsty>Extension for toptesi.cls]
%<topcmn>Additional commands for the TOPtesi bundle]
%<topfrn>Title page for TOPtesi and other classes]
-%</driver,class,topsty,topcmn,topfrn>
+%<topscu>Extension for ScuDo theses]
+%<topmon>Bachelor degree title page]
+%<topsss>High school title page]
+%<topmag>Master degree title page]
+%<topdoc>Ph.D. degree title page]
+%</driver,class,topsty,topcmn,topfrn,topscu,topmon,topsss,topmag,topdoc>
%<*driver>
]
%</driver>
@@ -123,10 +146,87 @@ lines of the file for how-to information.
\date{\fileversion\space--- \filedate}
\author{Claudio Beccari\thanks{E-mail: \texttt{claudio dot beccari at gmail dot com}}}
-\usepackage{metalogo,multicol}
+\usepackage{metalogo,multicol,enumitem,xspace,
+ xparse,curve2e,etoolbox,textcomp}
+\let\originalmeta\meta
+\renewcommand\meta[1]{{\normalfont\originalmeta{#1}}}
\def\prog#1{\textsf{#1}}
\def\pack#1{\textsf{\slshape#1}}
\def\env#1{\textit{#1}}\let\amb\env
+\def\file#1{\texttt{#1}}
+\def\marg#1{{\normalfont\texttt{\{}\meta{#1}\texttt{\}}}}
+\def\Marg#1{{\texttt{\{#1\}}}}
+\def\opz#1{{\normalfont\textsl{#1}}}
+\def\oarg#1{{\normalfont\texttt{[\meta{#1}]}}}
+\def\Oarg#1{{\normalfont\texttt{[#1]}}}
+\def\parg#1{{\normalfont\texttt{(\meta)}}}
+\def\Parg#1{{\normalfont\texttt{(#1)}}}
+\def\TeXLive{TeXLive\xspace}
+\def\pdfLaTeX{pdf\/\LaTeX\unskip\xspace}
+\newcommand*\Bambiente[1]{\texttt{\char92begin}\Marg{#1}}
+\newcommand*\Eambiente[1]{\texttt{\char92end}\Marg{#1}}
+\DeclareRobustCommand\sigla[1]{\lowercase{\textsc{#1}}}
+\newenvironment{ttsintassi}{\flushleft\ttfamily\obeylines}{\endflushleft}
+%
+%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+% Some macros to typeset a framed box of natural or specified
+% width and height within the picture environment.
+% Needs packages curve2e, etoolbox, and xparse.
+% Syntax:
+% \Zbox(<position>)(<dimensions>)[<alignment>]{<box contents>}
+% The first and fourth arguments are mandatory; the second
+% and third arguments are optional; their default values are
+% (0,0) and [bl]. Furthermore the <position> and <dimension>
+% values are a comma separated pair of numbers representing
+% measures in \unitlength units, as well as it is done within the
+% picture environment. No provision is coded to take the measure
+% of the <box contents>. This contents should be some text, and when
+% <dimensions> are specified larger than zero, a \parbox is used
+% to typeset it. The <alignment> value(s) define the reference point
+% that is \put at the <position> coordinates.
+%
+\def\TOPsplitArgs(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}
+
+\NewDocumentCommand\Zbox{R(){0,0} D(){0,0} O{bl} m}{%
+\TOPsplitArgs(#2)\ZboxX\ZboxY % separa la x e la y della scatola
+\fboxsep=2\unitlength
+\ifnum\ZboxX=\csuse{z@}
+ \def\ZTesto{\fbox{#4}}%
+\else
+ \ifnum\ZboxY=\csuse{z@}
+ \def\ZTesto{\fbox{\parbox{\ZboxX\unitlength}{#4}}}%
+ \else
+ \def\ZTesto{%
+ \setbox2560=\hbox{\fbox{%
+ \parbox[c][\ZboxY\unitlength][c]{\ZboxX\unitlength}{#4}}}%
+ \dimen2560=\dimexpr(\ht2560 +\dp2560)/2\relax
+ \ht2560=\dimen2560\relax
+ \dp2560=\dimen2560\relax
+ \box2560%
+ }%
+ \fi
+\fi
+\put(#1){\makebox(0,0)[#3]{\ZTesto}}}
+
+\NewDocumentCommand\fileicon{R(){0,0} m}{%
+\put(#1){\moveto(0,-10)
+\curveto(7.5,-10)(7.5,-7.5)(15,-7.5)
+\lineto(15,10)
+\curveto(7.5,10)(7.5,7.5)(0,7.5)
+\lineto(0,-10)
+\strokepath}\put(#1){\put(7.5,0){\makebox(0,0){\ttfamily#2}}}
+}
+
+\def\ifTOPnextchar{\csuse{@ifnextchar}}
+
+\def\polyvector(#1){\def\TOPlastpoint{#1}\TOPpolyvector}
+
+\def\TOPpolyvector(#1){\ifTOPnextchar({\segment(\TOPlastpoint)(#1)%
+\def\TOPlastpoint{#1}\TOPpolyvector}{\VECTOR(\TOPlastpoint)(#1)}} % )
+
+
+%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
\begin{document}\errorcontextlines=9
\maketitle
\begin{multicols}{2}
@@ -138,402 +238,994 @@ lines of the file for how-to information.
%</driver>
% \fi
%
-% \CheckSum{2847}
+% \CheckSum{7520}
%
% \begin{abstract}
-% This file describes the TOPtesi bundle; it is a set of files designed to
-% typeset 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\
-% and the \LuaLaTeX\ programs. 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; this is due to the fact that the typesetting engine \XeTeX\
-% does not produce directly any PDF output but a modified, extended DVI
-% output, that is immediately converted into a PDF file through xdvipdfmx,
-% a special version 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 features.
+% This file describes the TOPtesi bundle; it is a set of files
+% designed to typeset 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 compliant with the \XeLaTeX\ and the \LuaLaTeX\
+% programs. 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 \opz{pdfa} cannot be used any more; this is due to the
+% fact that the typesetting engine \XeTeX\ does not directly
+% produce any \sigla{PDF} output but a modified, extended DVI one,
+% that is immediately converted into a \sigla{PDF} file through
+% |xdvipdfmx|, a special version 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 font properties replaces almost completely
+% such missing |microtype| features.
+%
+% With version~6.xx, the bundle has been modularised in a (hopefully)
+% more efficient way, although it is backwards compatible, so that
+% version~5.xx functionalities are still available.
+%
+% A totally new module is the one that allows to typeset the Italian
+% high school ``tesina'', a document that is examined by the
+% graduation exam committee at the end of secondary studies.
+%
+% The user should not be scared by the number of pages of this
+% documentation; s/he should read part of the first 31 pages,
+% those that concern his/her thesis. The rest is just the code
+% and its documentation; it is useful mostly for me, as the
+% author, and to other programmers and/or curious users.
+% The ``normal'' user should not spend his/her time to read
+% unnecessary information.
% \end{abstract}
%
+% \section{History}
+% The TOPtesi bundle at its very beginning in the early nineties
+% was just one |.sty| file to ben used with the|report| class.
+% At that time there was only \LaTeX{\,209} and extension
+% packages were called ``style files''; The |.sty| extension
+% is still used to day for backwards compatibility, but |.sty|
+% files are not any more used to change the style of the document.
+%
+% With version 2.x, suitable for \LaTeXe, the bundle was
+% modified in order to have a class of its own,
+% |toptesi.cls|, which provided to collecting the necessary
+% options and to pass them to the |report| class and
+% loaded the |toptesi.sty| just afterwords.
+% The latter file was not monolithic any more; it was split
+% in three parts: |toptesi.sty| contained most settings and
+% the macros to be used in the body of the document;
+% |topfront.sty| provided the commands for entering all the
+% necessary and optional data for the frontispiece (or title
+% page) and actually typeset the title page in different
+% styles; |topcoman.sty| contained the definitions of several
+% useful commands; actually this module could be used without
+% reference to the TOPtesi bundle, being suitable as an
+% extension to any class.
+% The general scheme may be represented by the flow diagram in figure~\ref{fig:simple-flow-diagram}.
+%\begin{figure}\centering
+%\unitlength=0.00925\textwidth
+%\begin{picture}(106,20)
+%\fileicon(0,10){.tex}\VECTOR(15,10)(20,10)
+%\Zbox(20,10)(18,0)[l]{\ttfamily toptesi.cls\\toptesi.sty}\VECTOR(41.5,10)(47,10)
+%\Zbox(47,10)[l]{\ttfamily topfront}\VECTOR(63.5,10)(70,10)
+%\Zbox(70,10)[l]{\ttfamily topcoman}\VECTOR(86.5,10)(91,10)
+%\fileicon(91,10){.pdf}
+%\end{picture}
+%\caption{Quasi original TOPtesi bundle flow diagram}
+%\label{fig:simple-flow-diagram}
+%\end{figure}
+%
+% Version 3.x was modified, on request of several users, in
+% order to avoid the |toptesi.cls| class file, but to allow
+% the other files, from |toptesi.sty| on, to be used with
+% any standard or custom class.
+%
+% On request of other users, after other upgrades, the bundle was
+% upgraded to version 5.85; the purpose was to introduce the
+% possibility of typesetting the thesis title page with a package
+% totally independent from the TOPtesi bundle. In particular the
+% |frontespizio| package by Enrico Gregorio was considered
+% a fancy choice for most Italian user, but the approach
+% was open to any other package. The choice was made by
+% setting suitable switches (boolean variables). The solution
+% opened the bundle to other external contributions, although
+% the mechanism was sort of tricky. The bundle was made
+% compatible with other packages, for example |caption|
+% and/or |geometry|, while before such packages produced
+% options clashes and or other errors, so that their use
+% was explicitly forbidden. Meanwhile the |topfront| module
+% was configured to be loaded just after the preamble end,
+% so as to be able to check if the user loaded packages
+% required special special attention in order to avoid conflicts;
+% see figure~\ref{fig:toptesi+frontspizio}.
+%
+%\begin{figure}\centering\unitlength=0.009\textwidth
+%\begin{picture}(115,45)(0,-3)
+%\fileicon(0,10){.tex}\VECTOR(15,10)(20,10)
+%\Zbox(20,10)(18,0)[l]{\ttfamily toptesi.cls\\toptesi.sty}
+%\Zbox(20,30)(18,0)[l]{\centering\ttfamily user loaded\\packages}
+%\VECTOR(42,10)(50,10)
+%\VECTOR(31,23)(31,15)
+%\polygon(50,10)(55,5)(60,10)(55,15)
+%\polyvector(55,5)(55,0)(60,0)
+%\Zbox(60,0)[l]{\ttfamily topfront}
+%\polyvector(55,15)(55,20)(60,20)
+%\Zbox(60,20)[l]{\ttfamily frontespizio}
+%\VECTOR(42,30)(47,30)\put(49,30){\circle{4}}\VECTOR(51,30)(60,30)
+%\polyvector(42,12)(49,12)(49,28)
+%\Zbox(60,30)[l]{\ttfamily topcoman}
+%\put(87,10){\circle{4}}\VECTOR(89,10)(95,10)
+%\polyvector(84,20)(87,20)(87,12)
+%\polyvector(77,0)(87,0)(87,8)
+%\polyvector(77,30)(90,30)(90,15)(95,15)
+%\fileicon(95,10){.pdf}
+%\end{picture}
+%\caption{Advanced TOPtesi bundle flow diagram}
+%\label{fig:toptesi+frontspizio}
+%\end{figure}
+%
+% Version 5.x introduced a new feature; the specific settings
+% for the doctoral theses written at Politecnico di Torino
+% (Technical Institute od Turin); after all the bundle was
+% born in that university. The switching mechanism to select
+% the various thesis title page settings still worked with
+% suitable boolean variables, but it was becoming a little
+% too clumsy.
+%
+% In order to put some order in this situation I decided to
+% upgrade to version 6.x; the class options now use the
+% \emph{key\,$=$\,value} syntax (of course the value
+% |true| is the default setting for boolean variables).
+% This allows to select the thesis type with a
+% \emph{key\,$=$\,value} option, therefore the selection and
+% configuration of the title page should be simpler than before.
+%
+% The new situation flow diagram is represented in
+% figure~\ref{fig:key-value-option}; the diagram is
+% complicated but, once selected a specific option
+% for the thesis type, the diagram reduce to a linear one.
+%
+%\begin{figure}[p]\centering
+%\unitlength=0.008\textwidth
+%\begin{picture}(112.5,140)
+%\fileicon(0,33){.tex}
+%\polyvector(15,33)(20,33)(20,48)(0,48)(0,58)(5,58)
+%\Zbox(5,58)(18,0)[l]{\small\ttfamily toptesi.cls\\toptesi.sty}
+%\VECTOR(27,58)(32,58)
+%\put(36.5,57){\rotatebox[origin=Bl]{90}{%
+% \makebox(0,0){\fboxsep=2\unitlength
+% \framebox(116,9){\parbox[c][5\unitlength][c]{112\unitlength}%
+% {\centering Options\\\texttt{tipotesi\,=\,}\emph{value}}}}}}
+%\VECTOR(41,6)(45,6)\Zbox(45,6)(25,0)[l]{%
+%\centering\texttt{topfront} (\emph{default})}
+%\VECTOR(41,22)(45,22)\Zbox(45,22)(31,0)[l]{\centering\texttt{toptesi-triennale}}
+%\VECTOR(41,37)(45,37)\Zbox(45,37)(33,0)[l]{\centering\texttt{toptesi-magistrale}}
+%\VECTOR(41,52)(45,52)\Zbox(45,52)(31,0)[l]{\centering\texttt{toptesi-dottorale}}
+%\VECTOR(41,67)(45,67)\Zbox(45,67)(31,0)[l]{\centering\texttt{toptesi-scudo}}
+%\VECTOR(41,81)(45,81)\Zbox(45,81)(32,0)[l]{\centering\texttt{toptesi-sss}}
+%\VECTOR(41,96)(45,96)\Zbox(45,96)(32,0)[l]{\centering\texttt{frontespizio}}
+%\VECTOR(41,111)(45,111)\Zbox(45,111)(32,0)[l]{\centering\texttt{custom}}
+%\Zbox(5,129.5)(18,0)[l]{\centering\ttfamily user loaded\\packages}
+%\VECTOR(16,122)(16,63.5)
+%\VECTOR(27,129,5)(35,129.5)\put(37,129.5){\circle{4}}
+%\VECTOR(39,129.5)(45,129.5)
+%\Zbox(45,129.5)(16,0)[l]{\centering\ttfamily topcoman}
+%\polyvector(27,61)(29,61)(29,120)(37,120)(37,127.5)
+%\put(90,67){\circle{4}}\VECTOR(92,67)(97.5,67)
+%\polyvector(65,129.5)(93,129.5)(93,70)(97.5,70)^^A topcomand
+%\polyvector(81,111)(90,111)(90,69)^^A custom
+%\polyvector(81,96)(88,96)(88,72)(89,68.4)^^A frontespizio
+%\polyvector(81,81)(86,81)(86,70)(88.4,68.2)^^A secondaria
+%\VECTOR(80,67)(88,67)^^A scudo
+%\polyvector(80,52)(86,52)(86,63)(88.4,65.6)^^A dottorale
+%\polyvector(82,37)(88,37)(88,60)(89,65.2)^^A magistrale
+%\polyvector(80,22)(90,22)(90,65)^^A triennale
+%\polyvector(74,6)(92,6)(92,62)(91,65.1)^^A topfront
+%\fileicon(97.5,68.5){.pdf}
+%\end{picture}
+%\caption{Version 6.x TOPtesi bundle flow diagram}
+%\label{fig:key-value-option}
+%\end{figure}
+%
+% Special care was paid to maintain backwards compatibility;
+% the various (|.sty| module files with descriptive names)
+% should be usable also with other classes, if desired.
+% It is possible to specify a |custom| value for a thesis type;
+% in this case the user is required to explicitly load his/her
+% personal package, or to avoid loading anything and use
+% either a different typesetting program to produce a title
+% page (in \sigla{pdf} format to be included by means of
+% the |pdfpages| package), or even create his/her personal
+% title page by means of the standard |titlepage| environment.
+%
+% All this implied the rewriting of both the English and
+% Italian documentation files; the user can find useful
+% information in the English file |toptesi.pdf| included
+% in the bundle; this file is pretty lengthy because it
+% contains also the documented code. The Italian documentation
+% in |toptesi-it.pdf|, is also part of this bundle; it is
+% partly written in English for the benefit of the many foreign
+% students that study in the doctoral school of Politecnico di
+% Torino); it contains many examples enriched with graphic
+% ``demonstrations''. These two documentation files complement
+% one another.
+%
% \section{Introduction}
% The TOPtesi bundle contains a certain number of files.
-% \begin{enumerate}
-% \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 other classes,
-% although this use is seldom necessary.
-% \item A second extension package \texttt{topfront.sty} that contains 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. This package is part of the bundle, but it is
-% automatically loaded only if the user did not specify the class option
-% |noTOPfront| or its alias |usefrontespizio|; if this option is specified
-% the user is free to use whatever other external package s/he prefers in
-% order to typeset the tile page; in this case we suggest to use the package
-% |frontespizio| and we address the user to its documentation. It is important
-% to recall that if the |topfront| package has to be loaded, is is only at
-% the execution of the |\begin{document}| command. There fore no title page
-% commands of any kind (those defined by |topfront|) can be used in the preamble.
-% \item A third extension package \texttt{topcoman.sty} that defines a certain
-% number of user commands suitable for typesetting technical matters.
-% \item Previous versions of this bundle contained also the logos of a set 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-it-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-it-xetex.tex} may be used as a sample or template for
-% typesetting one's thesis with XeLaTeX.
+% \begin{enumerate}[noitemsep]
+% \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 triennale'', ``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 other classes, although this use is seldom necessary.
+% \item
+% A second extension package \texttt{topfront.sty} that contains
+% 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 or the book class files 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. This package is part of the bundle, but it is
+% automatically loaded only if the user did not specify the
+% |tipotesi=|\meta{thesis type} option to the class; if the
+% |toptesi=frontespizio| option is specified, the external package
+% |frontespizio| gets loaded; if the |toptesi=custom| option is
+% specified the user should everything by him/herself.
+% The |tipotesi=custom| is very tolerant; in the sense that the user
+% is allowed to avoid loading any custom package, and simply create
+% the title page by means of the standard |titlepage| environment.
+% \begin{itemize}[noitemsep]
+% \item \opz{tipotesi=triennale} (or \opz{monografia} for
+% backwards compatibility) for the bachelor degree final work;
+% \item \opz{tipotesi=magistrale} for the master thesis;
+% \item \opz{tipotesi=dottorale} for the Ph.D.\ thesis;
+% \item \opz{tipotesi=scudo} for the special version of the Ph.D.\
+% thesis at Politecnico di Torino;
+% \item \opz{tipotesi=secondaria} for the high school ``tesina'';
+% \item \opz{tipotesi=custom} for using another title page package,
+% possibly a customised one the user may create in
+% accordance with a certain template that implements his/her
+% university requirements.
+% \item \opz{tipotesi=frontespizio} for typesetting a
+% frontispiece according to the style of the |frontespizio|
+% package.
+% \end{itemize}
+% Without using a custom module, we suggest to use the package
+% |frontespizio| and we address the user to its documentation.
+%
+% It is important to recall that if the |topfront| package has
+% to be loaded, it is only at the execution of the |\begin{document}|
+% command. Therefore no title page commands of any kind (those
+% defined by |topfront| or the other modules) can be used in the
+% preamble.
+% \item
+% A third extension package \texttt{topcoman.sty} that defines
+% a certain number of user commands suitable for typesetting
+% technical matters.
+% \item
+% Several extension files are available:
+% \texttt{toptesi-\meta{module}.sty} where \meta{module} is one
+% of |monografia|, |magistrale|, |dottorale|, |scudo|, |sss|;
+% these are specifically designed to typeset particular
+% thesis kinds; |scudo| refers to the particular doctoral school
+% of Politecnico di Torino, whose official name is \emph{Scuola di
+% Dottorato}, whence the acronym ``ScuDo''. Such ScuDo theses must
+% be typeset in English only, and must have a special title page,
+% very different from the other title pages that can be typeset with
+% the various options of the TOPtesi bundle and by the
+% commands contained in the various modules. In all cases where
+% specific modules exists, a specific module option is available for
+% the class such that \texttt{topfront.sty} does not get loaded, and
+% another set of commands is made available to set up
+% the necessary information.
+% \item
+% Previous versions of this bundle contained also the logos of
+% a set of universities; these logos are not distributed anymore
+% because of legal constraints. Every user who is working on
+% his/her degree course final report may 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-it.pdf} written mostly
+% in Italian, explains in detail every feature; essential information
+% is given in this English documentation. The source file of the
+% documentation \texttt{toptesi-it.tex} may be used as a sample
+% or template for typesetting one's thesis with any of \pdfLaTeX,
+% \XeLaTeX, or \LuaLaTeX.
% \end{enumerate}
%
-% The above files are complemented with a configuration file that any user may
-% customise at will; this customisation file makes it easy to configure the
-% bundle so as to make it suitable for another language; in facts the
-% \textsf{babel} and \textsf{polyglossia} packages contain localisations
-% 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.
-% This customisation is usable only if no |noTOPfront| or |usefrontespizio|
-% option had been declared to the class.
-%
-% TOPtesi was specifically conceived for typesetting theses with the \LaTeX\ mark-up,
-% and initially it was using the \textsf{tex} typesetting engine; later on this engine
-% was substantially substituted by the \textsf{pdftex} one, 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 available to the
-% operating system of the specific platform where the document is being typeset.
-% For what concerns theses this might be of essential importance when the thesis
-% deals with specific languages that use different scripts (Greek, Russian,
-% Bulgarian, Chinese, Japanese, Korean, Hebrew, 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 that feedback
-% from users is particularly welcome. The only main drawback still present
+% The above files are complemented with a configuration file
+% that any user may customise at will; this customisation file
+% makes it easy to configure the bundle so as to make it suitable
+% for another language; in facts the \textsf{babel} and
+% \textsf{polyglossia} packages contain localisations 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. This configuration file is usable only
+% when no custom or external files are used for typesetting
+% the title page; but they may be used for all standard modules
+% of this bundle.
+%
+% TOPtesi was specifically conceived for typesetting theses
+% with the \LaTeX\ mark-up, and initially it was using the
+% \textsf{tex} typesetting engine; later on this engine was
+% substantially substituted by the \textsf{pdftex} one, which
+% was capable of direct output of \sigla{PDF} files. Since about 2006
+% the typesetting engine \XeTeX\ has been available; the most important
+% feature of this engine is its capability of using OpenType
+% fonts, among which those that are available to the
+% operating system of the specific platform where the document
+% is being typeset. Since 2017 a stable version of \LuaTeX\ is
+% available that does much more than \XeTeX.
+%
+% For what concerns theses these programs might be of essential
+% importance when they deal with specific languages that use
+% different scripts (Greek, Russian, Bulgarian, Chinese, Japanese,
+% Korean, Hebrew, Arabic, Farsi, Thai, and so on). Of course
+% \LuaLaTeX\ has many more functionalities and can perform very
+% well where the other engines are sort of limited; in particular
+% \LuaLaTeX\ can produce \sigla{ISO}-compliant archivable-documents more
+% easily than the other typesetting engines; but the user does not
+% have to learn too many more concepts in order to typeset a
+%``normal'' thesis.
+%
+% This version of TOPtesi has been tested also with \XeLaTeX\ and
+% \LuaLaTeX. Some conflicts have been spotted and solved; may
+% be there are still hidden ones, so that feedback from users
+% is particularly welcome. 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}.
+% \emph{directly} produce the output file in \sigla{PDF} format,
+% although it automatically transforms its specific output file
+% into that format.
+% This implies that the specific \textsf{pdftex} features required
+% to produce a \sigla{PDF/A} compliant output \sigla{PDF} file suitable for
+% long term archiving cannot be used. But with some attention the
+% \sigla{PDF} file output by \XeLaTeX\ may be converted to \sigla{PDF/A}
+% by using the \pack{pdfpages} package.
%
% \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 specialised 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
+% 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 specialised material: formulas,
+% diagrams and pictures, texts written in non Latin alphabets,
+% special symbols for philological mark-up, and the like; a
+% common typewriter would not be suitable and the quality of
+% the contents requires professional typesetting; this is why
+% I strongly believe that instructions on typesetting styles that
+% refer to the ``good old gone-by times'' of mechanical typewriters
% should be banned.
%
-% At the same time the class allows to typeset theses on any paper format;
-% nowadays, in facts, Universities are requesting theses in smaller formats
-% than A4 or letter paper. With smaller paper sizes the layout changes
-% automatically, but the title page might require some more attention. The
-% default paper size is A4, but the user can set any paper size among those
-% accepted by the |report| standard class. If the |noTOPfront| option
-% was specified and the package |frontepsizio| was loaded by the user, it
-% is necessary to remind that it can easily create pretty nice title pages, but
-% by default it is preset to use A4 paper where it can typeset the tytle page in
-% two styles, one so called ``standard'' and the other called ``elements'', that
-% mimics that of the famous book \emph{Elements of typographic style} by
-% Robert Bringhurst; this is so at least with |frontespizio|'s version
-% 1.4a of 2011/09/21 or earlier. It is possible to use |frontespizio| to use
-% a different paper size, but it's necessary to make use of certain
-% customisation commands described in its documentation.
-%
-% Therefore if you want to typeset your thesis while typesetting the title
-% page by means of the functionalities of package |frontespizio| you have
-% to follow carefully how to use that package's options in the proper way
-% as to bypass the two fixed styles it can produce.
-% See also the Italian documentation contained in the document |toptesi-it-xetex.pdf|.
-%
-% 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 class. If \XeLaTeX\ has to be
-% used, some essential preamble specific commands are to be used, but essentially
+% At the same time the class allows to typeset theses on any paper
+% format; nowadays, in facts, Universities are requesting theses
+% in smaller formats than A4 or letter paper. With smaller paper
+% sizes the layout changes automatically, but the title page might
+% require some more attention. The default paper size is A4, but
+% the user can set any paper size among those accepted by the
+% |report| standard class. If the \opz{tipotesi=frontespizio}
+% option was specified so that package |frontespizio| gets
+% loaded, it is necessary to remind that it can easily create
+% pretty nice title pages, but by default it is preset to use A4
+% paper where it can typeset the title page in two styles, one so
+% called ``standard'' and the other called ``elements'', that
+% mimics that of the famous book \emph{Elements of typographic
+% style} by Robert Bringhurst; this is so at least with
+% |frontespizio|'s version 1.4a of 2011/09/21 or earlier. It is
+% possible to use |frontespizio| to use a different paper size,
+% but it's necessary to use certain customisation commands
+% described in its documentation.
+%
+% Therefore if you want to typeset your thesis while typesetting
+% the title page by means of the functionalities of package
+% |frontespizio|, you have to follow carefully how to use that
+% package's options in the proper way as to bypass the two fixed
+% styles it can produce. See also the Italian documentation
+% contained in the document |toptesi-it.pdf|.
+%
+% 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 class. If \XeLaTeX\ or \LuaLaTeX\ has to be used,
+% some essential preamble specific commands are to be used, but
% the body of the thesis has the same mark-up.
%
+% For theses to be typeset for the ScuDo doctoral school,
+% all necessary commands become available when the class
+% option \opz{tipotesi=scudo} is specified; such commands are
+% available \emph{only} with that option. See the documentation
+% in the suitable section~\ref{sec:scudo}. Similarly see the suitable
+% sections for the special thesis modules available with their
+% specific options.
+%
% \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. This implies a manual build up of each end-of-chapter bibliography
-% by means off a specific |thebibliography| environment. This works may be
-% avoided if the user relies on the various packages already available in any
-% complete \TeX\ system distribution and the facilities offered by packages
-% such as \pack{biblatex} and sorting end formatting engines such as \prog{biber}.
-%
-% \Item[classica] Specifies a general modification of certain details that are
-% supposed to be more adequate for theses in humanities; specifically this option
-% lets old style numbers to be used for certain numerical pieces of information;
-% some variations are also introduced in the title page.
-%
-% \Item[cucitura] In two sided printing it is better to move the
-% typesetting grid towards the outer edges so as to cope with the thesis binding
-% that is generally not made up by sewing together a number of signatures;
-% the default outer displacement is fixed to~7mm, but it can be customised 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 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 ordinary 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.
-%
-% \Item[noTOPfront] allows the user to load a different package for
-% creating and typesetting the title page; of course if this option is
-% specified, the native package |topfront| is not loaded, and the commands
-% described in the next section are not available. On the opposite, commands available
-% with the chosen package become available, while possible package conflicts are
-% eliminated at the root.
-%
-% \Item[usefrontespizio] is basically equivalent to the previous option; both
-% options set up the |\ifTOPfront| switch that is more mnemonic than the long
-% (actually not defined) |\iffrontespizio| one; if it was defined, |\iffrontespizio|
-% would be true when |\ifTOPfront| is false.
+% The class accepts all the options accepted by the |report|
+% document class plus the ones defined here:
+% \begin{description}[noitemsep]\def\Item[#1]{\item[\opz{#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. This implies a manual build
+% up of each end-of-chapter bibliography by means off a specific
+% |thebibliography| environment. This work may be avoided if the
+% user relies on the various packages already available in any
+% complete \TeX\ system distribution and the facilities offered
+% by packages such as \pack{biblatex} and sorting and formatting
+% engines such as \prog{biber}. The use of this option, kept for
+% backwards compatibility, is strongly deprecated.
+%
+% \Item[classica] Specifies a general modification of certain
+% details that are supposed to be more adequate for theses in
+% humanities; specifically this option lets old style numbers to
+% be used for some numerical pieces of information; some variations
+% are also introduced in the title page. This option is active also
+% when using some of the modules for specific theses, in particular
+% with the \textsf{dottorale} thesis option.
+%
+% \Item[cucitura=\meta{displacement}] In two sided printing
+% it is better to move the typesetting grid towards the outer
+% edge 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
+% customised by means of a proper value to the class option
+% |cucitura=|\meta{displacement} or by using an explicit command
+% in the preamble: \cs{setbindingcorrection}\marg{displacement}.
+% The \meta{displacement} specification is necessary but it
+% remains inactive if the key \texttt{cucitura} is absent while
+% using the \cs{setbindingcorrection} command.
+%
+% \Item[corpo=\meta{font size}] Extends the normal size
+% choice to the chosen \meta{font size}; it is
+% appreciated in certain fields of humanities, but I would
+% discourage this use in a technical thesis, where 10 point
+% perhaps is too small, but 11 point or 12 point typesetting
+% may be adequate. In any case the \meta{font size} may be
+% specified in any units the \TeX\ system accepts, and any
+% value, even fractional, may be used. Please, do not
+% exaggerate with small sized normal fonts, where I would
+% say that 9.5pt is the absolute minimum acceptable size for
+% normal text. Do not exaggerate with large sizes; 14pt is
+% acceptable for certain theses where unusual signs are
+% used above or below some letter strings, otherwise 14pt
+% is already too much; let us say that 12.5pt or 13pt are
+% the maximum normally accepted; larger sizes are used only
+% for books to be used in the first years of the elementary
+% school or for people with various kinds of visual impairment.
+%
+% \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 \opz{classica} option has been specified, then
+% with this option (that is effectively working only with the
+% \opz{classica} option in force) it is possible to have even
+% numbered page 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
+% redefined so as to accept an optional short title, similarly
+% to the ordinary sectioning commands.
+%
+% \Item[oldstyle] Also this option works only if \opz{classica}
+% had already been specified; it typesets several numerical data
+% with the old style numbers.
+%
+% \Item[numerazioneromana] Sets the front matter folios in roman
+% numerals; if this option is not used, the folios are in roman
+% numerals and do not restart from~1 when the first main matter
+% chapter is typeset. The traditional roman numbering of front
+% matter folios had its explanation when typesetters used metal
+% type; therefore they could produce all the front matter material,
+% including reference, tables of contents, and the like, only
+% when the main matter was complete, corrected and stable.
+% Nowadays with electronic typesetting there is no need to need
+% to use this artifice, but in some disciplines it is still
+% highly appreciated.
+%\end{description}
+%
+% Since version 6.xx.yy options to the TOPtesi class have the
+% syntax \emph{key${}={}$value}; depending on the kind of thesis,
+% there there are some vlues that are particularly significant;
+% the key for all of them is |tipotesi| (\emph{thesis kind});
+% the values are indicated hereafter.
+%
+%\begin{description}[noitemsep]\def\Item[#1]{\item[\opz{#1}]}
+%
+% \Item[tipotesi-topfront] is the default and it is not necessary
+% to specify it. This means that if you specify |tipotesi| without
+% a value, or if you completely omit this option, the generic
+% |topfront| module is used to typeset the title page.
+%
+% \Item[tipotesi=frontespizio] omits loading the generic module
+% |topfront| and loads the external package |frontespizio|'
+% without any option; this implies that the user should read its
+% documentation and use it accordingly.
+%
+% \Item[tipotesi=scudo] sets up the suitable switches and allows
+% loading the specific extensions to typeset doctoral theses for
+% the ScuDo doctoral school. This implies that not only the title
+% page is typeset according to this School regulations, but that
+% some other packages get preloaded; the user can read further
+% on what actually becomes available with this option; the most
+% relevant difference is that the default language becomes English
+% also for the naming of the user commands..
+%
+% \Item[tipotesi=triennale] and \opz{tipotesi=monografia}
+% (aliases of one another) load the specific module to
+% typeset the bachelor degree final-work title-page. Some
+% user commands are redefined so as to be more user friendly
+% than those of the generic package |topfront|.
+%
+% \Item[tipotesi=magistrale] loads the specific module
+% to typeset the master degree thesis title-page. This module
+% is substantially equivalent to the generic module |topfront|
+% except that typesets only the master degree thesis title page.
+%
+% \Item[tipotesi=dottorale] loads the specific
+% module to typeset doctoral thesis title-pages. This module is
+% very basilar and has nothing to do with the module for the
+% ScuDo doctoral theses that require a particular title-page
+% layout; we suggest to customise this module through a suitable
+% configuration file, rather then tweaking the ScuDo module.
+%
+% \Item[tipotesi=secondaria] loads the module to typeset the
+% secondary school (high school) final work title page. The
+% default language, also for the user commands, is Italian.
+% Of course the secondary school final work title page is very
+% different from the one suited for university theses. In any
+% case, except for few additional packages, the body of the
+% TOPtesi functionality is maintained intact.
+%
+% \Item[tipotesi=custom]
+% is a very simple option: sets the various internal switches
+% so as not to load any internal module or external file.
+% If the user explicitly loads one before the |\begin{document}|
+% statement, this file becomes the one that the user must follow
+% to create his/her own title page; otherwise if the user wants
+% a custom title page s/he uses the |titlepage| environment;
+% in this case the user is completely free to write what s/he
+% wants, where s/he prefers, using the fonts s/he likes, and
+% so on. In alternative the user prepares the title page in
+% \sigla{pdf} format with some other program and includes it
+% in his/her thesis by means of the functionalities of the
+% |pdfpages| package. In any case the user is not forced by
+% this TOPtesi bundle to use any of its title page facilities.
+%
+% \item[Attention!] It goes by itself that each one of the last
+% options does not load the generic module |topfront|, therefore
+% the commands provided by this standard module are not available
+% any more. Every effort has been made in the various modules to
+% maintain the same commands, but in certain thesi kinds they
+% might behave differently than expected.
+%
+% The user therefore is strongly urged to consult the documentation
+% files, both |toptesi.pdf| and |toptesi-it.pdf|, in order to
+% avoid problems with commands that are not suited for a particular
+% thesis type. Please examine also the examples that accompany
+% this bundle
% \end{description}
%
% \subsection{Title page commands}
-% Note: Skip this section if you decide to load an external package for
-% the title~page. Notice also that if you want to load an external package for
-% typesetting the title page, you should load it \emph{after} specifying
-% the input encoding you use for your text files.\bigskip
-%
-% \noindent 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 ``final reports''; well, a university student might write a
-% bachelor's ``monografia'', then a master thesis and finally a doctoral dissertation;
-% why should s/he repeat his/her name, the name of the institution, and so on?
-%
-% All the user commands for the title page redefine default values or strings;
-% therefore if none of the required information is given, the default values and strings
-% are typeset, possibly with hilarious results\dots
-%
-% Since most users are supposed to be Italian, the user commands are mostly in Italian;
-% the following description gives their names and meanings; every command receives one
-% argument; only the command |\title| accepts an optional argument according to the usual
-% \LaTeX\ syntax:
+% Note: Skip this section if you decide to load an external
+% package, such as, for example, |frontespizio|, for typesetting the
+% title~page. Notice also that if you want to load an external
+% package for this task, you should load it \emph{after}
+% specifying the input encoding you use for your text files.\bigskip
+%
+% \noindent 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 ``final reports'': 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
+%
+% Except for the self made customised module for the title-page,
+% all the modules accept the same commands as those available in
+% the |TOPfront| module. Pay attention that some commands are
+% meaningless in certain theses, therefore do not reverse the
+% statement: for example the doctoral cycle command (|\cycle|)
+% is meaningless in a bachelor degree final-work title-page.
+%
+% Since most users are supposed to be Italian, the user commands
+% are mostly in Italian; the following description gives their
+% names and meanings; every command receives one argument; only
+% the command |\title| accepts an optional argument according to
+% the usual \LaTeX\ syntax:
% \[
% \makebox[0pt]{%
-% \texttt{\char92}\emph{command}\relax
-% \texttt{[}\emph{opt\_arg}\texttt{]}\relax
-% \texttt{\char123}\emph{req\_arg}\texttt{\char125}\relax
+% \texttt{\char92}\meta{command}\oarg{opt-arg}\marg{req-arg}\relax
% }
% \]
-% \begin{description}
+% Since the only language allowed in the ScuDo doctoral thesis is
+% English, all its commands are in English; this was done to help
+% the high number of foreign Ph.D. students in that school.
+% Therefore, for example, the general environment |frontespizio|
+% becomes |ThesisTitlePage|\footnote{Actually
+% \texttt{ThesisTitlePage} is a wrapper to a particular instance
+% of environment \texttt{frontespizio}. Similar wrappers are
+% defined in the other specific thesis modules.}. Except this
+% module, and, possibly, the personal customised module, the
+% other ones use mostly the same commands for the same purposes.
+%
+% \begin{description}[noitemsep]
% \def\cs#1{\texttt{\char92#1}}
% \def\Item[#1]{\item[\normalfont\cs{#1}]}
-% \item[\textnormal{\ttfamily fontespizio}] and \texttt{frontespizio*} are two
-% environments that typeset the title page with two opposite styles: with the
-% university logo in the header vs the university logo in the lower part of
-% the front page. The commands described in the following items shall be used
-% either in the configuration file or within the body of these environments.
-%^^A
-% \Item[frontespizio] {\tolerance=6000 Even if the above environments are
-% recommended, the
-% command |\frontespizio|, defined in the previous versions of the TOPtesi
-% bundle, is still usable. It typesets the title page according to the actual
-% status of the boolean |\topTPTlogos|; the user, before issuing the
-% |\frontespizio| command, may set this boolean by means of the |\topTPTlogostrue|
+% \item[\textnormal{\ttfamily frontespizio}] and
+% \texttt{frontespizio*} are two environments that typeset the
+% title page with two opposite styles: with the university logo
+% in the header vs the university logo in the lower part of the
+% front page. The commands described in the following items shall
+% be used either in the configuration file or within the body of
+% these environments.
+%
+% \Item[frontespizio] {\tolerance=6000 Even if the above
+% environments are strongly recommended, the command
+% |\frontespizio|, defined in the previous versions of the
+% TOPtesi bundle, is still usable. It typesets the title page
+% according to the actual status of the boolean |\topTPTlogos|;
+% the user, before issuing the |\frontespizio| command, may set
+% this boolean by means of the |\topTPTlogostrue|
% or |\topTPTlogosfalse|, or with either one of the commands
% |\booltrue{topTPTlogos}| and |\boolfalse{topTPTlogos}|.\par}
-%^^A
-% \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
+%
+% \Item[monografia] sets the bachelor's report style and retrieves
+% its title; the command\cs{titolo} that is not available for this
+% purpose with the standard module |TOPfront|, is available when
+% the specific module has been loaded by means of the
+% \opz{monografia} or \opz{triennale} options.
+%
+% \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
+% in another language is required, this macro is
+% available for specifying such position.
+%
+% \Item[relatore] gets the name of the thesis principal supervisor.
+%
+% \Item[secondorelatore] gets the name of the second supervisor,
+% if any.
+% \Item[terzorelatore] gets the name of the third supervisor,
+% if any; it is assumed that the number of
+% supervisors never exceeds three; in case follow
+% one of the tricks exemplified
+% in the example file \file{toptesi-example.tex} in
+% order to manage such situation.
+% \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.
+% 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. This command may be used also
+% for setting an Italian singular name when the
+% tricks exemplified in file
+% \file{toptesi-example.tex} are used.
% \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 labelling 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.
-% \Item[sedutadilaurea] gets the date of the final exam, or presentation, or defence
-% 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
-% next 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\textvisiblespace''
-% \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 or the files that contain
-% the university logos; 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.
-% A list of logos can be specified, useful when a thesis is
-% carried on in a multiple University environment
-% such as, for example, in a double degree Erasmus
-% program; or under the Erasmus Mundus program. The ``string'' of
-% logos is scaled properly so that they may fit in |\textwidth|.
-% \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
-% the binding correction. Its argument is not optional and is used to
-% modify the default correction of 7\,mm. Notice that 7\,mm is already
-% a large displacement; most often than not the binding correction is
-% unnecessary.
-% \Item[retrofrontespizio] with its argument, made up of one or several paragraphs,
-% defines what should be printed on the verso of the title page,
-% generally named ``copyright page''; if this command is specified
-% with an empty text or if it is not used at all, no copyright
-% page is assumed.
+% \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 labelling 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
+% option \opz{classica} the string becomes
+% ``Laureando:''; in other languages it is
+% necessary to specify this string in the proper
+% gender and number.
+% \Item[sedutadilaurea] gets the date of the final exam, or
+% presentation, or defence of the thesis; if this
+% date is omitted the default date is the current
+% month and year in the current language (generally
+% Itallian).
+% \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 next 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
+% iˀt 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 \opz{classica} is in force;
+% after all the command |\annoaccademico| is
+% defined only with that option. In any case, even
+% without the \opz{classica} option you can use
+% any string in the field of \cs{sedutadilaurea}.
+% \Item[logosede] specifies the name of the file or the files that
+% contain the university logos; 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. A list of logos can be specified, useful
+% when a thesis is carried on in a multiple
+% University environment such as, for example, in
+% a double degree Erasmus program; or under the
+% Erasmus Mundus program. The ``string'' of
+% logos is scaled properly so that they may fit
+% in |\textwidth|.
+% \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 the binding
+% correction. Its argument is not optional and is
+% used to modify the default correction of 7\,mm.
+% Notice that 7\,mm is already a large
+% displacement; most often than not the binding
+% correction is unnecessary.
+% \Item[retrofrontespizio] with its argument, made up of one or more
+% paragraphs, defines what should be printed on the
+% verso of the title page, generally named
+% ``copyright page''; if this command is specified
+% with an empty text or if it is not used at all,
+% no copyright page is assumed.
% \end{description}
%
-% Since the infix strings are all memorised 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 localise the package in another language;
-% this comes particularly handy for the Erasmus students on double degree programs.
+% Since the infix strings are all memorised 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 localise 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 and the copyright page are contained in the
+% package \texttt{topfront.sty}, which can be used as an autonomous
+% extension to the \texttt{report} document class. One could easily
+% typeset either just the title page with a separate \TeX\ source
+% so as to test the completeness of the commands and coherence of the
+% configuration file, or for just printing the isolated title and
+% copyright pages (if any). The same applies if you use the special
+% modules for each thesis type.
+%
+% \section{ScuDo doctoral theses}\label{sec:scudo}
+% Theses at the ScuDo doctoral school require special facilities
+% that are described in the code description section; here we
+% focus on the title page.
+%
+% The title page for such special theses is typeset by making
+% use of a specific environment within which the following
+% commands are available to set up the necessary information.
+% \begin{description}[noitemsep]
+% \def\cs#1{\texttt{\char92#1}}
+% \def\Item[#1]{\item[\normalfont\cs{#1}]}
%
-% As a final remark notice that the commands for typesetting the title page and the
-% copyright page are contained in the package \texttt{topfront.sty}, which can be used
-% as an autonomous extension to the \texttt{report} document class. One could easily
-% typeset either 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 and copyright pages (if any).
+% \item[\normalfont\ttfamily ThesisTitlePage] is the environment
+% within which the title page data are specified; some data are
+% preset to default values; some data receive global definitions
+% so that they remain available for setting up some metadata.
+% In the following every command with its argument is described
+% and it is specified which is the preset value, if any. If a
+% preset value is specified, the user does not need to use the
+% command, unless s/he wants to change the preset value. If an
+% empty preset value is specified, the command and its value
+% may be optional; but personal data are never preset because
+% they are, obviously, mandatory.
+%
+% \Item[PhDschoolLogo]\marg{logo file name} (preset: Logo-Scudo)
+% selects an image
+% specified by \meta{logo file name} to insert the school logo;
+% a file logo \file{Logo-Scudo.jpg} is available from the ScuDo
+% doctoral school; the students must ask such logo file from
+% the Secretary Office, because such file is legal property of
+% the School and can be used only with permission. In any case
+% the logo file must be of one of the allowed formats: \sigla{PDF}, \sigla{EPS},
+% \sigla{JPG}, \sigla{PNG}; vector files are generally preferred, but they
+% might not be available; raster files should be of a minimum
+% definition of 150 pixel per inch.
+%
+% \Item[Ndissertation]\marg{dissertation name} (preset: Doctoral
+% Dissertation) Specifies the specific name of the document.
+%
+% \Item[Ndoctoralprogram]\marg{doctoral program} (preset: Doctoral
+% Program in) specifies the degree course name prefix.
+%
+% \Item[ProgramName]\marg{program name} (mandatory: preset empty)
+% specifies the degree course name.
+%
+% \Item[CycleNumber]\meta{ordinal number} (optional; preset
+% empty) specifies the ordinal number of the program cycle; at
+% ScuDo it is a mandatory information. In other doctoral schools
+% it might be useless.
+%
+% \Item[title]\marg{dissertation title} (preset empty) sets the
+% specific title of the dissertation; it is better to keep it
+% short, and use the sub title to add further titling information.
+%
+% \Item[subtitle]\marg{dissertation subtitle} (optional: preset
+% empty) adds a possible subtitle.
+%
+% \Item[author]\marg{author's name} (mandatory: preset
+% empty); it is recommended to pay attention to insert proper
+% name(s) first and surname(s) second.
+%
+% \Item[Nsupervisor]\meta{Supervisor(s) heading} (preset:
+% Supervisor:) specifies the short heading labelling the list
+% of supervisors; the preset value is singular and followed by
+% a colon. In case of more than one supervisor, it is necessary
+% to specify a plural name; the colon mark is optional.
+%
+% \Item[SupervisorList]\marg{list of supervisors} (mandatory:
+% preset empty) specifies the list of supervisors, one per line,
+% with a |\\| at the end of each line; the name(s) and surname(s)
+% are preceded by their academic title, and followed by their
+% role as supervisor, or co-supervisor.
+%
+% \Item[NExaminationCommittee]\marg{examination committee
+% heading} (preset: Doctoral Examination Committee:) specifies
+% the heading of the list of examiners.
+%
+% \Item[ExaminerList]\marg{list of examiners} (preset empty)
+% specifies the list of examiners, one per line, each line
+% terminated by |\\|; each line contains the academic title,
+% the name(s) and surname(s), the role (referee for the
+% supervisors; nothing for the other examiners), the academic
+% institution they belong to -- full official institution name,
+% city and country.
+%
+% \Item[Nlocation]\marg{examination location} (preset:
+% Politecnico di Torino) specifies the institution where the
+% examination takes place.
+%
+% \Item[ExaminationDate]\marg{examination date} (preset empty)
+% specifies the date when the examination is to take place.
+%
+% \Item[Disclaimer]\marg{disclaimer statement} (preset: some long
+% sentences agreed upon by the ScuDo doctoral school) mandatory
+% in most universities; the specific statement(s) may be different
+% in different universities.
+%
+% \Item[Signature]\marg{the author's signature} (preset: a few
+% lines where the city is preset to ``Turin'', and the date is
+% assumed to be equal to the examination date; also the signer
+% name is assumed equal to that of the dissertation author)
+% specifies a different layout of the signature field.
+%
+% \end{description}
+% Several examples of thesis title-page are shown in the
+% \texttt{toptesi-it.pdf} Italian"-English documentation.
%
% \subsection{Typesetting commands}
-% The TOPtesi 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}
-% package.
-% 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} in
-% \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 main language. An initial
-% specification of |\selectlanguage{english}| sets the English language as the 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 then start the document by specifying |\selectlanguage{french}|.
-% But the user should pay attention to use \texttt{babel} in the proper way.
-% \begin{enumerate}
-% \item Due to the way \LaTeX\ classes load the requested 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 a global class options; so if the
-% thesis has to be typeset, for example, in French, is is necessary to do the following:
+% The TOPtesi 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}
+% package. If the source thesis file is being typeset by means
+% of \XeLaTeX\ and \LuaLaTeX\ the \texttt{babel} package is not
+% loaded; in its place the \texttt{polyglossia} package gets
+% loaded that should implement in \XeLaTeX\ and \LuaLaTeX\ most of
+% the functionality provided by \texttt{babel} in \LaTeX.
+% ``Most'' means that not all the functionality is available,
+% therefore it is 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 main language. Only with the \opz{scudo} option
+% in force, the main language is English. An initial specification
+% of |\selectlanguage{english}| sets the English language as the
+% default (unnecessary when \opz{scudo} is in force).
+%
+% Should a student typeset the thesis in French by means of
+% \prog{pdflatex}, it would be necessary to specify the option
+% \opz{french} among the \emph{class} options, and then start
+% the document by specifying |\selectlanguage{french}|.
+% But the user should pay attention to use \texttt{babel} in the
+% proper way.
+% \begin{enumerate}[noitemsep]
+% \item Due to the way \LaTeX\ classes load the requested 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 a global
+% class options; so 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:
+% But if the thesis should be typeset in French by means of
+% \XeLaTeX\ or \LuaLaTeX, then it is perfectly legal to specify the
+% auxiliary language in this way:
%\begin{verbatim}
%\documentclass[...]{toptesi}
%\setotherlanguage{french}
@@ -541,361 +1233,1276 @@ lines of the file for how-to information.
%\begin{document}
%\selectlanguage{french}
%\end{verbatim}
-% \item With the 2010 \TeX\ system complete 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
-% the list of all language hyphenation rules that are available in the format file is
-% being shown.
-% While (American) English is the default language and almost any \emph{basic}
-% distribution of the \TeX\ system has several preloaded languages, 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 in
-% order to preload the languages s/he wants to work with, and finally s/he must
-% recreate the format files.
-% The user is invited to carefully investigate on these fine points and to properly
-% configure the system; 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.
+%
+% \item With the 2010 \TeX\ system complete distributions,
+% both \TeXLive and MiKTeX, all language hyphenation rules
+% known (to \LaTeX) 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. On the opposite \LuaLaTeX\
+% loads the hyphenation rules at run time and only for the
+% declared languages for the current document.
+%
+% 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 the list of all language hyphenation
+% rules that are available in the format file is being shown.
+%
+% While (American) English is the default language and almost
+% any \emph{basic} distribution of the \TeX\ system has several
+% preloaded languages, 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 in order to preload the
+% languages s/he wants to work with, and finally s/he must recreate
+% the format files.
+%
+% The user is invited to carefully investigate on these fine
+% points and to properly configure the system; it would be very
+% upsetting to use fine software to produce a perfectly typeset
+% thesis that, unfortunately, has wrong hyphenation points!
+% Luckily enough, most 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{enumerate}
%
-% 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 fulfil 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 another
+% 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
+% fulfil some (not all) \sigla{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 another
% 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.
+% \texttt{topcoman.sty} such useful commands should remain available
+% with every language. The \texttt{polyglossia} package does not
+% produce any useful additional command for writing in an almost \sigla{ISO}
+% compliant way\footnote{Nevertheless, when typesetting with
+% \XeLaTeX\ or \LuaLaTeX\ and using OpenType fonts, even for
+% typesetting math, the calling of the |unicode-math| package
+% with option \opz{mathstyle=\sigla{ISO}} lets you typeset in an \sigla{ISO}
+% compliant way almost everything you need.}, therefore the macros
+% contained in the \texttt{topcoman.sty} package may come very handy.
%
% The following description specifies these particular commands.
-% \begin{description}
+% \begin{description}[noitemsep]
% \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.
-% %
+%
+% \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 actually taken from the math italic alphabet,
+% instead of the default roman one. This command is useful with
+% \LaTeX, while with \XeLaTeX\ and \LuaLaTeX\ it is unnecessary
+% due to the larger set of math alphabets and math font commands
+% that are available with proper \sigla{UNICODE} math fonts and
+% options.
+%
% \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[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 anything that is not a variable, from the names of
-% functions (such as sin, cos, log, etc.), to the indices that contain
-% information on something that is not variable. This means that $V_i$
-% requires an italic index to imply that the object $V$ is the $i$-th in
-% a set, while, say, $V_{\mathrm{max}}$ indicates the maximum value of the
-% variable $V$. This command |\ped| may be used in both math and text mode.
+% \Item[ped] inserts an index/subscript in upright type; the \sigla{ISO}
+% regulations require the use of italics for physical or
+% mathematical variables, and upright type for anything that
+% is not a variable, from the names of functions (such as sin,
+% cos, log, etc.), to the indices that contain information
+% on something that is not variable. This means that $V_i$
+% requires an italic index to imply that the object $V$ is
+% the $i$-th in a set, while, say, $V_{\mathrm{max}}$
+% indicates the maximum value of the variable $V$. This
+% command |\ped| may be used in both math and text mode.
% %
-% \Item[ap] similarly |\ap| inserts an apex in upright type, in both math
-% and text mode.
+% \Item[ap] similarly |\ap| inserts an apex/superscript in
+% upright type, in both math and text mode.
% %
-% \Item[unit] sets the unit of measure close to the numerical measure value 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}| while avoiding \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 in the preamble, while
-% \texttt{topcoman.sty} is read at the execution of |\begin{document}|,
-% the latter file has provisions to test if |unitsx| has already been loaded,
-% so as not to overwrite the latter package definition and to avoid every
-% possible conflict. On the opposite, if the user loads package |siunitx|
-% (the most performant one in the field of units and number handling),
-% the command |\unit| remains available, because it is redefined in terms
-% of this package commands.
+% \Item[unit] sets the unit of measure close to the numerical
+% measure value 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}|
+% while avoiding a form such as \verb*+35 \unit{km}+.
+% This command, as it is defined, conflicts with the definition
+% of the homonymous command |\unit| as defined by the
+% \texttt{unitx} package, but since this latter package is
+% necessarily input in the preamble, while \texttt{topcomand.sty}
+% is read at the execution of |\begin{document}|, the latter
+% file has provisions to test if |unitx| has already been loaded,
+% so as not to overwrite the latter package definition and to avoid
+% every possible conflict.
% %
-% \Item[micro] sets the decimal prefix $\mu$ when typesetting units of
-% measure.
+% \Item[micro] sets the decimal prefix $\mu$ (providing, if
+% possible, the sign with serifs, \textmu, taken from the Text
+% Companion font or any other font that contains this variety
+% of the Greek letter $\mu$) when 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}$; notice the difference with |35\gradi|, that yields
-% $35^\circ$ without any space between the measure and the ``degree'' little
-% circle; this is what the ISO regulations require; the small space inserted
-% by |\unit| is required when the unit of measure symbol contains at least
-% one letter.
+% \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}$;
+% notice the difference with |35\gradi|, that yields $35^\circ$
+% without any space between the measure and the ``degree'' little
+% circle; this is what the \sigla{ISO} regulations require; the small
+% space inserted by |\unit| is required when the unit of measure
+% symbol contains at least one letter.
% %
% \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 is typed with an upright serifed font, just as operators are.
+% nowadays the letter ``j'' in Italian is called with the
+% one-syllable English name (much shorter than the traditional
+% Italian three syllable 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 \sigla{ISO} regulations
+% require it is typed with an upright serifed font, just as
+% operators are.
% %
-% \Item[eu] inserts the Napier number symbol ``e'' in upright type; since
-% this entity is not a variable, but 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 other 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
-% math Greek letters, so there is the facility to typeset an upright ``pi''
-% (the number) to be distinguished from a slanted ''pi'' (the angle).
+% \Item[eu] inserts the Napier number symbol ``e'' in upright
+% type; since this entity is not a variable, but it is
+% a mathematical constant, the \sigla{ISO} regulations require it to
+% be written in upright type. The \sigla{ISO} regulations require the
+% upright type for ``e'' and any other mathematical constant,
+% but the electron charge $e$ is typeset in math italics because
+% this is a physical ``constant'', not a mathematical one.
+% \XeTeX\ and \LuaLaTeX\ allow to typeset upright math Greek
+% letters, so there is the facility to typeset an upright
+% ``pi'' (the number) to be distinguished from an slanted
+% ``pi'' (the angle).
% %
-% \Item[goodpagebreak] inserts a conditional page break after the line
-% where this command appears; it is not equivalent to the |\raggedbottom|
-% declaration that does not vertically justify any page, but tests the
-% amount of space remaining on the page, and if less than a given number of
-% lines are available, it inserts a page break; the result is a ragged bottom
-% single page, that sometimes is better than loose spacing between paragraphs,
-% or within items of a list, or before or after displayed material. It is
-% handy also to use before starting a new section, because at least four
+% \Item[goodpagebreak] inserts a conditional page break after
+% the point where this command appears; it is not equivalent to
+% the |\raggedbottom| declaration that does not vertically
+% justify any page, but tests the amount of space remaining
+% on the page, and if it is less than a given number of lines,
+% it inserts a page break; the result is a ragged
+% bottom single page, that sometimes is better than excessive
+% spacing between paragraphs, or within items of a list, or
+% before or after displayed material. It is handy also to use
+% before starting a new section, because at least four
% lines are required by \LaTeX\ in order to avoid orphan lines.
%
-% \Item[listing] requires for its argument the name of a file and typesets
-% it in verbatim mode; this command is very useful for typesetting the
-% listings of the programs that were written for the thesis; for best results
-% it is recommended that the source program has lines not longer than
-% 80 characters. 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.
+% \Item[listing] requires for its argument the name of a file
+% and typesets it in verbatim mode; this command is very useful
+% for typesetting the listings of the programs that were written
+% for the thesis; for best results it is recommended that the
+% source program has lines not longer than 80 characters. The
+% original definition of command |\listing| dates back to the
+% old times of \LaTeX\,209; it has become obsolete; for
+% backwards compatibility it is maintained as an alias to the
+% command |\VerbatimInput| of package |fancyvrb|; its
+% functionality may be configured with the same commands
+% specified in the |fancyvrb| documentation for the original
+% command. The |fancyvrb| package was preferred to the |listings|
+% package, because it typesets verbatim material even while
+% using font with multibyte encoding (therefore it works fine
+% with \XeLaTeX\ and \LuaLaTeX), while the fancier package
+% |listings| performs correctly only with \sigla{ascii}
+% characters and requires special settings to use characters
+% encoded with more than 7~bits.
% \end{description}
%
-% All these commands are defined into the separate package \texttt{topcoman.sty}
-% that might be used as an independent extension package with any document class.
-%
-% \section{PDF/A archivable format}
-% This section in general applies also if the thesis is typeset by means of
-% \XeLaTeX\ or \LuaLaTeX, but in this case special attention should be given
-% to the details of the procedure as described in the documentation of the
-% \pack{pdfx} package. Even better, \LuaLaTeX, whose source file is
-% practically the same as that of \XeLaTeX, may produce in a simpler way
-% a PDF/A compliant output file if the users follow attentively the
-% instructions contained in the documentation of the \pack{pdfx} package.
-%
-% More details are given in the Italian documentation contained in file
-% \texttt{toptesi\discretionary{-}{}{-}it-pdftex}.
-%
-% 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
-% Organisation (ISO) that in 2005 published the regulation ISO~19005-1. This
-% regulation defines a PDF variant suitable for archiving, named PDF/A, that
-% has two sub-formats distinguished as PDF/A-1a, and PDF/A-1b. The `a'
-% sub-format is more exacting, while the `b' one is less stringent. Recently
-% ISO has published upgrades to these regulations, but here we stick to the
-% older ones, that are a sub set of the newer ones, and for which suitable
-% software is available.
-%
-% The requirements for the `a' sub-format imply not only those imposed on
-% the `b' one, but also that the logical structure of the document be
-% accessible from outside (Tagged PDF).
-% 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 pieces of
-% 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 compliant files, provided that some attention is put into
-% editing 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 (or higher) and is capable of producing PDF/A-1b files.
-%
-% The particular attention needed to avoid problems with the PDF/A compliance
-% is summarised as follows:
-% \begin{enumerate}
-% \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} or with \prog{lualatex};
-% 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
-% the procedures described in the Italian documentation; such documenttion
-% describes several more or less effective methods to transform
-% a non compliant PDF/A file into a compliant one, and how to correct the
-% ``imperfections'' that forbid any valid transformation.
-%
-% \item Since 2016 the TeXLive distribution contains a new version of
-% \pack{pdfx} and now PDF documents produced with \prog{lualatex} may be
-% fully compatible with the standard PDF/A. With some special care, even
-% \prog{xelatex} can now produce PDF/A compliant output files.
-%
-% \item Your up-to-date complete \TeX\ distribution should contain the package
-% \textsf{pdfx}; if it does not, upgrade your \TeX\ system complete
-% distribution. Be sure that the version number of the \pack{pdfx} package
-% has version number 1.5.8 or higher.
+% All these commands are defined into the separate package
+% \texttt{topcoman.sty} that might be used as an independent
+% extension package with any document class.
+%
+% \section{The monografia module}
+%
+% The |toptesi-monografia| module gets loaded if one of the
+% \opz{tipotesi=triennale} or \opz{tipotesi=monografia} options
+% was specified to the |TOPtesi| class. It can be used as a
+% standalone module, as well as the |topfront| general one, although
+% supposedly, it is used most often with its mother class.
+%
+% In order to use it as a standalone module, some definitions
+% must be established in order to have available at least some
+% if not all of the settings and the switches that are available
+% when the module is used with |TOPtesi|. Of course suitable
+% tests are made in order to check if certain packages are
+% already loaded and if certain switches are already defined;
+% and some options are defined.
+%
+% The rest of the module is a subset of the |topfront| package;
+% all commands that refer to information used for other kinds
+% of theses are eliminated and the title page is typeset by means
+% of another environment that does not rely on the environment
+% |frontespizio| (with or without asterisk). The new environment
+% |ThesisTitlePage| is more or less the only difference compared
+% to the way a bachelor thesis title page is typeset with the
+% |topfront| package. It will be described later on; but, with
+% the due differences, this environment mimics the one defined
+% in the |toptesi-scudo| module.
+%
+% The commands contained in this module are divided in there sorts.
+% \begin{enumerate}[noitemsep]
+% \item
+% The commands to define the infix words, so as to use them
+% explicitly within the |ThesisTitlePage| environment or
+% within a configuration file either to change the default
+% strings or to define them for languages different from
+% Italian; no attempt was made to establish such strings
+% for English, because is is supposed the most often than
+% not this module is used by Italian students to write their
+% bachelor degree final works in Italian universities;
+% nevertheless the possibility to change these strings is
+% always available.
+% \item
+% The commands that defines the default values for every
+% command that may be used or may be skipped while setting
+% up the title page.
+% \item
+% The commands that define the values for the variable
+% information necessary for every individual thesis.
+% \end{enumerate}
+% As explained above the first group is used essentially to
+% define or redefine the infix strings. The second group is to
+% define mosts default values for information that might or
+% might not be entered by the user; these values are tested
+% against the |\empty| value in order to decide if using or
+% neglecting them. The third group is the one that the user
+% directly or through a configuration file uses for his/her
+% personal data and his/her specific thesis.
+%
+% \subsection{The configuration file}
+% This module for the bachelor thesis final work searches
+% for a configuration file with the same name as the thesis
+% main file and with extension |.cfg|. Internally this main
+% file name is stored in the internal variable |\jobname|;
+% therefore this module searches the file |\jobname.cfg|. If
+% this file does not exist, the typesetting engine does
+% not use any specific setup, except what has been defined
+% in this module for the default settings.
+%
+% Such configuration file might contains the redefining commands
+% for the infix strings, and/or the other commands that can be
+% used within the |ThesisTitlePage| environment.
+%
+% If a configuration file was loaded, the commands its contains
+% are overwritten by those that are specified within the
+% |ThesisTitlePage| environment. So the user should pay attention
+% to what the configuration file contains and to what s/he writes
+% within the |ThesisTilePage| environment, but if s/he uses again
+% a command already used in the configuration file, it should be
+% for a good reason; simply s/he should remember that the last
+% setting is the one that is actually used.
+%
+% \subsection{Module options}
+% If the module is loaded by |toptesi|, it receives the necessary
+% options by |toptesi| itself. If the module is used as a self
+% standing one and called by another class, it may be called with
+% specific options that are listed here. In general they behave
+% as the |toptesi| options; should they perform differently the
+% details are explained hereafter.
+% \begin{description}[noitemsep]
+%\def\Item[#1]{\item[\opz{#1}]}
+%
+% \Item[evenboxes] The boxes containing the supervisor name(s)
+% and containing the candidate name(s) are typeset with
+% their first lines aligned; if this option is not specified
+% the boxes are skewed, so that there is enough place to set
+% the supervisor signature(s) on the right and the candidate
+% signature on the left; if the bachelor degree final work does
+% not imply a supervisor, the candidate name is centred and
+% there is no question of aligning any box.
+%
+% \Item[cucitura]
+% Specifies a displacement of the text body towards
+% the outer margin. See the |toptesi| description. This option,
+% differently from the one defined in |toptesi| and |topfront|
+% is not of the type \emph{key\,$=$\,value}; therefore in
+% order to change its preset value it is necessary to use
+% the \cs{setbindingcorrection} command. This remark applies
+% only to the case when this module is called by another class.
+%
+% \Item[classica]
+% Uses some \opz{classica} features; see the |toptesi|
+% description.
+%
+% \Item[autoretitolo]
+% Similarly with the main stream |toptesi| bundle, this
+% questionable option is for changing the internal page
+% style; it is useless for this module, but there are some
+% tests that derive from the general |topfront| package,
+% so that the option is maintained for compatibility purposes.
+%
+% \Item[oldstyle] On the opposite this option is maintained,
+% at least to typeset the academic year interval with old
+% style numbers.
+% \end{description}
+%
+% \subsection{User commands and environments}
+%
+% The only user environment defined by this module is
+% |ThesisTitlePage|. It plays the same role as the |frontespizio|
+% environment, but it is incompatible with the |\frontespizio|
+% command. In other words, if this module is used the user must
+% use the |ThesisTitlePage| environment only and does not have
+% available the various title page environments and commands
+% available with the |topfont| package.
+%
+% This environment accepts an optional asterisk as an argument;
+% that is the syntax is the following:
+%\begin{ttsintassi}
+%\cs{begin}\Marg{ThesisTitlePage}\meta{*}
+%\meta{thesis definition commands}
+%\cs{end}\Marg{ThesisTitlePage}
+%\end{ttsintassi}
+% where, differently from other \LaTeX\ environments that accept
+% an optional asterisk, this optional token is not within the
+% opening (and closing) environment braces, but it is the very
+% first entered element into the environment body. Its function
+% is the following: if the asterisk is missing, the university
+% logo(s) are typeset at the top of the page; if the asterisk
+% is present, the logo(s) are set in the page lower half, below
+% the possible subtitle.
+%
+% The commands available with this module, divided into the three
+% groups described above, are the following.
+% \begin{description}[noitemsep]
+% \def\Item[#1]{\item[\normalfont\cs{#1}]}
+% \item[String settings]
+% \begin{description}[noitemsep]
+% \Item[NomeAnnoAccademico] Sets the default string for the
+% ``Academic Year''; by default it is ``Anno accademico''.
+% \Item[NomeCorso] sets the default string ``Corso di laurea
+% in'' followed by an intelligent space.
+% \Item[AnnoAccademico] sets a different string in place
+% of the default ``Anno Accademico'' one.
+% \Item[Struttura di] sets the default structure prefix;
+% for example this prefix might be ``Department of'',
+% and the structure name entered with \cs{struttura}
+% might be ``Electrical Engineering''; therefore the
+% title page is typeset with the complete string
+% ``Department of Electrical Engineering. The default
+% string is in Italian, but by using this command,
+% remember to enter the string you need terminated by
+% the intelligent space macro \cs{xspace}.
+% \Item[CorsoDiStudi] sets the default string for the
+% degree corse type; it might be ``Laurea triennale'',
+% or ``Bachelor degree'' or similar strings in other
+% languages.
+% \Item[NomeElaborato]Sets the name that qualifies the
+% document; by default it is ``Monografia'', but this
+% user command may be used to set it, for example, to
+% ``Tesi di laurea triennale'', or anything else in
+% Italian, in English, or the used main language.
+% The |topfront| command |\NomeMonografia| il let to
+% to |\NomeElaborato| for backwards compatibility; its
+% use is evidently discouraged.
+% \Item[CandidateName] sets the labelling command for the
+% box that lists the candidate names; by default these are the
+% masculine, feminine, singular and plural Italian names
+% starting with ``Candidato''; if the \opz{classica} option
+% is in force they start with ``Laureando''; the user can use
+% this command to set the four strings to any desired value,
+% if, as in English, there is no difference between masculine
+% and feminine, repeat the same name for the feminine positions,
+% the last ones; the syntax is in facts:
+%\begin{ttsintassi}
+%\cs{CandidateName}\%
+%\qquad\marg{masculine singular}\%
+%\qquad\marg{masculine plural}\%
+%\qquad\marg{feminine singular}\%
+%\qquad\marg{feminine plural}
+%\end{ttsintassi}
+% \Item[Relatore] Sets the supervisor string that labels
+% the supervisor box; by default it is the Italian
+% name ``Relatore''; the command my be used to set
+% any different string.
+% \Item[Correlatore] set the co-supervisor string that
+% labels the list of co-superpervisors when there is
+% only one ``second'' supervisor.
+% \Item[Correlatori] sets the co-supervisor string that
+% labels the list of co-supervisors when there are
+% three supervisors, one principal and two co-supervisors.
+% \end{description}
+% \item[Variable data settings]
+% \begin{description}[noitemsep]
+% \Item[titolo] sets the bachelor degree final work title.
+% The main module |topfront| uses in its place the command
+% \cs{monografia}; the user can still use this command,
+% but |\titolo| is more descriptive.
+% \Item[sottotitolo] Sets the optional subtitle.
+% \Item[materia] and \cs{Materia} set the optional subject
+% the thesis deals with.
+% \Item[relatore] sets the name of the only or the principal
+% supervisor.
+% \Item[secondorelatore] sets the name of a second supervisor,
+% if any.
+% \Item[terzorelatore] sets the name of a third supervisor,
+% if any.
+% \Item[candidato] sets the name of the first or only male
+% candidate; in general bachelor degree final works are
+% done by just one candidate, but in case there are
+% available also the commands for a second and a third
+% candidate. Masculine and feminine commands are available
+% and the heading of the candidates box il labelled accordingly.
+% \Item[candidata] sets the name of the first or only female
+% candidate.
+% \item[\normalfont\cs{secondocandidato} or \cs{secondacanddata}]
+% set the names of a possible second male or female candidate.
+% \item[\normalfont\cs{terzocandidato} or \cs{terzacandidata}]
+% set the names of a possible male or female third candidate.
+% \Item[ID] to be used just after the candidate's name, but as
+% part of the setting command argument, establishes the
+% candidate's ID number (or matricola).
+% \Item[sedutadilaurea] sets the date of the final examination;
+% by default the current month and year are typeset if this
+% command is not specified; but the user can specify anything;
+% s/he can even prefix the year range with the
+% \cs{AnnoAccademico} command, that typesets (in the current
+% language if localisation has been made by means of the
+% suitable command of group~1) a string equivalent to
+% ``Academic Year''; in any case the user can write down what
+% s/he likes best in place of the predefined value.
+% \Item[NomeAteneo] sets the proper name of a specific
+% university; it will be typeset in suitable uppercase type
+% under the generic name of the university; if this command
+% is not used, no name gets typeset in the title page.
+% \Item[struttura] sets the name of the university entity
+% that supervises the development of the degree course;
+% it may be a ``faculty'', a ``department'', a ``school'',
+% it depends from the specific university. Some universities
+% do not require this information on the title page. In any
+% case if this command is used it accepts two arguments:
+% the first one is optional, and, if used, is an uppercase
+% roman numeral that indicates the ordinal of the structure;
+% the second argument is the complete structure name.
+% \Item[setlogodistance] sets the distance between adjacent
+% university logos, if more then one is used.
+% \Item[logosede] Sets the name of a graphics file that
+% contains the logo of the university; the default value of
+% this command il \cs{empty}; this macro may be used several
+% times, in case the bachelor degree final work is developed
+% within a multiple degree Erasmus program; this might be
+% unusual but not impossible. In any case if no logo file
+% name is specified, no logos are printed and no space
+% is used in the title page; if one or more logos are used
+% they are assembled with the same height into a horizontal
+% box, that before being printed is measured; if the width
+% exceeds the text width, the whole box is scaled down by
+% preserving the aspect ratio so as to fit it inside the
+% text width; after these tests and possible scaling down,
+% the logo box is printed. The logo distance my be varied
+% from the 3em default value by using \cs{setlogodistance}, but
+% it is suggested not to vary it too much. The \cs{logosede}
+% accepts an optional value that is the common height of the
+% logos; this possibility does exist but it is strongly
+% discouraged.
+% \Item[tutoreaziendale] set the name of a possible company
+% tutor, in case the final work is developed in a Company
+% external to the university
+% \end{description}
+% \end{description}
+%
+% \section{The module for a master degree thesis}
+%\label{sec:topmagistrale}
+%
+% The module for the master degree thesis,
+% |toptesi-magistrale.sty| is almost identical to the generic
+% module |topfront|; the obvious differences are that it
+% lacks the latter module commands that refer to the bachelor
+% degree or the Ph.D.~theses. Evidently such specific commands
+% are useless in a master degree thesis.
+%
+% \begin{sloppypar}
+% Such eliminated commands include |\manografia|,
+% |\sedutadidottorato|, |\ciclo|, |\Direttore|, and so forth.
+% \end{sloppypar}
+%
+% A tricky situation arises if the thesis is typeset in several
+% tomes. There are substantially two different situations with
+% different implementations with the generic module |topfront|
+% and this specific module |toptesi-magistrale|.
+%\begin{enumerate}[noitemsep]
+%\item
+% With enumerate each tome title page is realised by means
+% of the |\tomo| command that requires a preliminary
+% specification of all the necessary data before |\tomo|
+% can play its role; it actually uses the |\frontespizio|
+% command, but before the |tomo| counter is stepped up.
+%
+% This allows to typeset the various tomes in a single
+% document, so that the user can cross-reference elements
+% belonging to different tomes. When the single multi\-tome
+% document is completed the user can split its \sigla{PDF} file
+% in separate files (by means of the |pdfpages| package
+% functionalities) and print them; in printed pages the
+% cross-references do not require hyperlinking, while
+% the single document file may be completely hyperlinked;
+% reading the printed tomes is correct, and reading the
+% whole thesis in a single document on the screen allows
+% the easy navigation from one point to another.
+%
+% The draw back of this procedure is that splitting the
+% single \sigla{PDf} file in several file require another processing
+% job, and any editing of the source thesis files may require
+% repeating this splitting job because the number of pages
+% may be modified and/or cross references do not point
+% to the correct page number.
+%
+%\item
+% With the |ThesisTitlePage| environment of this
+% |toptesi-magistrale| module the |\tomo| command is used
+% before or within within the environment and it just
+% steps up the |tomo| counter while allowing typesetting
+% the necessary tome information on the title page.
+%
+% In this way it is necessary to typeset each tome with
+% its own source file(s) to produce different output \sigla{PDF}
+% files; when printed the are substantially identica to
+% the split documents obtained with the previous approach
+% and simply avoids splitting the single document file
+% in several files. But if hyperlinked cross-referencing
+% is used, each tome is correctly hyperlinked to its
+% internal targets, but no cross-referencing can be
+% automatically dono to items in other tomes. I do not
+% think this is a real draw back in practical situations,
+% but of course its produces a limitation to reading the
+% tomes on the screen.
+%\end{enumerate}
+%
+% I assume that multi\-tome theses are very rare; \LaTeX can
+% handle the production of different documents (different
+% tomes/volumes) maintaining correct cross references also to
+% material external to any specific volume, but the handling
+% of the whole job becomes very complicated not to mention
+% the programming difficulties. For master theses I would avoid
+% splitting one's thesis is several tomes; nevertheless this
+% functionality has been asked for, so that this bundle
+% realises a couple of solutions that require some compromise
+% and some manual work by the author. A better solution
+% is on the TODO list, but it is not to come in a short time.
+%
+% In summary this |toptesi-magistrale| module keeps all the
+% commands defined on the |topfront| module; modifies the
+% definition of the |\tomo| command; adds the |ThesiTitlePage|
+% environment within which the configuration file is read and all
+% commands for the title page data are to be inserted. The
+% peculiarity of theis environment is that the possible asterisk
+% necessary to switch from the the logos at the title page
+% lower half (no asterisk) to the logos at the page top
+% (asterisk) must be inserted the same way as in the other
+% modules, that is as the first token at the beginning of
+% the environment.
+%
+% \section{The Ph.D.\ module for general use}
+% Except for the ScuDo theses, for which the University
+% specified the necessary requirements for both contents
+% and appearance of the title page, we provide a generic
+% module for Ph.D.\ theses for other universities. It goes
+% by itself the if the specifications cannot be customised
+% by using the customising commands of the ScuDo module,
+% nor by this module, it is necessari to use a custom
+% module that the user must create as specified in the next
+% section.
+%
+% This module is generic as much as the |topfront| one.
+% It differs only for the elimination of the other thesis
+% kinds and the only addition is the |ThesisTitlePage|
+% environment, just as it has been done for the other
+% bundle modules.
+%
+% The data insertion or modification commands are a subset
+% of those described in subsection~\ref{sec:topfront},
+% of course without those tha are specific of other thesis
+% kinds; therefore we do not repeat them here.
+%
+% Special care should be dedicated to the university
+% specifications; in some universities the supervisor(s)
+% should not be indicated and in such a case the (unique)
+% candidate may be indicated without any legend on top of
+% it. The University logo might already contain the explicit
+% wording with the the university name and in this case
+% repeating the name would be pleonastic. At my level I
+% cannot foresee the user requirements therefore it must
+% be the user that takes care of inputting the correct
+% fixed word data and the specific thesis data. I hope
+% this module is useful for most Ph.D.\ students, but if
+% the user comparer the title page requirements with those
+% prescribed for the ScuDo theses, s/he sees how much such
+% requirement might be different from one university to the other.
+%
+% May be in such circumstances the user might prefer to create
+% his/her custom title page and would not use this module at all.
+%
+% \section{The custom module for the title-page}\label{sec:custom}
+% The construction of the customised title page module is the full
+% responsibility of the user.
+% In facts the user, beyond specifying the |tipotesi=custom|
+% to the |toptesi| class class, at the beginning of the
+% document explicitly inputs a personal package file, say
+% |mycustomfile.sty| by means of the simple
+% |\usepackage{mycustomfile}| command, and this is all the user
+% needs. Of course this is an understatement; in facts s/he
+% should select a package form the many existing ones, s/he
+% can create him/herself a new package branched on other existing
+% software; s/he mai refrains form using external packages,
+% and simply insert his/her title page data within a |titlepage|
+% environment where s/he wants, with the fonts families, series,
+% shapes, and sizes s/he prefers and so on.
+%
+% Needless to say that in order to create a custom title page
+% module the user must perfectly know the intricacies of the
+% \LaTeX\ language. It may be helpful to read the Italian
+% documentation |toptesi-it.pdf| where an example of landscape
+% title page is already described in full detail. Of course a
+% landscape title page requires a custom layout and is no
+% surprise that the example deals with this particular one.
+% Nevertheless that example gives a good idea on how to create
+% a custom title page.
+%
+% We don't go further in describing the |tipotesi=custom| option,
+% except remembering the this option just inhibits loading both
+% the standard default module, and any other module, unless the
+% user loads it directly with or without the specific module options.
+%
+% \section{The high school final work module}
+%
+% The suffix |sss| is the acronym for the Italian name of
+% ``High School'', \emph{Scuola Secondaria Superiore}.
+% Elegance of bureaucratic language; the elementary school
+% now is `Scuola Primaria', and junior high school is `Scuola
+% Secondaria Inferiore'. As well as it was in Germany and
+% in some Swiss Cantons, the total number of school years
+% is 13 instead of 12, as it is in most countries. The advantage
+% is that no general education is taught in university, no
+% \emph{classes préparatoires}, because it is assumed that
+% the high school diploma assures a sufficient level of general
+% education.
+%
+% Differently from most high school systems in the world,
+% in Italy each school has a special ``mission'' and receives
+% different names, all under the general definition of Scuola
+% Secondaria Superiore. But it s possible to distinguish
+% between Licei (University preparatory), Istituti tecnici
+% with various specialisation (for technical education in
+% different domains); Istituti professionali (for vocational
+% training); all of them end with a state examination, and
+% almost all of them allow entrance in University, although
+% a certain level of auto\-selection is actually performed.
+% Many university Schools, formerly Faculties, submit applicants
+% to entrance tests intended mostly to let them perform a
+% conscious choice of their future studies; sometimes the
+% tests are intended also to form ranks in those schools where
+% the \emph{numerus clausus} is applied.
+%
+% This off topic is necessary to let the general reader
+% understand the importance of the \emph{esame di maturità}
+% and the important role that the high school final work
+% (nicknamed \emph{thesina}, `little thesis') plays in this
+% generally difficult exam; statistics say that the number of
+% flunking students is very low, but the final numerical grade
+% (passing grade; from 60 to 100 with honours) plays also an
+% important role in the following career, therefore students
+% work very hard to pass with good grades.
+%
+% The above off topic explains why in Italy the final high
+% school state exam includes the evaluation of a personal
+% written report on some subject chosen by each student;
+% this choice is often performed with
+% an initial support by each student teachers, that give help in
+% choosing the subject, and, maybe, offer some initial input.
+% They do not supervise the student work; but this work is
+% submitted to the examining committee (the members of which
+% are external to the specific school) that after due reading,
+% ask questions on the work and investigate the depth to which
+% the student has gone into his/her chosen subject.
+%
+% Certainly this final work has not the importance of a
+% university thesis, but it is the first time when the
+% student is asked questions on a subject of his/her choice,
+% where the examining committee assumes s/he has examined all
+% the facets with the approach of a young adult, not that
+% of an old teenager.
+%
+% Some high school students have discovered \LaTeX, and some
+% of them do really appreciate the typesetting results all
+% \LaTeX\ users love; therefore they like the idea of
+% typesetting their final high school work with the powerful
+% \LaTeX\ functionalities.
+%
+% Of course their title page must be very different from those
+% suitable for university theses, therefore a special module is
+% necessary, and I decided to to add such a module to this bundle.
+%
+% Actually high school students require less information on the
+% title page; the school generic and proper names, obviously the
+% title and a possible subtitle, their name, maybe the logo of
+% their school, the examination date, and such similar data.
+%
+% They certainly do not need the advanced features needed for
+% the functionalities of the |topfront| extension package;
+% nevertheless the title page must have a professional look,
+% not just what they may achieve by using a word processor.
+%
+% The contents of the \emph{tesina} may also have a professional
+% look if the students do not tickle the typesetting program
+% to behave as a word processor. Several guides are available
+% for high school students, as well for university ones, to
+% recall how a ``technical report'' should be properly written;
+% unfortunately today students prefer to read their smartphones,
+% rather than real printed or electronic books; but those
+% students who use \LaTeX\ know very well that they need reading
+% suitable guides for using the program \emph{and} for structuring
+% their document.
%
-% \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:
+% Mirko Mondini suggested to extend the TOPtesi bundle to
+% include the title page for high school final works. He
+% also suggested the layout of the page. This module may be
+% considered ``work in progress'' because we both have little
+% experience with the requirements of such final works.
+% As the maintainer of this bundle I thank him very much;
+% Marco may suggest specific changes in the near future;
+% his contributions are very welcome. I would add that
+% commentaries and suggestions by the students to whom this
+% module is dedicated are very welcome just as well.
+%
+% We assume the student already knows the fundamentals of \LaTeX;
+% we assume the Italian student has read the companion
+% documentation |toptesi-it.pdf| distributed with this bundle;
+% we assume also that the student has already a valid
+% installation of the \TeX\ system, preferably \TeXLive,
+% that is available for all most popular operating systems,
+% Windows included of course, although for Windows there is
+% also the alternative installation MiKTeX. As my personal opinion,
+% I think that \TeXLive may be updated more easily than MiKTeX
+% and, not negligibly, its default installation is complete,
+% while MiKTeX by default has a basic installation, so that very
+% often offline MiKTeX users suffer from ``missing package'' errors.
+%
+% Since this module is going to be used only by Italian high
+% school students, all user commands are in Italian.
+%
+% Here we concentrate on the title page. But before entering
+% this subject let us recall that this module already loads a
+% certain number of packages.
+% \begin{enumerate}[noitemsep]
+%\item
+% Packages |amsmath|, |amssymb| (only \pdfLaTeX) and |amsthm|
+% are already loaded, but a test is made to verify if the user
+% has loaded in his/her preamble the math packages |newtxmath|
+% or |newpsmath| (possibly together with their companions
+% |new..text|), because the latter packages already provide
+% for their functionalities.
+%\item
+% If they typeset with \LuaLaTeX\ or \XeLaTeX, the suitable
+% packages are already loaded, in particular the |unicode-math|
+% one; the user, though, should load a matching OpenType Math
+% font among those available with the \TeXLive distribution.
+%\item
+% Service packages such as |xparse|, |xspace|, and |xcolor|
+% are already loaded for the benefit of this bundle and this
+% module, but the user is free to use their functionalities,
+% mostly those of |xcolor|.
+%\item
+% Packages |calc| and |ifthen| are functional for the module;
+% supposedly the end user should not have any necessity to use
+% them, but, of course, they can if they need to.
+%\item
+% Package |multirow| has been loaded, because many users like
+% to imitate word processor functionalities; this package allows
+% to create table cells that span several rows; as a general
+% rule this practice should be avoided.
+%\item
+% Package |booktabs|, is very useful to set professional
+% tables (reading its documentation is necessary).
+%\item
+% No particular package has been loaded to create a specialised
+% bibliography; either the student directly uses its own
+% |thebibliography| environment, or provides to chose whatever
+% style s/he likes best and, s/he decides to load package
+% |biblatex| and specifies the desired options. In the first
+% case one of the most useful packages is |natbib|; in the
+% second case |biblatex| supports other bibliographic style
+% files. Both approaches require the preparation of a
+% bibliography database by means of programs |jabref|,
+% |bibdesk|, or similar applications: but with |natbib|
+% the |bibtex| database handler is required, while with
+% |biblatex| case the |biber| handler yields the best
+% performances. In both cases it is required the careful
+% reading of either package documentation.
+%\end{enumerate}
+%
+% The commands the user can use for the title page follow.
+% Remember that they may be used directly within the
+% |FrontespizioTesina| environment; if the user prefers, s/he
+% can write them in a configuration file; such file must be
+% named with the same name as the document main file, and
+% it must be saved in the same folder; the information
+% read from the configuration file is possibly overridden
+% by the same commands, with different data, specified within
+% the |FrontespizioTesina| environment.
+% Just to be sure to be clear, if your document main file is
+% named |LaMiaBellaTesina.tex|, the configuration file should
+% be named |LaMiaBellaTesina.cfg| and both files should be
+% saved in the same folder.
+%
+% The title page commands are the following:
+%\begin{description}\def\Item[#1]{\item[\normalfont\cs{#1}]}
+%\Item[SSSLogo]
+% is used to define the name of the graphic file containing
+% the high school logo; not necessarily the school allows to
+% use its logo; in any case if such command is not used, the
+% logo information is ignored. The syntax is
+% \begin{ttsintassi}
+% \cs{SSSLogo}\marg{file name}
+% \end{ttsintassi}
+% Remember that the graphic file must have one of these
+% extensions: |.pdf|, |.eps|, |.png|, or |.jpg|; the first
+% two may contains vector images and give the best results;
+% the second two are bitmapped, therefore their rendering
+% depends very much on the pixel density of the file contents.
+%\Item[NomeTesina] sets the name of the document; the default value
+% is ``Tesina di maturità''. Syntax:
+% \begin{ttsintassi}
+% \cs{NomeTesina}\marg{nome dell'elaborato}
+% \end{ttsintassi}
+%\Item[NomeCandidato]
+% is used to set the label to typeset over the author's name;
+% default ``Studente'' or ``Studentessa'' depending on the
+% state of the boolean switch |femminile|, but if this command
+% is used for the user tesina, s/he needs not to specify any
+% switch and uses the only name necessary for his/her document.
+% Syntax:
+% \begin{ttsintassi}
+% \cs{NomeCandidato}{examinand label}
+% \end{ttsintassi}
+% This command might be used to set the label with a different
+% name in the correct gender.
+%\Item[IndirizzoMiur]
+% sets the Ministry of Education special address. If this
+% command is omitted, this address, considered optional,
+% is neglected. Syntax:
+% \begin{ttsintassi}
+% \cs{IndirizzoMiur}\marg{Ministry of Education special address}
+% \end{ttsintassi}
+%\Item[OpzioneMiur]
+% sets the specification that distinguishes the school
+% mission, if any. Syntax:
+% \begin{ttsintassi}
+% \cs{OpzioneMiur}\marg{Ministry of Education option}
+% \end{ttsintassi}
+%\Item[TipoScuola]
+% sets the specific generic name of the school; default
+% none; therefore use of this commands is mandatory;
+% the user might specify ``Liceo classico'', or ``Istituto
+% tecnico industriale di stato'', or whatever applies for
+% the students' specific school. Syntax:
+% \begin{ttsintassi}
+% \cs{TipoScuola}\marg{generic school name}
+% \end{ttsintassi}
+%\Item[NomeScuola]
+% sets the specific name of the school; generally schools
+% are dedicated to famous scientists or heroes, or presidents,
+% or kings/queens, or writers, et cetera; default ``empty''.
+% Syntax:
+% \begin{ttsintassi}
+% \cs{NomeScuola}\marg{specific school name}
+% \end{ttsintassi}
+%\Item[SedeScuola]
+% set the actual location of the school it may be just the
+% city or a full postal address; it may contain new line
+% commands in order to format a full address of several lines;
+% no default. Syntax:
+% \begin{ttsintassi}
+% \cs{SedeScuola}\marg{the school basic or full address}
+% \end{ttsintassi}
+%\Item[AnnoScolastico]
+% sets the school year at the end of which the state
+% examination is undertaken; no default. Syntax:
+% \begin{ttsintassi}
+% \cs{AnnoScolastico}\marg{school year}
+% \end{ttsintassi}
+%\Item[titolo]
+% sets the title of the document; please don't use long titles;
+% if a short sentence is not descriptive enough, use the
+% |\sottotitolo| argument to add specifications to the title;
+% no default. Syntax:
+% \begin{ttsintassi}
+% \cs{titolo}\marg{main title}
+% \end{ttsintassi}
+%\Item[sottotitolo]
+% sets an optional subtitle; if this command is not used
+% the subtitle field is ignored; no default. Syntax:
+% \begin{ttsintassi}
+% \cs{sottotitolo}\marg{optional subtitle}
+% \end{ttsintassi}
+% The subtitle, if any, is typeset in a normal sized font,
+% therefore it can be several lines long; nevertheless pay
+% attention to use the tie command |~| to connect with an
+% unbreakable space to the following ones such words as
+% prepositions, articles, short adverbs, and such similar
+% items.
+%\Item[studente] or \cs{studentessa}, depending on the gender
+% of the student, sets the name of the author of the
+% document, i.e.\ the name of the student undergoing the
+% examination; no default. Syntax:
+% \begin{ttsintassi}
+% \cs{studente}\marg{proper name(s) followed by the surname(s)}
+% \cs{studentessa}\marg{proper name(s) followed by the surname(s)}
+% \end{ttsintassi}
+% Remember: \textbf{never ever use the surname(s) before
+% the name(s)}.
+% If the \cs{NomeCandidato} macro has not been used, these commands
+% set the proper status to the |femminile| switch, so that the
+% proper default label is used.
+%\Item[Presidente]
+% sets the name of the chairperson of th examining committee;
+% no default. Syntax:
+% \begin{ttsintassi}
+% \cs{Presidente}\marg{examining committee chairperson full name}
+% \end{ttsintassi}
+% Again remember to write the necessary academic titles
+% in lowercase, end the name(s) before the surname(s).
+%\Item[NumeroCommissione]
+% sets the examining committee ID number; no default.Syntax:
+% \begin{ttsintassi}
+% \cs{NumeroCommissione}\marg{Examing committee ID number}
+% \end{ttsintassi}
+%\end{description}
+%
+% The actual title page is created within the environment
+% |FrontespizioTesina|. This environment first reads a the
+% configuration file if one exists, then it analyses the
+% commands possibly set within the environment by the author,
+% possibly superseding the information read from the
+% configuration file; the closing commands actually typeset
+% the title page; the schematic working is the following:
+%\begin{flushleft}\ttfamily\obeylines
+%\Bambiente{FrontespizioTesina} \% reads the config.\ file if any
+%\meta{user commands with user data}
+%\Eambiente{FrontespizioTesina} \% typesets the title page
+%\end{flushleft}
+% There are no options to specify; the title page is sort
+% of rigid in the sense that every piece of information goes
+% where it should and interlaced with proper spaces so as to fill
+% up the text grid in a sensible way. No doubt some users may
+% complain that the title page does not allow to do this or
+% that; that the spacings should be different from what they
+% actually are.
+%
+% There are work-arounds to these complains.
+%\begin{enumerate}[noitemsep]
+% \item
+% Instead of using the above environment, s/he uses the |titlepage|
+% environment within which s/he inserts what s/he wants and
+% where s/he likes best, with the typefaces s/he prefers,
+% with the vertical spacings that accomodate his/her aesthetical
+% feelings. Of corse it is necessary to know what is being done;
+% if not, the results may be worse than the predefined layout.
+%\item
+% Even better: the user may use a custom layout and set it
+% following the instructions described in section~\ref{sec:custom}.
+% \end{enumerate}
+%
+%^^A PDFA/A
+%
+% \section{\sigla{PDF/A} archivable format}
+% This section in general applies also if the thesis is typeset
+% by means of \LuaLaTeX\ or \XeLaTeX, but with\XeLaTeX\ special
+% attention should be paid to the details of the procedure as
+% described in the documentation of the \pack{pdfx} package. Even
+% better, \LuaLaTeX, whose source file is practically the same as
+% that of \XeLaTeX, may produce in a simpler way a \sigla{PDF/A}
+% compliant output file if the users follow attentively the
+% instructions contained in the documentation of the \pack{pdfx}
+% package.
+%
+% More details are given in the Italian documentation contained
+% in the \texttt{toptesi\discretionary{-}{}{-}it} which is part
+% of the TOPtesi bundle.
+%
+% Politecnico di Torino and several other Italian and foreign
+% universities are moving towards archiving theses in electronic
+% format, specifically in the \sigla{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 Organisation (\sigla{ISO}) that in 2005 published the
+% regulation \sigla{ISO}~19005-1; in 2011 and 2012 enhancements of
+% this regulation have been published. This regulation defines
+% a \sigla{PDF} variant suitable for archiving, named \sigla{PDF/A}, that
+% has two sub-formats distinguished as \sigla{PDF/A}-1a, and \sigla{PDF/A}-1b.
+% The `a' sub-format is more exacting, while the `b' one is less
+% stringent. In spite of the recently published upgrades,
+% here we stick to the older ones, that are a sub set of the
+% newer ones, and for which suitable software is available.
+%
+% The requirements for the `a' sub-format imply not only those
+% requested for the `b' one, but also that the logical structure
+% of the document be accessible from outside (Tagged \sigla{PDF}).
+% 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 \sigla{PDF} file, and that
+% contain information useful for archive maintenance; among
+% these informations, of course, the \sigla{PDF/A} category the document
+% belongs to, the document title, the authors, and few other
+% optional pieces of information, such as the keywords that
+% ease up library searches.
+%
+% Since version 1.40, the program \texttt{pdflatex} is capable
+% of producing \sigla{PDF/A}-1b compliant files, provided that some
+% attention is put into editing of the thesis source file.
+%
+% With the distribution of the 2008 version of the \TeX\ system,
+% the executable \texttt{pdflatex} has version number 1.40.9
+% (or higher) and is capable of producing \sigla{PDF/A}-1b files.
+%
+% The particular attention needed to avoid problems with the
+% \sigla{PDF/A} compliance is summarised as follows:
+% \begin{enumerate}[noitemsep]
+% \item
+% The preliminary essential requirement is that the
+% \texttt{pdflatex} engine used to typeset the thesis be
+% sufficiently recent to support the \sigla{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' \prog{latex}; you
+% \emph{must} process the input thesis file(s) with
+% \texttt{pdflatex} or with \prog{xelatex} or with \prog{lualatex};
+% 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 \sigla{PDF/A}
+% final document, but you have to transform it by means of the
+% procedures described in the Italian documentation; such
+% documentation describes several more or less effective
+% methods to transform a non compliant \sigla{PDF/A} file into a
+% compliant one, and how to correct the ``imperfections''
+% that forbid any valid transformation.
+%
+% \item
+% Since 2016 the TeXLive distribution contains a new version
+% of \pack{pdfx} and now \sigla{PDF} documents produced with
+% \prog{lualatex} may be fully compatible with the standard
+% \sigla{PDF/A}. With some special care and some post"processing,
+% even \prog{xelatex} can now produce \sigla{PDF/A} compliant output
+% files.
+%
+% \item
+% Your up-to-date complete \TeX\ distribution should
+% contain the package \textsf{pdfx}; if it does not,
+% upgrade your \TeX\ system complete distribution. Be sure
+% that the version number of the \pack{pdfx} package has
+% version number~1.5.8 or higher.
+%
+% \item
+% If your thesis main file, the one you run your typesetting
+% program 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}
-% The keyword list requires a specific format that can be examined
-% in the package documentation. The best way to be sure that this file
-% accompanies the thesis main file, is to put its contents in a
-% \env{filecontents*} environment before the |\documentclass| declaration.
-% The details are in the documentation of the \pack{pdfx} package.
-%
-% \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\ and \LuaLaTeX\ do not require any patch.
-%
-% \item Use only PNG and JPEG images with RGB color profiles. If a PNG image
-% file contains some transparencies, the document PDF cannot be validated
-% as PDF/A compliant.
-%
-% \item If you include PDF images that contain some text, be sure that the
-% fonts for this text are 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. Pay
-% attention, because Inkscape might save your file with some specifications
-% for transparency; transparency specification destroy the PDF/A compliance.
-%
-% \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 that this or that is not compliant with the PDF/A
-% specification. A suitable program is the Preflight module of Adobe Acrobat
-% Pro~XI, but this, although the most authoritative, is a commercial program;
-% probably your university has special facilities for this task.
-%
-% \item There exist an experimental freeware program \prog{veraPDF} that
-% can be downloaded from the Web, that performs quite well in checking
-% the PDF/A conformity of a PDF file; read more in the \pack{TOPtesi}
-% Italian documentation.
+% The keyword list requires a specific format that can be
+% examined in the package documentation. The best way to
+% be sure that this file accompanies the thesis main file,
+% is to put its contents in a \env{filecontents*} environment
+% before the |\documentclass| declaration. The details are
+% in the documentation of the \pack{pdfx} package.
+%
+% \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 \sigla{UNICODE} math fonts used
+% by \XeLaTeX\ and \LuaLaTeX\ do not require any patch.
+%
+% \item
+% Use only \sigla{PNG} and \sigla{JPG} images with \sigla{RGB} color profiles.
+% If a \sigla{PNG} image file contains some transparencies, the
+% document \sigla{PDF} cannot be validated as \sigla{PDF/A} compliant.
+%
+% \item
+% If you include \sigla{PDF} images that contain some text, be sure
+% that the fonts for this text are completely embedded in
+% the included files. Should the \sigla{PDF} files come from an external
+% drawing program be sure to configure that program so that
+% it embeds all the fonts used in each image. If you don't
+% succeed, open the \sigla{PDF} file with the free software
+% \texttt{inkscape} and save it back in \sigla{PDF} format; the
+% missing fonts will be replaced with their outlines and
+% this will not disturb the \sigla{PDF/A} conformity. Pay attention,
+% because Inkscape might save your file with some
+% specifications for transparency; but transparency
+% specifications destroy the \sigla{PDF/A} compliance.
+%
+% Should this inconvenience take place, instead of asking
+% \texttt{inkscape} to save in \sigla{PDF} format, ask to save in \sigla{EPS}
+% format; this one does not support transparencies, therefore
+% they get abolished from the very beginning. This is useful
+% also when \texttt{inkscape} is used to change the color
+% profile of an image. Once used this program to convert an
+% image to \sigla{EPS} format without transparencies and/or with the
+% accepted \sigla{RGB} color profile, import the image as usual with
+% |\includegraphics|; all the suggested typesetting programs,
+% \prog{pdflatex} included, can import \sigla{EPS} files, therefore
+% these problems, thanks \texttt{inkscape} may be easily
+% overridden.
+%
+% \item
+% Verify your final \sigla{PDF} file with a suitable program and
+% do not give up doing the necessary corrections or
+% modifications while the verification program keeps saying
+% that this or that is not compliant with the \sigla{PDF/A}
+% specification. A suitable program is the Preflight module
+% of Adobe Acrobat Pro~XI (or later), but this, although the most
+% authoritative, is a commercial program; probably your
+% university has special facilities for this task. In any
+% case you can install the \prog{veraPDF} free software
+% from the Internet, and use this handy verification program
+% (it is still in beta stage until the official stable release that
+% is due during the year 2017).
%
%\end{enumerate}
%
-% Warning: if you are using Adobe Reader X (or later), this program will open
-% a PDF file beginning with an information header stating that the file
-% PDF/A claims to be 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 realisation of PDF/A conforming files sets forth several
-% problems that are of great concern for the large Institutions that have
-% thousands of documents a year to archive; it is not a question implied
-% in the free nature of the \prog{pdflatex}, \prog{xelatex}, and \prog{lualatex}
-% 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 fonts, or to the UNICODE encoded otf
-% or ttf fonts and use this version of \texttt{TOPtesi} you should be able
-% to avoid most problems.
-%
-% \StopEventually{} ^^A Bibliography?
+% Warning: if you are using Adobe Reader X (or later), this
+% program will open a \sigla{PDF} file beginning with an information
+% header stating that the file claims to be \sigla{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 \sigla{PDF/A} compliance. I have seen
+% files with this comforting information that did not pass
+% the Preflight test! Actually the Reader is correct in saying
+% that ``\dots\ the program claims to be \sigla{PDF/A} compliant\dots'';
+% the Reader just notices that the metadata contains such a claim,
+% but this does not imply that the claim is true.
+%
+% Up to today the realisation of \sigla{PDF/A} conforming files sets
+% forth several problems that are of great concern for
+% large Institutions that have thousands of documents a year
+% to archive; it is not a question implied in the free nature
+% of the \prog{pdflatex}, \prog{xelatex}, and \prog{lualatex}
+% programs, that, on the opposite, according to my experience,
+% have a very high rate of success in producing \sigla{PDF/A}
+% compliant documents. If you stick to the default \TeX\ system
+% Type~1, 256-glyph fonts, or to the \sigla{UNICODE} encoded otf
+% or ttf fonts and use this version of the TOPtesi bundle
+% you should be able to avoid most problems.
+%
+% \StopEventually{}
+%
+% \newpage
%
% \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.
+% 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 their specific
+% description string.
% \iffalse
%<*class>
% \fi
%
-% 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 |a4paper| option is made the default, but the user can call the
-% class with any valid \LaTeX\ paper size. According to the \LaTeX\ machinery
-% of option passing, the |\ExecuteOption| command assures that |a4paper|
-% is the default size, but it is not being used if another paper size code is
-% specified to the class. The same holds true for the other class options,
-% except for the encoding code string because their passing machinery does
-% not hold true for the \pack{inputenc} package; therefore this package is
-% not loaded any more as it was in previous versions of the class\footnote{Thanks
-% to Enrico Gregorio who pointed out this feature.}. On the opposite if another
-% language is specified in the list of \pack{toptesi} class options, this
-% language would be appended to the \pack{babel} package default options and,
-% beware!, it would become the default language.
-% \begin{macrocode}
-\DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{report}}
-\DeclareOption{titlepage}{\PassOptionsToClass{\CurrentOption}{report}}
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
-\ExecuteOptions{a4paper,titlepage}
-\ProcessOptions\relax
+% 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 to the \texttt{toptesi}
+% class are passed on to the \texttt{report} class; the
+% |a4paper| option is made the default, but the user can invoke
+% the class with any valid \LaTeX\ paper size. According to the
+% \LaTeX\ and |xkeyval| machinery of option passing, the |\ExecuteOptionX|
+% command assures that |a4paper| is the default size, but it
+% is not used if another paper size code is specified to the class.
+% The same holds true for the other class options, except for
+% the encoding string because their passing machinery does
+% not hold true for the \pack{inputenc} package; therefore this
+% package is not loaded any more as it was in previous versions
+% of the class\footnote{Thanks to Enrico Gregorio who pointed
+% out this feature.}. On the opposite, while typesetting with
+% |pdfLaTeX|, if another language is specified in the list of
+% \pack{toptesi} class options this language is appended to the
+% \pack{babel} package default options and, beware!, it would
+% become the default language; with XeLaTeX and LuaLaTeX a
+% language option is useless (and harmless) due to their way of
+% specifying languages; with these programs other languages must
+% be specified with their |\setotherlanguage| or |\setotherlanguages|
+% commands which do not change the preset main language.
+% \begin{macrocode}
+\usepackage{trace}
+\RequirePackage{xkeyval}
+\DeclareOptionX{formato}[a4paper]{\PassOptionsToClass{#1}{report}}
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{report}}
+\ExecuteOptionsX{formato}
+\ProcessOptionsX*\relax
\LoadClass{report}
+
\RequirePackage{iftex}
\ifPDFTeX
- \RequirePackage[english,italian]{babel}
+ \usepackage[english,italian]{babel}
\else
- \RequirePackage{polyglossia}
+ \usepackage{fontspec}
+ \defaultfontfeatures{Ligatures=TeX}
+ \usepackage{polyglossia}
\setmainlanguage{italian}
\setotherlanguage{english}
- \renewcommand*{\iflanguage}[1]{\ifnum\the\language=\csname l@#1\endcsname
+ \renewcommand*{\iflanguage}[1]{%
+ \ifnum\the\language=\csname l@#1\endcsname
\expandafter\@firstoftwo\else
\expandafter\@secondoftwo\fi}
\fi
-\RequirePackage{toptesi}
+\usepackage{toptesi}
%
% \end{macrocode}
% \iffalse
%</class>
% \fi
% \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 alone package, although, take
-% notice, it might create some conflicts with with the \texttt{book} class code
-% (although with the latest versions of |toptesi| we did not notice any conflict)
-% while 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.
+% 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 alone package, but, take
+% notice, it might create some conflicts with with other
+% classes internal code, although with the latest versions
+% of |toptesi| we did not notice any conflict with the |book|
+% class; it is certainly incompatible with the \texttt{article}
+% class.
+%
+% This package |toptesi.sty| must contain its own \TeX\ format
+% declaration in view that it might be used as an extension to
+% other classes
%
% \iffalse
%<*topsty>
% \fi
%
-% 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 sometimes I use these ones.
+% We start by defining the debugging macros; these trace
+% commands and macros are the usual ones I used for debugging.
+% I know the \texttt{trace} package is supposed to be much better,
+% but sometimes I use these ones, especially when I want to
+% trace math snippets, where the tracing functionalities of
+% \pack{trace} are turned off.
% \begin{macrocode}
\def\TRON{\tracingcommands \tw@ \tracingmacros \tw@}
\def\TROFF{\tracingcommands\z@ \tracingmacros \z@}
@@ -903,101 +2510,226 @@ lines of the file for how-to information.
% \end{macrocode}
%
% Now we define the specific package options: \texttt{classica} and
-% \texttt{trieste} are identical; the use of \texttt{trieste} is discouraged,
-% but this option 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 \pack{extsizes} package 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 some boolean variables are
-% defined and the option definitions set some of them to the value ``true''.
+% \texttt{trieste} are identical; the use of \texttt{trieste} is
+% deprecated, but this option is maintained for backward
+% compatibility.
+%
+% The option \opz{scudo} is used only to typeset doctoral
+% dissertations with the special look required by the ``Scuola
+% di Dottorato'' of Politecnico di Torino. The other options for
+% specific types of thesis, \opz{triennale}, \opz{monografia},
+% \opz{magistrale}, \opz{dottorale}, \opz{secondaria}, are
+% described further on; options \opz{frontespizio} and
+% \opz{custom} are avoid loading the default module |topfront| or any of the previous listed modules; the are used to create title pages
+% different from the ones that are available with TOPtesi.
+
+% The |corpo = value| option can receive ``any'' value; if this
+% value is not lower than 14\,pt , the |\if@xixpt| switch is
+% set to true; the value assigned to |corpo| specifies the normal
+% size; the TOPtesi bundle uses the |\changefontsizes| macro
+% provided by package |scrextend|, that is part of any \TeX\
+% system complete and up-to-date TeXLive or MiKTeX installation.
+%
+% Option \opz{chapterbib} allows to set a list of references at
+% the end of each chapter. The option is maintained fore backward
+% compatibility, but we discourage its use, because of the amount
+% of manual work involved; it is much better to use the |biblatex|
+% functionalities and other packages created for this purpose.
+%
+% For other options some boolean variables are
+% defined and the option definitions set some of them to the value
+% ``true''.
% \begin{macrocode}
+\newif\ifevenboxes \evenboxesfalse
\newif\if@utoretitolo \@utoretitolofalse
\newif\if@ldstyle \@ldstylefalse
\newif\if@xivpt \@xivptfalse
+\newif\iflibro \librofalse
\newif\ifT@Pfrontespizio \T@Pfrontespiziofalse
\newif\ifTOPfront \TOPfronttrue
+%
+\newif\ifScuDo \ScuDofalse
+\newif\ifmonografia\monografiafalse
+\newif\iftriennale\monografiafalse
+\newif\ifmagistrale\magistralefalse
+\newif\ifdottorato\dottoratofalse
+\newif\ifsecondaria\secondariafalse
+\newif\ifcustom\customfalse
+\newif\ifTOPnumerazioneromana\TOPnumerazioneromanafalse
% \end{macrocode}
%
-% A binding correction is established; its default value is parametrised to
-% the paper dimensions, even if this correction should actually not depend
-% on the paper size; the paper flexibility at the spine margin should be
-% independent from its width; nevertheless large sizes allow for larger
-% default corrections. In any case the user can override this setting by
-% using the specific command |\setbindingcorrection|. The recommendation
-% to the user is to not exaggerate with this correction. The options
-% |usefrontespizio| and |noTOPfront| are synonymous; the latter should be
-% preferred to the former one.
+% A binding correction is established; its default value is
+% parametrised to the paper dimensions, even if this correction
+% should actually not depend on the paper size; the paper
+% flexibility at the spine margin should be independent from
+% its width; nevertheless large sizes allow for larger default
+% corrections. In any case the user can override this setting by
+% using the specific command |\setbindingcorrection|.
+% The recommendation to the user is to not exaggerate with this
+% correction. In particular the user is warned not to use this
+% option in order to mode che taxt body grid towards the outer
+% edge, simply because s/he does not understand why two side
+% typesetting uses an inner margin smaller than the outer one.
+%
+% The options |usefrontespizio| and |noTOPfront| are set by the specific ``function'' executed by the |tipotesi=|~value options.
% \begin{macrocode}
-\newlength\T@Pbinding\setlength\T@Pbinding{7mm}
+\newlength\T@Pbinding
\def\setbindingcorrection#1{\T@Pbinding=#1}
\newif\if@binding \@bindingfalse
\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}{\PackageWarning{toptesi}{Option pdfa ignored.\MessageBreak
-Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
-\DeclareOption{usefrontespizio}{\T@Pfrontespiziotrue\TOPfrontfalse}
-\DeclareOption{noTOPfront}{\T@Pfrontespiziotrue\TOPfrontfalse}
-%
-\ProcessOptions\relax
+
+\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
+\@ifpackageloaded{scrextend}{}{\RequirePackage{scrextend}}
+\@ifpackageloaded{iftex}{}{\RequirePackage{iftex}}
+\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+
+\DeclareOptionX{cucitura}[7mm]{\setlength\T@Pbinding{#1}\@bindingtrue}
+\DeclareOptionX{corpo}[10pt]{\unless\ifdim#1<\@xivpt\p@\@xivpttrue\fi
+ \changefontsizes{#1}}
+\DeclareOptionX{chapterbib}[true]{\chapterbibliographtrue}
+\DeclareOptionX{evenboxes}[true]{\evenboxestrue}
+\DeclareOptionX{libro}[true]{\librotrue}
+\DeclareOptionX{stile}[standard]{\setkeys{toptesi}{stile=#1}}
+\define@choicekey{toptesi}{stile}[\val\nr]{standard,classica,trieste}{%
+ \ifcase\nr
+ \typeout{valore=\number\nr}\classicafalse
+ \or
+ \typeout{valore=\number\nr}\classicatrue
+ \or
+ \typeout{valore=\number\nr}\classicatrue
+ \else
+ \typeout{valore=\number\nr}\classicafalse
+ \fi}
+\DeclareOptionX{autoretitolo}[true]{\ifclassica\@utoretitolotrue\fi}
+\DeclareOptionX{oldstyle}[true]{\ifclassica\@ldstyletrue\fi}
+\DeclareOptionX{pdfa}{\PackageWarning{toptesi}{%
+ ***********************************************\MessageBreak%
+ Option pdfa ignored.\MessageBreak%
+ Read documentation toptesi-it-*.pdf,\MessageBreak%
+ because package pdfx has changed\MessageBreak%
+ ***********************************************\MessageBreak%
+ }}
+
+\DeclareOptionX{numerazioneromana}[true]{\TOPnumerazioneromanatrue}
+
+\newcommand\NoValidTipo[1]{%
+\PackageError{toptesi}{Option value `#1' not defined\MessageBreak
+}{Type `X' to exit and check your input}}
+
+
+\DeclareOptionX{tipotesi}[topfront]{%
+ \ifstrequal{#1}{frontespizio}{\TOPfrontfalse\T@Pfrontespiziotrue
+ \AtEndOfPackage{\RequirePackage{frontespizio}}%
+ }{%
+ \ifstrequal{#1}{topfront}{\TOPfronttrue\T@Pfrontespiziofalse
+ \AtEndOfPackage{\RequirePackage{topfront}}%
+ }{%
+ \TOPfrontfalse\T@Pfrontespiziofalse
+ \ifstrequal{#1}{custom}{\relax}{%
+ \ifstrequal{#1}{triennale}{%
+ \def\TPT@tipo{toptesi-monografia}% opz:monografia
+ }{\ifstrequal{#1}{secondaria}{% opz: secondaria
+ \edef\TPT@tipo{toptesi-sss}%
+ }{%
+ \edef\TPT@tipo{toptesi-#1}% opz: triennale,
+ }% % magistrale, dottorale
+ }%
+ \AtEndOfPackage{%
+ \IfFileExists{\TPT@tipo.sty}%
+ {\RequirePackage{\TPT@tipo}}{\NoValidTipo{#1}}%
+ }%
+ }% opz: custom
+ }% opz: topfront
+ }% opz: frontespizio
+ }
+\ProcessOptionsX*
+
% \end{macrocode}
-% The \texttt{graphicx} package is loaded by default; it is required for
-% inserting the university logo(s); 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.
+% The \texttt{graphicx} package is loaded by default; it is
+% required for inserting the university logo(s); 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.
+% On the occasion of loading package|etoolbox|, we define
+% |\ifempty| that controls if its argument is a void or empty
+% string; it is not sufficient to use |\ifdefempty| or |\ifdefvoid|,
+% because the argument generally is not a macro; neither it is
+% possible to check the string by means of |\ifcsempty| or
+% |\ifcsvoid|, because sometimes it is a macro and in any case
+% there might be situations when the argument string happens
+% to equal an existing control sequence name; therefore first
+% we expand the possibly argument into an internal macro, then we test
+% such macro for emptiness.
%
% \begin{macrocode}
\RequirePackage{graphicx}
\RequirePackage{etoolbox}
-\if@xivpt\input{size14.clo}\fi
+\RequirePackage{xspace}
+\newcommand*\ifempty[1]{\edef\@tempA{#1}%
+\ifx\@tempA\@empty\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
% \end{macrocode}
%
-% The |\textheight| is parametrised to the paper height and adjusted so as to
-% contain an integer number of normal text lines. A new dimension is defined
-% to hold the actual value of the inner/spine margin.
+% The |\textheight| is parametrised to the paper height and
+% adjusted so as to contain an integer number of normal text
+% lines. A new dimension is defined to hold the actual value
+% of the inner/spine margin.
%
% \begin{macrocode}
\newlength\interno
-\textheight 0.7\paperheight
-\setlength{\textheight}{\dimexpr\textheight*\baselineskip/\baselineskip+\topskip}
+\normalsize% necessary to have the correct value for \baselineskip
+\textheight \paperwidth
+\setlength{\textheight}{%
+\dimexpr\textheight*\baselineskip/\baselineskip+\topskip}
% \end{macrocode}
-% The inner margin is parametrised to the paper width, but a small correction
-% is made if the extra size of 14pt is chosen. Also |\footskip| is parametrised
-% to the paper height in a slightly different way when the large |14pt| size is
-% chosen.
+% The inner margin is parametrised to the paper width, but
+% a small correction is made if the extra size of 14pt is
+% chosen. Also |\footskip| is parametrised to the paper height
+% in a slightly different way when the large normal font size
+% is not smaller than 14\,pt; the |\if@xivpt| switch is set to true when the value is assigned to the key |corpo|.
% \begin{macrocode}
-\ifx\f@size\@xivpt
- \setlength\interno{\dimexpr\paperwidth/6}
- \footskip=1,5\baselineskip
+\iflibro
+ \unless\if@xivpt
+ \textwidth=\dimexpr0.70711\paperwidth\relax
+ \setlength\interno{\dimexpr\paperwidth/8}
+ \footskip=1.5\baselineskip
+ \else
+ \textwidth=\dimexpr0.79549875\paperwidth\relax
+ \setlength\interno{\dimexpr\paperwidth/9}
+ \footskip=2\baselineskip
+ \fi
\else
- \setlength\interno{\dimexpr\paperwidth/7}
- \footskip=2\baselineskip
+ \unless\if@xivpt
+ \textwidth=\dimexpr0.70711\paperwidth\relax
+ \setlength\interno{\dimexpr\paperwidth/6}
+ \footskip=1.5\baselineskip
+ \else
+ \textwidth=\dimexpr0.79549875\paperwidth\relax
+ \setlength\interno{\dimexpr\paperwidth/7}
+ \footskip=2\baselineskip
+ \fi
\fi
% \end{macrocode}
-% The convenience of holding the spine margin within a dimensional register
-% becomes really useful now in order to define the other text-body
-% grid-dimensions.
-% Without binding correction the inner and outer margin are chosen equal, but
-% the grid is moved outwards if the binding correction option is specified.
+% The convenience of holding the spine margin within a
+% dimensional register becomes really useful now in order
+% to define the other text-body-grid dimensions.
+% Without binding correction the inner and outer margin
+% are chosen equal, but the grid is moved outwards if the
+% binding correction option is specified.
% \begin{macrocode}
-\textwidth=\dimexpr\paperwidth-2\interno\relax
-\oddsidemargin=\dimexpr\interno-1in\relax
-\evensidemargin=\oddsidemargin
-\marginparwidth=\dimexpr\interno-2.5\marginparsep
+\iflibro
+ \interno=\dimexpr\paperwidth-\textwidth\relax
+ \oddsidemargin=0.414214\interno\relax
+ \evensidemargin=\dimexpr\paperwidth-\textwidth-\oddsidemargin\relax
+\else
+ \oddsidemargin=\dimexpr(\paperwidth-\textwidth)/2\relax
+ \evensidemargin=\oddsidemargin
+\fi
+\marginparwidth=\dimexpr\evensidemargin-2.5\marginparsep
+\oddsidemargin=\dimexpr\oddsidemargin-1in\relax
+\evensidemargin=\dimexpr\evensidemargin-1in\relax
\AtBeginDocument{%
\if@binding
\PackageInfo{TOPtesi}{Margin width recalculation}
@@ -1014,16 +2746,20 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
% \end{macrocode}
%
-% We now establish the page style. We start by setting to ``empty'' 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}.
+% We now establish the page style. We start by setting to
+% ``empty'' 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{{}{}}
@@ -1033,15 +2769,17 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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 the
-% uppercasing that is done in all the default document classes, and it is
-% underlined at a fixed distance from the base line. If the chapter or section
-% heading exceed the |\textwidth| a warning is issued so as to invite the user
-% to exploit the sectioning commands optional short argument.
+% 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 the uppercasing that is done in
+% all the default document classes, and it is underlined at
+% a fixed distance from the base line. If the chapter or section
+% heading exceed the |\textwidth| 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\ps@headings{\let\@mkboth\markboth% autoretitolo
\def\@oddfoot{\null\hfill {\scshape\lapagina} \hfill\null}
\let\@evenfoot\@oddfoot
%
@@ -1072,14 +2810,17 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\fi
\def\headWarn#1{\PackageWarning{toptesi}{%
+*******************************************\MessageBreak
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}}
+ See the LaTeX Handbook (1994) on section C.4.1\MessageBreak
+*******************************************\MessageBreak}}
% \end{macrocode}
-% It is also necessary to redefine the format of the unnumbered chapter entries
-% in the table of contents so as to have page numbers in small caps.
+% It is also necessary to redefine the format of the unnumbered
+% chapter entries in the table of contents so as to have page
+% numbers in small caps.
% \begin{macrocode}
-\renewcommand*\l@chapter[2]{%
+\renewcommand\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
@@ -1096,80 +2837,112 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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; but 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.
+% The various tables of contents, or figures, or tables
+% require some boolean variables to be defined; in facts,
+% although the \sigla{ISO} regulations require that every technical
+% report contains the list of figures and/or tables,
+% in Italy theses rarely contain these lists; but 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.
+% The |\frontmatter| and |\mainmatter| commands are defined
+% and at the beginning of the document the default situation
+% of front matter is established. For the |\backmatter|
+% command it suffices to turn out sectional numbering, and
+% to allow opening chapters also on even numbered pages.
% \begin{macrocode}
-\def\frontmatter{\clearpage\ps@plain\pagenumbering{roman}%
- \numeriromanitrue\frontmattertrue\@openrightfalse\c@secnumdepth=-2}
+\def\frontmatter{\clearpage\ps@plain%
+ \ifTOPnumerazioneromana\numeriromanitrue\fi
+ \frontmattertrue\@openrightfalse\c@secnumdepth=-2\relax
+}
+
\def\mainmatter{\if@twoside\@openrighttrue\fi
- \numeriromanifalse\frontmatterfalse\c@secnumdepth=2
- \clearpage\ps@headings\pagenumbering{arabic}%
- }
-\AtBeginDocument{\frontmatter}
+ \ifTOPnumerazioneromana\numeriromanifalse\fi
+ \frontmatterfalse\c@secnumdepth=2
+ \clearpage\ps@headings
+ \ifTOPnumerazioneromana\pagenumbering{arabic}\fi
+}
+\newcommand\backmatter{\cleardoublepage[empty]%
+\setcounter{secnumdepth}{-1}\if@twoside\@openrightfalse\fi}
+
+\AtBeginDocument{%
+ \ifTOPnumerazioneromana\pagenumbering{roman}\fi\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.
+% 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|. This
+% refers especially to the |\sommario|/|\summary| and
+% |\ringraziamenti|/|\acknowledgements| sections. On the
+% contrary even an unnumbered chapter (for example a preface)
+% turns on the main matter typesetting style.
+%
+% 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}
%
-% Before going further on, we redefine the |\cleardoublepage| command so that
-% it uses by default the plain page style for the blank page to be possibly
-% inserted if chapters should start on an odd page: but with the
-% |\blankpagestyle| command it can be set to any other style, for example
-% the |empty| page style.
+% Before going further on, we redefine the |\cleardoublepage|
+% command so that it uses by default the plain page style
+% for the blank page to be possibly inserted if chapters
+% should start on an odd page: but with the |\blankpagestyle|
+% command it can be set to any other style, for example the
+% |empty| page style.
% \begin{macrocode}
\let\ps@blank\ps@plain
\newcommand*\blankpagestyle[1]{%
\expandafter\let\expandafter\ps@blank\csname ps@#1\endcsname}
-\renewcommand\cleardoublepage[1][blank]{\clearpage\ifodd\value{page}\else
- \if@twoside\if@openright
-\clearpage\null\thispagestyle{#1}\clearpage\fi\fi\fi}
+\renewcommand\cleardoublepage[1][blank]{\clearpage
+\unless\ifodd\value{page}
+ \if@twoside
+ \if@openright
+ \null\thispagestyle{#1}\clearpage
+ \fi\fi\fi}
% \end{macrocode}
%
-% We have to define the front matter sectioning names |\sommario| and
-% |\ringraziamenti| so as to remain in the front matter.
+% We have to define the front matter sectioning names |\sommario|
+% (alias |\summary|) and |\ringraziamenti| (alias
+% |\acknowledgements|) so as to remain in the front matter.
% \begin{macrocode}
\def\sommario{%
\iffrontmatter\else\frontmattertrue\fi
\chapter*{\summaryname}}
+\let\summary\sommario
%
\def\ringraziamenti{%
\iffrontmatter\else\frontmattertrue\fi
\chapter*{\acknowledgename}}
+\let\acknowledgements\ringraziamenti
% \end{macrocode}
-% The strings |\summaryname| and |\acknowledgename| are not defined for every
-% language option to \texttt{babel}. Default definitions are given below, and
-% the user must define new names for localising 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 that
-% of the main matter. Actually it is not necessary to redefine the whole
-% commands, but just those of the unstarred versions. In facts
-% |\chapter| commands to typeset the Summary and the Acknowledgements chapters,
-% as defined above, are regularly typeset in the style of the front matter,
-% opening on any page (even or odd) and numbered with small caps roman numerals.
+% The strings |\summaryname| and |\acknowledgename| are not
+% defined for every language option to \texttt{babel}. Default
+% definitions are given below, and the user must define new
+% names for localising 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 that of the main matter.
+% Actually it is not necessary to redefine all the commands,
+% but just those of the unstarred versions. In facts
+% |\chapter| commands to typeset the Summary and the
+% Acknowledgements chapters, as defined above, are regularly
+% typeset in the front matter style, opening on any page
+% (even or odd) and numbered with small caps roman numerals.
% \begin{macrocode}
\def\@chapter[#1]#2{\iffrontmatter\mainmatter\fi
\ifnum \c@secnumdepth >\m@ne
@@ -1209,11 +2982,11 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\Huge \bfseries #2\par}%
\@endpart}
% \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.
+% 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 |\chapter| commands.
% \begin{macrocode}
\renewcommand\tableofcontents{%
\chapter*{\contentsname}%
@@ -1239,9 +3012,11 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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.
+%
+% We need to define |\indici| (alias |\allcontents|) 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
@@ -1260,21 +3035,27 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\listoffigures
\let\addvspace=\saveaddvspace}
\fi
-\ifbool{@twoside}{\clearpage\thispagestyle{empty}\null\clearpage}{}}
+\ifbool{@twoside}{\cleardoublepage[empty]}{}}
+\let\allcontents\indici
% \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 two columns.
+% 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 two columns.
% \begin{macrocode}
\onecolumn
% \end{macrocode}
%
-% Here come some declarations for vertical justification and for avoiding
-% an hyphenated word at the bottom of a page
+% Here come some declarations for vertical justification
+% and for avoiding an hyphenated word at the bottom of a page
% \begin{macrocode}
\if@twoside
- \flushbottom
+ \unless\ifScuDo
+ \flushbottom
+ \else
+ \raggedbottom
+ \fi
\else
\ifx\@xivpt\f@size
\raggedbottom
@@ -1285,24 +3066,27 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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 larger 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 some 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.
+% 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 larger
+% 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 some 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.
+% 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
@@ -1311,20 +3095,25 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\@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 the 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 figures 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.
+% Since we are at it we define the floating bodies placing
+% parameters; not only the values ``here'', ``page top''
+% and ``page bottom'', that we set as the 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 the parameters set by this
+% extension file 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 often than large tables) and these tend to clog the
+% figures 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}
%
@@ -1340,76 +3129,111 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\def\dblfloatpagefraction{0}
% \end{macrocode}
-% One command that the default definition does not satisfy me very much is
-% the |\caption| command; Of course it is possible to configure the caption
-% styles by means of the \pack{caption} package and its handy set of option
-% styles specified by means of the \textit{key$=$value} syntax; but if this
-% package is not used, then it is convenient to redefine the internal
-% |\@makecaption| macro that performs the job as explained hereafter.
-% The issue 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 last word. If one sets the |\finalhyphendemerits|
-% parameter 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 centred 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 caption width shrinking 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 re\-stacking 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
+% One command that the default definition does not satisfy
+% me very much is the |\caption| command; of course it is
+% possible to configure the caption styles by means of the
+% \pack{caption} package and its handy set of option styles
+% specified by means of the \textit{key$=$value} syntax;
+% but if this package is not used, then it is convenient
+% to redefine the internal |\@makecaption| macro that
+% performs the job as explained hereafter. Since it does
+% not cost much I add also the definition of |\captionof|.
+%
+% The issue is that I prefer a narrower justified caption
+% rather than one where the last line is just a short word
+% or the right segment of an hyphenated last word. If one
+% sets the |\finalhyphendemerits| parameter to an extremely
+% high value, one might succeed in avoiding a hyphenated
+% penultimate caption line, 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 label and
+% number, is shorter than the text width it is typeset as
+% centred 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 caption width
+% shrinking must be computed according to the number of
+% lines the paragraph occupies.
+%
+% In order to count the number of lines of the caption
+% paragraph, 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 one 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.
+% Therefore 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 larger that
+% one third of the caption width, then the vertical box
+% is recomposed by re\-stacking 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} \]
-% By the way, if the package \pack{caption} has been loaded in the preamble,
-% the specific definition of this bundle is not defined at all; it is
-% necessary to delay this definition at |\AtBeginDocument| so we are sure
-% that that the package has been or has not been loaded. Of course
-% if the \pack{caption} package has not been loaded the |\captionsetup| macro
-% is not defined and its use (for example, as a left over of some experiments
-% with the \pack{caption} package) would produce an error for this reason we
-% define it as a gobbling macro so as to neutralise its presence.
+% By the way, if the package \pack{caption} has been loaded
+% in the preamble, this specific recalculation must not be
+% executed at all; it is necessary to delay this definition
+% at |\AtBeginDocument| so we know for sure if that the package
+% has been actually loaded. Of course if the \pack{caption} package
+% has not been loaded the |\captionsetup| macro is not
+% defined and its use (for example, as a leftover of some
+% experiments with the \pack{caption} package) would produce
+% an error for this reason we define it as a gobbling macro
+% so as to neutralise its presence.
+%
+% At this point it is very simple to add the |\captionof|
+% command in order to use a caption also for figures that
+% are set outside floating bodies; it might be useful when
+% small figures or tables are inserted in unusual places,
+% such as a table, a minipage, or similar non floating
+% environments. The only thing that suffices to insert is
+% the name of the corresponding not used float.
% \begin{macrocode}
\AtBeginDocument{\@ifpackageloaded{caption}{}{%
\providecommand\captionsetup{}\renewcommand\captionsetup[2][]{}%
+\providecommand\captionof[1]{\def\@captype{#1}\caption}
+\let\originalcaption\caption
\newdimen\captionwidth
+\newdimen\fullwidth
+\if@twocolumn\fullwidth=\columnwidth\else\fullwidth=\textwidth\fi
\belowcaptionskip=\abovecaptionskip
\long\def\@makecaption#1#2{%
\begingroup
@@ -1417,9 +3241,9 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\finalhyphendemerits 100000\relax
\linespread{0.95}\selectfont
\vskip \abovecaptionskip
- \captionwidth=\hsize
- \advance\captionwidth-3em
- \setbox0 \hbox{#1.\quad#2}%
+ \ifdim\hsize<\fullwidth \captionwidth=\hsize\else
+ \captionwidth=\dimexpr\hsize-3em\fi
+ \setbox0 \hbox{\ifblank{#1}{}{#1.\quad}#2}%
\ifdim\wd0>\hsize
\setbox1 \vbox{\hsize=\captionwidth
\unhbox0\par\global\setbox2\lastbox}%
@@ -1447,31 +3271,419 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
}}}
% \end{macrocode}
-% We define the |\goodpagepbreak| command; we have to distinguish if the
-% command is issued in vertical mode or in horizontal mode; In the former
-% instance we assume it has been issued between two paragraphs and a
-% potential page break is required before the second paragraph; while in
-% the latter case we assume that a |\vadjust| element should be inserted
-% so that a page break takes place after the current line has been typeset.
-% the command accepts an optional argument that represents the maximum
-% number of lines that should be present on the page in order to issue
-% a |\newpage| command; in other words if the number of lines available
-% on the page are less or equal to the optional number, then a |\newpage|
-% command is issued, otherwise noting is done; The test |\ifhmode| is used
-% in order to avoid any action if in math mode.
+%
+% ^^A SDFIGURE
+% Always delayed to the |\begin{document}| statement execution
+% we define a new (possibly floated) environment
+% |SD| that creates a box where there is the main environment
+% contents with its caption to a side, precisely to the side
+% close to the outer margin of the page. This implies that
+% in one side printing the caption is always on the right,
+% while in two side printing the caption is on the right in
+% right/odd pages and on the left in left/even pages.
+%
+% The environment opening statements requires the name of
+% a floating object, even if this environment does not float
+% anything, but the name is just used to describe its contents;
+% it is possible therefore to specify \verb|\begin{SD}{figure}|
+% or \verb|\begin{SD}{table}|, or whatever other environment
+% name defined with the \pack{float} package functionality;
+% this little repetition is for using the correct prefix to
+% the caption text even when the environment is used outside
+% a formal floating one. In the following paragraphs we speak
+% about an ``image'' to mean the ``environment main contents''.
+%
+% This new special environment box gets actually floated if
+% explicitly inserted within a formal floating environment;
+% But this special environment box is usable even as
+% a standalone environment, or as an object in a fixed position,
+% such as when it is set within a mini-page or another similar
+% environment; in such situations it is not required to use
+% |\captionof|; actually this command is simulated within this
+% very \amb{SD} environment
+%.
+% The actual commands for inserting
+% the picture and its caption within the |figure| environment
+% have names starting with |SD|, namely |\SDcaption| and
+% |\SDimage|. Its syntax is as follows:
+%\begin{flushleft}\obeylines
+%\Bambiente{SD}\marg{contents kind}\meta{*}\oarg{fraction}
+%\cs{SDimage}\marg{image commands}
+%\cs{SDcaption}\oarg{lof entry}\marg{caption}\marg{label}
+%\Eambiente{SDfigure}
+%\end{flushleft}
+% The \meta{contents kind} equals one of the formal floating
+% environments; this information is used to prefix the
+% caption text with the proper name and number.
+%
+% The meaning of the optional asterisk is that its presence
+% allows protrusion of the box into the external margin,
+% while its absence forces the box width to equal the text
+% width. The optional \meta{fraction} is used to specify the
+% fraction of the current object width that is dedicated to the
+% caption, the remaining space being dedicated to the image;
+% actually both widths are reduced a little bit to allow a space
+% between the caption and image boxes. But remember: a small
+% value of this \meta{fraction} implies a narrow caption.
+%
+% Since it is necessary to maintain in separate independent
+% areas the picture and the caption, and we need to shuffle
+% them when odd or even pages are involved, their handling
+% is particular. The |\SDimage| (or |\SDtabular| as an alias
+% of |\SDimage|) command syntax is very simple:
+%\begin{flushleft}
+%\cs{SDimage}\marg{image commands}
+%\end{flushleft}
+% where the \meta{image commands} may be anything suitable so be
+% used within a a floating environment; a picture, a tabular,
+% a drawing, a box, any command to place the object in the
+% correct position within the dedicated space; any argument
+% is substantially valid with the caution that this ``anything''
+% remains local to that particular ``image''. In any case when
+% the ``mage'' is a real picture and has to be resized to a
+% relative dimension, remember that both the picture and its
+% caption are typeset within boxes narrower than the total text
+% width or the total environment width; the best way to access
+% the width is to use its |\hsize| value.
+%
+% The |\SDcaption| is very similar to that of |\caption| except
+% for a small detail; its syntax is the following:
+%\begin{flushleft}
+%\cs{SDcaption}\oarg{lof entry}\marg{image}\marg{label}
+%\end{flushleft}
+% where the parameters have the following meanings.
+%\begin{enumerate}
+%\item The \oarg{lof entry} optional bracket delimited argument
+% contains the usual short caption entry for the list of
+% figures.
+%\item The \marg{caption} mandatory brace delimited argument
+% contains the image caption.
+%\item The \marg{label} mandatory brace delimited argument
+% contains the string that is usually passed to the |\label|
+% command; this string is mandatory in the sense that it
+% is the |\SDcaption| command that takes care of issuing
+% the |\label|\marg{label} command but, since this \meta{label}
+% is used to recover the page number (possibly after a second
+% compilation run) in order to establish the page number parity,
+% it is necessary that the |\label| command is issued at the
+% proper moment and that at the same time the \meta{label}
+% string is globally saved into a suitable macro so as to use
+% it at the right moment.
+%\end{enumerate}
+% Remember: the TOPtesi caption setting differs forme the
+% standard one and from its redefinitions with other packages
+% such as the |caption| one. The TOPtesi particular redefinition
+% tries to adjust the caption with in such a way as to avoid an
+% unusually short last line in multi line captions. Therefore
+% it may be noticed that sometimes some captions are slightly
+% less wide than expected. It is not a bug, it may be considered
+% a feature.
+%
+% Here comes its documented code. First some dimension registers,
+% counters and boxes must be defined.
+% \begin{macrocode}
+
+\newdimen\SDcaptionwidth
+\newdimen\SDfigurewidth
+\newdimen\SDlinewidth
+\newbox\SDfigbox \setbox\SDfigbox\hbox{}%
+\newbox\SDcapbox \setbox\SDcapbox\hbox{}%
+\newcounter{SDpage}%
+\newcounter{NumberSD} \setcounter{NumberSD}{0}
+\providecommand*\theNumberSD{\value{NumberSD}}
+\newif\ifNumberFloat \NumberFloattrue
+% \end{macrocode}
+%
+% Then we redefine the |\caption| command in order to add
+% the |\caption*| variety that prints just the caption
+% without any numbering and any prefix; of course it does
+% not increment the suitable float counter nor it adds any
+% entry to the list of any float.
+% We have to memorise the original definition and add
+% the |xparse| extended new definition. Notice that this
+% new |\caption| macro accepts the same syntax as the
+% original one when no asterisk is specified, while when
+% the |\caption*| command is used only the long caption
+% argument is used, and the list of floats entry, if
+% present, is neglected. This new command may be directly
+% used by the final user in those rare circumstances where
+% just an explanation is required and the object being
+% explained does not require to be cross referenced.
+%^^A CONFLITTO CON \CAPTION* DI LONGTABLE? -- CONTROLLARE<<<< !
+% \begin{macrocode}
+\NewDocumentCommand\captionSD{s O{} m}{% o: optionale fra graffe
+ \IfBooleanTF{#1}%
+ {%
+ \@makecaption{}{#3}%
+ }{%
+ \ifempty{#2}%
+ {%
+ \originalcaption{#3}%
+ }{%
+ \originalcaption[#2]{#3}%
+ }%
+ }%
+}
+% \end{macrocode}
+
+% Then the environment |SDbox| is defined by means of the
+% facilities of the |xparse| package; this allows the use of
+% the ``non delimited'' asterisk argument. It also requires other
+% arguments, the first of which is mandatory and specifies the
+% contents kind, be it a figure, or a table, or an algorithm,
+% or anything else that has been introduced with the facilities
+% of the |float| package.
+% Among the opening the commands we
+% deal with the (optional) asterisk dependent box width.
+% \begin{macrocode}
+\DeclareDocumentEnvironment{SDbox}{ G{} s O{0.5} }{%------OPENING
+\NumberFloattrue
+\ifempty{#1}%
+ {\NumberFloatfalse}%
+ {\def\@captype{#1}}%
+\IfBooleanTF{#2}%
+ {\SDlinewidth=\dimexpr\textwidth+0.8\marginparwidth}%
+ {\SDlinewidth=\textwidth}%
+% \end{macrocode}
+% Then we fix our attention to the correct use of the optional third
+% argument, whose descriptor assigns it a default value of |0.5|:
+% \begin{macrocode}
+\SDcaptionwidth=#3\SDlinewidth
+\ifdim\SDcaptionwidth<0.3\SDlinewidth
+ \SDcaptionwidth=0.3\SDlinewidth
+\fi
+\ifdim\SDcaptionwidth>0.7\SDlinewidth
+ \SDcaptionwidth=0.7\SDlinewidth
+\fi
+\SDfigurewidth=\dimexpr\SDlinewidth-\SDcaptionwidth\relax
+\SDcaptionwidth=\dimexpr\SDcaptionwidth-\columnsep\relax
+\SDfigurewidth=\dimexpr\SDfigurewidth-\columnsep\relax
+% \end{macrocode}
+% We add some test to verify if the environment is used within
+% the |figure| floating environment, or it is used ad a fixed
+% object; we first est if we are within a floating environment;
+% if not we define |\@captype| to contain the string `figure';
+% if yes we have to test if we are really within the |figure|
+% environment; if not, we locally define |\@captype|; if yes
+% we relax. This means that we can insert the |SDfigure| even
+% within a |table| environment as sometimes a tabular and a
+% drawing should float together (may be because a drawing with
+% its own caption represents the tabular entries).
+%
+% And this is all for the opening commands; all these settings
+% shall be used by |\SDimage| and |\SDcaption| described in the
+% sequel; here we describe the environment closing commands,
+% taking into account that the above commands have saved the
+% \meta{label} string into the |\@tempSD| macro and have set
+% their image and caption-text respectively into boxes
+% |\SDfigbox| and |\SDcapbox|.
+%
+% The code tests if the saved \meta{label} string is empty;
+% this should never take place, but it is better to perform
+% such task' If the string is empty, a fall back value equal
+% to the page number of the page that is still open at
+% processing time is used; may be a warning message would
+% be helpful, but since this empty string should never be
+% empty, it appears as a super luxury feature, that we can
+% do without.
+% But if the string ss not empty, we test if the saved
+% |\label| data, possibly read from the |.aux| file on a second
+% typesetting run, gas the normal \LaTeX\ structure or the
+% |hyperref| modified one; the former contains two braced
+% arguments, while the latter contains five such arguments;
+% in both cases the interesting page number is the second
+% argument. The existence of a |ver@hyperref.sty| macro
+% allows to know if the |hyperref| package has been invoked
+% in the preamble, therefore upon testing this macro we
+% know if we should use |\@secondoffive| or |\@secondoftwo|
+% to read the real page number of the current |SDfigure|
+% environment. Before reading the actual value of the
+% |.aux| file |\label| saved data, we must access the
+% string that contains these data but we have to expand
+% several times the saved macros until we have the real
+% string in |\@temD|.
+% \begin{macrocode}
+}{%---------------------------------------------------CLOSING
+ {\ifcsdef{r@\@tempSD}%
+ {%
+ \edef\@tempD{r@\@tempSD}%
+ \edef\@tempD{\expandafter\csuse\expandafter{\@tempD}}%
+ \edef\@tempD{\@tempD}%
+ \ifcsdef{ver@hyperref.sty}%
+ {%
+ \edef\@tempD{\noexpand\@secondoffive\@tempD}%
+ }%
+ {%
+ \edef\@tempD{\noexpand\@secondoftwo\@tempD}%
+ }%
+ \edef\@tempD{\@tempD}%
+ \setcounter{SDpage}{\@tempD}%
+ }%
+ {%
+ \setcounter{SDpage}{\thepage}%
+ }%
+ }%
+% \end{macrocode}
+% At this point we have all the necessary pieces of information
+% and we can shuffle the caption and image boxes depending
+% on one or two side typesetting, and on the parity of the
+% correct page number.
+% \begin{macrocode}
+\ifbool{@twoside}%
+ {%
+ \ifnumodd{\value{SDpage}}%
+ {%
+ \makebox[\textwidth][l]{\makebox[\SDlinewidth]{%
+ \usebox{\SDfigbox}\hfill\usebox{\SDcapbox}}}%
+ }{%
+ \makebox[\textwidth][r]{\makebox[\SDlinewidth]{%
+ \usebox{\SDcapbox}\hfill\usebox{\SDfigbox}}}%
+ }%
+ }{%
+ \makebox[\textwidth][l]{\makebox[\SDlinewidth]{%
+ \usebox{\SDfigbox}\hfill\usebox{\SDcapbox}}}%
+ }
+}
+% \end{macrocode}
+%
+% The |\SDcaption| code appears to be strangely complicated;
+% but it actually performs several actions; the first
+% (optional) argument is intended to collect the ``short
+% caption'' to be used, if specified, for the list of floats
+% entry; if not specified ,as usual, the ``long caption''
+% second argument is used for this entry. The (optional)
+% brace delimited argument, on the contrary, is the label
+% string that usually is passed as the argument of the
+% |\label| command. If specified it is this |\SDcaption|
+% macro duty to enter this command at the proper moment;
+% the caption prefix is established by the value of the
+% first (optional) argument of the |SDbox| environment,
+% or by the floating environment where the |SDbox| one is
+% nested. On the opposite if this macro |\SDcaption| argument
+% is not specified, the caption is not numbered nor prefixed,
+% and cannot be cross referenced; there are circumstances
+% when this situation is very useful, but it is up to the
+% user to decide when it is useful for his/her needs.
+% interpretation.
+%
+% In this macro definition the boolean switch |NumberSD|
+% has been already set by the opening statement commands
+% of the |SDbox| environment; it is true only if the first
+% environment (optional) argument has been specified or
+% the environment is nested within a floating environment.
+% Therefore if this boolean is false the unnumbered caption
+% gets typeset, otherwise a second boolean is tested, the
+% contents of the third (optional) argument of this macro
+% |\SDcaption|. If it is specified, the numbered and prefixed
+% caption gets typeset and this argument is used to label
+% this caption; otherwise and unnumbered and not prefixed
+% caption gets typeset with and internally generated label
+% that allows to fetch the final page number so as to decide
+% if the caption has to be typeset to the right or to the
+% left side of the object depending on the page number parity.
+% \begin{macrocode}
+\NewDocumentCommand\SDcaption{ O{} m G{} }{%
+ \notbool{NumberFloat}%
+ {%
+ \stepcounter{NumberSD}%
+ \edef\@tempSD{SD\the\c@NumberSD}%
+ \begin{lrbox}{\SDcapbox}%
+ \parbox[t]{\SDcaptionwidth}%
+ {%
+ \captionSD*{#2}\relax
+ \expandafter\label\expandafter{\@tempSD}%
+ }%
+ \end{lrbox}%
+ }%
+ {%
+ \ifempty{#3}%
+ {%
+ \NumberFloatfalse
+ \stepcounter{NumberSD}%
+ \edef\@tempSD{SD\the\c@NumberSD}%
+ \begin{lrbox}{\SDcapbox}%
+ \parbox[t]{\SDcaptionwidth}%
+ {%
+ \captionSD*{#2}\relax
+ \expandafter\label\expandafter{\@tempSD}%
+ }%
+ \end{lrbox}%
+ }{%
+ \begin{lrbox}{\SDcapbox}%
+ \parbox[t]{\SDcaptionwidth}%
+ {%
+ \captionSD[#1]{#2}\label{#3}\gdef\@tempSD{#3}%
+ }%
+ \end{lrbox}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% We call the object to be shown within the |SDbox| with the
+% name ``image'' wich can be anything that can be enclosed
+% in a parbox or a minipage; it can be an actual picture
+% imported with an |includegraphics| command, it can be a
+% drawing or a diagram created with the |picture|, or |tikz|,
+% or |pgfplots|, or |pstricks| commands; it can be a table,
+% an algorithm, an example, a theorem; anything that can be
+% typeset within a box. With this name in mind we create
+% the |SDimage| command to insert the object into our |SDbox|.
+% A |\SDtabular| command is an alias to |\SDimage|; the user
+% may define other such aliases for inserting other objects
+% that suit his/her preferences and the logical contents.
+%
+% Also the |\SDimage| command is not so simple; in order to
+% have both caption and image boxes aligned at the top, we
+% must be sure that such boxes have their reference points
+% at their top left corner; due to the heterogeneity of such
+% ``images'', we need to lower the image box to have the
+% upper left corner raised with respect to the base line the
+% amount of a capital `M' in the current font.
+% \begin{macrocode}
+\newcommand\SDimage[1]{%
+ \setbox0\hbox{M}\dimen0\ht0\relax
+ \begin{lrbox}{\SDfigbox}\parbox[t]{\SDfigurewidth}{#1}\end{lrbox}%
+ \dimen2\dimexpr\ht\SDfigbox+\dimen0\relax
+ \setbox\SDfigbox\hbox{\raisebox{-\dimen2}{\box\SDfigbox}}%
+}
+\let\SDtabular\SDimage
+% \end{macrocode}
+% We would not suggest to use a floating or a fixed |SDbox|
+% environment for all figures, tables or what else; its
+% use simply depends on the box contents; this environment
+% may be useful when a normal setting would cause a lot of white
+% space around the displayed material.
+%
+% We define the |\goodpagepbreak| command; we have to
+% distinguish if the command is issued in vertical or in
+% horizontal mode; in the former instance we assume it
+% has been issued between two paragraphs and a
+% potential page break is required before the second
+% paragraph; while in the latter case we assume that
+% a |\vadjust| element should be inserted so that a page
+% break takes place after the current line has been typeset.
+% The command accepts an optional argument that represents
+% the maximum number of lines that should be present on
+% the page in order to issue a |\newpage| command; in other
+% words if the number of lines available on the page are
+% less or equal to the optional number, then a |\newpage|
+% command is issued, otherwise noting is done; the test
+% |\ifhmode| is used in order to avoid any action if in math mode.
% \begin{macrocode}
\newcommand\goodpagebreak[1][4]{\ifvmode
\unless\ifdim\dimexpr\pagegoal-\pagetotal>#1\baselineskip\newpage\fi
\else\ifhmode\vadjust{\newpage}\fi\fi}
% \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 an unnumbered chapter or
+% The (deprecated) option \opz{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 an unnumbered chapter or
% section.
% \begin{macrocode}
\def\redef@bibitem{\def\@bibitem##1{\item\if@filesw
@@ -1503,8 +3715,9 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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.
+% 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
@@ -1515,22 +3728,27 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\@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 DOS 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
-% recognised as a digit, therefore the ``intelligent'' comma inserts the necessary
-% space by itself.
+% 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 DOS 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 recognised as a digit, therefore the
+% ``intelligent'' comma inserts the necessary space by itself.
%
% \begin{macrocode}
\DeclareMathSymbol{\virgola}{\mathpunct}{letters}{"3B}
@@ -1546,31 +3764,38 @@ Read documentation toptesi-it-*.pdf, because package pdfx has changed}}
\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 compilation
-% 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|.
+% The TOPtesi bundle contains two new chapter like sections
+% activated with the commands |\sommario| (alias |\summary|)
+% and |\ringraziamenti| (alias |\acknowledgements|) 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 by the |\captions|\meta{language}
+% macros defined by the \texttt{babel} or \texttt{polyglossia}
+% language description files; 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 sectioning 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 compilation 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}
\providecommand*\summaryname{}
\providecommand*\acknowledgename{}
\newcommand*\ExtendCaptions[3]{{%
\@ifundefined{captions#1}{%
-\PackageWarning{toptesi}{Language option #1 not specified\MessageBreak
+\PackageWarning{toptesi}{%
+Language option #1 not specified\MessageBreak
Skipping any redefinition\MessageBreak}%
}{%
\expandafter\let\expandafter\@tempA\csname captions#1\endcsname
@@ -1580,18 +3805,22 @@ Skipping any redefinition\MessageBreak}%
\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:
+% 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:
+% In facts the \texttt{babel} and \texttt{polyglossia}
+% 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}
@@ -1600,43 +3829,53 @@ Skipping any redefinition\MessageBreak}%
% \selectlanguahe{spanish}
% ...
% \end{verbatim}
-% and the rest of the thesis will be typeset correctly in Spanish. Remember
-% that Italian is the main language and nothing is necessary to set 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.
+% and the rest of the thesis will be typeset correctly in
+% Spanish. Remember that Italian is the main language and
+% nothing is necessary to set up the Italian defaults.
+% If English is desired, then after |\begin{document}| it
+% 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} or
+% \texttt{polyglossia} command; after the beginning of the
+% document it is then possible to specify |\inglese| or
+% |\english|, and the default language is changed to 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} and \texttt{polyglossia} 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 main 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{enumerate}
-% \item specify |\english| \emph{after} the |\begin{document}| statement,
-% if English is supposed to be the main 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 suffices 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{enumerate}
+% 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 main
+% 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}[noitemsep]
+% \item
+% specify |\english| \emph{after} the |\begin{document}|
+% statement, if English is supposed to be the main 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\ or LuaLaTeX\ is being used for typesetting, it
+% suffices 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
+% as the default one.
+% \end{itemize}
% \begin{macrocode}
\AtBeginDocument{%
\italiano
@@ -1644,35 +3883,43 @@ Skipping any redefinition\MessageBreak}%
}
% \end{macrocode}
%
-% At last the subsidiary and independent packages \texttt{topcoman} and
-% \texttt{topfront} are requested for input; the former is loaded only when
-% the |documentclass| option |noTOPfront| has NOT been declared.
-% For using XeLaTeX as the typesetting engine it's necessary to load such
-% packages at the ``begin document'' step, so that all the other settings,
-% especially fonts, are already established. Even if the past experience
-% has shown that loading these packages does not need to be deferred al the
-% ``begin document'' level with pdf\/\LaTeX, it does not hurt to delay their
-% loading operation with both engines. This delayed loading implies that the
-% commands defined in |topfront| and in |topcoman| cannot be used in the
-% preamble.
+% At last the subsidiary and independent packages
+% \texttt{topcoman} and \texttt{topfront} are requested
+% for input; the latter is loaded only when the
+% |documentclass| option |noTOPfront| has NOT been declared.
+% This action, therefore has to be delayed till the ``begin
+% document'' step, in order to be sure that other packages
+% have possibly been loaded to typeset the title page, and/or
+% other packages have been loaded to properly use the units
+% of measure. This delayed loading implies that the
+% commands defined in |topfront| and in |topcomand| cannot
+% be used in the preamble. Notice that also the \textsl{scudo}
+% option implies that the title page is typeset with its
+% special commands and environments, therefore it sets the
+% suitable switches so as to avoid loading the |topfront|
+% extension file. This applies also to the other modules particular to special kinds of thesis.
% \begin{macrocode}
\AtBeginDocument{%
- \unless\ifT@Pfrontespizio
+ \unless\ifT@Pfrontespizio\ifTOPfront
\RequirePackage{topfront}
- \fi
+ \fi\fi
\RequirePackage{topcoman}%
}
% \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 glyphs. 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|
+% Last but not least, here comes the specification set for the
+% \sigla{PDF/A}-1b format.
+%
+% First of all the patches to the macros |\not| and
+% |\mapstochar| that produce problems with that format,
+% because they have a declared width of 0\,pt; this
+% is no problem for \texttt{pdflatex}, but it is a problem
+% for the \sigla{PDF/A} format. Therefore these commands must be
+% replaced by equivalent ones that do not use zero-width
+% glyphs. 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}
\ifPDFTeX
@@ -1683,13 +3930,15 @@ Skipping any redefinition\MessageBreak}%
{\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:
+% 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
@@ -1706,65 +3955,75 @@ Skipping any redefinition\MessageBreak}%
\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.
-%
-% \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
-% I believe that the philological mark-up requires typesetting environments
-% similar to the mathematical ones: in facts 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 localising 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 in the |topfront| module. For other languages the configuration file comes in handy.
-%
-% Since theses in humanities may end up to occupy several volumes (classically
-% ``tomo'' in Italian means ``volume'', although the latter word 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 printed 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 localisation allows to change the infix string that is going to be
-% printed in the title page. But when several tomes are involved, instead
-% of using the |\frontespizio| macro or |frontespizio| environment, use
-% the |\tomo| macro, that provides to stepping up the volume counter before
+% The above patches are introduced irrespective of using
+% \texttt{pdflatex} for producing a \sigla{PDF/A} compliant file;
+% one might need to produce a traditional \sigla{PDF} file, or even
+% a DVI file, to be converted to the \sigla{PDF} format, in order to
+% possibly further transform it into a \sigla{PDF/A} one by means
+% of other useful packages, such as \pack{pdfpages}.
+%
+% \subsection{The \opz{classica} option}
+% As mentioned above, the \opz{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 I believe that the
+% philological mark-up requires typesetting environments
+% similar to the mathematical ones: in facts 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 localising
+% this bundle makes this point less stringent compared to
+% 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 in the |topfront| module.
+% For other languages the configuration file is very handy.
+%
+% Since theses in humanities may end up to occupy several
+% volumes\footnote{Classically ``tomo'' in Italian means ``volume'',
+% although the latter word 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 printed 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 localisation allows to change the infix string that
+% is going to be printed in the title page. But when several
+% tomes are involved, instead of using the |\frontespizio|
+% macro or |frontespizio| environment, use the |\tomo| macro.
+% There is no equivalent to the |frontespizio| environment.
+% |\tomo| provides to stepping up the volume counter before
% actually printing the new tome title page.
% \begin{macrocode}
\newcounter{tomo}
\newcommand*{\tomo}{\clearpage\stepcounter{tomo}\boolfalse{topTPTlogos}%
\fr@ntespizio}
% \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.
+% 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 ``thepage'')
+% 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
@@ -1778,36 +4037,48 @@ Skipping any redefinition\MessageBreak}%
\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 and 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
-% use 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, and
-% eventually 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!
+% 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 \opz{autoretitolo}; in this case the left header
+% contains the candidate's name and 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
+% heads 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 suggest the user to
+% use 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 be 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 \opz{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, and eventually 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!
+% Remember also that |\@@author| contains the author's name
+% without the ID number if any.
% \begin{macrocode}
\if@utoretitolo
\if@twoside
@@ -1818,7 +4089,7 @@ Skipping any redefinition\MessageBreak}%
\def\@evenhead{%
\setbox\@intesta\hbox{\ifPDFTeX\latintext\fi
\footnotesize\strut\textsc{%
- \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle}%
+ \@@author\ifcsvoid{@secondauthor}{\ et al.}: \@stitle}%
}%
\ifdim\wd\@intesta>\textwidth\headwrn{\titolo}\fi
\underline{\makebox[\textwidth]{\box\@intesta}}}%
@@ -1833,20 +4104,24 @@ Skipping any redefinition\MessageBreak}%
\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{\ifPDFTeX\latintext\fi\footnotesize
- \textsc{%
- \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle}}%
- \setbox\tw@\hbox{\ifPDFTeX\latintext\fi\footnotesize\textsl{\rightmark}}%
+ \def\@oddhead{{\setbox\z@\hbox{\ifPDFTeX\latintext\fi
+ \footnotesize\textsc{%
+ \@@author\ifcsvoid{@secondauthor}{}{\ et al.}: \@stitle}}%
+ \setbox\tw@\hbox{\ifPDFTeX\latintext\fi
+ \footnotesize\textsl{\rightmark}}%
\dimen@=\dimexpr2em + \wd\z@ + \wd\tw@\relax
\ifdim\dimen@<\textwidth \relax
\else
- \setbox\z@\vbox{\hsize.48\textwidth\parindent\z@\raggedright
+ \setbox\z@\vbox{\hsize.48\textwidth\parindent\z@
+ \raggedright
\ifPDFTeX\latintext\fi\footnotesize\textsc{%
- \@author\ifx\@secondauthor\empty\else\ et al.\fi: \@stitle
+ \@@author\ifcsvoid{@secondauthor}{}{\ et al.}: \@stitle
}}%
- \setbox\tw@\vbox{\hsize.48\textwidth\parindent\z@\raggedleft
- \ifPDFTeX\latintext\fi\footnotesize\textsl{\rightmark}}%
- \fi
+ \setbox\tw@\vbox{\hsize.48\textwidth\parindent\z@
+ \raggedleft
+ \ifPDFTeX\latintext\fi\footnotesize
+ \textsl{\rightmark}}%
+ \fi
\setbox\@intesta\vbox to\z@{%
\vss\hbox to\textwidth{\strut\box\z@\hfill\box\tw@}}%
\underline{\box\@intesta}}}%
@@ -1855,21 +4130,28 @@ Skipping any redefinition\MessageBreak}%
\fi
% \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 specialised extension
-% modules, such as, for example, the |eledmac| Package, 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.
+% The footnote rule separator is also longer than 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
+% specialised extension modules, such as, for example,
+% the |eledmac| or |reledmac| packages, 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 one 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@
@@ -1883,27 +4165,38 @@ Skipping any redefinition\MessageBreak}%
\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.
+% 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| (alias |\emptypage|) is much shorter to
+% type in than its expansion.
+%
+% The environments \texttt{dedica} (alias \texttt{dedication})
+% for the dedication, and \texttt{citazioni} (alias
+% \texttt{wittysentences}) 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}/\texttt{dedication}
+% 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 text.
+% The \texttt{citazioni}/\texttt{wittysentences}
+% 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
+% field of humanities.
%
% \begin{macrocode}
\newcommand*\paginavuota{\clearpage\thispagestyle{empty}\null\clearpage}
+\let\emptypage\paginavuota
%
\newenvironment{dedica}{\clearpage
\if@twoside
@@ -1917,6 +4210,7 @@ Skipping any redefinition\MessageBreak}%
}{%
\endlist\clearpage
}
+\let\dedication\dedica \let\enddedication\enddedica
%
\newenvironment{citazioni}{%
\clearpage\thispagestyle{empty}
@@ -1927,56 +4221,82 @@ Skipping any redefinition\MessageBreak}%
}{%
\endlist\clearpage
}
+\let\wittysentences\citazioni \let\endwittysentences\endcitazioni
% \end{macrocode}
% \iffalse
%</topsty>
% \fi
%
-% \subsection{The \texttt{topfront.sty} code}
-% This file may input by \texttt{toptesi}, version 5.x provided that the
-% |noTOPfront| is not specified among the |\documentclass| options, but
-% it can be used as an independent extension module with (hopefully) any
-% document class.
-%
-% 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. Among other things it can typeset
+% \subsection{The \texttt{topfront.sty} code}\label{sec:topfront}
+% This file is input by \texttt{toptesi}, version 6 and higher
+% provided that no title page or thesis type options have been
+% specified by the user; it can also be used as an independent
+% extension module with (hopefully) any document class.
+%
+% It contains all the definition for the composition of just
+% the title page od ``standard'' theses along the style
+% requirements of \texttt{toptesi}, version 5.x or higher. It is not
+% loaded by |toptesi| even when typesetting the title page
+% for theses made according the requirements of the ScuDo
+% doctoral school; with the \textsf{scudo} option to
+% |toptesi| loading of |topfront| is inhibited and in its
+% place another extension module, |toptesi-scudo|, is loaded.
+% The same holds true with the other special thesis modules.
+% This latter files are described in a subsequent sections.
+%
+% It |topfront| 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 the title page. Among other things it can typeset
% also the copyright page on the verso of the title page if the
% |\retrofrontespizio| macro argument is not empty.
%
-% This file specifies that it requires the \LaTeXe\ format and identifies
-% itself. Since this module package might be used to extend the performances
-% of other classes, this package does not specify any input encoding,
-% on the assumptions that the calling class already provided this information.
+% This file specifies that it requires the \LaTeXe\ format
+% and identifies itself. Since this module might be
+% used to extend the performances of other classes, this
+% file does not specify any input encoding, on the assumption
+% that the calling class already provided this information.
% \iffalse
%<*topfrn>
% \fi
%
-% In oder to use |topfront| as a stand-alone extension package with other
-% classes it is necessary to verify if the |classica| option corresponds
-% to a valid setting of |\ifclassica|; since this test is defined in the
-% |toptesi| class, here we need to verify its existence and, in case, to
-% set its value to |false|. This implies two points: we need a powerful
-% macro package to test a ``switch'', and when this |topfront| module is
-% used as a stand-alone one, the settings of the |classica| options are
-% not available. This requires to define switches and counters, besides
-% options for this package, even if they may be specified to the |toptesi|
-% class; of course when |topfront| is used as a standalone package, the
-% class might not be |toptesi| therefore a complete set up even with the
-% |classica| option must be set again.
+% In oder to use |topfront| as a stand-alone extension package
+% with other classes it is necessary to verify if the \opz{classica}
+% option corresponds to a valid setting of |\ifclassica|;
+% since this test is defined in the |toptesi| class,
+% here we need to verify its existence and, in case, to set
+% its value to |false|. This implies two points: we need a
+% powerful macro package to test a ``switch'', and, when this
+% |topfront| module is used as a stand-alone one, the settings
+% of the \opz{classica} options are not available. This requires
+% to define switches and counters, besides options for this
+% package, even if they may be specified to the |toptesi|
+% class; of course when |topfront| is used as a standalone
+% package, the class might not be |toptesi| therefore a complete
+% set up even with the \opz{classica} option must be set again.
% \begin{macrocode}
\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-\ifcsundef{ifclassica}{%
-\newif\ifclassica \classicafalse
-\newif\if@utoretitolo \@utoretitolofalse
-\newif\if@ldstyle \@ldstylefalse
-\newif\if@xivpt \@xivptfalse
-\newif\if@binding \@bindingfalse
-}{}
-\ifcsundef{ifTOPfront}{\newif\ifTOPfront \TOPfronttrue}{}
+\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
+\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
+\ifcsundef{if@ldstyle}{\newif\if@ldstyle\@ldstylefalse}{}
+\ifcsundef{if@xivpt}{\newif\if@xivpt \@xivptfalse}{}
+\ifcsundef{if@binding}{\newif\if@binding\@bindingfalse}{}
+\ifcsundef{ifScuDo}{\newif\ifScuDo \ScuDofalse}{}
+\ifcsundef{ifmonografia}{\newif\ifmonografia\monografiafalse}{}
+\ifcsundef{iftriennale}{\newif\iftriennale\triennalefalse}{}
+\ifcsundef{ifmagistrale}{\newif\ifmagistrale\magistralefalse}{}
+\ifcsundef{ifdottorale}{\newif\ifdottorale\dottoralefalse}{}
+\ifcsundef{ifsecondaria}{\newif\ifsecondaria\secondariafalse}{}
+\ifcsundef{ifplurale}{\newif\ifplurale\pluralefalse}{}
+%\ifcsundef{iffrontspizio}{\newif\iffrontespizio\frontespiziofalse}{}
+%\ifcsundef{}{\newif false}{}
+
+\ifcsundef{ifTOPfront}{\newif\ifTOPfront \TOPfronttrue
+\newif\ifevenboxes \evenboxesfalse}{}
\ifcsundef{c@tomo}{\newcounter{tomo}}{}
+\DeclareOption{evenboxes}{\evenboxestrue}
\DeclareOption{cucitura}{\@bindingtrue}
\DeclareOption{14pt}{\@xivpttrue}
\DeclareOption{classica}{\classicatrue}
@@ -1984,23 +4304,27 @@ Skipping any redefinition\MessageBreak}%
\DeclareOption{oldstyle}{\ifclassica\@ldstyletrue\fi}
\ProcessOptions*\relax
-\if@xivpt\@ifl@aded{clo}{size14}{}{\input{size14.clo}}\fi
% \end{macrocode}
%
-% For the title page we need a special style, in order to put some information
-% in the header and some other in the footer, without actually changing the
-% page layout, except for centring the grid horizontally in the page.
-% The headers, due to a specific request of Politecnico di Torino, is to have
-% the university logo(s) in the header; other universities maintain their
-% logo(s) in the lower part of the page as it was done all the time in the
-% past. We need some device to switch positions to the logos, without
-% actually changing the page layout. Since the logo(s) are sort of large,
-% the header must smash the header contents, so as to avoid any modification
-% of the position and size of the other parts of the page. The |TPT@logobox|
-% box is being defined later on and the |\logosede| command takes care of
-% filling it up. Besides these devices, the |\frontepsizio| command and the
-% |frontespizio| environments (with or without asterisk) produce either
-% layout depending on the state of the boolean |topTPTlogos|.
+% For the title page we need a special style, in order to
+% put some information in the header and some other in the
+% footer, without actually changing the page layout, except
+% for horizontally centring the grid in the page.
+% The headers, due to a specific request of Politecnico di
+% Torino, is to have the university logo(s) in the header;
+% other universities maintain their logo(s) in the lower part
+% of the page as it was done all the time in the past.
+% We need some device to switch position to the logos,
+% without actually changing the page layout. Since the
+% logo(s) are sort of large, the header must smash the
+% header contents, so as to avoid any modification of the
+% position and size of the other parts of the page.
+% The |\TPT@logobox| box shall be defined later on and
+% the |\logosede| command takes care of filling it up.
+% Besides these devices, the |\frontespizio| command and
+% the |frontespizio| environments (with or without asterisk)
+% produce either layout depending on the state of the boolean
+% |topTPTlogos|.
% \begin{macrocode}
\def\headstrut{\vrule \@depth4\p@ \@height\z@ \@width\z@}
\def\ps@titlepage{\let\@mkboth\@gobbletwo
@@ -2008,13 +4332,15 @@ Skipping any redefinition\MessageBreak}%
\hbox to\hsize{\hfil{\Large{\@submitdate}}\hfil}}}%
\let\@evenfoot\@oddfoot
\def\@oddhead{%
- \vbox to\headheight{\vss\iftopTPTlogos
+ \vbox to\headheight{\vss
+ \iftopTPTlogos
\hbox to\textwidth{%
\headstrut\hfil
\raisebox{3\baselineskip}{\usebox\TPT@logobox}\hfil\null%
- }\fi
- \ifcsvoid{@ateneo}{}{\vskip\smallskipamount
- \hbox to\textwidth{\hss\LARGE\MakeUppercase{\@ateneo}\hss}}
+ }
+ \fi\par
+ \ifcsvoid{@ateneo}{}{%
+ \hbox to\textwidth{\hss\LARGE\rule[-1ex]{0pt}{3.3ex}\MakeUppercase{\@ateneo}\hss}}
\vss
}%
}%
@@ -2023,9 +4349,10 @@ Skipping any redefinition\MessageBreak}%
}
% \end{macrocode}
%
-% Similarly a different title page style for typesetting the logos in the
-% lower half of the page is defined; since it is the only style usable
-% with the |classica| option, we call it the |classica| page style:
+% Similarly a different title page style for typesetting
+% the logos in the lower half of the page is defined; since
+% it is the only style usable with the \opz{classica} option, we
+% call it the |classica| page style:
% \begin{macrocode}
\def\ps@classica{\let\@mkboth\markboth
\def\@oddhead{\vbox{%
@@ -2042,7 +4369,8 @@ Skipping any redefinition\MessageBreak}%
\def\@oddfoot{\vbox to \dimexpr\paperheight/20\relax{\vss
\ifclassica
\hbox to \hsize{\hfil\raisebox{-.3ex}[\z@][\z@]{%
- \vrule\@height-2.6\p@\@depth3\p@\@width\dimexpr\textwidth/3}\hfil}%
+ \vrule\@height-2.6\p@\@depth3\p@\@width
+ \dimexpr\textwidth/3}\hfil}%
\fi
\hbox to\hsize{\hfill{\Large{\@submitdate}}\hfill}}%
}%
@@ -2051,30 +4379,36 @@ Skipping any redefinition\MessageBreak}%
}%
% \end{macrocode}
%
-% The title page information depends on the type of ``thesis'' that is being
-% typeset. The following commands specify the kind of information that is
-% going to be typeset. Some boolean variables are automatically set by the
-% commands in order to change some formatting depending on the kind of thesis.
-% For languages that distinguish feminine from masculine adjectives or
-% qualifications some automatic machinery is set up in order to format some
-% infix strings in a way that copes with the singular or plural forms; in
-% particular when there is a multitude of authors (maximum three) of different
-% gender the adjectives or qualifications are set masculine plurals, while
-% when there is just one author or the authors are of the same gender the
-% adjectives or qualifications are set according to number and gender.
-% 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:
+% The title page information depends on the type of ``thesis''
+% that is being typeset. The following commands specify the
+% kind of information that is going to be typeset. Some boolean
+% variables are automatically set by the commands in order
+% to change some formatting depending on the kind of thesis.
+% For languages that distinguish feminine from masculine
+% adjectives or qualifications, some automatic machinery is
+% set up in order to format some infix strings in a way
+% that copes with the singular or plural forms; in
+% particular when there is a multitude of authors (maximum
+% three) of different gender, the adjectives or qualifications
+% are set as masculine plural names, while when there is just
+% one autho0.79549875r 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 Ph.D thesis format (except for the ScuDo
+% school), while the other variable \texttt{triennale}
+% 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}
\newif\iffemminile
\newif\ifdottorato \dottoratofalse
-\newif\iflaureatriennale \laureatriennalefalse
+\newif\iftriennale \triennalefalse
% \end{macrocode}
%
-% The infix word for the |classica| option are redefined.
+% The infix words for the |classica| option are redefined.
% \begin{macrocode}
\ifTOPfront
\ifclassica
@@ -2085,54 +4419,61 @@ Skipping any redefinition\MessageBreak}%
\fi\fi
% \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 page 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
+% 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 \opz{autoretitolo}
+% the thesis title is written together with the author's
+% name in the even page 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
+\def\monografia#1{\global\triennaletrue
\global\dottoratofalse
\global\def\titolo##1{\PackageWarning{topfront}%
{Il titolo e' gia' stato impostato con
il comando \string\monografia}}%
\gdef\@titolo{#1}}
+
\let\@stitle\empty
+
\newcommand*{\titolo}[2][]{%
-\ifbool{laureatriennale}{%
+\ifbool{triennale}{%
\PackageWarning{topfront}{Il titolo deve essere impostato con
il comando \string\monografia}
-}
-{\def\@tempA{#1}\ifdefempty{\@tempA}%
- {\gdef\@stitle{#2}}
- {\gdef\@stitle{#1}}%
+}{%
+\def\@tempA{#1}\ifdefempty{\@tempA}%
+ {\gdef\@stitle{#2}}{\gdef\@stitle{#1}}%
\gdef\@titolo{#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 reflects
-% this subtle difference might be the following:
+% The |\materia| or its alias |\Materia| are used to
+% specify the subject of the thesis; as a silly example
+% a set of commands that reflects this subtle difference
+% might be the following:
% \begin{verbatim}
% \materia{Applied Tetratricotomy}
-% \titolo{The tetratricotomy of blond hair}
+% \titolo{Tetratricotomy of blond hair}
% \sottotitolo{Accurate measurements of the four fourths
% of tetratricotomised 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
+% {\huge Tetratricotomy of blond hair\par}\bigskip
% {\large Accurate measurements of the four fourths\\
% of tetratricotomised blond hair}
% \end{minipage}\bigskip
@@ -2141,17 +4482,19 @@ Skipping any redefinition\MessageBreak}%
\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 PhD student'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|.
+% 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 PhD student'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}}
@@ -2160,62 +4503,71 @@ Skipping any redefinition\MessageBreak}%
\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.
+% 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
+% getting around this feature.
% \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
-% defence 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 then the formatting of the ``date'' may
-% be still different. This command is aliased with |\esamendidottorato|
+% \end{macrocode}
+%
+% The next set of macros is used to typeset the ``date'' of
+% the thesis defence 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 then the
+% formatting of the ``date'' may be still different.
+% This command is aliased with |\esamendidottorato|
% which literally means ``defence of the doctoral dissertation'';
-% nevertheless both commands refer to a simple date in one of those formats.
-%
-% |\getseduta| splits the date into 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@dutaclassica| is called with the whole string. On turn% |\s@dutaclassica|
-% 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 either 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.
+% nevertheless both commands refer to a simple date
+% in one of those formats.
+%
+% |\getseduta| splits the date into 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@dutaclassica| is called with the whole string.
+% On turn |\s@dutaclassica| verifies if the date should be
+% typeset with old style numbers or with the usual lining
+% figures; in the latter case the whole string is assigned
+% to |\@submitdate|; in the former one the year part may
+% be either 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 special en-dash surrounded
+% with white space.
%
% \begin{macrocode}
\def\sedutadilaurea#1{\getseduta#1 !}
@@ -2250,20 +4602,25 @@ Skipping any redefinition\MessageBreak}%
\def\s@paranumeri#1-#2!{\def\1{#1}\def\2{#2}}%
\let\esamedidottorato\sedutadilaurea
% \end{macrocode}
-% Here |\annoaccademico| is defined to typesets the infix string corresponding
-% to ``Anno accademico'' followed by the year range in old style numbers
-% (irrespective of the \texttt{oldstyle} option); localisation 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 with the specific shape of the old style numbers.
-% Notice that |\annoaccademico| and |\sedutadilaurea| do not do the same
-% things, besides the fact that |\annoaccademico| works only with the
-% |classica| option in force and a special format is chosen. Therefore
-% the user has to use only one of these twocommands, and if s/he uses
-% |\annoaccademico| while the |classica| option is not in force, s/he
-% gets an warning and the ``date'' gets formatted in a special way so as
-% to remember the user that |\annoaccademico| requires the |classica| option.
+% Here |\annoaccademico| is defined to typesets the infix
+% string corresponding to ``Anno accademico'' followed by
+% the year range in old style numbers (irrespective of the
+% \texttt{oldstyle} option); localisation 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 with the
+% specific shape of the old style numbers.
+% Notice that |\annoaccademico| and |\sedutadilaurea| do
+% not do the same things, besides the fact that |\annoaccademico|
+% works only with the |classica| option in force and a
+% special format is chosen. Therefore the user has to use
+% only one of these two commands, and if s/he uses
+% |\annoaccademico| while the |classica| option is not
+% in force, s/he gets an warning and the ``date'' gets
+% formatted in a special way so as to remember the user
+% that |\annoaccademico| requires the |classica| option.
% \begin{macrocode}
\newcommand*\NomeAnnoAccademico[1]{\gdef\AnnoAccademico{#1}}
\@ifundefined{AnnoAccademico}{\gdef\AnnoAccademico{Anno accademico}}{}
@@ -2286,103 +4643,131 @@ Skipping any redefinition\MessageBreak}%
\vrule\@width\dimen@\@height\dimen4\@depth-\dimen\tw@}}}
% \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
-% module 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
-% 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| may receive 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.
-% It might be necessary to define another name
-% in place of ``Facolt\`a di\textvisiblespace'', since with recent bills,
-% the administrative structure of all Italian universities has been changed
-% and the activities formally assigned to the Faculties may be now the
-% responsibility of other structures that may have different names in different
-% universities. If the internal command defined by |\FacoltaDi| is empty, no
-% name is printed at all and the title page will not have any indication of a
-% particular faculty or other educational structure. Therefore the Degree Course
-% name, specified with |\corsodilaurea| should be always specified. The alias
-% commands |\StrutturaDidattica| and |\struttura| are defined as equivalent
-% commands to |\FacoltaDi| and |\facolta| respectively.
-%
-% Finally |\logosede| gets the name of the graphic file that contains the
-% information relative to the university logo; it may receive also a comma
-% separated list of logo file names, as it might be necessary when a thesis
-% is developed in a multiple university environment. If such logo file is not
-% available, the user should not specify this command; if the thesis is
-% typeset on smaller paper size than A4 or letter, it would be much better
-% to avoid inserting one or more logos in the title page; this is particularly
-% important when using A5 paper size. Nevertheless this decision is left to
-% the user and this package neither controls this fact nor outputs any warning.
-% If the user uses this command to insert one or more university logo files
-% but some file is not available, the usual \texttt{graphicx} package warning
-% is issued but compilation may go on without the missing logo.
-%
-% The treatment of one or more logo files requires some extra commands and
-% control sequences suitable to store temporary data or to specify style
-% parameters: one is the name of a save box; another is the default spacing
-% between the logos in the typeset page; the third is the height of the logos.
-% The default spacing may be set with the help of the macro |\setlogodistance|
-% -- notice that the default value is |3em|, and if a different distance is
-% desired, it should not be much larger or much smaller than the default one;
-% the default logo height is specified as an optional command to the |\logosede|
-% command, while the default size is given by the |\interno| length. This length
-% is specified in the main |toptesi| package in order to compute the typesetting
-% grid, so that if the |topfront| module is used by itself with other classes,
-% the existence of the |\inteno| control sequence is tested and if it is
-% undefined, then and only then it is defined in this module and assigned a
-% default value.
-% The save box name is just for internal workings and does not require any
-% customisation.
-% The analysis and processing to the possible list of logo file names is done
-% through the usual means of the delimited argument extraction of the single
-% names from the list; the ``string'' of logos is then composed in a save box;
-% as the list has been completely processed, the box is measured; if its width
-% is shorter than the |\textwidth| it is typeset without further processing;
-% if it's larger, on the opposite, the box gets scaled down so that its width
+% 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 module 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 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| may receive 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
+% Ingegneria''; 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.
+% It might be necessary to define another name in place of
+% ``Facolt\`a di\textvisiblespace'', since with recent bills,
+% the administrative structure of all Italian universities
+% has been changed and the activities formally assigned
+% to the Faculties may be now the responsibility of other
+% structures that may have different names in different
+% universities. If the internal command defined by
+% |\FacoltaDi| is empty, no name is printed at all and the
+% title page will not have any indication of a particular
+% faculty or other educational structure.
+% Therefore the Degree Course name, specified with
+% |\corsodilaurea| should always be specified.
+% The alias commands |\StrutturaDidattica| and |\struttura|
+% are defined as equivalent commands to |\FacoltaDi| and
+% |\facolta| respectively.
+%
+% Finally |\logosede| gets the name of the graphic file that
+% contains the information relative to the university logo;
+% it may receive also a comma separated list of logo file
+% names, as it might be necessary when a thesis
+% is developed in a multiple university environment.
+% If such logo file is not available, the user should not
+% specify this command; if the thesis is
+% typeset on smaller paper size than A4 or letter,
+% it would be much better to avoid inserting one or more logos
+% in the title page; this is particularly important when using
+% A5 paper size. Nevertheless this decision is left to
+% the user and this package neither controls this fact
+% nor outputs any warning.
+% If the user uses this command to insert one or more
+% university logo files but some file is not available,
+% the usual \texttt{graphicx} package warning is issued but
+% compilation may go on without the missing logo.
+%
+% The treatment of one or more logo files requires some extra
+% commands and control sequences suitable to store temporary
+% data or to specify style parameters: one is the name of
+% a save box; another is the default spacing between the
+% logos in the typeset page; the third is the height of the logos.
+% The default spacing may be set with the help of the
+% macro |\setlogodistance| -- notice that the default value
+% is |3em|, and if a different distance is desired, it should
+% not be much larger or much smaller than the default one;
+% the default logo height is specified as an option
+% command to the |\logosede| command, while the default
+% size is given by the |\T@Tlogoheight| length. This length
+% is specified in the main |toptesi| package in order
+% to compute the typesetting grid, so that if the |topfront|
+% module is used by itself with other classes, the existence
+% of the |\T@Tlogoheight| control sequence is tested and if it is
+% undefined, then and only then it is defined in this
+% module and assigned a default value.
+%
+% The save box name is just for internal workings and does
+% not require any customisation.
+%
+% The analysis and processing to the possible list of logo
+% file names is done through the usual means of the delimited
+% argument extraction of the single names from the list;
+% the ``string'' of logos is then composed in a save box;
+% as the list has been completely processed, the box is
+% measured; if its width is shorter than the |\textwidth|
+% it is typeset without further processing; if it is larger,
+% on the opposite, the box gets scaled down so that its width
% equals the |\textwidth|.
%
-% The |\tutoreaziendale| macro is the last title page 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.
-%
-% Eventually the |\retrofrontespizio| command, that by default is empty,
-% allows to typeset a copyright page; the argument of this command is in
-% total responsibility to the user who must write it in the thesis main
-% language; the user can specify from zero to several paragraphs, separated
-% by the vertical spaces s/he thinks best; the argument by default is typeset
-% at the bottom of the text block of the copyright page. The user can specify
-% any pertinent space at the bottom of his/her argument, so as to set the
-% text in the position s/he likes best.
-% In order to handle the copyright page in the proper way we need to test
-% if its definition is empty or blank so we need the powerful advanced macros
-% of the package |etoolbox| that has already been loaded by this module or
+% The |\tutoreaziendale| macro is the last title page
+% 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.
+%
+% Eventually the |\retrofrontespizio| command, that by
+% default is empty, allows to typeset a copyright page;
+% the argument of this command is in total responsibility
+% to the user who must write it in the thesis main language;
+% the user can specify from zero to several paragraphs,
+% separated by the vertical spaces s/he thinks best; the
+% argument by default is typeset at the bottom of the text
+% block of the copyright page. The user can specify any
+% pertinent space at the bottom of his/her argument, so as
+% to set the text in the position s/he likes best.
+% In order to handle the copyright page in the proper way
+% we need to test if its definition is empty or blank so
+% we need the powerful advanced macros of the package
+% |etoolbox| that has already been loaded by this module or
% by the main |toptesi| one.
% \begin{macrocode}
\def\ciclodidottorato#1{\gdef\@ciclo{#1 \@cyclename}}%
\def\corsodilaurea#1{\global\dottoratofalse\gdef\@corso{#1}}
-\def\corsodidottorato#1{\global\dottoratotrue\global\laureatriennalefalse
+\def\corsodidottorato#1{\global\dottoratotrue\global\triennalefalse
\gdef\@corso{#1}}
-\def\scuoladidottorato#1{\global\dottoratotrue\global\laureatriennalefalse
+\def\scuoladidottorato#1{\global\dottoratotrue\global\triennalefalse
\gdef\@phdschool{#1}}
\def\ateneo#1{\gdef\@ateneo{#1}}
\def\nomeateneo#1{\gdef\@nomeat{\expandafter\uppercase{\expandafter #1}}}
@@ -2395,11 +4780,11 @@ Skipping any redefinition\MessageBreak}%
\newcommand*\setlogodistance[1]{\TPT@logospace=#1}
\providecommand*{\@logosede}{}
-\ifcsundef{interno}{%\
- \newlength\interno
- \setlength\interno{\dimexpr\paperwidth/7}}{}
+\ifcsundef{T@Tlogoheight}{%\
+ \newlength\T@Tlogoheight
+ \setlength\T@Tlogoheight{0.8\dimexpr(\paperwidth-\textwidth)/2}}{}
-\newcommand\logosede[2][\interno]{\def\@logosede{#2}\TPT@logoheight=#1\relax
+\newcommand\logosede[2][\T@Tlogoheight]{\def\@logosede{#2}\TPT@logoheight=#1\relax
\ifcsvoid{@logosede}{\sbox{\TPT@logobox}{}}{\begin{lrbox}{\TPT@logobox}%
\expandafter\fillup@TCP@logobox\@logosede,!}}
@@ -2416,28 +4801,35 @@ Skipping any redefinition\MessageBreak}%
\newcommand\retrofrontespizio[1]{\long\gdef\@retrofrontespizio{#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
+% 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}
+% \begin{description}[noitemsep]
% \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[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[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''
@@ -2445,12 +4837,13 @@ Skipping any redefinition\MessageBreak}%
% \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 localising language strings: it
-% is necessary to localise the whole phrase, because of the position of
-% the adjectives.
+% 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 localising language strings: it
+% is necessary to localise the whole phrase, because of
+% the position of the adjectives.
% \begin{macrocode}
\newcommand\FacoltaDi[1]{\gdef\@faculty{#1}}
\let\StrutturaDidattica\FacoltaDi
@@ -2470,22 +4863,30 @@ Skipping any redefinition\MessageBreak}%
\newcommand\NomeSecondoTomo[1]{\gdef\SecondoTomo{#1}}
\newcommand\NomeTerzoTomo[1]{\gdef\TerzoTomo{#1}}
\newcommand\NomeQuartoTomo[1]{\gdef\QuartoTomo{#1}}
-\newcommand\IDN{\\\quad matricola:\space}
-% \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 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 single |\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 maybe 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
+\providecommand\IDlabel{\\\quad matricola\ }
+% \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
+% 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 single |\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 maybe 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{\jobname.cfg}{\input{\jobname.cfg}}%
@@ -2493,7 +4894,36 @@ Skipping any redefinition\MessageBreak}%
%
\@ifundefined{@cyclename}{\def\@cyclename{ciclo}}{}
\@ifundefined{@titolo}{\def\@titolo{}}{}
-\@ifundefined{@author}{\def\@author{}}{}
+
+\providecommand\@author{}\providecommand\@@author{}
+\NewDocumentCommand\candidato{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminilefalse\pluralefalse}
+\NewDocumentCommand\candidata{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminiletrue\pluralefalse}
+\providecommand\@secondauthor{}
+\NewDocumentCommand\secondocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\secondacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\@thirdauthor{}
+\NewDocumentCommand\terzocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\terzacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\IDlabel{matricola\ }
+
\@ifundefined{@principaladviser}{\def\@principaladviser{}}{}
\@ifundefined{@secondadviser}{\def\@secondadviser{}}{}
\@ifundefined{@thirdadviser}{\def\@thirdadviser{}}{}
@@ -2501,8 +4931,6 @@ Skipping any redefinition\MessageBreak}%
\ifDirettore\def\@PhDdirector{Direttore del corso di dottorato}\else
\def\@PhDdirector{Coordinatore del corso di dottorato}\fi}{}
\@ifundefined{@tutore}{\def\@tutore{}}{}
-\@ifundefined{@secondauthor}{\def\@secondauthor{}}{}
-\@ifundefined{@thirdauthor}{\def\@thirdauthor{}}{}
%
\@ifundefined{@nomerelatore}{\def\@nomerelatore{}}{}
\@ifundefined{@nomecandidato}{\def\@nomecandidato{}}{}
@@ -2545,10 +4973,11 @@ Skipping any redefinition\MessageBreak}%
\def\Candidate{Laureande}
\fi\fi
% \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 has already been defined empty as its default value.
+% 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 default value of the university logo command has already been defined ``empty''.
% \begin{macrocode}
\@ifundefined{@submitdate}{\def\@submitdate{\ifcase\the\month\or%
Gennaio\or Febbraio\or Marzo\or Aprile\or Maggio\or Giugno\or
@@ -2564,38 +4993,50 @@ Skipping any redefinition\MessageBreak}%
\@ifundefined{@InName}{\def\@InName{in}}{}
% \end{macrocode}
%
-% Finally we have the real macro |\frontespizio| and the corresponding environments,
-% the real macro or environments that actually typesets the title page.
-%
-% I recommend to use the environments, a new feature of version 5.85. But the legacy
-% command |\frontespizio| is still usable.
-% The principle on which these environments work is that the |frontespizio|
-% environment typesets the title page with logo(s) set in the page header,
-% while the |frontspizio*| environment typesets the logos after the information
-% on the title, the possible sub title and tome information, that is
-% in the lower half of the title page. In order to achieve this result each
-% environment sets the boolean variable |topTPTlogos| to either value |true|
-% (for header logos) or |false| otherwise. The key of the different typesetting
-% style is this boolean-variable state.
-%
-% Now, since the internal |frontespizio| environment opening command is
-% |\frontespizio| how is it possible to distinguish this opening statement
-% from the homonymous user command? The solution is a little tricky, but after
-% all very simple. the |\begin| command, with which an environment is started,
-% before calling the opening statement defines the internal service macro
-% |\@currenvir| to contain the environment name; this is used by the
-% |\end| statement to control that it is closing the last opened environment.
-% If the |\frontespizio| command is directly used, the |\@currenvir| macro
-% does not contain the name frontespizio; therefore if in the opening environment
-% definition we check the contents of |\@currenvir| against the string
-% |frontespizio| we can decide if the user resorted to the legacy command, or
-% the environment was correctly opened by means of |\begin|.
-% If the user resorted to the legacy command, the service macro |\fr@ontespizio|
-% is called that typesets the title page according to the current status of the
-% boolean |topTPTlogos|, a boolean that has a default value but the user can set
-% at its will. Otherwise the |frontespizio| environment is regularly executed.
-% Notice that the service macro |\fr@ntespizio| tests the state of the boolean
-% |classica| and accordingly uses a different page style.
+% Finally we have the real macro |\frontespizio| and the
+% corresponding environments, the real macros or environments
+% that actually typeset the title page.
+%
+% I recommend to use the environments, a new feature of
+% version 5.85. But the legacy command |\frontespizio| is
+% still usable. The principle on which these environments
+% work is that the |frontespizio| environment typesets the
+% title page with logo(s) set in the page header, while the
+% |frontspizio*| environment typesets the logos after the
+% information on the title, the possible sub title and tome
+% information, that is in the lower half of the title page.
+% In order to achieve this result each environment sets the
+% boolean variable |topTPTlogos| to either value |true|
+% (for header logos) or |false| (otherwise).
+% The key of the different typesetting style is this
+% boolean-variable state.
+%
+% Now, since the internal |frontespizio| environment opening
+% command is |\frontespizio| how is it possible to distinguish
+% this opening statement from the homonymous user command?
+% The solution is a little tricky, but, after all, very simple.
+% The |\begin| command, with which an environment is started,
+% before calling the opening statement defines the internal
+% service macro |\@currenvir| to contain the environment name;
+% this is used by the |\end| statement to control that it is
+% closing the last opened environment.
+%
+% If the |\frontespizio| command is directly used, the
+% |\@currenvir| macro does not contain the name ``frontespizio'';
+% therefore if in the opening environment definition we check
+% the contents of |\@currenvir| against the string
+% |frontespizio| we can decide if the user resorted to
+% the legacy command, or the environment was correctly
+% opened by means of |\begin|.
+% If the user resorted to the legacy command, the
+% service macro |\fr@ontespizio| is called that typesets
+% the title page according to the current status of the
+% boolean |topTPTlogos|, a boolean that has a default
+% value but the user can set at its will. Otherwise the
+% |frontespizio| environment is regularly executed.
+% Notice that the service macro |\fr@ntespizio| tests
+% the state of the boolean |classica| and accordingly
+% uses a different page style.
% \begin{macrocode}
\newbool{topTPTlogos} \booltrue{topTPTlogos}
@@ -2610,32 +5051,39 @@ Skipping any redefinition\MessageBreak}%
% \end{macrocode}
%
-% With the new boolean |AteneoInHead| we can mark these situations where the
-% university common name goes into header; with the |classica| option the
-% title page \emph{must} have this name in the header and if the user forgets
-% to specify one, this module fakes it with a clear message that the university
-% name has been forgotten, but at the same time this fake message fills up the
-% header position. On the other hand, when the |classica| option has not been
-% specified, the user can use either an empty university name or a specific
-% name. So only when the |\@ateneo| macro remains empty the university name
-% in the header remains really blank; this is good when the university name
-% is part of the university logo (this is the case for Politecnico di Torino,
-% and for many other universities). When no university name is set in the header
+% With the new boolean |AteneoInHead| we can mark these
+% situations where the university common name goes into the
+% header; with the |classica| option the title page
+% \emph{must} have this name in the header and if the user
+% forgets to specify one, this module fakes it with a clear
+% message that the university name has been forgotten, but
+% at the same time this fake message fills up the header
+% position. On the other hand, when the |classica| option
+% has not been specified, the user can use either an empty
+% university name or a specific name. So only when the
+% |\@ateneo| macro remains empty the university name
+% in the header remains really blank; this is good when the
+% university name is part of the university logo (this is
+% the case for Politecnico di Torino, and for many other
+% universities). When no university name is set in the header
% some little attention in formatting the title page is necessary.
%
% \begin{macrocode}
\newbool{AteneoInHead}\boolfalse{AteneoInHead}
% \end{macrocode}
%
-% In order to use the command |\frontespizio*| as en isolated command instead
-% of the starting command of the |frontespizio*| environment, we have to behave
-% as with the |\frontespizio| command, but we must test for a possible asterisk
-% following the command; for this reason we defined the |\TPTmaybestar| that
-% absorbs une following token: if the token is an asterisk, we set the appropriate
-% settings for the previous behaviour of the isolated command, but if it is
-% not an asterisk we must set it back into the list after finishing the execution
-% of the |\fr@ntespizio| service macro, whose function is to set the title page
-% information at the proper position, but must not contain any spurious material.
+% In order to use the command |\frontespizio*| as an isolated
+% command instead of the starting command of the |frontespizio*|
+% environment, we have to behave as with the |\frontespizio|
+% command, but we must test for a possible asterisk following
+% the command; for this reason we defined the |\TPTmaybestar|
+% that% absorbs une following token: if the token is an
+% asterisk, we set the appropriate settings for the previous
+% behaviour of the isolated command, but if it is
+% not an asterisk we must set it back into the list after
+% finishing the execution of the |\fr@ntespizio| service macro,
+% whose function is to set the title page information at the
+% proper position, but must not contain any spurious material.
% \begin{macrocode}
\newcommand\TPTmaybestar[1]{\def\@tempA{#1}%
\ifdefstring{\@tempA}{*}%
@@ -2644,35 +5092,40 @@ Skipping any redefinition\MessageBreak}%
}
% \end{macrocode}
%
-% We start defining the complex macro |\fr@ntespizio|. We start with a group
-% so that any settings performed by this command remain local; if the title page
-% environments had been used this group would be useless, but if the isolated
-% commands are used, then this group protects the rest of the document from
-% unusual local settings valid only for the title page.
+% We start defining the complex macro |\fr@ntespizio|. We start
+% with a group so that any settings performed by this command
+% remain local; if the title page environments had been
+% used, this group would be useless, but if the isolated
+% commands are used, then this group protects the rest of the
+% document from unusual local settings valid only for the
+% title page.
% \begin{macrocode}
\def\fr@ntespizio{%
\begingroup\par
% \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 both
+% 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 both
% of them.
% \begin{macrocode}
\oddsidemargin=\dimexpr(\oddsidemargin+\evensidemargin)/2\relax
\evensidemargin \oddsidemargin
% \end{macrocode}
-% 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
+% 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}
\null
\setcounter{page}{1}%
\normalfont
% \end{macrocode}
-% Depending on the style of the title page a different |\pagestyle| is set with
-% appropriate switches and settings. If with the classica style a university
-% name is blank, it is set to an explicit string that the setting of the
+% Depending on the style of the title page a different
+% |\pagestyle| is set with appropriate switches and settings.
+% If with the classica style a university name is blank,
+% it is set to an explicit string that the setting of the
% university name has been forgotten.
% \begin{macrocode}
\ifclassica
@@ -2686,16 +5139,19 @@ Skipping any redefinition\MessageBreak}%
\ifcsvoid{@ateneo}{}{\booltrue{AteneoInHead}}
% \end{macrocode}
%
-% The generic university name should already be in the header either in the logo
-% or in the header text; but in spite of this we test if the university generic
-% name macro is void, if it contains something, then we typeset also the generic
-% name; some candidates might obey to university regulations that require the name
-% of the university be at the top, just under the logo. The switch |\ifcsvoid|
-% is true if |@ateneo| is empty or blank, false otherwise; but even with page top
-% logos, no test is made in order to give the possibility to repeat the university
-% name. It is the user responsibility to set an empty value to the |\ateneo| macro
-% so as to avoid repeating the university name possibly already present in the logo
-% itself.
+% The generic university name should already be in the header
+% either in the logo or in the header text; but in spite of
+% this we test if the university generic name macro is void,
+% if it contains something, then we typeset also the generic
+% name; some candidates might obey to university regulations
+% that require the name of the university be at the top, just
+% under the logo. The switch |\ifcsvoid| is true if |@ateneo|
+% is empty or blank, false otherwise; but even with page top
+% logos, no test is made in order to give the possibility to
+% repeat the university name. It is the user responsibility to
+% set an empty value to the |\ateneo| macro so as to avoid
+% repeating the university name possibly already present in
+% the logo itself.
% \begin{macrocode}
\ifcsvoid{@ateneo}{%
\ifbool{topTPTlogos}
@@ -2709,18 +5165,19 @@ Skipping any redefinition\MessageBreak}%
}
% \end{macrocode}
%
-% If it is non blank the first thing we set on the page is the university
-% proper name and some vertical glue.
+% If it is non blank the first thing we set on the page is
+% the university proper name and some vertical glue.
% \begin{macrocode}
\ifcsvoid{@nomeat}{}
- {\ifbool{topTPTlogos}{\vspace*{3.5ex}}{\vspace*{-3ex}}%
+ {\ifbool{topTPTlogos}{\vspace*{\dimexpr \headsep+2.5ex}}{\vspace*{-3ex}}%
{\centering\@nomeat\par}\vfill}
% \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|.
+% 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
@@ -2729,27 +5186,31 @@ Skipping any redefinition\MessageBreak}%
\else
\ifcsvoid{@faculty}{}{%
\LARGE\ifx\@facnumber\empty\else\@facnumber\space\fi
- \@faculty\@facname\par\medskip
+ \@faculty\unskip\xspace\@facname\par\medskip
}
\fi
}%
% \end{macrocode}
-% Further specification: it inserts the field of the PhD research or the degree course
-% name; it inserts a line such as, for example, ``Philosophy Degree in Applied
-% Tetratricotomy~--~XVI~cycle'' or ``Master of Science in Applied Tetratricotomy''.
+% Further specification: it inserts the field of the PhD
+% research or the degree course name; it inserts a line
+% such as, for example, ``Philosophy Degree in Applied
+% Tetratricotomy~--~XVI~cycle'' or ``Master of Science
+% in Applied Tetratricotomy''.
% \begin{macrocode}
\ifcsvoid{@corso}{}{{\large
\ifdottorato
- \@PhDname\@corso\ifx\@ciclo\empty\else~--~\@ciclo\fi
+ \@PhDname\unskip\xspace
+ \@corso\ifx\@ciclo\empty\else~--~\@ciclo\fi
\else
- \@laureaname\@corso
+ \@laureaname\unskip\xspace\@corso
\fi
\par}}
\end{center}
% \end{macrocode}
-% It now centres the name of the report, be it ``Doctoral Dissertation'' or ``Master
-% Thesis'' or whatever; in case the command |\materia| was used, it then centres
-% the discipline which the thesis deals with.
+% It now centres the name of the report, be it ``Doctoral
+% Dissertation'' or ``Master Thesis'' or whatever; in case
+% the command |\materia| was used, it then centres the
+% discipline which the thesis deals with.
% \begin{macrocode}
\vspace{\stretch{0.2}}
\begin{center}
@@ -2757,7 +5218,7 @@ Skipping any redefinition\MessageBreak}%
\ifdottorato
\@dissertazione%
\else
- \iflaureatriennale
+ \iftriennale
\@monografia%
\else
\@TesiDiLaurea%
@@ -2769,8 +5230,8 @@ Skipping any redefinition\MessageBreak}%
\end{center}
% \end{macrocode}
%
-% Next comes the real title entered with |\titolo| or |\monografia| and the possible
-% subtitle.
+% Next comes the real title entered with |\titolo| or
+% |\monografia| and the possible subtitle.
% \begin{macrocode}
\vspace{\stretch{0.2}}
\begin{center}
@@ -2778,7 +5239,7 @@ Skipping any redefinition\MessageBreak}%
\@titolo \par}
\end{center}
% \end{macrocode}
-% con l'eventuale sottotitolo:
+% with the possible subtitle:
% \begin{macrocode}
\unless\ifx\@subtitle\empty
\begin{center}%
@@ -2786,11 +5247,13 @@ Skipping any redefinition\MessageBreak}%
\end{center}%
\fi
% \end{macrocode}
-% If the option \texttt{classica} is in force the thesis might be divided in several
-% volumes; theses in humanities apparently are often oversized. In this case the
-% |\tomo| 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.
+% If the option \texttt{classica} is in force the thesis
+% might be divided in several volumes; theses in humanities
+% apparently are often oversized. In this case the |\tomo|
+% 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@
@@ -2804,7 +5267,8 @@ Skipping any redefinition\MessageBreak}%
\or \QuartoTomo%
\else
\PackageWarning{toptesi}{%
- Counter tomo equals \the\c@tomo\MessageBreak
+ Counter tomo equals
+ \the\c@tomo\MessageBreak
We never considered a thesis might get
divided in more than four volumes}%
\fi}}%
@@ -2813,31 +5277,37 @@ Skipping any redefinition\MessageBreak}%
\fi
\par
% \end{macrocode}
-% Going down in the title page, now comes the optional insertion of the university
-% logo(s); ``optional'' in both meanings: one or more university logos are not generally
-% required in a thesis, and in case it depends if the logo(s) have to be put in the
-% header or here.
-% This is a simple task since the |\logosede| already defined the contents to the
-% box |\TPT@logobox|, and this was done either with an explicit command |\logosede|
-% with its argument in the preamble, or with a specific line in the configuration
-% file or within the |frontespizio| environment.
-% If such box |\TPT@logobox| is void, the already defined |\printloghi| macro does
-% not do anything.
+% Going down in the title page, now comes the optional
+% insertion of the university logo(s); ``optional'' in both
+% meanings: one or more university logos are not generally
+% required in a thesis, and in case it depends if the
+% logo(s) have to be put in the header or here.
+% This is a simple task since the |\logosede| already
+% defined the contents to the box |\TPT@logobox|, and this
+% was done either with an explicit command |\logosede|
+% with its argument in the preamble, or with a specific
+% line in the configuration file or within the |frontespizio|
+% environment.
+% If such box |\TPT@logobox| is void, the already defined
+% |\printloghi| macro does not do anything.
% \begin{macrocode}
\unless\iftopTPTlogos
{\vfill\centering \printloghi\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.
+% 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
+ \iftriennale
\let\@nomerelatore\empty
\else
\ifdottorato
@@ -2852,10 +5322,12 @@ Skipping any redefinition\MessageBreak}%
\fi
\fi
% \end{macrocode}
-% Similarly the label names for the exam candidates are chosen; in Italian such
-% 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.
+% Similarly the label names for the exam candidates are
+% chosen; in Italian such 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
@@ -2877,48 +5349,63 @@ Skipping any redefinition\MessageBreak}%
\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{single} candidate is centred and
-% written in caps-and-small-caps.
+% 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{single}
+% candidate is centred and written in caps-and-small-caps.
% \begin{macrocode}
- \iflaureatriennale
+ \iftriennale
\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
+% 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.
-% The candidate name(s) are typeset in another nested tabular environment of two
-% lines when the user typesets the entry in such a way:
-%\begin{verbatim}
-%\candidato{Mario Rossi \IDN 123456}
-%\end{verbatim}
-% where if just the name is used or the command |\IDN| is omitted but the
-% the ID number is entered, the whole string is written in one line without
-% any label before e the ID number; if, on the other side, the |\IDN| command
-% is redefined as not to produce a new line and the ID number is entered, the
-% latter is typeset in a new line after the candidate's name. By default the
-% |\IDN| macro is defined as:
-%\begin{verbatim}
-%\newcommand{\IDN}{\\\quad matricola:\space}
-%\end{verbatim}
-% but with |\renewcommand| the user can redefine it as s/he prefers, in
-% particular by changing the Italian name into a proper English one, may be
-% simply `ID'. It is necessary to recall that the ID number must be entered
-% only if required by the University regulations; it must not be typeset in
-% the title page just because it is possible to do it. If no number is entered,
-% the |\IDN| must not be used.
-
+%
+% The candidate name(s) are typeset in another nested
+% tabular environment of two lines when the user typesets
+% the entry in such a way:
+%\begin{flushleft}
+%\cs{candidato}\Marg{Mario Rossi}\Oarg{123456}\\[1ex]
+%\end{flushleft}
+% The optional argument contains the ID number of the candidate;
+% if it is specified, it is typeset below the candidate name,
+% with an indentation, and prefixed with the \verb*|matricola |
+% label; of corse if the optional ID number is not specified,
+% nor are the enclosing braces, nothing is printed after or
+% below the candidate's name.
+% If the user wants it typeset on the same line and or
+% with a different label s/he has to redefine the macro |\IDlabel|;
+% its default definition is
+%\begin{verbatim*}
+%\newcommand*\IDlabel{\\\quad matricola\ }
+%\end{verbatim*}
+% Example redefinitions are shown in the sample files.
+% Notice that with the new definition of the candidates' setting
+% macros it is guaranteed that the ID number, if specified, is
+% typeset in the title page, but not in the headers if the
+% |autoretitolo| option is in force.
+%
+% It is useful to recall that the ID number must be entered
+% only if required by the University regulations; it must
+% not be typeset in the title page just because it is possible
+% to do it.
+%
% \begin{macrocode}
\else
% For theses of any kind that expect the supervisor and co-supervisor names...
@@ -2945,9 +5432,10 @@ Skipping any redefinition\MessageBreak}%
\end{tabular}%
}%
% \end{macrocode}
-% A similar approach is taken for the candidate name(s), although for code
-% clarity I prefer to define two secondary macros in order to format the
-% other candidates names and ID in a clearer way.
+% A similar approach is taken for the candidate name(s),
+% although for code clarity I prefer to define two secondary
+% macros in order to format the other candidates names
+% and ID in a clearer way.
% \begin{macrocode}
\def\print@secondocandidato{\\\relax
\hbox{\large\tabular{@{}l@{}}\@secondauthor\endtabular}}
@@ -2963,14 +5451,17 @@ Skipping any redefinition\MessageBreak}%
\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 doctoral candidate name
-% is typeset centred 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 applicable labels and the second line containing the true names. The central
-% column is used just for spacing, but it does not contain anything.
+% 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
+% doctoral candidate name is typeset centred 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 applicable 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
@@ -2989,21 +5480,27 @@ Skipping any redefinition\MessageBreak}%
\end{center}
\else
% \end{macrocode}
-% For the master thesis the two virtual boxes are set one besides the other but
-% skewed to the right or, respectively, to the left of every name so that there
-% is enough space for the signature. With the \texttt{classica} option in force
+% For the master thesis the two virtual boxes are set one
+% besides the other but skewed to the right or, respectively,
+% to the left of every name so that 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}%
+ \unless\ifclassica
+ \unless\ifevenboxes
+ \begin{flushleft}%
+ \BoxRelatori
+ \end{flushleft}\par\vspace*{-1.5\baselineskip}
+ \begin{flushright}%
+ \BoxCandidati
+ \end{flushright}%
+ \else
+ \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}
+ \fi
\else
\noindent
- \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}\par
+ \makebox[\textwidth]{%
+ \BoxRelatori\hfill\BoxCandidati}\par
\fi
\fi
\fi
@@ -3015,14 +5512,19 @@ Skipping any redefinition\MessageBreak}%
{\centering \textbf{\@tutoreaziendalename}\\[.6ex]
\@tutoreaziendale\par}}
% \end{macrocode}
-% All the material now is on the page; we put some more vertical glue and handle the
-% copyright page; then 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.
-% In order to handle the copyright page, we test if the internal definition of the
-% copyright page text is empty; in this case no copyright page should be output, and
-% a |\creadoublepage| works fine in both one and two side printing; if the copyright page
-% text is not empty, after shipping out the title page, we set the copyright page
-% text flush bottom with the text block, and then we ship out also this copyright page.
+% All the material now is on the page; we put some more
+% vertical glue and handle the copyright page; then 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.
+% In order to handle the copyright page, we test if the
+% internal definition of the copyright page text is empty;
+% in this case no copyright page should be output, and
+% a |\cleardoublepage| works fine in both one and two side
+% printing; if the copyright page text is not empty, after
+% shipping out the title page, we set the copyright page
+% text flush bottom with the text block, and then we ship
+% out also this copyright page.
% \begin{macrocode}
\par\clearpage
\ifcsvoid{@retrofrontespizio}{}%
@@ -3033,12 +5535,560 @@ Skipping any redefinition\MessageBreak}%
%</topfrn>
% \fi
%
-% \subsection{A sample configuration file}
-% The following code generates a sample configuration file that the user
-% can change at will; it can be used as a template for generating a really
-% personal configuration file. Remember: this template file is named
-% |toptesi.cfg|, but in order to use it for a specific thesis, whose main
-% file is named |JohnSmithMSthesis.tex|, the configuration file must be
+% \subsection{Further settings for the ScuDo doctoral school}
+%
+% Doctoral theses to be developed at the \emph{SCUola di
+% DOttorato} (ScuDo) doctoral school of Politecnico di
+% Torino require a particular set of other packages and
+% commands to be available by default to the student
+% writing his/her doctoral thesis. It requires also
+% a title page with a layout completely different from
+% those that can be typeset with the |topfront| extension
+% file and, as far as I can tell, different from what
+% is possible to create with the excellent |frontespizio|
+% package.
+%
+% This task is reached by selecting the thesis type
+% by means of the |tipotesi=scudo| option to the |toptesi|
+% class; this option sets on or off the necessary switches
+% and load the |toptesi-scudo.sty| module in place of the
+% |topfront| one. This specific module loads the extra
+% packages, defines some special commands, provides the
+% customising commands to modify the title page infix
+% words and labels, and the commands for introducing the
+% specific thesis data; eventually it specify the title
+% page layout and provides for its generation and to a
+% copyright and disclaimer sentence on the verso page of
+% the title one.
+%
+% It produces also a colophon where some data concerning
+% the thesis typesetting details are given.
+%
+% Some if not all the data required for the title page may
+% be entered by means of a configuration file |\jobname.cfg|
+% that can be modelled on the |toptesi.cfg| file that is part of
+% this bundle. The user should remember to copy the sample file in
+% his/her thesis directory, change its name (not the extension)
+% to match that of the thesis, modify the data according
+% to his/her needs, and this extension file will read the
+% configuration file at the proper moment and acquire its data.
+%
+% This |toptesi-scudo.sty| module is meant to load a certain
+% number of packages in order to ease the user work when
+% typesetting a dissertation on an engineering doctorate
+% school as ScuDo.
+%
+% The chosen packages are supposed to be sufficient to
+% typeset any technical thesis or dissertation; but this
+% does not limit its use to the fields of engineering;
+% anybody can use it as a template to load the packages
+% s/he needs for the particular discipline s/he is
+% working on. At the same time nobody forbids to load
+% other packages, in addition, not in substitution, of
+% the packages loaded by this extension file of the
+% |toptesi| class.
+%
+%\iffalse
+%<*topscu>
+%\fi
+% We start by loading the math packages produced by the
+% American Mathematical Society, differentiating what is
+% necessary to load when using \pdfLaTeX\ or the OpenType
+% aware programs \XeLaTeX\ or \LuaLaTeX. The extension file
+% |iftex| that defines the switches \cs{ifPDFTeX},
+% \cs{ifXeTeX}, and \cs{ifLuaTeX},
+% has already been loaded. In particular AMS fonts should
+% not be used when typesetting with \XeLaTeX\ or \LuaLaTeX,
+% because these programs get them directly from the
+% \sigla{UNICODE} math fonts, so that package |amssymb| has
+% to be loaded only when \pdfLaTeX\ is used.
+% \begin{macrocode}
+\ScuDotrue
+\ifPDFTeX
+ \usepackage{amsmath,amssymb,amsthm}
+\else
+ \usepackage{amsmath,amsthm}
+ \usepackage{unicode-math}
+\fi
+% \end{macrocode}
+% The suitable macro for using the differential sign in the
+% proper \sigla{ISO} compliant way (upright font) with the suitable
+% spacing before and no space after, is the following:
+% \begin{macrocode}
+\AtBeginDocument{%
+\providecommand\diff{}%
+\renewcommand{\diff}{\mathop{}\!\mathrm{d}}
+\providecommand{\gei}{\ensuremath{{\mathop{\mathrm{j}}\nolimits}}}
+\providecommand{\eu}{\ensuremath{{\mathop{\mathrm{e}}\nolimits}}}
+\let\iu\gei}
+% \end{macrocode}
+% Such a definition allows to typeset math expression containing
+% integrals with a small space between the integrand and the
+% integrating differential; on the contrary no space
+% disturbs typesetting differential equations. The above
+% definitions include also the \sigla{ISO} compliant ways of writing
+% the Napier number `e', and the imaginary unit |\iu| that
+% sets an operator-like roman `j' as it is customary in
+% most engineering disciplines.
+%
+% Other packages are loaded next. Please take notice that
+% |xparse| is very useful to define advanced commands and
+% environments containing different kind of delimited
+% arguments; parameters entered as arguments to the
+% opening statement of an environment are available also
+% for the closing commands; read the documentation if you
+% want to use this package facilities.
+%
+% Using the facilities of |setspace| may be tolerated only
+% while typesetting a thesis draft. It is bad typography
+% to use it in the final printing.
+%
+% Packages |ifthen| and |calc|, in spite of being the
+% standard traditional ones for accomplishing their tasks,
+% are preferred by many users who are not aware that
+% computations are now native of modern typesetting
+% programs\footnote{All the three programs we are dealing
+% with here; \LuaLaTeX\ can do also floating point computations
+% thanks to the language Lua; all programs may benefit from the
+% advances of the \LaTeX3 language, that has a special facility
+% to perform floating point calculations.}; also advanced
+% tests are natively available with such programs, but
+% since this class loads the |etooolbox|, its powerful
+% and robust commands are already available; therefore
+% these packages are loaded only for the user comfort,
+% although they are not really required.
+%
+% Packages |caption| and |subcaption| have been optional
+% for several TOPtesi versions before version 6.x; here they
+% are pre-loaded only for the \textsf{tipotesi=scudo} option.
+%
+% Package |tabularx| provides an alternative way to produce
+% tables of specified width by means of a new column type
+% |X|; this column type behaves as |p|\marg{width}, where
+% \meta{width} is computed by the package in order to expand
+% the column(s) so as to fill the specified table
+% width. It is very handy in a number of situations.
+%
+% For professional typesetting tables, package |booktabs|
+% is highly recommended; we load also package |multirow|,
+% although its use is deprecated by many professionals.
+%
+% The sample template file |toptesi-scudo.tex| shows a
+% couple of tables typeset with and without using
+% |multirow|; the results without using this package are
+% marginally more elegant, but the user is free to specify
+% every detail, without the support of automatic (and
+% limited) typesetting macros.
+%
+% Package |siunitx| is highly recommended; its management
+% of fractional measures, of units of measure, and of table
+% columns that contain numerical values aligned on the decimal
+% separator is very useful.
+%
+% Package |float| is very handy to define new floating
+% environments; unfortunately many users load it in
+% order to have available the float positioning
+% option \textsf{H}, which should never be used,
+% especially while using this TOPtesi class, where
+% provisions for large floats are already taken care of.
+% \begin{macrocode}
+\usepackage{xparse} % Command and environment advanced definitions
+\usepackage{lscape} % Supports landscape Layout
+\usepackage{setspace} % Define line spacing in paragraph. Don't use!
+\usepackage{calc} % Calculation macros
+\usepackage{ifthen} % Conditional statements
+\usepackage{caption} % Configure captions
+\usepackage{subcaption}% Defines env. subfigure and its caption
+\usepackage{tabularx} % Tables with expandable columns
+\usepackage{booktabs} % professional rules in tables
+\usepackage{multirow} % It's more professional avoiding tables with
+ % cells spanning several rows
+\usepackage{siunitx} % advanced management of units of measure
+\usepackage{float} % Never ever use its code position H !
+ % Use only to define new floating objects
+% \end{macrocode}
+%
+% Package |nomencl| is loaded and a sample of nomenclature
+% groups is defined; they are mostly examples of ``how to'';
+% and in particular they are models to define other
+% nomenclature groups. Notice that the string comparison
+% tests are made through the testing robust commands
+% provided by the |etoolbox| package.
+% \begin{macrocode}
+\usepackage[intoc]{nomencl}% Generate nomenclatures or glossaries
+\makenomenclature
+\renewcommand{\nomgroup}[1]{%
+\ifstrequal{#1}{A}{\item[\textbf{Roman Symbols}]}{%
+\ifstrequal{#1}{G}{\item[\textbf{Greek Symbols}]}{%
+\ifstrequal{#1}{Z}{\item[\textbf{Acronyms / Abbreviations}]}{%
+\ifstrequal{#1}{R}{\item[\textbf{Superscripts}]}{%
+\ifstrequal{#1}{S}{\item[\textbf{Subscripts}]}{%
+\ifstrequal{#1}{X}{\item[\textbf{Other Symbols}]}{}}}}}}}
+
+\renewcommand{\nompreamble}{\markboth{\nomname}{\nomname}}
+% \end{macrocode}
+%
+% It is important to note that the nomenclature
+% raw file must be processed by means of program
+% \prog{makeindex} with special options. Assuming
+% that your thesis main file is named |MyPhDthesis.tex|,
+% after compiling with pdfLaTeX, you have to open a
+% terminal, change the working directory into that
+% where your main file is stored, and
+% issue and execute the line command
+%{\small
+%\begin{verbatim}
+%makeindex -s nomencl.ist -t MyPhDthesis.nlg -o MyPhDthesis.nls MyPhDthesis.nlo
+%\end{verbatim}
+%\par}
+% Afterwards you should have your processed nomenclature
+% ready and up to date, so that by running again the
+% typesetting program your nomenclature appears in the
+% back matter; a second typesetting run, as usual, updates
+% the table of contents with the entry and page number of
+% the Nomenclature section. It is important to do this
+% action before printing the final version of the thesis;
+% you do not need to update the nomenclature every time
+% you edit one of your thesis source files.
+%
+% All this fuzz is bypassed in the sense that all typesetting
+% programs can run safe OS commands, among which \prog{makeindex},
+% in order to do all these actions by themselves if we
+% procede by closing the auxiliary file that collect
+% nomenclature entries, and run \prog{makeindex} with
+% the proper options and file names directly through the
+% ``magic command'' |\write18|. We then define a new command
+% to process the nomenclature files and print them out.
+%
+% Again the test for an empty optional argument is made by
+% means of a macro defined in |etoolbox|. When using LuaLaTeX
+% it is necessary a special treatment, because the typesetting
+% engine does not use the |\write18| functionality, but
+% accesses the operating system commands by means
+% of its own Lua facilities. The user is not obliged to
+% know these details, but this extension file must be
+% programmed accordingly.
+% \begin{macrocode}
+\newcommand{\printnomencl}[1][]{%
+\immediate\closeout\@nomenclaturefile
+\ifLuaTeX
+ \chardef\T@T@shellescape\directlua{tex.write(os.execute())}
+ \def\exec@makeindex{%
+ \directlua{os.execute("\luaescapestring
+ {makeindex -s nomencl.ist -t \jobname.nlg -o \jobname.nls \jobname.nlo}")}}
+\else
+ \def\exec@makeindex{\immediate\write18{%
+ makeindex -s nomencl.ist -t \jobname.nlg -o \jobname.nls \jobname.nlo}}
+\fi
+\exec@makeindex
+\ifblank{#1}{\printnomenclature}{\printnomenclature[#1]}%
+}
+% \end{macrocode}
+% The result is a synchronous typesetting of the nomenclature
+% in the same way as for the index.
+%
+% The bibliography is typeset through the facilities of
+% package |biblatex| with suitable options; in particular,
+% according to the tradition in scientific works, the
+% references are labelled with bracketed numbers as well
+% as citations.
+% \begin{macrocode}
+\usepackage[autostyle]{csquotes} % necessary for biblatex
+\usepackage[backend=biber,
+ style=numeric-comp,
+ citestyle=numeric,
+ sorting=nty,
+ natbib]{biblatex} % LaTeX specific bibliography handler
+\addbibresource{references.bib}% bibliographic data base(s}
+% \end{macrocode}
+%
+% Package |imakeidx| is loaded, but it is up to the user
+% to specify command \texttt{\string\makeindex} with its
+% options; in the sample template file |toptesi-scudo.tex|
+% the index is made by configuring \cs{makeindex}
+% by specifying only the \textsf{intoc} option, so as to
+% have an entry for the index in the table of contents.
+% The user who wants to prepare an index for his/her thesis
+% is urged to read the |imakeidx| package documentation.
+% \begin{macrocode}
+\usepackage{imakeidx}% to generate automatic indices
+% \end{macrocode}
+%
+% Eventually while using \pdfLaTeX we require the |indentfirst|
+% package so as to indent the first paragraph after a
+% sectioning command, according to a common usage in Europe
+% and in Italy in particular.
+%
+% \begin{macrocode}
+\ifPDFTeX \usepackage{indentfirst}\fi
+\raggedbottom
+
+\AfterEndPreamble{\english}% Set English as default language
+
+% \end{macrocode}
+%
+% The |toptesi-scudo.sty| module contains also everything is
+% needed to typeset the Ph.D. title page and the disclaimer
+% page; remember that the \textsf{tipotesi=scudo} option to the
+% class sets the default language to English, and inhibits
+% loading the |topfront| extension file; therefore a
+% complete new set of commands and a complete new title
+% page environment are required to fill up the necessary
+% information.
+%
+% We start with the default values for all
+% pieces of information. Those macros that contain an empty
+% expansion are obviously for mandatory data. Those that
+% contain a text string insert default data, that can be
+% possibly modified by suitable commands. Those that
+% contain just macros insert into the title page the
+% expansions of these macros.
+% \begin{macrocode}
+\TOPfrontfalse
+
+\providecommand*\@Ndissertation{Doctoral Dissertation}
+\providecommand*\@Ndoctoralprogram{Doctoral Program in\xspace}
+\providecommand*\@programname{}
+\providecommand\@Cyclenumber{}
+\providecommand*\@title{}
+\providecommand*\@subtitle{\vspace{\stretch{1}}}
+\providecommand*\@author{}
+\providecommand*\@Nsupervisor{Supervisor}\providecommand*\@Nsupervisors{Supervisors}
+\newcount\@supervisornumber
+\providecommand*\@supervisorlist{}
+\providecommand\@Nexaminationcommittee{Doctoral Examination Committee:}
+\providecommand*\@Examinerlist{}
+\providecommand*\@examlocation{Politecnico di Torino}
+\providecommand*\@examinationdate{}
+\providecommand*\@creativecommons{This thesis is licensed under a Creative Commons License, Attribution - Noncommercial- NoDerivative Works 4.0 International: see \url{www.creativecommons.org}.
+The text may be reproduced for non-commercial purposes, provided that credit is given to the original author.}
+\providecommand\@disclaimer{\noindent I hereby declare that
+the contents and organisation of this dissertation constitute
+my own original work and does not compromise in any way the
+rights of third parties, including those relating to the
+security of personal data.}
+
+% \end{macrocode}
+% There are the user macros to change or define the
+% required data; of course the mandatory data must be
+% present in the student's thesis source file; the other
+% data may be changed, but don't need to be changed: it
+% depends on the university specifications, if any are given.
+%
+% In any case if the ``examiner list'' is not specified, so
+% that the default list remains empty, no label and no list
+% is typeset; therefore leaving this list empty is an easy
+% and logical method for completely omitting such a list.
+%
+% \begin{macrocode}
+\newcommand*\Ndissertation[1]{\gdef\@Ndissertation{#1}}
+\newcommand*\Ndoctoralprogram[1]{\gdef\@Ndoctoralprogram{#1\xspace}}
+\newcommand*\ProgramName[1]{\gdef\@programname{#1\xspace}}
+\newcommand*\CycleNumber[1]{\gdef\@Cyclenumber{\ifblank{#1}{}{(#1 cycle)}}}
+\renewcommand*\title[1]{\gdef\@title{#1}}
+\newcommand*\subtitle[1]{\gdef\@subtitle{\ifblank{#1}{}{\medskip\par
+ {\Large #1\par}}\vspace{\stretch{1}}}}
+\renewcommand*\author[1]{\gdef\@author{#1}}
+\newcommand*\NSupervisor[2]
+ {\gdef\@Nsupervisor{#1}\gdef\@Nsupervisors{#2}}
+\newcommand*\SupervisorList[1]{\gdef\@supervisorlist{#1}}
+\newcommand\SupervisorNumber[1]{%
+ \ifblank{#1}{\@supervisornumber=0}{\@supervisornumber=#1}}
+\newcommand\Nexaminationcommittee[1]{\gdef\@Nexaminationcommittee{#1}}
+\newcommand*\ExaminerList[1]{\gdef\@Examinerlist{#1}}
+\newcommand*\Nlocation[1]{\gdef\@examlocation{#1}}
+\newcommand*\ExaminationDate[1]{\gdef\@examinationdate{#1}}
+
+\newlength{\TPT@logospace}\TPT@logospace=3em\relax
+\newsavebox{\TPT@logobox} \setbox\TPT@logobox\hbox{}
+\newdimen\TPT@logoheight
+\newcommand*\setlogodistance[1]{\TPT@logospace=#1}
+\providecommand*{\@logosede}{}
+
+\ifcsundef{T@Tlogoheight}{%\
+ \newlength\T@Tlogoheight
+ \setlength\T@Tlogoheight{0.8\dimexpr(\paperwidth-\textwidth)/2}}{}
+
+\newcommand\PhDschoolLogo[2][\T@Tlogoheight]{\def\@logosede{#2}\TPT@logoheight=#1\relax
+\ifcsvoid{@logosede}{\sbox{\TPT@logobox}{}}{\begin{lrbox}{\TPT@logobox}%
+\expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\def\fillup@TCP@logobox#1,#2!{%
+ \ifblank{#1}{\end{lrbox}\ifdim\wd\TPT@logobox>\textwidth
+ \sbox\TPT@logobox{\resizebox{\textwidth}{!}{\box\TPT@logobox}}\fi}%
+ {\def\@logosede{#2}%
+ \includegraphics[height=\TPT@logoheight]{#1}\hskip\TPT@logospace
+ \expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\newcommand\printloghi{\unless\ifvoid\TPT@logobox\usebox{\TPT@logobox}\fi}
+% \end{macrocode}
+% Next the disclaimer and the signature macros are defined;
+% the disclaimer text and the signature layout may be changed
+% by these commands; but if the user does not use these
+% macros, the name of the person who undersigns the disclaimer
+% text is assumed to be the thesis author and the signature
+% date is assumed to equal the examination date.
+%
+% Remember: the disclaimer text is very important, in the
+% sense that the student writing his/her Ph.D.\ thesis must
+% be completely aware that by undesigning that statement
+% he/she assumes any legal liability for any event that
+% might betray other people rights. A kind of
+% infringement, of course, is plagiarism. Therefore the
+% under signer must be completely aware that his/her signature
+% is not just a simple bureaucratical action.
+% \begin{macrocode}
+\newcommand\Disclaimer[1]{\gdef\@disclaimer{#1}}
+\newcommand\CClicence[1]{\gdef\@creativecommons{#1}}
+\providecommand\@signature{%
+\begin{flushright}
+\parbox{0.5\textwidth}{\centering
+\dotfill\\
+\@author\\
+Turin, \@examinationdate
+}%
+\end{flushright}}
+\newcommand\Signature[1]{\gdef\@signature{#1}}
+% \end{macrocode}
+% The |ThesisTitlePage| environment is defined; in the
+% opening commands the configuration file is read;
+% this file may contain any kind of definition or
+% redefinition by using the above commands with suitable
+% arguments.
+% The data possibly read from the configuration file now
+% are available, or they may be entered in the body of the
+% title page environment |ThesisTitlePage|. If some commands
+% are repeated, the last ones, i.e.~those entered in the
+% body of the environment, prevail.
+% \begin{macrocode}
+\newenvironment{ThesisTitlePage}{% Apertura
+\InputIfFileExists{\jobname.cfg}{\relax}{\relax}%
+}{%Chiusura
+\begin{titlepage}\parindent=0pt
+{\centering
+\raisebox{-1ex}[0pt][0pt]{\makebox[\textwidth]{\printloghi}}\par
+\vspace{\baselineskip}
+\@Ndissertation\\
+\@Ndoctoralprogram \@programname\@Cyclenumber
+\bigskip
+
+{\Huge\bfseries \@title\par}
+\@subtitle
+{\Large\bfseries \@author\par}
+\smallskip
+\mbox{* * * * * *}
+\vspace{\stretch{1}}
+
+{\large\bfseries \ifcase\@supervisornumber
+\relax\or \@Nsupervisor\else\@Nsupervisors\fi\par}
+\@supervisorlist
+\par}
+
+\vspace{\stretch{1}}
+
+\ifcsvoid{@Examinerlist}{\relax}{%
+\noindent\begin{tabular}{@{}l}
+\bfseries \@Nexaminationcommittee\\
+\@Examinerlist
+\end{tabular}}
+
+\begin{center}
+\raisebox{-3\baselineskip}[0pt][0pt]{%
+\parbox{0.5\textwidth}{\centering
+\@examlocation\\
+\@examinationdate}}
+\end{center}
+\end{titlepage}
+%
+\newpage\thispagestyle{empty}
+\vspace*{\stretch{1}}
+\@creativecommons
+\vspace{3\baselineskip}
+
+\ifempty{\@keywords}{\relax}{Keywords: \@keywords\par
+\vspace{2\baselineskip}}
+
+\@disclaimer
+\vspace{3\baselineskip}
+
+\@signature}
+
+% \end{macrocode}
+% The above code is almost everything is needed to enter
+% the relevant data and to typeset the doctoral thesis
+% and the signed disclaimer. But it is wise to enter
+% some basic metadata for a reasonably well typeset \sigla{PDF}
+% file. Notice that these metadata have nothing to do
+% with the metadata required for \sigla{PDF/A} compliance; for
+% the latter metadata it is necessary to load the |pdfx|
+% package and enter the required metadata in a special
+% way that is taken care by |pdfx|. Read the details in
+% the Italian\discretionary{-}{}{-}English documentation
+% |toptesi-it.pdf| that is part of the TOPtesi bundle.
+% \begin{macrocode}
+\providecommand*\subject{}\providecommand*\@subject{}
+\renewcommand\subject[1]{\gdef\@subject{#1}}
+\providecommand*\keywords{}\providecommand*\@keywords{}
+\renewcommand\keywords[1]{\gdef\@keywords{#1}}
+\AtBeginDocument{% Set some metadata
+ \hypersetup{%
+ pdftitle = {\@title},
+ pdfauthor = {\@author},
+ pdfsubject = {\@subject},
+ pdfkeywords= {\@keywords}
+ }
+}
+% \end{macrocode}
+%
+% The School required also a colophon where it is explained
+% how the thesis has been typeset and who are the authors
+% of the \LaTeX\ code.
+%
+% Of course this colophon must be typeset in the last page,
+% possibly an even one if the thesis is typeset with the
+% |twoside| option in force.
+% \begin{macrocode}
+\AtEndDocument{%
+\clearpage
+\ifbool{@twoside}%
+{\ifodd\value{page}\thispagestyle{empty}\newpage\fi}{\relax}%
+\vspace*{\stretch{1}}%
+\noindent
+\begin{tabularx}{\textwidth}{Xp{0.45\textwidth}X}
+&
+This Ph.D.\ thesis has been typeset by means of the \TeX-system
+facilities. The typesetting engine was
+\ifPDFTeX
+ \ifcsdef{pdfLaTeX}{\pdfLaTeX}{pdf\/\LaTeX}%
+\else
+ \ifLuaTeX
+ \ifcsdef{LuaLaTeX}{\LuaLaTeX}{Lua\/\LaTeX}%
+ \else
+ \ifcsdef{Xe}{\Xe\LaTeX}{Xe\/\LaTeX}
+ \fi
+\fi.
+The document class was \texttt{toptesi}, by Claudio Beccari,
+with option \texttt{tipotesi\discretionary{}{=}{=}scudo}.
+This class is available in every up-to-date and complete
+\TeX-system installation.
+&
+\end{tabularx}
+\vspace*{\stretch{2}}%
+}
+% \end{macrocode}
+
+%\iffalse
+%</topscu>
+%\fi
+%
+% \subsection{A configuration file}
+% The following code generates a sample configuration file
+% that the user can change at will after changing also its
+% name; it can be used as a template for generating a really
+% personal configuration file. Remember: this template file
+% is named |toptesi.cfg|, but in order to use it for a
+% specific thesis, whose main file is named
+% |JohnSmithMSthesis.tex|, the configuration file must be
% named |JohnSmithMSthesis.cfg|.
% \iffalse
%<*topcfg>
@@ -3050,46 +6100,100 @@ Skipping any redefinition\MessageBreak}%
%% can modify without restrictions in order to customise 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.
-%% Use this file by copying it to another file to be named as the
-%% thesis main file and with extension .cfg; This bundle will try
-%% to read "\jobname.cfg"; if this file it does nothing. This means
-%% that the provided file toptesi.cfg is to be used as a model, not
-%% to% be used directly.
+%% arguments to macros, add definitions and so on.
+%% Use this file by copying the relevant section to another file
+%% to be named as the thesis main file and with extension .cfg.
+%% This bundle will try to read "\jobname.cfg"; if this file does
+%% not exist, the bundle files don't do anything. This implies that
+%% the provided file toptesi.cfg is to be used as a model, not to
+%% be used directly.
%%================================================================
%%
-\ateneo{Politecnico di Torino}
-\facolta{}% nessun nome di default/ no default name
-\FacoltaDi{}% nessun prefisso per la facoltà/no default faculty label
-%%\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}
-%%\retrofrontespizio{Questo testo è soggetto alla Creative Commons Licence}
+\ifmagistrale
+ \ateneo{Politecnico di Torino}
+ \facolta{}% nessun nome di default/ no default name for PoliTO
+ \FacoltaDi{}% nessun prefisso per la facoltà/no default faculty label for PoliTO
+ \CorsoDiLaureaIn{Corso di Laurea in}
+ \TesiDiLaurea{Tesi di Laurea Magistrale}
+ \InName{in}
+ %%\retrofrontespizio{Questo testo è soggetto alla
+ %% Creative Commons Licence}
+\fi
+\ifsecondaria
+
+\fi
+\ifScuDo
+ \PhDschoolLogo{Logo-Scudo}
+ \Ndissertation{Docoral Dissertation}
+ \Ndoctoralprogram{Doctoral Program in\xspace}
+ \NSupervisor{Supervisor}{Supervisors}
+ \SupervisorNumber{1}
+ \Nexaminationcommittee{Doctoral Examination Committee:}
+ \Nlocation{Politecnico di Torino, Turin, Italy}
+ \Disclaimer{\noindent I hereby declare that the
+ contents and organisation of this dissertation
+ constitute my own original work and does not
+ compromise in any way the rights of third parties,
+ including those relating to the security of personal
+ data.}
+ \CClicence{This thesis is licensed under a Creative Commons
+ License, Attribution - Noncommercial- NoDerivative Works 4.0
+ International: see \url{www.creativecommons.org}.
+ The text may be reproduced for non-commercial purposes,
+ provided that credit is given to the original author.}
+\fi
% \end{macrocode}
% \iffalse
%</topcfg>
% \fi
%
% \subsection{The \texttt{topcoman.sty} code}
-% This file may be used as an independent extension package for the \texttt{report}
-% document class, and possibly for other classes
+% This file may be used as an independent extension package
+% for the \texttt{report} document class, and possibly for
+% other classes.
% \iffalse
%<*topcmn>
% \fi
%
-% 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, as it is by default; some
-% authors prefer to use both symbols with different meanings, so this
-% command lets them do so. This may be useful unless the XeTeX or LuaTeX
-% 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.
+% 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, as it is by default; some
+% authors prefer to use both symbols with different
+% meanings, so this command lets them do so. This may be
+% useful unless the \XeTeX\ or \LuaTeX\ 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.
+% Actually with \XeLaTeX\ and \LuaLaTeX\ it is possible to
+% invoke the |unicode-math| package wit the |style=\sigla{ISO}|
+% option; in this way the \sigla{ISO} math typesetting become
+% available; this includes the slanted Greek letters and
+% many other facilities necessary to fulfil the \sigla{ISO}
+% regulations for ``physical sciences and technology''.
+%
+% With \pdfLaTeX\ there are available several packages
+% and font suitable for typesetting math according to
+% the \sigla{ISO} regulations. The fonts Libertinus together
+% with the math font LibertinusT1math are the best
+% choice for this task; the |isomath| package can do
+% an excellent work with other fonts; a ``poor man''
+% solution with the \pdfLaTeX\ typesetting program is
+% given by the |pm-isomath| package; this latter package
+% is, in facts, a poor man approach to the problem, so
+% it has several limitations, but it avoids completely
+% the problem of loading several other math alphabets,
+% therefore avoiding to exhaust the limited number of
+% math alphabets \pdfLaTeX\ can handle.
+%
+% This |topcoman| module offers another ``poor man''
+% solution only for using by default slanted capital
+% Greek letters taken from the math italic font; the
+% upright ones are still available within the |\mathrm|
+% command argument.
+% Attention: \cs{DeclareSlantedCapitalGreekLetters} is defined
+% only when using \prog{pdflatex}; with the other two engines
+% it is disabled and produces a warning.
% \begin{macrocode}
\RequirePackage{iftex}
\ifPDFTeX
@@ -3105,17 +6209,24 @@ Skipping any redefinition\MessageBreak}%
\mathchardef\Phi="7108
\mathchardef\Psi="7109
\mathchardef\Omega="710A
-}\fi
+}\else
+\newcommand*\DeclareSlantedCapitalGreekLetters{%
+\PackageWarning{toptesi}{%
+ When using LuaLaTeX or XeLaTeX specify\MessageBreak
+ option math-style=ISO to package unicode-math\MessageBreak}
+}
+\fi
% \end{macrocode}
-%
-% The |\ensuremath| command is defined in the \LaTeXe\ 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 if it is already loaded
-% the |\RequirePackage| command performs the necessary tests and possibly
-% does not load anything.
+% The |\ensuremath| command is defined in the \LaTeXe\
+% 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 if it is 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{}
@@ -3127,25 +6238,36 @@ Skipping any redefinition\MessageBreak}%
\RequirePackage{textcomp}
\fi
% \end{macrocode}
-% The following commands may be already defined; should they be missing they
-% are supplied here. Most of them are 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\ or \LuaLaTeX\ that do 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.
+% The following commands may be already defined; should
+% they be missing they are supplied here. Most of them
+% are 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\
+% or \LuaLaTeX\ that do 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. These commands are also defined by the various
+% \sigla{ISO} math compliant packages, in particular by |pm-isomath|;
+% no problem: if they already defined they don't get redefined.
% \begin{macrocode}
\providecommand{\ohm}{\textormath{\textohm}{\mathrm{\Omega}}}
-\providecommand{\ped}[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
-\providecommand{\ap}[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
+\@ifpackageloaded{toptesi}{
+\providecommand\ped{}\providecommand\ap{}
+\renewcommand*{\ped}[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
+\renewcommand*{\ap}[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}}{%
+\providecommand*{\ped}[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}%
+\providecommand*{\ap}[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}}
\@ifpackageloaded{siunitx}{\def\unit#1{\si{\,#1}}}{%
-\providecommand\unit[1]{\ensuremath{{\mathrm{\,#1}}}}}
+\providecommand\unit{}%
+\renewcommand\unit[1]{\ensuremath{{\mathrm{\,#1}}}}
+}
\providecommand{\gei}{\ensuremath{{\mathop{\mathrm{j}}\nolimits}}}
\providecommand{\eu}{\ensuremath{{\mathop{\mathrm{e}}\nolimits}}}
\providecommand{\micro}{\textormath{\textmu}{%
\ifPDFTeX
- \ifx\muup\undefined\mu\else\muup\fi
+ \ifdefined\muup\muup\else\mbox{\textmu}\fi
\else
\mathup{\mu}%
\fi
@@ -3153,88 +6275,120 @@ Skipping any redefinition\MessageBreak}%
\providecommand{\gradi}{\textormath{\textdegree}{^\circ}}
% \end{macrocode}
%
-% The next set of definitions are used to list a program file. There are finer
-% 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 left margin which is an `integer multiple of 8' spaces. 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.
-% For what concerns the macro |\obeyspaces| (already defined in the \LaTeXe\
-% kernel) we had to change it in order to abolish a conflict with package |ABC|
-% used to typeset music. The latter package is about 15 years younger than
-% |topcoman|, so it should be this latter package duty to avoid conflicts with
-% pre existing packages; on the opposite we accepted the suggestion of Enrico
-% Gregorio, the author of |ABC|, whom we thank very much, because his package
-% is much more complicated than this one, so that the conflict is avoided
-% more easily by correcting |topcoman|.
-% \begin{macrocode}
-\providecommand*{\programmafont}{\ttfamily\footnotesize}
-\def\listing#1{\par\begingroup
-\programma \input #1 \endgroup}
-\def\uncatcodespecials{\def\do##1{\catcode`##1=12}\dospecials}
-\def\programma{\programmafont \parindent 0pt
-\def\par{\leavevmode\egroup\box0\endgraf}
-\catcode`\`=\active \catcode`\^^I=\active \catcode`\^^L=\active
-\obeylines \uncatcodespecials \obeyspaces
-\begingroup\lccode`~=`\ \lowercase{\endgroup\global\let~}\ %
-\everypar{\startbox}}
-% \end{macrocode}
-% The above code does the whole work, except the alignment to the tab stops and the
-% new page command associated to the form feed ASCII character that are done with the
-% following definitions.
-% \begin{macrocode}
-\newdimen\tabwidth
-\setbox0=\hbox{\programmafont\space}
-\tabwidth=8\wd0
-\def\startbox{\setbox0=\hbox\bgroup}
-%{\obeyspaces\global\let =\space}
-{\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 this module outside TOPtesi, but as an extension
-% of other classes or modules, it's up to you to define an ``intelligent comma''
-% macro or to load either the |icomma.sty| or the |nccomma.sty| modules that
-% define such a macro: the |icomma| package defines the comma as a mathematical
-% active character that recognises 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 recognises if the following token is a digit so as to
-% use a decimal comma.
-%
-% The following commands are used to write the ``lower case'' roman numerals
-% with the small-caps font; 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 comply with the |hyperref| module, 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
+% Before this version 6.xx.yy this package used to define
+% the command |\listing| for listing program sources; those
+% definitions got very obsolete in front of several packages
+% already available for this task. For example the package
+% |listings|, very elegant also for the various configurations
+% it can use; un fortunately it works fine only for verbatim
+% sources that contain only \textsc{ascii} characters; yes,
+% it is possible the definition of special commands to typeset
+% isolated characters not belonging to the \textsc{ascii}
+% table, but it is an error prone process. Giving up the
+% niceties of |listings|, the |fancyvrb| works very fine
+% with \sigla{UNICODE} and UTF-8 encoded characters.
+%
+% For backwards compatibility we maintain the command
+% |\listing| as a user interface to the |VerbatimInput|
+% of package |fancyvrb| with an initial setting of a
+%|\small| font size.
+% \begin{macrocode}
+\RequirePackage{fancyvrb}
+\fvset{fontsize=\small}
+\let\listing\VerbatimInput
+% \end{macrocode}
+% Of course before using |\listing| the user can set any other
+% special configuration s/he desiders among those usable with
+% package |fancyvrb|; the default set up shown above is good
+% for \LaTeX\ code input, as wel as for any language, whose
+% source lines are shorter than 75--80 characters, depending
+% on the normal font size and the document text width; the user
+% can edit the source file as well as setting a smaller font
+% size that |\small|. In certain circumstances the user
+% should accept protruding lines as well as a compromise
+% between editing the source file and selecting a smaller
+% font size. This is not a bug of the package, nor a fault
+% of the algorithm; verbatim typesetting is always problematic.
+%
+% Let us come to another specific typesetting problem: the
+% double role the comma character plays in math mode: a
+% decimal separator and a punctuation mark.
+%
+% Remember that the comma as a decimal separator is
+% required for all languages except English. If you
+% use this module outside TOPtesi, but as an extension
+% of other classes or modules, it's up to you to define
+% an ``intelligent comma'' macro or to load either the
+% |icomma.sty| or the |ncccomma.sty| modules that define
+% such a macro: the |icomma| package defines the comma
+% as a mathematical active character that recognises if the
+% subsequent token is a space token so as to insert a
+% punctuation comma; |ncccomma| behaves more or less as
+% the macro defined in TOPtesi and recognises if the
+% following token is a digit so as to use a decimal comma.
+%
+% This particular package |topcoman| does not define any
+% intelligent comma command; therefore it does not do
+% anything for other packages; the main |toptesi.sty|
+% packages already defines a form of intelligent comma,
+% therefore |topcomand| does not have to add anything to
+% |toptesi|. But if this package is used independently
+% from |toptesi|, the user has two coices: either loads
+% one of the two packages mentioned above, or, if s/he
+% is typesetting in Italian, the |italian| module for
+% |babel| already defines the intelligent comma, but its
+% definition is disabled by default; the use can turn it
+% on and off by using the commands |\IntelligentComma|
+% and |\NoIntelligentComma|.
+%
+% The solution of the solutions would be using the |siunitx|
+% package, whose command |\num| handles any fractional
+% decimal number in the proper way adding also the digit
+% triplets separation of digits when they exceed the number
+% of four before and/or after the decimal separator. In
+% many cases this might be a heavy burden to load a whole
+% complex package just for this task, but |siunitx|
+% offers many other functionalities, so that it would be
+% a good idea if the user loads that excellent package.
+%
+% The following commands are used to write the
+% ``lower case'' roman numerals with the small-caps font;
+% in order to avoid complications with missing fonts
+% or with 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 comply with the |hyperref| module, 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]{%
{\mbox{$\relax$}\fontsize{\sf@size}{\f@baselineskip}\selectfont#1}}%
% \end{macrocode}
%
-% A user, Antonio Mele, suggested and requested the possibility of having
-% the figure and table name inserted automatically when the |\ref| command is
-% issued. For single citations the solution works fine, but for range
-% references it does not work. In Italian the name must be lower case while in
-% other languages, specifically in English, the name has a capital initial.
-% Since this feature might be handy in certain circumstances and annoying in
-% other ones, this feature can be turned on and off at will with the enabling
-% and disabling commands. By default the feature is disabled.
+% A user, Antonio Mele, suggested and requested the
+% possibility of having the figure and table names
+% inserted automatically when the |\ref| command is
+% issued. Actually this functionality is provided by
+% package |hyperref|, but, in my opinion, it works fine
+% in English, not in other languages. I do not think
+% the solution reported here solves the problems that
+% arise when a document is typeset in Italian. In any
+% case the definitions are here; they can be enabled and
+% disabled; by default they are disabled.
+%
+% 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. As already said, by default the
+% feature is disabled.
% \begin{macrocode}
\def\ft@figure{\iflanguage{italian}{\MakeLowercase{\figurename}}%
{\figurename}~}
@@ -3252,7 +6406,1987 @@ Skipping any redefinition\MessageBreak}%
%</topcmn>
% \fi
%
+%\iffalse
+%<*topmon>^^A MONOGRAFIA -- TRIENNALE
+%\fi
+%\subsection{The \texttt{monografia} module code}
+% We start by checking if certain file have ben loaded and in
+% case they get loaded. We check if certain switches are defined,
+% and in case such switches are defined.
+% \begin{macrocode}
+\monografiatrue
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+
+\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
+\ifcsundef{if@autoretitolo}{\newif\if@utoretitolo \@utoretitolofalse}{}
+\ifcsundef{if@ldstyle}{\newif\if@ldstyle \@ldstylefalse}{}
+\ifcsundef{if@xivpt}{\newif\if@xivpt \@xivptfalse}{}
+\ifcsundef{if@binding}{\newif\if@binding \@bindingfalse}{}
+
+\ifcsundef{ifTOPfront}{\newif\ifTOPfront \TOPfronttrue}{}
+\ifcsundef{ifevenboxes}{\newif\ifevenboxes \evenboxesfalse}{}
+% \end{macrocode}
+% We define the applicable options.
+% \begin{macrocode}
+\DeclareOption{evenboxes}{\evenboxestrue}
+\DeclareOption{cucitura}{\@bindingtrue}
+\DeclareOption{classica}{\classicatrue}
+\DeclareOption{autoretitolo}{\ifclassica\@utoretitolotrue\fi}
+\DeclareOption{oldstyle}{\ifclassica\@ldstyletrue\fi}
+%\ProcessOptions*\relax
+\ProcessOptions\relax
+
+% \end{macrocode}
+% We define the titling commands...
+% \begin{macrocode}
+\def\monografia#1{\gdef\@titolo{#1}}
+\let\titolo\monografia
+\let\@stitle\empty
+
+\def\sottotitolo#1{\gdef\@subtitle{#1}}
+% \end{macrocode}
+% \dots and the other setting or resetting commands to be used
+% within the |ThesiTitlePage| environment. Remember that all
+% these commands may be used within the configuration file,
+% if the user wants to use such file.
+% \begin{macrocode}
+\providecommand\@materia{}
+\def\Materia#1{\gdef\@materia{#1}}
+\let\materia\Materia
+\providecommand\@nomerelatoresingolare{}
+\providecommand\@nomerelatoreplurale{}
+\newcommand\NomeRelatore[2]{%
+ \gdef\@nomerelatoresingolare{#1}\gdef\@nomerelatoreplurale{#2}}
+\NomeRelatore{Relatore}{Relatori}
+\providecommand\@principaladviser{}
+\def\relatore#1{\gdef\@principaladviser{#1}}
+\providecommand\@secondadviser{}\def\secondorelatore#1{\gdef\@secondadviser{#1}}
+\providecommand\@thirdadviser{}
+\def\terzorelatore#1{\gdef\@thirdadviser{#1}}
+
+\unless\ifcsname iffemminile\endcsname
+ \newif\iffemminile\femminilefalse
+\fi
+\unless\ifcsname ifplurale\endcsname
+ \newif\ifplurale\pluralefalse
+\fi
+\providecommand\@author{}\providecommand\@@author{}
+\NewDocumentCommand\candidato{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminilefalse\pluralefalse}
+\NewDocumentCommand\candidata{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminiletrue\pluralefalse}
+\providecommand\@secondauthor{}
+\NewDocumentCommand\secondocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\secondacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\@thirdauthor{}
+\NewDocumentCommand\terzocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\terzacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\pluraletrue}
+
+\providecommand\IDlabel{\\\quad matricola\ }
+
+\edef\@submitdate{{\let\today\relax\unskip\today}}
+
+
+\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@dutaclassica#1 #2!%
+ \fi
+ \fi
+}%
+\def\s@dutaclassica#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}}%
+
+\newcommand*\NomeAnnoAccademico[1]{\gdef\AnnoAccademico{#1}}
+\@ifundefined{AnnoAccademico}{\gdef\AnnoAccademico{Anno accademico}}{}
+
+\newcommand\NomeCorsoDiStudi{Corso di laurea in\xspace}
+\providecommand\@ateneo{}
+\newcommand\ateneo[1]{\gdef\@ateneo{#1}}
+\providecommand\@NomeAteneo{}
+\newcommand\NomeAteneo[1]{\gdef\@NomeAteneo{#1}}
+\let\nomeateneo\NomeAteneo
+% \end{macrocode}
+% The following command accepts a first optional argument that
+% should contain an ordinal number, in general an uppercase
+% roman numeral, that optionally qualifies the ``academic
+% structure'' in charge of the degree course. The user might,
+% for example specify something as
+% |\struttura[III]{Faculty of Engineering}|, if such kind of
+% information is required.
+% \begin{macrocode}
+\providecommand\@strutturadi{}
+\newcommand\StrutturaDi[1]{\gdef\@strutturadi{#1\unskip\xspace}}
+\newcommand\struttura[2][]{\gdef\@struttura{\ifempty{#1}{}{#1 }\@strutturadi #2}}
+% \end{macrocode}
+% Generally bachelor degree courses are not developed within
+% international agreements such as Erasmus, but it may not be
+% excluded; therefore several University names and several
+% university logos might be necessary. The following is the
+% general machinery for queuing several logos within a horizontal
+% box to be output at the proper moment. Remember, though, that
+% if the logos are output in the lower half of the page, the
+% top of the title page should contain the university name
+% list (if this list does not fit in one line, it is necessary
+% to use some tricks described in the Italian documentation
+% |toptesi-it.pdf|); but if the logos contain also the name
+% of the university, and are printed at the top of the page,
+% the university name list becomes unnecessary.
+% \begin{macrocode}
+\ifcsundef{TPT@logospace}{\newlength{\TPT@logospace}\TPT@logospace=3em}{}
+\ifcsundef{TPT@logobox}{\newsavebox{\TPT@logobox}}{}
+\ifcsundef{TPT@logoheight}{\newdimen\TPT@logoheight}{}
+\providecommand*\setlogodistance[1]{\TPT@logospace=#1}
+\providecommand*{\@logosede}{}
+
+\ifcsundef{T@Tlogoheight}{%\
+ \newlength\T@Tlogoheight
+ \setlength\T@Tlogoheight{0.8\dimexpr(\paperwidth-\textwidth)/2}}{}
+
+\newcommand\logosede[2][\T@Tlogoheight]{\def\@logosede{#2}\TPT@logoheight=#1\relax
+\ifcsvoid{@logosede}{\sbox{\TPT@logobox}{}}{\begin{lrbox}{\TPT@logobox}%
+\expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\def\fillup@TCP@logobox#1,#2!{%
+ \ifblank{#1}{\end{lrbox}\ifdim\wd\TPT@logobox>\textwidth
+ \sbox\TPT@logobox{\resizebox{\textwidth}{!}{\box\TPT@logobox}}\fi}%
+ {\def\@logosede{#2}%
+ \includegraphics[height=\TPT@logoheight]{#1}\hskip\TPT@logospace
+ \expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\providecommand\printloghi{}
+\renewcommand\printloghi{%
+\unless\ifvoid\TPT@logobox\usebox{\TPT@logobox}\fi}
+% \end{macrocode}
+% The name of a company tutor may be required if the bachelor
+% degree final work is developed within an institution or
+% a company external to the university.
+% \begin{macrocode}
+\providecommand\@tutoreaziendale{}
+\def\tutoreaziendale#1{\gdef\@tutoreaziendale{#1}}
+\providecommand\@tutoreaziendalename{Supervisore Aziendale}
+\def\NomeTutoreAziendale#1{\gdef\@tutoreaziendalename{#1}}
+% \end{macrocode}
+% The following command set up the information for a legal or
+% copyright page; this information might contain just a simple
+% statement that indicates a copyright notice or a licence that
+% specifies the clauses for the intellectual property of the
+% work. But it might also contain a disclaimer where the only
+% author takes his/her responsibility and liability for not
+% infringing any applicable law on intellectual property;
+% such disclaimer should be dated and undersigned by the (only)
+% author. Therefore within this |\retrofrontespizio| command
+% two more commands are optionally used: |\luogo| to establish
+% the location of the signature, and |\giorno| to establish a
+% signature date different from the current date. If the |\giorno|
+% is not specified, its value maintains a meaningless default
+% string, and upon testing for such a string, no location,
+% date and signature is typeset in the legal page; if the
+% current date should be used, the user should specify
+% |\giorno{}|, with a really empty argument.
+% \begin{macrocode}
+\let\@luogo\empty\def\@giorno{*}
+\def\luogo#1{\def\@luogo{#1}}%
+\def\giorno#1{\def\@giorno{#1}}
+\newcommand\retrofrontespizio[1]{%
+\long\gdef\@retrofrontespizio{#1}}
+% \end{macrocode}
+% We restart with the definition of other data setting commands.
+% \begin{macrocode}
+\providecommand\@corsodistudi{}
+\newcommand\corsodistudi[1]{\gdef\@corsodistudi{#1}}
+\let\corsodilaureain\corsodistudi
+\providecommand\@monografia{Monografia}
+\newcommand\NomeElaborato[1]{\gdef\@monografia{#1}}
+\let\NomeMonografia\NomeElaborato
+\def\@nomecandidato{\ifclassica Laureando\else Candidato\fi}
+\def\@nomecandidata{\ifclassica Laureanda\else Candidata\fi}
+\def\@nomecandidati{\ifclassica Laureandi\else Candidati\fi}
+\def\@nomecandidate{\ifclassica Laureande\else Candidate\fi}
+% \end{macrocode}
+% The label for the candidate list requires a list of comma
+% separated names, to a maximum of four names; In order they
+% should be the masculine singular, the plural masculine, the
+% singular feminine, and the plural feminine names. No one is
+% mandatory, and the list may be completely empty if the label
+% should remain blank. The list is scanned and the names are
+% assigned to some internal variables that will be used according
+% the the gender and the number of candidates. If the list is void,
+% no name is ging to be used at all, and the candidates list is
+% typeset as a centred one without any label.
+%
+% In this way, these settings are all valid:
+%\begin{ttsintassi}
+%\cs{TitoloListaCandidati}\Marg{}
+%\cs{TitoloListaCandidati}\Marg{Estudiante}\Marg{Estudiantes}
+%\cs{TitoloListaCandidati}\Marg{ExamenKandidat}\Marg{ExamenKandidaten}\%
+%\qquad\Marg{ExamenKandidatin}\Marg{ExamenKandidatinen}
+%\end{ttsintassi}
+% This command, as it may be seen, may be used also to set the
+% name list in languages different from Italian.
+% It goes by itself that if the user typesets the thesis in a
+% language where names are gender indifferent (as English,
+% Spanish, and other ones) s/he has two choices: ether s/he
+% uses the command with just two arguments, as shown above,
+% and uses only the masculine commands |\candidato|,
+% |\secondocandidato|, and |\terzocoandidato| even with names
+% of female students, or s/he specifies the same names in the
+% arguments~3 and~4, as in arguments ~1 and~2. Lacking this
+% action, the corresponding titling names are blank.
+% \begin{macrocode}
+\newcommand\TitoloListaCandidati[1]{\CandidateNames#1,,,,!}
+\def\CandidateNames#1,#2,#3,#4,!{%
+ \gdef\@nomecandidato{#1}% Masc/neutr-sing
+ \gdef\@nomecandidati{#2}% Masc/neutr-plur
+ \gdef\@nomecandidata{#3}% Fem-sing
+ \gdef\@nomecandidate{#4}% Fem-plur
+}
+\providecommand\Relatore{Relatore}
+\newcommand\AdvisorName[1]{\gdef\Relatore{#1}}
+\providecommand\Correlatore{Correlatore}
+\providecommand\Correlatori{Correlatori}
+\newcommand\CoAdvisorName[2]{\gdef\Correlatore{#1}%
+ \gdef\Correlatori{#2}}
+% \end{macrocode}
+% A new boolean is defined in order to have a suitable switch to set the logo(s) ``string'' at the top or in the second half of the page.
+% \begin{macrocode}
+\ifcsundef{iftopTPTlogos}{\newbool{topTPTlogos} \booltrue{topTPTlogos}}{}
+% \end{macrodoe}
+% We eventually define the whole construction of the title
+% page with this new command defined by means of the |xparse|
+% package facilities. This environment accepts an optional
+% asterisk; its presence means th the logo(s) string should
+% be typeset in the lower half of the title page; differently
+% from the \LaTeX\ kernel environments that accept an optional
+% asterisk that becomes part of the environment name, and must
+% be repeated in the closing environment statement, with the
+% |xparse| facilities the asterisk is just an argument to the
+% argument list of the opening command: therefore the source
+% file contains an opening statement of the form
+% |\begin{environment}*|, not |\begin{environment*}|. The user
+% should remember tis peculiar way of specifying certain optional
+% arguments, in particular the optional ``star'' one.
+%
+% Another important difference is that environments defined
+% with the |xparse| facilities may receive optional and
+% mandatory arguments of many kinds in the opening command,
+% but differently form the standard \LaTeX\ kernel environments
+% such arguments are available not only in the opening commands,
+% but also in the closing ones. We actually don't use this
+% property during the definition of the |ThesisTitlePage|
+% environment, but we preferred to use the previously defined
+% switch.
+% \begin{macrocode}
+\NewDocumentEnvironment{ThesisTitlePage}{s}
+{% OPENING
+\IfBooleanTF{#1}{\boolfalse{topTPTlogos}}{\booltrue{topTPTlogos}}%
+ \begin{titlepage}
+ \oddsidemargin=\dimexpr(\oddsidemargin+\evensidemargin)/2\relax
+ \evensidemargin \oddsidemargin
+ \IfFileExists{\jobname.cfg}{\input{\jobname.cfg}%
+ }{%C
+ \PackageWarning{monografia}{No configuration file found}%
+ }%C
+}{% CLOSING
+ \ifbool{topTPTlogos}{\noindent\raisebox{-0.5em}[\z@][\z@]{\makebox[\textwidth]{\printloghi}}\par\bigskip}{}
+ \ifdefempty{\ateneo}{}{{\centering\huge \@ateneo\par}}
+ \ifdefempty{\@NomeAteneo}{}{\medskip{\centering\large
+ \expandafter\MakeUppercase\expandafter{\@NomeAteneo}\par}}
+ \ifdefempty{\@strutturadi}{}{\vspace{\stretch{0.1}}\par{\centering \Large\@struttura\par}}
+ \ifdefempty{\@corsodistudi}{}{\bigskip{\centering\large \NomeCorsoDiStudi\ \@corsodistudi\par}}
+ \ifdefempty{\@materia}{}{\medskip{\centering\large\@materia\par}}
+ \vspace{\stretch{0.25}}
+ {\centering\large \@monografia\par}
+ \vspace{\stretch{0.1}}
+ {\centering\LARGE\bfseries \@titolo\par}
+ \ifdefempty{\@subtitle}{\vspace{\stretch{0.3}}}{\bigskip
+ {\centering\large\@subtitle\par}}
+ \ifbool{topTPTlogos}{}{\vspace{3em}\par\centering\printloghi\par}
+ \vspace{\stretch{0.25}}
+
+\ifdefempty{\@principaladviser}{\def\BoxRelatori{}}{%
+ \def\BoxRelatori{%
+ \begin{tabular}[t]{l}%
+ \hbox{\unless\ifclassica\large\fi
+ \ifdefempty{\@secondadviser}%
+ {\let\@nomerelatore\@nomerelatoresingolare}%
+ {\let\@nomerelatore\@nomerelatoreplurale}%
+ \textbf{\@nomerelatore}}\\[.6ex]
+ \hbox{\large\textrm{\protect\@principaladviser}}%
+ \ifdefempty{\@secondadviser}{}{%
+ \ifclassica
+ \ifdefempty{\@thirdadviser}{%
+ \ifdefempty{\@secondadviser}{}{%
+ \\[1.5ex]\textbf{\Correlatore:}%
+ }
+ }{%
+ \\[1.5ex]\textbf{\Correlatori:}%
+ }
+ \fi
+ \\[.6ex]
+ \hbox{{\large\textrm{\protect\@secondadviser}}}%
+ }
+ \ifdefempty{\@thirdadviser}{}{%
+ \\[.6ex]
+ \hbox{{\large\textrm{\protect\@thirdadviser}}}%
+ }
+ \end{tabular}%
+ }%
+}
+%
+\def\print@secondocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}\@secondauthor\endtabular}}%
+\def\print@terzocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}\@thirdauthor\endtabular}}%
+
+\def\BoxCandidati{%
+ \begin{tabular}[t]{l}
+ \hbox{\unless\ifclassica\large\fi
+ \textbf{\ifplurale
+ \iffemminile\@nomecandidate\else\@nomecandidati\fi
+ \else
+ \iffemminile\@nomecandidata\else\@nomecandidato\fi
+ \fi}}\\[.6ex]
+ \hbox{\large\tabular{@{}l@{}}\@author\endtabular}%
+ \ifcsvoid{@secondauthor}{}{\print@secondocandidato}%
+ \ifcsvoid{@thirdauthor}{}{\print@terzocandidato}%
+ \end{tabular}%
+}%
+\unless\ifclassica
+ \ifdefempty{\BoxRelatori}{%Bachelor degree without supervisors
+ \noindent\makebox[\textwidth]{\tabular[t]{@{}c@{}}
+ \unless\ifclassica\large\fi
+ \textbf{\ifplurale
+ \iffemminile\@nomecandidate\else\@nomecandidati\fi
+ \else
+ \iffemminile\@nomecandidata\else\@nomecandidato\fi
+ \fi}\\[.6ex]
+ \@author
+ \ifcsvoid{@secondauthor}{}{\\ \@secondauthor}
+ \ifcsvoid{@thirdauthor}{}{\\ \@thirdauthor}
+ \endtabular}%
+ }{%
+ \unless\ifevenboxes
+ \begin{flushleft}%
+ \BoxRelatori
+ \end{flushleft}\par
+ \vspace*{-1.5\baselineskip}
+ \begin{flushright}%
+ \BoxCandidati
+ \end{flushright}%
+ \else
+ \noindent
+ \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}%
+ \fi}
+\else
+ \noindent
+ \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}%
+\fi
+\par\vspace*{\stretch{0.5}}
+\ifdefempty{\@tutoreaziendale}{\relax}{\begin{center}
+\textbf{\@tutoreaziendalename}\\[0.6ex]
+\@tutoreaziendale
+\end{center}}
+\noindent\raisebox{-\baselineskip}[0pt][0pt]{%
+ \makebox[\textwidth]{\@submitdate}}%
+\end{titlepage}\newpage
+% Legal/Copyright page
+ \ifdefempty{\@retrofrontespizio}{}{\thispagestyle{empty}%
+ \vspace*{\stretch{1}}\par
+ \@retrofrontespizio\par
+ \ifdefstring{\@giorno}{*}{}{\medskip
+ \noindent
+ \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lc@{}}
+ \ifdefempty{\@luogo}{}{\@luogo, }%
+ \ifdefempty{\@giorno}{\today}{\@giorno}
+ & \@@author\\[3ex]
+ & \makebox[0.5\textwidth]{\dotfill}
+ \end{tabular*}\par}
+ \newpage}
+}
+% \end{macrocode}
+% This is the end of this module code.
+%\iffalse
+%</topmon>
+%\fi
+%
+%\iffalse
+%<*topmag>^^A MAGISTRALE
+%\fi
+% \subsection{Code for \opz{magistrale}}
+% Here we document the code for the \opz{magistrale} option.
+% It is a little more complicated than the code for other
+% thesis types, because the title page may be typeset in different
+% modes, especially for theses in the humanities domain where
+% they might be typeset in more than one volume (tome).
+%
+% We start by providing the necessary commands, without
+% duplicating those provided by the calling package |toptesi|.
+% Nevertheless this module may be used as a standalone one,
+% i.e.\ a package loaded by a different class; may be not
+% always and not with any class, but the idea is this one.
+% In facts it this module does not receive the suitable
+% settings from package |toptesi|,it is possible to call it
+% with the suitable options as explained below.
+% \begin{macrocode}
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
+\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
+\ifcsundef{if@ldstyle}{\newif\if@ldstyle\@ldstylefalse}{}
+\ifcsundef{if@xivpt}{\newif\if@xivpt \@xivptfalse}{}
+\ifcsundef{if@binding}{\newif\if@binding\@bindingfalse}{}
+\ifcsundef{ifScuDo}{\newif\ifScuDo \ScuDofalse}{}
+\ifcsundef{ifmonografia}{\newif\ifmonografia\monografiafalse}{}
+\ifcsundef{iftriennale}{\newif\iftriennale\triennalefalse}{}
+\ifcsundef{ifmagistrale}{\newif\ifmagistrale\magistralefalse}{}
+\ifcsundef{ifdottorale}{\newif\ifdottorale\dottoralefalse}{}
+\ifcsundef{ifsecondaria}{\newif\ifsecondaria\secondariafalse}{}
+\ifcsundef{ifplurale}{\newif\ifplurale\pluralefalse}{}
+\ifcsundef{iffemminile}{\newif\iffemminile\femminilefalse}{}
+
+\magistraletrue
+
+\ifcsundef{ifTOPfront}{\newif\ifTOPfront \TOPfrontfalse
+\newif\ifevenboxes \evenboxesfalse}{}
+
+% \end{macrocode}
+% We provide for the counter |tomo| and for a new definition
+% the command |\tomo|; this new definition does not trigger
+% the production of a title page as it does with the definition
+% of package |toptesi.sty|; it accepts an optional argument,
+% the tome (arabic) number (that shall be transformed into a
+% capital roman one while typesetting the title page); if this
+% number is not specified the counter value is stepped up
+% with the |\refstepconter| macro that renders it accessible
+% to the |\label| command; otherwise a value equal to the
+% given number minus one is loaded and afterwars ``refstepped''
+% up in the same way.
+%
+% Since \LaTeX\ counter settings are global, the value kept
+% in the counter remains available anyhow; therefore it is
+% not excluded that multiple tomes might be typeset in one
+% output \sigla{PDF} file to be split in separate files as described
+% in section~\ref{sec:topmagistrale}; I did not test this
+% functionality but I do not exclude it.^^A CONTROLLARE
+% \begin{macrocode}
+\ifcsundef{c@tomo}{\newcounter{tomo}{\setcounter{tomo}{0}}}{}
+\providecommand\tomo{}
+\ifcsundef{tomo}{\renewcommand\tomo[1][]{%
+ \ifstrequal{#1}{}{}{\setcounter{tomo}{\numexpr#1-1}}%
+ \refstepcounter{tomo}}}{}
+% \end{macrocode}
+%
+% We define the options that set the same switches as those set
+% by the class. If another class different from |toptesi| is used,
+% it is possible that \opz{14pt} produces errors or does not
+% produce the desired setting of the normal size to 14pt.
+% \begin{macrocode}
+\DeclareOption{evenboxes}{\evenboxestrue}
+\DeclareOption{cucitura}{\@bindingtrue}
+\DeclareOption{14pt}{\@xivpttrue}
+\DeclareOption{classica}{\classicatrue}
+\DeclareOption{autoretitolo}{\ifclassica\@utoretitolotrue\fi}
+\DeclareOption{oldstyle}{\ifclassica\@ldstyletrue\fi}
+\ProcessOptions*\relax
+% \end{macrocode}
+%
+% We define two different page styles to be used normally
+% or when the |classica| option is in force. Both redefine
+% the text grid to be more or less centred on the physical
+% page; since it is the first page, no binding correction
+% is possibly taken care of, because the first page does
+% not suffer from the curvature and thickness of the bound
+% thesis. The headings and footers in both cases are already
+% filled up with suitable title page data, therefore their
+% space is used instead of wasted.
+% \begin{macrocode}
+\def\headstrut{\vrule \@depth4\p@ \@height\z@ \@width\z@}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+ \def\@oddfoot{\vbox to 0.05\paperheight{\vss
+ \hbox to\hsize{\hfil{\Large{\@submitdate}}\hfil}}}%
+ \let\@evenfoot\@oddfoot
+ \def\@oddhead{%
+ \vbox to\headheight{\vss\iftopTPTlogos
+ \hbox to\textwidth{%
+ \headstrut\hfil
+ \raisebox{3\baselineskip}{\usebox\TPT@logobox}\hfil\null%
+ }\fi
+ \ifcsvoid{@ateneo}{}{\vskip\smallskipamount
+ \hbox to\textwidth{\hss\LARGE\MakeUppercase{\@ateneo}\hss}}
+ \vss
+ }%
+ }%
+ \let\@evenhead\@oddhead
+ \def\chaptermark##1{}\def\sectionmark##1{}%
+}
+
+\def\ps@classica{\let\@mkboth\markboth
+ \def\@oddhead{\vbox{%
+ \setbox256=\hbox{\LARGE\MakeUppercase{\@ateneo}}
+ \unless\ifdim\wd256<\textwidth
+ \setbox256=\hbox{\resizebox{\textwidth}{!}{\box256}}%
+ \fi
+ \hbox to \hsize{\hss\box256\hss}%
+ \ifclassica
+ \hbox to \hsize{\hfil\vrule\@width\z@
+ \@height2ex\vrule\@height1.4\p@\@depth-\p@\@width50mm\hfil}%
+ \fi
+ }}%
+ \def\@oddfoot{\vbox to \dimexpr\paperheight/20\relax{\vss
+ \ifclassica
+ \hbox to \hsize{\hfil\raisebox{-.3ex}[\z@][\z@]{%
+ \vrule\@height-2.6\p@\@depth3\p@\@width
+ \dimexpr\textwidth/3}\hfil}%
+ \fi
+ \hbox to\hsize{\hfill{\Large{\@submitdate}}\hfill}}%
+ }%
+ \let\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot
+}%
+% \end{macrocode}
+%
+% Some redefinitions to handle both the heading label of
+% the authors block and the proper gender of such names.
+% \begin{macrocode}
+\newif\iffemminile
+%\newif\ifdottorato \dottoratofalse
+%\newif\iftriennale \triennalefalse
+
+\ifTOPfront\ifclassica
+\def\Candidato{Laureando}
+\def\Candidata{Laureanda}
+\def\Candidati{Laureandi}
+\def\Candidate{Laureande}
+\fi\fi
+% \end{macrocode}
+%
+% We prepare the |titolo| command. Such command accepts
+% a short title string no more, no less than the \LaTeX\
+% sectioning commands. It is always advisable to use short
+% titles; nevertheless when the |classica| |autoretitolo|
+% option is in force, long titles don't fit into the page
+% headings, therefore an alternative short title is desirable.
+% Long titles may be also shortened by transferring part of
+% their information to a subtitle; but this must be an
+% author's decision, it cannot be automated. Therefore
+% a |\sottotitolo| command is also provided.
+% \begin{macrocode}
+\let\@stitle\empty % default short title string
+
+\newcommand*{\titolo}[2][]{%
+\ifstrequal{#1}{}%
+ {\gdef\@stitle{#2}}{\gdef\@stitle{#1}}%
+ \gdef\@titolo{#2}%
+}%
+\def\sottotitolo#1{\gdef\@subtitle{#1}}
+
+% \end{macrocode}
+%
+% The defining commands for both the preset fixed strings
+% and the variable data strings are defined; somewhere
+% these strings receive also the preset values; some of the
+% following strings are used to modify such preset values,
+% very useful to localise such strings for a particular language.
+% \begin{macrocode}
+\let\@materia\empty
+\def\Materia#1{\def\@materia{#1}}\let\materia\Materia
+\def\relatore#1{\gdef\@principaladviser{#1}}
+\def\secondorelatore#1{\gdef\@secondadviser{#1}}
+\def\terzorelatore#1{\gdef\@thirdadviser{#1}}
+\def\sedutadilaurea#1{\getseduta#1 !}
+\def\getseduta#1 #2!{%
+ \ifstrequal{#2}{}%
+ {\def\@submitdate{#1}}%
+ {\unless\ifclassica
+ \def\@submitdate{#1 #2}%
+ \else
+ \s@dutaclassica#1 #2!%
+ \fi}
+}%
+\def\s@dutaclassica#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}}%
+
+\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 the `classica' option}
+\fi}
+\def\s@tanno#1-#2!{\oldstylenums{#1}\EnDash\oldstylenums{#2}}
+
+\def\EnDash{{\settowidth{\dimen@}{\large\scshape 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@}}}
+\def\corsodilaurea#1{\gdef\@corso{#1}}
+\def\ateneo#1{\gdef\@ateneo{#1}}
+\def\nomeateneo#1{\gdef\@nomeat{\expandafter\uppercase{\expandafter #1}}}
+\newcommand\facolta[2][]{\gdef\@facname{#2}\gdef\@facnumber{#1}}
+\let\struttura\facolta
+
+% \end{macrocode}
+%
+% Here we define the necessary commands to fill up a comma
+% separated list of logo graphic file names; we define
+% everything up to the |\printlogos| command that provides
+% to printing a list of images, duly separated by adequate
+% space, all scaled to the same height, and, possibly, even
+% the whole logo string duly scaled to fit in the title page
+% width. The |\logosede| command, that can be used several
+% times with different logo file names, accepts an optional
+% argument consisting in a dimension; it is used to scale the
+% height of the logo image to the desired value, so that the
+% whole string of images does not have unusual differences
+% logo heights. This dimension id preset to one seventh of
+% the |\textwidth| and on the average it is well suited. With
+% the standard |toptesi| class printed on A4 paper, such height
+% equals 25\,mm; of course on smaller paper it is proportionally
+% small; on American sized sheets it may be a little larger,
+% but in general it is adequate to the page size.
+% \begin{macrocode}
+\newlength{\TPT@logospace}\TPT@logospace=3em\relax
+\newsavebox{\TPT@logobox}
+\newdimen\TPT@logoheight
+\newcommand*\setlogodistance[1]{\TPT@logospace=#1}
+\providecommand*{\@logosede}{}
+
+\ifcsundef{T@Tlogoheight}{%\
+ \newlength\T@Tlogoheight
+ \setlength\T@Tlogoheight{0.8\dimexpr(\paperwidth-\textwidth)/2}}{}
+
+\newcommand\logosede[2][\T@Tlogoheight]{\def\@logosede{#2}\TPT@logoheight=#1\relax
+\ifcsvoid{@logosede}{\sbox{\TPT@logobox}{}}{\begin{lrbox}{\TPT@logobox}%
+\expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\def\fillup@TCP@logobox#1,#2!{%
+\ifblank{#1}{\end{lrbox}\ifdim\wd\TPT@logobox>\textwidth
+\sbox\TPT@logobox{\resizebox{\textwidth}{!}{\box\TPT@logobox}}\fi}%
+{\def\@logosede{#2}%
+\includegraphics[height=\TPT@logoheight]{#1}\hskip\TPT@logospace
+ \expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\newcommand\printloghi{\unless\ifvoid\TPT@logobox\usebox{\TPT@logobox}\fi}
+% \end{macrocode}
+%
+% Still more commands to define the necessary string data.
+% For the ID number label the same remarks made in
+% section~\ref{sec:topfront} hold true.
+% \begin{macrocode}
+\def\tutoreaziendale#1{\gdef\@tutoreaziendale{#1}}
+\newcommand\retrofrontespizio[1]{\long\gdef\@retrofrontespizio{#1}}
+\newcommand\FacoltaDi[1]{\gdef\@faculty{#1}}
+\let\StrutturaDidattica\FacoltaDi
+\newcommand\CorsoDiLaureaIn[1]{\gdef\@laureaname{#1}}
+\newcommand\TesiDiLaurea[1]{\gdef\@TesiDiLaurea{#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\NomePrimoTomo[1]{\gdef\PrimoTomo{#1}}
+\newcommand\NomeSecondoTomo[1]{\gdef\SecondoTomo{#1}}
+\newcommand\NomeTerzoTomo[1]{\gdef\TerzoTomo{#1}}
+\newcommand\NomeQuartoTomo[1]{\gdef\QuartoTomo{#1}}
+\newcommand\IDlabel{\\\quad matricola:\xspace}
+\IfFileExists{\jobname.cfg}{\input{\jobname.cfg}}%
+ {\IfFileExists{toptesi.cfg}{\input{toptesi.cfg}}{}}
+% \end{macrocode}
+%
+% Here we define the preset strings; most of the are empty
+% strings, but some are real words; the setting commands
+% listed before can easily be used to localise such string
+% in different languages.
+% \begin{macrocode}
+\@ifundefined{@titolo}{\def\@titolo{}}{}
+
+\providecommand\@author{}\providecommand\@@author{}
+\NewDocumentCommand\candidato{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminilefalse\pluralefalse}
+\NewDocumentCommand\candidata{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminiletrue\pluralefalse}
+\providecommand\@secondauthor{}
+\NewDocumentCommand\secondocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\secondacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\@thirdauthor{}
+\NewDocumentCommand\terzocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\terzacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\IDlabel{\\\quad matricola\ }
+\@ifundefined{@principaladviser}{\def\@principaladviser{}}{}
+\@ifundefined{@secondadviser}{\def\@secondadviser{}}{}
+\@ifundefined{@thirdadviser}{\def\@thirdadviser{}}{}
+\@ifundefined{@tutore}{\def\@tutore{}}{}
+\@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{@retrofrontespizio}{\def\@retrofrontespizio{}}{}
+\@ifundefined{@subtitle}{\def\@subtitle{}}{}
+\@ifundefined{@corso}{\def\@corso{}}{}
+\@ifundefined{@ateneo}{\def\@ateneo{POLITECNICO DI TORINO}}{}
+\@ifundefined{@nomeat}{\def\@nomeat{}}{}% Nome proprio dell'ateneo
+\@ifundefined{@facolta}{\def\@facname{}}{}
+\@ifundefined{@facnumber}{\def\@facnumber{}}{}
+\@ifundefined{@faculty}{\def\@faculty{}}{}
+\@ifundefined{PrimoTomo}{\def\PrimoTomo{Tomo primo}}{}
+\@ifundefined{SecondoTomo}{\def\SecondoTomo{Tomo secondo}}{}
+\@ifundefined{TerzoTomo}{\def\TerzoTomo{Tomo terzo}}{}
+\@ifundefined{QuartoTomo}{\def\QuartoTomo{Tomo quarto}}{}
+\ifclassica
+\def\Candidato{Laureando}
+\def\Candidata{Laureanda}
+\def\Candidati{Laureandi}
+\def\Candidate{Laureande}
+\fi
+\@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{@TesiDiLaurea}{\def\@TesiDiLaurea{Tesi di Laurea}}{}
+\@ifundefined{@laureaname}{\def\@laureaname{Corso di Laurea in }}{}
+\@ifundefined{@InName}{\def\@InName{in}}{}
+\newbool{topTPTlogos} \booltrue{topTPTlogos}
+% \end{macrocode}
+%
+% Here the real differences take place; the environments
+% |frontespizio| and |frontespizio*| are still usable, but
+% we discourage them. Even the commands |\frontespizio| and
+% |\frontespizio*| are still usable but for even more reasons
+% we discourage their use; they reman available for a sort
+% of backwards compatibility.
+%
+% A new environment |ThesisTitlePage| is defined that actually
+% resorts to the core command that stands behind the above
+% discouraged environments and commands. This new environment
+% uses the |xparse| commands to define it; therefore the
+% asterisk that differentiates the four old environments and
+% commands is not any more part of the environment name, but,
+% if used, must be the first token after the environment
+% opening statement, and should not be repeated with the
+% closing statement; therefore
+%\begin{verbatim}
+%% Correct usage
+%\begin{ThesisTitlePage}*
+%...
+%\end{ThesisTitlePage}
+%\end{verbatim}
+% is correct, while
+%\begin{verbatim}
+%% Wrong usage
+%\begin{ThesisTitlePage*}
+%...
+%\end{ThesisTitlePage*}
+%\end{verbatim}
+% is wrong.
+% This choice was made because its programming is simpler,
+% but in view of the end user it is simpler to use: for
+% example, if the user does not use the asterisk for typesetting
+% the logos at the top of the page, and in a second time
+% s/he decides that the title page should be typeset with
+% the logos in the title page lower part, s/he has to add
+% just one asterisk to the opening statement avoiding the
+% possibility to forget its addition to the closing statement.
+% \begin{macrocode}
+\newenvironment{frontespizio*}{\boolfalse{topTPTlogos}}{\fr@ntespizio}
+
+\newenvironment{frontespizio}{%
+ \ifdefstring{\@currenvir}{frontespizio}
+ {\booltrue{topTPTlogos}}{\TPTmaybestar}
+ }{%
+ \fr@ntespizio
+ }
+
+\DeclareDocumentEnvironment{ThesisTitlePage}{s}{%
+\IfBooleanTF{#1}{\boolfalse{topTPTlogos}}{\booltrue{topTPTlogos}}%
+\InputIfFileExists{\jobname.cfg}{}{%
+ \PackageInfo{toptesi-magistrale}{No configuration file found}}
+}{\fr@ntespizio}
+% \end{macrocode}
+% The following code is substantially identical to that of the
+% |topfront| package; just the statements concerning the
+% bachelor degree and the Ph.D.~degree theses have been deleted.
+% \begin{macrocode}
+\newbool{AteneoInHead}\boolfalse{AteneoInHead}
+\newcommand\TPTmaybestar[1]{\def\@tempA{#1}%
+\ifdefstring{\@tempA}{*}%
+ {\boolfalse{topTPTlogos}\booltrue{AteneoInHead}\fr@ntespizio}
+ {\booltrue{topTPTlogos}\fr@ntespizio\@tempA}
+}
+\def\fr@ntespizio{%
+\begingroup\par
+ \oddsidemargin=\dimexpr(\oddsidemargin+\evensidemargin)/2\relax
+ \evensidemargin \oddsidemargin
+\null
+\setcounter{page}{1}%
+\normalfont
+\ifclassica
+ \boolfalse{topTPTlogos}
+ \thispagestyle{classica}
+ \ifcsvoid{@ateneo}{\def\@ateneo{Manca il nome dell'ateneo}
+ }{}
+\else
+ \thispagestyle{titlepage}
+\fi
+\ifcsvoid{@ateneo}{}{\booltrue{AteneoInHead}}
+\ifcsvoid{@ateneo}{%
+ \ifbool{topTPTlogos}
+ {}{\booltrue{AteneoInHead}\def\@ateneo{Manca il nome dell'ateneo}}%
+}{%
+ \booltrue{AteneoInHead}%
+}
+
+ \ifbool{AteneoInHead}{}{%
+ {{\centering\LARGE \@ateneo\par}}
+ }
+ \ifcsvoid{@nomeat}{}
+ {\ifbool{topTPTlogos}{\vspace*{\dimexpr \headsep+2.5ex}}%
+ {\vspace*{-3ex}}%
+ {\centering\@nomeat\par}\vfill}
+
+ \begin{center}
+ {\rmfamily\mdseries
+ \ifdottorato
+ \large \@phdschool\par\medskip
+ \else
+ \ifcsvoid{@faculty}{}{%
+ \LARGE\ifx\@facnumber\empty\else\@facnumber\space\fi
+ \@faculty\unskip\xspace\@facname\par\medskip
+ }
+ \fi
+ }%
+ \ifcsvoid{@corso}{}{{\large
+ \ifdottorato
+ \@PhDname\unskip\xspace
+ \@corso\ifx\@ciclo\empty\else~--~\@ciclo\fi
+ \else
+ \@laureaname\unskip\xspace\@corso
+ \fi
+ \par}}
+ \end{center}
+ \vspace{\stretch{0.2}}
+ \begin{center}
+ \LARGE\@TesiDiLaurea%
+ \unless\ifx\empty\@materia
+ \\\@InName\\\@materia
+ \fi
+ \end{center}
+ \vspace{\stretch{0.2}}
+ \begin{center}
+ {\huge\bfseries \baselineskip=0.95em plus 1pt
+ \@titolo \par}
+ \end{center}
+ \unless\ifx\@subtitle\empty
+ \begin{center}%
+ \large\textrm{\@subtitle}\par
+ \end{center}%
+ \fi
+ \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
+ We never considered a thesis might get
+ divided in more than four volumes}%
+ \fi}}%
+ \fi
+ \vspace{1em}
+ \fi
+ \par
+ \unless\iftopTPTlogos
+ {\vfill\centering \printloghi\par}\fi
+ \vfill
+ \iflanguage{italian}{%
+ \iffemminile
+ \def\@nomecandidato{\Candidata}%
+ \else
+ \def\@nomecandidato{\Candidato}%
+ \fi
+ \ifcsvoid{@secondauthor}{}{%
+ \iffemminile
+ \def\@nomecandidato{\Candidate}%
+ \else
+ \def\@nomecandidato{\Candidati}%
+ \fi}
+ }{}%
+ \unless\iftriennale
+ \def\BoxRelatori{%
+
+ \begin{tabular}[t]{l}%
+ \ifclassica
+ \hbox{\textbf{\Relatore}}%
+ \else
+ \hbox{\large\bfseries
+ \ifcsvoid{@secondadviser}{\Relatore}{\Relatori}}
+ \fi\\[.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}%
+ }%
+ \def\print@secondocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}%
+ \@secondauthor\endtabular}}
+ \def\print@terzocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}%
+ \@thirdauthor\endtabular}}
+ \def\BoxCandidati{%
+ \begin{tabular}[t]{l}%
+ \hbox{\unless\ifclassica\large\fi
+ \textbf{\protect\@nomecandidato}}\\[.6ex]
+ \hbox{\large\tabular{@{}l@{}}\@author\endtabular}%
+ \ifcsvoid{@secondauthor}{}{\print@secondocandidato}%
+ \ifcsvoid{@thirdauthor}{}{\print@terzocandidato}%
+ \end{tabular}%
+ }%
+ \unless\ifdottorato
+ \unless\ifclassica
+ \unless\ifevenboxes
+ \begin{flushleft}%
+ \BoxRelatori
+ \end{flushleft}\par\vspace*{-1.5\baselineskip}
+ \begin{flushright}%
+ \BoxCandidati
+ \end{flushright}%
+ \else
+ \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}
+ \fi
+ \else
+ \noindent
+ \makebox[\textwidth]{%
+ \BoxRelatori\hfill\BoxCandidati}\par
+ \fi
+ \fi
+ \fi
+ \ifcsvoid{@tutoreaziendale}{}{%
+ \vfill\vfill
+ {\centering \textbf{\@tutoreaziendalename}\\[.6ex]
+ \@tutoreaziendale\par}%
+ }
+ \par\clearpage
+% \end{macrocode}
+%
+% It is useful to remind that the legal page in general is not
+% compulsory, but it is becoming frequently requested by more
+% and more universities. The user can fill up the
+% |\retrofrontespizio| argument with as many paragraphs s/he
+% is subject in accordance with his/her university requirements.
+% In general there is a statement claiming the intellectual
+% property if the thesis contents; very often it makes reference
+% to the Creative Commons licence that is internationally well
+% known; other international licences may me used. At the same
+% time very often a statement is needed where the thesis author
+% assume the necessary liability for any violation of other
+% people intellectual property and/or copyright. Plagiarism and
+% lack od attribution of other people rights are the most common
+% illegal actions done by students writing their theses, and it
+% is very important that the student responsibility is underlined
+% by asking him/her to fulfil the legal obligations.
+% \begin{macrocode}
+\ifcsvoid{@retrofrontespizio}{}%
+ {\null\vfill\thispagestyle{empty}\@retrofrontespizio\par\clearpage}%
+\endgroup}
+% \end{macrocode}
+%\iffalse
+%</topmag>
+%\fi
+%
+%
+%\iffalse
+%<*topdoc>^^A DOTTORALE
+%\fi
+% \subsection{The \texttt{toptesi-dottorale} module}
+% What follows is mainly a replica of the |topfront| module
+% where useless commands have been eliminated; ``useless''
+% in view of creating a title page for a Ph.D.~thesis.
+%
+% First we load the necessary packages.
+% \begin{macrocode}
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+% \end{macrocode}
+% The we define, if they are not already defined some boolean
+% switches related to the possible options. The above packages,
+% and the following switches are necessary in case thei module
+% is used by itself with a different class. The module accepts
+% some options, that are declared just after these preliminary
+% definitions.
+% \begin{macrocode}
+\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
+\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
+\ifcsundef{if@ldstyle}{\newif\if@ldstyle\@ldstylefalse}{}
+\ifcsundef{if@xivpt}{\newif\if@xivpt \@xivptfalse}{}
+\ifcsundef{if@binding}{\newif\if@binding\@bindingfalse}{}
+\ifcsundef{ifdottorale}{\newif\ifdottorale\dottoralefalse}{}
+\ifcsundef{ifevenboxes}{\newif\ifevenboxes \evenboxesfalse}{}
+% \end{macrocode}
+% Using this module implies that some switches used in the
+% following commands should be set to false.
+% \begin{macrocode}
+\ifcsundef{ifTOPfront}{\newif\ifTOPfront \TOPfrontfalse}{}
+\ifcsundef{ifT@Pfrontespizio}{\newif\ifT@Pfrontespiziofalse}{}
+\ifcsundef{c@tomo}{\newcounter{tomo}\setcounter{tomo}{0}}{}
+\newif\iffemminile\newif\ifplurale
+\newif\iftriennale\triennalefalse
+\newif\ifdottorato \dottoratotrue
+
+% \end{macrocode}
+% Here are the option declarations and their processing. Notice
+% that the |14pt| option implies the the calling class loads
+% some package that can set a normal size to 14pt or 14.4pt,
+% otherwise this option may produce an error or a warning;
+% in the best case it does not do anything. The |toptesi|
+% class loads such a suitable package and allows to set any
+% integer or fractional size; this package is |scrextend| and
+% the user who wants to use a normal size larger than 12pt
+% or smaller than 10pt, can resort to that package; possibly
+% that is not the only package suited for such acrobatic
+% settings, but the important point is to avoid ``acrobatics'';
+% scientific books, reports, theses, and other such documents
+% are supposed to be read by adults, not by children while
+% normal sizes from 14pt on are more suited for elementary
+% school pupils. On the opposite, normal sizes smaller than
+% 10pt are difficult to read and should be avoided for
+% documents to be read continuously; It is possible to use
+% such small font sizes in foot notes, or in dictionaries,
+% but both footnotes and dictionary entries do not generally
+% occupy dozens of pages.
+% \begin{macrocode}
+\DeclareOption{evenboxes}{\evenboxestrue}
+\DeclareOption{cucitura}{\@bindingtrue}
+\DeclareOption{14pt}{\@xivpttrue}
+\DeclareOption{classica}{\classicatrue}
+\DeclareOption{autoretitolo}{\ifclassica\@utoretitolotrue\fi}
+\DeclareOption{oldstyle}{\ifclassica\@ldstyletrue\fi}
+\ProcessOptions*\relax
+% \end{macrocode}
+%
+% We now define two specific page styles, one for ``normal''
+% title pages, and one for theses typeset wit the |classica|
+% option in force: they are |\ps@titlepge| and |\ps@classica|.
+% \begin{macrocode}
+\def\headstrut{\vrule \@depth4\p@ \@height\z@ \@width\z@}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+ \def\@oddfoot{\vbox to 0.05\paperheight{\vss
+ \hbox to\hsize{\hfil{\Large{\@submitdate}}\hfil}}}%
+ \let\@evenfoot\@oddfoot
+ \def\@oddhead{%
+ \vbox to\headheight{\vss\iftopTPTlogos
+ \hbox to\textwidth{%
+ \headstrut\hfil
+ \raisebox{3\baselineskip}{\usebox\TPT@logobox}\hfil\null%
+ }\fi
+ \ifcsvoid{@ateneo}{}{\vskip\smallskipamount
+ \hbox to\textwidth{\hss\LARGE\MakeUppercase{\@ateneo}\hss}}
+ \vss
+ }%
+ }%
+ \let\@evenhead\@oddhead
+ \def\chaptermark##1{}\def\sectionmark##1{}%
+}
+
+ \def\ps@classica{\let\@mkboth\markboth
+ \def\@oddhead{\vbox{%
+ \setbox256=\hbox{\LARGE\MakeUppercase{\@ateneo}}
+ \unless\ifdim\wd256<\textwidth
+ \setbox256=\hbox{\resizebox{\textwidth}{!}{\box256}}%
+ \fi
+ \hbox to \hsize{\hss\box256\hss}%
+ \ifclassica
+ \hbox to \hsize{\hfil\vrule\@width\z@
+ \@height2ex\vrule\@height1.4\p@\@depth-\p@\@width50mm\hfil}%
+ \fi
+ }}%
+ \def\@oddfoot{\vbox to \dimexpr\paperheight/20\relax{\vss
+ \ifclassica
+ \hbox to \hsize{\hfil\raisebox{-.3ex}[\z@][\z@]{%
+ \vrule\@height-2.6\p@\@depth3\p@\@width
+ \dimexpr\textwidth/3}\hfil}%
+ \fi
+ \hbox to\hsize{\hfill{\Large{\@submitdate}}\hfill}}%
+ }%
+ \let\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot
+ }%
+% \end{macrocode}
+%
+% We provide also the variant settings for when the |classica|
+% option is in force toghether with the |autoretitolo| one.
+% \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{\ifPDFTeX\latintext\fi
+ \footnotesize\strut\textsc{%
+ \@@author\ifcsvoid{@secondauthor}{\ et al.}: \@stitle}%
+ }%
+ \ifdim\wd\@intesta>\textwidth\headwrn{\titolo}\fi
+ \underline{\makebox[\textwidth]{\box\@intesta}}}%
+ \def\@oddhead{\ifPDFTeX\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{\ifPDFTeX\latintext\fi
+ \footnotesize\textsc{%
+ \@@author\ifcsvoid{@secondauthor}{}{\ et al.}: \@stitle}}%
+ \setbox\tw@\hbox{\ifPDFTeX\latintext\fi
+ \footnotesize\textsl{\rightmark}}%
+ \dimen@=\dimexpr2em + \wd\z@ + \wd\tw@\relax
+ \ifdim\dimen@<\textwidth \relax
+ \else
+ \setbox\z@\vbox{\hsize.48\textwidth\parindent\z@
+ \raggedright
+ \ifPDFTeX\latintext\fi\footnotesize\textsc{%
+ \@@author\ifcsvoid{@secondauthor}{}{\ et al.}: \@stitle
+ }}%
+ \setbox\tw@\vbox{\hsize.48\textwidth\parindent\z@
+ \raggedleft
+ \ifPDFTeX\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}
+% Now we define the title setting commands for both
+% title (|\titolo|) and subtitle (|\sottotitolo|) and
+% all the other command for setting the fixed strings.
+% \begin{macrocode}
+\let\@stitle\empty
+
+\newcommand*{\titolo}[2][]{%
+\def\@tempA{#1}\ifdefempty{\@tempA}%
+ {\gdef\@stitle{#2}}{\gdef\@stitle{#1}}%
+ \gdef\@titolo{#2}%
+}%
+
+\def\sottotitolo#1{\gdef\@subtitle{#1}}
+\let\@materia\empty
+\def\Materia#1{\def\@materia{#1}}\let\materia\Materia
+\newif\ifDirettore \Direttorefalse
+\def\tutore#1{\gdef\@tutore{#1}}
+\def\direttore{\Direttoretrue\relatore}%
+\def\coordinatore{\Direttorefalse\relatore}%
+\def\QualificaDirettore#1{\gdef\@PhDdirector{#1}}%
+\def\relatore#1{\gdef\@principaladviser{#1}}
+\def\secondorelatore#1{\gdef\@secondadviser{#1}}
+\def\terzorelatore#1{\gdef\@thirdadviser{#1}}
+\def\esamedidottorato#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@dutaclassica#1 #2!%
+ \fi
+ \fi
+}%
+\def\s@dutaclassica#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}}%
+
+\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 the `classica' option}
+ \fi}
+\def\s@tanno#1-#2!{\oldstylenums{#1}\EnDash\oldstylenums{#2}}
+
+\def\EnDash{{\settowidth{\dimen@}{\large\scshape 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@}}}
+\def\ciclodidottorato#1{\gdef\@ciclo{#1 \@cyclename}}%
+\def\corsodidottorato#1{\global\dottoratotrue
+ \global\gdef\@corso{#1}}
+\def\scuoladidottorato#1{\global\dottoratotrue
+ \gdef\@phdschool{#1}}
+\def\ateneo#1{\gdef\@ateneo{#1}}
+\def\nomeateneo#1{\gdef\@nomeat{\expandafter\uppercase{\expandafter #1}}}
+\newcommand\facolta[2][]{\gdef\@facname{#2}\gdef\@facnumber{#1}}
+\let\struttura\facolta
+% \end{macrocode}
+% Here we define how to handle one or more logos; even in
+% PH.D.%schools there might be situations where the Ph.D.~program
+% has been carried on in several universities; it might be
+% required to set the logos where the research program
+% leading to the Ph.D. has been developed. The user commands
+% are |\logosede| and |\printloghi|; the latter does what
+% its name suggests, i.e. it prints the string of logos;
+% the former command accepts one logo file name, and queues
+% it into a logo list; this command may be used multiple times;
+% of course if there are several logos, their ``string''
+% may become larger than the text width, and in this case
+% |\printloghi| shrinks the whole string (maintaining the
+% aspect ratio) so as to fit it within the measure. If the
+% logos are too many and/or they are too wide, this
+% shrinking may reduce them too much; there is no work
+% around this problem except avoiding using too many and/or
+% too wide logos.
+% \begin{macrocode}
+\newlength{\TPT@logospace}\TPT@logospace=3em\relax
+\newsavebox{\TPT@logobox}
+\newdimen\TPT@logoheight
+\newcommand*\setlogodistance[1]{\TPT@logospace=#1}
+\providecommand*{\@logosede}{}
+
+\ifcsundef{T@Tlogoheight}{%\
+ \newlength\T@Tlogoheight
+ \setlength\T@Tlogoheight{0.8\dimexpr(\paperwidth-\textwidth)/2}}{}
+
+\newcommand\logosede[2][\T@Tlogoheight]{\def\@logosede{#2}\TPT@logoheight=#1\relax
+\ifcsvoid{@logosede}{\sbox{\TPT@logobox}{}}{\begin{lrbox}{\TPT@logobox}%
+\expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\def\fillup@TCP@logobox#1,#2!{%
+\ifblank{#1}{\end{lrbox}\ifdim\wd\TPT@logobox>\textwidth
+\sbox\TPT@logobox{\resizebox{\textwidth}{!}{\box\TPT@logobox}}\fi}%
+{\def\@logosede{#2}%
+\includegraphics[height=\TPT@logoheight]{#1}\hskip\TPT@logospace
+ \expandafter\fillup@TCP@logobox\@logosede,!}}
+
+\newcommand\printloghi{\unless\ifvoid\TPT@logobox\usebox{\TPT@logobox}\fi}
+% \end{macrocode}
+%
+% We keep defining macros to set fixed string or variable data.
+% \begin{macrocode}
+\def\tutoreaziendale#1{\gdef\@tutoreaziendale{#1}}
+\newcommand\retrofrontespizio[1]{\long\gdef\@retrofrontespizio{#1}}
+\newcommand\FacoltaDi[1]{\gdef\@faculty{#1}}
+\let\StrutturaDidattica\FacoltaDi
+\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}}
+\newcommand\IDlabel{\\matricola:\xspace}
+\IfFileExists{\jobname.cfg}{\input{\jobname.cfg}}%
+ {\IfFileExists{toptesi.cfg}{\input{toptesi.cfg}}{}}
+\@ifundefined{@cyclename}{\def\@cyclename{ciclo}}{}
+\@ifundefined{@titolo}{\def\@titolo{}}{}
+\NewDocumentCommand\candidato{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminilefalse\pluralefalse}
+\NewDocumentCommand\candidata{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}
+\femminiletrue\pluralefalse}
+\providecommand\@secondauthor{}
+\NewDocumentCommand\secondocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\secondacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@secondauthor{#1}}%
+ {\gdef\@secondauthor{#1\IDlabel#2}}%
+\pluraletrue}
+\providecommand\@thirdauthor{}
+\NewDocumentCommand\terzocandidato{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\femminilefalse\pluraletrue}
+\NewDocumentCommand\terzacandidata{m o}{%
+\IfNoValueTF{#2}{\gdef\@thirdauthor{#1}}%
+ {\gdef\@thirdauthor{#1\IDlabel#2}}%
+\pluraletrue}
+
+\@ifundefined{@principaladviser}{\def\@principaladviser{}}{}
+\@ifundefined{@secondadviser}{\def\@secondadviser{}}{}
+\@ifundefined{@thirdadviser}{\def\@thirdadviser{}}{}
+\ifcsundef{@PhDdirector}{%
+ \ifDirettore\def\@PhDdirector{Direttore del corso di dottorato}\else
+ \def\@PhDdirector{Coordinatore del corso di dottorato}\fi}{}
+\@ifundefined{@tutore}{\def\@tutore{}}{}
+\@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{@retrofrontespizio}{\def\@retrofrontespizio{}}{}
+\@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{}}{}
+\@ifundefined{@facnumber}{\def\@facnumber{}}{}
+\@ifundefined{@faculty}{\def\@faculty{}}{}
+\@ifundefined{PrimoTomo}{\def\PrimoTomo{Tomo primo}}{}
+\@ifundefined{SecondoTomo}{\def\SecondoTomo{Tomo secondo}}{}
+\@ifundefined{TerzoTomo}{\def\TerzoTomo{Tomo terzo}}{}
+\@ifundefined{QuartoTomo}{\def\QuartoTomo{Tomo quarto}}{}
+\@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{@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}
+%
+% We now start setting the |ThesisTitlePage| environment;
+% we use the |xparse| functionality to define it; the
+% environment accepts an optional asterisk as its first
+% and only argument, that as a single token may be entered
+% without brackets as the very first token after the
+% environment opening statement. If the user wants to use
+% this optional argument, s/he must enter
+% |\begin{ThesisTitlePage}*| with the asterisk after the
+% closing brace. The presence of the asterisk sets the
+% logo position to the title page lower half, while its
+% absence sets such position to the title page top.
+%
+% The opening commands provide also to reading a configuration
+% file, if it exists in the same folder as the thesis main
+% file; such configuration file must be named \meta{thesis
+% main file name}|.cfg|. The environment body, besides the
+% possible data already got from the configuration file
+% accepts other setting commands for the title page necessary
+% and optional data; if some commands are repeated with
+% different data, the last ones prevail on the previous ones.
+% The actual title page typesetting is done by the closing
+% commands through the |\fr@ntespizio| command.
+%
+% Among the setting commands there might be also the legal
+% page |\retrofrontespizio| command; it closes the recto
+% title page, and on the verso, if the command argument
+% is void, nothing is printed except the blank verso page,
+% but if it contains something the legal notice is printed
+% at the verso page bottom.
+% \begin{macrocode}
+\newbool{topTPTlogos}\newbool{AteneoInHead}
+
+\DeclareDocumentEnvironment{ThesisTitlePage}{s}{%
+ \IfBooleanTF{#1}{\boolfalse{topTPTlogos}\booltrue{AteneoInHead}}%
+ {\booltrue{topTPTlogos}\boolfalse{AteneoInHead}}%
+ \IfFileExists{\jobname.cfg}{\input{\jobname.cfg}}{%
+ \PackageWarning{toptesi-dottorale}{%
+ No configuration file found\MessageBreak}}
+}{%
+ \fr@ntespizio
+}
+% \end{macrocode}
+% Here we define the actual typesetting of the title page.
+% The code is substantially that of the generic module
+% |topfront|where we deleted the commands and the settings
+% related to thesis kinds that have nothing to do with
+% a generic doctoral thesis.
+% \begin{macrocode}
+\def\fr@ntespizio{%
+\begingroup\par
+ \oddsidemargin=\dimexpr(\oddsidemargin+\evensidemargin)/2\relax
+ \evensidemargin \oddsidemargin
+\null
+\setcounter{page}{1}%
+\normalfont
+\ifclassica
+ \boolfalse{topTPTlogos}
+ \thispagestyle{classica}
+ \ifcsvoid{@ateneo}{\def\@ateneo{Manca il nome dell'ateneo}
+ }{}
+\else
+ \thispagestyle{titlepage}
+\fi
+\ifcsvoid{@ateneo}{}{\booltrue{AteneoInHead}}
+\ifcsvoid{@ateneo}{%
+ \ifbool{topTPTlogos}
+ {}{\booltrue{AteneoInHead}\def\@ateneo{Manca il nome dell'ateneo}}%
+}{%
+ \booltrue{AteneoInHead}%
+}
+ \ifbool{AteneoInHead}{}{%
+ {{\centering\LARGE \@ateneo\par}}
+ }
+ \ifcsvoid{@nomeat}{}
+ {\ifbool{topTPTlogos}{\vspace*{\dimexpr \headsep+2.5ex}}{\vspace*{-3ex}}%
+ {\centering\@nomeat\par}\vfill}
+
+ \begin{center}
+ {\rmfamily\mdseries
+ \ifdottorato
+ \large \@phdschool\par\medskip
+ \else
+ \ifcsvoid{@faculty}{}{%
+ \LARGE\ifx\@facnumber\empty\else\@facnumber\space\fi
+ \@faculty\unskip\xspace\@facname\par\medskip
+ }
+ \fi
+ }%
+ \ifcsvoid{@corso}{}{{\large
+ \ifdottorato
+ \@PhDname\unskip\xspace
+ \@corso\ifx\@ciclo\empty\else~--~\@ciclo\fi
+ \else
+ \@laureaname\unskip\xspace\@corso
+ \fi
+ \par}}
+ \end{center}
+ \vspace{\stretch{0.2}}
+ \begin{center}
+ \LARGE\@dissertazione%
+ \unless\ifx\empty\@materia
+ \\\@InName\\\@materia
+ \fi
+ \end{center}
+ \vspace{\stretch{0.2}}
+ \begin{center}
+ {\huge\bfseries \baselineskip=0.95em plus 1pt
+ \@titolo \par}
+ \end{center}
+ \unless\ifx\@subtitle\empty
+ \begin{center}%
+ \large\textrm{\@subtitle}\par
+ \end{center}%
+ \fi
+ \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
+ We never considered a thesis might get
+ divided in more than four volumes}%
+ \fi}}%
+ \fi
+ \vspace{1em}
+ \fi
+ \par
+ \unless\iftopTPTlogos
+ {\vfill\centering \printloghi\par}\fi
+ \vfill
+ \iftriennale
+ \let\@nomerelatore\empty
+ \else
+ \ifdottorato
+ \edef\@nomerelatore{\@PhDdirector}%
+ \else
+ \ifcsvoid{@principaladviser}{}{%
+ \def\@nomerelatore{\Relatore}}
+ \unless\ifclassica
+ \ifcsvoid{@secondadviser}{}{%
+ \def\@nomerelatore{\Relatori}}%
+ \fi
+ \fi
+ \fi
+ \ifdottorato
+ \let\@nomecandidato\empty
+ \else
+ \iflanguage{italian}{%
+ \iffemminile
+ \def\@nomecandidato{\Candidata}%
+ \else
+ \def\@nomecandidato{\Candidato}%
+ \fi
+ \ifcsvoid{@secondauthor}{}{%
+ \iffemminile
+ \def\@nomecandidato{\Candidate}%
+ \else
+ \def\@nomecandidato{\Candidati}%
+ \fi}
+ }{}%
+ \fi
+ \iftriennale
+ \begin{center}%
+ \large\mdseries\textsc{\@author}
+ \end{center}%
+ \else
+ \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}%
+ }%
+ \def\print@secondocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}\@secondauthor\endtabular}}
+ \def\print@terzocandidato{\\\relax
+ \hbox{\large\tabular{@{}l@{}}\@thirdauthor\endtabular}}
+ \def\BoxCandidati{%
+ \begin{tabular}[t]{l}%
+ \hbox{\unless\ifclassica\large\fi
+ \textbf{\protect\@nomecandidato}}\\[.6ex]
+ \hbox{\large\tabular{@{}l@{}}\@author\endtabular}%
+ \ifcsvoid{@secondauthor}{}{\print@secondocandidato}%
+ \ifcsvoid{@thirdauthor}{}{\print@terzocandidato}%
+ \end{tabular}%
+ }%
+ \ifdottorato
+ \begin{center}\large
+ \textbf{\@author}\\[3em]
+ {\normalsize
+ \begin {tabular*}{\hsize}{@{\extracolsep{\fill}}ccc}
+ \ifcsvoid{@tutore}{}{\textbf{\Tutore}}
+ &\relax&
+ \ifcsvoid{@principaladviser}{}{\textbf{\@nomerelatore}}
+ \\
+ \ifcsvoid{@tutore}{}{\@tutore}
+ &\relax&
+ \ifcsvoid{@principaladviser}{}{\@principaladviser}
+ \end{tabular*}
+ }%
+ \end{center}
+ \else
+ \unless\ifclassica
+ \unless\ifevenboxes
+ \begin{flushleft}%
+ \BoxRelatori
+ \end{flushleft}\par\vspace*{-1.5\baselineskip}
+ \begin{flushright}%
+ \BoxCandidati
+ \end{flushright}%
+ \else
+ \makebox[\textwidth]{\BoxRelatori\hfill\BoxCandidati}
+ \fi
+ \else
+ \noindent
+ \makebox[\textwidth]{%
+ \BoxRelatori\hfill\BoxCandidati}\par
+ \fi
+ \fi
+ \fi
+\ifcsvoid{@tutoreaziendale}{}{%
+ \vfill\vfill
+ {\centering \textbf{\@tutoreaziendalename}\\[.6ex]
+ \@tutoreaziendale\par}}
+ \par\clearpage
+% Legal page
+ \ifcsvoid{@retrofrontespizio}{}%
+ {\null\vfill\thispagestyle{empty}\@retrofrontespizio\par\clearpage}%
+\endgroup}
+% \end{macrocode}
+%\iffalse
+%</topdoc>
+%\fi
+%
+% \subsection{The \texttt{toptesi-sss} module code}
+% The module for typesetting high school final work
+% title pages starts here. We avoid using a |.def| file and put
+% all necessary commands in one file.
+%
+% First we load the described packages using different loading
+% schemes for \pdfLaTeX\ vs. \LuaLaTeX\ or \XeLaTeX.
+%
+%\iffalse
+%<*topsss>^^A SECONDARIA
+%\fi
+% \begin{macrocode}
+%%
+%%%% Math fonts and AMS extensions (fontspec is already loaded)
+\secondariatrue
+\ifPDFTeX
+ \@ifpackageloaded{newtxmath}{}%
+ {\@ifpackageloaded{newpxmath}{}%
+ {%
+ \RequirePackage{amsmath,amssymb,amsthm}%
+ }%
+ }%
+\else
+ \RequirePackage{amsmath,amsthm}
+ \RequirePackage{unicode-math}
+\fi
+\RequirePackage{xcolor} % Intelligent colors
+\RequirePackage{xspace} % Intelligent space
+\RequirePackage{xparse} % Command and environment advanced definitions
+\RequirePackage{calc} % Calculation macros
+\RequirePackage{ifthen} % Conditional statements
+\RequirePackage{booktabs} % professional rules in tables
+\RequirePackage{multirow} % It's more professional avoiding tables
+ % with cells spanning several rows
+\RequirePackage[autostyle]{csquotes} % necessary for biblatex
+\ifPDFTeX \RequirePackage{indentfirst}\fi
+\raggedbottom
+% \end{macrocode}
+%
+% We initialise the internal macros to the default values; most
+% of them are just empty strings.
+% \begin{macrocode}
+\providecommand*\@SSSLogo{}
+\providecommand*\@tiposcuola{}
+\providecommand*\@indirizzomiur{}
+\providecommand*\@opzionemiur{}
+\providecommand*\@nomescuola{}
+\providecommand*\@sedescuola{}
+\providecommand*\@annoscolastico{}
+
+\providecommand*\@Ntesina{Tesina di maturit\`a}
+\providecommand*\@title{}
+\providecommand*\@subtitle{}
+
+\ifcsundef{ifemminile}{\newif\iffemminile\femminilefalse}{}
+\providecommand*\@Ncandidato{\iffemminile Studentessa\else
+ Studente\fi}
+\providecommand*\@author{}
+\providecommand*\@Npresidente{Presidente di commissione}
+\providecommand*\@presidente{}
+\providecommand*\@numerocommissione{}
+
+\newcommand*\SSSLogo[1]{\gdef\@SSSLogo{#1}}
+\newcommand*\NomeTesina[1]{\gdef\@Ntesina{#1}}
+\newcommand*\IndirizzoMiur[1]{\gdef\@indirizzomiur{#1}}
+\newcommand*\OpzioneMiur[1]{\gdef\@opzionemiur{#1}}
+\newcommand*\TipoScuola[1]{\gdef\@tiposcuola{#1}}
+\newcommand*\SedeScuola[1]{\gdef\@sedescuola{#1}}
+\newcommand*\NomeScuola[1]{\gdef\@nomescuola{#1}}
+\newcommand*\AnnoScolastico[1]{\gdef\@annoscolastico{#1}}
+\newcommand*\NomeCandidato[1]{\gdef\@Ncandidato{#1}}
+
+\newcommand*\titolo[1]{\gdef\@title{#1}}
+\newcommand*\sottotitolo[1]{\gdef\@subtitle{\ifblank{#1}{}%
+ {\medskip\par{\Large #1\par}}%
+ \vspace{\stretch{1}}}}
+
+\NewDocumentCommand\studente{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}\femminilefalse}
+\NewDocumentCommand\studentessa{m o}{\gdef\@@author{#1}%
+\IfNoValueTF{#2}{\gdef\@author{#1}}%
+ {\gdef\@author{#1\IDlabel#2}}\femminiletrue}
+\newcommand*\IDlabel{\\\normalfont Classe\ }
+\newcommand*\Presidente[1]{\gdef\@presidente{#1}}
+\newcommand*\NumeroCommissione[1]{\gdef\@numerocommissione{#1}}
+% \end{macrocode}
+% The following code certainly does not hurt, but it was
+% necessary during the preliminary testing.
+% \begin{macrocode}
+\newcommand*\ifBlank{\expandafter\ifblank\expandafter}
+% \end{macrocode}
+% The environmnet |FrontespizioTesina| is being defined here.
+% No optional arguments are requested, therefore it is not
+% necessary to use the defining commands of package |xparse|.
+% The environment starts by reading the configuration file
+% |jobname.cfg| if it exists. Nothing is done if such file
+% does not exist, not even an info message; after all the
+% configuration file is optional.
+% \begin{macrocode}
+\newenvironment{FrontespizioTesina}{%
+\InputIfFileExists{\jobname.cfg}{\relax}{\relax}
+}{%
+% \end{macrocode}
+% After this preliminary test the |titlepage| environment is
+% opened and the layout assembly starts. First the information
+% on the school; if the school generic name has been omitted
+% among the mandatory user commands, the string `Manca il tipo
+% di scuola' is printed in its place, so that the user is
+% directly reminded of the mandatory nature of this piece of
+% data. On the opposite if the Ministry of education data are
+% missing, nothing is done. After these mandatory and optional
+% data are printed a couple of horizontal lines are typed so
+% as to mark the end of the title page heading.
+% \begin{macrocode}
+\begin{titlepage}\parindent=0pt
+\centering
+\raisebox{0.025\textheight}[0pt][0pt]{\parbox[b]{\textwidth}{%
+\centering
+\ifBlank{\@tiposcuola}{Manca il tipo di scuola}{\@tiposcuola}%
+\ifBlank{\@indirizzomiur}{\relax}{\space--\space\@indirizzomiur}%
+\ifBlank{\@opzionemiur}{\relax}{\space--\space\@opzionemiur}\par
+\vspace{-1ex}
+\makebox[0.5\textwidth]{\rule{0.50\textwidth}{0.4\p@}}\par
+\vspace{-1.5ex}
+\makebox[0.25\textwidth]{\rule{0.25\textwidth}{0.8\p@}}\par
+% \end{macrocode}
+% After this heading the proper name of the school is printed,
+% possibly with its real address.
+% \begin{macrocode}
+\medskip
+
+\textsc{\@nomescuola}}}\par
+\null\hfill\ifBlank{\@sedescuola}{\relax}{%
+\raisebox{0.5\baselineskip}[0pt][0pt]{%
+\parbox{0.4\textwidth}{\raggedleft\@sedescuola}}}\par
+\vspace{\stretch{1}}
+% \end{macrocode}
+%
+% next the name of the document and its title and subtitle
+% are set: the title in |\Large| boldface font, while the subtitle
+% in normal size.
+% \begin{macrocode}
+{\large \@Ntesina\par}
+\vspace{\stretch{0.5}}
+
+{\Large\textbf{\@title}\par}
+{\vspace{0.5\baselineskip}
+
+\normalsize\@subtitle\par}% uno \stretch{1} è già stato fatto
+% \end{macrocode}
+% If a file name is specified for the graphic file that
+% contains the school logo, such image is inserted in the
+% title page.
+% \begin{macrocode}
+\ifBlank{\@SSSLogo}%
+ {\vspace{\stretch{1}}}%
+ {\includegraphics[height=30mm]{\@SSSLogo}}\par\vspace{\stretch{1}}
+% \end{macrocode}
+% The examining committee chairperson name and the Ministry
+% of education committee ID number are typeset within a
+% |minipage|. Another |minipage| contain the student's name.
+% Pay attention: the names of the student and of the president
+% are typeset in bold face small caps if the default fonts have
+% this typeface; if the chosen fonts do not have this typeface
+% the actual used typeface is bold roman.
+% \begin{macrocode}
+\begin{minipage}[t]{0.45\textwidth}\flushleft
+\ifBlank{\@presidente}{}{\@Npresidente\\
+{\bfseries\scshape\@presidente}\par
+\vspace{\baselineskip}}
+
+\ifBlank{\@numerocommissione}{}{Commissione numero\\
+\textbf{\@numerocommissione}}
+\end{minipage}
+\hfill
+\begin{minipage}[t]{0.45\textwidth}\flushright
+\@Ncandidato\\
+{\bfseries\scshape\@author}
+\end{minipage}
+
+\vspace{\stretch{1}}
+
+% \end{macrocode}
+% Eventually the school year is printed with an initial string
+% `Anno scolastico'. This terminates the title page; the
+% environment is closed and the page ejected.
+% \begin{macrocode}
+\raisebox{-0.05\textheight}[0pt][0pt]{%
+\parbox[t]{\textwidth}{\centering
+\makebox[0.25\textwidth]{\hrulefill}\\[\medskipamount]
+Anno scolastico \@annoscolastico}}
+\end{titlepage}
+\clearpage}%%
+%%
+\endinput
+% \end{macrocode}
+% This is the end of this module code.
+%\iffalse
+%</topsss>
+%\fi
%
% \Finale
% \endinput
%
+\endinput
+%%%%%% Recent progress
+%%% (version 6.1.8 -- 2017-10-15) Extended version 5.92.xx in order
+% to modularise the whole bundle; this requires the key=value options
+% in order to smoothly handle the various new options, especially those
+% that offer the user the new environment ThesisTitlePage
+% (FrontespizioTesi for high school tesina); a new environment SDbox
+% to produce figures and tables and any other possible floating body,
+% defined through package float, with their captions on a side,
+% possibly protruding into the external margin; in any case the SD
+% box can be used by itself without using the corresponding floating
+% environment. Modules available for different thesis types include
+% high school tesina, bachelor, master, doctoral theses, the doctoral
+% thesis title page for the Doctorate School of Politecnico di Torino;
+% custom and frontespizio key-value options are available for a totally
+% hand made title page, and a title page typeset by means of the
+% external package frontespizio by Enrico Gregorio; backwards
+% compatibility with the previous version is almost always maintained
+% for both title pages; even the ID number of the candidates is
+% maintained, although with a slightly different modern interface,
+% since the xparse package facilities are used to define some of the
+% new commands and environments. The a4paper paper size is
+% maintained as the default one, although alla paper sizes available
+% to the report/book/article class can be used (this required a loto
+% of thought, because the xkeyval package documentations require
+% thoughtful interpretation.
+
+
+