This repository contains templates for students and staff of the University. If you are not a member of the university check the templates as some layouts are copyrighted by the University of Reading (unfortunately). Alternatives are provided, though.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

545 lines
19 KiB

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Masters/Doctoral Thesis
% Class File
% Version 1.6 (27/8/17)
%
% This class was downloaded from:
% http://www.LaTeXTemplates.com
%
% Authors:
% Vel (vel@latextemplates.com)
% Johannes Böttcher
%
% Notes:
% 1) This class file defines the structure and layout of the template file (main.tex).
% 2) It has been written in such a way that under most circumstances you should not need
% to edit it; updating it to a newer version will be harder. If you do make changes, please change the name of
% the file and add comments to make your changes more visible.
%
% Class license:
% LPPL v1.3c (http://www.latex-project.org/lppl)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------------------------------------------------------------------------------
% CLASS DEFINITION AND PARAMETERS
%----------------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
\newcommand{\classname}{MastersDoctoralThesis}
\ProvidesClass{\classname}[2016/11/22 v1.5 LaTeXTemplates.com]
\providecommand{\baseclass}{book}
\RequirePackage{etoolbox}
\RequirePackage{xparse}
\newbool{nolistspace}
\newbool{chapteroneline}
\newbool{listtoc}
\newbool{toctoc}
\newbool{parskip}
\newbool{hyperrefsupport}
\booltrue{hyperrefsupport}
\newbool{headsepline}
\newbool{consistentlayout}
\DeclareOption{nohyperref}{\boolfalse{hyperrefsupport}}
\DeclareOption{nolistspacing}{\booltrue{nolistspace}}
\DeclareOption{liststotoc}{\booltrue{listtoc}}
\DeclareOption{chapterinoneline}{\booltrue{chapteroneline}}
\DeclareOption{toctotoc}{\booltrue{toctoc}}
\DeclareOption{parskip}{\booltrue{parskip}}
\DeclareOption{headsepline}{\booltrue{headsepline}}
\DeclareOption{consistentlayout}{\booltrue{consistentlayout}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\baseclass}}
\ProcessOptions\relax
\LoadClass{\baseclass}
% Simple interface for the user to customize the chapter titles
\ProvideDocumentCommand{\abovechapterskip}{}{\vspace*{20pt}}
\ProvideDocumentCommand{\chapterbelowskip}{}{\vspace*{40pt}}
\ProvideDocumentCommand{\chapterinbetweenskip}{}{\vspace*{20pt}}
\ProvideDocumentCommand{\autodot}{}{}
\ProvideDocumentCommand{\mdtChapapp}{}{}
\ProvideDocumentCommand{\chapteralign}{}{\raggedright}
\ProvideDocumentCommand{\chapterfont}{}{\Huge\bfseries}
\ProvideDocumentCommand{\chapterprefixfont}{}{\LARGE\bfseries}
\DeclareDocumentCommand{\@makechapterhead}{ m }{%
\abovechapterskip
{\parindent \z@ \chapteralign \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\ifbool{chapteroneline}{%
\chapterfont \mdtChapapp\thechapter\autodot\enspace
}{%
\chapterprefixfont \@chapapp\space \thechapter
\par\nobreak
\chapterinbetweenskip
}%
\fi
\fi
\interlinepenalty\@M%
\chapterfont #1\par\nobreak
\chapterbelowskip
}
\thispagestyle{\chapter@p@gestyle}
}
\def\@makeschapterhead#1{%
\abovechapterskip
{\parindent \z@ \chapteralign
\normalfont
\interlinepenalty\@M
\chapterfont #1\par\nobreak
\chapterbelowskip
}
\thispagestyle{\chapter@p@gestyle}
}
% Addchap provides unnumbered chapters with an entry in the table of contents as well as an updated header
\ProvideDocumentCommand{\addchap}{ s o m }{%
\chapter*{#3}%
\markboth{}{}%
\IfBooleanTF{#1}{%
}{%
\IfNoValueTF{#2}{%
\addchaptertocentry{#3}%
\markboth{\MakeMarkcase{#3}}{\MakeMarkcase{#3}}%
}{%
\addchaptertocentry{#2}%
\markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}%
}%
}%
}%
\ProvideDocumentCommand{\addsec}{ s o m }{%
\section*{#3}%
\markright{}%
\IfBooleanTF{#1}{%
}{%
\IfNoValueTF{#2}{%
\addcontentsline{toc}{section}{#3}%
\markright{\MakeMarkcase{#3}}%%
}{%
\addcontentsline{toc}{section}{#2}%
\markright{\MakeMarkcase{#2}}%
}%
}%
}%
%----------------------------------------------------------------------------------------
% CLASS OPTIONS
%----------------------------------------------------------------------------------------
\ifbool{parskip}{\RequirePackage{parskip}} % If the parskip option is passed to the class, require the parskip package
\ifbool{listtoc}{% If the liststotoc option has been passed to the class, add the lists to the table of contents
\patchcmd{\listoftables}{\@starttoc{lot}}{%
\addchaptertocentry{\listtablename}\@starttoc{lot}%
}{}{}%
\patchcmd{\listoffigures}{\@starttoc{lof}}{%
\addchaptertocentry{\listfigurename}\@starttoc{lof}%
}{}{}%
}
\ifbool{toctoc}{% If the toctotoc options has been passed to the class, add the table of contents to the table of contents
\patchcmd{\tableofcontents}{\@starttoc{toc}%
}{%
\addchaptertocentry{\contentsname}\@starttoc{toc}}{}{}%
}
\patchcmd{\tableofcontents}{\MakeUppercase}{\MakeMarkcase}{}{}
\patchcmd{\tableofcontents}{\MakeUppercase}{\MakeMarkcase}{}{}
\patchcmd{\listoffigures}{\MakeUppercase}{\MakeMarkcase}{}{}
\patchcmd{\listoffigures}{\MakeUppercase}{\MakeMarkcase}{}{}
\patchcmd{\listoftables}{\MakeUppercase}{\MakeMarkcase}{}{}
\patchcmd{\listoftables}{\MakeUppercase}{\MakeMarkcase}{}{}
% If the option `nolistspacing' is given, the spacing in the different lists is reduced to single spacing. This option is only useful, if the spacing of the document has been changed to onehalfspacing or doublespacing.
\ifbool{nolistspace}{
\patchcmd{\listoffigures}{%
\@starttoc{lof}
}{%
\begingroup%
\singlespace\@starttoc{lof}\endgroup%
}{}{}%
\patchcmd{\listoftables}{%
\@starttoc{lot}
}{%
\begingroup%
\singlespace\@starttoc{lot}\endgroup%
}{}{}%
\patchcmd{\tableofcontents}{%
\@starttoc{toc}
}{%
\begingroup%
\singlespace\@starttoc{toc}\endgroup%
}{}{}%
}{}
%----------------------------------------------------------------------------------------
% REQUIRED PACKAGES
%----------------------------------------------------------------------------------------
\RequirePackage{babel} % Required for automatically changing names of document elements to languages besides english
\RequirePackage{scrbase} % Required for handling language-dependent names of sections/document elements
\RequirePackage{scrhack} % Loads fixes for various packages
\RequirePackage{setspace} % Required for changing line spacing
\RequirePackage{longtable} % Required for tables that span multiple pages (used in the symbols, abbreviations and physical constants pages)
\RequirePackage{siunitx} % Required for \SI commands
\RequirePackage{graphicx} % Required to include images
\graphicspath{{Figures/}{./}} % Specifies where to look for included images
\RequirePackage{booktabs} % Required for better table rules
\RequirePackage{caption} % Required for customising the captions
\captionsetup{justification=centerlast,font=small,labelfont=sc,margin=50pt}
%----------------------------------------------------------------------------------------
% DEFINE CUSTOM THESIS INFORMATION COMMANDS
%----------------------------------------------------------------------------------------
\NewDocumentCommand{\thesistitle} { o m }{%
\IfValueTF{#1}{\def\shorttitle{#1}}{\def\shorttitle{#2}}%
\def\@title{#2}%
\def\ttitle{#2}%
}
\DeclareDocumentCommand{\author}{m}{\newcommand{\authorname}{#1}\renewcommand{\@author}{#1}}
\NewDocumentCommand{\supervisor}{m}{\newcommand{\supname}{#1}}
\NewDocumentCommand{\examiner}{m}{\newcommand{\examname}{#1}}
\NewDocumentCommand{\degree}{m}{\newcommand{\degreename}{#1}}
\NewDocumentCommand{\addresses}{m}{\newcommand{\addressname}{#1}}
\NewDocumentCommand{\university}{m}{\newcommand{\univname}{#1}}
\NewDocumentCommand{\department}{m}{\newcommand{\deptname}{#1}}
\NewDocumentCommand{\group}{m}{\newcommand{\groupname}{#1}}
\NewDocumentCommand{\faculty}{m}{\newcommand{\facname}{#1}}
\NewDocumentCommand{\subject}{m}{\newcommand{\subjectname}{#1}}
\NewDocumentCommand{\keywords}{m}{\newcommand{\keywordnames}{#1}}
\newcommand{\checktoopen}{% New command to move content to the next page which prints to the next odd page if twosided mode is active
\if@openright\cleardoublepage\else\clearpage\fi
\ifdef{\phantomsection}{\phantomsection}{}% The \phantomsection command is necessary for hyperref to jump to the correct page
}
\NewDocumentCommand{\bhrule}{}{\typeout{--------------------}}
\NewDocumentCommand{\tttypeout}{m}{\bhrule\typeout{\space #1}\bhrule}
\newcommand{\HRule}{\rule{.9\linewidth}{.6pt}} % New command to make the lines in the title page
\newcommand{\decoRule}{\rule{.8\textwidth}{.4pt}} % New command for a rule to be used under figures
\setcounter{tocdepth}{3} % The depth to which the document sections are printed to the table of contents
\ProvideDocumentCommand{\addchaptertocentry}{ m }{%
\addcontentsline{toc}{chapter}{#1}%
}
%----------------------------------------------------------------------------------------
% COLOURS
%----------------------------------------------------------------------------------------
\usepackage{xcolor} % Required for specifying custom colours
\colorlet{mdtRed}{red!50!black}
%----------------------------------------------------------------------------------------
% MARGINS
%----------------------------------------------------------------------------------------
\RequirePackage{geometry}
\geometry{
headheight=4ex,
includehead,
includefoot
}
\raggedbottom
%----------------------------------------------------------------------------------------
% PENALTIES
%----------------------------------------------------------------------------------------
\doublehyphendemerits=10000 % No consecutive line hyphens
\brokenpenalty=10000 % No broken words across columns/pages
\widowpenalty=9999 % Almost no widows at bottom of page
\clubpenalty=9999 % Almost no orphans at top of page
\interfootnotelinepenalty=9999 % Almost never break footnotes
%----------------------------------------------------------------------------------------
% HEADERS AND FOOTERS
%----------------------------------------------------------------------------------------
\RequirePackage[markcase=used]{scrlayer-scrpage}
\providepairofpagestyles{thesisSimple}{%
\clearpairofpagestyles%
\automark[chapter]{chapter}
\ihead{\headmark}% Inner header
\ohead[\pagemark]{\pagemark}% Outer header
}
\ifoot{}% Inner footer
\ofoot{}% Outer footer
\pagestyle{thesisSimple}
\providepairofpagestyles[thesisSimple]{thesis}{%
\automark*[section]{}%
}
\providepairofpagestyles[thesisSimple]{review}{%
\ofoot[\shorttitle/\authorname]{\shorttitle/\authorname}
\ifoot[\today]{\today}
}
\pagestyle{thesis}
\ifbool{headsepline}{\KOMAoption{headsepline}{true}}{}
\PreventPackageFromLoading[\ClassError{\classname}{Package `fancyhdr' is
incompatible\MessageBreak with this class}{The pagesyles are defined
using package `scrlayer-scrpage', please consult the\MessageBreak
KOMA-script documentation for details.}]{fancyhdr}
\newcommand{\blank@p@gestyle}{empty}
\newcommand{\chapter@p@gestyle}{plain}
\NewDocumentCommand{\blankpagestyle}{ m }{%
\ClassWarning{\classname}{\string\blankpagestyle\space is
obsolete,\MessageBreak use \string\setblankpagestyle \space instead}\renewcommand{\blank@p@gestyle}{}{#1}
}
\NewDocumentCommand{\setblankpagestyle}{ m }{\renewcommand{\blank@p@gestyle}{#1}}
\NewDocumentCommand{\setchapterpagestyle}{ m }{\renewcommand{\chapter@p@gestyle}{#1}}
\DeclareDocumentCommand\cleardoublepage{}{\clearpage\if@twoside \ifodd\c@page\else
\hbox{}
\thispagestyle{\blank@p@gestyle}
\newpage
\if@twocolumn\hbox{}\newpage\fi\fi\fi%
}
%----------------------------------------------------------------------------------------
% ABBREVIATIONS PAGE DESIGN
%----------------------------------------------------------------------------------------
\newcommand{\abbrevname}{List of Abbreviations}
\providecaptionname{english,british,american}{\abbrevname}{List of Abbreviations}
\providecaptionname{ngerman,german,austrian,naustrian}{\abbrevname}{Abk\"urzungsverzeichnis}
\NewDocumentEnvironment{abbreviations}{ m }{%
\ifbool{nolistspace}{\begingroup\singlespacing}{}
\ifbool{listtoc}{\addchap{\abbrevname}}{\addchap*{\abbrevname}}
\begin{longtable}{#1}
}{%
\end{longtable}
\addtocounter{table}{-1}% Don't count this table as one of the document tables
\ifbool{nolistspace}{\endgroup}{}
}
%----------------------------------------------------------------------------------------
% ABSTRACT PAGE DESIGN
%----------------------------------------------------------------------------------------
\DeclareDocumentCommand{\abstractauthorfont}{}{}
\DeclareDocumentCommand{\abstracttitlefont}{}{}
\newcommand{\byname}{by}
\newcommand{\abstractname}{Abstract}
\providecaptionname{german,ngerman,austrian,naustrian}{\byname}{von}
\providecaptionname{american,australian,british,canadian,english,newzealand,UKenglish,USenglish}{\byname}{by}
\ifbool{consistentlayout}{
\DeclareDocumentEnvironment{abstract}{ O{} }{%
\addchap*{\abstractname}%
{\chapteralign\normalsize\abstractauthorfont \authorname \par}% Author name
\vspace{\baselineskip}
{\chapteralign\parbox{.7\linewidth}{\chapteralign\normalsize\itshape\abstracttitlefont\@title}\par}% Thesis title
\bigskip\noindent\ignorespaces
}%
{}%end alt-abstract
}{%
\DeclareDocumentEnvironment{abstract}{ O{\null\vfill} }{
\checktoopen
\tttypeout{\abstractname}
#1%added to be able to have abstract more than one page long
\thispagestyle{plain}
\begin{center}
{\normalsize \MakeUppercase{\univname} \par}% University name in capitals
\bigskip
{\huge\textit{\abstractname} \par}
\bigskip
{\normalsize \facname \par}% Faculty name
{\normalsize \deptname \par}% Department name
\bigskip
{\normalsize \degreename\par}% Degree name
\bigskip
{\normalsize\bfseries \@title \par}% Thesis title
\medskip
{\normalsize \byname{} \authorname \par}% Author name
\bigskip
\end{center}
}
{
\vfill\null
}
}
\DeclareDocumentEnvironment{extraAbstract}{ O{\null\vfill} }{
\checktoopen
\tttypeout{\abstractname}
#1%added to be able to have abstract more than one page long
\thispagestyle{empty}
\begin{center}
{\normalsize \MakeUppercase{\univname} \par}% University name in capitals
\bigskip
{\huge\textit{\abstractname} \par}
\bigskip
{\normalsize \facname \par}% Faculty name
{\normalsize \deptname \par}% Department name
\bigskip
{\normalsize \degreename\par}% Degree name
\bigskip
{\normalsize\bfseries \@title \par}% Thesis title
\medskip
{\normalsize \byname{} \authorname \par}% Author name
\bigskip
\end{center}
}
{
\vfill\null
}
%----------------------------------------------------------------------------------------
% ACKNOWLEDGEMENTS PAGE DESIGN
%----------------------------------------------------------------------------------------
\usepackage{xcolor}
\colorlet{mdtRed}{red!50!black}
\newcommand{\acknowledgementname}{Acknowledgements}
\providecaptionname{american,australian,british,canadian,english,newzealand,UKenglish,USenglish} {\acknowledgementname}{Acknowledgements} % Acknowledgement text for English countries
\providecaptionname{german,ngerman,austrian,naustrian}{\acknowledgementname}{Danksagung} % Acknowledgement text for Germanic countries
\ifbool{consistentlayout}{
\DeclareDocumentEnvironment{acknowledgements}{}{%
\tttypeout{\acknowledgementname}
\addchap*{\acknowledgementname}
}
}
{
\DeclareDocumentEnvironment{acknowledgements}{}{%
\checktoopen
\tttypeout{\acknowledgementname}
\thispagestyle{plain}
\begin{center}{\huge\textit{\acknowledgementname}\par}\end{center}
}
{
\vfil\vfil\null
}
}
%----------------------------------------------------------------------------------------
% DECLARATION PAGE DESIGN
%----------------------------------------------------------------------------------------
\newcommand{\authorshipname}{Declaration of Authorship}
\providecaptionname{american,australian,british,canadian,english,newzealand,UKenglish,USenglish}{\authorshipname}{Declaration of Authorship} % Declaration of Authorship text for English countries
\providecaptionname{german,ngerman,austrian,naustrian}{\authorshipname}{Eidesstattliche Erkl\"arung} % Declaration of Authorship text for Germanic countries
\ifbool{consistentlayout}{
\DeclareDocumentEnvironment{declaration}{}{
\addchap*{\authorshipname}
}{}%
}{
\DeclareDocumentEnvironment{declaration}{}{
\checktoopen
\tttypeout{\authorshipname}
\thispagestyle{plain}
\null\vfil
{\noindent\huge\bfseries\authorshipname\par\vspace{10pt}}
}{}
}
%----------------------------------------------------------------------------------------
% DEDICATION PAGE DESIGN
%----------------------------------------------------------------------------------------
\ifbool{consistentlayout}{
\DeclareDocumentCommand{\dedicatory}{
m O{\vspace*{.7\textheight} } }{
\checktoopen\tttypeout{Dedicatory}
\markboth{}{}
#2
{\hfill\parbox{.4\textwidth}{\flushright#1\par}}
}
}{
\newcommand\dedicatory[1]{
\checktoopen
\tttypeout{Dedicatory}
\null\vfil
\thispagestyle{plain}
\begin{center}{\Large\slshape #1}\end{center}
\vfil\null
}
}
%----------------------------------------------------------------------------------------
% PHYSICAL CONSTANTS PAGE DESIGN
%----------------------------------------------------------------------------------------
\newcommand{\constantsname}{Physical Constants}
\providecaptionname{english,british,american}{\constantsname}{Physical Constants}
\providecaptionname{ngerman,german,austrian,naustrian}{\constantsname}{Physikalische Konstanten}
\NewDocumentEnvironment{constants}{ m }{%
\ifbool{nolistspace}{\begingroup\singlespacing}{}
\ifbool{listtoc}{\addchap{\constantsname}}{\addchap*{\constantsname}}
\begin{longtable}{#1}
}{%
\end{longtable}
\addtocounter{table}{-1}% Don't count this table as one of the document tables
\ifbool{nolistspace}{\endgroup}{}
}
%----------------------------------------------------------------------------------------
% SYMBOLS PAGE DESIGN
%----------------------------------------------------------------------------------------
\newcommand{\symbolsname}{List of Symbols}
\providecaptionname{english,british,american}{\symbolsname}{List of Symbols}
\providecaptionname{ngerman,german,austrian,naustrian}{\symbolsname}{Symbolverzeichnis}
\NewDocumentEnvironment{symbols}{ m }{%
\ifbool{nolistspace}{\begingroup\singlespacing}{}
\ifbool{listtoc}{\addchap{\symbolsname}}{\addchap*{\symbolsname}}
\begin{longtable}{#1}
}{%
\end{longtable}
\addtocounter{table}{-1}% Don't count this table as one of the document tables
\ifbool{nolistspace}{\endgroup}{}
}
%----------------------------------------------------------------------------------------
\ifbool{hyperrefsupport}{% If the nohyperref class option has not been specified
\AtEndPreamble{\RequirePackage{hyperref}
\hypersetup{pdfpagemode={UseOutlines},
bookmarksopen=true,
bookmarksopenlevel=0,
hypertexnames=false,
colorlinks=true,% Set to false to disable coloring links
citecolor=magenta,% The color of citations
linkcolor=red,% The color of references to document elements (sections, figures, etc)
urlcolor=mdtRed,% The color of hyperlinks (URLs)
pdfstartview={FitV},
unicode,
breaklinks=true,
}
\pdfstringdefDisableCommands{% If there is an explicit linebreak in a section heading (or anything printed to the pdf-bookmarks), it is replaced by a space
\let\\\space%
}
}
}{%nothing
}
%----------------------------------------------------------------------------------------
\endinput
% lazyLizardTracer