-\documentclass[a4paper]{book}
-
-\usepackage[british]{babel}
+\documentclass[twoside,a4paper,titlepage]{book}
\usepackage{geometry} % Papersize
+\usepackage[british]{babel} % Internationalization
\usepackage[titletoc]{appendix} % Appendices
-\usepackage{rutitlepage/rutitlepage} % Titlepage
\usepackage{hyperref} % Hyperlinks
\usepackage{booktabs} % Better looking tables
-\usepackage{todonotes} % Todo's
\usepackage{caption} % Captions
\usepackage{subcaption} % Subcaptions
-\usepackage{lipsum} % dummy text
\usepackage{listings} % source code
\usepackage{float} % floating images
+\usepackage{lmodern} % Better teletype fonts
+\usepackage{textcomp} % Nice listings quotes
+\usepackage{pgf-umlsd} % Connection diagrams
+\usepackage{graphicx} % Graphics
+\usepackage{epstopdf} % Eps graphics
+\usepackage{etoolbox} % Patch chapter command
+\usepackage[nodayofweek]{datetime} % Use a fixed document date
+
+% Fix fonts
+\normalfont
+\DeclareFontShape{OT1}{lmr}{bx}{sc} { <-> ssub * lmr/bx/n }{}
+
+% Have better page numbering in chapters
+\patchcmd{\chapter}{plain}{headings}{}{}
+
+% Arrows for communication diagrams
+\usetikzlibrary{arrows,shadows}
+% Images directory
\graphicspath{{img/}}
-\urlstyle{same}
+% Fix list of listings title
+\renewcommand{\lstlistlistingname}{List of Listings}
+
+% Fix list of listings chapter separator
+\makeatletter
+\let\my@chapter\@chapter
+\renewcommand*{\@chapter}{%
+ \addtocontents{lol}{\protect\addvspace{10pt}}%
+ \my@chapter}
+\makeatother
+
+% Always have url in teletype
+\urlstyle{tt}
+
+% Setup pdf parameters
\hypersetup{%
- pdftitle={iTasks and the Internet of Things},
+ pdftitle={Task Oriented Programming and the Internet of Things},
pdfauthor={Mart Lubbers},
- pdfsubject={iTasks and the Internet of Things},
+ pdfsubject={Task Oriented Programming and the Internet of Things},
pdfcreator={Mart Lubbers},
pdfproducer={Mart Lubbers},
pdfkeywords={TOP,iTasks,Clean,Function Programming,IoT},
hidelinks=true
}
+% Fix gls in hyperlink errors
\pdfstringdefDisableCommands{%
\def\acrlong#1{}%
+ \def\acrlongpl#1{}%
\def\acrshort#1{}%
\def\acrfull#1{}%
\def\gls#1{}%
\def\Glspl#1{}%
}
+% Clean language spec for listings
\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},
+ morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,::},
sensitive=true,
morecomment=[l]{//},
morecomment=[n]{/*}{*/},
basewidth=0.45em,
columns=[c]fixed,
texcl=true,
+ upquote=true,
literate=%
% Basic Clean constructs
{\\}{{$\lambda\:$}}1
{A.}{{$\forall\;\,$}}1
{E.}{{$\exists\;\,$}}1
- {>}{{$>$}}1
- {<}{{$<$}}1
- {<=}{{$\leq$}}1
- {>=}{{$\geq$}}1
- {<>}{{$\neq$}}1
- {->}{{$\rightarrow$}}2
- {<-}{{$\leftarrow$}}1
- {=}{{$=$}}1
- {~}{{$\sim$}}1
- {\#}{{$\sharp$}}1
- {\{|}{{$\{\!|\!$}}1
- {|\}}{{$\!|\!\}$}}1
- {:=}{{$:=$}}2
- {==}{{$==$}}2
- {++}{{$+\!\!+$}}2
- {+++}{{$+\!\!\!\!+\!\!\!\!+$}}2
- {:==}{{$:==$}}3
- {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
- %
- % Basic iTask constructs
- {>||>}{{$\triangleright\triangleright$}}2
- {>>=}{{\texttt{>>=}}}3
- {>>|}{{\texttt{>>|}}}3
- {?>>}{{\texttt{?>>}}}3
- {!>>}{{\texttt{!>>}}}3
- {-||-}{{\texttt{-||-}}}4
- {.||.}{{\texttt{.||.}}}4
- {.&&.}{{\texttt{.\&\&.}}}4
+ {*}{{$^*$}}1
}
-\newcommand{\CI}[1]{\lstinline[language=Clean]|#1|}
+% Handy shortcut for inline Clean code
+\newcommand{\CI}[1]{\lstinline[language=Clean,basicstyle=\ttfamily\fontseries{l}\normalsize]|#1|}
+% General listings settings
\lstset{%
- breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
- breaklines=true, % sets automatic line breaking
- captionpos=b, % sets the caption-position to bottom
- keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
- basicstyle=\footnotesize, % the size of the fonts that are used for the code
- commentstyle=\itshape, % comment style
- keywordstyle=\bfseries, % keyword style
- stringstyle=\ttfamily, % string literal style
- showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
- showstringspaces=false, % underline spaces within strings only
- showtabs=false, % show tabs within strings adding particular underscores
- tabsize=4, % sets default tabsize to 2 spaces
- frame=L
+ breakatwhitespace=false,
+ breaklines=true,
+ captionpos=b,
+ keepspaces=true,
+ basicstyle=\ttfamily\fontseries{l}\footnotesize,
+ commentstyle=\slshape\fontseries{m},
+ keywordstyle=\bfseries\fontseries{b},
+ stringstyle=\ttfamily,
+ showspaces=false,
+ showstringspaces=false,
+ showtabs=false,
+ tabsize=4,
+ frame=L,
+ language=Clean
}
-\title{iTasks and the Internet of Things}
+% Increase the depth for the table of contenst
+\setcounter{secnumdepth}{3}
+
+% Document info
+\title{Task Oriented Programming and the Internet of Things}
\author{Mart Lubbers BSc.\\
{\small\href{mailto:mart@martlubbers.net}{mart@martlubbers.net}}}
-\date{\today}
+\date{\formatdate{10}{7}{2017}}