diff --git a/.gitignore b/.gitignore index c586941..ab7df01 100644 --- a/.gitignore +++ b/.gitignore @@ -72,4 +72,23 @@ share/python-wheels/ *.egg-info/ .installed.cfg *.egg -MANIFEST \ No newline at end of file +MANIFEST + +*.acn +*.aux +*.bbl +*.blg +*.glo +*.idx +*.ilg +*.ind +*.ist +*.loa +*.lof +*.log +*.lot +*.out +*.pdf +*.toc +*.gls +*.hd diff --git a/thesis/README.txt b/thesis/README.txt new file mode 100644 index 0000000..2ce1236 --- /dev/null +++ b/thesis/README.txt @@ -0,0 +1,122 @@ + vutinfth LaTeX2e document class + Academic thesis template + + by Thomas Auzinger + + +Description +----------- +The vutinfth document class is a LaTeX2e-based template for all theses written +at the Faculty of Informatics at the TU Wien. This package includes the +document class and its documentation as well as an example document that +includes a short introduction to LaTeX. + + +Support +------- +The vutinfth document class is developed using a GitLab-supported Git +repository. You can find it at + https://gitlab.com/ThomasAUZINGER/vutinfth +where a history of the development process is given. If you encounter problems +with using vutinfth, use the Issues section of GitLab to provide a description +and to alert the developers of your issue. Furthermore, you can use the Issues +section to request features or give suggestions. + + +Installation +------------ +To use the vutinfth class, it has first to be generated from the documented +source file vutinfth.dtx. This is achieved by executing the build script for +Windows systems (build-all.bat) or Unix-based systems (build-all.sh). Since the +generation process uses LaTeX itself, make sure that the LaTeX installation is +up-to-date. +The generated document class vutinfth.cls has then to be placed in a directory +that is part of the search path of the LaTeX compiler. The folder of the thesis +file is a valid location. +The build scripts also generate an exemplary LaTeX document that serves both as +an introduction to LaTeX and as a verification of the installed typesetting +system. The example document is compiled to example.pdf and it should match the +provided reference solution example-ref.pdf. + + +Usage +----- +When writing the actual thesis, the build functionalities of the used editor +are usually employed. For advanced functionalities of LaTeX, such as +glossaries, acronyms or indices, more complex build commands have to be used, +which often lead to difficulties. +Thus, additional build scripts for the thesis documents are provided for +Windows systems (build-thesis.bat) and Unix-based systems (build-thesis.sh). +These scripts do not rebuild the class file. +When using these scripts, the file name of the thesis file has to be provided +by directly editing these files. + + +Documentation +------------- +The documentation can be found in vutinfth.pdf, which is generated directly +from vutinfth.dtx. +This document class is derived from the memoir class at + https://www.ctan.org/pkg/memoir +where additional documentation can be found. + + +Files +----- +build-all.bat The batch file to generate all necessary files on Windows + systems. +build-all.sh The batch file to generate all necessary files on Unix-based + systems. +build-thesis.bat The batch file to generate the thesis on Windows systems. +build-thesis.sh The batch file to generate the thesis on Unix-based systems. +example-ref.pdf The reference solution for the compiled example document. +example.tex An LaTeX source file showing the use of the vutinfth + document class. +intro.bib The bibliography file of intro.tex. +intro.tex The LaTeX source file of a document that gives an + introduction to LaTeX. +lppl.txt The LaTeX Project Pulic License v1.3c. +README.txt This file. +vutinfth.dtx The documented source code and documentation file of the + vutinfth document class. +vutinfth.ins The installer file of the vutinfth document class. + +graphics/*.* Corporate identity graphics of the TU Wien and its Faculty + of Informatics. + + +Known Issues +------------- +The minitoc package is incompatible with this document class since the +incompatibility of the memoir document class is inherited. Use the titletoc +package as a replacement. + + +Acknowledgements +---------------- +Hiroyuki Sakai provided valuable feedback that accounts for several +improvements in version 1.4. + + +Copyright Notice +---------------- +Copyright (C) 2014-2020 by Thomas Auzinger + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Thomas Auzinger. + +This work consists of the files vutinfth.dtx and vutinfth.ins +and the derived file vutinfth.cls. +This work also consists of the file intro.tex. + +The 'TU Wien' logo and 'Fakultät für !nformatik' logo are copyright of the TU +Wien. \ No newline at end of file diff --git a/thesis/build-all.sh b/thesis/build-all.sh new file mode 100644 index 0000000..5a12a7d --- /dev/null +++ b/thesis/build-all.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# Copyright (C) 2014-2020 by Thomas Auzinger + +CLASS=vutinfth +SOURCE=thesis + +# Build vutinfth documentation +pdflatex $CLASS.dtx +pdflatex $CLASS.dtx +makeindex -s gglo.ist -o $CLASS.gls $CLASS.glo +makeindex -s gind.ist -o $CLASS.ind $CLASS.idx +pdflatex $CLASS.dtx +pdflatex $CLASS.dtx + +# Build the vutinfth class file +pdflatex $CLASS.ins + +# Build the vutinfth example document +pdflatex $SOURCE +bibtex $SOURCE +pdflatex $SOURCE +pdflatex $SOURCE +makeindex -t $SOURCE.glg -s $SOURCE.ist -o $SOURCE.gls $SOURCE.glo +makeindex -t $SOURCE.alg -s $SOURCE.ist -o $SOURCE.acr $SOURCE.acn +makeindex -t $SOURCE.ilg -o $SOURCE.ind $SOURCE.idx +pdflatex $SOURCE +pdflatex $SOURCE + +echo +echo +echo Class file and example document compiled. diff --git a/thesis/build-thesis.sh b/thesis/build-thesis.sh new file mode 100644 index 0000000..8c20a86 --- /dev/null +++ b/thesis/build-thesis.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# Copyright (C) 2014-2020 by Thomas Auzinger + +# Replace the 'x' in the next line with the name of the thesis' main LaTeX document without the '.tex' extension +SOURCE=thesis + +# Build the thesis document +pdflatex $SOURCE +bibtex $SOURCE +pdflatex $SOURCE +pdflatex $SOURCE +makeindex -t $SOURCE.glg -s $SOURCE.ist -o $SOURCE.gls $SOURCE.glo +makeindex -t $SOURCE.alg -s $SOURCE.ist -o $SOURCE.acr $SOURCE.acn +makeindex -t $SOURCE.ilg -o $SOURCE.ind $SOURCE.idx +pdflatex $SOURCE +pdflatex $SOURCE + +echo +echo +echo Thesis document compiled. diff --git a/thesis/graphics/TU_INF_Logo_partial.png b/thesis/graphics/TU_INF_Logo_partial.png new file mode 100644 index 0000000..470d8cc Binary files /dev/null and b/thesis/graphics/TU_INF_Logo_partial.png differ diff --git a/thesis/intro.tex b/thesis/intro.tex new file mode 100644 index 0000000..1ebba79 --- /dev/null +++ b/thesis/intro.tex @@ -0,0 +1,319 @@ +%% intro.tex +%% Copyright (C) 2014-2020 by Thomas Auzinger +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Thomas Auzinger. +% +% This work consists of the files vutinfth.dtx and vutinfth.ins +% and the derived file vutinfth.cls. +% This work also consists of the file intro.tex. + + +\newacronym{ctan}{CTAN}{Comprehensive TeX Archive Network} +\newacronym{faq}{FAQ}{Frequently Asked Questions} +\newacronym{pdf}{PDF}{Portable Document Format} +\newacronym{svn}{SVN}{Subversion} +\newacronym{wysiwyg}{WYSIWYG}{What You See Is What You Get} + +\newglossaryentry{texteditor} +{ + name={editor}, + description={A text editor is a type of program used for editing plain text files.} +} + +\chapter{Introduction to \LaTeX} + +Since \LaTeX\ is widely used in academia and industry, there exists a plethora of freely accessible introductions to the language. +Reading through the guide at \url{https://en.wikibooks.org/wiki/LaTeX} serves as a comprehensive overview for most of the functionality and is highly recommended before starting with a thesis in \LaTeX. + +\section{Installation} + +A full \LaTeX\ distribution\index{distribution} consists not only of the binaries that convert the source files to the typeset documents, but also of a wide range of packages and their documentation. +Depending on the operating system, different implementations are available as shown in Table~\ref{tab:distrib}. +\textbf{Due to the large amount of packages that are in everyday use and due to their high interdependence, it is paramount to keep the installed distribution\index{distribution} up to date.} +Otherwise, obscure errors and tedious debugging ensue. + +\begin{table} + \centering + \begin{tabular}{cccc} + \toprule + Distribution & Unix & Windows & MacOS \\ + \midrule + TeX Live & \textbf{yes} & yes & (yes) \\ + MacTeX & no & no & \textbf{yes} \\ + MikTeX & (yes) & \textbf{yes} & yes \\ + \bottomrule + \end{tabular} + \caption{\TeX/\LaTeX\ distributions for different operating systems. Recomended choice in \textbf{bold}.} + \label{tab:distrib} % \label has to be placed AFTER \caption to produce correct cross-references. +\end{table} + +\section{Editors} + +A multitude of \TeX\ \glspl{texteditor} are available differing in their editing models, their supported operating systems and their feature sets. +A comprehensive overview of \glspl{texteditor} can be found at the Wikipedia page \url{https://en.wikipedia.org/wiki/Comparison_of_TeX_editors}. +TeXstudio (\url{http://texstudio.sourceforge.net/}) is recommended. +Most editors support a synchronization of the generated document and the \LaTeX\ source by \verb|Ctrl| clicking either on the source document or the generated document. + +\section{Compilation} + +Modern editors usually provide the compilation programs to generate \gls{pdf} documents and for most \LaTeX\ source files, this is sufficient. +More advanced \LaTeX\ functionality, such as glossaries and bibliographies, needs additional compilation steps, however. +It is also possible that errors in the compilation process invalidate intermediate files and force subsequent compilation runs to fail. +It is advisable to delete intermediate files (\verb|.aux|, \verb|.bbl|, etc.), if errors occur and persist. +All files that are not generated by the user are automatically regenerated. +To compile the current document, the steps as shown in Table~\ref{tab:compile} have to be taken. + + +\begin{table} + \centering + \begin{tabular}{rl} + \toprule + & Description \\ + \midrule + 1 & Scan for refs, toc/lof/lot/loa items and cites \\ + 2 & Build the bibliography \\ + 3 & Link refs and build the toc/lof/lot/loa \\ + 4 & Link the bibliography \\ + 5 & Build the glossary \\ + 6 & Build the acronyms \\ + 7 & Build the index \\ + 8 & Link the glossary, acronyms, and the index \\ + 9 & Link the bookmarks \\ + \midrule + & Command \\ + \midrule + 1 & \verb|pdflatex.exe example| \\ + 2 & \verb|bibtex.exe example| \\ + 3 & \verb|pdflatex.exe example| \\ + 4 & \verb|pdflatex.exe example| \\ + 5 & \verb|makeindex.exe -t example.glg -s example.ist| \\ + & \verb| -o example.gls example.glo| \\ + 6 & \verb|makeindex.exe -t example.alg -s example.ist| \\ + & \verb| -o example.acr example.acn| \\ + 7 & \verb|makeindex.exe -t example.ilg -o example.ind example.idx| \\ + 8 & \verb|pdflatex.exe example| \\ + 9 & \verb|pdflatex.exe example| \\ + \bottomrule + \end{tabular} + \caption{Compilation steps for this document. The following abbreviations were used: table of contents (toc), list of figures (lof), list of tables (lot), list of algorithms (loa).} + \label{tab:compile} % \label has to be placed AFTER \caption to produce correct cross-references. +\end{table} + + +\section{Basic Functionality} + +In this section, various examples are given of the fundamental building blocks used in a thesis. +Many \LaTeX\ commands have a rich set of options that can be supplied as optional arguments. +The documentation of each command should be consulted to get an impression of the full spectrum of its functionality. + +\subsection{Floats} + +Two main categories of page elements can be differentiated in the usual \LaTeX\ workflow: \textit{(i)} the main stream of text and \textit{(ii)} floating containers that are positioned at convenient positions throughout the document. +In most cases, tables, plots, and images are put into such containers since they are usually positioned at the top or bottom of pages. +These are realized by the two environments \verb|figure| and \verb|table|, which also provide functionality for cross-referencing (see Table~\ref{tab:intro} and Figure~\ref{fig:intro}) and the generation of corresponding entries in the list of figures and the list of tables. +Note that these environments solely act as containers and can be assigned arbitrary content. + +\subsection{Tables} + +A table in \LaTeX\ is created by using a \verb|tabular| environment or any of its extensions, e.g., \verb|tabularx|. +The commands \verb|\multirow| and \verb|\multicolumn| allow table elements to span multiple rows and columns. + +\begin{table}[h] % placement specifier + \centering + \begin{tabular}{lll} + \toprule + \multicolumn{2}{c}{Position} \\ + \cmidrule{1-2} % partial horizontal rule + Group & Abbrev & Name \\ + \midrule + Goalkeeper & GK & Paul Robinson \\ + \midrule + \multirow{4}{*}{Defenders} & LB & Lucus Radebe \\ + & DC & Michael Duburry \\ + & DC & Dominic Matteo \\ + & RB & Didier Domi \\ + \midrule + \multirow{3}{*}{Midfielders} & MC & David Batty \\ + & MC & Eirik Bakke \\ + & MC & Jody Morris \\ + \midrule + Forward & FW & Jamie McMaster \\ + \midrule + \multirow{2}{*}{Strikers} & ST & Alan Smith \\ + & ST & Mark Viduka \\ + \bottomrule + \end{tabular} + \caption{Adapted example from the \LaTeX guide at \url{https://en.wikibooks.org/wiki/LaTeX/Tables}. This example uses rules specific to the \texttt{booktabs} package and employs the multi-row functionality of the \texttt{multirow} package.} + \label{tab:intro} % \label has to be placed AFTER \caption to produce correct cross-references. +\end{table} + +\subsection{Images} + +An image is added to a document via the \verb|\includegraphics| command as shown in Figure~\ref{fig:intro}. +The \verb|\subcaption| command can be used to reference subfigures, such as Figure~\ref{fig:intro:full width} and~\ref{fig:intro:half width}. + +\begin{figure}[h] + \centering + \begin{subfigure}[b]{0.45\columnwidth} + \centering + \includegraphics[width=\textwidth]{Logo-schwarz.pdf} + \subcaption{The header logo at text width.} + \label{fig:intro:full width} + \end{subfigure} + \begin{subfigure}[b]{0.45\columnwidth} + \centering + \includegraphics[width=0.5\textwidth]{Logo-schwarz.pdf} + \subcaption{The header logo at half the text width.} + \label{fig:intro:half width} + \end{subfigure} + \caption[Optional caption for the figure list (often used to abbreviate long captions)]{The header logo at different sizes.} % Remove the [...] argument if the original caption should be used in the figure list. + \label{fig:intro} % \label has to be placed AFTER \caption (or \subcaption) to produce correct cross-references. +\end{figure} + +\subsection{Mathematical Expressions} + +One of the original motivation to create the \TeX\ system was the need for mathematical typesetting. +To this day, \LaTeX\ is the preferred system to write math-heavy documents and a wide variety of functions aids the author in this task. +A mathematical expression can be inserted inline as $\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}$ outside of the text stream as \[ \sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6} \] or as numbered equation with +\begin{equation} +\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}. +\end{equation} + +\subsection{Pseudo Code} + +The presentation of algorithms can be achieved with various packages; the most popular are \verb|algorithmic|, \verb|algorithm2e|, \verb|algorithmicx|, or \verb|algpseudocode|. +An overview is given at \url{https://tex.stackexchange.com/questions/229355}. +An example of the use of the \verb|alogrithm2e| package is given with Algorithm~\ref{alg:gauss-seidel}. + +\begin{algorithm} + \SetKw{BreakFor}{break for} + \KwIn{A scalar~$\epsilon$, a matrix $\mathbf{A} = (a_{ij})$, a vector $\vec{b}$, and an initial vector $\vec{x}^{(0)}$} + \KwOut{$\vec{x}^{(n)}$ with $\mathbf{A} \vec{x}^{(n)} \approx \vec{b}$} + \For{$k\leftarrow 1$ \KwTo maximum iterations} + { + \For{$i\leftarrow 1$ \KwTo $n$} + { + $x_i^{(k)} = \frac{1}{a_{ii}} \left(b_i-\sum_{ji} a_{ij} x_j^{(k-1)} \right)$\; + } + \If{$\lvert\vec{x}^{(k)}-\vec{x}^{(k-1)}\rvert < \epsilon$} + {\BreakFor\;} + } + \Return{$\vec{x}^{(k)}$\;} + \caption{Gauss-Seidel} + \label{alg:gauss-seidel} % \label has to be placed AFTER \caption to produce correct cross-references. +\end{algorithm} + +\section{Bibliography} + +The referencing of prior work is a fundamental requirement of academic writing and well supported by \LaTeX. +The \textsc{Bib}\TeX\ reference management software is the most commonly used system for this purpose. +Using the \verb|\cite| command, it is possible to reference entries in a \verb|.bib| file out of the text stream, e.g., as~\cite{Turing1936}. +The generation of the formatted bibliography needs a separate execution of \verb|bibtex.exe| (see Table~\ref{tab:compile}). + +\section{Table of Contents} + +The table of contents is automatically built by successive runs of the compilation, e.g., of \verb|pdflatex.exe|. +The command \verb|\setsecnumdepth| allows the specification of the depth of the table of contents and additional entries can be added to the table of contents using \verb|\addcontentsline|. +The starred versions of the sectioning commands, i.e., \verb|\chapter*|, \verb|\section*|, etc., remove the corresponding entry from the table of contents. + +\section{Acronyms / Glossary / Index} + +The list of acronyms, the glossary, and the index need to be built with a separate execution of \verb|makeindex| (see Table~\ref{tab:compile}). +Acronyms have to be specified with \verb|\newacronym| while glossary entries use \verb|\newglossaryentry|. +Both are then used in the document content with one of the variants of \verb|\gls|, such as \verb|\Gls|, \verb|\glspl|, or \verb|\Glspl|. +Index items are simply generated by placing \verb|\index|\marg{entry} next to all the words that correspond to the index entry \meta{entry}. +Note that many enhancements exist for these functionalities and the documentation of the \verb|makeindex| and the \verb|glossaries| packages should be consulted. + +\section{Tips} + +Since \TeX\ and its successors do not employ a \gls{wysiwyg} editing scheme, several guidelines improve the readability of the source content: +\begin{itemize} +\item Each sentence in the source text should start with a new line. + This helps not only the user navigation through the text, but also enables revision control systems (e.g. \gls{svn}, Git) to show the exact changes authored by different users. + Paragraphs are separated by one (or more) empty lines. +\item Environments, which are defined by a matching pair of \verb|\begin{name}| and \verb|\end{name}|, can be indented by whitespace to show their hierarchical structure. +\item In most cases, the explicit use of whitespace (e.g. by adding \verb|\hspace{4em}| or \verb|\vspace{1.5cm}|) violates typographic guidelines and rules. + Explicit formatting should only be employed as a last resort and, most likely, better ways to achieve the desired layout can be found by a quick web search. +\item The use of bold or italic text is generally not supported by typographic considerations and the semantically meaningful \verb|\emph{|\texttt{$\dots$}\verb|}| should be used. +\end{itemize} + +The predominant application of the \LaTeX\ system is the generation of \gls{pdf} files via the \textsc{Pdf}\LaTeX\ binaries. +In the current version of \textsc{Pdf}\LaTeX, it is possible that absolute file paths and user account names are embedded in the final \gls{pdf} document. +While this poses only a minor security issue for all documents, it is highly problematic for double blind reviews. +The process shown in Table~\ref{tab:ps2pdf} can be employed to strip all private information from the final \gls{pdf} document. + +\begin{table}[h] + \centering + \begin{tabular}{rl} + \toprule + & Command \\ + \midrule + 1 & Rename the \gls{pdf} document \verb|final.pdf| to \verb|final.ps|. \\ + 2 & Execute the following command: \\ + & \verb|ps2pdf -dPDFSETTINGS#/prepress ^| \\ + & \verb| -dCompatibilityLevel#1.4 ^| \\ + & \verb| -dAutoFilterColorImages#false ^| \\ + & \verb| -dAutoFilterGrayImages#false ^| \\ + & \verb| -dColorImageFilter#/FlateEncode ^| \\ + & \verb| -dGrayImageFilter#/FlateEncode ^| \\ + & \verb| -dMonoImageFilter#/FlateEncode ^| \\ + & \verb| -dDownsampleColorImages#false ^| \\ + & \verb| -dDownsampleGrayImages#false ^| \\ + & \verb| final.ps final.pdf| \\ + \bottomrule + \end{tabular} + + On Unix-based systems, replace \verb|#| with \verb|=| and \verb|^| with \verb|\|. + \caption{Anonymization of \gls{pdf} documents.} + \label{tab:ps2pdf} +\end{table} + +\section{Resources} + +\subsection{Useful Links} + +In the following, a listing of useful web resources is given. +\begin{description} +\item[\url{https://en.wikibooks.org/wiki/LaTeX}] An extensive wiki-based guide to \LaTeX. +\item[\url{http://www.tex.ac.uk/faq}] A (huge) set of \gls{faq} about \TeX\ and \LaTeX. +\item[\url{https://tex.stackexchange.com/}] The definitive user forum for non-trivial \LaTeX-related questions and answers. +\end{description} + +\subsection[Comprehensive TeX Archive Network]{\gls{ctan}} + +The \gls{ctan} is the official repository for all \TeX\ related material. +It can be accessed via \url{https://www.ctan.org/} and hosts (among other things) a huge variety of packages that provide extended functionality for \TeX\ and its successors. +Note that most packages contain \gls{pdf} documentation that can be directly accessed via \gls{ctan}. + +In the following, a short, non-exhaustive list of relevant \gls{ctan}-hosted packages is given together with their relative path. +\begin{description}[itemsep=0ex] +\item[\href{https://www.ctan.org/pkg/algorithm2e}{algorithm2e}] Functionality for writing pseudo code. +\item[\href{https://www.ctan.org/pkg/amsmath}{amsmath}] Enhanced functionality for typesetting mathematical expressions. +\item[\href{https://www.ctan.org/pkg/amsfonts}{amssymb}] Provides a multitude of mathematical symbols. +\item[\href{https://www.ctan.org/pkg/booktabs}{booktabs}] Improved typesetting of tables. +\item[\href{https://www.ctan.org/pkg/enumitem}{enumitem}] Control over the layout of lists (\verb|itemize|, \verb|enumerate|, \verb|description|). +\item[\href{https://www.ctan.org/pkg/fontenc}{fontenc}] Determines font encoding of the output. +\item[\href{https://www.ctan.org/pkg/glossaries}{glossaries}] Create glossaries and list of acronyms. +\item[\href{https://www.ctan.org/pkg/graphicx}{graphicx}] Insert images into the document. +\item[\href{https://www.ctan.org/pkg/inputenc}{inputenc}] Determines encoding of the input. +\item[\href{https://www.ctan.org/pkg/l2tabu}{l2tabu}] A description of bad practices when using \LaTeX. +\item[\href{https://www.ctan.org/pkg/mathtools}{mathtools}] Further extension of mathematical typesetting. +\item[\href{https://www.ctan.org/pkg/memoir}{memoir}] The document class on upon which the \verb|vutinfth| document class is based. +\item[\href{https://www.ctan.org/pkg/multirow}{multirow}] Allows table elements to span several rows. +\item[\href{https://www.ctan.org/pkg/pgfplots}{pgfplots}] Function plot drawings. +\item[\href{https://www.ctan.org/pkg/pgf}{pgf/TikZ}] Creating graphics inside \LaTeX\ documents. +\item[\href{https://www.ctan.org/pkg/subcaption}{subcaption}] Allows the use of subfigures and enables their referencing. +\item[\href{https://www.ctan.org/tex-archive/info/symbols/comprehensive/}{symbols/comprehensive}] A listing of around 5000 symbols that can be used with \LaTeX. +\item[\href{https://www.ctan.org/pkg/voss-mathmode}{voss-mathmode}] A comprehensive overview of typesetting mathematics in \LaTeX. +\item[\href{https://www.ctan.org/pkg/xcolor}{xcolor}] Allows the definition and use of colors. +\end{description} \ No newline at end of file diff --git a/thesis/lppl.txt b/thesis/lppl.txt new file mode 100644 index 0000000..2244313 --- /dev/null +++ b/thesis/lppl.txt @@ -0,0 +1,416 @@ +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3c 2008-05-04 + +Copyright 1999 2002-2008 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +it is written in such a way that you can use it even if your work is +unrelated to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + `LaTeX-Format' or in the case of files belonging to the + `LaTeX-format' a program implementing the `TeX language'. + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, + unmodified copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do not +apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under a different license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for a +particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you assume +the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of the +Work, or any other party who may distribute and/or modify the Work as +permitted above, be liable to you for damages, including any general, +special, incidental or consequential damages arising out of any use of +the Work or out of inability to use the Work (including, but not limited +to, loss of data, data being rendered inaccurate, or losses sustained by +anyone as a result of any failure of the Work to operate with any other +programs), even if the Copyright Holder or said author or said other +party has been advised of the possibility of such damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that it is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2005 M. Y. Name + % + % This work may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://www.latex-project.org/lppl.txt + % and version 1.3 or later is part of all distributions of LaTeX + % version 2005/12/01 or later. + % + % This work has the LPPL maintenance status `maintained'. + % + % The Current Maintainer of this work is M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any `LaTeX-Format', and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change `maintained' above into `author-maintained'. +However, we recommend that you use `maintained', as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + +Derived Works That Are Not Replacements +--------------------------------------- + +Several clauses of the LPPL specify means to provide reliability and +stability for the user community. They therefore concern themselves +with the case that a Derived Work is intended to be used as a +(compatible or incompatible) replacement of the original Work. If +this is not the case (e.g., if a few lines of code are reused for a +completely different task), then clauses 6b and 6d shall not apply. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. + diff --git a/thesis/references.bib b/thesis/references.bib new file mode 100644 index 0000000..9a0e33c --- /dev/null +++ b/thesis/references.bib @@ -0,0 +1,305 @@ +@article{an2019, + title = {Identification and {{Classification}} of {{Maize Drought Stress Using Deep Convolutional Neural Network}}}, + author = {An, Jiangyong and Li, Wanyi and Li, Maosong and Cui, Sanrong and Yue, Huanran}, + date = {2019-02}, + journaltitle = {Symmetry}, + volume = {11}, + number = {2}, + pages = {256}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {2073-8994}, + doi = {10.3390/sym11020256}, + issue = {2}, + langid = {english}, + keywords = {deep convolutional neural network,drought classification,drought identification,drought stress,maize,phenotype,traditional machine learning} +} + +@article{ariss2022, + title = {{{ResNet-based Parkinson}}'s {{Disease Classification}}}, + author = {Ariss, Omar El and Hu, Kaoning}, + date = {2022}, + journaltitle = {IEEE Transactions on Artificial Intelligence}, + pages = {1--11}, + issn = {2691-4581}, + doi = {10.1109/TAI.2022.3193651}, + eventtitle = {{{IEEE Transactions}} on {{Artificial Intelligence}}}, + keywords = {Convolutional Neural Networks,deep learning,Deep learning,diagnosis,Diseases,Feature extraction,frequency features,heat map,Heating systems,Parkinson's disease,Parkinson's Disease,Recording,Residual neural networks,ResNet,speech recording,transfer learning} +} + +@article{atanasov2021, + title = {Predicting Soil Moisture Based on the Color of the Leaves Using Data Mining and Machine Learning Techniques}, + author = {Atanasov, S. S.}, + date = {2021-01}, + journaltitle = {IOP Conference Series: Materials Science and Engineering}, + shortjournal = {IOP Conf. Ser.: Mater. Sci. Eng.}, + volume = {1031}, + number = {1}, + pages = {012076}, + publisher = {{IOP Publishing}}, + issn = {1757-899X}, + doi = {10.1088/1757-899X/1031/1/012076}, + langid = {english} +} + +@article{awad2019, + title = {Toward {{Precision}} in {{Crop Yield Estimation Using Remote Sensing}} and {{Optimization Techniques}}}, + author = {Awad, Mohamad M.}, + date = {2019-03}, + journaltitle = {Agriculture}, + volume = {9}, + number = {3}, + pages = {54}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {2077-0472}, + doi = {10.3390/agriculture9030054}, + issue = {3}, + langid = {english}, + keywords = {crop yield,environment,evapotranspiration,image processing,remote sensing} +} + +@inproceedings{azimi2020, + title = {Water {{Stress Identification}} in {{Chickpea Plant Shoot Images}} Using {{Deep Learning}}}, + booktitle = {2020 {{IEEE}} 17th {{India Council International Conference}} ({{INDICON}})}, + author = {Azimi, Shiva and Kaur, Taranjit and Gandhi, Tapan K}, + date = {2020-12}, + pages = {1--7}, + issn = {2325-9418}, + doi = {10.1109/INDICON49873.2020.9342388}, + eventtitle = {2020 {{IEEE}} 17th {{India Council International Conference}} ({{INDICON}})}, + keywords = {computer vision,deep learning,Deep learning,Nitrogen,plant phenotyping,Proteins,Real-time systems,Stress,Support vector machines,Tools,water stress} +} + +@article{azimi2021, + title = {Intelligent {{Monitoring}} of {{Stress Induced}} by {{Water Deficiency}} in {{Plants Using Deep Learning}}}, + author = {Azimi, Shiva and Wadhawan, Rohan and Gandhi, Tapan K.}, + date = {2021}, + journaltitle = {IEEE Transactions on Instrumentation and Measurement}, + volume = {70}, + pages = {1--13}, + issn = {1557-9662}, + doi = {10.1109/TIM.2021.3111994}, + eventtitle = {{{IEEE Transactions}} on {{Instrumentation}} and {{Measurement}}}, + keywords = {Computer vision,convolutional neural network (CNN),Convolutional neural networks,Crops,deep learning (DL),Long short term memory,long short-term memory (LSTM),monitoring,neural network,Pipelines,plant phenotyping,spatiotemporal analysis,Stress,Visualization,water stress} +} + +@article{benos2021, + title = {Machine {{Learning}} in {{Agriculture}}: {{A Comprehensive Updated Review}}}, + shorttitle = {Machine {{Learning}} in {{Agriculture}}}, + author = {Benos, Lefteris and Tagarakis, Aristotelis C. and Dolias, Georgios and Berruto, Remigio and Kateris, Dimitrios and Bochtis, Dionysis}, + date = {2021-01}, + journaltitle = {Sensors}, + volume = {21}, + number = {11}, + pages = {3758}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {1424-8220}, + doi = {10.3390/s21113758}, + issue = {11}, + langid = {english}, + keywords = {artificial intelligence,crop management,livestock management,machine learning,precision agriculture,precision livestock farming,soil management,water management} +} + +@misc{bochkovskiy2020, + title = {{{YOLOv4}}: {{Optimal Speed}} and {{Accuracy}} of {{Object Detection}}}, + shorttitle = {{{YOLOv4}}}, + author = {Bochkovskiy, Alexey and Wang, Chien-Yao and Liao, Hong-Yuan Mark}, + date = {2020-04-22}, + number = {arXiv:2004.10934}, + eprint = {2004.10934}, + eprinttype = {arxiv}, + publisher = {{arXiv}}, + doi = {10.48550/arXiv.2004.10934}, + archiveprefix = {arXiv}, + keywords = {Computer Science - Computer Vision and Pattern Recognition,Electrical Engineering and Systems Science - Image and Video Processing} +} + +@misc{brown2020, + title = {Language {{Models}} Are {{Few-Shot Learners}}}, + author = {Brown, Tom B. and Mann, Benjamin and Ryder, Nick and Subbiah, Melanie and Kaplan, Jared and Dhariwal, Prafulla and Neelakantan, Arvind and Shyam, Pranav and Sastry, Girish and Askell, Amanda and Agarwal, Sandhini and Herbert-Voss, Ariel and Krueger, Gretchen and Henighan, Tom and Child, Rewon and Ramesh, Aditya and Ziegler, Daniel M. and Wu, Jeffrey and Winter, Clemens and Hesse, Christopher and Chen, Mark and Sigler, Eric and Litwin, Mateusz and Gray, Scott and Chess, Benjamin and Clark, Jack and Berner, Christopher and McCandlish, Sam and Radford, Alec and Sutskever, Ilya and Amodei, Dario}, + date = {2020-07-22}, + number = {arXiv:2005.14165}, + eprint = {2005.14165}, + eprinttype = {arxiv}, + publisher = {{arXiv}}, + doi = {10.48550/arXiv.2005.14165}, + archiveprefix = {arXiv}, + keywords = {Computer Science - Computation and Language} +} + +@article{chandel2021, + title = {Identifying Crop Water Stress Using Deep Learning Models}, + author = {Chandel, Narendra Singh and Chakraborty, Subir Kumar and Rajwade, Yogesh Anand and Dubey, Kumkum and Tiwari, Mukesh K. and Jat, Dilip}, + date = {2021-05-01}, + journaltitle = {Neural Computing and Applications}, + shortjournal = {Neural Comput \& Applic}, + volume = {33}, + number = {10}, + pages = {5353--5367}, + issn = {1433-3058}, + doi = {10.1007/s00521-020-05325-4}, + langid = {english}, + keywords = {Confusion matrix,Crop phenotyping,DCNN,Digital agriculture,Machine learning} +} + +@article{lopez-garcia2022, + title = {Machine {{Learning-Based Processing}} of {{Multispectral}} and {{RGB UAV Imagery}} for the {{Multitemporal Monitoring}} of {{Vineyard Water Status}}}, + author = {LĂłpez-GarcĂ­a, Patricia and Intrigliolo, Diego and Moreno, Miguel A. and MartĂ­nez-Moreno, Alejandro and Ortega, JosĂ© Fernando and PĂ©rez-Álvarez, Eva Pilar and Ballesteros, RocĂ­o}, + date = {2022-09}, + journaltitle = {Agronomy}, + volume = {12}, + number = {9}, + pages = {2122}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {2073-4395}, + doi = {10.3390/agronomy12092122}, + issue = {9}, + langid = {english}, + keywords = {ANN,machine learning,multispectral images,RGB images,UAV,vineyard,water stress} +} + +@article{mateo-aroca2019, + title = {Remote {{Image Capture System}} to {{Improve Aerial Supervision}} for {{Precision Irrigation}} in {{Agriculture}}}, + author = {Mateo-Aroca, Antonio and GarcĂ­a-Mateos, GinĂ©s and Ruiz-Canales, Antonio and Molina-GarcĂ­a-Pardo, JosĂ© MarĂ­a and Molina-MartĂ­nez, JosĂ© Miguel}, + date = {2019-02}, + journaltitle = {Water}, + volume = {11}, + number = {2}, + pages = {255}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {2073-4441}, + doi = {10.3390/w11020255}, + issue = {2}, + langid = {english}, + keywords = {image capture system,irrigation management,lettuce,wireless,ZigBee and XBee} +} + +@article{mcenroe2022, + title = {A {{Survey}} on the {{Convergence}} of {{Edge Computing}} and {{AI}} for {{UAVs}}: {{Opportunities}} and {{Challenges}}}, + shorttitle = {A {{Survey}} on the {{Convergence}} of {{Edge Computing}} and {{AI}} for {{UAVs}}}, + author = {McEnroe, Patrick and Wang, Shen and Liyanage, Madhusanka}, + date = {2022-09}, + journaltitle = {IEEE Internet of Things Journal}, + volume = {9}, + number = {17}, + pages = {15435--15459}, + issn = {2327-4662}, + doi = {10.1109/JIOT.2022.3176400}, + eventtitle = {{{IEEE Internet}} of {{Things Journal}}}, + keywords = {Artificial intelligence,Artificial intelligence (AI),Autonomous aerial vehicles,Cloud computing,edge AI,edge computing,Edge computing,edge intelligence,Internet of Things,Internet of Things (IoT),MEC,Servers,Task analysis,unmanned aerial vehicle (UAV)} +} + +@article{nadafzadeh2019, + title = {Design and Fabrication of an Intelligent Control System for Determination of Watering Time for Turfgrass Plant Using Computer Vision System and Artificial Neural Network}, + author = {Nadafzadeh, Maryam and Abdanan Mehdizadeh, Saman}, + date = {2019-10-01}, + journaltitle = {Precision Agriculture}, + shortjournal = {Precision Agric}, + volume = {20}, + number = {5}, + pages = {857--879}, + issn = {1573-1618}, + doi = {10.1007/s11119-018-9618-x}, + langid = {english}, + keywords = {Artificial neural network,Digital image processing,Drought stress,Genetic algorithm,Intelligent irrigation control} +} + +@article{ramos-giraldo2020, + title = {Drought {{Stress Detection Using Low-Cost Computer Vision Systems}} and {{Machine Learning Techniques}}}, + author = {Ramos-Giraldo, Paula and Reberg-Horton, Chris and Locke, Anna M. and Mirsky, Steven and Lobaton, Edgar}, + date = {2020-05}, + journaltitle = {IT Professional}, + volume = {22}, + number = {3}, + pages = {27--29}, + issn = {1941-045X}, + doi = {10.1109/MITP.2020.2986103}, + eventtitle = {{{IT Professional}}}, + keywords = {Agriculture,Climate change,Computer vision,Loss measurement,Machine learning,Stress measurement} +} + +@inproceedings{ramos-giraldo2020a, + title = {Low-Cost {{Smart Camera System}} for {{Water Stress Detection}} in {{Crops}}}, + booktitle = {2020 {{IEEE SENSORS}}}, + author = {Ramos-Giraldo, Paula and Reberg-Horton, S. Chris and Mirsky, Steven and Lobaton, Edgar and Locke, Anna M. and Henriquez, Esleyther and Zuniga, Ane and Minin, Artem}, + date = {2020-10}, + pages = {1--4}, + issn = {2168-9229}, + doi = {10.1109/SENSORS47125.2020.9278744}, + eventtitle = {2020 {{IEEE SENSORS}}}, + keywords = {Agriculture,Cameras,Computational modeling,computer vision,edge and cloud computing,IoT,machine learning,Sensor systems,Sensors,smart farming,Stress,Temperature sensors} +} + +@article{su2020, + title = {Machine {{Learning-Based Crop Drought Mapping System}} by {{UAV Remote Sensing RGB Imagery}}}, + author = {Su, Jinya and Coombes, Matthew and Liu, Cunjia and Zhu, Yongchao and Song, Xingyang and Fang, Shibo and Guo, Lei and Chen, Wen-Hua}, + date = {2020-01}, + journaltitle = {Unmanned Systems}, + shortjournal = {Un. Sys.}, + volume = {08}, + number = {01}, + pages = {71--83}, + publisher = {{World Scientific Publishing Co.}}, + issn = {2301-3850}, + doi = {10.1142/S2301385020500053}, + keywords = {Area-wise classification,Support Vector Machine (SVM),Unmanned Aerial Vehicle (UAV),wheat drought mapping} +} + +@article{virnodkar2020, + title = {Remote Sensing and Machine Learning for Crop Water Stress Determination in Various Crops: A Critical Review}, + shorttitle = {Remote Sensing and Machine Learning for Crop Water Stress Determination in Various Crops}, + author = {Virnodkar, Shyamal S. and Pachghare, Vinod K. and Patil, V. C. and Jha, Sunil Kumar}, + date = {2020-10-01}, + journaltitle = {Precision Agriculture}, + shortjournal = {Precision Agric}, + volume = {21}, + number = {5}, + pages = {1121--1155}, + issn = {1573-1618}, + doi = {10.1007/s11119-020-09711-9}, + langid = {english}, + keywords = {Crop water stress,Crops,Machine learning,Remote sensing} +} + +@article{wakamori2020, + title = {Multimodal Neural Network with Clustering-Based Drop for Estimating Plant Water Stress}, + author = {Wakamori, Kazumasa and Mizuno, Ryosuke and Nakanishi, Gota and Mineno, Hiroshi}, + date = {2020-01-01}, + journaltitle = {Computers and Electronics in Agriculture}, + shortjournal = {Computers and Electronics in Agriculture}, + volume = {168}, + pages = {105118}, + issn = {0168-1699}, + doi = {10.1016/j.compag.2019.105118}, + langid = {english}, + keywords = {Image processing,Multimodal deep learning,Plant water stress,Time-series modeling} +} + +@article{zhong2022, + title = {Classification of {{Cassava Leaf Disease Based}} on a {{Non-Balanced Dataset Using Transformer-Embedded ResNet}}}, + author = {Zhong, Yiwei and Huang, Baojin and Tang, Chaowei}, + date = {2022-09}, + journaltitle = {Agriculture}, + volume = {12}, + number = {9}, + pages = {1360}, + publisher = {{Multidisciplinary Digital Publishing Institute}}, + issn = {2077-0472}, + doi = {10.3390/agriculture12091360}, + issue = {9}, + langid = {english}, + keywords = {cassava diseases,convolutional neural network,focal angular margin penalty softmax loss (FAMP-Softmax),intelligent agricultural engineering,transformer-embedded ResNet (T-RNet),unbalanced image samples} +} + +@article{zhuang2017, + title = {Early Detection of Water Stress in Maize Based on Digital Images}, + author = {Zhuang, Shuo and Wang, Ping and Jiang, Boran and Li, Maosong and Gong, Zhihong}, + date = {2017-08-01}, + journaltitle = {Computers and Electronics in Agriculture}, + shortjournal = {Computers and Electronics in Agriculture}, + volume = {140}, + pages = {461--468}, + issn = {0168-1699}, + doi = {10.1016/j.compag.2017.06.022}, + langid = {english}, + keywords = {Early maize,Feature extraction,Gradient boosting decision tree,Image segmentation,Water stress} +} diff --git a/thesis/thesis.tex b/thesis/thesis.tex new file mode 100644 index 0000000..3176a01 --- /dev/null +++ b/thesis/thesis.tex @@ -0,0 +1,137 @@ +% Copyright (C) 2014-2020 by Thomas Auzinger + +\documentclass[draft,final]{vutinfth} % Remove option 'final' to obtain debug information. + +% Load packages to allow in- and output of non-ASCII characters. +\usepackage{lmodern} % Use an extension of the original Computer Modern font to minimize the use of bitmapped letters. +\usepackage[T1]{fontenc} % Determines font encoding of the output. Font packages have to be included before this line. +\usepackage[utf8]{inputenc} % Determines encoding of the input. All input files have to use UTF8 encoding. + +% Extended LaTeX functionality is enables by including packages with \usepackage{...}. +\usepackage{amsmath} % Extended typesetting of mathematical expression. +\usepackage{amssymb} % Provides a multitude of mathematical symbols. +\usepackage{mathtools} % Further extensions of mathematical typesetting. +\usepackage{microtype} % Small-scale typographic enhancements. +\usepackage[inline]{enumitem} % User control over the layout of lists (itemize, enumerate, description). +\usepackage{multirow} % Allows table elements to span several rows. +\usepackage{booktabs} % Improves the typesettings of tables. +\usepackage{subcaption} % Allows the use of subfigures and enables their referencing. +\usepackage[ruled,linesnumbered,algochapter]{algorithm2e} % Enables the writing of pseudo code. +\usepackage[usenames,dvipsnames,table]{xcolor} % Allows the definition and use of colors. This package has to be included before tikz. +\usepackage{nag} % Issues warnings when best practices in writing LaTeX documents are violated. +\usepackage{todonotes} % Provides tooltip-like todo notes. +\usepackage{hyperref} % Enables cross linking in the electronic document version. This package has to be included second to last. +\usepackage[acronym,toc]{glossaries} % Enables the generation of glossaries and lists fo acronyms. This package has to be included last. + +% Define convenience functions to use the author name and the thesis title in the PDF document properties. +\newcommand{\authorname}{Tobias Eidelpes} % The author name without titles. +\newcommand{\thesistitle}{Flower State Classification for Watering System} % The title of the thesis. The English version should be used, if it exists. + +% Set PDF document properties +\hypersetup{ + pdfpagelayout = TwoPageRight, % How the document is shown in PDF viewers (optional). + linkbordercolor = {Melon}, % The color of the borders of boxes around crosslinks (optional). + pdfauthor = {\authorname}, % The author's name in the document properties (optional). + pdftitle = {\thesistitle}, % The document's title in the document properties (optional). + pdfsubject = {Subject}, % The document's subject in the document properties (optional). + pdfkeywords = {Object Detection, Image Classification, Machine Learning, Embedded Programming} % The document's keywords in the document properties (optional). +} + +\setpnumwidth{2.5em} % Avoid overfull hboxes in the table of contents (see memoir manual). +\setsecnumdepth{subsection} % Enumerate subsections. + +\nonzeroparskip % Create space between paragraphs (optional). +\setlength{\parindent}{0pt} % Remove paragraph identation (optional). + +\makeindex % Use an optional index. +\makeglossaries % Use an optional glossary. +%\glstocfalse % Remove the glossaries from the table of contents. + +% Set persons with 4 arguments: +% {title before name}{name}{title after name}{gender} +% where both titles are optional (i.e. can be given as empty brackets {}). +\setauthor{}{\authorname}{BSc}{male} +\setadvisor{Ao.Univ.-Prof. Dr.}{Horst Eidenberger}{}{male} + +\setregnumber{01527193} +\setdate{20}{02}{2023} % Set date with 3 arguments: {day}{month}{year}. +\settitle{\thesistitle}{Flower State Classification for Watering System} % Sets English and German version of the title (both can be English or German). + +% Select the thesis type: bachelor / master / doctor / phd-school. +% Master: +\setthesis{master} +\setmasterdegree{dipl.} % dipl. / rer.nat. / rer.soc.oec. / master + +% For bachelor and master: +\setcurriculum{Software Engineering \& Internet Computing}{Software Engineering \& Internet Computing} % Sets the English and German name of the curriculum. + +\begin{document} + +\frontmatter % Switches to roman numbering. +% The structure of the thesis has to conform to the guidelines at +% https://informatics.tuwien.ac.at/study-services + +\addtitlepage{naustrian} % German title page (not for dissertations at the PhD School). +\addtitlepage{english} % English title page. +\addstatementpage + +\begin{danksagung*} +\todo{Ihr Text hier.} +\end{danksagung*} + +\begin{acknowledgements*} +\todo{Enter your text here.} +\end{acknowledgements*} + +\begin{kurzfassung} +\todo{Ihr Text hier.} +\end{kurzfassung} + +\begin{abstract} +\todo{Enter your text here.} +\end{abstract} + +% Select the language of the thesis, e.g., english or naustrian. +\selectlanguage{english} + +% Add a table of contents (toc). +\tableofcontents % Starred version, i.e., \tableofcontents*, removes the self-entry. + +% Switch to arabic numbering and start the enumeration of chapters in the table of content. +\mainmatter + +\chapter{Introduction} +\todo{Enter your text here.} + +\chapter{Evaluation} + + + +\backmatter + +% Use an optional list of figures. +\listoffigures % Starred version, i.e., \listoffigures*, removes the toc entry. + +% Use an optional list of tables. +\cleardoublepage % Start list of tables on the next empty right hand page. +\listoftables % Starred version, i.e., \listoftables*, removes the toc entry. + +% Use an optional list of alogrithms. +\listofalgorithms +\addcontentsline{toc}{chapter}{List of Algorithms} + +% Add an index. +\printindex + +% Add a glossary. +\printglossaries + +% Add a bibliography. +\bibliographystyle{alpha} +\bibliography{references} + +\end{document} +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/thesis/vutinfth.cls b/thesis/vutinfth.cls new file mode 100644 index 0000000..eadd972 --- /dev/null +++ b/thesis/vutinfth.cls @@ -0,0 +1,876 @@ +%% +%% This is file `vutinfth.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% vutinfth.dtx (with options: `class') +%% +%% This is a generated file. +%% Copyright (C) 2014-2020 by Thomas Auzinger +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Thomas Auzinger. +%% +%% This work consists of the files vutinfth.dtx and vutinfth.ins +%% and the derived file vutinfth.cls. +%% This work also consists of the file intro.tex. +%% +%% vutinfth.dtx +%% Copyright (C) 2014-2020 by Thomas Auzinger +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesClass{vutinfth} + [2020/02/20 v1.10 TU Wien Faculty of Informatics thesis template] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{memoir}% +}% +\ProcessOptions\relax +\LoadClass[a4paper,11pt]{memoir}% +\chapterstyle{veelo}% +\RequirePackage[scaled]{helvet}% +\RequirePackage{lmodern}% +\RequirePackage{courier}% +\RequirePackage[T1]{fontenc}% +\RequirePackage[english,naustrian]{babel}% +\RequirePackage[nodayofweek]{datetime}% +\RequirePackage{geometry}% +\RequirePackage{calc}% +\RequirePackage{etoolbox}% +\RequirePackage{graphicx}% +\graphicspath{{graphics/}}% +\newcommand{\@namexdef}[1]{\expandafter\xdef\csname#1\endcsname}% +\newcommand{\ifestrequal}[4]{% + \begingroup + \edef\vutinfth@tempa{{#1}}% + \edef\vutinfth@tempb{{#2}}% + \expandafter\expandafter\expandafter\ifstrequal + \expandafter\vutinfth@tempa\vutinfth@tempb{#3}{#4}% + \endgroup +}% +\newcommand{\vutinfth@HUGE}{\fontsize{30}{34}\selectfont}% +\newcommand{\vutinfth@huge}{\fontsize{20}{23}\selectfont}% +\newcommand{\vutinfth@LARGE}{\fontsize{17}{22}\selectfont}% +\newcommand{\vutinfth@Large}{\fontsize{14}{18}\selectfont}% +\newcommand{\vutinfth@large}{\fontsize{12}{14.5}\selectfont}% +\newcommand{\vutinfth@normalsize}{\fontsize{11}{13.6}\selectfont}% +\newenvironment{SFFont}[1]{% + \begingroup + \sffamily + \global\let\vutinfth@f@family@tmp=\f@family + \endgroup + \renewcommand{\sfdefault}{#1}% + \ifdefstrequal{\f@family}{\vutinfth@f@family@tmp}{\sffamily}{}% +}{% + \renewcommand{\sfdefault}{\vutinfth@f@family@tmp}% +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\setdate}[3]{% + \newdate{vutinfth@date@signing}{#1}{#2}{#3}% +}% +\newcommand{\vutinfth@def@data}[2]{% + \@namedef{vutinfth@data@#1@def}{}% + \@namedef{vutinfth@data@#1}{#2}% +}% +\newcommand{\vutinfth@def@data@invalid}[2]{% + \@namedef{vutinfth@data@#1@error}{% + \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}% + }% + \@namedef{vutinfth@data@#1}{\@nameuse{vutinfth@data@#1@error}}% +}% +\newcommand{\CreateData}[1]{% + \@namedef{set#1}##1{% + \vutinfth@def@data{#1}{##1}% + }% + \vutinfth@def@data@invalid{#1}{\string\set#1}% +}% +\newcommand{\vutinfth@person@male}{male}% +\newcommand{\vutinfth@person@female}{female}% +\newcommand{\ifmale}[2]{% + \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@male}{#2}{}% +}% +\newcommand{\iffemale}[2]{% + \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@female}{#2}{}% +}% +\newcommand{\vutinfth@def@person}[5]{% + \@namedef{vutinfth@person@#1@def}{}% + \@namedef{vutinfth@person@#1@pretitle}{#2}% + \@namedef{vutinfth@person@#1@name}{#3}% + \@namedef{vutinfth@person@#1@posttitle}{#4}% + \ifdefstring{\vutinfth@person@male}{#5}{% + \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@male}% + }{}% + \ifdefstring{\vutinfth@person@female}{#5}{% + \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@female}% + }{}% + \ifstrempty{#3}{% + \ifstrempty{#2}{% + \@namedef{vutinfth@person@#1@fullname}{#4}% + }{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#2}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#2 #4}% + }% + }% + }{% + \ifstrempty{#2}{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#3}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#3, #4}% + }% + }{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#2 #3}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#2 #3, #4}% + }% + }% + }% +}% +\newcommand{\vutinfth@def@person@invalid}[2]{% + \@namedef{vutinfth@person@#1@error}{% + \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}% + }% + \@namedef{vutinfth@person@#1@name}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@pretitle}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@posttitle}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@gender}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@fullname}{% + \@nameuse{vutinfth@person@#1@error}}% +}% +\newcommand{\CreatePerson}[1]{% + \@namedef{set#1}##1##2##3##4{% + \vutinfth@def@person{#1}{##1}{##2}{##3}{##4}% + }% + \vutinfth@def@person@invalid{#1}{\string\set#1}% +}% +\newcommand{\AddLanguage}[1]{% + \@namedef{KV@vutinfth@#1}##1{% + \@namedef{vutinfth@current@#1}{##1}% + }% + \@nameuse{KV@vutinfth@#1}{}% + \ifundef{\vutinfth@allocate@polylingual}{% + \newcommand{\vutinfth@allocate@polylingual}[1]{\@empty}% + }{}% + \@namelet{vutinfth@allocate@polylingual@#1}% + \vutinfth@allocate@polylingual + \renewcommand{\vutinfth@allocate@polylingual}[1]{% + \@nameuse{vutinfth@allocate@polylingual@#1}{##1}% + \@namexdef{vutinfth@##1@#1}{% + \ifcsempty{vutinfth@current@#1}{% + \ifdraftdoc{% + [Draft: No `#1' text for polylingual `##1'.]% + }\else{% + \relax + }\fi + }{% + \@nameuse{vutinfth@current@#1}% + }% + }% + }% + \ifundef{\vutinfth@selectlanguage@polylingual}{% + \newcommand{\vutinfth@selectlanguage@polylingual}[1]{\@empty}% + }{}% + \@namelet{vutinfth@selectlanguage@polylingual@#1}% + \vutinfth@selectlanguage@polylingual + \renewcommand{\vutinfth@selectlanguage@polylingual}[1]{% + \@nameuse{vutinfth@selectlanguage@polylingual@#1}{##1}% + \ifdefstring{\languagename}{#1}{\@nameuse{vutinfth@##1@#1}}{}% + }% +}% +\newcommand{\CreatePolylingual}[2][]{% + \begingroup + \setkeys{vutinfth}{#1}% + \vutinfth@allocate@polylingual{#2}% + \endgroup + \@namedef{vutinfth@polylingual@#2}{% + \vutinfth@selectlanguage@polylingual{#2}}% +}% +\newcommand{\vutinfth@thesis@basetype@undergraduate}{% + vutinfth@undergraduate}% +\newcommand{\vutinfth@thesis@basetype@graduate}{% + vutinfth@graduate}% +\newcommand{\ifundergraduate}[1]{% + \ifestrequal{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate + }{#1}{}% +}% +\newcommand{\ifgraduate}[1]{% + \ifestrequal{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate + }{#1}{}% +}% +\newcommand{\vutinfth@thesis@doctortype@doctor}{% + vutinfth@doctor}% +\newcommand{\vutinfth@thesis@doctortype@phd}{% + vutinfth@phd}% +\newcommand{\ifdoctor}[1]{% + \ifestrequal{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@doctor + }{#1}{}% +}% +\newcommand{\ifphd}[1]{% + \ifestrequal{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@phd + }{#1}{}% +}% +\newcommand{\vutinfth@thesis@basetype}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@thesis@doctortype}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@polylingual@degreename}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@polylingual@thesisname}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@thesis@bachelor}{bachelor}% +\newcommand{\vutinfth@thesis@master}{master}% +\newcommand{\vutinfth@thesis@doctor}{doctor}% +\newcommand{\vutinfth@thesis@phd}{phd-school}% +\newcommand{\@setthesisname}[1]{% + \renewcommand{\vutinfth@polylingual@thesisname}{#1}}% +\newcommand{\@setdegreename}[1]{% + \renewcommand{\vutinfth@polylingual@degreename}{#1}}% +\newcommand{\@setgendereddegreename}[2]{% + \ifmale{author}{\@setdegreename{#1}}% + \iffemale{author}{\@setdegreename{#2}}% +}% +\newcommand{\setthesis}[1]{% + \ifdefstring{\vutinfth@thesis@bachelor}{#1}{% + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate}% + \@setthesisname{\vutinfth@polylingual@BACHELORTHESIS}% + \@setdegreename{\vutinfth@polylingual@Bdeg}% + }{}% + \ifdefstring{\vutinfth@thesis@master}{#1}{% + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate}% + \@setthesisname{% + \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{% + Set masterdegree with \string\setmasterdegree.}% + }% + \@setdegreename{% + \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{% + Set master degree with \string\setmasterdegree.}% + }% + }{}% + \ifdefstring{\vutinfth@thesis@doctor}{#1}{% + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate}% + \renewcommand{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@doctor}% + \@setthesisname{\vutinfth@polylingual@DOCTORTHESIS}% + \@setdegreename{% + \ClassError{vutinfth}{No \string\setdoctordegree \space issued}{% + Set doctor degree with \string\setdoctordegree.}% + }% + }{}% + \ifdefstring{\vutinfth@thesis@phd}{#1}{% + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate}% + \renewcommand{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@phd}% + \@setthesisname{\vutinfth@polylingual@PHDTHESIS}% + \@setdegreename{\vutinfth@polylingual@Pdeg}% + }{}% +}% +\newcommand{\vutinfth@thesis@mdeg@dipl}{dipl.}% +\newcommand{\vutinfth@thesis@mdeg@master}{master}% +\newcommand{\vutinfth@thesis@mdeg@rernat}{rer.nat.}% +\newcommand{\vutinfth@thesis@mdeg@rersocoec}{rer.soc.oec.}% +\newcommand{\setmasterdegree}[1]{% + \ifdefstring{\vutinfth@thesis@mdeg@dipl}{#1}{% + \@setthesisname{\vutinfth@polylingual@DIPLOMATHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegDiplMale + }{% + \vutinfth@polylingual@MdegDiplFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@master}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setdegreename{\vutinfth@polylingual@MdegMaster}% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@rernat}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegRerNatMale + }{% + \vutinfth@polylingual@MdegRerNatFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@rersocoec}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegRerSocOecMale + }{% + \vutinfth@polylingual@MdegRerSocOecFemale + }% + }{}% +}% +\newcommand{\vutinfth@thesis@ddeg@rernat}{rer.nat.}% +\newcommand{\vutinfth@thesis@ddeg@techn}{techn.}% +\newcommand{\vutinfth@thesis@ddeg@rersocoec}{rer.soc.oec.}% +\newcommand{\setdoctordegree}[1]{% + \ifdefstring{\vutinfth@thesis@ddeg@rernat}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegRerNatMale + }{% + \vutinfth@polylingual@DdegRerNatFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@ddeg@techn}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegTechnMale + }{% + \vutinfth@polylingual@DdegTechnFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@ddeg@rersocoec}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegRerSocOecMale + }{% + \vutinfth@polylingual@DdegRerSocOecFemale + }% + }{}% +}% +\CreateData{regnumber}% +\CreateData{firstreviewerdata}% +\CreateData{secondreviewerdata}% +\CreatePerson{author}% +\CreatePerson{advisor}% +\CreatePerson{secondadvisor}% +\CreatePerson{firstassistant}% +\CreatePerson{secondassistant}% +\CreatePerson{thirdassistant}% +\CreatePerson{firstreviewer}% +\CreatePerson{secondreviewer}% +\AddLanguage{english}% +\AddLanguage{naustrian}% +\CreatePolylingual[ + english=Advisor, + naustrian=Betreuung]{Advisor}% +\CreatePolylingual[ + english=Second advisor, + naustrian=Zweitbetreuung]{Secondadvisor}% +\CreatePolylingual[ + english=submitted in partial fulfillment of the requirements + for the degree of, + naustrian=zur Erlangung des akademischen Grades]{submission}% +\CreatePolylingual[ + english=in, + naustrian=im Rahmen des Studiums]{in}% +\CreatePolylingual[ + english=within the]{within}% +\CreatePolylingual[ + english=Vienna PhD School of Informatics]{School}% +\CreatePolylingual[ + english=by, + naustrian=eingereicht von]{by}% +\CreatePolylingual[ + english=Registration Number, + naustrian=Matrikelnummer]{Registrationnumber}% +\CreatePolylingual[ + english=to the Faculty of Informatics, + naustrian=an der Fakult\"at f\"ur Informatik]{faculty}% +\CreatePolylingual[ + english=at the TU Wien, + naustrian=der Technischen Universit\"at Wien]{university}% +\CreatePolylingual[ + english=Assistance, + naustrian=Mitwirkung]{Assistance}% +\CreatePolylingual[ + english=The dissertation has been reviewed by:, + naustrian=Diese Dissertation haben begutachtet:]{Reviewed}% +\CreatePolylingual[ + english=External reviewers:]{Reviewers}% +\CreatePolylingual[ + english=Vienna, + naustrian=Wien]{Place}% +\CreatePolylingual[ + english=Declaration of Authorship, + naustrian=Erkl\"arung zur Verfassung der Arbeit]{StatementChapter}% +\CreatePolylingual[ + english={I hereby declare that I have written this Doctoral Thesis + independently, that I have completely specified the utilized + sources and resources and that I have definitely marked all parts + of the work - including tables, maps and figures - which belong + to other works or to the internet, literally or extracted, by + referencing the source as borrowed.}, + naustrian={Hiermit erkl\"are ich, dass ich diese Arbeit + selbst\"andig verfasst habe, dass ich die verwendeten Quellen + und Hilfsmittel vollst\"andig angegeben habe und dass ich die + Stellen der Arbeit -- einschlie{\ss}lich Tabellen, Karten und + Abbildungen --, die anderen Werken oder dem Internet im Wortlaut + oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe + der Quelle als Entlehnung kenntlich gemacht habe.}]{Statement}% +\CreatePolylingual[ + english=Bachelor of Science, + naustrian=Bachelor of Science]{Bdeg}% +\CreatePolylingual[ + english=Master of Science, + naustrian=Master of Science]{MdegMaster}% +\CreatePolylingual[ + english=Diplom-Ingenieur, + naustrian=Diplom-Ingenieur]{MdegDiplMale}% +\CreatePolylingual[ + english=Diplom-Ingenieurin, + naustrian=Diplom-Ingenieurin]{MdegDiplFemale}% +\CreatePolylingual[ + english=Magister der Naturwissenschaften, + naustrian=Magister der Naturwissenschaften]{MdegRerNatMale}% +\CreatePolylingual[ + english=Magistra der Naturwissenschaften, + naustrian=Magistra der Naturwissenschaften]{MdegRerNatFemale}% +\CreatePolylingual[ + english=Magister der Sozial- und Wirtschaftswissenschaften, + naustrian=Magister der Sozial- und Wirtschaftswissenschaften]{% + MdegRerSocOecMale}% +\CreatePolylingual[ + english=Magistra der Sozial- und Wirtschaftswissenschaften, + naustrian=Magistra der Sozial- und Wirtschaftswissenschaften]{% + MdegRerSocOecFemale}% +\CreatePolylingual[ + english=Doktor der Naturwissenschaften, + naustrian=Doktor der Naturwissenschaften]{DdegRerNatMale}% +\CreatePolylingual[ + english=Doktorin der Naturwissenschaften, + naustrian=Doktorin der Naturwissenschaften]{DdegRerNatFemale}% +\CreatePolylingual[ + english=Doktor der Technischen Wissenschaften, + naustrian=Doktor der Technischen Wissenschaften]{DdegTechnMale}% +\CreatePolylingual[ + english=Doktorin der Technischen Wissenschaften, + naustrian=Doktorin der Technischen Wissenschaften]{DdegTechnFemale}% +\CreatePolylingual[ + english=Doktor der Sozial- und Wirtschaftswissenschaften, + naustrian=Doktor der Sozial- und Wirtschaftswissenschaften]{% + DdegRerSocOecMale}% +\CreatePolylingual[ + english=Doktorin der Sozial- und Wirtschaftswissenschaften, + naustrian=Doktorin der Sozial- und Wirtschaftswissenschaften]{% + DdegRerSocOecFemale}% +\CreatePolylingual[ + english=Doctor of Technical Sciences]{% + Pdeg}% +\CreatePolylingual[ + english=BACHELOR'S THESIS, + naustrian=BACHELORARBEIT]{BACHELORTHESIS}% +\CreatePolylingual[ + english=MASTER'S THESIS, + naustrian=MASTERARBEIT]{MASTERTHESIS}% +\CreatePolylingual[ + english=DIPLOMA THESIS, + naustrian=DIPLOMARBEIT]{DIPLOMATHESIS}% +\CreatePolylingual[ + english=DISSERTATION, + naustrian=DISSERTATION]{DOCTORTHESIS}% +\CreatePolylingual[ + english=PhD THESIS]{PHDTHESIS}% +\newcommand{\settitle}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Title}% +}% +\newcommand{\setsubtitle}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Subtitle}% +}% +\newcommand{\setcurriculum}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Curriculum}% +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\newsetlength}[2]{% + \newlength{#1}% + \setlength{#1}{#2}% +}% +\newcommand{\vutinfth@squarebullet}{\rule[0.47ex]{0.4ex}{0.4ex}}% +\newlength{\vutinfth@tmp@parindent}% +\newlength{\vutinfth@tmp@baselineskip}% +\newlength{\vutinfth@tmp@parskip}% +\newcommand{\vutinfth@savelayout}{% + \setlength{\vutinfth@tmp@parindent}{\parindent}% + \setlength{\vutinfth@tmp@baselineskip}{\baselineskip}% + \setlength{\vutinfth@tmp@parskip}{\parskip}% +}% +\newcommand{\vutinfth@restorelayout}{% + \setlength{\parindent}{\vutinfth@tmp@parindent}% + \setlength{\baselineskip}{\vutinfth@tmp@baselineskip}% + \setlength{\parskip}{\vutinfth@tmp@parskip}% +}% +\newsetlength{\vutinfth@logo@offset@x}{10.6mm}% +\newsetlength{\vutinfth@logo@offset@y}{22mm}% +\newsetlength{\vutinfth@logo@width@safe}{74mm}% +\newsetlength{\vutinfth@logo@height}{11mm}% +\newsetlength{\vutinfth@header@width}{\paperwidth - \vutinfth@logo@offset@x - \vutinfth@logo@offset@x}% +\newsetlength{\vutinfth@header@height}{\vutinfth@logo@height}% +\newsetlength{\vutinfth@header@separator}{-12mm}% +\newcommand{\vutinfth@header@titlepage}{% + \setlength{\unitlength}{1mm}% + \begin{picture}(74, 11)% + {\includegraphics[height=\vutinfth@logo@height]{Logo-schwarz.pdf}} + \end{picture}\hfill +}% +\newcommand{\vutinfth@footer@titlepage}{% + \centering + \begin{minipage}{\textwidth}% + \centering\vutinfth@normalsize\sffamily + Technische Universit\"{a}t Wien\\ + A-1040 Wien \vutinfth@squarebullet\space + Karlsplatz 13 \vutinfth@squarebullet\space + Tel. +43-1-58801-0 \vutinfth@squarebullet\space + www.tuwien.at% + \end{minipage}% +}% +\makepagestyle{vutinfth@pagestyle@titlepage}% +\makerunningwidth{vutinfth@pagestyle@titlepage}[\textwidth]{% + \vutinfth@header@width}% +\makeheadposition{vutinfth@pagestyle@titlepage}{% + center}{center}{center}{center}% +\makeevenhead{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@header@titlepage}{}% +\makeoddhead{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@header@titlepage}{}% +\makefootrule{vutinfth@pagestyle@titlepage}{% + \vutinfth@pagestyle@titlepagefootrunwidth}{0.5pt}{\footruleskip}% +\makeevenfoot{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@footer@titlepage}{}% +\makeoddfoot{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@footer@titlepage}{}% +\newsetlength{\vutinfth@bigskipamount}{6mm}% +\newcommand{\vutinfth@bigskip}{\vspace{\vutinfth@bigskipamount}}% +\newcommand{\AdvisorBlock}{% + \ifundergraduate{% + \begin{minipage}[t][2.5cm][t]{\textwidth}% + \vutinfth@normalsize + \begin{tabular}{@{}l@{ }l}% + \vutinfth@polylingual@Advisor: & + \vutinfth@person@advisor@fullname\\ + \ifdef{\vutinfth@person@firstassistant@def}{% + \vutinfth@polylingual@Assistance: & + \vutinfth@person@firstassistant@fullname\\ + }{}% + \ifdef{\vutinfth@person@secondassistant@def}{% + \ifundef{\vutinfth@person@firstassistant@def}{% + \vutinfth@person@firstassistant@error + }{% + & \vutinfth@person@secondassistant@fullname\\ + }% + }{}% + \ifdef{\vutinfth@person@thirdassistant@def}{% + \ifundef{\vutinfth@person@firstassistant@def}{% + \vutinfth@person@firstassistant@error + }{% + \ifundef{\vutinfth@person@secondassistant@def}{% + \vutinfth@person@secondassistant@error + }{% + & \vutinfth@person@thirdassistant@fullname\\ + }% + }% + }{}% + \end{tabular}% + \end{minipage}% + }% + \ifgraduate{% + \begin{minipage}[t][1.6cm][t]{\textwidth}% + \vutinfth@normalsize + \vutinfth@polylingual@Advisor: + \vutinfth@person@advisor@fullname + \ifdef{\vutinfth@person@secondadvisor@def}{% + \\ + \vutinfth@polylingual@Secondadvisor: + \vutinfth@person@secondadvisor@fullname + }{}% + \end{minipage}\par% + }% +}% +\newsetlength{\vutinfth@signature@height}{25mm}% +\newsetlength{\vutinfth@signature@width}{51mm}% +\newsetlength{\vutinfth@placedate@width}{50mm}% +\newcommand{\SignatureFields}[3][n]{% + {\vutinfth@normalsize + \ifstrequal{#1}{y}{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@placedate@width + }% + \vutinfth@polylingual@Place, + \displaydate{vutinfth@date@signing}\vspace*{\baselineskip}% + \end{minipage}% + \hfill + }{}% + \ifstrequal{#1}{n}{}{}% + \ifstrequal{#1}{h}{% + \hspace*{\vutinfth@placedate@width}% + \hfill + }{}% + \ifstrempty{#2}{% + \hspace*{\vutinfth@signature@width}% + \hfill + }{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@signature@width + }% + \centering + \rule{\vutinfth@signature@width}{0.5pt}\\ + #2% + \end{minipage}% + \hfill + }% + \ifstrempty{#3}{}{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@signature@width + }% + \centering + \rule{\vutinfth@signature@width}{0.5pt}\\ + #3% + \end{minipage}% + }% + }% +}% + +\newcommand{\ReviewerBlock}{% + \ifgraduate{% + \ifdoctor{% + {\vutinfth@normalsize + \vutinfth@polylingual@Reviewed\\ + \SignatureFields[h]{% + \vutinfth@person@firstreviewer@name + }{% + \vutinfth@person@secondreviewer@name + }% + }% + }% + \ifphd{% + {\vutinfth@normalsize + \vutinfth@polylingual@Reviewers\\ + \vutinfth@person@firstreviewer@name. + \vutinfth@data@firstreviewerdata.\\ + \vutinfth@person@secondreviewer@name. + \vutinfth@data@secondreviewerdata.\\ + }% + }% + }% +}% +\newcommand{\SignatureBlock}{% + \ifundergraduate{% + {\vutinfth@normalsize + \SignatureFields[y]{% + \vutinfth@person@author@name + }{% + \vutinfth@person@advisor@name + }% + }% + }% + \ifgraduate{% + {\vutinfth@normalsize + \ifdoctor{% + \SignatureFields[y]{}{% + \vutinfth@person@author@name + }% + }% + \ifphd{% + \SignatureFields[y]{% + \vutinfth@person@author@name + }{% + \vutinfth@person@advisor@name + }% + }% + }% + }% +}% +\newcommand{\AddTitlePage}{ + \thispagestyle{vutinfth@pagestyle@titlepage}% + \newgeometry{% + left=2.4cm,right=2.4cm,bottom=2.5cm,top=2cm, + headsep=\vutinfth@header@separator, + head=\vutinfth@header@height + }% + \vutinfth@savelayout + \setlength{\parindent}{0pt}% + \setlength{\baselineskip}{13.6pt}% + \setlength{\parskip}{0pt plus 1pt}% + \begin{SFFont}{phv}% + \sffamily + {\centering + \vspace*{1.2cm}\par + \begin{minipage}[t][5cm][b]{\textwidth}% + \centering + \vutinfth@HUGE{\bfseries\vutinfth@polylingual@Title}\\ + \bigskip + \vutinfth@huge{\bfseries + \ifdef{\vutinfth@polylingual@Subtitle}{% + \vutinfth@polylingual@Subtitle}{% + }% + }% + \end{minipage}\par + \vutinfth@bigskip\vutinfth@bigskip + {\vutinfth@LARGE\vutinfth@polylingual@thesisname}\par + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@submission}\par + \vutinfth@bigskip + \ifundergraduate{% + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@in}\par + \vutinfth@bigskip + {\vutinfth@Large{\bfseries\vutinfth@polylingual@Curriculum}}\par + }% + \ifgraduate{% + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par + \ifphd{% + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@within}\par + \vutinfth@bigskip + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@School}}\par + }% + }% + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@by}\par + \vutinfth@bigskip + {\vutinfth@Large{\bfseries\vutinfth@person@author@fullname}}\par + \smallskip + {\vutinfth@large\vutinfth@polylingual@Registrationnumber\ + \vutinfth@data@regnumber}\par + }% + \vutinfth@bigskip\vutinfth@bigskip + \ifgraduate{\ifphd{\vspace*{-8mm}}}% + \begin{minipage}[b][1.6cm][c]{\textwidth}% + \vutinfth@normalsize% + \vutinfth@polylingual@faculty\par + \vutinfth@polylingual@university + \end{minipage}\par + \AdvisorBlock\par + \vfill + \ReviewerBlock\par + \SignatureBlock\par + \vspace*{1cm}% + \end{SFFont}% + \pagestyle{empty}% + \cleardoublepage + \vutinfth@restorelayout + \restoregeometry +}% +\newcommand{\AddStatementPage}{ + \vutinfth@savelayout + \setlength{\parindent}{0pt}% + \setlength{\baselineskip}{13.6pt}% + \setlength{\parskip}{0pt plus 1pt}% + \begin{SFFont}{phv}% + \sffamily + \chapter*{\vutinfth@polylingual@StatementChapter}% + \vutinfth@person@author@fullname\par + \vspace{1.2cm}% + {\normalfont\vutinfth@polylingual@Statement}\par + \vspace{1.2cm}% + \SignatureFields[y]{\vutinfth@person@author@name}{}% + \end{SFFont}% + \cleardoublepage + \vutinfth@restorelayout +}% +\newcommand{\addtitlepage}[1]{% + \selectlanguage{#1}% + \AddTitlePage +}% +\newcommand{\addstatementpage}{% + \selectlanguage{naustrian}% + \ifundergraduate{\AddStatementPage}% + \ifgraduate{% + \ifdoctor{\AddStatementPage}% + \ifphd{% + \selectlanguage{english}% + \AddStatementPage + }% + }% +}% +\newenvironment{acknowledgements}{% + \selectlanguage{english}% + \chapter{Acknowledgements}% +}{% + \cleardoublepage +}% +\newenvironment{acknowledgements*}{% + \selectlanguage{english}% + \chapter*{Acknowledgements}% +}{% + \cleardoublepage +}% +\newenvironment{danksagung}{% + \selectlanguage{naustrian}% + \chapter{Danksagung}% +}{% + \cleardoublepage +}% +\newenvironment{danksagung*}{% + \selectlanguage{naustrian}% + \chapter*{Danksagung}% +}{% + \cleardoublepage +}% +\renewenvironment{abstract}{% + \selectlanguage{english}% + \chapter{Abstract}% +}{% + \cleardoublepage +}% +\newenvironment{abstract*}{% + \selectlanguage{english}% + \chapter*{Abstract}% +}{% + \cleardoublepage +}% +\newenvironment{kurzfassung}{% + \selectlanguage{naustrian}% + \chapter{Kurzfassung}% +}{% + \cleardoublepage +}% +\newenvironment{kurzfassung*}{% + \selectlanguage{naustrian}% + \chapter*{Kurzfassung}% +}{% + \cleardoublepage +}% +\makepagestyle{vutinfth@pagestyle@default}% +\makeevenfoot{vutinfth@pagestyle@default}{\thepage}{}{}% +\makeoddfoot{vutinfth@pagestyle@default}{}{}{\thepage}% +\aliaspagestyle{chapter}{vutinfth@pagestyle@default}% +\aliaspagestyle{part}{vutinfth@pagestyle@default}% +\addto\frontmatter{\pagestyle{vutinfth@pagestyle@default}}% +\addto\mainmatter{\pagestyle{Ruled}}% +\addto\backmatter{\pagestyle{vutinfth@pagestyle@default}}% +\endinput +%% +%% End of file `vutinfth.cls'. diff --git a/thesis/vutinfth.dtx b/thesis/vutinfth.dtx new file mode 100644 index 0000000..ab44280 --- /dev/null +++ b/thesis/vutinfth.dtx @@ -0,0 +1,1932 @@ +% \iffalse meta-comment +% +%% vutinfth.dtx +%% Copyright (C) 2014-2020 by Thomas Auzinger +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Thomas Auzinger. +% +% This work consists of the files vutinfth.dtx and vutinfth.ins +% and the derived file vutinfth.cls. +% This work also consists of the file intro.tex. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{vutinfth.dtx} +% +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesClass{vutinfth} +%<*class> + [2020/02/20 v1.10 TU Wien Faculty of Informatics thesis template] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[parfill]{parskip} +\usepackage{multirow} +\usepackage{booktabs} +\usepackage[columns=1,totoc=true]{idxlayout} +\usepackage{hypdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{vutinfth.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \newcommand{\issue}[1]{\href{https://gitlab.com/ThomasAUZINGER/vutinfth/issues/#1}{Issue \#{}#1}} +% +% \changes{v0.9}{2014/05/30}{Pre-release version} +% \changes{v1.0}{2014/09/07}{Initial release version} +% \changes{v1.1}{2014/10/07}{Added references to the GitLab environment} +% \changes{v1.3}{2014/11/25}{Added support for a dissertation at the Vienna Phd School of Informatics. \issue{4}} +% \changes{v1.4}{2015/08/01}{Added comma to separate posttitle and changed mainmatter pagestyle to `Ruled'.} +% \changes{v1.5}{2016/01/17}{Updated name of university to `TU Wien'.} +% \changes{v1.6}{2016/11/12}{Enabled second advisor for dissertations.} +% \changes{v1.8}{2019/02/13}{Removed address information.} +% \changes{v1.9}{2019/11/11}{Changed header graphics and unversity URL.} +% +% \GetFileInfo{vutinfth.dtx} +% +% ^^A\DoNotIndex{\DeclareOption,\LoadClass,\PassOptionsToClass,\ProcessOptions,\RequirePackage} +% ^^A\DoNotIndex{\f@family} +% ^^A\DoNotIndex{\newcommand,\newenvironment,\edef,\let,\renewcommand,\renewenvironment,\set,\xdef} +% ^^A\DoNotIndex{\begin,\begingroup,\end,\endgroup} +% ^^A\DoNotIndex{\@empty,\@namedef,\@namelet,\@nameuse,\csname,\endcsname} +% ^^A\DoNotIndex{\",\\} +% ^^A\DoNotIndex{\else,\fi,\ifcsempty,\ifcsstring,\ifdefstrequal,\ifdefstring,\ifdraftdoc,\ifstrempty,\ifstrequal,\ifundef} +% ^^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} +% +% \newcommand{\ispoly}{\textsuperscript{P}} +% +% \title{The \textsf{vutinfth} class\thanks{This document +% corresponds to \textsf{vutinfth}~\fileversion, dated \filedate.}} +% \author{Thomas Auzinger \\ \texttt{thomas@auzinger.name}} +% +% \maketitle +% +% \begin{abstract} +% This class provides a \LaTeXe\ template for theses at the Faculty of Informatics at the TU Wien. +% In the current version, bachelor and master theses as well as dissertations are supported in both English and German. +% \end{abstract} +% +% \clearpage +% \tableofcontents +% \clearpage +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Introduction} +% +% This class provides a \LaTeXe\ template for all theses at the Faculty of Informations at the TU Wien. +% Further information on the document class and accompanying support can be found at \url{https://gitlab.com/ThomasAUZINGER/vutinfth}. +% Further guidelines may apply to both the format and structure of certain theses. +% These can be found at \url{https://informatics.tuwien.ac.at/study-services}. +% Thesis authors are advised to consult Section~\ref{sec:user} for a documentation of all relevant commands. +% Information for class developers is provided in Section~\ref{sec:class}. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Known Issues} +% +% This class is incompatible with the |minitoc| package as of version 60, due to the incompatibility of the underlying |memoir| class. +% Use the |titletoc| package as a replacement. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Usage for Document Authors} +% \label{sec:user} +% +% This section contains relevant information for authors of theses that are based on the |vutinfth| document class. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Data} +% \label{sec:user:data} +% +% 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. +% 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. +% 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. +% +% \subsubsection{Textual Data} +% \label{sec:user:data:text} +% +% ^^A\DescribeMacro{\setaddress} +% \DescribeMacro{\setregnumber} +% \DescribeMacro{\settitle} +% \DescribeMacro{\setsubtitle} +% \DescribeMacro{\setcurriculum} +% \DescribeMacro{\setfirstreviewerdata} +% \DescribeMacro{\setsecondreviewerdata} +% 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: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Role & Type & Optional\\ +% \midrule +% ^^A|\setaddress| & Address of the author & All & No \\ +% |\setregnumber| & Registration number of the author & All & No \\ +% |\settitle|\ispoly & Title of the thesis & All & No \\ +% |\setsubtitle|\ispoly & Subtitle of the thesis & All & Yes \\ +% |\setcurriculum|\ispoly & Name of the curriculum & B, M & No \\ +% \midrule +% \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Role & Type & Optional\\ +% \midrule +% |\setfirstreviewerdata| & Affiliation and country & P & No \\ +% & of first reviewer & & \\ +% |\setsecondreviewerdata| & Affiliation and country & P & No \\ +% & of second reviewer & & \\ +% \midrule +% \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \subsubsection{Persons} +% \label{sec:user:data:person} +% +% \DescribeMacro{\setauthor} +% \DescribeMacro{\setadvisor} +% \DescribeMacro{\setsecondadvisor} +% \DescribeMacro{\setfirstassistant} +% \DescribeMacro{\setsecondassistant} +% \DescribeMacro{\setthirdassistant} +% \DescribeMacro{\setfirstreviewer} +% \DescribeMacro{\setsecondreviewer} +% 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: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Role & Type & Optional\\ +% \midrule +% |\setauthor| & Author of the thesis & All & No \\ +% |\setadvisor| & Main advisor of the thesis & All & No \\ +% |\setsecondadvisor| & Second advisor of the thesis & D, P & Yes \\ +% |\setfirstassistant| & First advising assistant & B, M & Yes \\ +% |\setsecondassistant| & Second advising assistant & B, M & Yes \\ +% |\setthirdassistant| & Third advising assistant & B, M & Yes \\ +% |\setfirstreviewer| & First thesis reviewer & D, P & No \\ +% |\setsecondreviewer| & Second thesis reviewer & D, P & No \\ +% \midrule +% \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \subsubsection{Dates} +% +% \DescribeMacro{\setdate} +% 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: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Role & Type & Optional\\ +% \midrule +% |\setdate| & Signing date & All & No \\ +% \midrule +% \multicolumn{4}{l}{Types: Bachelor (B), Master (M), Doctoral (D), PhD School (P), All (All)} \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \subsubsection{List Data} +% \label{sec:user:data:list} +% +% 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. +% +% \DescribeMacro{\setauthor} +% \DescribeMacro{\setadvisor} +% \marginpar{\strut\hfill$\cdots$} +% When setting a person, the person's gender is specified with a list argument (see Section~\ref{sec:user:data:person}): +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Options & Description\\ +% \midrule +% |\command|\marg{.}\marg{.}\marg{.}\marg{list} & |male| & Specifies a male person. \\ +% & |female| & Specifies a female person. \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% 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). +% +% \DescribeMacro{\setthesis} +% The thesis type is selected from one of the fundamental types: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Options & Description\\ +% \midrule +% |\setthesis|\marg{list} & |bachelor| & Specifies a bachelor's thesis. \\ +% & |master| & Specifies a master's thesis. \\ +% & |doctor| & Specifies a dissertation. \\ +% & |phd-school| & Specifies a disseration at the Vienna \\ +% & & PhD school of Informatics. \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\setmasterdegree} +% 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: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Options & Description\\ +% \midrule +% |\setmasterdegree|\marg{list} & |dipl.| & Specifies the degree \\ +% & & \hspace{1ex}`Diplom-Ingenieur(in)'. \\ +% & |master| & Specifies the degree \\ +% & & \hspace{1ex}`Master of Science'. \\ +% & |rer.nat.| & Specifies the degree \\ +% & & \hspace{1ex}`Magist(er/ra) der Natur- \\ +% & & \hspace{1ex}wissenschaften'. \\ +% & |rer.soc.oec.| & Specifies the degree \\ +% & & \hspace{1ex}`Magist(er/ra) der Sozial- und \\ +% & & \hspace{1ex}Wirtschaftswissenschaften'. \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\setdoctordegree} +% 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: +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Options & Description\\ +% \midrule +% |\setdoctordegree|\marg{list} & |techn.| & Specifies the degree \\ +% & & \hspace{1ex}`Doktor(in) der Technischen' \\ +% & & \hspace{1ex}Wissenschaften'. \\ +% & |rer.nat.| & Specifies the degree \\ +% & & \hspace{1ex}`Doktor(in) der Natur- \\ +% & & \hspace{1ex}wissenschaften'. \\ +% & |rer.soc.oec.| & Specifies the degree \\ +% & & \hspace{1ex}`Doktor(in) der Sozial- und \\ +% & & \hspace{1ex}Wirtschaftswissenschaften'. \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \subsubsection{Polylingual Data} +% \label{sec:user:data:polylingual} +% +% \DescribeMacro{\setcurriculum} +% Used as |\setcurriculum|\marg{english}\marg{german}, it sets the name of the curriculum that the student is enroled in. +% The name can be given in English, with \meta{english}, and in German, with \meta{german}. +% 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. +% If a title page of one of the languages is not used, the corresponding argument can be left empty. +% +% \DescribeMacro{\settitle} +% Used as |\settitle|\marg{english}\marg{german}, it sets the title of the thesis. +% The title can be given both in an English version, with \meta{english}, and in a German version, with \meta{german}. +% For title pages in a given language, the corresponding title will be used. +% Unused languages can be supplied as empty brackets and it is possible to use the English or German title for both language versions. +% +% \DescribeMacro{\setsubtitle} +% Used as |\setsubtitle|\marg{english}\marg{german}, it sets the subtitle of the thesis. +% The same specifications as for |\settitle| apply. +% +% \DescribeMacro{\addtitlepage} +% The titlepage can be generated in the following languages (see Section~\ref{sec:user:layout}): +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Command & Options & Description\\ +% \midrule +% |\addtitlepage|\marg{list} & |english| & Generates an English title page. \\ +% & |naustrian| & Generates a German title page. \\ +% \bottomrule +% \end{tabular} +% \end{center} +% Note that a non-English title page is not available for a dissertation at the Vienna PhD School of Informatics. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Layout} +% \label{sec:user:layout} +% +% Most of the data that is supplied with the commands of the previous sections is used to generate the front matter of the thesis. +% 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. +% In the remainder of this section, the available items of the front matter are given. +% +% \DescribeMacro{\addtitlepage} +% 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|. +% +% \DescribeMacro{\addstatementpage} +% Used as |\addstatementpage|, it generates a page with the statement of originality. +% +% \DescribeEnv{acknowledgements} +% \DescribeEnv{acknowledgements*} +% 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. +% +% \DescribeEnv{danksagung} +% \DescribeEnv{danksagung*} +% 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. +% +% \DescribeEnv{abstract} +% \DescribeEnv{abstract*} +% 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. +% +% \DescribeEnv{kurzfassung} +% \DescribeEnv{kurzfassung*} +% 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Usage for Class Writers} +% \label{sec:class} +% +% To accomodate shifting requirements, the |vutinfth| class provides various convenience functions that allow the modification and extension of its functionality. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Data} +% +% To compose several parts of the thesis layout, input from the thesis author is required. +% For the |vutinfth| class, this is realized by the commands provided in Section~\ref{sec:user:data}. +% Additional data can be defined with the the commands in the remainder of this section. +% +% \DescribeMacro{\CreateData} +% Used as |\CreateData|\marg{name}, it generates a command |\set|\meta{name}. +% Used as |\set|\meta{name}\marg{string}, the newly created command assigns the value \meta{string} to the internal variable |\vutinfth@data@|\meta{name}. +% 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. +% Furthermore, a command |\vutinfth@data@|\meta{name}|@def| is created, to increase source code readability when verifying the existence of a specific data item. +% See Section~\ref{sec:impl:data:declarations} for examples. +% +% \DescribeMacro{\CreatePerson} +% Used as |\CreatePerson|\marg{name}, it generates a command |\set|\meta{name}. +% 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. +% \begin{center} +% \begin{tabular}{lllc} +% \toprule +% Argument & Internal Variable\\ +% \midrule +% & |\vutinfth@person@|\meta{name}|@def| \\ +% \meta{pretitle} & |\vutinfth@person@|\meta{name}|@pretitle| \\ +% \meta{personname} & |\vutinfth@person@|\meta{name}|@name| \\ +% \meta{posttitle} & |\vutinfth@person@|\meta{name}|@posttitle| \\ +% \meta{gender} & |\vutinfth@person@|\meta{name}|@gender| \\ +% \bottomrule +% \end{tabular} +% \end{center} +% The command |\vutinfth@person@|\meta{name}|@def| is created to increase source code readability when verifying the existence of a specific person. +% Furthermore, the command |\vutinfth@person@|\meta{name}|@fullname| returns the person's name together with existing titles and correct whitespace in between. +% The person's gender is either |\vutinfth@person@male| or |\vutinfth@person@female|, depending on the input. +% See Section~\ref{sec:impl:data:declarations} for examples. +% +% \DescribeMacro{\AddLanguage} +% Used as |\AddLanguage|\marg{lang}, it enables the language \meta{lang} to by used by polylingual expressions. +% \meta{lang} has to be chosed from the languages of the |babel| package that is used by this class. +% Currently, |vutinfth| uses two languages, i.e., |english| for English expressions and |naustrian| for German expressions. +% +% \DescribeMacro{\CreatePolylingual} +% 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. +% 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$}. +% \meta{lang$_i$} has to be chosen from the languages that were defined via |\AddLanguage|. +% As a convention, text that needs to start with an uppercase letter is assigned to a name that starts with an uppercase letter. +% The same holds for uppercase words, e.g.,\\ +% |\CreatePolylingual[english=advisor,naustrian=Betreuer]{advisor}|\\ +% |\CreatePolylingual[english=Advisor,naustrian=Betreuer]{Advisor}|\\ +% |\CreatePolylingual[english=ADVISOR,naustrian=BETREUER]{ADVISOR}|.\\ +% See Section~\ref{sec:impl:data:declarations} for examples. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Layout} +% +% Several key elements in the layout of the frontmatter are encapsulated to allow a convenient extension of this functionality. +% +% \DescribeMacro{\SignatureFields} +% Used as |\SignatureFields|\oarg{mode}\marg{center}\marg{right}, it creates a place and date description and/or one or two signature fields. +% \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. +% If text is supplied to \meta{center}, it is added below a rule, right to the possible date and place entry. +% If text is supplied to \meta{right}, it is added below a rule, right to the possible signature field created by \meta{center}. +% This command ensures a uniform width and positioning of the signature fields on both the title pages and the statement of originality. +% +% \DescribeMacro{\SignatureBlock} +% Used as |\SignatureBlock|, it generates the signature fields for both author and advisor. +% +% \DescribeMacro{\ReviewerBlock} +% Used as |\ReviewerBlock|, it generates the signature fields for both reviewers. +% +% \DescribeMacro{\AdvisorBlock} +% Used as |\AdvisorBlock|, it generates the name fields for both the advisor and the potential assistants. +% +% \DescribeMacro{\AddTitlePage} +% Used as |\AddTitlePage|, it generates a title page in the current language. +% This command contains the placement of the header graphics, the footer, the appropriate blocks, etc. +% +% \DescribeMacro{\AddStatementPage} +% Used as |\AddStatementPage|, it generates a chapter with the statement of originality together with the author's signature field. +% +% \DescribeEnv{SFFont} +% 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. +% +% \StopEventually{} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Implementation} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Initialization} +% +% \subsubsection{Class Options} +% +% Pass the options to the underlying memoir class. +% +% \begin{macrocode} +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{memoir}% +}% +\ProcessOptions\relax +% \end{macrocode} +% +% \subsubsection{Loaded Class and Packages} +% +% The |vutinfth| class is based on the |memoir| class. +% \begin{macrocode} +\LoadClass[a4paper,11pt]{memoir}% +\chapterstyle{veelo}% +% \end{macrocode} +% The following packages are required for the functionality and style of the document class. +% \begin{macrocode} +\RequirePackage[scaled]{helvet}% +\RequirePackage{lmodern}% +\RequirePackage{courier}% +\RequirePackage[T1]{fontenc}% +\RequirePackage[english,naustrian]{babel}% +\RequirePackage[nodayofweek]{datetime}% +\RequirePackage{geometry}% +\RequirePackage{calc}% +\RequirePackage{etoolbox}% +\RequirePackage{graphicx}% +\graphicspath{{graphics/}}% +% \end{macrocode} +% +% \subsubsection{Low-Level Functionality} +% +% This section provides low-level functionality for macro definitions and macro expansions. +% +% \begin{macro}{\@namexdef} +% Globally defines a control sequence with an expanded argument. +% \begin{macrocode} +\newcommand{\@namexdef}[1]{\expandafter\xdef\csname#1\endcsname}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifestrequal} +% A variant of |\ifstrequal| that fully expands the first two arguments. +% \begin{macrocode} +\newcommand{\ifestrequal}[4]{% + \begingroup + \edef\vutinfth@tempa{{#1}}% + \edef\vutinfth@tempb{{#2}}% + \expandafter\expandafter\expandafter\ifstrequal + \expandafter\vutinfth@tempa\vutinfth@tempb{#3}{#4}% + \endgroup +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Fonts} +% +% \begin{macro}{\vutinfth@HUGE} +% \begin{macro}{\vutinfth@huge} +% \begin{macro}{\vutinfth@LARGE} +% \begin{macro}{\vutinfth@Large} +% \begin{macro}{\vutinfth@large} +% \begin{macro}{\vutinfth@normalsize} +% Initializes the font sizes. +% \begin{macrocode} +\newcommand{\vutinfth@HUGE}{\fontsize{30}{34}\selectfont}% +\newcommand{\vutinfth@huge}{\fontsize{20}{23}\selectfont}% +\newcommand{\vutinfth@LARGE}{\fontsize{17}{22}\selectfont}% +\newcommand{\vutinfth@Large}{\fontsize{14}{18}\selectfont}% +\newcommand{\vutinfth@large}{\fontsize{12}{14.5}\selectfont}% +\newcommand{\vutinfth@normalsize}{\fontsize{11}{13.6}\selectfont}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{SFFont} +% Selects the given font family as sans serif font. +% \begin{macrocode} +\newenvironment{SFFont}[1]{% +% \end{macrocode} +% Stores the current sans serif font in |\vutinfth@f@family@tmp| and changes to the given sans serif font. +% \begin{macrocode} + \begingroup + \sffamily + \global\let\vutinfth@f@family@tmp=\f@family + \endgroup + \renewcommand{\sfdefault}{#1}% +% \end{macrocode} +% In case the outer scope is already sans serif, the new font has to be activated. +% \begin{macrocode} + \ifdefstrequal{\f@family}{\vutinfth@f@family@tmp}{\sffamily}{}% +}{% +% \end{macrocode} +% 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. +% \begin{macrocode} + \renewcommand{\sfdefault}{\vutinfth@f@family@tmp}% +}% +% \end{macrocode} +% \end{environment} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Data} +% +% \subsubsection{Dates} +% +% \begin{macro}{\setdate} +% Creates the internal storage for the signing date. +% \begin{macrocode} +\newcommand{\setdate}[3]{% + \newdate{vutinfth@date@signing}{#1}{#2}{#3}% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Textual Data} +% +% \begin{macro}{\vutinfth@def@data} +% Creates the internal storage for simple data entries. +% \begin{macrocode} +\newcommand{\vutinfth@def@data}[2]{% + \@namedef{vutinfth@data@#1@def}{}% + \@namedef{vutinfth@data@#1}{#2}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@def@data@invalid} +% Initializes the internal storage with error messages. +% \begin{macrocode} +\newcommand{\vutinfth@def@data@invalid}[2]{% + \@namedef{vutinfth@data@#1@error}{% + \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}% + }% + \@namedef{vutinfth@data@#1}{\@nameuse{vutinfth@data@#1@error}}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CreateData} +% Issues the construction of a setter function for a |data| entry given by |\setdata|. +% \begin{macrocode} +\newcommand{\CreateData}[1]{% + \@namedef{set#1}##1{% + \vutinfth@def@data{#1}{##1}% + }% + \vutinfth@def@data@invalid{#1}{\string\set#1}% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Persons} +% +% \begin{macro}{\vutinfth@person@male} +% \begin{macro}{\vutinfth@person@female} +% Two genders are differentiated for each person: |male| and |female|. +% \begin{macrocode} +\newcommand{\vutinfth@person@male}{male}% +\newcommand{\vutinfth@person@female}{female}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ifmale} +% \begin{macro}{\iffemale} +% Convenience macros to determine the gender of a person. +% \begin{macrocode} +\newcommand{\ifmale}[2]{% + \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@male}{#2}{}% +}% +\newcommand{\iffemale}[2]{% + \ifcsstring{vutinfth@person@#1@gender}{\vutinfth@person@female}{#2}{}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vutinfth@def@person} +% \changes{v1.4}{2015/08/01}{Added comma to separate posttitle.} +% Creates the internal storage for a person's name, titles and gender. +% \begin{macrocode} +\newcommand{\vutinfth@def@person}[5]{% + \@namedef{vutinfth@person@#1@def}{}% + \@namedef{vutinfth@person@#1@pretitle}{#2}% + \@namedef{vutinfth@person@#1@name}{#3}% + \@namedef{vutinfth@person@#1@posttitle}{#4}% + \ifdefstring{\vutinfth@person@male}{#5}{% + \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@male}% + }{}% + \ifdefstring{\vutinfth@person@female}{#5}{% + \@namedef{vutinfth@person@#1@gender}{\vutinfth@person@female}% + }{}% +% \end{macrocode} +% For the full name, additional spaces have to be inserted depending on the presence of pre- or posttitles. +% \begin{macrocode} + \ifstrempty{#3}{% + \ifstrempty{#2}{% + \@namedef{vutinfth@person@#1@fullname}{#4}% + }{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#2}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#2 #4}% + }% + }% + }{% + \ifstrempty{#2}{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#3}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#3, #4}% + }% + }{% + \ifstrempty{#4}{% + \@namedef{vutinfth@person@#1@fullname}{#2 #3}% + }{% + \@namedef{vutinfth@person@#1@fullname}{#2 #3, #4}% + }% + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@def@person@invalid} +% Initializes the internal storage with error messages. +% \begin{macrocode} +\newcommand{\vutinfth@def@person@invalid}[2]{% + \@namedef{vutinfth@person@#1@error}{% + \ClassError{vutinfth}{No #2 issued}{Set #1 with #2.}% + }% + \@namedef{vutinfth@person@#1@name}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@pretitle}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@posttitle}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@gender}{% + \@nameuse{vutinfth@person@#1@error}}% + \@namedef{vutinfth@person@#1@fullname}{% + \@nameuse{vutinfth@person@#1@error}}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CreatePerson} +% Issues the construction of a setter function for a |person| given by |\setperson|. +% \begin{macrocode} +\newcommand{\CreatePerson}[1]{% + \@namedef{set#1}##1##2##3##4{% + \vutinfth@def@person{#1}{##1}{##2}{##3}{##4}% + }% + \vutinfth@def@person@invalid{#1}{\string\set#1}% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Polylingual Text} +% +% 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. +% +% \begin{macro}{\AddLanguage} +% Constructs the temporary variables and the permanent storage for polylingual text in the given language. +% \begin{macrocode} +\newcommand{\AddLanguage}[1]{% +% \end{macrocode} +% 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. +% \begin{macrocode} + \@namedef{KV@vutinfth@#1}##1{% + \@namedef{vutinfth@current@#1}{##1}% + }% +% \end{macrocode} +% The key value is initialized as empty. +% \begin{macrocode} + \@nameuse{KV@vutinfth@#1}{}% +% \end{macrocode} +% 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. +% \begin{macrocode} + \ifundef{\vutinfth@allocate@polylingual}{% +% \end{macrocode} +% Define the transfer function, if it has not been defined so far. +% \begin{macrocode} + \newcommand{\vutinfth@allocate@polylingual}[1]{\@empty}% + }{}% +% \end{macrocode} +% Store the current transfer function via |\let| to allow recursion. +% \begin{macrocode} + \@namelet{vutinfth@allocate@polylingual@#1}% + \vutinfth@allocate@polylingual +% \end{macrocode} +% Define the transfer function to permanent storage. +% \begin{macrocode} + \renewcommand{\vutinfth@allocate@polylingual}[1]{% +% \end{macrocode} +% Call the transfer routine of the previously defined language. +% \begin{macrocode} + \@nameuse{vutinfth@allocate@polylingual@#1}{##1}% +% \end{macrocode} +% To define the permanent storage, |\@namexdef| is used the definition's scope has to be global. +% \begin{macrocode} + \@namexdef{vutinfth@##1@#1}{% + \ifcsempty{vutinfth@current@#1}{% +% \end{macrocode} +% 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. +% \begin{macrocode} + \ifdraftdoc{% + [Draft: No `#1' text for polylingual `##1'.]% + }\else{% + \relax + }\fi + }{% +% \end{macrocode} +% The use of |\@namexdef| expands the content of the temporary storage before assigning it to the permanent one. +% \begin{macrocode} + \@nameuse{vutinfth@current@#1}% + }% + }% + }% +% \end{macrocode} +% At time of usage, the language, which is given as an argument, is checked against the currently active language. +% \begin{macrocode} + \ifundef{\vutinfth@selectlanguage@polylingual}{% +% \end{macrocode} +% Define the language selection function, if it has not been defined so far. +% \begin{macrocode} + \newcommand{\vutinfth@selectlanguage@polylingual}[1]{\@empty}% + }{}% +% \end{macrocode} +% Store the current selection function via |\let| to allow recursion. +% \begin{macrocode} + \@namelet{vutinfth@selectlanguage@polylingual@#1}% + \vutinfth@selectlanguage@polylingual +% \end{macrocode} +% Define the selection function. +% \begin{macrocode} + \renewcommand{\vutinfth@selectlanguage@polylingual}[1]{% +% \end{macrocode} +% Call the selection routine of the previously defined language. +% \begin{macrocode} + \@nameuse{vutinfth@selectlanguage@polylingual@#1}{##1}% +% \end{macrocode} +% 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. +% \begin{macrocode} + \ifdefstring{\languagename}{#1}{\@nameuse{vutinfth@##1@#1}}{}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CreatePolylingual} +% Creates the actual polylingual expressions. +% \begin{macrocode} +\newcommand{\CreatePolylingual}[2][]{% + \begingroup +% \end{macrocode} +% 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. +% \begin{macrocode} + \setkeys{vutinfth}{#1}% +% \end{macrocode} +% Each key was already assigned a temporary storage, whose content has to be transfered to permanent storage. +% \begin{macrocode} + \vutinfth@allocate@polylingual{#2}% + \endgroup +% \end{macrocode} +% The mandatory argument \marg{arg} is used to define the macro that returns the appropriate text for the currently active language. +% \begin{macrocode} + \@namedef{vutinfth@polylingual@#2}{% + \vutinfth@selectlanguage@polylingual{#2}}% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Thesis Types} +% +% \begin{macro}{\vutinfth@thesis@basetype@undergraduate} +% \begin{macro}{\vutinfth@thesis@basetype@graduate} +% Two thesis categories are differentiated: |undergraduate| and |graduate|. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@basetype@undergraduate}{% + vutinfth@undergraduate}% +\newcommand{\vutinfth@thesis@basetype@graduate}{% + vutinfth@graduate}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ifundergraduate} +% \begin{macro}{\ifgraduate} +% Convenience macros to determine the category of the selected thesis type. +% \begin{macrocode} +\newcommand{\ifundergraduate}[1]{% + \ifestrequal{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate + }{#1}{}% +}% +\newcommand{\ifgraduate}[1]{% + \ifestrequal{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate + }{#1}{}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vutinfth@thesis@doctortype@doctor} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% \begin{macro}{\vutinfth@thesis@doctortype@phd} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% 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. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@doctortype@doctor}{% + vutinfth@doctor}% +\newcommand{\vutinfth@thesis@doctortype@phd}{% + vutinfth@phd}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ifdoctor} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% \begin{macro}{\ifphd} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% Convenience macros to determine the category of the selected doctor thesis type. These need to be nested inside |\ifgraduate| conditions. +% \begin{macrocode} +\newcommand{\ifdoctor}[1]{% + \ifestrequal{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@doctor + }{#1}{}% +}% +\newcommand{\ifphd}[1]{% + \ifestrequal{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@phd + }{#1}{}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vutinfth@thesis@basetype} +% \begin{macro}{\vutinfth@thesis@doctortype} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% \begin{macro}{\vutinfth@thesis@thesisname} +% \begin{macro}{\vutinfth@thesis@degreename} +% Initialize the thesis category, the type and the specific degree with error messages. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@basetype}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@thesis@doctortype}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@polylingual@degreename}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +\newcommand{\vutinfth@polylingual@thesisname}{% + \ClassError{vutinfth}{No \string\setthesis \space issued}{% + Set thesis type with \string\setthesis.}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vutinfth@thesis@bachelor} +% \begin{macro}{\vutinfth@thesis@master} +% \begin{macro}{\vutinfth@thesis@doctor} +% \begin{macro}{\vutinfth@thesis@phd} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% Four main thesis types are differentiated: |bachelor|, |master|, |doctor|, and |phd-school|. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@bachelor}{bachelor}% +\newcommand{\vutinfth@thesis@master}{master}% +\newcommand{\vutinfth@thesis@doctor}{doctor}% +\newcommand{\vutinfth@thesis@phd}{phd-school}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@setthesisname} +% \begin{macro}{\@setdegreename} +% \begin{macro}{\@setgendereddegreename} +% Internal convenience macros. +% \begin{macrocode} +\newcommand{\@setthesisname}[1]{% + \renewcommand{\vutinfth@polylingual@thesisname}{#1}}% +\newcommand{\@setdegreename}[1]{% + \renewcommand{\vutinfth@polylingual@degreename}{#1}}% +\newcommand{\@setgendereddegreename}[2]{% + \ifmale{author}{\@setdegreename{#1}}% + \iffemale{author}{\@setdegreename{#2}}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setthesis} +% \changes{v1.3}{2014/11/25}{Altered to support multiple dissertation types. \issue{4}} +% Sets the thesis type. +% \begin{macrocode} +\newcommand{\setthesis}[1]{% + \ifdefstring{\vutinfth@thesis@bachelor}{#1}{% +% \end{macrocode} +% Initializes |bachelor| thesis type. +% \begin{macrocode} + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate}% + \@setthesisname{\vutinfth@polylingual@BACHELORTHESIS}% + \@setdegreename{\vutinfth@polylingual@Bdeg}% + }{}% + \ifdefstring{\vutinfth@thesis@master}{#1}{% +% \end{macrocode} +% Initializes |master| thesis type. +% \begin{macrocode} + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@undergraduate}% + \@setthesisname{% + \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{% + Set masterdegree with \string\setmasterdegree.}% + }% + \@setdegreename{% + \ClassError{vutinfth}{No \string\setmasterdegree \space issued}{% + Set master degree with \string\setmasterdegree.}% + }% + }{}% + \ifdefstring{\vutinfth@thesis@doctor}{#1}{% +% \end{macrocode} +% Initializes |doctor| thesis type. +% \begin{macrocode} + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate}% + \renewcommand{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@doctor}% + \@setthesisname{\vutinfth@polylingual@DOCTORTHESIS}% + \@setdegreename{% + \ClassError{vutinfth}{No \string\setdoctordegree \space issued}{% + Set doctor degree with \string\setdoctordegree.}% + }% + }{}% + \ifdefstring{\vutinfth@thesis@phd}{#1}{% +% \end{macrocode} +% Initializes |phd-school| thesis type. +% \begin{macrocode} + \renewcommand{\vutinfth@thesis@basetype}{% + \vutinfth@thesis@basetype@graduate}% + \renewcommand{\vutinfth@thesis@doctortype}{% + \vutinfth@thesis@doctortype@phd}% + \@setthesisname{\vutinfth@polylingual@PHDTHESIS}% + \@setdegreename{\vutinfth@polylingual@Pdeg}% + }{}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@thesis@mdeg@dipl} +% \begin{macro}{\vutinfth@thesis@mdeg@master} +% \begin{macro}{\vutinfth@thesis@mdeg@rernat} +% \begin{macro}{\vutinfth@thesis@mdeg@rersocoec} +% Four master degrees can be selected: |dipl.|, |master|, |rer.nat.|, and\\|rer.soc.oec.|. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@mdeg@dipl}{dipl.}% +\newcommand{\vutinfth@thesis@mdeg@master}{master}% +\newcommand{\vutinfth@thesis@mdeg@rernat}{rer.nat.}% +\newcommand{\vutinfth@thesis@mdeg@rersocoec}{rer.soc.oec.}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setmasterdegree} +% Sets the specific master degree. +% \begin{macrocode} +\newcommand{\setmasterdegree}[1]{% + \ifdefstring{\vutinfth@thesis@mdeg@dipl}{#1}{% + \@setthesisname{\vutinfth@polylingual@DIPLOMATHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegDiplMale + }{% + \vutinfth@polylingual@MdegDiplFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@master}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setdegreename{\vutinfth@polylingual@MdegMaster}% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@rernat}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegRerNatMale + }{% + \vutinfth@polylingual@MdegRerNatFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@mdeg@rersocoec}{#1}{% + \@setthesisname{\vutinfth@polylingual@MASTERTHESIS}% + \@setgendereddegreename{% + \vutinfth@polylingual@MdegRerSocOecMale + }{% + \vutinfth@polylingual@MdegRerSocOecFemale + }% + }{}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@thesis@ddeg@rernat} +% \begin{macro}{\vutinfth@thesis@ddeg@techn} +% \begin{macro}{\vutinfth@thesis@ddeg@rersocoec} +% Three doctor degrees can be selected: |rer.nat.|, |techn.|, and |rer.soc.oec.|. +% \begin{macrocode} +\newcommand{\vutinfth@thesis@ddeg@rernat}{rer.nat.}% +\newcommand{\vutinfth@thesis@ddeg@techn}{techn.}% +\newcommand{\vutinfth@thesis@ddeg@rersocoec}{rer.soc.oec.}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setdoctordegree} +% Sets the specific doctor degree. +% \begin{macrocode} +\newcommand{\setdoctordegree}[1]{% + \ifdefstring{\vutinfth@thesis@ddeg@rernat}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegRerNatMale + }{% + \vutinfth@polylingual@DdegRerNatFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@ddeg@techn}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegTechnMale + }{% + \vutinfth@polylingual@DdegTechnFemale + }% + }{}% + \ifdefstring{\vutinfth@thesis@ddeg@rersocoec}{#1}{% + \@setgendereddegreename{% + \vutinfth@polylingual@DdegRerSocOecMale + }{% + \vutinfth@polylingual@DdegRerSocOecFemale + }% + }{}% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Declarations} +%\label{sec:impl:data:declarations} +% +% \begin{macro}{Textual Data} +% \changes{v1.3}{2014/11/25}{Updated to support external reviewer data. \issue{4}} +% \changes{v1.8}{2019/02/13}{Removed address information.} +% Creates the required textual data entries. +% \begin{macrocode} +% ^^A\CreateData{address}% +\CreateData{regnumber}% +\CreateData{firstreviewerdata}% +\CreateData{secondreviewerdata}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{Persons} +% \changes{v1.3}{2014/11/25}{Updated to support second advisor. Issue \issue{4}} +% Creates the required person entries. +% \begin{macrocode} +\CreatePerson{author}% +\CreatePerson{advisor}% +\CreatePerson{secondadvisor}% +\CreatePerson{firstassistant}% +\CreatePerson{secondassistant}% +\CreatePerson{thirdassistant}% +\CreatePerson{firstreviewer}% +\CreatePerson{secondreviewer}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{Languages} +% Adds the desired languages to the polylingual expressions. All added languages have to be given as arguments to the |babel| package. +% \begin{macrocode} +\AddLanguage{english}% +\AddLanguage{naustrian}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{PolyLinguals} +% \changes{v1.3}{2014/11/25}{Added to support multiple dissertation types. \issue{4}} +% \changes{v1.5}{2016/01/17}{Updated name of university to `TU Wien'.} +% \changes{v1.6}{2016/11/12}{Provided German term for second advisor.} +% Creates the polylingual expressions. +% \begin{macrocode} +\CreatePolylingual[ + english=Advisor, + naustrian=Betreuung]{Advisor}% +\CreatePolylingual[ + english=Second advisor, + naustrian=Zweitbetreuung]{Secondadvisor}% +\CreatePolylingual[ + english=submitted in partial fulfillment of the requirements + for the degree of, + naustrian=zur Erlangung des akademischen Grades]{submission}% +\CreatePolylingual[ + english=in, + naustrian=im Rahmen des Studiums]{in}% +\CreatePolylingual[ + english=within the]{within}% +\CreatePolylingual[ + english=Vienna PhD School of Informatics]{School}% +\CreatePolylingual[ + english=by, + naustrian=eingereicht von]{by}% +\CreatePolylingual[ + english=Registration Number, + naustrian=Matrikelnummer]{Registrationnumber}% +\CreatePolylingual[ + english=to the Faculty of Informatics, + naustrian=an der Fakult\"at f\"ur Informatik]{faculty}% +\CreatePolylingual[ + english=at the TU Wien, + naustrian=der Technischen Universit\"at Wien]{university}% +\CreatePolylingual[ + english=Assistance, + naustrian=Mitwirkung]{Assistance}% +\CreatePolylingual[ + english=The dissertation has been reviewed by:, + naustrian=Diese Dissertation haben begutachtet:]{Reviewed}% +\CreatePolylingual[ + english=External reviewers:]{Reviewers}% +\CreatePolylingual[ + english=Vienna, + naustrian=Wien]{Place}% +\CreatePolylingual[ + english=Declaration of Authorship, + naustrian=Erkl\"arung zur Verfassung der Arbeit]{StatementChapter}% +\CreatePolylingual[ + english={I hereby declare that I have written this Doctoral Thesis + independently, that I have completely specified the utilized + sources and resources and that I have definitely marked all parts + of the work - including tables, maps and figures - which belong + to other works or to the internet, literally or extracted, by + referencing the source as borrowed.}, + naustrian={Hiermit erkl\"are ich, dass ich diese Arbeit + selbst\"andig verfasst habe, dass ich die verwendeten Quellen + und Hilfsmittel vollst\"andig angegeben habe und dass ich die + Stellen der Arbeit -- einschlie{\ss}lich Tabellen, Karten und + Abbildungen --, die anderen Werken oder dem Internet im Wortlaut + oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe + der Quelle als Entlehnung kenntlich gemacht habe.}]{Statement}% +% \end{macrocode} +% Degree titles. +% \begin{macrocode} +\CreatePolylingual[ + english=Bachelor of Science, + naustrian=Bachelor of Science]{Bdeg}% +\CreatePolylingual[ + english=Master of Science, + naustrian=Master of Science]{MdegMaster}% +\CreatePolylingual[ + english=Diplom-Ingenieur, + naustrian=Diplom-Ingenieur]{MdegDiplMale}% +\CreatePolylingual[ + english=Diplom-Ingenieurin, + naustrian=Diplom-Ingenieurin]{MdegDiplFemale}% +\CreatePolylingual[ + english=Magister der Naturwissenschaften, + naustrian=Magister der Naturwissenschaften]{MdegRerNatMale}% +\CreatePolylingual[ + english=Magistra der Naturwissenschaften, + naustrian=Magistra der Naturwissenschaften]{MdegRerNatFemale}% +\CreatePolylingual[ + english=Magister der Sozial- und Wirtschaftswissenschaften, + naustrian=Magister der Sozial- und Wirtschaftswissenschaften]{% + MdegRerSocOecMale}% +\CreatePolylingual[ + english=Magistra der Sozial- und Wirtschaftswissenschaften, + naustrian=Magistra der Sozial- und Wirtschaftswissenschaften]{% + MdegRerSocOecFemale}% +\CreatePolylingual[ + english=Doktor der Naturwissenschaften, + naustrian=Doktor der Naturwissenschaften]{DdegRerNatMale}% +\CreatePolylingual[ + english=Doktorin der Naturwissenschaften, + naustrian=Doktorin der Naturwissenschaften]{DdegRerNatFemale}% +\CreatePolylingual[ + english=Doktor der Technischen Wissenschaften, + naustrian=Doktor der Technischen Wissenschaften]{DdegTechnMale}% +\CreatePolylingual[ + english=Doktorin der Technischen Wissenschaften, + naustrian=Doktorin der Technischen Wissenschaften]{DdegTechnFemale}% +\CreatePolylingual[ + english=Doktor der Sozial- und Wirtschaftswissenschaften, + naustrian=Doktor der Sozial- und Wirtschaftswissenschaften]{% + DdegRerSocOecMale}% +\CreatePolylingual[ + english=Doktorin der Sozial- und Wirtschaftswissenschaften, + naustrian=Doktorin der Sozial- und Wirtschaftswissenschaften]{% + DdegRerSocOecFemale}% +\CreatePolylingual[ + english=Doctor of Technical Sciences]{% + Pdeg}% +% \end{macrocode} +% Thesis types. +% \begin{macrocode} +\CreatePolylingual[ + english=BACHELOR'S THESIS, + naustrian=BACHELORARBEIT]{BACHELORTHESIS}% +\CreatePolylingual[ + english=MASTER'S THESIS, + naustrian=MASTERARBEIT]{MASTERTHESIS}% +\CreatePolylingual[ + english=DIPLOMA THESIS, + naustrian=DIPLOMARBEIT]{DIPLOMATHESIS}% +\CreatePolylingual[ + english=DISSERTATION, + naustrian=DISSERTATION]{DOCTORTHESIS}% +\CreatePolylingual[ + english=PhD THESIS]{PHDTHESIS}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\settitle} +% Sets the title of the thesis. +% \begin{macrocode} +\newcommand{\settitle}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Title}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setsubtitle} +% Sets the subtitle of the thesis. +% \begin{macrocode} +\newcommand{\setsubtitle}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Subtitle}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setcurriculum} +% Sets the curriculum name. +% \begin{macrocode} +\newcommand{\setcurriculum}[2]{% + \CreatePolylingual[english=#1,naustrian=#2]{Curriculum}% +}% +% \end{macrocode} +% \end{macro} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Layout} +% +% \subsubsection{Setup} +% +% \begin{macro}{\vutinfth@squarebullet} +% Set internal convenience macros. +% \begin{macrocode} +\newcommand{\newsetlength}[2]{% + \newlength{#1}% + \setlength{#1}{#2}% +}% +\newcommand{\vutinfth@squarebullet}{\rule[0.47ex]{0.4ex}{0.4ex}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@tmp@parindent} +% \begin{macro}{\vutinfth@tmp@baselineskip} +% \begin{macro}{\vutinfth@tmp@parskip} +% Temporary storage for page layout lengths. +% \begin{macrocode} +\newlength{\vutinfth@tmp@parindent}% +\newlength{\vutinfth@tmp@baselineskip}% +\newlength{\vutinfth@tmp@parskip}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vutinfth@savelayout} +% \begin{macro}{\vutinfth@restorelayout} +% Saves and restores relevant page layout lengths. +% \begin{macrocode} +\newcommand{\vutinfth@savelayout}{% + \setlength{\vutinfth@tmp@parindent}{\parindent}% + \setlength{\vutinfth@tmp@baselineskip}{\baselineskip}% + \setlength{\vutinfth@tmp@parskip}{\parskip}% +}% +\newcommand{\vutinfth@restorelayout}{% + \setlength{\parindent}{\vutinfth@tmp@parindent}% + \setlength{\baselineskip}{\vutinfth@tmp@baselineskip}% + \setlength{\parskip}{\vutinfth@tmp@parskip}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Title Page} +% +% 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. +% \begin{macrocode} +\newsetlength{\vutinfth@logo@offset@x}{10.6mm}% +\newsetlength{\vutinfth@logo@offset@y}{22mm}% +\newsetlength{\vutinfth@logo@width@safe}{74mm}% +\newsetlength{\vutinfth@logo@height}{11mm}% +\newsetlength{\vutinfth@header@width}{\paperwidth - \vutinfth@logo@offset@x - \vutinfth@logo@offset@x}% +\newsetlength{\vutinfth@header@height}{\vutinfth@logo@height}% +\newsetlength{\vutinfth@header@separator}{-12mm}% +% \end{macrocode} +% +% \begin{macro}{\vutinfth@header@titlepage} +% \changes{v1.9}{2019/11/11}{Changed header graphics.} +% Initialize header. +% \begin{macrocode} +\newcommand{\vutinfth@header@titlepage}{% + \setlength{\unitlength}{1mm}% + \begin{picture}(74, 11)% + {\includegraphics[height=\vutinfth@logo@height]{Logo-schwarz.pdf}} + \end{picture}\hfill +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@footer@titlepage} +% \changes{v1.9}{2019/11/11}{Changed university URL.} +% Initialize footer. +% \begin{macrocode} +\newcommand{\vutinfth@footer@titlepage}{% + \centering + \begin{minipage}{\textwidth}% + \centering\vutinfth@normalsize\sffamily + Technische Universit\"{a}t Wien\\ + A-1040 Wien \vutinfth@squarebullet\space + Karlsplatz 13 \vutinfth@squarebullet\space + Tel. +43-1-58801-0 \vutinfth@squarebullet\space + www.tuwien.at% + \end{minipage}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{vutinfth@pagestyle@titlepage} +% \changes{v1.9}{2019/11/11}{Changed header graphics.} +% Generate the title page style. +% \begin{macrocode} +\makepagestyle{vutinfth@pagestyle@titlepage}% +\makerunningwidth{vutinfth@pagestyle@titlepage}[\textwidth]{% + \vutinfth@header@width}% +\makeheadposition{vutinfth@pagestyle@titlepage}{% + center}{center}{center}{center}% +\makeevenhead{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@header@titlepage}{}% +\makeoddhead{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@header@titlepage}{}% +\makefootrule{vutinfth@pagestyle@titlepage}{% + \vutinfth@pagestyle@titlepagefootrunwidth}{0.5pt}{\footruleskip}% +\makeevenfoot{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@footer@titlepage}{}% +\makeoddfoot{vutinfth@pagestyle@titlepage}{}{% + \vutinfth@footer@titlepage}{}% +% \end{macrocode} +% \end{macro} +% +% Set style element specifications. +% \begin{macrocode} +\newsetlength{\vutinfth@bigskipamount}{6mm}% +% \end{macrocode} +% Helper functions. +% \begin{macrocode} +\newcommand{\vutinfth@bigskip}{\vspace{\vutinfth@bigskipamount}}% +% \end{macrocode} +% +% \begin{macro}{\AdvisorBlock} +% \changes{v1.3}{2014/11/25}{Updated to support second advisor. \issue{4}} +% \changes{v1.6}{2016/11/12}{Enabled second advisor for dissertations.} +% 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. +% \begin{macrocode} +\newcommand{\AdvisorBlock}{% + \ifundergraduate{% + \begin{minipage}[t][2.5cm][t]{\textwidth}% + \vutinfth@normalsize + \begin{tabular}{@{}l@{ }l}% + \vutinfth@polylingual@Advisor: & + \vutinfth@person@advisor@fullname\\ + \ifdef{\vutinfth@person@firstassistant@def}{% + \vutinfth@polylingual@Assistance: & + \vutinfth@person@firstassistant@fullname\\ + }{}% + \ifdef{\vutinfth@person@secondassistant@def}{% + \ifundef{\vutinfth@person@firstassistant@def}{% + \vutinfth@person@firstassistant@error + }{% + & \vutinfth@person@secondassistant@fullname\\ + }% + }{}% + \ifdef{\vutinfth@person@thirdassistant@def}{% + \ifundef{\vutinfth@person@firstassistant@def}{% + \vutinfth@person@firstassistant@error + }{% + \ifundef{\vutinfth@person@secondassistant@def}{% + \vutinfth@person@secondassistant@error + }{% + & \vutinfth@person@thirdassistant@fullname\\ + }% + }% + }{}% + \end{tabular}% + \end{minipage}% + }% + \ifgraduate{% + \begin{minipage}[t][1.6cm][t]{\textwidth}% + \vutinfth@normalsize + \vutinfth@polylingual@Advisor: + \vutinfth@person@advisor@fullname + \ifdef{\vutinfth@person@secondadvisor@def}{% + \\ + \vutinfth@polylingual@Secondadvisor: + \vutinfth@person@secondadvisor@fullname + }{}% + \end{minipage}\par% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vutinfth@signature@height} +% \begin{macro}{\vutinfth@signature@width} +% \begin{macro}{\vutinfth@placedate@width} +% Set lengths of the signature blocks. +% \begin{macrocode} +\newsetlength{\vutinfth@signature@height}{25mm}% +\newsetlength{\vutinfth@signature@width}{51mm}% +\newsetlength{\vutinfth@placedate@width}{50mm}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\SignatureFields} +% 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. +% \begin{macrocode} +\newcommand{\SignatureFields}[3][n]{% + {\vutinfth@normalsize + \ifstrequal{#1}{y}{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@placedate@width + }% + \vutinfth@polylingual@Place, + \displaydate{vutinfth@date@signing}\vspace*{\baselineskip}% + \end{minipage}% + \hfill + }{}% + \ifstrequal{#1}{n}{}{}% + \ifstrequal{#1}{h}{% + \hspace*{\vutinfth@placedate@width}% + \hfill + }{}% + \ifstrempty{#2}{% + \hspace*{\vutinfth@signature@width}% + \hfill + }{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@signature@width + }% + \centering + \rule{\vutinfth@signature@width}{0.5pt}\\ + #2% + \end{minipage}% + \hfill + }% + \ifstrempty{#3}{}{% + \begin{minipage}[b][\vutinfth@signature@height]{% + \vutinfth@signature@width + }% + \centering + \rule{\vutinfth@signature@width}{0.5pt}\\ + #3% + \end{minipage}% + }% + }% +}% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ReviewerBlock} +% \changes{v1.3}{2014/11/25}{Updated to support external reviewers. \issue{4}} +% Generates a block with the relevant signatures. +% \begin{macrocode} +\newcommand{\ReviewerBlock}{% + \ifgraduate{% + \ifdoctor{% + {\vutinfth@normalsize + \vutinfth@polylingual@Reviewed\\ + \SignatureFields[h]{% + \vutinfth@person@firstreviewer@name + }{% + \vutinfth@person@secondreviewer@name + }% + }% + }% + \ifphd{% + {\vutinfth@normalsize + \vutinfth@polylingual@Reviewers\\ + \vutinfth@person@firstreviewer@name. + \vutinfth@data@firstreviewerdata.\\ + \vutinfth@person@secondreviewer@name. + \vutinfth@data@secondreviewerdata.\\ + }% + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SignatureBlock} +% \changes{v1.3}{2014/11/25}{Updated to support multiple dissertation types. \issue{4}} +% Generates a block with the relevant signatures. +% \begin{macrocode} +\newcommand{\SignatureBlock}{% + \ifundergraduate{% + {\vutinfth@normalsize + \SignatureFields[y]{% + \vutinfth@person@author@name + }{% + \vutinfth@person@advisor@name + }% + }% + }% + \ifgraduate{% + {\vutinfth@normalsize + \ifdoctor{% + \SignatureFields[y]{}{% + \vutinfth@person@author@name + }% + }% + \ifphd{% + \SignatureFields[y]{% + \vutinfth@person@author@name + }{% + \vutinfth@person@advisor@name + }% + }% + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AddTitlePage} +% \changes{v1.3}{2014/11/15}{Added check for subtitle existence before usage. \issue{1}} +% \changes{v1.3}{2014/11/25}{Updated to support PhD School mentioning and fixed the associated vertical overflow. \issue{4}} +% \changes{v1.9}{2019/11/11}{Changed header graphics.} +% Generates the language-dependant title page. Multiline title and subtitle are supported. +% \begin{macrocode} +\newcommand{\AddTitlePage}{ + \thispagestyle{vutinfth@pagestyle@titlepage}% +% \end{macrocode} +% Set a new page geometry where the header separation length (|headsep|) places the header. +% The actual header height (|head|) has to be large enough to contain the header content otherwise the underlying |memoir| class issues a warning. +% \begin{macrocode} + \newgeometry{% + left=2.4cm,right=2.4cm,bottom=2.5cm,top=2cm, + headsep=\vutinfth@header@separator, + head=\vutinfth@header@height + }% +% \end{macrocode} +% Save the current page layout lengths for later restoration. +% \begin{macrocode} + \vutinfth@savelayout + \setlength{\parindent}{0pt}% + \setlength{\baselineskip}{13.6pt}% + \setlength{\parskip}{0pt plus 1pt}% +% \end{macrocode} +% Set title page text to helvetica. +% \begin{macrocode} + \begin{SFFont}{phv}% + \sffamily + {\centering + \vspace*{1.2cm}\par +% \end{macrocode} +% Title and subtitle are bottom aligned and grow upwards. +% \begin{macrocode} + \begin{minipage}[t][5cm][b]{\textwidth}% + \centering + \vutinfth@HUGE{\bfseries\vutinfth@polylingual@Title}\\ + \bigskip + \vutinfth@huge{\bfseries + \ifdef{\vutinfth@polylingual@Subtitle}{% + \vutinfth@polylingual@Subtitle}{% + }% + }% + \end{minipage}\par + \vutinfth@bigskip\vutinfth@bigskip + {\vutinfth@LARGE\vutinfth@polylingual@thesisname}\par + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@submission}\par + \vutinfth@bigskip + \ifundergraduate{% + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@in}\par + \vutinfth@bigskip + {\vutinfth@Large{\bfseries\vutinfth@polylingual@Curriculum}}\par + }% + \ifgraduate{% + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@degreename}}\par + \ifphd{% + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@within}\par + \vutinfth@bigskip + {\vutinfth@LARGE{\bfseries\vutinfth@polylingual@School}}\par + }% + }% + \vutinfth@bigskip + {\vutinfth@large\vutinfth@polylingual@by}\par + \vutinfth@bigskip + {\vutinfth@Large{\bfseries\vutinfth@person@author@fullname}}\par + \smallskip + {\vutinfth@large\vutinfth@polylingual@Registrationnumber\ + \vutinfth@data@regnumber}\par + }% + \vutinfth@bigskip\vutinfth@bigskip + \ifgraduate{\ifphd{\vspace*{-8mm}}}% + \begin{minipage}[b][1.6cm][c]{\textwidth}% + \vutinfth@normalsize% + \vutinfth@polylingual@faculty\par + \vutinfth@polylingual@university + \end{minipage}\par + \AdvisorBlock\par +% \end{macrocode} +% Add stretchable glue between the advisor block and the signatures. +% This ensures that the signature part is always at the bottom of the page. +% \begin{macrocode} + \vfill + \ReviewerBlock\par + \SignatureBlock\par + \vspace*{1cm}% + \end{SFFont}% + \pagestyle{empty}% + \cleardoublepage + \vutinfth@restorelayout + \restoregeometry +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Front Matter Material} +% +% \begin{macro}{\AddStatementPage} +% \changes{v1.3}{2014/11/25}{Updated to support multiple languages. \issue{4}} +% \changes{v1.8}{2019/02/13}{Removed address information.} +% \changes{v1.9}{2019/11/11}{Changed header graphics.} +% Generates the statement page. +% \begin{macrocode} +\newcommand{\AddStatementPage}{ +% \end{macrocode} +% Set the same page geometry as for the titlepages. +% \begin{macrocode} +%^^A \newgeometry{% +%^^A left=2.4cm,right=2.4cm,bottom=2.5cm,top=2cm, +%^^A headsep=\vutinfth@header@separator, +%^^A head=\vutinfth@header@height +%^^A }% +% \end{macrocode} +% Save the current page layout lengths for later restoration. +% \begin{macrocode} + \vutinfth@savelayout + \setlength{\parindent}{0pt}% + \setlength{\baselineskip}{13.6pt}% + \setlength{\parskip}{0pt plus 1pt}% + \begin{SFFont}{phv}% + \sffamily + \chapter*{\vutinfth@polylingual@StatementChapter}% + \vutinfth@person@author@fullname\par +% ^^A \vutinfth@data@address\par + \vspace{1.2cm}% + {\normalfont\vutinfth@polylingual@Statement}\par + \vspace{1.2cm}% + \SignatureFields[y]{\vutinfth@person@author@name}{}% + \end{SFFont}% + \cleardoublepage + \vutinfth@restorelayout +%^^A \restoregeometry +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addtitlepage} +% Generates the titlepage in given language. +% \begin{macrocode} +\newcommand{\addtitlepage}[1]{% + \selectlanguage{#1}% + \AddTitlePage +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addstatementpage} +% \changes{v1.3}{2014/11/25}{Updated to support english version. \issue{4}} +% Generates the statement page. +% \begin{macrocode} +\newcommand{\addstatementpage}{% + \selectlanguage{naustrian}% + \ifundergraduate{\AddStatementPage}% + \ifgraduate{% + \ifdoctor{\AddStatementPage}% + \ifphd{% + \selectlanguage{english}% + \AddStatementPage + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{acknowledgements} +% Generates the English acknowledgement section. +% \begin{macrocode} +\newenvironment{acknowledgements}{% + \selectlanguage{english}% + \chapter{Acknowledgements}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{acknowledgements*} +% Generates the English acknowledgement section without an entry in the table of contents. +% \begin{macrocode} +\newenvironment{acknowledgements*}{% + \selectlanguage{english}% + \chapter*{Acknowledgements}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{danksagung} +% Generates the German acknowledgement section. +% \begin{macrocode} +\newenvironment{danksagung}{% + \selectlanguage{naustrian}% + \chapter{Danksagung}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{danksagung*} +% Generates the German acknowledgement section without an entry in the table of contents. +% \begin{macrocode} +\newenvironment{danksagung*}{% + \selectlanguage{naustrian}% + \chapter*{Danksagung}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{abstract} +% Generates the English abstract. +% \begin{macrocode} +\renewenvironment{abstract}{% + \selectlanguage{english}% + \chapter{Abstract}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{abstract*} +% Generates the English abstract without an entry in the table of contents. +% \begin{macrocode} +\newenvironment{abstract*}{% + \selectlanguage{english}% + \chapter*{Abstract}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{kurzfassung} +% Generates the German abstract without an entry in the table of contents. +% \begin{macrocode} +\newenvironment{kurzfassung}{% + \selectlanguage{naustrian}% + \chapter{Kurzfassung}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{kurzfassung*} +% Generates the German abstract. +% \begin{macrocode} +\newenvironment{kurzfassung*}{% + \selectlanguage{naustrian}% + \chapter*{Kurzfassung}% +}{% + \cleardoublepage +}% +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Page Style} +% +% \begin{macro}{vutinfth@pagestyle@default} +% Define the default page style of the thesis. +% \begin{macrocode} +\makepagestyle{vutinfth@pagestyle@default}% +\makeevenfoot{vutinfth@pagestyle@default}{\thepage}{}{}% +\makeoddfoot{vutinfth@pagestyle@default}{}{}{\thepage}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter} +% \begin{macro}{\mainmatter} +% \changes{v1.4}{2015/08/01}{Added `Ruled' pagestyle.} +% \begin{macro}{\backmatter} +% Apply the default page style to the thesis. +% \begin{macrocode} +\aliaspagestyle{chapter}{vutinfth@pagestyle@default}% +\aliaspagestyle{part}{vutinfth@pagestyle@default}% +\addto\frontmatter{\pagestyle{vutinfth@pagestyle@default}}% +\addto\mainmatter{\pagestyle{Ruled}}% +\addto\backmatter{\pagestyle{vutinfth@pagestyle@default}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \Finale +% +% ^^A chapter numbering has to be activated for the glossary +% \makeatletter\HD@numberedtrue\makeatother +% +% \PrintChanges ^^A compile glossary with `makeindex.exe -s gglo.ist -o %.gls %.glo' +% +% ^^A chapter numbering has to be deactivated for the index +% \makeatletter\HD@numberedfalse\makeatother +% +% \PrintIndex ^^A compile index with `makeindex.exe -s gind.ist %.idx' +% +\endinput \ No newline at end of file diff --git a/thesis/vutinfth.ins b/thesis/vutinfth.ins new file mode 100644 index 0000000..64bb64e --- /dev/null +++ b/thesis/vutinfth.ins @@ -0,0 +1,64 @@ +%% vutinfth.ins +%% Copyright (C) 2014-2020 by Thomas Auzinger +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Thomas Auzinger. +%% +%% This work consists of the files vutinfth.dtx and vutinfth.ins +%% and the derived file vutinfth.cls. +%% This work also consists of the file intro.tex. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/vutinfth} + +\preamble + +This is a generated file. +Copyright (C) 2014-2020 by Thomas Auzinger + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Thomas Auzinger. + +This work consists of the files vutinfth.dtx and vutinfth.ins +and the derived file vutinfth.cls. +This work also consists of the file intro.tex. + +\endpreamble + +\askforoverwritefalse +\generate{\file{vutinfth.cls}{\from{vutinfth.dtx}{class}}} + +\Msg{*********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the} +\Msg{* following file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space vuinfth.cls} +\Msg{*} +\Msg{* To produce the documentation run the file vuinfth.dtx} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{*********************************************************} + +\endbatchfile \ No newline at end of file