Files

361 lines
10 KiB
TeX

% Language
\usepackage[american]{babel}
% Layout
\usepackage[left=3.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry} % Typical margin
\usepackage{titling}
\usepackage{setspace} % Line stretch
% Bibliography
\usepackage[backend=biber,style=alphabetic,urldate=iso,date=iso,seconds=true]{biblatex}
\setcounter{biburlnumpenalty}{7000} % linebreaks after numbers
\bibliography{references,zotero}
\usepackage[nottoc,notlof,notlot]{tocbibind} % Include bibliography in ToC, nottoc disables the "Contents" entry for the ToC itself
% Figures
\usepackage{graphicx} % Required for inserting images
\usepackage[font=small,labelfont=bf,labelsep=endash,margin=1cm,hypcap]{caption}
\usepackage[margin=1cm,hypcap]{subcaption} % Mehrere Figuren in einer
\usepackage{floatbytocbasic} % float for komascript
% \usepackage[bottom,multiple]{footmisc} % Bottom not below footnote
\usepackage{flafter}
\usepackage{placeins} % \FloatBarrier to flush floats
% Tables
\usepackage{booktabs}
% \usepackage{tabularx}
% \usepackage{tablefootnote}
% \usepackage{makecell}
% \usepackage{color,colortbl}
% Code
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\usepackage[minted]{tcolorbox}
\setminted{style=default}
\tcbuselibrary{skins} % breakable
% Math
\usepackage{amsmath,amsthm} % Don't load amssymb with concmath-otf
\usepackage{mathtools} % Extension of amsmath
\mathtoolsset{showonlyrefs}
\usepackage{xpatch}
\makeatletter
\xpretocmd\HyRef@autoref{\noeqref{#2}}{}{} % showonlyrefs mit \autoref
\makeatother
% lua-uni-stage-tables.lua:141: attempt to perform arithmetic on a string value (local 'key')
\csname endofdump\endcsname
\usepackage{unicode-math}
\usepackage{lualatex-math}
% Typography
\usepackage[babel,final,protrusion=true,expansion=true,tracking=false,kerning=false,spacing=false]{microtype}
% \usepackage{fontspec}
\usepackage{concmath-otf}
\setmonofont{MonoLisa Alt}[Scale=MatchLowercase]
% Pagestyle
\KOMAoptions{%
% chapterprefix,
% appendixprefix,
headsepline,
% footsepline,
% cleardoublepage=current, % linenumbers and headers on interleaf pages
% cleardoublepage=plain, % linenumbers on interleaf pages
footnotes=multiple, % TODO: Doesn't work, maybe because of hyperref?
}
% Chapter style
\renewcommand*{\chapterformat}{%
{\huge\mdseries\chapapp~\thechapter\autodot\enskip}%
}
\setkomafont{chapter}{\huge\bfseries}
\renewcommand{\chapterlinesformat}[3]{%
#2{\MakeUppercase{#3}}%
\par\nobreak\vspace{.3\baselineskip}%
\rule{\textwidth}{.5pt}%
}
% Various stuff
\usepackage[page]{appendix} % [toc]
\usepackage{lipsum}
\usepackage[inkscapelatex=false]{svg} % Don't touch fonts
% \usepackage{comment}
\usepackage{pdfpages}
\usepackage[minNoteWidth=1.0cm]{luatodonotes}
\usepackage{siunitx}
\sisetup{detect-all}
\usepackage[l2tabu,orthodox]{nag}
\usepackage{etoolbox} % For \ifstrequal
\usepackage[autostyle]{csquotes} % Correct quotation marks with \textquote{}
\usepackage{silence} % Silence warnings
% \usepackage[intoc]{nomencl} % Nomenclature
\usepackage[luatex,colorlinks]{hyperref} % Load late, hidelinks
\usepackage{bookmark} % Needed for hyperref with scrbook
\usepackage[acronym,automake=immediate,nonumberlist,nogroupskip,toc]{glossaries} % Load after hyperref, toc
\setacronymstyle{long-short}
\setglossarystyle{super}
\renewcommand{\glsnamefont}[1]{\sansbf{#1}}
\usepackage{xurl} % xurl does url-line-breaks in contrast to url
% Multi-file
\usepackage{subfiles} % Load last
% Settings
\setstretch{1.25}
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000
% Allow more (and larger) floats on text pages
\renewcommand{\topfraction}{0.9} % use up to ..% of space on top
\renewcommand{\bottomfraction}{0.8} % use up to ..% of space on bottom
\setcounter{topnumber}{4} % place up to .. on top
\setcounter{bottomnumber}{1} % place up to .. on bottom
\setcounter{totalnumber}{4} % place up to .. total
\renewcommand{\textfraction}{0.07} % allow down to ..% of text
\renewcommand{\floatpagefraction}{0.7} % fill at least ..% of float pages (must be less than \topfraction)
\makeatletter\newcommand{\tcb@cnt@codeblockautorefname}{Listing}\makeatother
% Silence some warning spam
% \WarningFilter{biblatex}{The following entry could not be found} % Those are duplicated at the actual \cite usage
% \WarningFilter{latexfont}{Font shape `T1/zi4/m/it' undefined}
% \WarningFilter{latexfont}{Font shape `TS1/zi4/m/it' undefined}
% \WarningFilter{latexfont}{Some font shapes were not available}
% Macros
\let\oldurl\url%
\let\url\undefined%
\newcommand{\url}[2][\PackageError{Thesis}{URL requires 2 arguments: \url[date]{address}, e.g.\ \url[2024-07-27]{https://github.com}}{}]{\oldurl{#2} (visited on #1)}
\let\oldref\ref%
\let\ref\undefined%
\newcommand{\ref}[1]{\PackageError{Thesis}{REF:\ Use \autoref{label} instead}{}}
\let\oldcite\cite%
\let\cite\undefined%
\newcommand{\cite}[1]{\PackageError{Thesis}{CITE:\ Use \autocite{ref} instead}{}}
\newcommand{\sansbf}[1]{{\usekomafont{disposition}#1}}
\renewcommand{\author}[1]{\gdef\theauthor{#1}}
\renewcommand{\title}[1]{\gdef\thetitle{#1}}
\newcommand{\germantitle}[1]{\gdef\thegermantitle{#1}}
\newcommand{\thesistype}[1]{\gdef\thethesistype{#1}}
\newcommand{\thesisid}[1]{\gdef\thethesisid{#1}}
\newcommand{\thesiscite}[1]{\gdef\thethesiscite{#1}}
\newcommand{\birthday}[1]{\gdef\thebirthday{#1}}
\newcommand{\birthplace}[1]{\gdef\thebirthplace{#1}}
\newcommand{\thesisstart}[1]{\gdef\thethesisstart{#1}}
\newcommand{\thesisend}[1]{\gdef\thethesisend{#1}}
\newcommand{\advisors}[1]{\gdef\theadvisors{#1}}
\newcommand{\dean}[1]{\gdef\thedean{#1}}
% Hyphenation
\hyphenation{Web-Assembly}
% Default start and end for each subfile (the main.tex is also a subfile!)
\AtBeginDocument{%
% Capitalize all the section names (has to be placed after \begin{document})
\renewcommand{\chapterautorefname}{Chapter}
\renewcommand{\sectionautorefname}{Section}
\renewcommand{\subsectionautorefname}{Section}
\renewcommand{\subsubsectionautorefname}{Section}
\renewcommand{\paragraphautorefname}{Paragraph}
\renewcommand{\figureautorefname}{Figure}
\renewcommand{\tableautorefname}{Table}
\renewcommand{\partautorefname}{Part}
\renewcommand{\theoremautorefname}{Theorem}
\renewcommand{\equationautorefname}{Equation}
\renewcommand{\appendixautorefname}{Appendix}
\newcommand{\algorithmautorefname}{Algorithm}
\hypersetup{
pdfauthor={\@author},
pdftitle={\@title},
% pdfkeywords={\@thesiskeywords},
pdfproducer={LaTeX},
pdfcreator={LuaLaTeX}
}
% Only compile title/glossaries/toc with the main document
\ifSubfilesClassLoaded{}{%
\pagestyle{empty}
\pagenumbering{gobble}
\input{titlepage}
\cleardoublepage%
\frontmatter%
\pagestyle{plain}
\pagenumbering{Roman}
\tableofcontents%
\cleardoublepage%
\phantomsection%
\todototoc\listoftodos%
\cleardoublepage%
\printacronyms%
\cleardoublepage%
\printglossary%
\cleardoublepage%
}
\mainmatter%
\pagestyle{headings}
\pagenumbering{arabic}
}
\AtEndDocument{
\backmatter%
\pagestyle{plain}
\pagenumbering{Roman}
\let\url\undefined%
\let\url\oldurl%
\let\cite\undefined%
\let\cite\oldcite%
% Allow wider inter-word-spacing to prevent overfull hboxes in the bibliography
\sloppy%
\printbibliography[heading=bibintoc]
% \printbibliography%
\fussy%
\cleardoublepage%
% Only compile lists/declaration with the main document
\ifSubfilesClassLoaded{}{%
\phantomsection%
\addcontentsline{toc}{chapter}{Lists}
\listoffigures%
\addcontentsline{toc}{section}{List of Figures}
\cleardoublepage%
\listofalgorithms%
\addcontentsline{toc}{section}{List of Algorithms}
\cleardoublepage%
\tcblistof[\chapter*]{listings}{List of Listings}
\addcontentsline{toc}{section}{List of Listings}
\cleardoublepage%
\listoftables%
\addcontentsline{toc}{section}{List of Tables}
\cleardoublepage%
\phantomsection%
\addcontentsline{toc}{chapter}{Statutory Declaration}
\includepdf[pages=-]{declaration_signed.pdf}
}
}
% Colors
\definecolor{tuCorporateGreen}{HTML}{639A00}
\definecolor{tuCorporateOrange}{HTML}{CA7406}
\colorlet{titlebg}{tuCorporateGreen} % Color mixing
\colorlet{titlecolor}{gray!5!white}
\colorlet{codebg}{white}
\colorlet{languagebg}{tuCorporateGreen!30!white}
\colorlet{linenumberbg}{gray!20!white}
% Math Environments
% \newtheorem*{theorem}{Theorem}
% \newtheorem*{definition}{Definition}
% Code Environment
% This box surrounds the language name (e.g., C#)
\newtcbox{\languagehighlight}{
nobeforeafter,
boxrule=0pt,
colback=languagebg,
arc=2pt,
boxsep=0pt,
left=3pt,
right=3pt,
top=3pt,
bottom=3pt,
tcbox raise base
}
% This command is used in the codeblock box to quickly insert the languagehighlight box
\newcommand{\codelang}[1]{\languagehighlight{\texttt{#1}}}
% The main box for listings
\newtcolorbox[auto counter,list inside=listings,number within=chapter]{codeblock}[3][]
{%
enhanced,
% float,
% floatplacement=bth,
colbacktitle=titlebg,
coltitle=titlecolor,
colframe=titlebg,
interior style={%
top color=codebg,
bottom color=codebg
},
boxrule=0.5pt, % Border width
arc=2pt, % Rounded corners
width=\linewidth,
fonttitle=\normalsize,
adjusted title=\textbf{\texttt{\thetcbcounter}\hspace{0.75em}\texttt{#2}},
list entry=\thetcbcounter\quad\texttt{#2}, % List of listings
list text={\hspace*{1ex}#2}, % Chapter - Caption spacing in list of listings
after title={% Display used language
\hfill\setlength{\fboxsep}{2pt}
\codelang{#3}
},
overlay={% Line number background
\begin{tcbclipinterior}\fill[linenumberbg] (frame.south west)
rectangle ([xshift=5mm]frame.north west);
\end{tcbclipinterior}
},
top=1mm,
bottom=1mm,
right=0mm,
left=5mm,
#1 % Extra args, e.g. a label
}
% Options for the listing itself, syntax highlighted using minted/pygmentize
\setminted{
linenos,
autogobble,
breaklines=true,
breaksymbol=,
breakindent=4mm,
breakbefore=.,
breakbeforesymbolpre=,
breakbeforesymbolpost=,
baselinestretch=0.8,
% escapeinside=||,
framesep=5mm,
numbersep=7pt,
fontsize=\small,
}
% A box surrounding inline code-type text
\newtcbox{\codehighlight}{nobeforeafter,boxrule=.5pt,colback=black!5,colframe=black!35,
arc=2pt,boxsep=0pt,left=2pt,right=2pt,top=2pt,bottom=2pt, tcbox raise base}
% Quickly place inline codehighlight boxes
\newcommand{\code}[1]{\codehighlight{\texttt{\small{#1}}}}
% A box surrounding figures
\tcolorboxenvironment{figure}{
enhanced,
float=htb,
arc=2pt,
boxrule=0.5pt,
colframe=black,
colback=white,
before skip=\intextsep,
after skip=\intextsep,
}