% ============================================================================= % l4proj.cls % % Template for final year projects in the School of Computing Science at the % University of Glasgow. Adapted from the level 3 project template originally % provided by Colin Perkins . % % ============================================================================= \ProvidesClass{l4proj}[% 2009/01/09 Colin Perkins .% 2009/09/16 Modified by Tim Storer to support non pdf modes.% 2011/02/15 Modified by Gregg Hamilton for use in final year projects.% 2012/10/18 Modified by Patrick Prosser, use geometry to control margins, simplified.% 2018/09/14 Modified by John Williamson, improve typographic appearance% ] \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} \ProcessOptions \LoadClass[10pt,a4paper]{report} % Monospace font is Fira Mono Sans % the body font used is FBB (Bembo) \usepackage{iftex} \ifPDFTeX \usepackage{fbb} \usepackage{FiraMono} \usepackage{FiraSans} \usepackage{textcomp} \usepackage[english]{babel} \usepackage[T1]{fontenc} \else % make sure the fonts are actually set \usepackage{fontspec} \usepackage{polyglossia} \setromanfont[Path=./fonts/, BoldFont=fbb-Bold, UprightFont=fbb-Regular, ItalicFont=fbb-Italic, BoldItalicFont=fbb-BoldItalic]{fbb} \setmonofont[Path=./fonts/, BoldFont=FiraMono-Bold, UprightFont=FiraMono-Regular]{FiraMono.ttf} \setsansfont[Path=./fonts/, BoldFont=FiraSans-Bold, UprightFont=FiraSans-Regular, ItalicFont=FiraSans-Italic, BoldItalicFont=FiraSans-BoldItalic]{FiraSans.ttf} \fi \usepackage[libertine,bigdelims,vvarbb]{newtxmath} % bb from STIX \usepackage[cal=boondoxo]{mathalfa} % mathcal \usepackage{microtype} % improve typography \usepackage{anyfontsize} % allow any size of font \usepackage{amsmath,amsfonts,amsbsy,amssymb} \usepackage[style]{abstract} % abstract styling % set bibliography styling \usepackage{natbib} \bibpunct{(}{)}{;}{a}{}{;} \usepackage{etoolbox} \usepackage[compact]{titlesec} % section heading formatting \usepackage{color} % colors \usepackage[table,svgnames]{xcolor} \usepackage{parskip} % adjustable line spacing \usepackage{listings} % nice code listings % remove dots from ToC \usepackage[titles]{tocloft} \renewcommand{\cftdot}{} \usepackage[nottoc]{tocbibind} % from: https://gist.github.com/FelipeCortez/10729134 % set up listings for prettier output \definecolor{bluekeywords}{rgb}{0.13, 0.19, 0.7} \definecolor{greencomments}{rgb}{0.1, 0.5, 0.2} \definecolor{redstrings}{rgb}{0.8, 0.15, 0.1} \definecolor{graynumbers}{rgb}{0.5, 0.5, 0.5} \definecolor{subtlegray}{rgb}{0.98, 0.98, 0.98} \usepackage{lstautogobble} \usepackage{listings} \lstset{ autogobble, columns=fullflexible, showspaces=false, showtabs=false, breaklines=true, showstringspaces=false, breakatwhitespace=true, escapeinside={(*@}{@*)}, rulecolor=\color{lightgray}, backgroundcolor=\color{subtlegray}, commentstyle=\color{greencomments}, keywordstyle=\color{bluekeywords}, stringstyle=\color{redstrings}, numberstyle=\color{graynumbers}, basicstyle=\ttfamily\linespread{1.15}\footnotesize, frame=tb, framesep=12pt, framexleftmargin=12pt, tabsize=4, captionpos=b } %% --- % nice number printing \usepackage{numprint} % allow PDF graphics \usepackage{graphicx} % allow section styling %\usepackage{sectsty} % make all cross-references clickable \usepackage[hidelinks]{hyperref} % enable styled captions \usepackage[format=plain, labelfont={bf,it}, textfont=it,tableposition=above]{caption} \newcommand{\secfont}{\normalfont\sffamily} % % style the sections and the abstract % \allsectionsfont{\secfont} \renewcommand{\abstractnamefont}{\Large\secfont} \renewcommand{\abstitlestyle}[1]{{{\let\clearpage\relax \chapter*{#1}}}} \usepackage[toc]{appendix} % allow subfloats \usepackage{subcaption} % fix the margins and linespacing \usepackage[top=3.5cm,bottom=4.0cm,left=3.5cm,right=3.5cm]{geometry} \setlength{\parskip}{5pt plus 2pt} % define the title page \renewcommand\maketitle{ \begin{titlepage}% \definecolor{UniBlue}{HTML}{00355F} \let\footnotesize\small \let\footnoterule\relax \let\footnote \thanks % the logo, full page width \vspace{1in} \includegraphics[width=\linewidth]{images/CompSci_colour.pdf} \vskip 0.5em \color{UniBlue} {\large \sffamily Honours Individual Project Dissertation}\\ % title and author \vspace{2cm} \Large \vskip 8em% \begin{center} \color{UniBlue} \noindent {\Huge \scshape \@title \par}% \end{center} \vfill {\Large \textbf{\@author}\\ \@date} \end{titlepage}% \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@date\@empty \global\let\@consentname\@empty \global\let\@consentdate\@empty \global\let\@title\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax } \usepackage{booktabs} % set up headers and footers % no footer, page numbers at top-right \usepackage{fancyhdr} \pagestyle{fancy} \fancyhead{} \fancyfoot{} \fancyhead[R]{\thepage} \renewcommand{\headrulewidth}{0pt} \fancypagestyle{plain}{% \renewcommand{\headrulewidth}{0pt}% \fancyhf{}% \fancyhead[R]{\thepage}% } \usepackage{titlesec} % set up chapter headings \usepackage{xstring} \titleformat{\chapter}[display] % only show numbers if they aren't Chapter 0 (i.e. front matter) {\normalfont}{}{0pt}{ \huge\bfseries\secfont \IfInteger{\thechapter}{\ifnum0=0\thechapter\relax\else\relax {\Huge \thechapter}\ \rule[-0.25em]{0.5pt}{1.5em}\ \fi} {\thechapter \ \rule[-0.25em]{0.5pt}{1.5em}\ }} %[\titlerule] \titlespacing*{\chapter} {0pt}{0pt}{15pt} % Educational consent form \newcommand{\educationalconsent}{ \ifdefined\consentname \newpage \chapter*{Education Use Consent} I hereby grant my permission for this project to be stored, distributed and shown to other University of Glasgow students and staff for educational purposes. \textbf{Please note that you are under no obligation to sign this declaration, but doing so would help future students.} \begin{tabular}{@{}llll} & & & \\ & & & \\ Signature: & \consentname & Date: & \consentdate \\ & & & \\ & & & \\ \end{tabular} \else \newpage \chapter*{Education Use Consent} Consent for educational reuse withheld. Do not distribute. \fi } % highlight boxes \usepackage{tcolorbox} \newenvironment{highlight} {\begin{tcolorbox}[notitle,boxrule=0pt,colback=green!10,colframe=green!10]} { \end{tcolorbox} } \newenvironment{highlight_title}[1] {\begin{tcolorbox}[title=#1,boxrule=2pt,colback=green!10,colframe=green!20,coltitle=black,fonttitle=\bfseries]} { \end{tcolorbox} } % adjust margins \setlength{\parindent}{0pt} % use (a) in figures \captionsetup{subrefformat=parens} % Algorithm typesetting package \usepackage[plain, noline, shortend, linesnumberedhidden]{algorithm2e} \SetAlFnt{\sffamily \small} % adjust spacing \titlespacing{\section}{10pt}{1.5\baselineskip}{8pt plus 3pt minus 3pt} \titlespacing{\subsection}{10pt}{\baselineskip}{8pt plus 4pt minus 1pt} \titleformat{\subsubsection}[runin]{\bfseries }{}{}{}[] \titlespacing{\chapter}{0pt}{0pt}{40pt plus 10pt minus 5pt} % switch to roman numeral for frontmatter \pagenumbering{roman} % fix itemise so it looks reasonable \renewcommand{\@listI}{% \leftmargin=25pt \rightmargin=0pt \labelsep=5pt \labelwidth=20pt \itemindent=0pt \listparindent=0pt \topsep=0pt plus 2pt minus 4pt \partopsep=0pt plus 1pt minus 1pt \parsep=1pt plus 1pt \itemsep=\parsep}