From b2fad8915b87bb45e4d3ffafd0f8119da45a921e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 22 Oct 2017 19:50:59 +0000 Subject: toptesi (22oct17) git-svn-id: svn://tug.org/texlive/trunk@45577 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/toptesi/toptesi.dtx | 8868 +++++++++++++++----- 1 file changed, 7001 insertions(+), 1867 deletions(-) (limited to 'Master/texmf-dist/source') 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 % % -% 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. -%\NeedsTeXFormat{LaTeX2e}[2015/01/01] +%\NeedsTeXFormat{LaTeX2e}[2016/01/01] %<*driver> \ProvidesFile{toptesi.dtx}[% % @@ -106,13 +119,23 @@ lines of the file for how-to information. %\ProvidesPackage{toptesi}[% %\ProvidesPackage{topcoman}[% %\ProvidesPackage{topfront}[% -%<*driver,class,topsty,topcmn,topfrn> -2016/11/25 v.5.9.06 +%\ProvidesPackage{toptesi-scudo}[% +%\ProvidesPackage{toptesi-monografia}[% +%\ProvidesPackage{toptesi-sss}[% +%\ProvidesPackage{toptesi-magistrale}[% +%\ProvidesPackage{toptesi-dottorale}[% +%<*driver,class,topsty,topcmn,topfrn,topscu,topmon,topsss,topmag,topdoc> +2017/10/22 v.~6.1.09 %Class for typesetting university theses] %Extension for toptesi.cls] %Additional commands for the TOPtesi bundle] %Title page for TOPtesi and other classes] -% +%Extension for ScuDo theses] +%Bachelor degree title page] +%High school title page] +%Master degree title page] +%Ph.D. degree title page] +% %<*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()()[]{} +% The first and fourth arguments are mandatory; the second +% and third arguments are optional; their default values are +% (0,0) and [bl]. Furthermore the and +% 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 . This contents should be some text, and when +% are specified larger than zero, a \parbox is used +% to typeset it. The value(s) define the reference point +% that is \put at the 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. % % \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}]} +% +% \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. % -% 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). +% \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 % % \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 % % \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,226 +5535,2858 @@ Skipping any redefinition\MessageBreak}% % % \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 -% named |JohnSmithMSthesis.cfg|. -% \iffalse -%<*topcfg> -% \fi -% \begin{macrocode} -%% -%%================================================================ -%% This file is the only file of the TOPtesi bundle that the user -%% 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. -%%================================================================ -%% -\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} -% \end{macrocode} -% \iffalse -% -% \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 -% \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. -% \begin{macrocode} -\RequirePackage{iftex} -\ifPDFTeX -\newcommand*\DeclareSlantedCapitalGreekLetters{% - \mathchardef\Gamma="7100 - \mathchardef\Delta="7101 - \mathchardef\Theta="7102 - \mathchardef\Lambda="7103 - \mathchardef\Xi="7104 - \mathchardef\Pi="7105 - \mathchardef\Sigma="7106 - \mathchardef\Upsilon="7107 - \mathchardef\Phi="7108 - \mathchardef\Psi="7109 - \mathchardef\Omega="710A -}\fi -% \end{macrocode} +% \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. % -% 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. +% 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} -\providecommand*\ensuremath[1]{\ifmmode#1\else$#1$\fi}% -\providecommand*\textormath{} -\renewcommand*\textormath{\ifmmode\expandafter\@secondoftwo\else - \expandafter\@firstoftwo\fi} -\providecommand*\textsubscript{\raisebox{-0.5ex}} - +\ScuDotrue \ifPDFTeX -\RequirePackage{textcomp} + \usepackage{amsmath,amssymb,amsthm} +\else + \usepackage{amsmath,amsthm} + \usepackage{unicode-math} \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 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} -\providecommand{\ohm}{\textormath{\textohm}{\mathrm{\Omega}}} -\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}}}}} +\AtBeginDocument{% +\providecommand\diff{}% +\renewcommand{\diff}{\mathop{}\!\mathrm{d}} \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 - \else - \mathup{\mu}% - \fi -}} -\providecommand{\gradi}{\textormath{\textdegree}{^\circ}} +\let\iu\gei} % \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 +% 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} -\DeclareRobustCommand*{\simulatedSC}[1]{% - {\mbox{$\relax$}\fontsize{\sf@size}{\f@baselineskip}\selectfont#1}}% +\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} % -% 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. +% 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} -\def\ft@figure{\iflanguage{italian}{\MakeLowercase{\figurename}}% - {\figurename}~} -\def\ft@table{\iflanguage{italian}{\MakeLowercase{\tablename}}% - {\tablename}~} +\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} % -\newcommand*\EnableFigTabNames{% - \let\p@figure\ft@figure\let\p@table\ft@table} -\newcommand*\DisableFigTabNames{% - \let\p@figure\empty\let\p@table\empty} +% 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 +% +%\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> +% \fi +% \begin{macrocode} +%% +%%================================================================ +%% This file is the only file of the TOPtesi bundle that the user +%% 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 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. +%%================================================================ +%% +\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 +% +% \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. +% \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. +% 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 +\newcommand*\DeclareSlantedCapitalGreekLetters{% + \mathchardef\Gamma="7100 + \mathchardef\Delta="7101 + \mathchardef\Theta="7102 + \mathchardef\Lambda="7103 + \mathchardef\Xi="7104 + \mathchardef\Pi="7105 + \mathchardef\Sigma="7106 + \mathchardef\Upsilon="7107 + \mathchardef\Phi="7108 + \mathchardef\Psi="7109 + \mathchardef\Omega="710A +}\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. +% \begin{macrocode} +\providecommand*\ensuremath[1]{\ifmmode#1\else$#1$\fi}% +\providecommand*\textormath{} +\renewcommand*\textormath{\ifmmode\expandafter\@secondoftwo\else + \expandafter\@firstoftwo\fi} +\providecommand*\textsubscript{\raisebox{-0.5ex}} + +\ifPDFTeX +\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. 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}}} +\@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{}% +\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 + \ifdefined\muup\muup\else\mbox{\textmu}\fi + \else + \mathup{\mu}% + \fi +}} +\providecommand{\gradi}{\textormath{\textdegree}{^\circ}} +% \end{macrocode} +% +% 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 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}~} +\def\ft@table{\iflanguage{italian}{\MakeLowercase{\tablename}}% + {\tablename}~} +% +\newcommand*\EnableFigTabNames{% + \let\p@figure\ft@figure\let\p@table\ft@table} +\newcommand*\DisableFigTabNames{% + \let\p@figure\empty\let\p@table\empty} +% +\DisableFigTabNames +% \end{macrocode} +% \iffalse +% +% \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 +% +%\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 +% +%\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} % -\DisableFigTabNames +% 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 +% +%\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} -% \iffalse -% -% \fi % +% 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 +% +%\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. + + + -- cgit v1.2.3