361 lines
10 KiB
TeX
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,
|
|
}
|