X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=preamble.tex;h=9efb9df73b49d2ab715027d53234391390848cf9;hb=61922d4f61677acca7e9b71295c055bc7e9618a9;hp=a8baf2bce3a0d256d9771d3a2dc2b040ab4d8f85;hpb=c6fa9017e897e847334aeee2cec0b9aadec6f7c5;p=phd-thesis.git diff --git a/preamble.tex b/preamble.tex index a8baf2b..9efb9df 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,7 +1,25 @@ -% 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 +\usepackage{relsize} % \smaller command +\usepackage{atveryend} % \smaller command +\everymath{\it\/} +\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18 -% Papersize +% Internationalisation +\usepackage[dutch,russian,british]{babel} +\input{hyphenation} +%\babelfont[russian]{rm}{Liberation Serif} + +% Papersize and layout \usepackage{geometry} \geometry{ inner=25mm, @@ -13,65 +31,134 @@ paperwidth=17cm, paperheight=24cm, } +\usepackage{float} +\usepackage{fancyhdr} % Custom headers and footers +%\pagestyle{headings} +\pagestyle{fancy} +\fancyhead{} +\fancyfoot{} +\setlength{\unitlength}{18mm} +\newcommand{\blob}{\rule[-.2\unitlength]{2\unitlength}{.5\unitlength}} +\fancyhead[RE]{\rightmark} +\fancyhead[LO]{\leftmark} +\newcommand{\frontmatterfancy}[0]{ + \fancyhead[RO]{\thepage} + \fancyhead[LE]{\thepage} +} +\newcommand{\mainmatterfancy}[0]{ + \fancyhead[RO]{ + \thepage% + \begin{picture}(0,0) + \put(1,-\value{chapter}){\blob} + \end{picture} + } + \fancyhead[LE]{ + \begin{picture}(0,0) + \put(-3,-\value{chapter}){\blob} + \end{picture}% + \thepage% + } +} +\newcommand{\backmatterfancy}[0]{ + \fancyhead[RO]{ + \thepage% + \begin{picture}(0,0) + \put(1,-1){\blob} + \end{picture} + } + \fancyhead[LE]{ + \begin{picture}(0,0) + \put(-3,-1){\blob} + \end{picture}% + \thepage% + } +} +\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter.\ #1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}} +%\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{\chaptername}\ \thechapter.\ #1}{}} +%\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +\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) +\addto\captionsbritish{\renewcommand{\partname}{Movement}} +\usepackage{titlesec} +\makeatletter +\titleformat{\part}[block] + {\Huge} + {\partname~\thepart:} + {20pt} + {} -% Font encoding -\usepackage[T1,T2A]{fontenc} - -% Less bad boxes -\usepackage{microtype} +\newenvironment{chapterabstract} + {\begin{quote}} + {\end{quote}} -% 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[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/}} +\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.43em, - 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, @@ -81,60 +168,17 @@ showtabs=false, stringstyle=\it, tabsize=4, - literate=% - {~}{$\sim$}1 - {\\}{{$\lambda\:$}}1 - {->}{{$\shortrightarrow$}}2 - {<-}{{$\shortleftarrow$}}2 - {=>}{{$\Rightarrow$}}2 - {<=}{{$\Leftarrow$}}2 - {'}{{`}}1 - {...}{{$\cdots$}}1 %chktex 11 - {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 -} -\lstdefinestyle{haskell}{% - language=Haskell, - deletekeywords={True,False,Bool,Int,Float,Double,zip,length,Show,show,Num,Eq,print,String}, -} -\lstdefinelanguage{Clean}{% - alsoletter={ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_`1234567890}, - alsoletter={~!@\#$\%^\&*-+=?<>:|\\.}, - morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,code,In,qualified,otherwise}, - sensitive=true, - morecomment=[l]{//}, - morecomment=[n]{/*}{*/}, - morestring=[b]", % chktex 18 - morestring=[s]{['}{']}, % chktex 9 + 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 @@ -148,18 +192,34 @@ \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{}% @@ -183,70 +243,45 @@ \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% +%\usepackage{makeidx} +%\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} - -% Diagrams -\usepackage{tikz} -\usetikzlibrary{pie} - -% 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{\etc}{{\fontfamily{cmr}\selectfont{\itshape\/\&c}}} +\newcommand{\rdmentry}[6]{#1: #2 (#3): #4. #5.\ \href{https://doi.org/#6}{#6}} +\newcommand{\mlubbers}{Lubbers, M.\ (Radboud University)} +\newcommand{\pkoopman}{Koopman, dr.\ P.\ (Radboud University)} +\newcommand{\rplasmeijer}{Plasmeijer, prof.\ dr.\ ir.\ R.\ (Radboud University)} + +\newcommand{\mychapter}[2]{ + \chapter{#2}% + \label{#1}% +} +\newcommand{\myappendix}[2]{ + \chapter{#2}% + \label{#1}% +} +\newcommand{\mybackmatter}[2]{ + \chapter{#2}% + \label{#1}% +} +\newcommand{\mypart}[3]{\part[#2: #3]{#2\\[2ex]\smaller{}#3}\label{#1}}