Skip to content
thud.cls 6.31 KiB
Newer Older
Luker's avatar
Luker committed
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
Luker's avatar
Luker committed
\ProvidesClass{thud}[2014/03/11]
Luker's avatar
Luker committed

\RequirePackage{kvoptions}
\SetupKeyvalOptions{prefix={\@currname @opt@}}

Luker's avatar
Luker committed
\def\thud@tmpcmd{\relax}
\DeclareStringOption[\relax]{beamer}[]
Luker's avatar
Luker committed
\DeclareStringOption{target}

\ProcessKeyvalOptions{\@currname}

Luker's avatar
Luker committed
\newif\ifthud@beamer
\ifx\thud@opt@beamer\thud@tmpcmd\else\thud@beamertrue\fi

Luker's avatar
Luker committed
\def\thud@save#1{\expandafter\let\csname thud@save@#1\expandafter\endcsname\csname#1\endcsname}
\def\thud@restore#1{\expandafter\let\csname#1\expandafter\endcsname\csname thud@save@#1\endcsname}
\def\@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}

\def\thud@tmpcmd{bach}
\ifx\thud@opt@target\thud@tmpcmd
    \chardef\thud@target\z@\relax
\else
    \def\thud@tmpcmd{mst}
    \ifx\thud@opt@target\thud@tmpcmd
        \chardef\thud@target\@ne\relax
    \else
        \def\thud@tmpcmd{phd}
        \ifx\thud@opt@target\thud@tmpcmd
            \chardef\thud@target\tw@\relax
        \else
            \ClassError{\@currname}{Invalid value for the \protect"target\protect" option}
                {Specify one of \protect"bach\protect", \protect"mst\protect" or \protect"phd\protect"}
        \fi
    \fi
\fi
\newif\ifthud@phd
\ifnum\thud@target=\tw@\relax\thud@phdtrue\fi

Luker's avatar
Luker committed
\ifthud@beamer
\LoadClass[\thud@opt@beamer]{beamer}
\else
Luker's avatar
Luker committed
\LoadClass[onecolumn,twoside,\ifthud@phd 10\else 11\fi pt]{book}
Luker's avatar
Luker committed
\fi
Luker's avatar
Luker committed

Luker's avatar
Luker committed
\def\thud@nonegiven#1{\ClassError{thud}{No \expandafter\string\csname#1\endcsname\space given}{Provide an \expandafter\string\csname#1\endcsname.}}
\def\@author{\thud@nonegiven{author}}
\def\@date{\begingroup\expandafter\advance\expandafter\year\ifnum\month>3 -1 \else -2 \fi\the\year-\advance\year1 \the\year\endgroup}
Luker's avatar
Luker committed

\RequirePackage{graphicx}
Luker's avatar
Luker committed
\RequirePackage[\thudbabelopt]{babel}
\ifthud@beamer\else
\RequirePackage{setspace}
\RequirePackage[\ifthud@phd c5paper\else a4paper\fi]{geometry}
\fi
Luker's avatar
Luker committed

Luker's avatar
Luker committed
\addto\captionsenglish{%
    \def\abstractname{Abstract}%
    \def\acknowledgementsname{Acknowledgements}%
    \def\authorcontactsname{Author's Contacts}%
    \def\candidatename{Candidate}%
    \def\chairname{Chair}%
    \def\conclusionsname{Conclusions}%
    \def\cosupervisorname{Co-Supervisor}%
    \def\cosupervisorsname{Co-Supervisors}%
    \def\cyclename{Cycle}%
    \def\datename{Academic Year}%
    \def\indexname{Index}%
    \def\institutecontactsname{Institute Contacts}%
    \def\introductionname{Introduction}%
    \def\prefacename{Preface}%
    \def\reviewername{Reviewer}%
    \def\reviewersname{Reviewers}%
    \def\shortdatename{A.Y.}%
    \def\summaryname{Summary}%
    \def\supervisorname{Supervisor}%
    \def\supervisorsname{Supervisors}%
    \def\thesisname{\ifcase\thud@target Bachelor\space\or Master\space\or Ph.D.~\fi Thesis}%
    \def\tutorname{Tutor}%
    \def\tutorsname{Tutors}%
}
\addto\captionsitalian{%
    \def\abstractname{Sommario}%
    \def\acknowledgementsname{Ringraziamenti}%
    \def\authorcontactsname{Contatti dell'autore}%
    \def\candidatename{Candidato}%
    \def\chairname{Direttore}%
    \def\conclusionsname{Conclusioni}%
    \def\cosupervisorname{Co-relatore}%
    \def\cosupervisorsname{Co-relatori}%
    \def\cyclename{Ciclo}%
    \def\datename{Anno accademico}%
    \def\indexname{Indice analitico}%
    \def\institutecontactsname{Contatti dell'Istituto}%
    \def\introductionname{Introduzione}%
    \def\prefacename{Prefazione}%
    \def\reviewername{Controrelatore}%
    \def\reviewersname{Controrelatori}%
    \def\shortdatename{A.A.}%
    \def\summaryname{Riassunto}%
    \def\supervisorname{Relatore}%
    \def\supervisorsname{Relatori}%
    \def\thesisname{Tesi di \ifcase\thud@target Laurea\or Laurea Magistrale\or Dottorato\fi}%
    \def\tutorname{Tutor aziendale}%
    \def\tutorsname{Tutor aziendali}%
}

\gdef\thud@universityA{%
    Universit\`a degli Studi di Udine\\[\thud@unisep]%
    Dipartimento di Scienze Matematiche, Informatiche e Fisiche\\[\thud@unisep]%
    \ifcase\thud@target Corso di Laurea\or Corso di Laurea Magistrale\or Dottorato di Ricerca\fi\space in \thud@course%
}
\gdef\thud@universityB{%
    Dipartimento di Scienze Matematiche, Informatiche e Fisiche\\%
    Universit\`a degli Studi di Udine\\
    Via delle Scienze, 206\\
    33100 Udine --- Italia\\
    +39 0432 558400\\
    \@ifundefined{url}\texttt\url{http://www.dimi.uniud.it/}
Luker's avatar
Luker committed
}

Luker's avatar
Luker committed
\def\@true{true}
\define@key{defentry}{long}[true]{%
    \def\thud@de@a{#1}%
    \ifx\@true\thud@de@a\let\thud@de@b\long\fi%
Luker's avatar
Luker committed
}
Luker's avatar
Luker committed
\define@key{defentry}{phd}[true]{%
    \def\thud@de@a{#1}%
    \ifx\@true\thud@de@a%
        \expandafter\let\csname ifthud@de@c\expandafter\endcsname\csname ifthud@phd\endcsname%
Luker's avatar
Luker committed
    \fi%
}
Luker's avatar
Luker committed
\define@key{defentry}{nonempty}[true]{%
    \def\thud@de@a{#1}%
    \ifx\@true\thud@de@a%
        \expandafter\let\csname ifthud@de@d\expandafter\endcsname\csname iftrue\endcsname%
Luker's avatar
Luker committed
    \fi%
}
Luker's avatar
Luker committed
\newcommand\thud@defentry[2][]{
	\let\thud@de@b\relax
	\let\ifthud@de@c\iftrue
	\let\ifthud@de@d\iffalse
    \setkeys{defentry}{#1}%
    \ifthud@de@d%% Either \iftrue or \iffalse
        \@namedef{thud@#2}{\thud@nonegiven{#2}}
    \else
        \expandafter\let\csname thud@#2\endcsname\@empty
    \fi
    \expandafter\thud@de@b\ifthud@de@c%% Either \iftrue or \ifthud@phd
        \@namedef{#2}##1{\expandafter\gdef\csname thud@#2\endcsname{##1}}
Luker's avatar
Luker committed
    \else
Luker's avatar
Luker committed
        \@namedef{#2}##1{\ClassWarning{\@currname}{\expandafter\string\csname#2\endcsname\space in non-PhD thesis}}
Luker's avatar
Luker committed
    \fi%
}
\thud@defentry{chair}
Luker's avatar
Luker committed
\thud@defentry[phd,long]{contacts}
Luker's avatar
Luker committed
\thud@defentry{cosupervisor}
Luker's avatar
Luker committed
\thud@defentry[nonempty]{course}
\thud@defentry[phd]{email}
\thud@defentry[phd]{homepage}
\thud@defentry[phd]{phdnumber}
\thud@defentry[phd]{reviewer}
\thud@defentry[phd,long]{rights}
Luker's avatar
Luker committed
\thud@defentry{supervisor}
Luker's avatar
Luker committed
\thud@defentry[phd]{telephone}
\thud@defentry[phd]{cycle}
Luker's avatar
Luker committed
\thud@defentry{tutor}

Luker's avatar
Luker committed
\newsavebox\thud@tmpbox
\def\thud@showentry@#1#2{%
Luker's avatar
Luker committed
    \expandafter\ifx\csname thud@#2\endcsname\@empty\else%
        \def\thud@varname{\@nameuse{#2name}}%
        #1%% Either \iftrue or \iffalse
Luker's avatar
Luker committed
            \def\and{\\[\thud@se@and]\gdef\thud@varname{\@nameuse{#2sname}}}%
Luker's avatar
Luker committed
        \else%
            \let\and\@undefined
        \fi%
        \begin{lrbox}{\thud@tmpbox}\parbox[t]{\linewidth}{\@nameuse{thud@#2}}\end{lrbox}%
Luker's avatar
Luker committed
        \textsc{\thud@varname}\\[\thud@se@qual]%
        \usebox{\thud@tmpbox}\\[\thud@se@sep]\null%
Luker's avatar
Luker committed
    \fi%
}
Luker's avatar
Luker committed
\def\thud@showentry{\@ifstar{\expandafter\thud@showentry@\noexpand\iffalse}{\expandafter\thud@showentry@\noexpand\iftrue}}
Luker's avatar
Luker committed

Luker's avatar
Luker committed
\input{\ifthud@beamer beamer\else book\fi.thud.tex}