% \iffalse meta-comment
%
% Copyright (C) 2008 by Enrico Gregorio 
% <Enrico dot Gregorio at univr dot it>
% -------------------------------------------------------
% 
% This file may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, either version 1.2 of this license
% or (at your option) any later version.  The latest version of this
% license is in:
%
%    http://www.latex-project.org/lppl.txt
%
% and version 1.2 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{frontespizio.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{frontespizio}
%<*package>
  [2009/04/03 1.1 (Enrico Gregorio)]
%</package>
%<*driver>
\PassOptionsToClass{a4paper}{article} % we need a4paper
\documentclass{ltxdoc}
\usepackage[english,italian]{babel}
\usepackage{graphicx,array,booktabs}
\usepackage{frontespizio}

\newcommand{\pack}{\textsf}
\newcommand{\env}{\texttt}
\newcommand{\file}{\texttt}
\newcommand{\cmdname}[1]{\texttt{\char`\\#1}}
\newcommand{\opt}[1]{``\texttt{#1}''}
\newcommand{\frontcommand}[3][f]{%
  \subsection*{\cmdname{#2}#3%
  \ifx#1o%
    ~(*)%
  \else
  \ifx#1s%
    ~(\textdagger)%
  \fi\fi}%
}
\newcommand{\0}[1]{\ttchar[\meta{#1}\ttchar]}
\newcommand{\1}[1]{\ttchar\{\meta{#1}\ttchar\}}
\renewcommand{\meta}[1]{$\langle$\textit{\mdseries #1}$\rangle$}
\newcommand{\ttchar}[1]{{\ttfamily\char`#1}}
\newcommand{\frontoption}[1]{\subsection*{\texttt{#1}}}
\newcommand{\includeex}[1]{\par\vfill\begin{center}
  \setlength{\fboxsep}{0pt}\fbox{\includegraphics[scale=.3]{#1}}
\end{center}}

\DeclareRobustCommand\Xe{%
  \leavevmode X\lower0.5ex
   \hbox{\kern-0.15em\reflectbox{E}}\kern-0.15em}

\EnableCrossrefs         
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{frontespizio.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{972}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \changes{v1.0}{2008/03/04}{First public release}
% \GetFileInfo{frontespizio.dtx}
%
% \DoNotIndex{\newcommand,\newenvironment,\def,\begin,\vskip}
% \DoNotIndex{\DeclareOption,\ExecuteOptions,\RequirePackage}
% \DoNotIndex{\@@end,\@empty,\@ifclassloaded,\@nameuse,\@nil}
% \DoNotIndex{\@undefined,\\,\`,\addtocounter,\advance,\bfseries}
% \DoNotIndex{\centering,\closeout,\define@key,\documentclass}
% \DoNotIndex{\edef,\else,\end,\endinput,\endtitlepage,\expandafter}
% \DoNotIndex{\extracolsep,\fi,\fill,\fontsize,\g@addto@macro}
% \DoNotIndex{\hrule,\hspace,\if,\if@twoside,\ifcase,\ifdefined}
% \DoNotIndex{\iffalse,\IfFileExists,\ifnum,\ifx,\immediate}
% \DoNotIndex{\jobname,\let,\long,\MakeUppercase,\MessageBreak}
% \DoNotIndex{\newcount,\newif,\newpage,\newtoks,\newwrite,\next}
% \DoNotIndex{\noexpand,\nofiles,\normalfont,\normalsize,\null}
% \DoNotIndex{\openout,\or,\Package,\PackageError,\PackageWarning}
% \DoNotIndex{\PackageWarningNoLine,\paperheight,\paperwidth,\par}
% \DoNotIndex{\parbox,\parindent,\relax,\scshape,\selectfont,\setkeys}
% \DoNotIndex{\sffamily,\space,\stretch,\string,\textheight,\textwidth}
% \DoNotIndex{\the,\thispagestyle,\unexpanded,\unless,\unskip,\upshape}
% \DoNotIndex{\usepackage,\vbox,\vfill,\vspace,\write,\z@}
% \DoNotIndex{\CurrentOption,\AtEndDocument,\@ne,\c@page,\m@ne}
% 
% \begin{frontespizio}
% \Universita{Pietrascambio}
% \Facolta{Scienze Matematiche, Fisiche e Naturali}
% \Corso[Laurea]{Tipografia elettronica}
% \Titoletto{Tesi di perfezionamento}
% \Titolo{Come comporre un frontespizio\\
% e vivere felici}
% \Rientro{2cm}
% \NCandidato{Autore}
% \Candidato{Enrico Gregorio}
% \Relatore{Ch.mo Prof.\ Basilio Nodari}
% \Correlatore{Dott.\ R. J. Drofnats}
% \Annoaccademico{2007-2008}
% \end{frontespizio}
% 
% 
% \title{Il pacchetto \textsf{frontespizio}\thanks{Questa
% documentazione corrisponde alla versione~\fileversion{}
% del~\filedate}}
% \author{Enrico Gregorio \\
%   \texttt{Enrico dot Gregorio at univr dot it}}
% \date{\filedate}
% \maketitle
% 
% \begin{otherlanguage*}{english}
% \section*{Introduction in English}
% 
% This package is meant for Italian users who want to print a
% frontispiece to their thesis, be it for graduation or for their
% Ph.D\@.
% 
% It's usually difficult to get a first page which has very different
% layout than the internal pages; use of the \pack{chngpage} package
% is cumbersome for this purpose and it's difficult to adapt the
% settings to all classes.  I tried an approach with this package, but
% it was difficult to maintain and extend.
% 
% The idea of this package is similar to that of \pack{pdfpages}: we 
% produce a page and include it as a graphic object. The difference 
% from \pack{pdfpages} is that the markup necessary to define the 
% elements of the frontispiece is given in the user's document.
% 
% Since traditions for frontispieces are different in the various
% countries, I decided to prepare this package with Italian customs in
% mind.  Therefore the structure of the frontispiece is somewhat rigid
% and might not be apt to be used abroad.  Consequently, I decided to
% write the documentation in Italian and on \textsc{a}4 paper, but the
% comments to the code will be in English.
% \end{otherlanguage*}
% 
% \section{Introduzione}
% 
% Molti, scrivendo la propria tesi di laurea o di dottorato, hanno il 
% problema di produrre un frontespizio adeguato che sia ben centrato 
% sulla prima pagina. Questo \`e piuttosto difficile, anche usando 
% l'ambiente \env{titlepage} che eredita il formato di pagina imposto 
% dalla classe o modificato dall'utente con \pack{geometry}.
% 
% Come si vede, il frontespizio di questo documento \`e del tutto
% indipendente dai parametri di impaginazione successivi.  Ovviamente il
% nome dell'universit\`a e quello del relatore sono di fantasia.  O no?
% 
% Una prima soluzione che impiegava il pacchetto \pack{chngpage} aveva
% vari difetti, pur se funzionava con le classi standard.
% 
% Questo nuovo pacchetto cerca di risolvere la questione producendo un
% documento separato che va compilato a parte e che verr\`a poi
% incluso direttamente nel documento principale senza altri
% interventi.  Il vantaggio di usare questo pacchetto \`e che i
% comandi necessari per definire i vari elementi del frontespizio
% (titolo, candidato, relatore e cos\`i via) sono contenuti nello
% stesso documento.  Se il documento principale si chiama
% \file{tesi.tex}, il documento da compilare sar\`a
% \file{tesi-frn.tex} e si trover\`a nella stessa cartella che
% contiene quello principale.  La sequenza di comandi \`e, dunque,
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
pdflatex tesi
pdflatex tesi-frn
pdflatex tesi
\end{verbatim}
% \iffalse
%</verb>
% \fi
% e, alla fine, il frontespizio sar\`a al suo posto. Nel seguito, il 
% documento che contiene i dati per comporre il frontespizio sar\`a 
% chiamato \file{frn}. Nel caso si usi \file{latex} e non 
% \file{pdflatex}, la sequenza di comandi \`e
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
latex tesi
latex tesi-frn
dvips -o tesi-frn.eps tesi-frn
latex tesi
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Se la classe \`e chiamata con l'opzione \opt{oneside}, il frontespizio
% occupa correttamente solo la prima; nel caso di \opt{twoside}, viene
% prodotta una pagina bianca.  \`E meglio con \opt{twoside}, naturalmente:
% scrivere solo fronte \`e uno spreco di carta, cos\`i come con interlinea
% maggiorata.
% 
% \`E possibile usare il pacchetto anche per includere un frontespizio 
% creato con altri sistemi, si veda pi\`u avanti la descrizione 
% dell'opzione \opt{onlyinclude}
% 
% \section{Uso}
% 
% Il documento va impostato con l'opzione \opt{titlepage} e va caricato
% il pacchetto \pack{frontespizio}: per esempio
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\documentclass[a4paper,titlepage]{book}
\usepackage[italian]{babel}
\usepackage[<opzioni>]{frontespizio}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% L'opzione \opt{titlepage} \`e normalmente attiva per la classe 
% \pack{book}, ma non lo \`e per la classe \pack{report}.
% 
% Sono previste due opzioni principali: \opt{sans} e \opt{nowrite}.  La
% prima compone il frontespizio in caratteri senza grazie, la seconda
% serve a evitare la scrittura o riscrittura del documento \file{frn},
% ovviamente solo quando esso \`e definitivo o quando non ci interessa
% produrlo.
% 
% Vediamo un tipico frontespizio.  Dopo \verb|\begin{document}| vanno
% dati i comandi seguenti:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\begin{frontespizio}
\Universita{Paperopoli}
\Logo{duck}
\Facolta{Pennutologia}
\Corso{Belle Lettere}
\Annoaccademico{2030--2031}
\Titoletto{Tesi di laurea magistrale}
\Titolo{La mia tesi:\\ una lunga serie di risultati\\
        difficilissimi e complicatissimi}
\Sottotitolo{Alcune considerazioni mutevoli}
\Candidato[PP999999]{Paperino Paolino}
\Relatore{Giovanni Episcopo}
\Relatore{Pippo Cluvio}
\Correlatore{Ugo Frogio}
\Correlatore{Ubaldo Kutuzu}
\end{frontespizio}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% Si possono dare quanti relatori e correlatori si vuole; basta
% scriverli uno dopo l'altro come argomenti di comandi \verb|\Relatore|
% o \verb|\Correlatore|.\footnote{Aggiungere i titoli onorifici o
% professionali, mi raccomando!  Altrimenti i chiarissimi professori
% potrebbero offendersi.~\texttt{:-)}} Il correlatore \`e colui che
% collabora alla direzione del lavoro di tesi, non quello che fa le
% pulci alla tesi stessa prima dell'esame finale, propriamente
% \emph{controrelatore}, il cui nome \emph{non} va nel frontespizio.
% 
% Si pu\`o anche non indicare il nome del relatore; questo pu\`o capitare 
% probabilmente per le tesi di dottorato. Basta allora dare l'opzione 
% \opt{noadvisor} al pacchetto.
% 
% Descriveremo pi\`u avanti, in dettaglio, i vari comandi disponibili.
% Notiamo subito che l'ordine in cui sono dati \`e irrilevante.
% 
% Con l'opzione \opt{onlyinclude}, nessuno dei comandi descritti pi\`u
% avanti \`e disponibile.  Si pu\`o usare solo il comando
% \cmdname{includefront} che prende come argomento il nome del documento
% che contiene il frontespizio.  Questo deve essere in formato
% \textsc{iso}~A4.  Il comando ha anche un argomento opzionale per
% rimettere in ordine i numeri di pagina, che deve essere un numero
% piccolo (fra $0$ e $9$).
% 
% Un'altra opzione \`e \opt{signatures}, che lascia fra i nomi dei
% relatori lo spazio per le loro firme.  Questa opzione pu\`o essere
% aggiunta direttamente al documento~\file{frn}: il mio consiglio \`e di
% duplicarlo, aggiungere l'opzione, compilarlo e usarne la stampa solo
% per la copia da far firmare al relatore.
% 
% Con l'opzione \opt{norules} si eliminano i filetti dal frontespizio 
% che normalmente vengono disegnati fra il nome dell'ateneo e quello 
% della facolt\`a e sopra l'indicazione dell'anno accademico.
%
% Ultima opzione, in ordine di tempo (novit\`a della versione 1.1), \`e
% \opt{swapnames} con la quale viene scambiata la posizione dei nomi
% di relatori e candidato; la posizione normale è con il nome del
% candidato a sinistra e quello del relatore a destra.
% 
% 
% \section{Le opzioni}
% 
% Raccolgo qui le opzioni gi\`a descritte, per un pi\`u facile riferimento. 
% Quando due opzioni sono separate da~`$\mid$', la prima \`e quella 
% valida normalmente.
% 
% \frontoption{write${}\mid{}$nowrite}%
% Mutuamente esclusive.  Con la seconda si inibisce la scrittura del
% documento~\file{frn}.
% 
% \frontoption{signatures}%
% Nel campo dedicato a relatori e correlatori vengono lasciati gli spazi
% per le firme.
% 
% \frontoption{noadvisor}%
% Non viene stampato il campo dedicato a relatori e correlatori.
%
% \frontoption{swapnames}%
% Dando questa opzione il campo dedicato a relatori e correlatori
% sar\`a stampato a sinistra e quello dedicato ai candidati a destra,
% contrariamente al comportamento usuale.
% 
% \frontoption{normal${}\mid{}$sans}%
% Mutuamente esclusive. Con la seconda si sceglie per il frontespizio 
% un carattere senza grazie; questo carattere pu\`o essere determinato 
% usando un comando del tipo
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\usepackage{helvet}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontoption{norules}%
% Non vengono inseriti filetti nel frontespizio; senza questa opzione 
% un filetto separa il nome dell'ateneo da quello della facolt\`a e un 
% altro viene disegnato sopra l'indicazione dell'anno accademico.
% 
% \frontoption{onlyinclude}%
% Definisce il comando \cmdname{includefront} e disabilita l'ambiente 
% \env{frontespizio}. Serve per includere un frontespizio preparato con 
% altri metodi; deve essere un file grafico che sia fra quelli
% gestibili con \cmdname{includegraphics} e deve avere formato 
% \textsc{iso}~A4.
% 
% \frontoption{driver=$\langle\mathit{driver}\rangle$}%
% Imposta la chiamata di \pack{graphicx} nel documento~\file{frn} per
% l'uso di un driver diverso da \texttt{dvips} o \texttt{pdftex}, per 
% esempio \verb|driver=dvipdfm| oppure \verb|driver=textures|.
% 
% \bigskip
% 
% \emph{Attenzione}: ogni altra opzione data a \pack{frontespizio} produrr\`a
% il messaggio di errore
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
! Use of \front@temp doesn't match its definition.
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \section{I comandi}
% 
% Alcuni comandi sono obbligatori: \`e necessario specificare
% l'istituzione e la sua divisione (facolt\`a o dipartimento) presso la
% quale si discute la tesi; ovviamente occorrono anche il titolo e
% l'autore, cio\`e il candidato, e l'anno accademico. Per tener conto di 
% possibili variazioni sul tema, i comandi obbligatori hanno varianti 
% che possono essere usate al loro posto.
% 
% Indicheremo con un asterisco~(*) i comandi obbligatori, con una
% spada~(\textdagger) quelli sostitutivi, cio\`e le varianti di cui si
% diceva, senza niente quelli facoltativi.
% 
% \frontcommand[o]{Universita}{\1{nome breve}}
% L'istituzione in cui si discute la tesi, cio\`e quella che rilascia il 
% titolo di studio; va dato il nome abbreviato:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Universita{Verona}
\Universita{Roma `La Sapienza'}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Il comando aggiunge da s\'e ``Universit\`a degli Studi di''.
% 
% \frontcommand[s]{Istituzione}{\1{nome completo}}
% Quando l'istituzione ha un nome particolare, occorre specificarlo per 
% intero con questo comando:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Istituzione{Politecnico di Torino}
\Istituzione{Universit\`a `Bocconi' di Milano}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{Logo}{\0{dimen}\1{file}}
% L'argomento di questo comando \`e il nome (senza estensione) di un
% documento grafico che contenga il simbolo dell'istituzione.  Ha un
% argomento opzionale, la dimensione in altezza del logo (normalmente
% 1.5\,cm):
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Logo[1.5cm]{logo}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{Filigrana}{\0{parametri}\1{file}}
% L'argomento \`e il nome (senza estensione) di un documento che contenga 
% il simbolo dell'istituzione, con opportuna retinatura in modo che 
% appaia come in filigrana. Ha un argomento opzionale, che permette di 
% impostare alcuni parametri:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Filigrana[height=10cm,before=1,after=1]{logoretinato}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Con la chiave \texttt{height} si imposta l'altezza del simbolo, con le
% chiavi \texttt{before} e \texttt{after} si imposta la proporzione in
% cui \`e diviso lo spazio rimanente; i valori usuali sono quelli mostrati
% nell'esempio.
% 
% \frontcommand[o]{Facolta}{\1{nome breve}}
% La facolt\`a in cui si sono svolti gli studi.  Per le tesi di laurea
% triennale o magistrale, sono le facolt\`a gli enti responsabili
% dell'esame finale.
% 
% \frontcommand[s]{Dipartimento}{\1{nome breve}}
% Per le tesi di dottorato, la responsabilit\`a \`e di un dipartimento.
% 
% \frontcommand[s]{Divisione}{\1{nome completo}}
% Se la facolt\`a o dipartimento ha un nome non usuale, si pu\`o inserirlo
% con questo comando:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Divisione{Istituto di Cultura Generale}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand[s]{Interfacolta}{\1{nomi completi}}
% Se il corso di laurea \`e diviso fra pi\`u facolt\`a, si usi questo 
% comando; si noti che, a differenza di \cmdname{Facolta} e 
% \cmdname{Divisione}, il risultato non \`e messo automaticamente in 
% maiuscolo. Quindi si scriva, per esempio,
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
FACOLT\`A DI TUTTOLOGIA\\
FACOLT\`A DI SCIENZE FUMETTISTICHE
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Si pu\`o usare la doppia barra rovescia per indicare dove spezzare le 
% righe.
% 
% \frontcommand[o]{Corso}{\0{tipo}\1{nome}}
% Il corso di studi seguito, di cui la tesi \`e il compimento. Ha un 
% argomento opzionale che, non espresso, equivale a `Laurea Magistrale':
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Corso{Pennutistica}
\Corso[Dottorato di Ricerca]{Pennutistica}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand[s]{Scuola}{\1{nome completo}}
% Se il corso di studi ha un nome speciale, si usi questo comando che 
% produce esattamente il suo argomento:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Scuola{Scuola di specializzazione in Volo Planato}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{Titoletto}{\1{tipo}}
% \`E possibile, con questo comando, specificare il tipo di tesi:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Titoletto{Tesi di Laurea}
\Titoletto{Tesi di Laurea Magistrale}
\Titoletto{Tesi di Dottorato di Ricerca}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand[o]{Titolo}{\1{titolo}}
% Il titolo della tesi, con eventuali punti dove andare a capo espressi 
% con \verb|\\|.
% 
% \frontcommand{Sottotitolo}{\1{sottotitolo}}
% Un sottotitolo. Accade talvolta che due studenti preparino la loro 
% tesi in collaborazione e che ciascuno ne presenti una parte: il 
% sottotitolo \`e per questi casi, o altri che si possano pensare.
% 
% \frontcommand[o]{Candidato}{\0{matricola}\1{nome}}
% Il nome e cognome del candidato.  Notare che, in italiano, il nome va
% \emph{prima} del cognome, qualsiasi cosa affermino i burocrati.  Il
% comando prende come argomento opzionale il numero di matricola, che
% potrebbe essere richiesto dalle regole locali.  \`E possibile ripetere
% il comando, nel caso ci siano pi\`u candidati che presentano insieme il
% lavoro.
% 
% \frontcommand[o]{Relatore}{\1{nome}}
% Il nome e cognome (se si preferisce preceduto dall'appellativo 
% accademico) del relatore. Pu\`o capitare che i relatori siano pi\`u 
% d'uno: basta specificarli successivamente, si veda l'esempio di prima.
% Il comando \`e obbligatorio se non si \`e data l'opzione \opt{noadvisor}.
% 
% \frontcommand{Correlatore}{\1{nome}}
% Il nome e cognome del correlatore, di solito un esterno 
% all'istituzione che ha collaborato alla guida del lavoro che ha 
% portato alla tesi. Anche qui se ne pu\`o specificare pi\`u d'uno.
% 
% \frontcommand[o]{Annoaccademico}{\1{anno}}
% L'anno accademico nel quale si discute la tesi.
% 
% \frontcommand[s]{Piede}{\1{testo}}
% Se al piede non si vuole la scritta ``Anno Accademico'' ma 
% qualcos'altro, lo si specifichi nell'argomento a questo comando.
% 
% 
% \section{Modifiche all'aspetto del frontespizio}
% Alcuni aspetti del frontespizio possono essere variati.  Per esempio,
% \`e possibile caricare gli stessi caratteri usati nel corpo della tesi o
% cambiare i margini.
% 
% \frontcommand{NCandidato}{\1{nome}}
% Il nome del candidato \`e preceduto dalla parola ``Candidato''. Se si 
% preferisce ``Laureando'', si usi
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\NCandidato{Laureando}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{NCandidati}{\1{nome}}
% Se ci sono pi\`u candidati, i nomi sono preceduti dalla parola
% ``Candidati''.  Se si preferisce ``Laureandi'', si usi
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\NCandidati{Laureandi}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{NRelatore}{\1{singolare}\1{plurale}}
% Analogamente, il nome del relatore \`e preceduto da ``Relatore''. Se si 
% fosse esterofili, si potrebbe modificarlo con
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\NRelatore{Advisor}{Advisors}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% \`E necessario scrivere sia la forma singolare che quella plurale, anche
% se ci sar\`a un solo relatore (ma si pu\`o lasciare l'argomento vuoto).
% 
% \frontcommand{NCorrelatore}{\1{singolare}\1{plurale}}
% Stesso discorso fatto per l'appellativo del relatore.
% 
% \frontcommand{Punteggiatura}{\1{carattere}}
% Gli appellativi ``Candidato'' e ``Relatore'' sono seguiti da due 
% punti; se non lo si desidera, si scriva
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Punteggiatura{}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{Preambolo}{\1{comandi}}
% Supponiamo che la tesi sia stata scritta con il carattere Utopia, 
% fornito dal pacchetto \pack{fourier}. Occorre specificarlo anche per 
% il frontespizio con
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\usepackage{fourier}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Nessuno dei pacchetti caricati dal documento principale passa
% automaticamente al frontespizio: ripetendo questo comando, che ha
% effetto cumulativo, si possono risolvere altri problemi particolari.
% Infatti l'argomento del comando viene trascritto cos\`i com'\`e nel
% preambolo del documento~\file{frn}.\footnote{In una versione
% precedente il comando era chiamato \cmdname{Package}; questo \`e ancora
% definito come equivalente di \cmdname{Preambolo}, ma il suo uso \`e
% deprecato.} Vedremo in seguito altri usi del comando; si consiglia di
% usarne uno per ciascuna riga da aggiungere al preambolo: l'effetto \`e 
% cumulativo.
% 
% \frontcommand{Rientro}{\1{dimen}}
% Il nome del candidato e quello del relatore sono a filo dei margini 
% sinistro e destro (che si possono ricavare dalle dimensioni dei due 
% filetti). Se si desidera averli pi\`u rientrati si pu\`o usare questo 
% comando:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Rientro{1cm}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \frontcommand{Margini}{\1{dimen}\1{dimen}\1{dimen}\1{dimen}}
% Se i margini scelti dal pacchetto non sono di gradimento, si possono 
% specificarne di diversi con questo comando:
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Margini{1cm}{1.5cm}{1cm}{1cm}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% \`e l'equivalente della scelta del pacchetto.  Le dimensioni si
% riferiscono, nell'ordine, al margine sinistro, in basso, destro e in
% alto.\footnote{In versioni precedenti, questo comando e il
% precedente si chiamavano, rispettivamente, \cmdname{Margins} e
% \cmdname{MoreMargin}.}
% 
% 
% \section{Scelta dei caratteri: forma e misura}
% 
% Se non si fosse soddisfatti della scelta dei caratteri proposta
% dall'autore, si pu\`o usare il comando \cmdname{Preambolo} per
% modificarla.  I comandi disponibili compaiono nella
% tabella~\ref{fonts}, con il loro valore usuale e la posizione in cui
% vengono usati.  Per esempio, per avere il titolo in maiuscoletto~16/20
% (cio\`e corpo~16 con distanza fra le linee di base di 20 punti), si
% scriver\`a
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\renewcommand{\fronttitlefont}{%
    \fontsize{16}{20}\scshape}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% La sintassi non \`e comoda, per scelta precisa.  Si ricordi che con
% l'opzione \texttt{sans} non \`e disponibile il maiuscoletto.  Un'altra
% cosa da ricordare \`e che per scegliere un carattere, occorre
% specificare non solo le sue dimensioni (e questo va fatto per prima
% cosa), ma anche le sue altre caratteristiche.  Il comando
% \cmdname{fontsize} prende due argomenti: il corpo e l'avanzamento di
% riga; se non si specifica l'unit\`a di misura, viene assunta quella di
% punti tipografici~(pt).  Se si cambia uno dei caratteri predefiniti,
% occorre specificare ogni aspetto del nuovo, se non si vogliono avere
% sorprese.
% 
% \begin{table}[ht]
% \centering
% \caption{Comandi per la scelta dei caratteri}\label{fonts}
% \medskip\footnotesize
% \begin{tabular}{lll}
% \toprule
% Comando & Valore usuale & Impiego\\
% \midrule
% \cmdname{frontinstitutionfont} &
% Neretto, 14/17 &
% Nome dell'universit\`a o istituzione\\[3pt]
% \cmdname{frontdivisionfont} &
% Tondo, 12/16 &
% Nome della facolt\`a o divisione\\[3pt]
% \cmdname{frontpretitlefont} &
% Maiuscoletto, 10/12 &
% Per il titoletto\\[3pt]
% \cmdname{fronttitlefont} &
% Neretto, 17/21 &
% Per il titolo della tesi\\[3pt]
% \cmdname{frontsubtitlefont} &
% Tondo, 12/14 &
% Per il sottotitolo\\[3pt]
% \cmdname{frontnamesfont} &
% Neretto, 12/14 &
% Per i nomi di candidato e relatore\\[3pt]
% \cmdname{frontfixednamesfont} &
% Tondo, 12/14 &
% Per scrivere le parole chiave\\
% && `Candidato', `Relatore' e `Correlatore'\\[3pt]
% \cmdname{frontsmallfont} &
% Tondo, 9/11 &
% Per il numero di matricola\\[3pt]
% \cmdname{frontfootfont} &
% Neretto, 12/14 &
% Per scrivere l'anno accademico\\
% \bottomrule
% \end{tabular}
% \end{table}
% 
% 
% \section{Parametri di spaziatura}
% 
% \`E possibile cambiare la spaziatura fra il campo `relatori' e quello
% `correlatori' (il valore normale \`e 1\unit{ex}):
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\renewcommand{\frontrelcorrelsep}{2ex}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% Analogamente si pu\`o aggiustare la composizione nel caso si usi
% l'opzione \opt{signatures} modificando il comando
% \cmdname{frontadjustforsignatures} per esempio con
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\renewcommand{\frontadjustforsignatures}{1cm}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Si definisce cos\`i una spaziatura verticale aggiuntiva fra la zona
% ``candidato-relatori'', in modo che non si arrivi troppo vicino al
% filetto in basso.  Il comando non ha effetto se non dando l'opzione
% \opt{signatures}.
% 
% Un terzo parametro dimensionale \`e \cmdname{frontlogosep}, il cui
% valore normale \`e 6\unit{pt}; se il logo dovesse essere troppo vicino o
% lontano dal nome dell'universit\`a, si pu\`o modificare con un comando
% come
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\renewcommand{\frontlogosep}{4pt}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% dove la dimensione pu\`o anche essere negativa.
% 
% Nel caso di pi\`u candidati, la spaziatura fra i nomi \`e regolata
% dal parametro \cmdname{frontcandidatesep}, il cui valore usuale \`e
% 3\unit{ex}; la si pu\`o modificare con un comando come
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\renewcommand{\frontcandidatesep}{1cm}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% 
% \section{\Xe\LaTeX}
% 
% \`E possibile usare \Xe\TeX{}, ovviamente nella forma \Xe\LaTeX, per 
% produrre il frontespizio. Ovviamente dovr\`a essere usato il comando 
% \cmdname{Preambolo} per impostare anche il documento~\file{frn} per 
% l'uso di questo motore \TeX. Per esempio, se il documento principale 
% \`e composto in ``Adobe Caslon~Pro'', si dovr\`a scrivere
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\Preambolo{\usepackage{fontspec}}
\Preambolo{\setmainfont{Adobe Caslon Pro}}
\end{verbatim}
% \iffalse
%</verb>
% \fi
% Naturalmente \`e possibile compilare il \file{frn} anche usando
% \textsc{pdf}\LaTeX{} oppure \LaTeX{} e \textsc{dvips}.  Tuttavia si
% consiglia l'uniformit\`a fra il carattere usato nel testo e quello usato
% nel frontespizio, se non ci sono disposizioni particolari che
% richiedano diversamente.
% 
% Si ricordi che \Xe\TeX{} legge correttamente solo documenti scritti 
% nelle codifiche \textsc{utf}-8 oppure \textsc{utf}-16.
% 
% 
% \section{Limitazioni e incompatibilit\`a}
% 
% Il pacchetto \`e in versione preliminare, \`e possibile che in futuro
% cambi anche la sintassi dei comandi da usare.  Si spera in maniera
% compatibile.
% 
% Gli altri pacchetti caricati sono \pack{ifpdf}, \pack{graphicx} e
% \pack{afterpage} che non hanno gravi incompatibilit\`a note.  Se
% disponibile sul sistema, viene caricato anche \pack{ifxetex}.  Se si
% dovesse usare \pack{graphicx} con un \emph{driver} diverso da
% \texttt{dvips} o \texttt{pdftex}, va caricato \emph{prima} di
% \pack{frontespizio}; ricordiamo che i due \emph{driver} menzionati non
% vanno dichiarati come opzione a \pack{graphicx}, perch\'e in mancanza di
% altre opzioni vengono scelti automaticamente dal compilatore.
% Attenzione: usando \emph{Textures}, per esempio, va inserita anche
% l'opzione \opt{driver=textures} a \pack{frontespizio}.  Cambiare il
% nome del driver, se necessario; la sintassi \`e questa, niente spazi
% attorno al segno di uguaglianza.  Ovviamente si dovr\`a consultare il
% manuale della propria distribuzione per sapere come produrre il file
% eps in modo corretto.
% 
% 
% \section{Soluzione del giochino}
% 
% L'etimologia di `Stanford' \`e `stan$+$ford'; l'antico inglese `stan' \`e
% ora `stone', cio\`e `pietra', mentre il toponimo `ford' indica un luogo
% di mercato.  Il cognome `Knuth' \`e di origine norvegese, affine a
% `Knudsen', e significa `nodo'.  Il nome `Donald' \`e di origine gaelica
% e vuol dire `reggitore del mondo', mentre `Basilio' viene dalla parola
% greca che significa~`re'.  Il signor Revinu Jitis Drofnats non ha
% bisogno di presentazioni nel mondo~\TeX.
% 
% 
% \section{Esempi}
% 
% Nelle pagine seguenti vedremo alcuni esempi con il sorgente.  I titoli
% delle tesi sono veri, manca solo l'indicazione dell'anno accademico,
% per evidenti motivi di \emph{privacy}.  Non sono stati messi `logo' di
% universit\`a per evitare problemi legali.
% 
% \clearpage
% 
% \iffalse
%<*examplea>
% \fi
% \begin{verbatim}
\documentclass[a4paper,titlepage]{book}
\usepackage{frontespizio}

\begin{document}
\begin{frontespizio}
\Universita{Padova}
\Facolta{Scienze Matematiche, Fisiche e Naturali}
\Corso[Laurea]{Matematica}
\Titoletto{Tesi di laurea}
\Titolo{Equivalenze fra categorie di moduli\\
e applicazioni}
\Candidato[145822]{Enrico Gregorio}
\Relatore{Ch.mo Prof.~Adalberto Orsatti}
\Annoaccademico{19??-19??}
\end{frontespizio}
\end{document}
% \end{verbatim}
% \iffalse
%</examplea>
% \fi
% 
% \vspace{4ex}
% 
% \includeex{examplea-frn}
% 
% \clearpage
% 
% \iffalse
%<*exampleb>
% \fi
% \begin{verbatim}
\documentclass[a4paper,titlepage]{book}
\usepackage[sans]{frontespizio}

\begin{document}
\begin{frontespizio}
\Universita{Padova}
\Facolta{Scienze Matematiche, Fisiche e Naturali}
\Corso[Laurea]{Matematica}
\Titoletto{Tesi di laurea}
\Titolo{Equivalenze fra categorie di moduli\\
e applicazioni}
\Candidato{Enrico Gregorio}
\Relatore{Ch.mo Prof.~Adalberto Orsatti}
\Annoaccademico{19??-19??}
\Rientro{1.5cm}
\NCandidato{Laureando}
\Punteggiatura{}
\end{frontespizio}
\end{document}
% \end{verbatim}
% \iffalse
%</exampleb>
% \fi
% 
% \vspace{4ex}
% 
% \includeex{exampleb-frn}
% 
% \clearpage
% 
% \iffalse
%<*examplec>
% \fi
% \begin{verbatim}
\documentclass[a4paper,titlepage]{book}
\usepackage[swapnames]{frontespizio}

\begin{document}
\begin{frontespizio}
\Preambolo{\usepackage{fourier}}
\Universita{Bologna}
\Dipartimento{Matematica}
\Corso[Dottorato di Ricerca]{Matematica}
\Titolo{Equivalenza di Morita generalizzata\\
e applicazioni alla teoria degli\\
anelli compatti}
\Candidato{Enrico Gregorio}
\Relatore{Ch.mo Prof.~Ermanno Lanconelli}
\NRelatore{Coordinatore}{}
\Correlatore{Ch.mo Prof.~Adalberto Orsatti}
\NCorrelatore{Supervisore della ricerca}{}
\Annoaccademico{19??-19??}
\end{frontespizio}
\end{document}
% \end{verbatim}
% \iffalse
%</examplec>
% \fi
% 
% \vspace{4ex}
% 
% \includeex{examplec-frn}
% \newpage
% 
% \section{A shell script to compile the documentation}
% Running \texttt{latex} on \file{frontespizio.ins} produces also 
% \file{makedoc.sh} which can be run, on Unix systems, by one of the 
% following command from a shell:
% \begin{flushleft}\ttfamily
% sh makedoc.sh
% \end{flushleft}
% The shell script code is as follows.
% 
% \iffalse
%<*thedoc>
% \fi
% \begin{verbatim}
#!/bin/sh
pdflatex examplea.tex
pdflatex examplea-frn.tex
pdflatex exampleb.tex
pdflatex exampleb-frn.tex
pdflatex examplec.tex
pdflatex examplec-frn.tex
pdflatex frontespizio.dtx
pdflatex frontespizio-frn.tex
makeindex -s gind frontespizio
makeindex -s gglo -o frontespizio.gls frontespizio.glo
pdflatex frontespizio.dtx
pdflatex frontespizio.dtx
exit
% \end{verbatim}
% \iffalse
%</thedoc>
% \fi
%
% \StopEventually{\PrintChanges\PrintIndex}
% \changes{v1.1}{2009/04/03}{Added swapnames option}
%
% \selectlanguage{english}
% \section{The implementation}
% After the usual stuff of package presentation, here are the actual
% macros.  We use the $\varepsilon$-\TeX{} extensions, so we check
% that they are present.
% \iffalse
%<*package>
% \fi
%    \begin{macrocode}
\def\@not@eTeX{%
  \PackageError{frontespizio}
  {This package requires e-TeX, I'll stop right now}
  {This package is built on the e-TeX extensions which are not present.%
   \MessageBreak
   The best thing you can do is to upgrade your TeX system or try%
   \MessageBreak
   using `elatex' or `pdfelatex'.}%
    \expandafter\@@end}
\ifx\eTeXversion\@undefined
  \@not@eTeX
\else
  \let\@not@eTeX\@undefined
\fi
%    \end{macrocode}
% \subsection{Package options}
% Now we declare options and a conditional which is true when we write
% to the \file{frn} file: this is the file which will be compiled
% later in order to produce the pdf page that will be included as the
% frontispiece.  The option `infront' is a private one, which is set
% only in the \file{frn} file where the nowrite option is set, so we
% need a correction.  It's easier to use \verb|\ifdefined| than to
% define many new conditionals. Actually, the package doesn't use 
% $\varepsilon$-\TeX{} features other than \verb|\ifdefined| and
% \verb|\unless|, but I wanted to try and encourage to upgrade from 
% old \TeX{} systems.
% 
% \begin{macro}{\iffront@write}
% The conditional \verb|\iffront@write| is false when we don't want 
% to write the \file{frn} file.
% \end{macro}
% \begin{macro}{\front@infront}
% \verb|\front@infront| is defined only if we are typesetting the
% \file{frn} file.
% \end{macro}
% \begin{macro}{\front@signatures}
% \verb|\front@signatures| is defined if we need to leave space for 
% the advisor's signature.
% \end{macro}
% \begin{macro}{\front@noadvisor}
% \verb|\front@noadvisor| is defined if we don't want an advisor's 
% name.
% \end{macro}
% \begin{macro}{\front@swapnames}
% \changes{v1.1}{2009/04/03}{Added macro \cs{front@swapnames} and
%                            option \texttt{swapnames}}
% \verb|\front@swapnames| is defined if we want to swap the advisor's
% and candidate's fields.
% \end{macro}
% \begin{macro}{\front@thefont}
% \begin{macro}{\fontoptionnormal}
% \begin{macro}{\fontoptionsans}
% The options `normal' and `sans' are an elementary way to control 
% the font choice for the frontispiece.
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\front@norules}
% \verb|\front@norules| is defined if we don't want rules in the 
% frontispiece.
% \end{macro}
% \begin{macro}{\iffront@include}
% \verb|\iffront@include| controls whether we use the package only in 
% order to include an external file (similarly to pdfpages).
% \end{macro}
% \begin{macro}{\front@grfdriver}
% In \verb|\front@grfdriver| we load the driver's choice; it's a very 
% primitive trick, but not many people use strange drivers, nowadays.
% \end{macro}
%    \begin{macrocode}
\newif\iffront@write
\DeclareOption{write}{\front@writetrue}
\DeclareOption{nowrite}{\front@writefalse}
\DeclareOption{infront}{\let\front@infront=T}
\DeclareOption{signatures}{\let\front@signatures=T}
\DeclareOption{noadvisor}{\let\front@noadvisor=T}
\DeclareOption{swapnames}{\let\front@swapnames=T}
\DeclareOption{normal}{\def\front@thefont{\fontoptionnormal}}
\DeclareOption{sans}{\def\front@thefont{\fontoptionsans}}
\DeclareOption{norules}{\let\front@norules=T}
\newif\iffront@include
\DeclareOption{onlyinclude}{\front@includetrue\ExecuteOptions{nowrite}}
\DeclareOption*{\edef\front@grfdriver{\CurrentOption}}
%    \end{macrocode}
% Now we choose the default options; we want to write the \file{frn} file
% and roman fonts.
%    \begin{macrocode}
\ExecuteOptions{write,normal}
\ProcessOptions\relax
%    \end{macrocode}
% \subsection{Required packages and service macros}
% We load the needed packages.  Of course \pack{graphicx} and
% \pack{eso-pic} for graphic inclusion; we need also \pack{afterpage} 
% for adjustments when using some classes.
%    \begin{macrocode}
\RequirePackage{afterpage}
\RequirePackage{graphicx}
\RequirePackage{eso-pic}
%    \end{macrocode}
% \begin{macro}{\includefront}
% We manage first the onlyinclude option.  If we are only including an
% external file, we load it and prepare for an empty verso page; the
% optional argument is there in order to correct the page number, if
% necessary; after that we stop reading the package.
%    \begin{macrocode}
\iffront@include
\newcommand{\includefront}[2][0]{%
  \titlepage\null
    \AddToShipoutPicture*{\includegraphics{#2}}%
    \afterpage{\thispagestyle{empty}}%
  \endtitlepage
  \ifx0#1\else
    \null\thispagestyle{empty}\newpage\addtocounter{page}{-#1}%
  \fi}
  \newenvironment{frontespizio}{%
    \PackageError{frontespizio}
    {Using the `frontespizio' environment along with the%
     \MessageBreak
     `onlyinclude' option is not allowed}
    {You have called `frontespizio' with the `onlyinclude' option%
     \MessageBreak
     which disallows the `frontespizio' environment, thus be%
     \MessageBreak
     prepared for a long string of errors.%
     \MessageBreak
     The best is to hit `x' now and correct your input.}%
     }{}
\expandafter\endinput
\else
%    \end{macrocode}
% \end{macro}
% If the `onlyinclude' option is not given we can be in different 
% situations: first of all we load support for distinguishing whether 
% the user is typesetting with \texttt{latex}, \texttt{pdflatex} or 
% \texttt{xelatex}.
%    \begin{macrocode}
\RequirePackage{ifpdf}
%    \end{macrocode}
% We want to support also \Xe\LaTeX{}, but not all distributions have
% it; so if the package \pack{ifxetex} is not in the system we assume
% that \Xe\LaTeX{} is not used; we have to bury a \verb|\let| inside a
% macro, which can be safely undefined later; all \verb|\ifxetex|
% conditionals will be treated as false, of course. Since we are in a
% conditional, the definition of \cs{front@ifxetex} must be done in an
% indirect way.\changes{v1.1}{2009/04/03}{Recoded \cs{front@ifxetex}}
%    \begin{macrocode}
\def\front@ifxetex{%
  \expandafter\let
    \csname ifxetex\expandafter\endcsname
    \csname iffalse\endcsname}
\IfFileExists{ifxetex.sty}{\RequirePackage{ifxetex}}{\front@ifxetex}
\let\front@ifxetex\@undefined
\fi
%    \end{macrocode}
% \begin{macro}{\front@write}
% \begin{macro}{\front@expwrite}
% If we are writing the \file{frn} file, we allocate an output stream,
% otherwise we let \verb|\front@write| and \verb|\front@expwrite| to
% gobble their argument; \verb|\front@write| is used to write things
% without expansion while \verb|\front@expwrite| expands tokens in the
% argument.
% \end{macro}
% \end{macro}
%    \begin{macrocode}
\iffront@write
  \newwrite\front@out
  \immediate\openout\front@out=\jobname-frn.tex
  \long\def\front@write#1{\immediate\write\front@out{\unexpanded{#1}}}
  \long\def\front@expwrite{\immediate\write\front@out}
\else
  \long\def\front@write#1{}
  \let\front@expwrite\front@write
\fi
%    \end{macrocode}
% \subsection{Initialization of the \file{frn} file}
% Now we initialize the \file{frn} file by setting the class and the
% margins.  If a driver option has been given we want to load
% \pack{graphicx} in the frn file with the right driver; we have to do
% this before loading the present package, which always requires
% \pack{graphicx}.
%    \begin{macrocode}
\front@write{\documentclass[titlepage]{article}}
\front@write{\usepackage[a4paper,%
  left=1cm,bottom=1.5cm,right=1cm,top=1cm]{geometry}}
\ifdefined\front@grfdriver
  \def\front@temp driver=#1\@nil{\def\front@grfdriver{#1}}
  \expandafter\front@temp\front@grfdriver\@nil
  \front@expwrite{\string\usepackage[\front@grfdriver]{graphicx}}
\fi
%    \end{macrocode}
% Set the options in the \file{frn} file: there we don't want to be
% writing the \file{frn} file, of course, nor we need aux files, but
% we add the private option.
%    \begin{macrocode}
\def\front@theoptions{nowrite,infront}
\ifdefined\front@signatures
  \g@addto@macro\front@theoptions{,signatures}
\fi
\ifdefined\front@noadvisor
  \g@addto@macro\front@theoptions{,noadvisor}
\fi
\ifdefined\front@swapnames
  \g@addto@macro\front@theoptions{,swapnames}
\fi
\ifdefined\front@norules
  \g@addto@macro\front@theoptions{,norules}
\fi
\front@expwrite{\string\usepackage[\front@theoptions]{frontespizio}}
\front@write{\nofiles}
%    \end{macrocode}
% Write in the \file{frn} file the font choosing command; here we need only 
% a one level expansion.
%    \begin{macrocode}
\expandafter\front@write\expandafter{\front@thefont}
%    \end{macrocode}
% \subsection{Commands, conditionals and registers}
% The following commands are necessary only when we are compiling 
% the frontispiece, when the \verb|\front@infront| command is defined.
%    \begin{macrocode}
\ifdefined\front@infront
\def\fontoptionnormal{%
  \let\front@font\normalfont \let\front@scfont\scshape}
\def\fontoptionsans{%
  \let\front@font\sffamily \let\front@scfont\upshape}
\def\front@push{}
\def\front@thecandidate{Candidato}
\def\front@thecandidates{Candidati}
\def\front@theadvisor{Relatore}
\def\front@theadvisors{Relatori}
\def\front@thecoadvisor{Correlatore}
\def\front@thecoadvisors{Correlatori}
\def\front@punct{:}
\newif\iffront@titoletto
\newif\iffront@matr
\newif\iffront@onecand
\newif\iffront@morecand
\newif\iffront@correl
\newif\iffront@logo
\newif\iffront@inst
\newif\iffront@sottotit
\newif\iffront@multiple
\newif\iffront@division
\newif\iffront@school
\newif\iffront@foot
\newtoks\front@candtoks
\newcount\front@candcount
\newtoks\front@reltoks
\newcount\front@relcount
\newtoks\front@correltoks
\newcount\front@correlcount
\fi
%    \end{macrocode}
% We need a macro to hide the conditionals, which we load and define
% only when making the front page; the \verb|\if| conditional will
% always expand to nothing or be skipped altogether up to the matching
% \verb|\fi| when writing the \file{frn} file; if expanded, however,
% it will put in the correct conditional when making the front page.
%    \begin{macrocode}
\def\@front@#1{TT\fi\@nameuse{iffront@#1}}
%    \end{macrocode}
% Now we define the markup commands. We do this three times, because 
% they will behave differently in different conditions.
%    \begin{macrocode}
\iffront@write
%    \end{macrocode}
% If we are writing the \file{frn} file, then we simply copy the
% commands to it.  An exception is \verb|\Preambolo|: in this case we
% copy only its argument.  Since there can be several candidate names,
% the \verb|\Candidato| macro is treated differently, because it can
% have an optional argument.
%    \begin{macrocode}
\newcommand{\Preambolo}[1]{\front@write{#1}}
\newcommand{\Rientro}[1]{\front@write{\Rientro{#1}}}
\newcommand{\Margini}[4]{\front@write{\Margini{#1}{#2}{#3}{#4}}}
\newcommand{\Logo}[2][1.5cm]{\front@write{\Logo[#1]{#2}}}
\newcommand{\Filigrana}[2][height=10cm]{%
  \front@write{\Filigrana[#1]{#2}}}
\newcommand{\Universita}[1]{\front@write{\Universita{#1}}}
\newcommand{\Istituzione}[1]{\front@write{\Istituzione{#1}}}
\newcommand{\Facolta}[1]{\front@write{\Facolta{#1}}}
\newcommand{\Dipartimento}[1]{\front@write{\Dipartimento{#1}}}
\newcommand{\Divisione}[1]{\front@write{\Divisione{#1}}}
\newcommand{\Interfacolta}[1]{\front@write{\Interfacolta{#1}}}
\newcommand{\Corso}[2][Laurea Magistrale]{\front@write{\Corso[#1]{#2}}}
\newcommand{\Scuola}[1]{\front@write{\Scuola{#1}}}
\newcommand{\Titolo}[1]{\front@write{\Titolo{#1}}}
\newcommand{\Sottotitolo}[1]{\front@write{\Sottotitolo{#1}}}
\newcommand{\Annoaccademico}[1]{\front@write{\Annoaccademico{#1}}}
\newcommand{\Piede}[1]{\front@write{\Piede{#1}}}
\newcommand{\Titoletto}[1]{\front@write{\Titoletto{#1}}}
\newcommand{\Candidato}[2][]{%
  \def\next{#1}%
  \ifx\next\@empty
    \front@write{\Candidato{#2}}%
  \else
    \front@write{\Candidato[#1]{#2}}%
  \fi}
\newcommand{\Relatore}[1]{\front@write{\Relatore{#1}}}
\newcommand{\Correlatore}[1]{\front@write{\Correlatore{#1}}}
\newcommand{\NCandidato}[1]{\front@write{\NCandidato{#1}}}
\newcommand{\NCandidati}[1]{\front@write{\NCandidati{#1}}}
\newcommand{\NRelatore}[2]{\front@write{\NRelatore{#1}{#2}}}
\newcommand{\NCorrelatore}[2]{\front@write{\NCorrelatore{#1}{#2}}}
\newcommand{\Punteggiatura}[1]{\front@write{\Punteggiatura{#1}}}
%    \end{macrocode}
% Now some equivalent commands for backwards compatibility with the
% preproduction version called front-th. Unfortunately, the old 
% command \verb|\Matricola| cannot be made compatible.
%    \begin{macrocode}
\def\front@oldcommand#1#2{\def#1{\PackageWarning{frontespizio}
  {Old command \string#1 found; use \string#2}#2}}
\front@oldcommand\IlCandidato\Candidato
\front@oldcommand\Package\Preambolo
\front@oldcommand\MoreMargin\Rientro
\front@oldcommand\Margins\Margini
% Sorry, \Matricola cannot be used any more
\def\Matricola#1{\PackageError{frontespizio}
  {Old command \noexpand\Matricola found}
  {The command \noexpand\Matricola cannot be used with this package.%
   \MessageBreak Use the optional argument to \string\Candidato}}
%
\else\ifdefined\front@infront
%    \end{macrocode}
% If we are typesetting the front page, then we give the commands 
% their real meaning, i.e., we define macros which will be used in 
% \verb|\preparefrontpage|.
%    \begin{macrocode}
\newcommand{\Rientro}[1]{\def\front@push{\hspace{#1}}}
\newcommand{\Margini}[4]{\geometry{left=#1,bottom=#2,right=#3,top=#4}}
\newcommand{\Logo}[2][1.5cm]{\def\front@logo{#2}%
  \def\front@logosize{#1}\front@logotrue}
%    \end{macrocode}
% We support a centered logo in the background, using xkeyval.
%    \begin{macrocode}
\def\front@logobefore{1}\def\front@logoafter{1} % default values
\define@key{filigrana}{height}[10cm]{\def\front@logoheight{#1}}
\define@key{filigrana}{before}[1]{\def\front@logobefore{#1}}
\define@key{filigrana}{after}[1]{\def\front@logoafter{#1}}
\newcommand{\Filigrana}[2][height=10cm]{%
  \setkeys{filigrana}{#1}%
  \AddToShipoutPicture*{%
    \put(0,0){
      \parbox[b][\paperheight]{\paperwidth}{
      \vspace*{\stretch{\front@logobefore}}
      \centering
      \includegraphics[height=\front@logoheight]{#2}
      \vspace{\stretch{\front@logoafter}}
}}}}
%    \end{macrocode}
% Now we continue the definition of the markup commands, mostly 
% passing their arguments to the internal macros; in some cases we 
% need more work, using token lists.
%    \begin{macrocode}
\newcommand{\Universita}[1]{\def\front@univ{#1}}
\newcommand{\Istituzione}[1]{\def\front@instit{#1}\front@insttrue}
\newcommand{\Facolta}[1]{\def\front@facoldip{#1}%
  \def\front@thefacoldip{Facolt\`a}}
\newcommand{\Dipartimento}[1]{\def\front@facoldip{#1}%
  \def\front@thefacoldip{Dipartimento}}
\newcommand{\Interfacolta}[1]{%
  \def\front@multiple{#1}\front@multipletrue}
\newcommand{\Divisione}[1]{\def\front@division{#1}\front@divisiontrue}
\newcommand{\Corso}[2][Laurea Magistrale]{%
  \def\front@cl{#1\unskip\space in #2}}
\newcommand{\Scuola}[1]{\def\front@school{#1}\front@schooltrue}
\newcommand{\Titolo}[1]{\def\front@title{#1}}
\newcommand{\Sottotitolo}[1]{\def\front@subtitle{#1}\front@sottotittrue}
\newcommand{\Annoaccademico}[1]{\def\front@anno{#1}}
\newcommand{\Piede}[1]{\def\front@foot{#1}\front@foottrue}
\newcommand{\Titoletto}[1]{\def\front@titoletto{#1}\front@titolettotrue}
\newcommand{\Candidato}[2][]{\advance\front@candcount\@ne
  \front@candtoks=\expandafter{\the\front@candtoks
    \front@docand{#1}{#2}}%
  \def\front@cand{#2}%
  \def\next{#1}%
  \ifx\next\@empty\else\def\front@matr{#1}\front@matrtrue\fi
}
\newcommand{\Relatore}[1]{\advance\front@relcount\@ne 
  \front@reltoks=\expandafter{\the\front@reltoks\\#1%
   \ifdefined\front@signatures\\[1cm]\fi}}
\newcommand{\Correlatore}[1]{%
  \front@correltrue\advance\front@correlcount\@ne
  \front@correltoks=\expandafter{\the\front@correltoks\\#1}}
\newcommand{\NCandidato}[1]{\def\front@thecandidate{#1}}
\newcommand{\NCandidati}[1]{\def\front@thecandidates{#1}}
\newcommand{\NRelatore}[2]{\def\front@theadvisor{#1}%
  \def\front@theadvisors{#2}}
\newcommand{\NCorrelatore}[2]{\def\front@thecoadvisor{#1}%
  \def\front@thecoadvisors{#2}}
\newcommand{\Punteggiatura}[1]{\def\front@punct{#1}}
%    \end{macrocode}
% Now we set the default fonts for the various parts of the 
% frontispiece.
% \begin{macro}{\frontinstitutionfont}
% \begin{macro}{\frontdivisionfont}
% \begin{macro}{\frontpretitlefont}
% \begin{macro}{\fronttitlefont}
% \begin{macro}{\frontsubtitlefont}
% \begin{macro}{\frontnamesfont}
% \begin{macro}{\frontsmallfont}
% \begin{macro}{\frontfootfont}
% \begin{macro}{\frontfixednamesfont}
%    \begin{macrocode}
\def\frontinstitutionfont{\fontsize{14}{17}\bfseries}
\def\frontdivisionfont{\fontsize{12}{16}\selectfont}
\def\frontpretitlefont{\fontsize{10}{12}\front@scfont}
\def\fronttitlefont{\fontsize{17}{21}\bfseries}
\def\frontsubtitlefont{\fontsize{12}{14}\selectfont}
\def\frontnamesfont{\fontsize{12}{14}\bfseries}
\def\frontsmallfont{\fontsize{9}{11}\selectfont}
\def\frontfootfont{\fontsize{12}{14}\bfseries}
\def\frontfixednamesfont{\normalfont\normalsize\front@font}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\frontcandidatesep}
% \begin{macro}{\frontrelcorrelsep}
% \begin{macro}{\frontlogosep}
% \begin{macro}{\frontadjustforsignatures}
% Some pseudo-parameters: the first is to separate candidates' names;
% the second to separate `Relatore' and `Correlatore' fields; the
% third to separate the logo from the University name; the fourth to
% adjust the `candidate-advisor' field in case there are many advisors
% and coadvisors and the "signature" option is in force.
%    \begin{macrocode}
\def\frontcandidatesep{3ex}
\def\frontrelcorrelsep{1ex}
\def\frontlogosep{6pt}
\def\frontadjustforsignatures{0pt}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% The command to typeset more than one candidate.
%    \begin{macrocode}
\def\front@docand#1#2{%
  #2\\% the candidate's name
  \def\next{#1}%
  \unless\ifx\next\@empty
    \frontsmallfont Matricola #1\\[\frontcandidatesep]
  \fi}
%    \end{macrocode}
% 
% \subsection{The typesetting}
% \begin{macro}{\preparefrontpage}
% Here is where the typesetting is defined.
%    \begin{macrocode}
\def\preparefrontpage{%
\titlepage\front@font
\centering
\par
%    \end{macrocode}
% \end{macro}
% First block: the institution's logo.
%    \begin{macrocode}
\if\@front@{logo}
\includegraphics[height=\front@logosize]{\front@logo}\par
\vspace{\frontlogosep}
\fi
\par
%    \end{macrocode}
% Second block: the institution's name.
%    \begin{macrocode}
{\frontinstitutionfont
\if\@front@{inst}
  \front@instit
\else
  Universit\`a degli Studi di \front@univ
\fi\par}
\vspace{1.5ex}
\unless\ifdefined\front@norules\hrule\fi
\vspace{1.5ex}
%    \end{macrocode}
% Third block: the department's name; in Italy graduation theses are
% responsibility of Faculties, only Ph.D. theses are responsibility of
% Departments.
%    \begin{macrocode}
{\frontdivisionfont
\if\@front@{multiple}
  \front@multiple
\else
  \if\@front@{division}
    \MakeUppercase{\front@division}
  \else
    \MakeUppercase{\front@thefacoldip}
    DI
    \MakeUppercase{\front@facoldip}
  \fi
\fi\\
\if\@front@{school}
  \front@school
\else
  Corso di \front@cl
\fi
\par}
%    \end{macrocode}
% Fourth block: the specification of the thesis' kind.
%    \begin{macrocode}
\if\@front@{titoletto}
\vspace{2cm}
{\frontpretitlefont\front@titoletto\par}
\fi
\vspace{\fill}
%    \end{macrocode}
% Fifth block: the thesis' title.
%    \begin{macrocode}
{\fronttitlefont\front@title\par}
%    \end{macrocode}
% Sixth block: the thesis' subtitle, if present.
%    \begin{macrocode}
\if\@front@{sottotit}
\vspace{4ex}
{\frontsubtitlefont\front@subtitle\par}
\fi
\vspace{\fill}
%    \end{macrocode}

% Seventh block: the candidate's name and the advisor's name.  A
% \texttt{tabular*} spanning all the text width has two columns; on
% the left we put the candidate's name, on the right the advisor's
% name (possibly more than one) and, if present, the coadvisor's name.
% It the option `swapnames' has been given, the two columns are exchanged.
%    \begin{macrocode}
% \changes{v1.1}{2009/04/03}{Added \cs{front@makecandidates}}
% \changes{v1.1}{2009/04/03}{Added \cs{front@@makeadvisors}}
\def\front@makecandidates{%
  \begin{tabular}[t]{@{}l@{}}
  \relax\ifnum\front@candcount<1
    \PackageWarningNoLine{frontespizio}{Missing candidate name}%
  \else
    \frontfixednamesfont
    \ifnum\front@candcount=1
      \front@thecandidate
    \else
      \front@thecandidates
    \fi
    \front@punct\\
    \the\front@candtoks
  \fi
  \end{tabular}}
\def\front@makeadvisors{%
  \unless\ifdefined\front@noadvisor
    \begin{tabular}[t]{@{}l@{}}
    \relax
    \ifcase\front@relcount
      \PackageWarningNoLine{frontespizio}{Missing advisor name}%
    \or
      \frontfixednamesfont\front@theadvisor\front@punct
    \else
      \frontfixednamesfont\front@theadvisors\front@punct
    \fi
    \the\front@reltoks
    \if\@front@{correl}
      \\[\frontrelcorrelsep]
      \ifcase\front@correlcount\or
        \frontfixednamesfont\front@thecoadvisor\front@punct
      \else
        \frontfixednamesfont\front@thecoadvisors\front@punct
      \fi
    \the\front@correltoks
    \fi
    \end{tabular}
  \fi}
\vbox to .3\textheight{\parindent\z@
\frontnamesfont
\ifdefined\front@swapnames
  \begin{tabular*}{\textwidth}
    {@{\front@push}l@{\extracolsep{\fill}}l@{\front@push}}
  \front@makeadvisors&\front@makecandidates
  \end{tabular*}
\else
  \begin{tabular*}{\textwidth}
    {@{\front@push}l@{\extracolsep{\fill}}l@{\front@push}}
  \front@makecandidates&\front@makeadvisors
  \end{tabular*}
\fi
\par
\vfill}
%    \end{macrocode}
% Eighth block: the foot. Before setting it we do, if necessary, a 
% vertical negative skip.
%    \begin{macrocode}
\ifdefined\front@signatures\vskip\frontadjustforsignatures\fi
\unless\ifdefined\front@norules\hrule\fi
\vspace{1.5ex}
{\frontfootfont
 \if\@front@{foot}
   \front@foot
 \else
   Anno Accademico \front@anno
 \fi
 \par}
\endtitlepage}
%    \end{macrocode}
% The following \verb|\else| matches the
% \verb|\ifdefined\front@infront| several lines ahead
%    \begin{macrocode}
\else
%    \end{macrocode}
% If we get here, we are neither compiling the frontispiece, nor
% writing to the \file{frn} file, so we provide dummy definitions for
% all the user level commands.
%    \begin{macrocode}
\newcommand{\Preambolo}[1]{}
\newcommand{\Rientro}[1]{}
\newcommand{\Margini}[4]{}
\newcommand{\Logo}[2][]{}
\newcommand{\Filigrana}[2][]{}
\newcommand{\Universita}[1]{}
\newcommand{\Istituzione}[1]{}
\newcommand{\Facolta}[1]{}
\newcommand{\Dipartimento}[1]{}
\newcommand{\Interfacolta}[1]{}
\newcommand{\Divisione}[1]{}
\newcommand{\Corso}[2][]{}
\newcommand{\Scuola}[1]{}
\newcommand{\Titolo}[1]{}
\newcommand{\Sottotitolo}[1]{}
\newcommand{\Annoaccademico}[1]{}
\newcommand{\Piede}[1]{}
\newcommand{\Titoletto}[1]{}
\newcommand{\Candidato}[2][]{}
\newcommand{\Relatore}[1]{}
\newcommand{\Correlatore}[1]{}
\newcommand{\NCandidato}[1]{}
\newcommand{\NCandidati}[1]{}
\newcommand{\NRelatore}[2]{}
\newcommand{\NCorrelatore}[2]{}
\newcommand{\Punteggiatura}[1]{}
%    \end{macrocode}
% The following two \verb|\fi| match \verb|\ifdefined\front@infront|
% and \verb|\iffront@write| several lines ahead
%    \begin{macrocode}
\fi
\fi
%    \end{macrocode}
% \subsection{The external file inclusion}
% We define a command to hold the requested file name extension.
%    \begin{macrocode}
\ifpdf
  \def\front@ext{pdf}
\else
  \ifxetex
    \def\front@ext{pdf}
  \else
    \def\front@ext{eps}
  \fi
\fi
%    \end{macrocode}
% If we use \pack{amsbook}, then the titlepage environment doesn't
% generate the verso page, while book does.
%    \begin{macrocode}
\@ifclassloaded{amsbook}
  {\def\front@cp{\null\thispagestyle{empty}\newpage
    \advance\c@page\m@ne}}
  {\let\front@cp\relax}
%    \end{macrocode}
% \begin{environment}{frontespizio}
% The environment \env{frontespizio} goes in the main file and is
% responsible for ending the writing of the \file{frn} file (in its final
% part; in the initial part it typesets the front page by including
% the pdf file if already typeset.
% 
% The front page commands must go before the end of this environment;
% the best choice is, of course, to put them inside it.  Maybe a
% key-value syntax would be preferable.
% 
% Now we define the environment; its purpose is to initialize the
% mechanism and finalize it.
%    \begin{macrocode}
\def\frontespizio{%
  \titlepage\null
    \IfFileExists{\jobname-frn.\front@ext}
    {\AddToShipoutPicture*{\includegraphics{\jobname-frn}}}
    {\AtEndDocument{%
     \PackageWarningNoLine{frontespizio}
       {Remember to compile \jobname-frn with\MessageBreak
     \ifpdf
       pdflatex \jobname-frn%
     \else
       \ifxetex
         xelatex \jobname-frn
       \else
         latex \jobname-frn\MessageBreak
         dvips -o \jobname-frn.eps \jobname-frn%
       \fi
     \fi\MessageBreak
     and then rerun \ifpdf pdf\fi \ifxetex xe\fi latex}}}
  \afterpage{\thispagestyle{empty}}%
  \endtitlepage
  \if@twoside\front@cp\fi
}
\def\endfrontespizio{%
  \front@write{\begin{document}}
  \front@write{\preparefrontpage}
  \front@write{\end{document}}
  \iffront@write\immediate\closeout\front@out\fi
}
%    \end{macrocode}
% \iffalse
%</package>
% \fi
% \end{environment}
% The end.
% \Finale
