%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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