%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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}[2017/08/27 v1.6 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}{1} % Only show chapters and sections in 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
      \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
