vutinfth.dtx 72 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932
  1. % \iffalse meta-comment
  2. %
  3. %% vutinfth.dtx
  4. %% Copyright (C) 2014-2020 by Thomas Auzinger <thomas@auzinger.name>
  5. %
  6. % This work may be distributed and/or modified under the
  7. % conditions of the LaTeX Project Public License, either version 1.3
  8. % of this license or (at your option) any later version.
  9. % The latest version of this license is in
  10. % http://www.latex-project.org/lppl.txt
  11. % and version 1.3 or later is part of all distributions of LaTeX
  12. % version 2005/12/01 or later.
  13. %
  14. % This work has the LPPL maintenance status `maintained'.
  15. %
  16. % The Current Maintainer of this work is Thomas Auzinger.
  17. %
  18. % This work consists of the files vutinfth.dtx and vutinfth.ins
  19. % and the derived file vutinfth.cls.
  20. % This work also consists of the file intro.tex.
  21. %
  22. % \fi
  23. %
  24. % \iffalse
  25. %<*driver>
  26. \ProvidesFile{vutinfth.dtx}
  27. %</driver>
  28. %<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
  29. %<class>\ProvidesClass{vutinfth}
  30. %<*class>
  31. [2020/02/20 v1.10 TU Wien Faculty of Informatics thesis template]
  32. %</class>
  33. %
  34. %<*driver>
  35. \documentclass{ltxdoc}
  36. \usepackage[parfill]{parskip}
  37. \usepackage{multirow}
  38. \usepackage{booktabs}
  39. \usepackage[columns=1,totoc=true]{idxlayout}
  40. \usepackage{hypdoc}
  41. \EnableCrossrefs
  42. \CodelineIndex
  43. \RecordChanges
  44. \begin{document}
  45. \DocInput{vutinfth.dtx}
  46. \PrintChanges
  47. \PrintIndex
  48. \end{document}
  49. %</driver>
  50. % \fi
  51. %
  52. % \CheckSum{0}
  53. %
  54. % \CharacterTable
  55. % {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
  56. % 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
  57. % Digits \0\1\2\3\4\5\6\7\8\9
  58. % Exclamation \! Double quote \" Hash (number) \#
  59. % Dollar \$ Percent \% Ampersand \&
  60. % Acute accent \' Left paren \( Right paren \)
  61. % Asterisk \* Plus \+ Comma \,
  62. % Minus \- Point \. Solidus \/
  63. % Colon \: Semicolon \; Less than \<
  64. % Equals \= Greater than \> Question mark \?
  65. % Commercial at \@ Left bracket \[ Backslash \\
  66. % Right bracket \] Circumflex \^ Underscore \_
  67. % Grave accent \` Left brace \{ Vertical bar \|
  68. % Right brace \} Tilde \~}
  69. %
  70. % \newcommand{\issue}[1]{\href{https://gitlab.com/ThomasAUZINGER/vutinfth/issues/#1}{Issue \#{}#1}}
  71. %
  72. % \changes{v0.9}{2014/05/30}{Pre-release version}
  73. % \changes{v1.0}{2014/09/07}{Initial release version}
  74. % \changes{v1.1}{2014/10/07}{Added references to the GitLab environment}
  75. % \changes{v1.3}{2014/11/25}{Added support for a dissertation at the Vienna Phd School of Informatics. \issue{4}}
  76. % \changes{v1.4}{2015/08/01}{Added comma to separate posttitle and changed mainmatter pagestyle to `Ruled'.}
  77. % \changes{v1.5}{2016/01/17}{Updated name of university to `TU Wien'.}
  78. % \changes{v1.6}{2016/11/12}{Enabled second advisor for dissertations.}
  79. % \changes{v1.8}{2019/02/13}{Removed address information.}
  80. % \changes{v1.9}{2019/11/11}{Changed header graphics and unversity URL.}
  81. %
  82. % \GetFileInfo{vutinfth.dtx}
  83. %
  84. % ^^A\DoNotIndex{\DeclareOption,\LoadClass,\PassOptionsToClass,\ProcessOptions,\RequirePackage}
  85. % ^^A\DoNotIndex{\f@family}
  86. % ^^A\DoNotIndex{\newcommand,\newenvironment,\edef,\let,\renewcommand,\renewenvironment,\set,\xdef}
  87. % ^^A\DoNotIndex{\begin,\begingroup,\end,\endgroup}
  88. % ^^A\DoNotIndex{\@empty,\@namedef,\@namelet,\@nameuse,\csname,\endcsname}
  89. % ^^A\DoNotIndex{\",\\}
  90. % ^^A\DoNotIndex{\else,\fi,\ifcsempty,\ifcsstring,\ifdefstrequal,\ifdefstring,\ifdraftdoc,\ifstrempty,\ifstrequal,\ifundef}
  91. % ^^A\DoNotIndex{\baselineskip,\bfseries,\bigskip,\centering,\chapter,\chapterstyle,\cleardoublepage,\displaydate,\expandafter,\fontsize,\footruleskip,\global,\graphicspath,\hfill,\hspace,\includegraphics,\languagename,\makeevenfoot,\makeevenhead,\makefootrule,\makeheadposition,\makeoddfoot,\makeoddhead,\makepagestyle,\makerunningwidth,\newdata,\newgeometry,\newlength,\pagestyle,\par,\parindent,\parskip,\raisebox,\relax,\restoregeometry,\rule,\selectfont,\selectlanguage,\setkeys,\setlength,\sfdefault,\sffamily,\smallskip,\space,\ss,\string,\textwidth,\thispagestyle,\vfill,\vspace}
  92. %
  93. % \newcommand{\ispoly}{\textsuperscript{P}}
  94. %
  95. % \title{The \textsf{vutinfth} class\thanks{This document
  96. % corresponds to \textsf{vutinfth}~\fileversion, dated \filedate.}}
  97. % \author{Thomas Auzinger \\ \texttt{thomas@auzinger.name}}
  98. %
  99. % \maketitle
  100. %
  101. % \begin{abstract}
  102. % This class provides a \LaTeXe\ template for theses at the Faculty of Informatics at the TU Wien.
  103. % In the current version, bachelor and master theses as well as dissertations are supported in both English and German.
  104. % \end{abstract}
  105. %
  106. % \clearpage
  107. % \tableofcontents
  108. % \clearpage
  109. %
  110. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  111. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  112. % \section{Introduction}
  113. %
  114. % This class provides a \LaTeXe\ template for all theses at the Faculty of Informations at the TU Wien.
  115. % Further information on the document class and accompanying support can be found at \url{https://gitlab.com/ThomasAUZINGER/vutinfth}.
  116. % Further guidelines may apply to both the format and structure of certain theses.
  117. % These can be found at \url{https://informatics.tuwien.ac.at/study-services}.
  118. % Thesis authors are advised to consult Section~\ref{sec:user} for a documentation of all relevant commands.
  119. % Information for class developers is provided in Section~\ref{sec:class}.
  120. %
  121. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  122. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  123. % \section{Known Issues}
  124. %
  125. % This class is incompatible with the |minitoc| package as of version 60, due to the incompatibility of the underlying |memoir| class.
  126. % Use the |titletoc| package as a replacement.
  127. %
  128. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  129. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  130. % \section{Usage for Document Authors}
  131. % \label{sec:user}
  132. %
  133. % This section contains relevant information for authors of theses that are based on the |vutinfth| document class.
  134. %
  135. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  136. % \subsection{Data}
  137. % \label{sec:user:data}
  138. %
  139. % To allow the generation of the title pages, signature fields, statements, etc., several pieces of information have to be set by the author using the commands in the subsequent sections.
  140. % We discern several categories of data: \textit{(i)} textual data, which is given by a simple text string, \textit{(ii)} persons, which are defined by their names, optional titles, and their gender, as well as, \textit{(iii)} dates and \textit{(iv)} list data, which allow the selection of one argument from a list of permissible arguments.
  141. % Several commands have polylingual capabilities and support different languages (see Section~\ref{sec:user:data:polylingual}). A superscript P, i.e., |\command|\ispoly, indicates such a command.
  142. %
  143. % \subsubsection{Textual Data}
  144. % \label{sec:user:data:text}
  145. %
  146. % ^^A\DescribeMacro{\setaddress}
  147. % \DescribeMacro{\setregnumber}
  148. % \DescribeMacro{\settitle}
  149. % \DescribeMacro{\setsubtitle}
  150. % \DescribeMacro{\setcurriculum}
  151. % \DescribeMacro{\setfirstreviewerdata}
  152. % \DescribeMacro{\setsecondreviewerdata}
  153. % All commands in this section are called with one mandatory argument, e.g., as |\command|\marg{text}, where \meta{text} defines the content of the commands. For polylingual commands, given by |\command|\ispoly, one \meta{text} argument has to supplied for each language (see Section~\ref{sec:user:data:polylingual}). The following textual data can be set:
  154. % \begin{center}
  155. % \begin{tabular}{lllc}
  156. % \toprule
  157. % Command & Role & Type & Optional\\
  158. % \midrule
  159. % ^^A|\setaddress| & Address of the author & All & No \\
  160. % |\setregnumber| & Registration number of the author & All & No \\
  161. % |\settitle|\ispoly & Title of the thesis & All & No \\
  162. % |\setsubtitle|\ispoly & Subtitle of the thesis & All & Yes \\
  163. % |\setcurriculum|\ispoly & Name of the curriculum & B, M & No \\
  164. % \midrule
  165. % \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\
  166. % \bottomrule
  167. % \end{tabular}
  168. % \end{center}
  169. %
  170. % \begin{center}
  171. % \begin{tabular}{lllc}
  172. % \toprule
  173. % Command & Role & Type & Optional\\
  174. % \midrule
  175. % |\setfirstreviewerdata| & Affiliation and country & P & No \\
  176. % & of first reviewer & & \\
  177. % |\setsecondreviewerdata| & Affiliation and country & P & No \\
  178. % & of second reviewer & & \\
  179. % \midrule
  180. % \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\
  181. % \bottomrule
  182. % \end{tabular}
  183. % \end{center}
  184. %
  185. % \subsubsection{Persons}
  186. % \label{sec:user:data:person}
  187. %
  188. % \DescribeMacro{\setauthor}
  189. % \DescribeMacro{\setadvisor}
  190. % \DescribeMacro{\setsecondadvisor}
  191. % \DescribeMacro{\setfirstassistant}
  192. % \DescribeMacro{\setsecondassistant}
  193. % \DescribeMacro{\setthirdassistant}
  194. % \DescribeMacro{\setfirstreviewer}
  195. % \DescribeMacro{\setsecondreviewer}
  196. % All commands in this section are called with four mandatory arguments, e.g., as |\command|\marg{pretitle}\marg{name}\marg{posttitle}\marg{gender}, where \meta{name} defines both the first name(s) and family name(s) of the person. A title that is placed before the name is assigned with \meta{pretitle}, while a trailing title is given with \meta{posttitle}. Both \meta{pretitle} and \meta{posttitle} can be left empty, to indicate an absence of such a title; the insertion of appropriate glue between titles and names is handled by the |vutinfth| class. The declaration of the persons gender via \meta{gender} allows the use of gender-specific terms in languages that support them, e.g., German. The possible options for \meta{gender} are |male| and |female| (see Section~\ref{sec:user:data:list}). The following persons can be set:
  197. % \begin{center}
  198. % \begin{tabular}{lllc}
  199. % \toprule
  200. % Command & Role & Type & Optional\\
  201. % \midrule
  202. % |\setauthor| & Author of the thesis & All & No \\
  203. % |\setadvisor| & Main advisor of the thesis & All & No \\
  204. % |\setsecondadvisor| & Second advisor of the thesis & D, P & Yes \\
  205. % |\setfirstassistant| & First advising assistant & B, M & Yes \\
  206. % |\setsecondassistant| & Second advising assistant & B, M & Yes \\
  207. % |\setthirdassistant| & Third advising assistant & B, M & Yes \\
  208. % |\setfirstreviewer| & First thesis reviewer & D, P & No \\
  209. % |\setsecondreviewer| & Second thesis reviewer & D, P & No \\
  210. % \midrule
  211. % \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\
  212. % \bottomrule
  213. % \end{tabular}
  214. % \end{center}
  215. %
  216. % \subsubsection{Dates}
  217. %
  218. % \DescribeMacro{\setdate}
  219. % All commands in this section are called with three madatory arguments, e.g., as |\command|\marg{day}\marg{month}\marg{year}. The syntax is identical to the last three arguments of the |\newdate| command of the |datetime| package, from which these commands derive. The following dates can be set:
  220. % \begin{center}
  221. % \begin{tabular}{lllc}
  222. % \toprule
  223. % Command & Role & Type & Optional\\
  224. % \midrule
  225. % |\setdate| & Signing date & All & No \\
  226. % \midrule
  227. % \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\
  228. % \bottomrule
  229. % \end{tabular}
  230. % \end{center}
  231. %
  232. % \subsubsection{List Data}
  233. % \label{sec:user:data:list}
  234. %
  235. % All commands in this section are called with at least one madatory argument called \meta{list}, e.g., as |\command|\dots\marg{list}\dots, where \meta{list} is given one element from a set of possible arguments.
  236. %
  237. % \DescribeMacro{\setauthor}
  238. % \DescribeMacro{\setadvisor}
  239. % \marginpar{\strut\hfill$\cdots$}
  240. % When setting a person, the person's gender is specified with a list argument (see Section~\ref{sec:user:data:person}):
  241. % \begin{center}
  242. % \begin{tabular}{lllc}
  243. % \toprule
  244. % Command & Options & Description\\
  245. % \midrule
  246. % |\command|\marg{.}\marg{.}\marg{.}\marg{list} & |male| & Specifies a male person. \\
  247. % & |female| & Specifies a female person. \\
  248. % \bottomrule
  249. % \end{tabular}
  250. % \end{center}
  251. %
  252. % No pronouns are generated based on the gender choice and it should be chosen in a way to reflect the preferred use of nouns (e.g., Autor or Autorin in German).
  253. %
  254. % \DescribeMacro{\setthesis}
  255. % The thesis type is selected from one of the fundamental types:
  256. % \begin{center}
  257. % \begin{tabular}{lllc}
  258. % \toprule
  259. % Command & Options & Description\\
  260. % \midrule
  261. % |\setthesis|\marg{list} & |bachelor| & Specifies a bachelor's thesis. \\
  262. % & |master| & Specifies a master's thesis. \\
  263. % & |doctor| & Specifies a dissertation. \\
  264. % & |phd-school| & Specifies a disseration at the Vienna \\
  265. % & & PhD school of Informatics. \\
  266. % \bottomrule
  267. % \end{tabular}
  268. % \end{center}
  269. %
  270. % \DescribeMacro{\setmasterdegree}
  271. % With a master's curriculum, different degrees can be achieved and the appropriate type has to be chosen based on the curriculum that the author is enroled in:
  272. % \begin{center}
  273. % \begin{tabular}{lllc}
  274. % \toprule
  275. % Command & Options & Description\\
  276. % \midrule
  277. % |\setmasterdegree|\marg{list} & |dipl.| & Specifies the degree \\
  278. % & & \hspace{1ex}`Diplom-Ingenieur(in)'. \\
  279. % & |master| & Specifies the degree \\
  280. % & & \hspace{1ex}`Master of Science'. \\
  281. % & |rer.nat.| & Specifies the degree \\
  282. % & & \hspace{1ex}`Magist(er/ra) der Natur- \\
  283. % & & \hspace{1ex}wissenschaften'. \\
  284. % & |rer.soc.oec.| & Specifies the degree \\
  285. % & & \hspace{1ex}`Magist(er/ra) der Sozial- und \\
  286. % & & \hspace{1ex}Wirtschaftswissenschaften'. \\
  287. % \bottomrule
  288. % \end{tabular}
  289. % \end{center}
  290. %
  291. % \DescribeMacro{\setdoctordegree}
  292. % With a doctorate study, different degrees can be achieved and the appropriate type has to be chosen based on the program that the author is enroled in:
  293. % \begin{center}
  294. % \begin{tabular}{lllc}
  295. % \toprule
  296. % Command & Options & Description\\
  297. % \midrule
  298. % |\setdoctordegree|\marg{list} & |techn.| & Specifies the degree \\
  299. % & & \hspace{1ex}`Doktor(in) der Technischen' \\
  300. % & & \hspace{1ex}Wissenschaften'. \\
  301. % & |rer.nat.| & Specifies the degree \\
  302. % & & \hspace{1ex}`Doktor(in) der Natur- \\
  303. % & & \hspace{1ex}wissenschaften'. \\
  304. % & |rer.soc.oec.| & Specifies the degree \\
  305. % & & \hspace{1ex}`Doktor(in) der Sozial- und \\
  306. % & & \hspace{1ex}Wirtschaftswissenschaften'. \\
  307. % \bottomrule
  308. % \end{tabular}
  309. % \end{center}
  310. %
  311. % \subsubsection{Polylingual Data}
  312. % \label{sec:user:data:polylingual}
  313. %
  314. % \DescribeMacro{\setcurriculum}
  315. % Used as |\setcurriculum|\marg{english}\marg{german}, it sets the name of the curriculum that the student is enroled in.
  316. % The name can be given in English, with \meta{english}, and in German, with \meta{german}.
  317. % Note that the curriculum name does not need to be supplied for all thesis types, since, e.g., doctoral studies do not have a curriculum per se.
  318. % If a title page of one of the languages is not used, the corresponding argument can be left empty.
  319. %
  320. % \DescribeMacro{\settitle}
  321. % Used as |\settitle|\marg{english}\marg{german}, it sets the title of the thesis.
  322. % The title can be given both in an English version, with \meta{english}, and in a German version, with \meta{german}.
  323. % For title pages in a given language, the corresponding title will be used.
  324. % Unused languages can be supplied as empty brackets and it is possible to use the English or German title for both language versions.
  325. %
  326. % \DescribeMacro{\setsubtitle}
  327. % Used as |\setsubtitle|\marg{english}\marg{german}, it sets the subtitle of the thesis.
  328. % The same specifications as for |\settitle| apply.
  329. %
  330. % \DescribeMacro{\addtitlepage}
  331. % The titlepage can be generated in the following languages (see Section~\ref{sec:user:layout}):
  332. % \begin{center}
  333. % \begin{tabular}{lllc}
  334. % \toprule
  335. % Command & Options & Description\\
  336. % \midrule
  337. % |\addtitlepage|\marg{list} & |english| & Generates an English title page. \\
  338. % & |naustrian| & Generates a German title page. \\
  339. % \bottomrule
  340. % \end{tabular}
  341. % \end{center}
  342. % Note that a non-English title page is not available for a dissertation at the Vienna PhD School of Informatics.
  343. %
  344. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  345. % \subsection{Layout}
  346. % \label{sec:user:layout}
  347. %
  348. % Most of the data that is supplied with the commands of the previous sections is used to generate the front matter of the thesis.
  349. % It consists of obligatory items such as the title page(s) and the statement of originality as well as optional items such as the acknowledgements or the abstract in different languages.
  350. % In the remainder of this section, the available items of the front matter are given.
  351. %
  352. % \DescribeMacro{\addtitlepage}
  353. % Used as |\addtitlepage|\marg{lang}, where \meta{lang} is the name of a language as given in the |babel| package (see Section~\ref{sec:user:data:list}). The necessary pieces of information have to be set beforehand (as described in Section~\ref{sec:user:data}). This command is usually used directly after |\begin{document}\frontmatter|.
  354. %
  355. % \DescribeMacro{\addstatementpage}
  356. % Used as |\addstatementpage|, it generates a page with the statement of originality.
  357. %
  358. % \DescribeEnv{acknowledgements}
  359. % \DescribeEnv{acknowledgements*}
  360. % Used as |\begin{acknowledgements}|\meta{text}|\end{acknowledgements}|, this environment generates a chapter with the English acknowledgements. Use the starred version, i.e., |acknowledgements*|, to remove the table of content entry of this environment.
  361. %
  362. % \DescribeEnv{danksagung}
  363. % \DescribeEnv{danksagung*}
  364. % Used as |\begin{danksagung}|\meta{text}|\end{danksagung}|, this environment generates a chapter with the German acknowledgements. Use the starred version, i.e., |danksagung*|, to remove the table of content entry of this environment.
  365. %
  366. % \DescribeEnv{abstract}
  367. % \DescribeEnv{abstract*}
  368. % Used as |\begin{abstract}|\meta{text}|\end{abstract}|, this environment generates a chapter with the English abstract. Use the starred version, i.e., |abstract*|, to remove the table of content entry of this environment.
  369. %
  370. % \DescribeEnv{kurzfassung}
  371. % \DescribeEnv{kurzfassung*}
  372. % Used as |\begin{kurzfassung}|\meta{text}|\end{kurzfassung}|, this environment generates a chapter with the German abstract. Use the starred version, i.e., |kurzfassung*|, to remove the table of content entry of this environment.
  373. %
  374. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  375. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  376. % \section{Usage for Class Writers}
  377. % \label{sec:class}
  378. %
  379. % To accomodate shifting requirements, the |vutinfth| class provides various convenience functions that allow the modification and extension of its functionality.
  380. %
  381. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  382. % \subsection{Data}
  383. %
  384. % To compose several parts of the thesis layout, input from the thesis author is required.
  385. % For the |vutinfth| class, this is realized by the commands provided in Section~\ref{sec:user:data}.
  386. % Additional data can be defined with the the commands in the remainder of this section.
  387. %
  388. % \DescribeMacro{\CreateData}
  389. % Used as |\CreateData|\marg{name}, it generates a command |\set|\meta{name}.
  390. % Used as |\set|\meta{name}\marg{string}, the newly created command assigns the value \meta{string} to the internal variable |\vutinfth@data@|\meta{name}.
  391. % The variable is initialized with an error value to alert the user of the fact that \meta{string} was not supplied via the |\set|\meta{name} command.
  392. % Furthermore, a command |\vutinfth@data@|\meta{name}|@def| is created, to increase source code readability when verifying the existence of a specific data item.
  393. % See Section~\ref{sec:impl:data:declarations} for examples.
  394. %
  395. % \DescribeMacro{\CreatePerson}
  396. % Used as |\CreatePerson|\marg{name}, it generates a command |\set|\meta{name}.
  397. % Used as |\set|\meta{name}\marg{pretitle}\marg{personname}\marg{posttitle}\marg{gender}, the newly created command assigns the supplied values to the corresponding internal variables |\vutinfth@person@|\meta{name}|@|\textellipsis as given in the table below.
  398. % \begin{center}
  399. % \begin{tabular}{lllc}
  400. % \toprule
  401. % Argument & Internal Variable\\
  402. % \midrule
  403. % & |\vutinfth@person@|\meta{name}|@def| \\
  404. % \meta{pretitle} & |\vutinfth@person@|\meta{name}|@pretitle| \\
  405. % \meta{personname} & |\vutinfth@person@|\meta{name}|@name| \\
  406. % \meta{posttitle} & |\vutinfth@person@|\meta{name}|@posttitle| \\
  407. % \meta{gender} & |\vutinfth@person@|\meta{name}|@gender| \\
  408. % \bottomrule
  409. % \end{tabular}
  410. % \end{center}
  411. % The command |\vutinfth@person@|\meta{name}|@def| is created to increase source code readability when verifying the existence of a specific person.
  412. % Furthermore, the command |\vutinfth@person@|\meta{name}|@fullname| returns the person's name together with existing titles and correct whitespace in between.
  413. % The person's gender is either |\vutinfth@person@male| or |\vutinfth@person@female|, depending on the input.
  414. % See Section~\ref{sec:impl:data:declarations} for examples.
  415. %
  416. % \DescribeMacro{\AddLanguage}
  417. % Used as |\AddLanguage|\marg{lang}, it enables the language \meta{lang} to by used by polylingual expressions.
  418. % \meta{lang} has to be chosed from the languages of the |babel| package that is used by this class.
  419. % Currently, |vutinfth| uses two languages, i.e., |english| for English expressions and |naustrian| for German expressions.
  420. %
  421. % \DescribeMacro{\CreatePolylingual}
  422. % Used as |\CreatePolylingual|\oarg{expressions}\marg{name}, it generates a command |\vutinfth@polylingual@|\meta{name} that selects the approriate expression based on the current language at the time of use.
  423. % The argument \meta{expressions} is a list of elements of the form \meta{expr$_i$}, where each element defines the expression for a valid language, e.g., \meta{lang$_i$}=\meta{text$_i$}.
  424. % \meta{lang$_i$} has to be chosen from the languages that were defined via |\AddLanguage|.
  425. % As a convention, text that needs to start with an uppercase letter is assigned to a name that starts with an uppercase letter.
  426. % The same holds for uppercase words, e.g.,\\
  427. % |\CreatePolylingual[english=advisor,naustrian=Betreuer]{advisor}|\\
  428. % |\CreatePolylingual[english=Advisor,naustrian=Betreuer]{Advisor}|\\
  429. % |\CreatePolylingual[english=ADVISOR,naustrian=BETREUER]{ADVISOR}|.\\
  430. % See Section~\ref{sec:impl:data:declarations} for examples.
  431. %
  432. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  433. % \subsection{Layout}
  434. %
  435. % Several key elements in the layout of the frontmatter are encapsulated to allow a convenient extension of this functionality.
  436. %
  437. % \DescribeMacro{\SignatureFields}
  438. % Used as |\SignatureFields|\oarg{mode}\marg{center}\marg{right}, it creates a place and date description and/or one or two signature fields.
  439. % \meta{mode} can be set to |y|, which adds an entry with date and place to the left, to |h|, which adds the corresponding whitespace, or to |n|, which adds nothing.
  440. % If text is supplied to \meta{center}, it is added below a rule, right to the possible date and place entry.
  441. % If text is supplied to \meta{right}, it is added below a rule, right to the possible signature field created by \meta{center}.
  442. % This command ensures a uniform width and positioning of the signature fields on both the title pages and the statement of originality.
  443. %
  444. % \DescribeMacro{\SignatureBlock}
  445. % Used as |\SignatureBlock|, it generates the signature fields for both author and advisor.
  446. %
  447. % \DescribeMacro{\ReviewerBlock}
  448. % Used as |\ReviewerBlock|, it generates the signature fields for both reviewers.
  449. %
  450. % \DescribeMacro{\AdvisorBlock}
  451. % Used as |\AdvisorBlock|, it generates the name fields for both the advisor and the potential assistants.
  452. %
  453. % \DescribeMacro{\AddTitlePage}
  454. % Used as |\AddTitlePage|, it generates a title page in the current language.
  455. % This command contains the placement of the header graphics, the footer, the appropriate blocks, etc.
  456. %
  457. % \DescribeMacro{\AddStatementPage}
  458. % Used as |\AddStatementPage|, it generates a chapter with the statement of originality together with the author's signature field.
  459. %
  460. % \DescribeEnv{SFFont}
  461. % Alters the sans serif font inside the environment. Called with one mandatory argument as |\begin{SFFont}|\marg{family}, which determines the sans serif font family that should be used, e.g., |phv| for Helvetica.
  462. %
  463. % \StopEventually{}
  464. %
  465. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  466. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  467. % \section{Implementation}
  468. %
  469. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  470. % \subsection{Initialization}
  471. %
  472. % \subsubsection{Class Options}
  473. %
  474. % Pass the options to the underlying memoir class.
  475. %
  476. % \begin{macrocode}
  477. \DeclareOption*{%
  478. \PassOptionsToClass{\CurrentOption}{memoir}%
  479. }%
  480. \ProcessOptions\relax
  481. % \end{macrocode}
  482. %
  483. % \subsubsection{Loaded Class and Packages}
  484. %
  485. % The |vutinfth| class is based on the |memoir| class.
  486. % \begin{macrocode}
  487. \LoadClass[a4paper,11pt]{memoir}%
  488. \chapterstyle{veelo}%
  489. % \end{macrocode}
  490. % The following packages are required for the functionality and style of the document class.
  491. % \begin{macrocode}
  492. \RequirePackage[scaled]{helvet}%
  493. \RequirePackage{lmodern}%
  494. \RequirePackage{courier}%
  495. \RequirePackage[T1]{fontenc}%
  496. \RequirePackage[english,naustrian]{babel}%
  497. \RequirePackage[nodayofweek]{datetime}%
  498. \RequirePackage{geometry}%
  499. \RequirePackage{calc}%
  500. \RequirePackage{etoolbox}%
  501. \RequirePackage{graphicx}%
  502. \graphicspath{{graphics/}}%
  503. % \end{macrocode}
  504. %
  505. % \subsubsection{Low-Level Functionality}
  506. %
  507. % This section provides low-level functionality for macro definitions and macro expansions.
  508. %
  509. % \begin{macro}{\@namexdef}
  510. % Globally defines a control sequence with an expanded argument.
  511. % \begin{macrocode}
  512. \newcommand{\@namexdef}[1]{\expandafter\xdef\csname#1\endcsname}%
  513. % \end{macrocode}
  514. % \end{macro}
  515. %
  516. % \begin{macro}{\ifestrequal}
  517. % A variant of |\ifstrequal| that fully expands the first two arguments.
  518. % \begin{macrocode}
  519. \newcommand{\ifestrequal}[4]{%
  520. \begingroup
  521. \edef\vutinfth@tempa{{#1}}%
  522. \edef\vutinfth@tempb{{#2}}%
  523. \expandafter\expandafter\expandafter\ifstrequal
  524. \expandafter\vutinfth@tempa\vutinfth@tempb{#3}{#4}%
  525. \endgroup
  526. }%
  527. % \end{macrocode}
  528. % \end{macro}
  529. %
  530. % \subsubsection{Fonts}
  531. %
  532. % \begin{macro}{\vutinfth@HUGE}
  533. % \begin{macro}{\vutinfth@huge}
  534. % \begin{macro}{\vutinfth@LARGE}
  535. % \begin{macro}{\vutinfth@Large}
  536. % \begin{macro}{\vutinfth@large}
  537. % \begin{macro}{\vutinfth@normalsize}
  538. % Initializes the font sizes.
  539. % \begin{macrocode}
  540. \newcommand{\vutinfth@HUGE}{\fontsize{30}{34}\selectfont}%
  541. \newcommand{\vutinfth@huge}{\fontsize{20}{23}\selectfont}%
  542. \newcommand{\vutinfth@LARGE}{\fontsize{17}{22}\selectfont}%
  543. \newcommand{\vutinfth@Large}{\fontsize{14}{18}\selectfont}%
  544. \newcommand{\vutinfth@large}{\fontsize{12}{14.5}\selectfont}%
  545. \newcommand{\vutinfth@normalsize}{\fontsize{11}{13.6}\selectfont}%
  546. % \end{macrocode}
  547. % \end{macro}
  548. % \end{macro}
  549. % \end{macro}
  550. % \end{macro}
  551. % \end{macro}
  552. % \end{macro}
  553. %
  554. % \begin{environment}{SFFont}
  555. % Selects the given font family as sans serif font.
  556. % \begin{macrocode}
  557. \newenvironment{SFFont}[1]{%
  558. % \end{macrocode}
  559. % Stores the current sans serif font in |\vutinfth@f@family@tmp| and changes to the given sans serif font.
  560. % \begin{macrocode}
  561. \begingroup
  562. \sffamily
  563. \global\let\vutinfth@f@family@tmp=\f@family
  564. \endgroup
  565. \renewcommand{\sfdefault}{#1}%
  566. % \end{macrocode}
  567. % In case the outer scope is already sans serif, the new font has to be activated.
  568. % \begin{macrocode}
  569. \ifdefstrequal{\f@family}{\vutinfth@f@family@tmp}{\sffamily}{}%
  570. }{%
  571. % \end{macrocode}
  572. % The scope of the font change is the environment itself. Thus, no cleanup code is required in case the outer scope was already sans serif.
  573. % \begin{macrocode}
  574. \renewcommand{\sfdefault}{\vutinfth@f@family@tmp}%
  575. }%
  576. % \end{macrocode}
  577. % \end{environment}
  578. %
  579. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  580. % \subsection{Data}
  581. %
  582. % \subsubsection{Dates}
  583. %
  584. % \begin{macro}{\setdate}
  585. % Creates the internal storage for the signing date.
  586. % \begin{macrocode}
  587. \newcommand{\setdate}[3]{%
  588. \newdate{vutinfth@date@signing}{#1}{#2}{#3}%
  589. }%
  590. % \end{macrocode}
  591. % \end{macro}
  592. %
  593. % \subsubsection{Textual Data}
  594. %
  595. % \begin{macro}{\vutinfth@def@data}
  596. % Creates the internal storage for simple data entries.
  597. % \begin{macrocode}
  598. \newcommand{\vutinfth@def@data}[2]{%
  599. \@namedef{vutinfth@data@#1@def}{}%
  600. \@namedef{vutinfth@data@#1}{#2}%
  601. }%
  602. % \end{macrocode}
  603. % \end{macro}
  604. %
  605. % \begin{macro}{\vutinfth@def@data@invalid}
  606. % Initializes the internal storage with error messages.
  607. % \begin{macrocode}
  608. \newcommand{\vutinfth@def@data@invalid}[2]{%
  609. \@namedef{vutinfth@data@#1@error}{%
  610. \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}%
  611. }%
  612. \@namedef{vutinfth@data@#1}{\@nameuse{vutinfth@data@#1@error}}%
  613. }%
  614. % \end{macrocode}
  615. % \end{macro}
  616. %
  617. % \begin{macro}{\CreateData}
  618. % Issues the construction of a setter function for a |data| entry given by |\setdata|.
  619. % \begin{macrocode}
  620. \newcommand{\CreateData}[1]{%
  621. \@namedef{set#1}##1{%
  622. \vutinfth@def@data{#1}{##1}%
  623. }%
  624. \vutinfth@def@data@invalid{#1}{\string\set#1}%
  625. }%
  626. % \end{macrocode}
  627. % \end{macro}
  628. %
  629. % \subsubsection{Persons}
  630. %
  631. % \begin{macro}{\vutinfth@person@male}
  632. % \begin{macro}{\vutinfth@person@female}
  633. % Two genders are differentiated for each person: |male| and |female|.
  634. % \begin{macrocode}
  635. \newcommand{\vutinfth@person@male}{male}%
  636. \newcommand{\vutinfth@person@female}{female}%
  637. % \end{macrocode}
  638. % \end{macro}
  639. % \end{macro}
  640. %
  641. % \begin{macro}{\ifmale}
  642. % \begin{macro}{\iffemale}
  643. % Convenience macros to determine the gender of a person.
  644. % \begin{macrocode}
  645. \newcommand{\ifmale}[2]{%
  646. \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@male}{#2}{}%
  647. }%
  648. \newcommand{\iffemale}[2]{%
  649. \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@female}{#2}{}%
  650. }%
  651. % \end{macrocode}
  652. % \end{macro}
  653. % \end{macro}
  654. %
  655. % \begin{macro}{\vutinfth@def@person}
  656. % \changes{v1.4}{2015/08/01}{Added comma to separate posttitle.}
  657. % Creates the internal storage for a person's name, titles and gender.
  658. % \begin{macrocode}
  659. \newcommand{\vutinfth@def@person}[5]{%
  660. \@namedef{vutinfth@person@#1@def}{}%
  661. \@namedef{vutinfth@person@#1@pretitle}{#2}%
  662. \@namedef{vutinfth@person@#1@name}{#3}%
  663. \@namedef{vutinfth@person@#1@posttitle}{#4}%
  664. \ifdefstring{\vutinfth@person@male}{#5}{%
  665. \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@male}%
  666. }{}%
  667. \ifdefstring{\vutinfth@person@female}{#5}{%
  668. \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@female}%
  669. }{}%
  670. % \end{macrocode}
  671. % For the full name, additional spaces have to be inserted depending on the presence of pre- or posttitles.
  672. % \begin{macrocode}
  673. \ifstrempty{#3}{%
  674. \ifstrempty{#2}{%
  675. \@namedef{vutinfth@person@#1@fullname}{#4}%
  676. }{%
  677. \ifstrempty{#4}{%
  678. \@namedef{vutinfth@person@#1@fullname}{#2}%
  679. }{%
  680. \@namedef{vutinfth@person@#1@fullname}{#2 #4}%
  681. }%
  682. }%
  683. }{%
  684. \ifstrempty{#2}{%
  685. \ifstrempty{#4}{%
  686. \@namedef{vutinfth@person@#1@fullname}{#3}%
  687. }{%
  688. \@namedef{vutinfth@person@#1@fullname}{#3, #4}%
  689. }%
  690. }{%
  691. \ifstrempty{#4}{%
  692. \@namedef{vutinfth@person@#1@fullname}{#2 #3}%
  693. }{%
  694. \@namedef{vutinfth@person@#1@fullname}{#2 #3, #4}%
  695. }%
  696. }%
  697. }%
  698. }%
  699. % \end{macrocode}
  700. % \end{macro}
  701. %
  702. % \begin{macro}{\vutinfth@def@person@invalid}
  703. % Initializes the internal storage with error messages.
  704. % \begin{macrocode}
  705. \newcommand{\vutinfth@def@person@invalid}[2]{%
  706. \@namedef{vutinfth@person@#1@error}{%
  707. \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}%
  708. }%
  709. \@namedef{vutinfth@person@#1@name}{%
  710. \@nameuse{vutinfth@person@#1@error}}%
  711. \@namedef{vutinfth@person@#1@pretitle}{%
  712. \@nameuse{vutinfth@person@#1@error}}%
  713. \@namedef{vutinfth@person@#1@posttitle}{%
  714. \@nameuse{vutinfth@person@#1@error}}%
  715. \@namedef{vutinfth@person@#1@gender}{%
  716. \@nameuse{vutinfth@person@#1@error}}%
  717. \@namedef{vutinfth@person@#1@fullname}{%
  718. \@nameuse{vutinfth@person@#1@error}}%
  719. }%
  720. % \end{macrocode}
  721. % \end{macro}
  722. %
  723. % \begin{macro}{\CreatePerson}
  724. % Issues the construction of a setter function for a |person| given by |\setperson|.
  725. % \begin{macrocode}
  726. \newcommand{\CreatePerson}[1]{%
  727. \@namedef{set#1}##1##2##3##4{%
  728. \vutinfth@def@person{#1}{##1}{##2}{##3}{##4}%
  729. }%
  730. \vutinfth@def@person@invalid{#1}{\string\set#1}%
  731. }%
  732. % \end{macrocode}
  733. % \end{macro}
  734. %
  735. % \subsubsection{Polylingual Text}
  736. %
  737. % This class supports bi- and polylingual text via a key-value mechanism. See the |\CreatePolylingual| command further down for the actual definition of polylingual expressions.
  738. %
  739. % \begin{macro}{\AddLanguage}
  740. % Constructs the temporary variables and the permanent storage for polylingual text in the given language.
  741. % \begin{macrocode}
  742. \newcommand{\AddLanguage}[1]{%
  743. % \end{macrocode}
  744. % First, the key for the current language, given by its name in the |babel| package, is created. Keys of the |keyval| package are internally stored as |KV@|family|@|keyname, where we use |vutinfth| as family name and the argument as key name. The value that is given to this key as part of a function argument is assigned to a temporary storage.
  745. % \begin{macrocode}
  746. \@namedef{KV@vutinfth@#1}##1{%
  747. \@namedef{vutinfth@current@#1}{##1}%
  748. }%
  749. % \end{macrocode}
  750. % The key value is initialized as empty.
  751. % \begin{macrocode}
  752. \@nameuse{KV@vutinfth@#1}{}%
  753. % \end{macrocode}
  754. % The transfer from temporary to permanent storage is achieved by adding code to the already existing transfer routine. This causes each new language to issue the transfer for the previously defined language.
  755. % \begin{macrocode}
  756. \ifundef{\vutinfth@allocate@polylingual}{%
  757. % \end{macrocode}
  758. % Define the transfer function, if it has not been defined so far.
  759. % \begin{macrocode}
  760. \newcommand{\vutinfth@allocate@polylingual}[1]{\@empty}%
  761. }{}%
  762. % \end{macrocode}
  763. % Store the current transfer function via |\let| to allow recursion.
  764. % \begin{macrocode}
  765. \@namelet{vutinfth@allocate@polylingual@#1}%
  766. \vutinfth@allocate@polylingual
  767. % \end{macrocode}
  768. % Define the transfer function to permanent storage.
  769. % \begin{macrocode}
  770. \renewcommand{\vutinfth@allocate@polylingual}[1]{%
  771. % \end{macrocode}
  772. % Call the transfer routine of the previously defined language.
  773. % \begin{macrocode}
  774. \@nameuse{vutinfth@allocate@polylingual@#1}{##1}%
  775. % \end{macrocode}
  776. % To define the permanent storage, |\@namexdef| is used the definition's scope has to be global.
  777. % \begin{macrocode}
  778. \@namexdef{vutinfth@##1@#1}{%
  779. \ifcsempty{vutinfth@current@#1}{%
  780. % \end{macrocode}
  781. % In draft mode we mark unassigned languages, i.e., polylingual expression that were not defined for a language that is in use when the polylingual expression is called.
  782. % \begin{macrocode}
  783. \ifdraftdoc{%
  784. [Draft: No `#1' text for polylingual `##1'.]%
  785. }\else{%
  786. \relax
  787. }\fi
  788. }{%
  789. % \end{macrocode}
  790. % The use of |\@namexdef| expands the content of the temporary storage before assigning it to the permanent one.
  791. % \begin{macrocode}
  792. \@nameuse{vutinfth@current@#1}%
  793. }%
  794. }%
  795. }%
  796. % \end{macrocode}
  797. % At time of usage, the language, which is given as an argument, is checked against the currently active language.
  798. % \begin{macrocode}
  799. \ifundef{\vutinfth@selectlanguage@polylingual}{%
  800. % \end{macrocode}
  801. % Define the language selection function, if it has not been defined so far.
  802. % \begin{macrocode}
  803. \newcommand{\vutinfth@selectlanguage@polylingual}[1]{\@empty}%
  804. }{}%
  805. % \end{macrocode}
  806. % Store the current selection function via |\let| to allow recursion.
  807. % \begin{macrocode}
  808. \@namelet{vutinfth@selectlanguage@polylingual@#1}%
  809. \vutinfth@selectlanguage@polylingual
  810. % \end{macrocode}
  811. % Define the selection function.
  812. % \begin{macrocode}
  813. \renewcommand{\vutinfth@selectlanguage@polylingual}[1]{%
  814. % \end{macrocode}
  815. % Call the selection routine of the previously defined language.
  816. % \begin{macrocode}
  817. \@nameuse{vutinfth@selectlanguage@polylingual@#1}{##1}%
  818. % \end{macrocode}
  819. % The currently active language is given by |\languagename|. If it matches the language, which was supplied as the argument, the content of the current permanent storage is returned.
  820. % \begin{macrocode}
  821. \ifdefstring{\languagename}{#1}{\@nameuse{vutinfth@##1@#1}}{}%
  822. }%
  823. }%
  824. % \end{macrocode}
  825. % \end{macro}
  826. %
  827. % \begin{macro}{\CreatePolylingual}
  828. % Creates the actual polylingual expressions.
  829. % \begin{macrocode}
  830. \newcommand{\CreatePolylingual}[2][]{%
  831. \begingroup
  832. % \end{macrocode}
  833. % The key-value pairs of the optional argument define the text that is returned for the respective languages. We use |vutinfth| as the family name for the keys.
  834. % \begin{macrocode}
  835. \setkeys{vutinfth}{#1}%
  836. % \end{macrocode}
  837. % Each key was already assigned a temporary storage, whose content has to be transfered to permanent storage.
  838. % \begin{macrocode}
  839. \vutinfth@allocate@polylingual{#2}%
  840. \endgroup
  841. % \end{macrocode}
  842. % The mandatory argument \marg{arg} is used to define the macro that returns the appropriate text for the currently active language.
  843. % \begin{macrocode}
  844. \@namedef{vutinfth@polylingual@#2}{%
  845. \vutinfth@selectlanguage@polylingual{#2}}%
  846. }%
  847. % \end{macrocode}
  848. % \end{macro}
  849. %
  850. % \subsubsection{Thesis Types}
  851. %
  852. % \begin{macro}{\vutinfth@thesis@basetype@undergraduate}
  853. % \begin{macro}{\vutinfth@thesis@basetype@graduate}
  854. % Two thesis categories are differentiated: |undergraduate| and |graduate|.
  855. % \begin{macrocode}
  856. \newcommand{\vutinfth@thesis@basetype@undergraduate}{%
  857. vutinfth@undergraduate}%
  858. \newcommand{\vutinfth@thesis@basetype@graduate}{%
  859. vutinfth@graduate}%
  860. % \end{macrocode}
  861. % \end{macro}
  862. % \end{macro}
  863. %
  864. % \begin{macro}{\ifundergraduate}
  865. % \begin{macro}{\ifgraduate}
  866. % Convenience macros to determine the category of the selected thesis type.
  867. % \begin{macrocode}
  868. \newcommand{\ifundergraduate}[1]{%
  869. \ifestrequal{\vutinfth@thesis@basetype}{%
  870. \vutinfth@thesis@basetype@undergraduate
  871. }{#1}{}%
  872. }%
  873. \newcommand{\ifgraduate}[1]{%
  874. \ifestrequal{\vutinfth@thesis@basetype}{%
  875. \vutinfth@thesis@basetype@graduate
  876. }{#1}{}%
  877. }%
  878. % \end{macrocode}
  879. % \end{macro}
  880. % \end{macro}
  881. %
  882. % \begin{macro}{\vutinfth@thesis@doctortype@doctor}
  883. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  884. % \begin{macro}{\vutinfth@thesis@doctortype@phd}
  885. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  886. % Two doctor thesis categories are differentiated: |doctor| and |phd|, where the latter is for dissertation in the context of the Vienna PhD School of Informatics.
  887. % \begin{macrocode}
  888. \newcommand{\vutinfth@thesis@doctortype@doctor}{%
  889. vutinfth@doctor}%
  890. \newcommand{\vutinfth@thesis@doctortype@phd}{%
  891. vutinfth@phd}%
  892. % \end{macrocode}
  893. % \end{macro}
  894. % \end{macro}
  895. %
  896. % \begin{macro}{\ifdoctor}
  897. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  898. % \begin{macro}{\ifphd}
  899. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  900. % Convenience macros to determine the category of the selected doctor thesis type. These need to be nested inside |\ifgraduate| conditions.
  901. % \begin{macrocode}
  902. \newcommand{\ifdoctor}[1]{%
  903. \ifestrequal{\vutinfth@thesis@doctortype}{%
  904. \vutinfth@thesis@doctortype@doctor
  905. }{#1}{}%
  906. }%
  907. \newcommand{\ifphd}[1]{%
  908. \ifestrequal{\vutinfth@thesis@doctortype}{%
  909. \vutinfth@thesis@doctortype@phd
  910. }{#1}{}%
  911. }%
  912. % \end{macrocode}
  913. % \end{macro}
  914. % \end{macro}
  915. %
  916. % \begin{macro}{\vutinfth@thesis@basetype}
  917. % \begin{macro}{\vutinfth@thesis@doctortype}
  918. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  919. % \begin{macro}{\vutinfth@thesis@thesisname}
  920. % \begin{macro}{\vutinfth@thesis@degreename}
  921. % Initialize the thesis category, the type and the specific degree with error messages.
  922. % \begin{macrocode}
  923. \newcommand{\vutinfth@thesis@basetype}{%
  924. \ClassError{vutinfth}{No \string\setthesis \space issued}{%
  925. Set thesis type with \string\setthesis.}%
  926. }%
  927. \newcommand{\vutinfth@thesis@doctortype}{%
  928. \ClassError{vutinfth}{No \string\setthesis \space issued}{%
  929. Set thesis type with \string\setthesis.}%
  930. }%
  931. \newcommand{\vutinfth@polylingual@degreename}{%
  932. \ClassError{vutinfth}{No \string\setthesis \space issued}{%
  933. Set thesis type with \string\setthesis.}%
  934. }%
  935. \newcommand{\vutinfth@polylingual@thesisname}{%
  936. \ClassError{vutinfth}{No \string\setthesis \space issued}{%
  937. Set thesis type with \string\setthesis.}%
  938. }%
  939. % \end{macrocode}
  940. % \end{macro}
  941. % \end{macro}
  942. % \end{macro}
  943. % \end{macro}
  944. %
  945. % \begin{macro}{\vutinfth@thesis@bachelor}
  946. % \begin{macro}{\vutinfth@thesis@master}
  947. % \begin{macro}{\vutinfth@thesis@doctor}
  948. % \begin{macro}{\vutinfth@thesis@phd}
  949. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  950. % Four main thesis types are differentiated: |bachelor|, |master|, |doctor|, and |phd-school|.
  951. % \begin{macrocode}
  952. \newcommand{\vutinfth@thesis@bachelor}{bachelor}%
  953. \newcommand{\vutinfth@thesis@master}{master}%
  954. \newcommand{\vutinfth@thesis@doctor}{doctor}%
  955. \newcommand{\vutinfth@thesis@phd}{phd-school}%
  956. % \end{macrocode}
  957. % \end{macro}
  958. % \end{macro}
  959. % \end{macro}
  960. % \end{macro}
  961. %
  962. % \begin{macro}{\@setthesisname}
  963. % \begin{macro}{\@setdegreename}
  964. % \begin{macro}{\@setgendereddegreename}
  965. % Internal convenience macros.
  966. % \begin{macrocode}
  967. \newcommand{\@setthesisname}[1]{%
  968. \renewcommand{\vutinfth@polylingual@thesisname}{#1}}%
  969. \newcommand{\@setdegreename}[1]{%
  970. \renewcommand{\vutinfth@polylingual@degreename}{#1}}%
  971. \newcommand{\@setgendereddegreename}[2]{%
  972. \ifmale{author}{\@setdegreename{#1}}%
  973. \iffemale{author}{\@setdegreename{#2}}%
  974. }%
  975. % \end{macrocode}
  976. % \end{macro}
  977. % \end{macro}
  978. % \end{macro}
  979. %
  980. % \begin{macro}{\setthesis}
  981. % \changes{v1.3}{2014/11/25}{Altered to support multiple dissertation types. \issue{4}}
  982. % Sets the thesis type.
  983. % \begin{macrocode}
  984. \newcommand{\setthesis}[1]{%
  985. \ifdefstring{\vutinfth@thesis@bachelor}{#1}{%
  986. % \end{macrocode}
  987. % Initializes |bachelor| thesis type.
  988. % \begin{macrocode}
  989. \renewcommand{\vutinfth@thesis@basetype}{%
  990. \vutinfth@thesis@basetype@undergraduate}%
  991. \@setthesisname{\vutinfth@polylingual@BACHELORTHESIS}%
  992. \@setdegreename{\vutinfth@polylingual@Bdeg}%
  993. }{}%
  994. \ifdefstring{\vutinfth@thesis@master}{#1}{%
  995. % \end{macrocode}
  996. % Initializes |master| thesis type.
  997. % \begin{macrocode}
  998. \renewcommand{\vutinfth@thesis@basetype}{%
  999. \vutinfth@thesis@basetype@undergraduate}%
  1000. \@setthesisname{%
  1001. \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{%
  1002. Set masterdegree with \string\setmasterdegree.}%
  1003. }%
  1004. \@setdegreename{%
  1005. \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{%
  1006. Set master degree with \string\setmasterdegree.}%
  1007. }%
  1008. }{}%
  1009. \ifdefstring{\vutinfth@thesis@doctor}{#1}{%
  1010. % \end{macrocode}
  1011. % Initializes |doctor| thesis type.
  1012. % \begin{macrocode}
  1013. \renewcommand{\vutinfth@thesis@basetype}{%
  1014. \vutinfth@thesis@basetype@graduate}%
  1015. \renewcommand{\vutinfth@thesis@doctortype}{%
  1016. \vutinfth@thesis@doctortype@doctor}%
  1017. \@setthesisname{\vutinfth@polylingual@DOCTORTHESIS}%
  1018. \@setdegreename{%
  1019. \ClassError{vutinfth}{No \string\setdoctordegree \space issued}{%
  1020. Set doctor degree with \string\setdoctordegree.}%
  1021. }%
  1022. }{}%
  1023. \ifdefstring{\vutinfth@thesis@phd}{#1}{%
  1024. % \end{macrocode}
  1025. % Initializes |phd-school| thesis type.
  1026. % \begin{macrocode}
  1027. \renewcommand{\vutinfth@thesis@basetype}{%
  1028. \vutinfth@thesis@basetype@graduate}%
  1029. \renewcommand{\vutinfth@thesis@doctortype}{%
  1030. \vutinfth@thesis@doctortype@phd}%
  1031. \@setthesisname{\vutinfth@polylingual@PHDTHESIS}%
  1032. \@setdegreename{\vutinfth@polylingual@Pdeg}%
  1033. }{}%
  1034. }%
  1035. % \end{macrocode}
  1036. % \end{macro}
  1037. %
  1038. % \begin{macro}{\vutinfth@thesis@mdeg@dipl}
  1039. % \begin{macro}{\vutinfth@thesis@mdeg@master}
  1040. % \begin{macro}{\vutinfth@thesis@mdeg@rernat}
  1041. % \begin{macro}{\vutinfth@thesis@mdeg@rersocoec}
  1042. % Four master degrees can be selected: |dipl.|, |master|, |rer.nat.|, and\\|rer.soc.oec.|.
  1043. % \begin{macrocode}
  1044. \newcommand{\vutinfth@thesis@mdeg@dipl}{dipl.}%
  1045. \newcommand{\vutinfth@thesis@mdeg@master}{master}%
  1046. \newcommand{\vutinfth@thesis@mdeg@rernat}{rer.nat.}%
  1047. \newcommand{\vutinfth@thesis@mdeg@rersocoec}{rer.soc.oec.}%
  1048. % \end{macrocode}
  1049. % \end{macro}
  1050. % \end{macro}
  1051. % \end{macro}
  1052. % \end{macro}
  1053. %
  1054. % \begin{macro}{\setmasterdegree}
  1055. % Sets the specific master degree.
  1056. % \begin{macrocode}
  1057. \newcommand{\setmasterdegree}[1]{%
  1058. \ifdefstring{\vutinfth@thesis@mdeg@dipl}{#1}{%
  1059. \@setthesisname{\vutinfth@polylingual@DIPLOMATHESIS}%
  1060. \@setgendereddegreename{%
  1061. \vutinfth@polylingual@MdegDiplMale
  1062. }{%
  1063. \vutinfth@polylingual@MdegDiplFemale
  1064. }%
  1065. }{}%
  1066. \ifdefstring{\vutinfth@thesis@mdeg@master}{#1}{%
  1067. \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}%
  1068. \@setdegreename{\vutinfth@polylingual@MdegMaster}%
  1069. }{}%
  1070. \ifdefstring{\vutinfth@thesis@mdeg@rernat}{#1}{%
  1071. \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}%
  1072. \@setgendereddegreename{%
  1073. \vutinfth@polylingual@MdegRerNatMale
  1074. }{%
  1075. \vutinfth@polylingual@MdegRerNatFemale
  1076. }%
  1077. }{}%
  1078. \ifdefstring{\vutinfth@thesis@mdeg@rersocoec}{#1}{%
  1079. \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}%
  1080. \@setgendereddegreename{%
  1081. \vutinfth@polylingual@MdegRerSocOecMale
  1082. }{%
  1083. \vutinfth@polylingual@MdegRerSocOecFemale
  1084. }%
  1085. }{}%
  1086. }%
  1087. % \end{macrocode}
  1088. % \end{macro}
  1089. %
  1090. % \begin{macro}{\vutinfth@thesis@ddeg@rernat}
  1091. % \begin{macro}{\vutinfth@thesis@ddeg@techn}
  1092. % \begin{macro}{\vutinfth@thesis@ddeg@rersocoec}
  1093. % Three doctor degrees can be selected: |rer.nat.|, |techn.|, and |rer.soc.oec.|.
  1094. % \begin{macrocode}
  1095. \newcommand{\vutinfth@thesis@ddeg@rernat}{rer.nat.}%
  1096. \newcommand{\vutinfth@thesis@ddeg@techn}{techn.}%
  1097. \newcommand{\vutinfth@thesis@ddeg@rersocoec}{rer.soc.oec.}%
  1098. % \end{macrocode}
  1099. % \end{macro}
  1100. % \end{macro}
  1101. % \end{macro}
  1102. %
  1103. % \begin{macro}{\setdoctordegree}
  1104. % Sets the specific doctor degree.
  1105. % \begin{macrocode}
  1106. \newcommand{\setdoctordegree}[1]{%
  1107. \ifdefstring{\vutinfth@thesis@ddeg@rernat}{#1}{%
  1108. \@setgendereddegreename{%
  1109. \vutinfth@polylingual@DdegRerNatMale
  1110. }{%
  1111. \vutinfth@polylingual@DdegRerNatFemale
  1112. }%
  1113. }{}%
  1114. \ifdefstring{\vutinfth@thesis@ddeg@techn}{#1}{%
  1115. \@setgendereddegreename{%
  1116. \vutinfth@polylingual@DdegTechnMale
  1117. }{%
  1118. \vutinfth@polylingual@DdegTechnFemale
  1119. }%
  1120. }{}%
  1121. \ifdefstring{\vutinfth@thesis@ddeg@rersocoec}{#1}{%
  1122. \@setgendereddegreename{%
  1123. \vutinfth@polylingual@DdegRerSocOecMale
  1124. }{%
  1125. \vutinfth@polylingual@DdegRerSocOecFemale
  1126. }%
  1127. }{}%
  1128. }%
  1129. % \end{macrocode}
  1130. % \end{macro}
  1131. %
  1132. % \subsubsection{Declarations}
  1133. %\label{sec:impl:data:declarations}
  1134. %
  1135. % \begin{macro}{Textual Data}
  1136. % \changes{v1.3}{2014/11/25}{Updated to support external reviewer data. \issue{4}}
  1137. % \changes{v1.8}{2019/02/13}{Removed address information.}
  1138. % Creates the required textual data entries.
  1139. % \begin{macrocode}
  1140. % ^^A\CreateData{address}%
  1141. \CreateData{regnumber}%
  1142. \CreateData{firstreviewerdata}%
  1143. \CreateData{secondreviewerdata}%
  1144. % \end{macrocode}
  1145. % \end{macro}
  1146. %
  1147. % \begin{macro}{Persons}
  1148. % \changes{v1.3}{2014/11/25}{Updated to support second advisor. Issue \issue{4}}
  1149. % Creates the required person entries.
  1150. % \begin{macrocode}
  1151. \CreatePerson{author}%
  1152. \CreatePerson{advisor}%
  1153. \CreatePerson{secondadvisor}%
  1154. \CreatePerson{firstassistant}%
  1155. \CreatePerson{secondassistant}%
  1156. \CreatePerson{thirdassistant}%
  1157. \CreatePerson{firstreviewer}%
  1158. \CreatePerson{secondreviewer}%
  1159. % \end{macrocode}
  1160. % \end{macro}
  1161. %
  1162. % \begin{macro}{Languages}
  1163. % Adds the desired languages to the polylingual expressions. All added languages have to be given as arguments to the |babel| package.
  1164. % \begin{macrocode}
  1165. \AddLanguage{english}%
  1166. \AddLanguage{naustrian}%
  1167. % \end{macrocode}
  1168. % \end{macro}
  1169. %
  1170. % \begin{macro}{PolyLinguals}
  1171. % \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}}
  1172. % \changes{v1.5}{2016/01/17}{Updated name of university to `TU Wien'.}
  1173. % \changes{v1.6}{2016/11/12}{Provided German term for second advisor.}
  1174. % Creates the polylingual expressions.
  1175. % \begin{macrocode}
  1176. \CreatePolylingual[
  1177. english=Advisor,
  1178. naustrian=Betreuung]{Advisor}%
  1179. \CreatePolylingual[
  1180. english=Second advisor,
  1181. naustrian=Zweitbetreuung]{Secondadvisor}%
  1182. \CreatePolylingual[
  1183. english=submitted in partial fulfillment of the requirements
  1184. for the degree of,
  1185. naustrian=zur Erlangung des akademischen Grades]{submission}%
  1186. \CreatePolylingual[
  1187. english=in,
  1188. naustrian=im Rahmen des Studiums]{in}%
  1189. \CreatePolylingual[
  1190. english=within the]{within}%
  1191. \CreatePolylingual[
  1192. english=Vienna PhD School of Informatics]{School}%
  1193. \CreatePolylingual[
  1194. english=by,
  1195. naustrian=eingereicht von]{by}%
  1196. \CreatePolylingual[
  1197. english=Registration Number,
  1198. naustrian=Matrikelnummer]{Registrationnumber}%
  1199. \CreatePolylingual[
  1200. english=to the Faculty of Informatics,
  1201. naustrian=an der Fakult\"at f\"ur Informatik]{faculty}%
  1202. \CreatePolylingual[
  1203. english=at the TU Wien,
  1204. naustrian=der Technischen Universit\"at Wien]{university}%
  1205. \CreatePolylingual[
  1206. english=Assistance,
  1207. naustrian=Mitwirkung]{Assistance}%
  1208. \CreatePolylingual[
  1209. english=The dissertation has been reviewed by:,
  1210. naustrian=Diese Dissertation haben begutachtet:]{Reviewed}%
  1211. \CreatePolylingual[
  1212. english=External reviewers:]{Reviewers}%
  1213. \CreatePolylingual[
  1214. english=Vienna,
  1215. naustrian=Wien]{Place}%
  1216. \CreatePolylingual[
  1217. english=Declaration of Authorship,
  1218. naustrian=Erkl\"arung zur Verfassung der Arbeit]{StatementChapter}%
  1219. \CreatePolylingual[
  1220. english={I hereby declare that I have written this Doctoral Thesis
  1221. independently, that I have completely specified the utilized
  1222. sources and resources and that I have definitely marked all parts
  1223. of the work - including tables, maps and figures - which belong
  1224. to other works or to the internet, literally or extracted, by
  1225. referencing the source as borrowed.},
  1226. naustrian={Hiermit erkl\"are ich, dass ich diese Arbeit
  1227. selbst\"andig verfasst habe, dass ich die verwendeten Quellen
  1228. und Hilfsmittel vollst\"andig angegeben habe und dass ich die
  1229. Stellen der Arbeit -- einschlie{\ss}lich Tabellen, Karten und
  1230. Abbildungen --, die anderen Werken oder dem Internet im Wortlaut
  1231. oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe
  1232. der Quelle als Entlehnung kenntlich gemacht habe.}]{Statement}%
  1233. % \end{macrocode}
  1234. % Degree titles.
  1235. % \begin{macrocode}
  1236. \CreatePolylingual[
  1237. english=Bachelor of Science,
  1238. naustrian=Bachelor of Science]{Bdeg}%
  1239. \CreatePolylingual[
  1240. english=Master of Science,
  1241. naustrian=Master of Science]{MdegMaster}%
  1242. \CreatePolylingual[
  1243. english=Diplom-Ingenieur,
  1244. naustrian=Diplom-Ingenieur]{MdegDiplMale}%
  1245. \CreatePolylingual[
  1246. english=Diplom-Ingenieurin,
  1247. naustrian=Diplom-Ingenieurin]{MdegDiplFemale}%
  1248. \CreatePolylingual[
  1249. english=Magister der Naturwissenschaften,
  1250. naustrian=Magister der Naturwissenschaften]{MdegRerNatMale}%
  1251. \CreatePolylingual[
  1252. english=Magistra der Naturwissenschaften,
  1253. naustrian=Magistra der Naturwissenschaften]{MdegRerNatFemale}%
  1254. \CreatePolylingual[
  1255. english=Magister der Sozial- und Wirtschaftswissenschaften,
  1256. naustrian=Magister der Sozial- und Wirtschaftswissenschaften]{%
  1257. MdegRerSocOecMale}%
  1258. \CreatePolylingual[
  1259. english=Magistra der Sozial- und Wirtschaftswissenschaften,
  1260. naustrian=Magistra der Sozial- und Wirtschaftswissenschaften]{%
  1261. MdegRerSocOecFemale}%
  1262. \CreatePolylingual[
  1263. english=Doktor der Naturwissenschaften,
  1264. naustrian=Doktor der Naturwissenschaften]{DdegRerNatMale}%
  1265. \CreatePolylingual[
  1266. english=Doktorin der Naturwissenschaften,
  1267. naustrian=Doktorin der Naturwissenschaften]{DdegRerNatFemale}%
  1268. \CreatePolylingual[
  1269. english=Doktor der Technischen Wissenschaften,
  1270. naustrian=Doktor der Technischen Wissenschaften]{DdegTechnMale}%
  1271. \CreatePolylingual[
  1272. english=Doktorin der Technischen Wissenschaften,
  1273. naustrian=Doktorin der Technischen Wissenschaften]{DdegTechnFemale}%
  1274. \CreatePolylingual[
  1275. english=Doktor der Sozial- und Wirtschaftswissenschaften,
  1276. naustrian=Doktor der Sozial- und Wirtschaftswissenschaften]{%
  1277. DdegRerSocOecMale}%
  1278. \CreatePolylingual[
  1279. english=Doktorin der Sozial- und Wirtschaftswissenschaften,
  1280. naustrian=Doktorin der Sozial- und Wirtschaftswissenschaften]{%
  1281. DdegRerSocOecFemale}%
  1282. \CreatePolylingual[
  1283. english=Doctor of Technical Sciences]{%
  1284. Pdeg}%
  1285. % \end{macrocode}
  1286. % Thesis types.
  1287. % \begin{macrocode}
  1288. \CreatePolylingual[
  1289. english=BACHELOR'S THESIS,
  1290. naustrian=BACHELORARBEIT]{BACHELORTHESIS}%
  1291. \CreatePolylingual[
  1292. english=MASTER'S THESIS,
  1293. naustrian=MASTERARBEIT]{MASTERTHESIS}%
  1294. \CreatePolylingual[
  1295. english=DIPLOMA THESIS,
  1296. naustrian=DIPLOMARBEIT]{DIPLOMATHESIS}%
  1297. \CreatePolylingual[
  1298. english=DISSERTATION,
  1299. naustrian=DISSERTATION]{DOCTORTHESIS}%
  1300. \CreatePolylingual[
  1301. english=PhD THESIS]{PHDTHESIS}%
  1302. % \end{macrocode}
  1303. % \end{macro}
  1304. %
  1305. % \begin{macro}{\settitle}
  1306. % Sets the title of the thesis.
  1307. % \begin{macrocode}
  1308. \newcommand{\settitle}[2]{%
  1309. \CreatePolylingual[english=#1,naustrian=#2]{Title}%
  1310. }%
  1311. % \end{macrocode}
  1312. % \end{macro}
  1313. %
  1314. % \begin{macro}{\setsubtitle}
  1315. % Sets the subtitle of the thesis.
  1316. % \begin{macrocode}
  1317. \newcommand{\setsubtitle}[2]{%
  1318. \CreatePolylingual[english=#1,naustrian=#2]{Subtitle}%
  1319. }%
  1320. % \end{macrocode}
  1321. % \end{macro}
  1322. %
  1323. % \begin{macro}{\setcurriculum}
  1324. % Sets the curriculum name.
  1325. % \begin{macrocode}
  1326. \newcommand{\setcurriculum}[2]{%
  1327. \CreatePolylingual[english=#1,naustrian=#2]{Curriculum}%
  1328. }%
  1329. % \end{macrocode}
  1330. % \end{macro}
  1331. %
  1332. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1333. % \subsection{Layout}
  1334. %
  1335. % \subsubsection{Setup}
  1336. %
  1337. % \begin{macro}{\vutinfth@squarebullet}
  1338. % Set internal convenience macros.
  1339. % \begin{macrocode}
  1340. \newcommand{\newsetlength}[2]{%
  1341. \newlength{#1}%
  1342. \setlength{#1}{#2}%
  1343. }%
  1344. \newcommand{\vutinfth@squarebullet}{\rule[0.47ex]{0.4ex}{0.4ex}}%
  1345. % \end{macrocode}
  1346. % \end{macro}
  1347. %
  1348. % \begin{macro}{\vutinfth@tmp@parindent}
  1349. % \begin{macro}{\vutinfth@tmp@baselineskip}
  1350. % \begin{macro}{\vutinfth@tmp@parskip}
  1351. % Temporary storage for page layout lengths.
  1352. % \begin{macrocode}
  1353. \newlength{\vutinfth@tmp@parindent}%
  1354. \newlength{\vutinfth@tmp@baselineskip}%
  1355. \newlength{\vutinfth@tmp@parskip}%
  1356. % \end{macrocode}
  1357. % \end{macro}
  1358. % \end{macro}
  1359. % \end{macro}
  1360. %
  1361. % \begin{macro}{\vutinfth@savelayout}
  1362. % \begin{macro}{\vutinfth@restorelayout}
  1363. % Saves and restores relevant page layout lengths.
  1364. % \begin{macrocode}
  1365. \newcommand{\vutinfth@savelayout}{%
  1366. \setlength{\vutinfth@tmp@parindent}{\parindent}%
  1367. \setlength{\vutinfth@tmp@baselineskip}{\baselineskip}%
  1368. \setlength{\vutinfth@tmp@parskip}{\parskip}%
  1369. }%
  1370. \newcommand{\vutinfth@restorelayout}{%
  1371. \setlength{\parindent}{\vutinfth@tmp@parindent}%
  1372. \setlength{\baselineskip}{\vutinfth@tmp@baselineskip}%
  1373. \setlength{\parskip}{\vutinfth@tmp@parskip}%
  1374. }%
  1375. % \end{macrocode}
  1376. % \end{macro}
  1377. % \end{macro}
  1378. %
  1379. % \subsubsection{Title Page}
  1380. %
  1381. % Initialize the header graphics. The vertical placement of the header graphics on the title pages are given by |\vutinfth@header@placement|, while the composition of the graphical elements are determined by the subsequent lengths, which constitute direct measurements of the graphics. If the header graphics are changed, these values have to be adapted.
  1382. % \begin{macrocode}
  1383. \newsetlength{\vutinfth@logo@offset@x}{10.6mm}%
  1384. \newsetlength{\vutinfth@logo@offset@y}{22mm}%
  1385. \newsetlength{\vutinfth@logo@width@safe}{74mm}%
  1386. \newsetlength{\vutinfth@logo@height}{11mm}%
  1387. \newsetlength{\vutinfth@header@width}{\paperwidth - \vutinfth@logo@offset@x - \vutinfth@logo@offset@x}%
  1388. \newsetlength{\vutinfth@header@height}{\vutinfth@logo@height}%
  1389. \newsetlength{\vutinfth@header@separator}{-12mm}%
  1390. % \end{macrocode}
  1391. %
  1392. % \begin{macro}{\vutinfth@header@titlepage}
  1393. % \changes{v1.9}{2019/11/11}{Changed header graphics.}
  1394. % Initialize header.
  1395. % \begin{macrocode}
  1396. \newcommand{\vutinfth@header@titlepage}{%
  1397. \setlength{\unitlength}{1mm}%
  1398. \begin{picture}(74, 11)%
  1399. {\includegraphics[height=\vutinfth@logo@height]{Logo-schwarz.pdf}}
  1400. \end{picture}\hfill
  1401. }%
  1402. % \end{macrocode}
  1403. % \end{macro}
  1404. %
  1405. % \begin{macro}{\vutinfth@footer@titlepage}
  1406. % \changes{v1.9}{2019/11/11}{Changed university URL.}
  1407. % Initialize footer.
  1408. % \begin{macrocode}
  1409. \newcommand{\vutinfth@footer@titlepage}{%
  1410. \centering
  1411. \begin{minipage}{\textwidth}%
  1412. \centering\vutinfth@normalsize\sffamily
  1413. Technische Universit\"{a}t Wien\\
  1414. A-1040 Wien \vutinfth@squarebullet\space
  1415. Karlsplatz 13 \vutinfth@squarebullet\space
  1416. Tel. +43-1-58801-0 \vutinfth@squarebullet\space
  1417. www.tuwien.at%
  1418. \end{minipage}%
  1419. }%
  1420. % \end{macrocode}
  1421. % \end{macro}
  1422. %
  1423. % \begin{macro}{vutinfth@pagestyle@titlepage}
  1424. % \changes{v1.9}{2019/11/11}{Changed header graphics.}
  1425. % Generate the title page style.
  1426. % \begin{macrocode}
  1427. \makepagestyle{vutinfth@pagestyle@titlepage}%
  1428. \makerunningwidth{vutinfth@pagestyle@titlepage}[\textwidth]{%
  1429. \vutinfth@header@width}%
  1430. \makeheadposition{vutinfth@pagestyle@titlepage}{%
  1431. center}{center}{center}{center}%
  1432. \makeevenhead{vutinfth@pagestyle@titlepage}{}{%
  1433. \vutinfth@header@titlepage}{}%
  1434. \makeoddhead{vutinfth@pagestyle@titlepage}{}{%
  1435. \vutinfth@header@titlepage}{}%
  1436. \makefootrule{vutinfth@pagestyle@titlepage}{%
  1437. \vutinfth@pagestyle@titlepagefootrunwidth}{0.5pt}{\footruleskip}%
  1438. \makeevenfoot{vutinfth@pagestyle@titlepage}{}{%
  1439. \vutinfth@footer@titlepage}{}%
  1440. \makeoddfoot{vutinfth@pagestyle@titlepage}{}{%
  1441. \vutinfth@footer@titlepage}{}%
  1442. % \end{macrocode}
  1443. % \end{macro}
  1444. %
  1445. % Set style element specifications.
  1446. % \begin{macrocode}
  1447. \newsetlength{\vutinfth@bigskipamount}{6mm}%
  1448. % \end{macrocode}
  1449. % Helper functions.
  1450. % \begin{macrocode}
  1451. \newcommand{\vutinfth@bigskip}{\vspace{\vutinfth@bigskipamount}}%
  1452. % \end{macrocode}
  1453. %
  1454. % \begin{macro}{\AdvisorBlock}
  1455. % \changes{v1.3}{2014/11/25}{Updated to support second advisor. \issue{4}}
  1456. % \changes{v1.6}{2016/11/12}{Enabled second advisor for dissertations.}
  1457. % Generates a block with the advisor's name (and potential assistances' names). An error is thrown, if the advisors are not defined consecutively, starting with the first.
  1458. % \begin{macrocode}
  1459. \newcommand{\AdvisorBlock}{%
  1460. \ifundergraduate{%
  1461. \begin{minipage}[t][2.5cm][t]{\textwidth}%
  1462. \vutinfth@normalsize
  1463. \begin{tabular}{@{}l@{ }l}%
  1464. \vutinfth@polylingual@Advisor: &
  1465. \vutinfth@person@advisor@fullname\\
  1466. \ifdef{\vutinfth@person@firstassistant@def}{%
  1467. \vutinfth@polylingual@Assistance: &
  1468. \vutinfth@person@firstassistant@fullname\\
  1469. }{}%
  1470. \ifdef{\vutinfth@person@secondassistant@def}{%
  1471. \ifundef{\vutinfth@person@firstassistant@def}{%
  1472. \vutinfth@person@firstassistant@error
  1473. }{%
  1474. & \vutinfth@person@secondassistant@fullname\\
  1475. }%
  1476. }{}%
  1477. \ifdef{\vutinfth@person@thirdassistant@def}{%
  1478. \ifundef{\vutinfth@person@firstassistant@def}{%
  1479. \vutinfth@person@firstassistant@error
  1480. }{%
  1481. \ifundef{\vutinfth@person@secondassistant@def}{%
  1482. \vutinfth@person@secondassistant@error
  1483. }{%
  1484. & \vutinfth@person@thirdassistant@fullname\\
  1485. }%
  1486. }%
  1487. }{}%
  1488. \end{tabular}%
  1489. \end{minipage}%
  1490. }%
  1491. \ifgraduate{%
  1492. \begin{minipage}[t][1.6cm][t]{\textwidth}%
  1493. \vutinfth@normalsize
  1494. \vutinfth@polylingual@Advisor:
  1495. \vutinfth@person@advisor@fullname
  1496. \ifdef{\vutinfth@person@secondadvisor@def}{%
  1497. \\
  1498. \vutinfth@polylingual@Secondadvisor:
  1499. \vutinfth@person@secondadvisor@fullname
  1500. }{}%
  1501. \end{minipage}\par%
  1502. }%
  1503. }%
  1504. % \end{macrocode}
  1505. % \end{macro}
  1506. %
  1507. % \begin{macro}{\vutinfth@signature@height}
  1508. % \begin{macro}{\vutinfth@signature@width}
  1509. % \begin{macro}{\vutinfth@placedate@width}
  1510. % Set lengths of the signature blocks.
  1511. % \begin{macrocode}
  1512. \newsetlength{\vutinfth@signature@height}{25mm}%
  1513. \newsetlength{\vutinfth@signature@width}{51mm}%
  1514. \newsetlength{\vutinfth@placedate@width}{50mm}%
  1515. % \end{macrocode}
  1516. % \end{macro}
  1517. % \end{macro}
  1518. % \end{macro}
  1519. %
  1520. % \begin{macro}{\SignatureFields}
  1521. % Generates a block with signatures and an optional place-date entry. The first argument is optional and adds an entry with date and place |[y]|, or adds corresponding whitespace |[h]| or adds nothing |[n]|, which is also the default value. The second arguments adds a rule and the given text below it, if a text is given, or the corresponding whitespace, if not. The third argument adds a rule and the given text below it, if a text is given.
  1522. % \begin{macrocode}
  1523. \newcommand{\SignatureFields}[3][n]{%
  1524. {\vutinfth@normalsize
  1525. \ifstrequal{#1}{y}{%
  1526. \begin{minipage}[b][\vutinfth@signature@height]{%
  1527. \vutinfth@placedate@width
  1528. }%
  1529. \vutinfth@polylingual@Place,
  1530. \displaydate{vutinfth@date@signing}\vspace*{\baselineskip}%
  1531. \end{minipage}%
  1532. \hfill
  1533. }{}%
  1534. \ifstrequal{#1}{n}{}{}%
  1535. \ifstrequal{#1}{h}{%
  1536. \hspace*{\vutinfth@placedate@width}%
  1537. \hfill
  1538. }{}%
  1539. \ifstrempty{#2}{%
  1540. \hspace*{\vutinfth@signature@width}%
  1541. \hfill
  1542. }{%
  1543. \begin{minipage}[b][\vutinfth@signature@height]{%
  1544. \vutinfth@signature@width
  1545. }%
  1546. \centering
  1547. \rule{\vutinfth@signature@width}{0.5pt}\\
  1548. #2%
  1549. \end{minipage}%
  1550. \hfill
  1551. }%
  1552. \ifstrempty{#3}{}{%
  1553. \begin{minipage}[b][\vutinfth@signature@height]{%
  1554. \vutinfth@signature@width
  1555. }%
  1556. \centering
  1557. \rule{\vutinfth@signature@width}{0.5pt}\\
  1558. #3%
  1559. \end{minipage}%
  1560. }%
  1561. }%
  1562. }%
  1563. % \end{macrocode}
  1564. % \end{macro}
  1565. % \begin{macro}{\ReviewerBlock}
  1566. % \changes{v1.3}{2014/11/25}{Updated to support external reviewers. \issue{4}}
  1567. % Generates a block with the relevant signatures.
  1568. % \begin{macrocode}
  1569. \newcommand{\ReviewerBlock}{%
  1570. \ifgraduate{%
  1571. \ifdoctor{%
  1572. {\vutinfth@normalsize
  1573. \vutinfth@polylingual@Reviewed\\
  1574. \SignatureFields[h]{%
  1575. \vutinfth@person@firstreviewer@name
  1576. }{%
  1577. \vutinfth@person@secondreviewer@name
  1578. }%
  1579. }%
  1580. }%
  1581. \ifphd{%
  1582. {\vutinfth@normalsize
  1583. \vutinfth@polylingual@Reviewers\\
  1584. \vutinfth@person@firstreviewer@name.
  1585. \vutinfth@data@firstreviewerdata.\\
  1586. \vutinfth@person@secondreviewer@name.
  1587. \vutinfth@data@secondreviewerdata.\\
  1588. }%
  1589. }%
  1590. }%
  1591. }%
  1592. % \end{macrocode}
  1593. % \end{macro}
  1594. %
  1595. % \begin{macro}{\SignatureBlock}
  1596. % \changes{v1.3}{2014/11/25}{Updated to support multiple dissertation types. \issue{4}}
  1597. % Generates a block with the relevant signatures.
  1598. % \begin{macrocode}
  1599. \newcommand{\SignatureBlock}{%
  1600. \ifundergraduate{%
  1601. {\vutinfth@normalsize
  1602. \SignatureFields[y]{%
  1603. \vutinfth@person@author@name
  1604. }{%
  1605. \vutinfth@person@advisor@name
  1606. }%
  1607. }%
  1608. }%
  1609. \ifgraduate{%
  1610. {\vutinfth@normalsize
  1611. \ifdoctor{%
  1612. \SignatureFields[y]{}{%
  1613. \vutinfth@person@author@name
  1614. }%
  1615. }%
  1616. \ifphd{%
  1617. \SignatureFields[y]{%
  1618. \vutinfth@person@author@name
  1619. }{%
  1620. \vutinfth@person@advisor@name
  1621. }%
  1622. }%
  1623. }%
  1624. }%
  1625. }%
  1626. % \end{macrocode}
  1627. % \end{macro}
  1628. %
  1629. % \begin{macro}{\AddTitlePage}
  1630. % \changes{v1.3}{2014/11/15}{Added check for subtitle existence before usage. \issue{1}}
  1631. % \changes{v1.3}{2014/11/25}{Updated to support PhD School mentioning and fixed the associated vertical overflow. \issue{4}}
  1632. % \changes{v1.9}{2019/11/11}{Changed header graphics.}
  1633. % Generates the language-dependant title page. Multiline title and subtitle are supported.
  1634. % \begin{macrocode}
  1635. \newcommand{\AddTitlePage}{
  1636. \thispagestyle{vutinfth@pagestyle@titlepage}%
  1637. % \end{macrocode}
  1638. % Set a new page geometry where the header separation length (|headsep|) places the header.
  1639. % The actual header height (|head|) has to be large enough to contain the header content otherwise the underlying |memoir| class issues a warning.
  1640. % \begin{macrocode}
  1641. \newgeometry{%
  1642. left=2.4cm,right=2.4cm,bottom=2.5cm,top=2cm,
  1643. headsep=\vutinfth@header@separator,
  1644. head=\vutinfth@header@height
  1645. }%
  1646. % \end{macrocode}
  1647. % Save the current page layout lengths for later restoration.
  1648. % \begin{macrocode}
  1649. \vutinfth@savelayout
  1650. \setlength{\parindent}{0pt}%
  1651. \setlength{\baselineskip}{13.6pt}%
  1652. \setlength{\parskip}{0pt plus 1pt}%
  1653. % \end{macrocode}
  1654. % Set title page text to helvetica.
  1655. % \begin{macrocode}
  1656. \begin{SFFont}{phv}%
  1657. \sffamily
  1658. {\centering
  1659. \vspace*{1.2cm}\par
  1660. % \end{macrocode}
  1661. % Title and subtitle are bottom aligned and grow upwards.
  1662. % \begin{macrocode}
  1663. \begin{minipage}[t][5cm][b]{\textwidth}%
  1664. \centering
  1665. \vutinfth@HUGE{\bfseries\vutinfth@polylingual@Title}\\
  1666. \bigskip
  1667. \vutinfth@huge{\bfseries
  1668. \ifdef{\vutinfth@polylingual@Subtitle}{%
  1669. \vutinfth@polylingual@Subtitle}{%
  1670. }%
  1671. }%
  1672. \end{minipage}\par
  1673. \vutinfth@bigskip\vutinfth@bigskip
  1674. {\vutinfth@LARGE\vutinfth@polylingual@thesisname}\par
  1675. \vutinfth@bigskip
  1676. {\vutinfth@large\vutinfth@polylingual@submission}\par
  1677. \vutinfth@bigskip
  1678. \ifundergraduate{%
  1679. {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par
  1680. \vutinfth@bigskip
  1681. {\vutinfth@large\vutinfth@polylingual@in}\par
  1682. \vutinfth@bigskip
  1683. {\vutinfth@Large{\bfseries\vutinfth@polylingual@Curriculum}}\par
  1684. }%
  1685. \ifgraduate{%
  1686. {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par
  1687. \ifphd{%
  1688. \vutinfth@bigskip
  1689. {\vutinfth@large\vutinfth@polylingual@within}\par
  1690. \vutinfth@bigskip
  1691. {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@School}}\par
  1692. }%
  1693. }%
  1694. \vutinfth@bigskip
  1695. {\vutinfth@large\vutinfth@polylingual@by}\par
  1696. \vutinfth@bigskip
  1697. {\vutinfth@Large{\bfseries\vutinfth@person@author@fullname}}\par
  1698. \smallskip
  1699. {\vutinfth@large\vutinfth@polylingual@Registrationnumber\
  1700. \vutinfth@data@regnumber}\par
  1701. }%
  1702. \vutinfth@bigskip\vutinfth@bigskip
  1703. \ifgraduate{\ifphd{\vspace*{-8mm}}}%
  1704. \begin{minipage}[b][1.6cm][c]{\textwidth}%
  1705. \vutinfth@normalsize%
  1706. \vutinfth@polylingual@faculty\par
  1707. \vutinfth@polylingual@university
  1708. \end{minipage}\par
  1709. \AdvisorBlock\par
  1710. % \end{macrocode}
  1711. % Add stretchable glue between the advisor block and the signatures.
  1712. % This ensures that the signature part is always at the bottom of the page.
  1713. % \begin{macrocode}
  1714. \vfill
  1715. \ReviewerBlock\par
  1716. \SignatureBlock\par
  1717. \vspace*{1cm}%
  1718. \end{SFFont}%
  1719. \pagestyle{empty}%
  1720. \cleardoublepage
  1721. \vutinfth@restorelayout
  1722. \restoregeometry
  1723. }%
  1724. % \end{macrocode}
  1725. % \end{macro}
  1726. %
  1727. % \subsubsection{Front Matter Material}
  1728. %
  1729. % \begin{macro}{\AddStatementPage}
  1730. % \changes{v1.3}{2014/11/25}{Updated to support multiple languages. \issue{4}}
  1731. % \changes{v1.8}{2019/02/13}{Removed address information.}
  1732. % \changes{v1.9}{2019/11/11}{Changed header graphics.}
  1733. % Generates the statement page.
  1734. % \begin{macrocode}
  1735. \newcommand{\AddStatementPage}{
  1736. % \end{macrocode}
  1737. % Set the same page geometry as for the titlepages.
  1738. % \begin{macrocode}
  1739. %^^A \newgeometry{%
  1740. %^^A left=2.4cm,right=2.4cm,bottom=2.5cm,top=2cm,
  1741. %^^A headsep=\vutinfth@header@separator,
  1742. %^^A head=\vutinfth@header@height
  1743. %^^A }%
  1744. % \end{macrocode}
  1745. % Save the current page layout lengths for later restoration.
  1746. % \begin{macrocode}
  1747. \vutinfth@savelayout
  1748. \setlength{\parindent}{0pt}%
  1749. \setlength{\baselineskip}{13.6pt}%
  1750. \setlength{\parskip}{0pt plus 1pt}%
  1751. \begin{SFFont}{phv}%
  1752. \sffamily
  1753. \chapter*{\vutinfth@polylingual@StatementChapter}%
  1754. \vutinfth@person@author@fullname\par
  1755. % ^^A \vutinfth@data@address\par
  1756. \vspace{1.2cm}%
  1757. {\normalfont\vutinfth@polylingual@Statement}\par
  1758. \vspace{1.2cm}%
  1759. \SignatureFields[y]{\vutinfth@person@author@name}{}%
  1760. \end{SFFont}%
  1761. \cleardoublepage
  1762. \vutinfth@restorelayout
  1763. %^^A \restoregeometry
  1764. }%
  1765. % \end{macrocode}
  1766. % \end{macro}
  1767. %
  1768. % \begin{macro}{\addtitlepage}
  1769. % Generates the titlepage in given language.
  1770. % \begin{macrocode}
  1771. \newcommand{\addtitlepage}[1]{%
  1772. \selectlanguage{#1}%
  1773. \AddTitlePage
  1774. }%
  1775. % \end{macrocode}
  1776. % \end{macro}
  1777. %
  1778. % \begin{macro}{\addstatementpage}
  1779. % \changes{v1.3}{2014/11/25}{Updated to support english version. \issue{4}}
  1780. % Generates the statement page.
  1781. % \begin{macrocode}
  1782. \newcommand{\addstatementpage}{%
  1783. \selectlanguage{naustrian}%
  1784. \ifundergraduate{\AddStatementPage}%
  1785. \ifgraduate{%
  1786. \ifdoctor{\AddStatementPage}%
  1787. \ifphd{%
  1788. \selectlanguage{english}%
  1789. \AddStatementPage
  1790. }%
  1791. }%
  1792. }%
  1793. % \end{macrocode}
  1794. % \end{macro}
  1795. %
  1796. % \begin{environment}{acknowledgements}
  1797. % Generates the English acknowledgement section.
  1798. % \begin{macrocode}
  1799. \newenvironment{acknowledgements}{%
  1800. \selectlanguage{english}%
  1801. \chapter{Acknowledgements}%
  1802. }{%
  1803. \cleardoublepage
  1804. }%
  1805. % \end{macrocode}
  1806. % \end{environment}
  1807. %
  1808. % \begin{environment}{acknowledgements*}
  1809. % Generates the English acknowledgement section without an entry in the table of contents.
  1810. % \begin{macrocode}
  1811. \newenvironment{acknowledgements*}{%
  1812. \selectlanguage{english}%
  1813. \chapter*{Acknowledgements}%
  1814. }{%
  1815. \cleardoublepage
  1816. }%
  1817. % \end{macrocode}
  1818. % \end{environment}
  1819. %
  1820. % \begin{environment}{danksagung}
  1821. % Generates the German acknowledgement section.
  1822. % \begin{macrocode}
  1823. \newenvironment{danksagung}{%
  1824. \selectlanguage{naustrian}%
  1825. \chapter{Danksagung}%
  1826. }{%
  1827. \cleardoublepage
  1828. }%
  1829. % \end{macrocode}
  1830. % \end{environment}
  1831. %
  1832. % \begin{environment}{danksagung*}
  1833. % Generates the German acknowledgement section without an entry in the table of contents.
  1834. % \begin{macrocode}
  1835. \newenvironment{danksagung*}{%
  1836. \selectlanguage{naustrian}%
  1837. \chapter*{Danksagung}%
  1838. }{%
  1839. \cleardoublepage
  1840. }%
  1841. % \end{macrocode}
  1842. % \end{environment}
  1843. %
  1844. % \begin{environment}{abstract}
  1845. % Generates the English abstract.
  1846. % \begin{macrocode}
  1847. \renewenvironment{abstract}{%
  1848. \selectlanguage{english}%
  1849. \chapter{Abstract}%
  1850. }{%
  1851. \cleardoublepage
  1852. }%
  1853. % \end{macrocode}
  1854. % \end{environment}
  1855. %
  1856. % \begin{environment}{abstract*}
  1857. % Generates the English abstract without an entry in the table of contents.
  1858. % \begin{macrocode}
  1859. \newenvironment{abstract*}{%
  1860. \selectlanguage{english}%
  1861. \chapter*{Abstract}%
  1862. }{%
  1863. \cleardoublepage
  1864. }%
  1865. % \end{macrocode}
  1866. % \end{environment}
  1867. %
  1868. % \begin{environment}{kurzfassung}
  1869. % Generates the German abstract without an entry in the table of contents.
  1870. % \begin{macrocode}
  1871. \newenvironment{kurzfassung}{%
  1872. \selectlanguage{naustrian}%
  1873. \chapter{Kurzfassung}%
  1874. }{%
  1875. \cleardoublepage
  1876. }%
  1877. % \end{macrocode}
  1878. % \end{environment}
  1879. %
  1880. % \begin{environment}{kurzfassung*}
  1881. % Generates the German abstract.
  1882. % \begin{macrocode}
  1883. \newenvironment{kurzfassung*}{%
  1884. \selectlanguage{naustrian}%
  1885. \chapter*{Kurzfassung}%
  1886. }{%
  1887. \cleardoublepage
  1888. }%
  1889. % \end{macrocode}
  1890. % \end{environment}
  1891. %
  1892. % \subsubsection{Page Style}
  1893. %
  1894. % \begin{macro}{vutinfth@pagestyle@default}
  1895. % Define the default page style of the thesis.
  1896. % \begin{macrocode}
  1897. \makepagestyle{vutinfth@pagestyle@default}%
  1898. \makeevenfoot{vutinfth@pagestyle@default}{\thepage}{}{}%
  1899. \makeoddfoot{vutinfth@pagestyle@default}{}{}{\thepage}%
  1900. % \end{macrocode}
  1901. % \end{macro}
  1902. %
  1903. % \begin{macro}{\frontmatter}
  1904. % \begin{macro}{\mainmatter}
  1905. % \changes{v1.4}{2015/08/01}{Added `Ruled' pagestyle.}
  1906. % \begin{macro}{\backmatter}
  1907. % Apply the default page style to the thesis.
  1908. % \begin{macrocode}
  1909. \aliaspagestyle{chapter}{vutinfth@pagestyle@default}%
  1910. \aliaspagestyle{part}{vutinfth@pagestyle@default}%
  1911. \addto\frontmatter{\pagestyle{vutinfth@pagestyle@default}}%
  1912. \addto\mainmatter{\pagestyle{Ruled}}%
  1913. \addto\backmatter{\pagestyle{vutinfth@pagestyle@default}}%
  1914. % \end{macrocode}
  1915. % \end{macro}
  1916. % \end{macro}
  1917. % \end{macro}
  1918. %
  1919. % \Finale
  1920. %
  1921. % ^^A chapter numbering has to be activated for the glossary
  1922. % \makeatletter\HD@numberedtrue\makeatother
  1923. %
  1924. % \PrintChanges ^^A compile glossary with `makeindex.exe -s gglo.ist -o %.gls %.glo'
  1925. %
  1926. % ^^A chapter numbering has to be deactivated for the index
  1927. % \makeatletter\HD@numberedfalse\makeatother
  1928. %
  1929. % \PrintIndex ^^A compile index with `makeindex.exe -s gind.ist %.idx'
  1930. %
  1931. \endinput