vutinfth.dtx 71 KB

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