PhdThesisRealOne/LaTeXTemplates_masters-doctoral-thesis_v2/MastersDoctoralThesis.cls
changeset 456 26a5e640cdd7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PhdThesisRealOne/LaTeXTemplates_masters-doctoral-thesis_v2/MastersDoctoralThesis.cls	Sun Mar 20 23:32:08 2022 +0000
@@ -0,0 +1,544 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 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}{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