\RequirePackage[utf8]{inputenc}
%\RequirePackage{hgbpdfa}

\documentclass[language=english]{hgbarticle}

\usepackage{authblk}	% for easier formatting of author block
\renewcommand\Authfont{\sffamily\normalsize}
\renewcommand{\Affilfont}{\rmfamily\small}

%%%----------------------------------------------------------
\begin{document}
%%%----------------------------------------------------------

\title{The \textsf{hagenberg-thesis} Package}
\date{\hgbDate}

%% TODO: make sure authors end up in PDF metadata without affiliation!
\author{W.\ Burger}
\author{W.\ Hochleitner}
\affil{University of Applied Sciences Upper Austria\\
		   Department of Digital Media, Hagenberg}

%%%----------------------------------------------------------
\maketitle
%%%----------------------------------------------------------

\begin{abstract}\noindent
The \textsf{hagenberg-thesis} package is a collection of LaTeX
templates for academic theses (bachelor, master, diploma or PhD programs) and
related documents. This manual describes the main features of this package
and how they may be customized.
Pre-configured document templates for English and German manuscripts and a
complete tutorial are available on the package's home repository.
\end{abstract}

\clearpage
\tableofcontents
\clearpage

\section{Introduction}

\makeatletter
\AB@authors
\makeatother

The complete source of this package and auxiliary materials are available on
CTAN%
\footnote{\url{https://ctan.org/pkg/hagenberg-thesis}}
and its development repository.%
\footnote{\url{https://github.com/Digital-Media/HagenbergThesis}}
The package is made available under the terms of the Creative Commons
Attribution 4.0 International Public License.%
\footnote{\url{https://creativecommons.org/licenses/by/4.0/legalcode}}
The only exception are the texts of the detailed documentation of AI tool usage in
\texttt{hgbaiusage-cognisance.sty} (see Sec.~\ref{sec:AIUsage}), which are licensed under the
Creative Commons Attribution-ShareAlike 4.0 International Public License.%
\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/legalcode}}


\section{Document classes}

The \texttt{hgb} package provides the following document classes, which are
based on the standard \latex\ classes \texttt{book}, \texttt{report}, and
\texttt{article}, respectively:
%
\begin{itemize}
    \item \textbf{\texttt{hgbthesis}} (\texttt{book}):
    for bachelor's, master's, diploma, and PhD theses as well as internship reports,
    \item \textbf{\texttt{hgbreport}} (\texttt{report}):
    for project and term reports,
    \item \textbf{\texttt{hgbarticle}} (\texttt{article}):
    for drafting journal articles.
\end{itemize}


\subsection{Class options}

\subsubsection{General options}

All three document classes accept the following general options:
%
\begin{itemize}
	\item \texttt{language=}\{\texttt{english}|\texttt{german}\}:
		main document language (default: \texttt{english}).%
		\footnote{The bare options \texttt{english} and \texttt{german} still work but are deprecated.
		Note that \texttt{german} implicitly loads Babel's \texttt{ngerman} setup; when switching languages
		(see Sec.~\ref{sec:LanguageSwitchingCommands}) only \texttt{german} should be used.}
	\item \texttt{twoside=}\{\texttt{false}|\texttt{true}\}:
		page layout (default: \texttt{false} = single-sided).
		The bare option \texttt{oneside} is deprecated (use \texttt{twoside=false}).
	\item \texttt{smartquotes=true}:
		smart quotes replacement (\verb!"!...\verb!"! $\rightarrow$ ``...'');
		default is \texttt{smartquotes=false},
	\item \texttt{apa=true}:
		use APA bibliography style instead of \texttt{numeric-comp};
		default is \texttt{apa=false},
	\item \texttt{codestyle=}\{\texttt{color}|\texttt{mono}|\texttt{classic}\}:
		appearance of code listings, see Sec.~\ref{sec:CodeStyle} (default: \texttt{color}),
	\item \texttt{updatecheck=true} (default): perform check of package release date;
		use \texttt{updatecheck=false} to suppress.
\end{itemize}


\subsubsection{Class-specific options}

In addition, the following class-specific options are accepted:

\noindent\textbf{\texttt{hgbthesis}}:
	\begin{itemize}
		\item \texttt{type=}%
			\{\texttt{bachelor}|\texttt{master}|\texttt{diploma}|\texttt{phd}|\texttt{internship}\}:
				thesis type (default: \texttt{master}),
		\item \texttt{titlelanguage=}\{\texttt{english}|\texttt{german}\}:
			language of the title page, defaults to main document language if omitted (all other pages,
			including the copyright page and the affidavit, use the main document language),
		\item \texttt{theme=}\{\textit{themeID}\}:
			cover page theme style (default: \texttt{default}, see Sec.~\ref{sec:Themes}),
		\item \texttt{degree=}\{\textit{key}\}:
			academic degree on the title page, \eg, \texttt{engineering} (see Sec.~\ref{sec:AcademicDegrees}),
		\item \texttt{proposal=true}: flag to indicate proposal documents (\texttt{proposal=false} is the default),
		\item \texttt{aiusage=}\{\texttt{detailed}|\texttt{short}\}:
			form of the documentation of AI tools usage, \ie, the detailed form before the bibliography or the
			short form in the affidavit (default: \texttt{detailed}, see Sec.~\ref{sec:AIUsage}).
	\end{itemize}

\noindent\textbf{\texttt{hgbreport}}:
	\begin{itemize}
		\item \texttt{titlepage=}\{\texttt{true}|\texttt{false}\}:
			title page on/off (default: \texttt{true}).
			The bare option \texttt{notitlepage} is deprecated (use \texttt{titlepage=false}).
	\end{itemize}

\noindent\textbf{\texttt{hgbarticle}}:
	\begin{itemize}
		\item \texttt{twocolumn=true}: two-column page layout (default: \texttt{twocolumn=false}),
		\item \texttt{review=true}: review mode with line numbers (default: \texttt{review=false}).
	\end{itemize}

\noindent
For example, to start a master's thesis in German, simply place
%
\begin{LaTeXCode}[numbers=none]
\documentclass[type=master,degree=engineering,language=german,smartquotes=true]{hgbthesis}
\end{LaTeXCode}
%
at the beginning of the document.

The \texttt{proposal} option is intended for a \emph{thesis proposal} (``Exposé'' or ``Proposal'') and is
only effective in \emph{conjunction} with the main thesis types, \eg,
%
\begin{LaTeXCode}[numbers=none]
\documentclass[type=bachelor,language=english,titlelanguage=german,proposal=true]{hgbthesis}
\end{LaTeXCode}
%
The result is a short exposé that contains only one chapter. Thus,
chapter numbers are not displayed. Remove the \texttt{proposal} option to
migrate a proposal document straight to the final thesis (and restore the usual
numbering scheme).

The example also shows that the main document language (\texttt{language=english}) and the
language on the title page (\texttt{titlelanguage=german}) can be set independently.

\subsection{Thesis settings (class \texttt{hgbthesis})}

\texttt{hgbthesis} supports several types of thesis documents. The following
parameters must be specified at the beginning of the main document:
%
\begin{itemize}
    \item \verb!\title{...}!,
    \item \verb!\subtitle{...}! (optional),
    \item \verb!\author{...}!,
    \item \verb!\programtype{...}! (optional, derived from \texttt{type} by default, see Sec.~\ref{sec:AcademicDegrees}), 
    \item \verb!\programname{...}!,
    \item \verb!\institution{...}! (optional if provided by the theme, see Sec.~\ref{sec:ThemeBrand}),
    \item \verb!\placeofstudy{...}!,
    \item \verb!\academicdegree{...}! (optional, free text replacing the degree selected by the class option \texttt{degree}, see Sec.~\ref{sec:AcademicDegrees}),
    \item \verb!\dateofsubmission{yyyy}{mm}{dd}!,
    \item \verb!\advisor[]{...}! (optional, multiple \verb!\advisor! statements allowed),
\end{itemize}
%
Note that \texttt{hgbthesis} only supports a \emph{single author} inside the
\verb!\author{...}! macro argument (commands \verb!\and! and
\verb!\thanks{...}! are deactivated)!

The command \verb!\advisor[role]{name}! accepts an optional argument to associate a \emph{role} 
with the advisor's \emph{name}, \eg, \verb!\advisor[Supervisor]{Prof.~Marie Curie, PhD}!.
Multiple advisors can be specified, for example
%
\begin{LaTeXCode}[numbers=none]
  \advisor[1.~Betreuerin]{Professor Frida K.~Putnik, PhD}
  \advisor[2.~Betreuer]{Franz Grillparzer, TU Wien}
  \advisor[Gutachter]{Dr.~B.\,Rutal, MIT}
\end{LaTeXCode}

\noindent
Other (optional) settings for \texttt{hgbthesis} include:
\begin{itemize}
    \item \verb!\license{cc|strict}!:
    Use the \emph{Creative Commons License} (\texttt{cc} = default) or strict license terms
      (``all rights reserved'').
    \item \verb!\logofile{xxx.pdf}!:
    %Specifies a custom logo image for the title page, to be placed in \verb!images/xxx.pdf!
    %(default is \texttt{logo.pdf}). 
		This command is \textbf{deprecated} -- the thesis logo 
		should be specified in the associated \emph{theme} file instead (see Sec.~\ref{sec:Themes}).
\end{itemize}

\subsection{Degree program type and academic degree}
\label{sec:AcademicDegrees}

The type of the degree program and the academic degree on the title page are derived from the
class options \texttt{type} and \texttt{degree}, so that all theses of a degree program use the
same wording.
The \emph{type of degree program} is derived from \texttt{type} and printed in the title page
language (see Table~\ref{tab:ProgramTypes}). \verb!\programtype{...}! replaces it by any
text, \eg, for an internship report in a master's program.

\begin{table}[H]
\caption{Type of degree program derived from the class option \texttt{type}.}
\label{tab:ProgramTypes}
\centering\small
\begin{tabular}{@{}lll@{}}
	\toprule
	\texttt{type=} & German & English \\
	\midrule
	\texttt{bachelor}   & Bachelorstudiengang & Bachelor's degree program \\
	\texttt{master}     & Masterstudiengang   & Master's degree program \\
	\texttt{diploma}    & Diplomstudiengang   & Diploma degree program \\
	\texttt{phd}        & Doktoratsstudium    & Doctoral program \\
	\texttt{internship} & Bachelorstudiengang & Bachelor's degree program \\
	\bottomrule
\end{tabular}
\end{table}

The \emph{academic degree} is selected by the class option \texttt{degree=\textit{key}}, where
\textit{key} denotes the subject group and the level (bachelor or master) is taken from
\texttt{type}. For example,
%
\begin{LaTeXCode}[numbers=none]
\documentclass[type=master,degree=engineering,...]{hgbthesis}
\end{LaTeXCode}
%
results in ``Master of Science in Engineering (MSc)'' on the title page.
Table~\ref{tab:AcademicDegrees} lists all supported keys. They cover all academic degrees of
Austrian FH degree programs as defined by AQ Austria (board decision of July 7, 2021).%
\footnote{\url{https://www.aq.ac.at/de/akkreditierung/fachhochschulen/downloads.php}}
An unknown key, or a key that is not available for the given type (\eg, \texttt{degree=security-management}
with \texttt{type=bachelor}), results in an error.
The academic degree is shown by themes based on \texttt{default} (see Sec.~\ref{sec:Themes}),
but not for internship reports and not for proposals (\texttt{proposal=true}). Thus the option can
remain unchanged when a proposal is turned into the final thesis.

Academic degrees not covered by the option (\eg, of universities, of other countries, or doctoral
degrees) are specified as free text by \verb!\academicdegree{...}!, for example,
%
\begin{LaTeXCode}[numbers=none]
\academicdegree{Master of Science (MSc)}
\end{LaTeXCode}
%
If both are given, \verb!\academicdegree! takes precedence and a warning is issued.
Custom themes may define additional keys by
%
\begin{LaTeXCode}[numbers=none]
\hgbDefineDegree{<key>}{<bachelor degree>}{<master degree>}
\end{LaTeXCode}
%
where an empty argument means that the degree does not exist at that level.

\begin{table}[H]
\caption{Supported values of the class option \texttt{degree} (academic degrees of Austrian FH degree programs).}
\label{tab:AcademicDegrees}
\centering\small
\begin{tabular}{@{}lll@{}}
	\toprule
	\texttt{degree=} & \texttt{type=} & Academic degree \\
	\midrule
	\texttt{arts-design}         & \texttt{bachelor} & Bachelor of Arts in Arts and Design (BA) \\
	                             & \texttt{master}   & Master of Arts in Arts and Design (MA) \\ \addlinespace
	\texttt{engineering}         & \texttt{bachelor} & Bachelor of Science in Engineering (BSc) \\
	                             & \texttt{master}   & Master of Science in Engineering (MSc) \\ \addlinespace
	\texttt{social-sciences}     & \texttt{bachelor} & Bachelor of Arts in Social Sciences (BA) \\
	                             & \texttt{master}   & Master of Arts in Social Sciences (MA) \\ \addlinespace
	\texttt{business}            & \texttt{bachelor} & Bachelor of Arts in Business (BA) \\
	                             & \texttt{master}   & Master of Arts in Business (MA) \\ \addlinespace
	\texttt{military-leadership} & \texttt{bachelor} & Bachelor of Arts in Military Leadership (BA) \\
	                             & \texttt{master}   & Master of Arts in Military Leadership (MA) \\ \addlinespace
	\texttt{police-leadership}   & \texttt{bachelor} & Bachelor of Arts in Police Leadership (BA) \\ \addlinespace
	\texttt{security-management} & \texttt{master}   & Master of Arts in Security Management (MA) \\ \addlinespace
	\texttt{cultural-studies}    & \texttt{bachelor} & Bachelor of Arts in Cultural Studies (BA) \\
	                             & \texttt{master}   & Master of Arts in Cultural Studies (MA) \\ \addlinespace
	\texttt{natural-sciences}    & \texttt{bachelor} & Bachelor of Science in Natural Sciences (BSc) \\
	                             & \texttt{master}   & Master of Science in Natural Sciences (MSc) \\ \addlinespace
	\texttt{health-studies}      & \texttt{bachelor} & Bachelor of Science in Health Studies (BSc) \\
	                             & \texttt{master}   & Master of Science in Health Studies (MSc) \\ \addlinespace
	\texttt{law}                 & \texttt{bachelor} & Bachelor of Laws (LLB) \\
	                             & \texttt{master}   & Master of Laws (LLM) \\
	\bottomrule
\end{tabular}
\end{table}


\section{Style files and user commands}

The package comes with a set of style (\texttt{*.sty}) files that can be used
independently of the document classes listed above:
\begin{itemize}
  \item \texttt{hgb.sty}: language and date setup, custom commands;
  \item \texttt{hgbabbrev.sty}: various abbreviation macros;
  \item \texttt{hgbaiusage.sty}: documentation of AI tool usage (for \texttt{hgbthesis}; texts of the
    detailed form in \texttt{hgbaiusage-cognisance.sty}, CC BY-SA 4.0);
  \item \texttt{hgbalgo.sty}: additions to \texttt{algpseudocodex} package;
  \item \texttt{hgbbib.sty}: bibliography setup;
  \item \texttt{hgbdict.sty}: language dictionary functions;
  \item \texttt{hgbheadings.sty}: definition of page headers;
  \item \texttt{hgblistings.sty}: setup for code listings;
  \item \texttt{hgbmath.sty}: setup and commands for math typesetting;
  \item \texttt{hgbpdfa.sty}: setup for PDF/A generation.
\end{itemize}

\subsection{General user commands and environments (\texttt{hgb.sty})}
\label{sec:GeneralUserCommands}

\begin{itemize}
   \item \textbf{\texttt{{\bs}hgbDate}}: Outputs the package version date,
    \eg, ``\texttt{\hgbDate}''.
	\item \textbf{\texttt{{\bs}getcurrentlabel}}:
			Yields the most recently assigned label number.
   \item \textbf{\texttt{{\bs}calibrationbox}}\verb!{width}{height}!:
			Inserts a test box for checking the final print size (in millimeters).
	\item \verb!\begin{block}...\end{block}!:
			Dummy environment, provides a limited scope for variable/command redefinitions.
\end{itemize}


\subsection{Language switching commands and smart quotes (\texttt{hgb.sty})}
\label{sec:LanguageSwitchingCommands}

\begin{itemize}
	\item \verb!\SetLanguage{<language>}!:
    Switches to the specified language.
		This and the other language switching commands listed below
		also refresh the \texttt{smartquotes} settings (if activated).
	\item \verb!\begin{SwitchLanguage}{<language>}...\end{SwitchLanguage}!:
    Temporarily switches to the specified language and reverts to the current language 
		afterwards. 
	\item \verb!\begin{english}...\end{english}!:
    Temporarily switches to English language settings, short for
		\verb!\begin{SwitchLanguage}{english}..!.
	\item \verb!\begin{german}...\end{german}!:
    Temporarily switches to German language settings, short for
		\verb!\begin{SwitchLanguage}{german}..!.
	\item \verb!\SmartquotesActive!:
		For debugging only. Returns \texttt{true}/\texttt{false} if smart quotes are activated in
		the current context (or an appropriate message if the \texttt{csquotes} package was not loaded at all).
\end{itemize}


\subsection{Text commands (\texttt{hgbabbrev.sty})}

\subsubsection*{Special characters:}

\begin{itemize}
    \item \textbf{\texttt{{\bs}bs}}: Inserts a backslash character (short for
    \verb!\textbackslash!).
    \item \textbf{\texttt{{\bs}obnh}}: Inserts an optional break with no
    hyphen (\eg, \verb!PlugIn{\obnh}Filter!).
\end{itemize}


\subsubsection*{German abbreviations:}

\begin{itemize}
    \item \textbf{\texttt{{\bs}bzgl}}: 	\bzgl
    \item \textbf{\texttt{{\bs}bzw}}: 	\bzw
    \item \textbf{\texttt{{\bs}ca}}: 		\ca
    \item \textbf{\texttt{{\bs}dah}}: 	\dah
    \item \textbf{\texttt{{\bs}Dah}}: 	\Dah
    \item \textbf{\texttt{{\bs}ds}}: 		\ds
    \item \textbf{\texttt{{\bs}etc}}: 	\etc
    \item \textbf{\texttt{{\bs}evtl}}: 	\evtl
    \item \textbf{\texttt{{\bs}ia}}: 		\ia
		\item \textbf{\texttt{{\bs}oa}}: 		\oa
    \item \textbf{\texttt{{\bs}sa}}: 		\sa
    \item \textbf{\texttt{{\bs}so}}: 		\so
    \item \textbf{\texttt{{\bs}su}}: 		\su
    \item \textbf{\texttt{{\bs}ua}}: 		\ua
    \item \textbf{\texttt{{\bs}Ua}}: 		\Ua
    \item \textbf{\texttt{{\bs}uae}}: 	\uae
    \item \textbf{\texttt{{\bs}usw}}: 	\usw
    \item \textbf{\texttt{{\bs}uva}}: 	\uva
    \item \textbf{\texttt{{\bs}uvm}}: 	\uvm
    \item \textbf{\texttt{{\bs}va}}: 		\va
    \item \textbf{\texttt{{\bs}vgl}}: 	\vgl
    \item \textbf{\texttt{{\bs}zB}}: 		\zB
    \item \textbf{\texttt{{\bs}ZB}}: 		\ZB
\end{itemize}

\subsubsection*{English abbreviations:}

\begin{itemize}
    \item \textbf{\texttt{{\bs}ie}}: 	\ie
    \item \textbf{\texttt{{\bs}eg}}: 	\eg
    \item \textbf{\texttt{{\bs}etc}}: \etc
    \item \textbf{\texttt{{\bs}Eg}}: 	\Eg
    \item \textbf{\texttt{{\bs}wrt}}: \wrt
\end{itemize}

\noindent
Note that none of the above abbreviation macros ``eats'' subsequent white
space, \ie, they can be used without additional controls, as in
``\verb!\wrt what I said!'', for example.

\subsection{Bibliography commands (\texttt{hgbbib.sty})}

\begin{itemize}
    \item 
    \textbf{\texttt{{\bs}AddBibFile}}\newline
    A wrapper to \texttt{biblatex}'s \verb!\addbibresource! macro (for backward compatibility only).
    \item
    \textbf{\texttt{{\bs}MakeBibliography}}[\emph{options}]
    \newline
    Inserts the
    reference section or chapter. By default, references are automatically
    split into category subsections.%
    \footnote{Predefined reference categories are \texttt{literature},
        \texttt{avmedia}, \texttt{online} and \texttt{software}.}
    Use the option \texttt{nosplit} to produce a traditional (\ie,
    contiguous) list of references.
    \item
    \textbf{\texttt{{\bs}mcite}}%
        [\emph{text1}]\{\emph{key1}\}%
        [\emph{text2}]\{\emph{key2}\}%
        \ldots
        [\emph{textN}]\{\emph{keyN}\}%
    \newline
    Analogous to \texttt{bib\-la\-tex}'s \texttt{{\bs}cites} command%
    \footnote{%
    \url{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf}
    (see Sec.~3.8.3)} but inserts semicolons between reference entries for
    better readability.
\end{itemize}

% \MakeBibliography ... creates a reference section split subsections (default)
% \MakeBibliography[nosplit] ... creates a one-piece reference section


\subsection{Code environments (\texttt{hgblistings.sty})}
\label{sec:CodeEnvironments}

The code environments listed in Table~\ref{tab:CodeEnvironments} are defined. Their keywords correspond
to current language versions (\eg, C23, C++23, C\#~13, Java~21, Python~3, PHP~8.4, Swift~6); built-in
types and functions form a second keyword class. The table also lists the language names for
including code files with \verb!\lstinputlisting!, for example,
%
\begin{LaTeXCode}[numbers=none]
\lstinputlisting[language=Java]{code/Main.java}
\end{LaTeXCode}
%
Languages that are also defined by \texttt{listings} are extended by the dialect \texttt{[hgb]}, which is
set as default dialect where possible (\eg, \texttt{language=Java} selects \texttt{[hgb]Java}). For HTML,
\latex, Scala, SQL and XML, the dialect must be specified explicitly (\eg, \texttt{language=\{[hgb]SQL\}});
otherwise, the original definition of \texttt{listings} is used.

\begin{table}[H]
\caption{Code environments and language names for \texttt{\textbackslash lstinputlisting}.}
\label{tab:CodeEnvironments}
\centering\small
\begin{tabular}{@{}lll@{}}
	\toprule
	Language     & Environment          & \texttt{language=} \\
	\midrule
	Bash         & \texttt{BashCode}    & \texttt{bash} \\
	C            & \texttt{CCode}       & \texttt{C} \\
	C++          & \texttt{CppCode}     & \texttt{C++} \\
	C\#          & \texttt{CsCode}      & \texttt{CSharp} \\
	CSS          & \texttt{CssCode}     & \texttt{CSS} \\
	Dart         & \texttt{DartCode}    & \texttt{Dart} \\
	GLSL         & \texttt{GlslCode}    & \texttt{GLSL} \\
	Go           & \texttt{GoCode}      & \texttt{Go} \\
	HTML         & \texttt{HtmlCode}    & \texttt{\{[hgb]HTML\}} \\
	Java         & \texttt{JavaCode}    & \texttt{Java} \\
	JavaScript   & \texttt{JsCode}      & \texttt{JavaScript} \\
	JSON         & \texttt{JsonCode}    & \texttt{JSON} \\
	Kotlin       & \texttt{KotlinCode}  & \texttt{Kotlin} \\
	\latex       & \texttt{LaTeXCode}   & \texttt{\{[hgb]TeX\}} \\
	MATLAB       & \texttt{MatlabCode}  & \texttt{Matlab} \\
	Objective-C  & \texttt{ObjCCode}    & \texttt{ObjectiveC} \\
	PHP          & \texttt{PhpCode}     & \texttt{PHP} \\
	Python       & \texttt{PythonCode}  & \texttt{Python} \\
	R            & \texttt{RCode}       & \texttt{R} \\
	Rust         & \texttt{RustCode}    & \texttt{Rust} \\
	Scala        & \texttt{ScalaCode}   & \texttt{\{[hgb]Scala\}} \\
	SQL          & \texttt{SqlCode}     & \texttt{\{[hgb]SQL\}} \\
	Swift        & \texttt{SwiftCode}   & \texttt{Swift} \\
	TypeScript   & \texttt{TsCode}      & \texttt{TypeScript} \\
	XML          & \texttt{XmlCode}     & \texttt{\{[hgb]XML\}} \\
	YAML         & \texttt{YamlCode}    & \texttt{YAML} \\
	generic code & \texttt{GenericCode} & \texttt{\{\}} \\
	\bottomrule
\end{tabular}
\end{table}
%
\texttt{hgblistings} is based on the \texttt{listingsutf8}%
\footnote{\url{https://ctan.org/pkg/listingsutf8}}
package, thus any valid \texttt{listings}%
\footnote{\url{https://ctan.org/pkg/listings}}
option may be used; for example, the option \texttt{numbers=none} to suppress
line numbers:
%
\begin{LaTeXCode}[numbers=none]
    \begin{JavaCode}[numbers=none]
    ... // Java code comes here
    \end{JavaCode}
\end{LaTeXCode}


\subsubsection{Code style}
\label{sec:CodeStyle}

The appearance of all code environments is selected by the class option \texttt{codestyle}:
%
\begin{itemize}
	\item \texttt{codestyle=color} (default): white background with a thin gray line between the line
		numbers and the code; syntax highlighting with colors similar to common development environments
		(Visual Studio Code) with sufficient contrast (WCAG~2 AA) for keywords (dark blue), built-in types
		and functions (teal), strings (dark red) and comments (green, italic),
	\item \texttt{codestyle=mono}: the same layout without colors (comments in italics), \eg, for printing
		in black and white,
	\item \texttt{codestyle=classic}: gray background without colors, as in previous versions of this
		package.
\end{itemize}
%
The styles are also defined as \texttt{listings} styles \texttt{hgbcolor}, \texttt{hgbmono} and
\texttt{hgbclassic}, so they can be selected for individual listings as well:
%
\begin{LaTeXCode}[numbers=none]
    \begin{JavaCode}[style=hgbmono]
    ... // Java code without colors
    \end{JavaCode}
\end{LaTeXCode}
%
The following colors are used and may be redefined in the preamble:
%
\begin{itemize}
	\item \texttt{ListingsKeywordColor}: keywords,
	\item \texttt{ListingsTypeColor}: built-in types and functions,
	\item \texttt{ListingsStringColor}: strings,
	\item \texttt{ListingsCommentColor}: comments,
	\item \texttt{ListingsLineNumberColor}: line numbers,
	\item \texttt{ListingsRuleColor}: line between the line numbers and the code,
	\item \texttt{ListingsBackgroundColor}: background (\texttt{classic} only).
\end{itemize}
%
For example,
%
\begin{LaTeXCode}[numbers=none]
    \definecolor{ListingsKeywordColor}{HTML}{0000FF}
\end{LaTeXCode}


\subsection{Mathematical commands (\texttt{hgbmath.sty})}

\texttt{hgbmath} requires (and automatically loads) the \texttt{amsmath}%
\footnote{\url{https://ctan.org/pkg/amsmath}}
package, thus, all commands and symbols of \texttt{amsmath} are available by
default. The following \emph{additional} commands can only be used in math mode:
%
\begin{itemize}
    \item \textbf{\texttt{{\bs}Cpx}}: $\Cpx$ (complex numbers),
    \item \textbf{\texttt{{\bs}N}}: $\N$ (natural numbers),
    \item \textbf{\texttt{{\bs}R}}: $\R$ (real numbers),
    \item \textbf{\texttt{{\bs}Q}}: $\Q$ (rational numbers),
    \item \textbf{\texttt{{\bs}Z}}: $\Z$ (integer numbers).
\end{itemize}


\subsection{Algorithms (\texttt{hgbalgo.sty})}

\texttt{hgbalgo} is a stand-alone package that is based on -- and extends --
the \texttt{algorithmicx} and \texttt{algpseudocodex} packages.%
\footnote{\url{https://ctan.org/pkg/algorithmicx},
    \url{https://ctan.org/pkg/algpseudocodex}}
It fixes some (mostly indentation-related) problems, adds color, and provides
some additional commands. It also loads the \texttt{algorithm}%
\footnote{\url{https://ctan.org/pkg/algorithms}}
package, which defines a compatible float container for algorithms:
\verb!\begin{algorithm}! \verb!...! \verb!\end{algorithm}!.

\paragraph{Additional algorithm commands:}
\begin{itemize}
    \item
    \textbf{\texttt{{\bs}StateNN[<nesting>]\{<text>\}}}:
    Creates a \emph{non-numbered} statement like \texttt{algo\-rith\-micx}'s
    \verb!\Statex! command but provides controlled indentation inside nested
    constructs. The optional integer argument \verb!<nesting>! can be used to
    specify the \emph{nesting depth} to compensate for a bug in
    \texttt{algorithmicx} (the nesting level inside a block is not set
    properly before the first \verb!\State! command). Omitting the optional
    argument should give correct indentation in most situations.
    \item
    \textbf{\texttt{{\bs}Input\{<text>\}}}:
    For describing the input parameters in a procedure's preamble.
    \item
    \textbf{\texttt{{\bs}Output\{<text>\}}}:
    For describing the output values in a procedure's preamble.
    \item
    \textbf{\texttt{{\bs}Returns\{<text>\}}}:
    For describing the return values in a procedure's preamble.
\end{itemize}

\paragraph{Vertical spacing commands:}
The following commands are provided for fine-tuning the vertical spacing
between individual statements of an algorithm (the standard spacing commands
like \verb!\smallskip! \etc\ have no effect between statements):%
\footnote{Note that the standard spacing commands work \emph{between}
\texttt{procedure} and \texttt{function} blocks in the usual way.}
\begin{itemize}
    \item \textbf{{\bs}\texttt{algsmallskip}}: inserts 3pt extra space,
    \item \textbf{{\bs}\texttt{algmedskip}}: inserts 6pt extra space,
    \item \textbf{{\bs}\texttt{algbigskip}}: inserts 12pt extra space.
\end{itemize}
They are supposed to be used inside (\ie, at the end of) statements, for
example:
%
\begin{LaTeXCode}[numbers=none]
    \State $x \gets x + 1$ \algsmallskip
\end{LaTeXCode}

\paragraph{Defined algorithm colors:}
\begin{itemize}
    \item \textbf{\texttt{AlgKeywordColor}}: for algorithm keywords,
    \item \textbf{\texttt{AlgProcedureColor}}: for procedure and function names.
\end{itemize}
These colors can be redefined at any time (see the \texttt{xcolor}%
\footnote{\url{https://ctan.org/pkg/xcolor}}
package), \eg, by
\begin{LaTeXCode}[numbers=none]
    \definecolor{AlgKeywordColor}{named}{black}
    \definecolor{AlgProcedureColor}{rgb}{0.0, 0.5, 0.0}     % dark green
\end{LaTeXCode}


\subsection{Documentation of AI tool usage (\texttt{hgbaiusage.sty})}
\label{sec:AIUsage}

Package \texttt{hgbaiusage} is loaded by \texttt{hgbthesis} and creates the documentation of the
usage of generative AI tools in one of two forms:
%
\begin{itemize}
	\item the \emph{detailed form} (environment \texttt{aiusagedetails}), a form with confirmations
		and a table of activities, which is printed automatically as an unnumbered chapter directly
		before the bibliography. Like the bibliography, it is not mentioned in the affidavit, or
	\item the \emph{short form} (environment \texttt{aiusage}), composed of predefined text modules
		and printed as a supplement to the affidavit created by \verb!\maketitle!, so that a single
		signature covers both.
\end{itemize}
%
Both forms can be maintained in a document at the same time. The class option
\texttt{aiusage=}\{\texttt{detailed}|\texttt{short}\} selects the one that is printed (default:
\texttt{detailed}, since most degree programs at FH O\"O use the detailed form), so it is easy to
switch between them, \eg,
%
\begin{LaTeXCode}[numbers=none]
\documentclass[type=master,language=german,aiusage=short]{hgbthesis}
\end{LaTeXCode}
%
Both environments only collect their entries and print nothing at the place where they are used.
They must therefore be given \emph{before} \verb!\maketitle!. The sample documents keep both forms in
the file \texttt{ki-dokumentation.tex} or \texttt{ai-usage.tex}, respectively, next to \texttt{main.tex}
and \texttt{hgbreferences.bib}, which is included with \verb!\input! before \verb!\maketitle! (the internship reports contain them directly in
\texttt{main.tex}). Both forms are printed in the main language of the document, like the affidavit.
The texts are those of the FH O\"O templates (2026), as is the text of the affidavit.

\subsubsection*{Short form}

The environment \texttt{aiusage} composes the documentation of predefined text modules, for example,
%
\begin{LaTeXCode}[numbers=none]
\begin{aiusage}
  \aiusedfor{literature-search}
  \aiusedfor{proofreading}
\end{aiusage}
\end{LaTeXCode}
%
The following commands are available inside the environment:
\begin{itemize}
	\item \verb!\aiusednone!: no generative AI tools were used (cannot be combined with the other commands),
	\item \verb!\aiusedfor{<key>}!: AI tools were used for a predefined purpose (see Table~\ref{tab:AIUsagePurposes}),
	\item \verb!\aiusedforother{<text>}!: AI tools were used for another purpose; \verb!<text>! continues
		the sentence like the predefined text modules (see the examples below).
\end{itemize}
With \texttt{aiusage=short}, an empty or missing environment results in a warning, and the
affidavit contains no documentation of AI tools usage. Examples of other purposes in English and German:
%
\begin{LaTeXCode}[numbers=none]
\aiusedforother{create the figures in Chapter 3.}
\aiusedforother{um die Abbildungen in Kapitel 3 zu erzeugen.}
\end{LaTeXCode}
%
Thesis proposals (option \texttt{proposal}) have no affidavit; there, the short form (or the reference
to the appendix) is printed as a separate chapter after the title page.

\begin{table}[H]
\caption{Predefined purposes for \texttt{\bs aiusedfor} (short form).}
\label{tab:AIUsagePurposes}
\centering\small
\begin{tabular}{@{}lp{0.6\linewidth}@{}}
	\toprule
	\textit{key} & Text (English) \\
	\midrule
	\texttt{ideas}                    & gather initial ideas for potential research questions and relevant theories. \\
	\texttt{literature-search}        & search for literature. \\
	\texttt{literature-understanding} & better understand academic literature (e.g., summaries). \\
	\texttt{proofreading}             & proofread parts of the thesis and improve the linguistic style. \\
	\bottomrule
\end{tabular}
\end{table}

\subsubsection*{Detailed form}

The environment \texttt{aiusagedetails} collects the entries of a form with two statements on the
responsible use of AI tools (with check boxes) and a table of eleven activities, listing the AI tools
used for each activity and a description of their use. Its texts were adapted by FH O\"O (2026) from
Gimpel et al.\ (2023)%
\footnote{Gimpel, H., Dilger, P., L\"ammermann, L., Urbach, N. (2023). COGNISANCE: Declaration of
Generative AI Tool Usage in Higher Education Tests. Research Center for Information Management.
\url{https://doi.org/10.17605/OSF.IO/VGXF7}}
and, unlike the rest of the package, are licensed under CC BY-SA 4.0. Therefore, they are kept in the
separate file \texttt{hgbaiusage-cognisance.sty}, and the source reference is printed below the form.
For example,
%
\begin{LaTeXCode}[numbers=none]
\begin{aiusagedetails}
  \aiconfirm{accuracy}
  \aiconfirm{responsibility}
  \aiactivity{coding}{GitHub Copilot}{Generation of test functions (Chapter 4)}
  \aiactivity{editing}{DeepL Write}{Proofreading of Chapters 1--5}
  \aifurtheruse{Generation of test data for the evaluation (Section 5.2).}
  \aifurtheruse{Creation of charts from the measurement data (Section 5.3).}
\end{aiusagedetails}
\end{LaTeXCode}
%
The following commands are available inside the environment:
\begin{itemize}
	\item \verb!\aiconfirm{accuracy}!, \verb!\aiconfirm{responsibility}!: checks the box of the
		statement that the outputs of AI tools were verified and corrected where required, and that
		the responsibility lies with the author(s), respectively. A statement that is not confirmed
		results in a warning (with \texttt{aiusage=detailed}).
	\item \verb!\aiactivity{<key>}{<tools>}{<description>}!: AI tools used for an activity (see
		Table~\ref{tab:AIUsageActivities}) and a description of their use (type of usage, affected
		sections, \etc). Multiple entries for the same activity are appended.
	\item \verb!\aifurtheruse{<text>}!: further use of AI tools that fits none of the activities
		(optional). Use one \verb!\aifurtheruse! per use: a single entry is printed as a paragraph,
		several entries as a bulleted list.
\end{itemize}
%
As in the FH O\"O template, the table always lists all activities. The cells of activities without
entries, and the further use if \verb!\aifurtheruse! is not given, are marked with the dash used for
empty table cells in the main language of the document, \ie, an en dash (--) in German and an em dash
(---) in English. Unlike the template, the form contains no instructions to the authors (\eg, to name
the AI tools used); these are given as comments in the sample documents instead.

With \texttt{aiusage=detailed}, the form is printed directly before the bibliography created by
\verb!\MakeBibliography! (\texttt{hgbbib.sty}) as an unnumbered chapter that is listed in
the table of contents, with the same kind of heading as the bibliography. Documents without
\verb!\MakeBibliography! get the form at the end of the document. The affidavit does not mention the
detailed form.

\begin{table}[H]
\caption{Activities for \texttt{\bs aiactivity} (detailed form).}
\label{tab:AIUsageActivities}
\centering\small
\begin{tabular}{@{}ll@{}}
	\toprule
	\textit{key} & Activity (English) \\
	\midrule
	\texttt{ideas}          & Idea generation \& conceptualization \\
	\texttt{literature}     & Literature search and analysis \\
	\texttt{methodology}    & Methodology \\
	\texttt{coding}         & Coding \\
	\texttt{data}           & Data collection and analysis \\
	\texttt{interpretation} & Interpretation and validation \\
	\texttt{structure}      & Structuring and planning the text \\
	\texttt{generation}     & Generating the text \\
	\texttt{translation}    & Translating text \\
	\texttt{editing}        & Reviewing \& editing the text \\
	\texttt{references}     & Citation management \\
	\bottomrule
\end{tabular}
\end{table}


\subsection{PDF/A generation (\texttt{hgbpdfa.sty})}

Package \texttt{hgbpdfa} contains definitions for generating PDF/A-compliant 
(PDF/A-2b) output files. It is based on the emerging \latex-3 \texttt{pdfmanagement} package.%
\footnote{\url{https://ctan.org/pkg/pdfmanagement-testphase}}
\texttt{hgbpdfa.sty} is loaded by \texttt{hgbarticle.cls}. For \texttt{hgbthesis} and
\texttt{hgbreport}, it is loaded at the very beginning of the main document, \ie, before
\verb!\documentclass! (as in all sample documents), and may be omitted if no PDF/A output is
required. The font encoding (\texttt{T1}) and the Latin Modern fonts (\texttt{lmodern}) are loaded
by all classes independently of \texttt{hgbpdfa} when compiling with \texttt{pdflatex}.
PDF metadata insertion is done with the associated \texttt{hyperref-generic} 
module (using \verb!\hypersetup!) in \texttt{hgb.sty}).



\section{Custom front pages using \emph{themes}}
\label{sec:Themes}

The content and structure of the front pages generated for the various thesis types
(\texttt{bachelor}, \texttt{master} \etc) may be easily customized to meet the specific
requirements of different institutions or departments.
Note that this kind of customization is typically done at the institutional level and not
by the individual author (student).


\subsection{Preconfigured themes}

The various front page arrangements are called \emph{themes} in the following.
Each theme is identified by a unique \texttt{\textit{themeID}} and associated with a 
particular style file (\latex\ package) named 
\texttt{hgbtheme-\textit{themeID}.sty}.
For example, the theme with \texttt{\textit{themeID}} = \texttt{default} is defined 
by the associated file
\begin{itemize}
  \item[] \texttt{hgbtheme-default.sty}.
\end{itemize}
%
Additional resources required by a theme (such as graphics files) must be named with the 
complete \emph{theme name} (\texttt{hgbtheme-\textit{themeID}})
as a prefix, for example,%
\footnote{This is to avoid file name conflicts since themes are part of the 
CTAN distribution and thus all theme-related files will eventually end up in a single, 
flat directory.}
\begin{itemize}
	\item[] \texttt{hgbtheme-fhooe26-logo.pdf}
\end{itemize}
%
which contains the logo graphics used by theme \texttt{fhooe26}.
The following themes are part of this package:
%
\begin{itemize}
	\item \texttt{default}: title page following the title page prototype for theses of the
		University of Applied Sciences Upper Austria (FH OÖ), with the logo at the top left
		and left-aligned text. This theme always uses the \emph{current} official brand
		(logo and name) of the institution, \ie, it switches from FH OÖ to UAP automatically
		as soon as the UAP logo file is available (see Sec.~\ref{sec:ThemeBrand}).
	\item \texttt{fhooe26}: same layout as \texttt{default} with the FH OÖ brand pinned, \ie,
		it keeps the FH OÖ logo and name after future brand changes.
	\item \texttt{uap27}: same layout as \texttt{default} with the UAP brand pinned (UAP is the
		name of FH OÖ from January 18, 2027), also before the official switch. Without the
		UAP logo file, the title page is created without logo and a warning is issued.
	\item \texttt{classic}: the former \texttt{default} theme (centered layout with the FH OÖ shield logo).
	\item \texttt{fhooe24}: title page with the FH OÖ cover background of 2024.
	\item \texttt{custom}: template for a custom theme (see Sec.~\ref{sec:CustomizingThemes}).
\end{itemize}

To \emph{use} a specific theme, option \texttt{theme=\textit{themeID}}
is added to the \verb!\documentclass! command, for example,
\begin{itemize}
	\item[] \verb!\documentclass[theme=default,...]{hgbthesis}!
\end{itemize}


\subsection{Brand: logo and institution name}
\label{sec:ThemeBrand}

Theme \texttt{default} keeps the \emph{brand}, \ie, the logo and the name of the institution,
separate from the layout of the title page. The brand is set by the command
\begin{itemize}
	\item[] \verb!\hgb@SetBrand[<logo height>]{<logo file>}{<name in German>}{<name in English>}!
\end{itemize}
%
where the optional logo height defaults to 28\,mm.
The institution's name is printed in the title page language, unless it is specified
explicitly by \verb!\institution{...}! in the document.
Brand themes like \texttt{fhooe26} load \texttt{default} as their parent theme and call
\verb!\hgb@SetBrand! afterwards, for example,
%
\begin{LaTeXCode}[numbers=none]
\hgb@UseTheme{default}	% parent theme (layout)
\hgb@SetBrand{my-logo.pdf}{Name der Hochschule}{Name of the institution}
\end{LaTeXCode}
%
The same approach can be used in a custom theme to adapt the title page to another institution.
A theme that calls \verb!\hgb@SetBrand! pins its brand.

\subsubsection*{Switch from FH OÖ to UAP}

From January 18, 2027, FH Oberösterreich is called \emph{UAP -- University of Applied Sciences
Upper Austria}. Since the new logo must not be published before the official launch, the logo file
is not part of this package until then. Theme \texttt{default} therefore decides on the brand when
the title page is created:
%
\begin{itemize}
	\item If the logo file \texttt{hgbtheme-uap27-logo.pdf} is found, the UAP brand is used:
		the UAP logo (31.5\,mm high, \ie, the word mark ``UAP'' is about 12\,mm high) and the
		institution name ``University of Applied Sciences Upper Austria'' in both languages, as
		specified for scientific publications.
	\item Otherwise, the FH OÖ brand is used as before.
\end{itemize}
%
The file is looked up in the document directory, in the directories given by
\verb!\graphicspath! (\eg, \texttt{images/}) and in the \TeX\ installation. Thus, to switch an
existing document to the UAP brand, it is sufficient to add the logo file to it; neither the document
nor the package files have to be changed. The log file states which brand is used. Themes that pin
a brand (\texttt{fhooe26}, \texttt{uap27}, or a custom theme calling \verb!\hgb@SetBrand!) are not
affected.

The logo file must contain the umbrella brand (word mark with the English name and the German
descriptor ``Hochschule für Angewandte Wissenschaften'') in the standard colors (red and black), be
cropped tightly to the logo (without clear space, \eg, with \texttt{pdfcrop}), use the sRGB color
space and contain no fonts (text converted to outlines), so that the document stays PDF/A-compliant.
After the official launch, the logo file will be added to the package.


\subsection{Customizing themes}
\label{sec:CustomizingThemes}

To customize the title page setup to their needs, authors (or administrators) should 
\emph{not} modify any of the standard theme files, since these may not be local but loaded
from a package distribution.
There are two recommended ways instead:

\subsubsection{Option 1: Adapt \texttt{hgbtheme-custom.sty}}

Copy the theme file \texttt{hgbtheme-custom.sty} (which is part of this distribution) to the 
\emph{main document directory} (if not there already) and open it in your LaTeX editor.
It defines \texttt{hgbtheme-default.sty} as the parent theme by the initial command
\begin{LaTeXCode}[numbers=none]
\hgb@UseTheme{default}
\end{LaTeXCode}
%
All commands defined in the parent theme are visible and may be redefined,
typically by \verb!\renewcommand! (see Sec.\ \ref{sec:ThemeStyleCommands}
for available commands).
To activate the associated theme simply use \texttt{custom} as the \texttt{\textit{themeID}}
in the associated document option, \ie,
%
\begin{LaTeXCode}[numbers=none]
\documentclass[theme=custom,...]{hgbthesis}
\end{LaTeXCode}
%
This is the simplest approach if only a \emph{single} custom theme is needed.

\subsubsection{Option 2: Create multiple custom themes}

Thesis administrators may find it useful to define \emph{multiple} custom themes for their
institution or department(s).
For this purpose, simply copy file \texttt{hgbtheme-default.sty} or \texttt{hgbtheme-custom.sty}
to a new file, \eg, \texttt{hgbtheme-physics.sty},%
\footnote{To be placed in the main document directory. Note the naming conventions!}
and modify it accordingly. The associated theme can then be invoked by
%
\begin{LaTeXCode}[numbers=none]
\documentclass[theme=physics,...]{hgbthesis}
\end{LaTeXCode}
%
An error will be raised if the associated \texttt{.sty} file cannot be found.



\subsection{Commands and variables available to custom theme styles}
\label{sec:ThemeStyleCommands}

Any theme style must at least define the command
\begin{itemize}
  \item[] \verb!\hgb@MakeFrontPages{..}!
\end{itemize}
which is pre-defined (as throwing an error) in \texttt{hgbthesis.cls}
and invoked by \verb!\maketitle!.
If \texttt{default} is used as the parent theme, \verb!\hgb@MakeFrontPages! 
is already set up properly and redefinition is optional, \ie,
%
\begin{LaTeXCode}[numbers=none]
\hgb@UseTheme{default}		% parent theme
\renewcommand{\hgb@MakeFrontPages}{..}	% optional
\end{LaTeXCode}
%

\noindent
Moreover, the following macros and variables are assured to be available for defining custom themes
(see \texttt{hgbtheme-default.sty} for their typical usage).
These are defined in \texttt{hgbthesis.cls} and should \emph{not} be redefined:
%
\begin{itemize}
  \item[] \verb!\hgb@Author!
  \item[] \verb!\hgb@Title!
  \item[] \verb!\hgb@SubTitle!
  \item[] \verb!\hgb@Institution!
  \item[] \verb!\hgb@ProgramType!
  \item[] \verb!\hgb@ProgramName!
  \item[] \verb!\hgb@AcademicDegree! (empty if not specified)
  \item[] \verb!\hgb@PlaceOfStudy!
\medskip
	\item[] \verb!\hgb@ThesisName!
	\item[] \verb!\hgb@ProposalName!
\medskip
  \item[] \verb!\hgb@AdvisorCount!
  \item[] \verb!\hgb@getAdvisorRole{<number>}!
  \item[] \verb!\hgb@getAdvisorName{<number>}!
\medskip
  \item[] \verb!\hgb@MainLanguage!
  \item[] \verb!\hgb@TitleLanguage!
  \item[] \verb!\hgb@TitlePageFont!
  %\item[] \verb!\hgb@LogoFile!
\medskip 
  %\item[] \verb!\hgb@Advisor!
  \item[] \verb!\hgb@SubmissionYear!
  \item[] \verb!\hgb@SubmissionMonth!
  \item[] \verb!\hgb@SubmissionDay!
  \item[] \verb!\hgb@GetMonthName{<language>}{<monthnumber>}!
\medskip
	\item[] \verb!\hgb@License!
\medskip
  \item[] \verb!hgb@IsProposal! (\emph{boolean}, without \verb!\!)
\end{itemize}
%
A theme that defines its own declaration page (\verb!\hgb@MakeDeclarationPage!) must call
\verb!\hgb@AIUsageDeclaration! between the text of the affidavit and the date, which inserts the short
form of the documentation of AI tools usage with \texttt{aiusage=short} (see Sec.~\ref{sec:AIUsage});
otherwise, a warning is issued. Only the title page should be set in the title page language
(\verb!\hgb@TitleLanguage!); \verb!\hgb@MakeFrontPages! of the predefined themes switches to the main
language (\verb!\SetLanguage{\hgb@MainLanguage}!) directly after the title page.

\noindent
Class \texttt{hgbthesis.cls} also defines a special \emph{hook}
\begin{itemize}
\item[] \verb!hgb@InitThemeHook!
\end{itemize}
for adding custom initialization code for the current theme in the form
%
\begin{LaTeXCode}[numbers=none]
\AddToHook{hgb@InitThemeHook}{<initialization code>},
\end{LaTeXCode}
%
typically placed at the beginning of the theme file. The collected code for
this hook is executed immediately \emph{before} \verb!\maketitle!.


In addition, theme \texttt{hgbtheme-classic.sty} defines the following
commands for generating individual title pages, which are inherited by theme \texttt{default}
(and thus by \texttt{fhooe26} and \texttt{custom}):
%
\begin{itemize}
  \item[] \verb!\hgb@MakeTitlePage! (redefined by \texttt{default})
  \item[] \verb!\hgb@MakeCompanyPage! (internship reports only)
  \item[] \verb!\hgb@MakeCopyrightPage!
  \item[] \verb!\hgb@MakeDeclarationPage!
\end{itemize}
%
Each of these may be redefined by inheriting themes.
Theme \texttt{default} additionally provides \verb!\hgb@SetBrand! (see Sec.~\ref{sec:ThemeBrand}).

\section{Package dependencies}

\begin{sloppypar}
The \texttt{hagenberg-thesis} package builds on the following \latex\ packages:\newline
\texttt{abstract}, 
\texttt{algorithm}, 
\texttt{algorithmicx}, 
\texttt{algpseudocodex}, 
\texttt{amsbsy}, 
\texttt{amsfonts}, 
\texttt{amsmath}, 
\texttt{amssymb}, 
\texttt{babel}, 
\texttt{biblatex}, 
\texttt{breakurl}, 
\texttt{caption}, 
\texttt{cmap}, 
\texttt{csquotes}, 
\texttt{datetime2}, 
\texttt{enumitem}, 
\texttt{epstopdf}, 
\texttt{exscale},
\texttt{extramarks},
\texttt{fancyhdr}, 
\texttt{float}, 
\texttt{fontenc},
\texttt{forloop},
\texttt{geometry}, 
\texttt{graphicx}, 
\texttt{hypcap}, 
\texttt{hyperref}, 
\texttt{ifpdf}, 
\texttt{inputenc}, 
\texttt{lengthconvert},
\texttt{lineno},
\texttt{listingsutf8}, 
\texttt{lmodern},
\texttt{marvosym}, 
\texttt{moreverb}, 
\texttt{overpic}, 
\texttt{pdfmanagement-testphase}, 
\texttt{pdfpages}, 
\texttt{pict2e}, 
\texttt{subdepth}, 
\texttt{titlesec}, 
\texttt{titling},
\texttt{tocbasic},
\texttt{url}, 
\texttt{upquote}, 
\texttt{verbatim}, 
\texttt{xcolor}, 
\texttt{xifthen},
\texttt{xstring},
\texttt{xspace}.
\end{sloppypar}

\end{document}
