many updates
[phd-thesis.git] / preamble.tex
index d9e38e2..6c3ec94 100644 (file)
@@ -1,7 +1,22 @@
-% Input encoding
-\usepackage[utf8]{inputenc}
+% Fonts
+\usepackage[utf8]{inputenc} % Input encoding
+\usepackage[T1]{fontenc}    % Font encoding
+\usepackage{lmodern}        % Nicer font
+\usepackage{microtype}      % Better kerning
+\usepackage{tipa}           % IPA symbols
+\usepackage{stmaryrd}       % short arrows
+\usepackage{textcomp}       % upquote
+\usepackage{titlecaps}      % titlecase commands
+\usepackage{amsmath}        % extra math
+\usepackage{amssymb}        % extra math symbols
+\everymath{\it\/}
+\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18
 
-% Papersize
+% Internationalisation
+\usepackage[dutch,russian,british]{babel}
+%\babelfont[russian]{rm}{Liberation Serif}
+
+% Papersize and layout
 \usepackage{geometry}
 \geometry{
        inner=25mm,
        paperwidth=17cm,
        paperheight=24cm,
 }
+\usepackage[
+       height={1.5cm},
+       width={12mm},
+       distance={1.55cm},
+       topthumbmargin={auto},
+       bottomthumbmargin={auto},
+       eventxtindent={.5cm},
+       oddtxtexdent={.3cm}]{thumbs} % thumb marks
+\usepackage{fancyhdr} % Custom headers and footers
+%\pagestyle{fancy}
+\pagestyle{headings}
+\usepackage{etoolbox} % To patch the chapter command
+% Have better page numbering in chapters
+\patchcmd{\chapter}{plain}{headings}{}{}
+\usepackage{epigraph} % Epigraph
+\renewcommand\partname{Movement}                   % Rename parts to movements (rhapsody uhu)
+\newenvironment{chapterabstract}
+       {\begin{quote}}
+       {\end{quote}}
 
-% Font encoding
-\usepackage[T1,T2A]{fontenc}
-
-% standalone figures
-\usepackage[subpreambles=true]{standalone}
-
-% Less bad boxes
-\usepackage{microtype}
-
-% No more room for a new \write
-\usepackage{morewrites}
+% Increase the depth for the table of contents
+\setcounter{secnumdepth}{3}
+\renewcommand{\contentsname}{Table of Contents} % change the name of the TOC
+\AtBeginDocument{\addtocontents{toc}{\protect\thispagestyle{empty}}} % to remove page numbering from the TOC
 
-% Internationalisation
-\usepackage[dutch,russian,british]{babel}
-%\babelfont[russian]{rm}{Liberation Serif}
+% (file) structure
+\usepackage[subpreambles=true]{standalone} % standalone figures
+\usepackage{morewrites}                    % fix no more room for a new \write
+\usepackage{appendix}                      % subappendices, appendices per chapter
 
-% Appendices
-% TODO is this necessary?
-\usepackage[titletoc]{appendix}
+% Bibliography
+\usepackage{bibentry} % Cite bib entry completely
+\nobibliography*
+\bibliographystyle{alpha}
 
-% Hyperlinks
-%\usepackage[pagebackref]{hyperref}
-\usepackage[pagebackref]{hyperref}
-% Setup pdf parameters: TODO
+% Hyperlinks and metadata
+\usepackage[pagebackref]{hyperref} % hyperlinks
+\renewcommand*{\backref}[1]{}
+\renewcommand*{\backrefalt}[4]{[{%
+       \ifcase #1 not cited.\or p.~#2.\else pp. #2.\fi%chktex 1
+}]}
 \hypersetup{%
        pdftitle={\mytitle},
        pdfauthor={\myauthor},
-       pdfsubject={},
-%      pdfcreator={},
-%      pdfproducer={},
-       pdfkeywords={task oriented programming, functional programming, domain specific languages, internet of things},
+       pdfkeywords={task-oriented programming, functional programming, domain specific languages, internet of things},
        hidelinks,
 }
+\usepackage[nodayofweek]{datetime} % Use a fixed document date
 \urlstyle{same}
+\usepackage{bookmark}
+\usepackage{cleveref} % Easy references
+\crefname{part}{movement}{movements}
+\crefname{lstlisting}{listing}{listing}
 
 % Graphics
-\usepackage{graphicx}
-% Images directory
-\graphicspath{{img/}}
-%subfigures
-\usepackage{caption}
+\usepackage{graphicx} % Images
+\graphicspath{{img/},{introduction/img}}
+\usepackage{caption}  % subfigures
 \usepackage{subcaption}
+\newcommand{\orcid}[1]{\href{https://orcid.org/#1}{\hspace{1mm}\includegraphics[width=1em]{orcid}\hspace{2mm} https://orcid.org/#1}}
 
-% Nice tables
-\usepackage{booktabs}
-
-% Automatically wrapping tables
-\usepackage{tabularx}
-
-% Use a fixed document date
-\usepackage[nodayofweek]{datetime}
+% Tables
+\usepackage{booktabs}  % Nicer tables
+\usepackage{multirow}  % Multirow cells
+\usepackage{tabularx}  % Automatically wrapping tables
+\usepackage{longtable} % Tables spanning pages
 
 % Code
-\usepackage{stmaryrd}                         % Short arrow
+% Pseudocode
+\usepackage[algochapter]{algorithm2e}
+% Fix the algorithm font
+\renewcommand\AlCapFnt{\normalfont}
 \usepackage{listings}
 % General listings settings
 \lstset{%
-       basewidth=0.45em,
-       basicstyle=\linespread{0.9}\tt\footnotesize,
+       basewidth=0.5em,
+       basicstyle=\tt\small,
        breakatwhitespace=false,
        breaklines=true,
        captionpos=b,
        columns=[c]fixed,
        commentstyle=\sl,
-       escapeinside={(+}{+)},  % chktex 9
+%      escapeinside={(+}{+)},  % chktex 9
        frame=L,
        keepspaces=true,
        keywordstyle=\bf,
        showtabs=false,
        stringstyle=\it,
        tabsize=4,
-%      literate=%
-%              {a0}{{a\textsubscript{0}}}2
-%              {a1}{{a\textsubscript{1}}}2
-%              {a2}{{a\textsubscript{2}}}2
-%%             {an}{{a\textsubscript{n}}}2
-%              {c0}{{c\textsubscript{0}}}2
-%              {c1}{{c\textsubscript{1}}}2
-%              {c2}{{c\textsubscript{2}}}2
-%              {cn}{{c\textsubscript{n}}}2
-%              {f0}{{f\textsubscript{0}}}2
-%              {f1}{{f\textsubscript{1}}}2
-%              {f2}{{f\textsubscript{2}}}2
-%              {fn}{{f\textsubscript{n}}}2
-%              {t0}{{t\textsubscript{0}}}2
-%              {t1}{{t\textsubscript{1}}}2
-%              {t2}{{t\textsubscript{2}}}2
-%              {tn}{{t\textsubscript{n}}}2
-%              {v0}{{v\textsubscript{0}}}2
-%              {v1}{{v\textsubscript{1}}}2
-%              {v2}{{v\textsubscript{2}}}2
-%              {vn}{{v\textsubscript{n}}}2
-%              {C0}{{C\textsubscript{0}}}2
-%              {C1}{{C\textsubscript{1}}}2
-%              {C2}{{C\textsubscript{2}}}2
-%              {Cn}{{C\textsubscript{n}}}2
-%              {R0}{{R\textsubscript{0}}}2
-%              {R1}{{R\textsubscript{1}}}2
-%              {R2}{{R\textsubscript{2}}}2
-%              {Rn}{{R\textsubscript{n}}}2
+       upquote=true,
 }
 \usepackage{lstlangclean}
 \usepackage{lstlanghaskell}
+\usepackage{lstlanghaskelllhstex}
+\usepackage{lstlangarduino}
+\newcommand{\cinline}[1]{\lstinline[language=c,postbreak=]|#1|}
+\newcommand{\arduinoinline}[1]{\lstinline[language={[Arduino]C++},postbreak=]|#1|}
 \newcommand{\cleaninline}[1]{\lstinline[language=Clean,postbreak=]|#1|}
 \newcommand{\haskellinline}[1]{\lstinline[language=Haskell,style=haskell,postbreak=]|#1|}
+\newcommand{\haskelllhstexinline}[1]{\lstinline[language=Haskell,style=haskelllhstex,postbreak=]|#1|}
 % Fix list of listings title
 \renewcommand{\lstlistlistingname}{List of Listings}
 % Fix list of listings chapter separator
 \lstnewenvironment{lstClean}[1][]
        {% 
                \lstset{language=Clean, #1}
-               \renewcommand*{\lstlistingname}{Listing (Clean)}
+               \renewcommand*{\lstlistingname}{Listing (\gls{CLEAN})}
+       }
+       {}
+\lstnewenvironment{lstArduino}[1][]
+       {% 
+               \lstset{language={[Arduino]C++}, #1}
+               \renewcommand*{\lstlistingname}{Listing (\gls{ARDUINO})}
        }
        {}
 \lstnewenvironment{lstHaskell}[1][]
        {%
                \lstset{language=Haskell,style=haskell,#1}%
-               \renewcommand*{\lstlistingname}{Listing (Haskell)}
+               \renewcommand*{\lstlistingname}{Listing (\gls{HASKELL})}
+       }
+       {}
+\lstnewenvironment{lstHaskellLhstex}[1][]
+       {%
+               \lstset{language=Haskell,style=haskelllhstex,#1}%
+               \renewcommand*{\lstlistingname}{Listing (\gls{HASKELL})}
        }
        {}
 
 % Glossaries and acronyms
 \usepackage[acronym,nonumberlist]{glossaries}
+\Addlcwords{of}
+% Titlecase glossary commands
+\newcommand{\glst}[1]{\titlecap{\glsentrylong{#1}}}
+\newcommand{\Glst}[1]{\glst{#1}}
 % Fix gls in hyperlink errors
 \pdfstringdefDisableCommands{%
        \def\acrlong#1{}%
        \def\titlecap#1{}%
 }
 
-% Titlecase commands
-\usepackage{titlecaps}
-\Addlcwords{of}
-% Titlecase glossary command
-\newcommand{\glst}[1]{\titlecap{\glsentrylong{#1}}}
-\newcommand{\Glst}[1]{\glst{#1}}
-
-% Pseudocode
-\usepackage[algochapter]{algorithm2e}
-% Fix the algorithm font
-\renewcommand\AlCapFnt{\normalfont}
-
 % Index
 \usepackage{makeidx}
-% Enable the index
-\makeindex%
+\makeindex% Enable the index
 
 % Custom enumerations
 \usepackage[inline,shortlabels]{enumitem}
 \setlist{noitemsep}
 \setlist[description]{leftmargin=\parindent}
 
-% Epigraph (lovecraft)
-\usepackage{epigraph}
-
-% Thumb marks on the page
-\usepackage[
-       height={1.5cm},
-       width={12mm},
-       distance={1.55cm},
-       topthumbmargin={auto},
-       bottomthumbmargin={auto},
-       eventxtindent={.5cm},
-       oddtxtexdent={.3cm}]{thumbs}
-
-% Custom headers and footers
-\usepackage{fancyhdr}
-\pagestyle{fancy}
-
-% Tables spanning pages
-\usepackage{longtable}
-
-% Easy references
-\usepackage{cleveref}
-
-% To patch the chapter command
-\usepackage{etoolbox}
-% Have better page numbering in chapters
-\patchcmd{\chapter}{plain}{headings}{}{}
-
-% Increase the depth for the table of contents
-\setcounter{secnumdepth}{3}
-\renewcommand{\contentsname}{Table of Contents} % change the name of the TOC
-\AtBeginDocument{\addtocontents{toc}{\protect\thispagestyle{empty}}} % to remove page numbering from the TOC
-
 % Initialize the glossaries
 \makeglossaries%
 \input{glossaries}
 
+\usepackage{subfiles}
+
+\ifSubfilesClassLoaded{}{
+       \usepackage{xmpincl}
+       \includexmp{CC_Attribution-NoDerivatives_4.0_International}
+}
+
 % Custom commands
 \newcommand{\GHCmod}[1]{\texttt{#1}}
 \newcommand{\requiresGHCmod}[1]{\footnote{Requires \GHCmod{#1} to be enabled.}}
 \newcommand{\mlubbers}{Lubbers, M.\ (Radboud University)}
 \newcommand{\pkoopman}{Koopman, dr.\ P.\ (Radboud University)}
 \newcommand{\rplasmeijer}{Plasmeijer, prof.\ dr.\ ir.\ R.\ (Radboud University)}
-
-\bibliographystyle{alpha}
-
-\usepackage{subfiles}