dissertation-4-dissertation/PhDThesisPSnPDF.cls

1305 lines
39 KiB
OpenEdge ABL
Raw Permalink Normal View History

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Class ``PhD Thesis PSnPDF'' %%
%% %%
%% A PhD thesis LaTeX template for Cambridge University Engineering Department%%
%% %%
%% Version: v2.4 %%
%% Authors: Krishna Kumar %%
%% License: MIT License (c) 2016-2018 Krishna Kumar %%
%% GitHub Repo: https://github.com/kks32/phd-thesis-template/ %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ************************** Class Identification ******************************
\newcommand\fileversion{2.4}
\newcommand\filedate{2018/04/12}
\NeedsTeXFormat{LaTeX2e}
2014-08-24 15:38:27 +01:00
\ProvidesClass{PhDThesisPSnPDF}[\filedate\space A PhD thesis class file
by Krishna Kumar (v\fileversion)]
2013-11-17 01:01:46 +00:00
\typeout{https://github.com/kks32/phd-thesis-template/}
% ******************************************************************************
% **************************** Class Definition ********************************
% ******************************************************************************
% *********************** Define a Print/Online Version ************************
2013-11-19 11:32:39 +00:00
\newif\if@print\@printfalse
\DeclareOption{print}{\@printtrue}
% ****************************** Define index **********************************
2013-12-09 14:59:07 +00:00
\newif\ifPHD@index\PHD@indexfalse
\DeclareOption{index}{\PHD@indextrue}
% ******************************* Font Option **********************************
2014-06-05 23:24:38 +01:00
\newif\ifsetFont\setFontfalse % Font is not set
2013-11-19 01:34:28 +00:00
2014-01-20 01:21:13 +00:00
\newif\ifPHD@times\PHD@timesfalse % Times with Math Support
\DeclareOption{times}{
\ifsetFont
\ClassWarning{PhDThesisPSnPDF}{Font selection conflict: A font package was
2018-04-12 04:36:32 +01:00
already specified. Please check the document class options in case you
have defined two fonts.}
\else
\PHD@timestrue
\setFonttrue
\fi
}
2014-01-20 01:21:13 +00:00
\newif\ifPHD@fourier\PHD@fourierfalse % Fourier with Math Support
\DeclareOption{fourier}{
\ifsetFont
\ClassWarning{PhDThesisPSnPDF}{Font selection conflict: A font package was
aleady specified. Please check the document class options in case you
have defined two fonts.}
\else
\PHD@fouriertrue
\setFonttrue
\fi
}
2013-11-23 16:43:15 +00:00
\newif\ifsetCustomFont\setCustomFontfalse % Custom Font with Math Support
\DeclareOption{customfont}{
\ifsetFont
\ClassWarning{PhDThesisPSnPDF}{Font selection conflict: A font package was
aleady specified. Please check the document class options in case you
have defined two fonts.}
\else
\setCustomFonttrue
\setFonttrue
\fi
}
2013-11-23 16:43:15 +00:00
% ******************************* Bibliography *********************************
2014-01-20 01:21:13 +00:00
\newif\ifsetBib\setBibfalse % Custom Bibliography = true/false
\newif\ifsetBiBLaTeX\setBiBLaTeXfalse % BiBLaTeX = True / False
2014-01-20 01:21:13 +00:00
\newif\ifPHD@biblatex\PHD@biblatexfalse % BiBLaTeX
2014-06-09 16:22:51 +01:00
\DeclareOption{biblatex}{
\ifsetBib
\ClassWarning{PhDThesisPSnPDF}{Bibliography selection conflict: A
bibliography style aleady specified. Please check the document class
options in case you have defined two bibliography styles.}
\else
\PHD@biblatextrue
\fi
}
2014-01-20 01:21:13 +00:00
\newif\ifPHD@authoryear\PHD@authoryearfalse % Author-Year citation
2014-06-09 16:22:51 +01:00
\DeclareOption{authoryear}{
\ifsetBib
\ClassWarning{PhDThesisPSnPDF}{Bibliography selection conflict: A
bibliography style aleady specified. Please check the document class
options in case you have defined two bibliography styles.}
\else
\PHD@authoryeartrue
\setBibtrue
\fi
}
2014-01-20 01:21:13 +00:00
\newif\ifPHD@numbered\PHD@numberedfalse % Numbered citiation
2014-06-09 16:22:51 +01:00
\DeclareOption{numbered}{
\ifsetBib
\ClassWarning{PhDThesisPSnPDF}{Bibliography selection conflict: A
bibliography style aleady specified. Please check the document class
options in case you have defined two bibliography styles.}
\else
\PHD@numberedtrue
\setBibtrue
\fi
}
2014-06-09 00:05:59 +01:00
\newif\ifuseCustomBib\useCustomBibfalse % Custom Bibliography
2014-06-09 16:22:51 +01:00
\DeclareOption{custombib}{
\ifsetBib
\ClassWarning{PhDThesisPSnPDF}{Bibliography selection conflict: A
bibliography style aleady specified. Please check the document class
options in case you have defined two bibliography styles.}
2014-08-07 19:03:13 +01:00
\else
\ifPHD@biblatex
\ClassWarning{PhDThesisPSnPDF}{Bibliography selection conflict: A
bibliography style aleady specified. Please check the document class
options in case you have defined two bibliography styles.}
\else
\useCustomBibtrue
\setBibtrue
\fi
2014-06-09 16:22:51 +01:00
\fi
}
2014-06-29 12:13:35 +01:00
% ************************* Header / Footer Styling ****************************
2014-06-29 12:26:45 +01:00
\newif\ifPHD@textJustify\PHD@textJustifytrue % Set Justification true
\DeclareOption{flushleft}{\PHD@textJustifyfalse}
2014-06-29 12:13:35 +01:00
% ************************* Header / Footer Styling ****************************
2013-12-09 14:59:07 +00:00
\newif\ifPHD@pageStyleI\PHD@pageStyleIfalse % Set Page StyleI
\DeclareOption{PageStyleI}{\PHD@pageStyleItrue}
2013-11-23 18:46:46 +00:00
2013-12-09 22:04:17 +00:00
\newif\ifPHD@pageStyleII\PHD@pageStyleIIfalse % Set Page StyleII
2013-12-09 14:59:07 +00:00
\DeclareOption{PageStyleII}{\PHD@pageStyleIItrue}
2013-11-23 18:46:46 +00:00
% ***************************** Custom Margins ********************************
\newif\ifsetCustomMargin\setCustomMarginfalse % Set Custom Margin
2014-06-09 17:48:39 +01:00
\newif\ifsetMargin\setMarginfalse % Set Custom Margin
\DeclareOption{custommargin}{\setCustomMargintrue}
2013-11-25 11:11:21 +00:00
% **************************** Separate Abstract ******************************
2013-12-05 16:01:45 +00:00
\newif \ifdefineAbstract\defineAbstractfalse %To enable Separate abstract
2013-12-09 14:59:07 +00:00
\newif\ifPHD@abstract\PHD@abstractfalse % Enable Separate Abstract
2013-12-07 02:38:37 +00:00
\DeclareOption{abstract}{
2014-06-05 23:24:38 +01:00
\PHD@abstracttrue
2013-12-07 02:38:37 +00:00
\ClassWarning{PhDThesisPSnPDF}{You have chosen an option that generates only
2014-06-09 00:05:59 +01:00
the Title page and an abstract with PhD title and author name, if this was
intentional, ignore this warning. Congratulations on submitting your thesis!
If not, please remove the option `abstract' from the document class and
recompile. Good luck with your writing!}
\PassOptionsToClass{oneside}{book}
2013-12-07 02:38:37 +00:00
}
2013-12-05 16:01:45 +00:00
% ****************** Chapter Mode - To print only selected chapters ************
\newif \ifdefineChapter\defineChapterfalse %To enable Separate abstract
\newif\ifPHD@chapter\PHD@chapterfalse % Enable Separate Abstract
\DeclareOption{chapter}{
2014-06-05 23:24:38 +01:00
\PHD@chaptertrue
2014-06-08 19:02:10 +01:00
\ClassWarning{PhDThesisPSnPDF}{You have chosen an option that generates only
selected chapters with references, if this was intentional, ignore this
warning. If not, please remove the option `chapter' from the document class
and recompile. Good luck with your writing!}
}
% *************************** Pre-defined Options ******************************
2013-11-23 18:46:46 +00:00
% Font Size
2013-12-07 02:38:37 +00:00
\DeclareOption{10pt}{
\ClassWarning{PhDThesisPSnPDF}{The University of Cambridge PhD thesis guidelines
2013-12-07 02:38:37 +00:00
recommend using a minimum font size of 11pt (12pt is preferred) and 10pt for
footnotes.}
2017-03-19 10:31:38 +00:00
\PassOptionsToClass{10pt}{book}%
2013-12-07 02:38:37 +00:00
}
2017-03-19 10:01:49 +00:00
\DeclareOption{11pt}{\PassOptionsToClass{11pt}{book}}%
\DeclareOption{12pt}{\PassOptionsToClass{12pt}{book}}%
2013-11-23 18:46:46 +00:00
% Page Size
2013-12-09 14:59:07 +00:00
\newcommand\PHD@papersize{a4paper} % Set Default as a4paper
2013-12-09 14:59:07 +00:00
\DeclareOption{a4paper}{\renewcommand\PHD@papersize{a4paper}}
\DeclareOption{a5paper}{\renewcommand\PHD@papersize{a5paper}}
2013-12-07 02:38:37 +00:00
\DeclareOption{letterpaper}{
\ClassWarning{PhDThesisPSnPDF}{The University of Cambridge
2014-06-09 16:22:51 +01:00
PhD thesis guidelines recommend using A4 or A5paper}
2013-12-09 14:59:07 +00:00
\renewcommand\PHD@papersize{letterpaper}
2013-12-07 02:38:37 +00:00
}
2013-12-09 14:59:07 +00:00
\PassOptionsToClass{\PHD@papersize}{book}%
2013-11-23 18:46:46 +00:00
% Column layout
2014-12-21 19:07:06 +00:00
\newif\if@oneside\@onesidefalse
\DeclareOption{oneside}{\PassOptionsToClass{\CurrentOption}{book}\@onesidetrue}%
2013-11-23 18:46:46 +00:00
\DeclareOption{twoside}{\PassOptionsToClass{\CurrentOption}{book}}%
2017-03-19 10:23:58 +00:00
% ****************************** Draft Option **********************************
\newif\ifsetDraft\setDraftfalse
\newif\ifsetDraftClassic\setDraftClassicfalse
2013-11-24 18:40:44 +00:00
% Draft Mode
2014-10-08 22:27:23 +01:00
\DeclareOption{draftclassic}{\PassOptionsToClass{draft}{book}
\setDraftClassictrue
\ClassWarning{PhDThesisPSnPDF}{Draft is ON. Don't forget to turn it
off in your final version. This is the classic version of draft.
Use `draft' for enhanced mode, which adds watermark with timestamp,
line numbering, and version number.}}%
2014-10-02 15:28:14 +01:00
\DeclareOption{draft}{\PassOptionsToClass{\CurrentOption}{book}
2014-10-08 22:27:23 +01:00
\setDrafttrue
\ClassWarning{PhDThesisPSnPDF}{Draft is ON. Don't forget to turn it
off in your final version. This enhanced `draft' mode adds watermark
with timestamp, line numbering, and version number. Use `draftclassic'
if you prefer the \cite{} lassic draft mode. To tweak options see
`preamble.tex'}}%
2014-04-21 18:13:21 +01:00
% Line Numbers
2014-06-05 23:24:38 +01:00
\newif\ifPHD@lineno\PHD@linenotrue
\DeclareOption{lineno}{\PHD@linenotrue}
\DeclareOption{nolineno}{\PHD@linenofalse}
2013-11-24 18:40:44 +00:00
2013-11-23 18:46:46 +00:00
% Generates Warning for unknown options
2013-11-23 16:43:15 +00:00
\DeclareOption*{
2013-12-07 02:38:37 +00:00
\ClassWarning{PhDThesisPSnPDF}{Unknown or non-standard option
2013-12-09 22:04:17 +00:00
'\CurrentOption'. I'll see if I can load it from the book class. If you get a
2013-12-07 02:38:37 +00:00
warning unused global option(s): `\CurrentOption` then the option is not
2014-06-05 23:24:38 +01:00
supported!}
2013-11-23 18:46:46 +00:00
\PassOptionsToClass{\CurrentOption}{book}
2013-11-23 16:43:15 +00:00
}
2017-03-19 10:23:58 +00:00
% Process options and load class
2013-11-14 18:51:42 +00:00
\ProcessOptions\relax%
2017-03-19 10:01:49 +00:00
\LoadClass{book}%
2013-11-17 01:25:23 +00:00
% ******************************************************************************
% ******************************** Packages ************************************
% ******************************************************************************
% ************************** Layout and Formatting *****************************
2013-11-17 20:12:08 +00:00
2013-11-17 01:25:23 +00:00
\RequirePackage{lscape} % Supports Landscape Layout
2013-12-09 22:04:17 +00:00
\RequirePackage{setspace} % Define line spacing in paragraph
\RequirePackage{calc} % calculate vertical spacing
2013-11-14 18:51:42 +00:00
% ************************* Conditional Statements *****************************
\RequirePackage{ifthen} % Conditional statements
\RequirePackage{ifpdf} % Check for pdfLaTeX
\RequirePackage{ifxetex} % XeLaTeX
2013-11-14 18:51:42 +00:00
2013-12-07 20:40:49 +00:00
% *********************** Table of Contents & Appendices ***********************
2013-11-17 01:25:23 +00:00
% add Bibliography, List of figures and tables to contents
\RequirePackage[nottoc]{tocbibind}
2013-12-07 20:40:49 +00:00
% Add appendices
\RequirePackage[title,titletoc]{appendix}
2013-11-14 18:51:42 +00:00
\renewcommand{\contentsname}{Table of contents}
\renewcommand{\listfigurename}{List of figures}
\renewcommand{\listtablename}{List of tables}
2014-10-08 12:48:43 +01:00
% Hides Contents appearing from TOC, but adds it to bookmarks
\let\temptableofcontents\tableofcontents
\renewcommand{\tableofcontents}{
\cleardoublepage
\pdfbookmark[0]{\contentsname}{Contents}
\temptableofcontents
}
% *************************** Graphics and Figures *****************************
2014-06-05 23:24:38 +01:00
\RequirePackage[usenames, dvipsnames]{color}
\ifpdf
% Convert eps figures to pdf
\RequirePackage{epstopdf}
\RequirePackage[pdftex]{graphicx}
\DeclareGraphicsExtensions{.png, .jpg, .pdf}
\pdfcompresslevel=9
\graphicspath{{Figs/Raster/}{Figs/}}
2013-11-14 18:51:42 +00:00
\else
\RequirePackage{graphicx}
\DeclareGraphicsExtensions{.eps, .ps}
\graphicspath{{Figs/Vector/}{Figs/}}
2013-11-14 18:51:42 +00:00
\fi
2014-06-05 04:28:14 +01:00
% ******************************* Time Stamp ***********************************
% Compute the timestamp based on an idea of
% Tim Piessens \texttt{<Tim.Piessens@esat.kuleuven.ac.be>}.
2014-06-09 16:22:51 +01:00
\RequirePackage{datetime}
2014-06-05 04:28:14 +01:00
\newcount\PHD@hour \newcount\PHD@minute
\PHD@hour=\time
\divide \PHD@hour by 60
\PHD@minute=\time
\count@=\PHD@hour
\multiply \count@ by -60
\advance \PHD@minute by \count@
2014-06-05 23:24:38 +01:00
\newcommand{\PHD@daytime}{%
\today\space--\space%
2014-06-05 04:28:14 +01:00
\ifnum\PHD@hour=0 00\else\ifnum\PHD@hour<10 0\fi%
\number\PHD@hour\fi:\ifnum\PHD@minute<10 0\fi\number\PHD@minute
}
% ******************************* Draft Mode ***********************************
% Initializing Draft Text
\newcommand\SetDraftText[1]{}
% Initializing Draft Version
\newcommand\SetDraftVersion[1]{}
% Initializing Draft Content
\newcommand\SetDraftWMPosition[1]{}
2014-06-06 17:55:39 +01:00
% Initializing Draft Gray Scale
\newcommand\SetDraftGrayScale[1]{}
2014-10-08 22:27:23 +01:00
% Classic Draft Mode
\ifsetDraftClassic
% Disable figures in `draft'\
2014-10-08 22:27:23 +01:00
\setkeys{Gin}{draft=true}
\fi
% If Draft Mode is active
2014-10-02 15:20:26 +01:00
\ifsetDraft
% Disable figures in `draft'\
2014-10-08 22:27:23 +01:00
\setkeys{Gin}{draft=false}
% Line numbering (can be switched off)
\ifPHD@lineno
\RequirePackage[switch,pagewise,mathlines]{lineno}
\renewcommand{\frontmatter}{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{roman}
\nolinenumbers
}
\renewcommand{\mainmatter}{%
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}
\linenumbers
}
\renewcommand{\backmatter}{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\@mainmatterfalse
\linenumbers
}
2014-08-07 19:03:13 +01:00
% Fix display lineno issue in mathmode
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
\renewenvironment{#1}%
{\linenomath\csname old#1\endcsname}%
{\csname oldend#1\endcsname\endlinenomath}%
}%
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
\patchAmsMathEnvironmentForLineno{#1}%
\patchAmsMathEnvironmentForLineno{#1*}%
}%
\AtBeginDocument{%
2015-06-19 23:22:31 +01:00
\patchBothAmsMathEnvironmentsForLineno{equation}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
2014-08-07 19:03:13 +01:00
}
\fi % End \ifPDH@lineno
2014-06-05 04:28:14 +01:00
% Creates a Watermark Draft at the specified location.
% The settings can be tweaked in the preamble
% Draft text
\newcommand\drafttext{Draft}
\renewcommand\SetDraftText[1]{%
2015-06-19 23:22:31 +01:00
\renewcommand\drafttext{#1}
}
2014-06-05 04:28:14 +01:00
% Draft Version
2014-06-05 23:24:38 +01:00
\newcommand\draftVersion{v1.0}
\renewcommand\SetDraftVersion[1]{%
2015-06-19 23:22:31 +01:00
\renewcommand\draftVersion{#1}
}
2014-06-06 17:55:39 +01:00
% Draft Gray Scale
\newcommand\draftGrayScale{0.75}
\renewcommand\SetDraftGrayScale[1]{%
2015-06-19 23:22:31 +01:00
\renewcommand\draftGrayScale{#1}
}
2014-06-06 17:55:39 +01:00
2014-06-05 23:24:38 +01:00
% Draft Content
2014-06-05 04:28:14 +01:00
\newcommand\DraftContent{%
2015-06-19 23:22:31 +01:00
\hspace*{\fill}
\Large
\textcolor[gray]{\draftGrayScale}{%
{\drafttext}\space-\space{\draftVersion}\hspace{\stretch{1}}{\PHD@daytime}
\hspace*{\fill}
}
}
2014-06-05 04:28:14 +01:00
% Adding watermark in draft mode with time stamp
2014-06-05 23:24:38 +01:00
\RequirePackage{everypage}
\RequirePackage[absolute]{textpos}
% Default values for draft watermark
\newcommand\draftposition{top}
\newcommand\draftnodeanchor{1in+\voffset-\topmargin}
2014-06-05 23:24:38 +01:00
\AddEverypageHook{%
2015-06-19 23:22:31 +01:00
\begin{textblock*}{\paperwidth}[0.,2.5](0\paperwidth,\draftnodeanchor)
\DraftContent
\end{textblock*}
2014-06-05 23:24:38 +01:00
}
2014-06-05 04:28:14 +01:00
% Conditional evaluation to position the draft water mark (top / bottom)
\renewcommand\SetDraftWMPosition[1]{%
\renewcommand\draftposition{#1}
\ifthenelse{\equal{\draftposition}{bottom}}
2015-06-19 23:22:31 +01:00
{\renewcommand\draftnodeanchor{\paperheight-\voffset}} %Bottom
{\ifthenelse{\equal{\draftposition}{top}}
{\renewcommand\draftnodeanchor{1in+\voffset-\topmargin}} %Top
{\ClassWarning{PDThesisPSnPDF}{Unrecognised draft position
using default value of top}
\renewcommand\draftnodeanchor{1in+\voffset-\topmargin}}} %Top
\AddEverypageHook{%
\begin{textblock*}{\paperwidth}[0.,2.5](0\paperwidth,\draftnodeanchor)
\DraftContent
\end{textblock*}
}
}
% If NOT Draft
\else
\renewcommand\SetDraftText[1]{\ClassWarning{PhDThesisPSnPDF}{Draft is
inactive, to use SetDraftText include `draft' in the document
2014-06-08 19:02:10 +01:00
class options.}}
% Draft Version
\renewcommand\SetDraftVersion[1]{\ClassWarning{PhDThesisPSnPDF}{Draft is
inactive, to use SetDraftVersion include `draft' in the document
2014-06-08 19:02:10 +01:00
class options.}}
% Draft Content
\renewcommand\SetDraftWMPosition[1]{\ClassWarning{PhDThesisPSnPDF}{Draft
is inactive, to use SetDraftWMPosition include `draft' in the document
2014-06-08 19:02:10 +01:00
class options.}}
\renewcommand\SetDraftGrayScale[1]{\ClassWarning{PhDThesisPSnPDF}{Draft is
inactive, to use SetDraftWMPosition include `draft' in the document
2014-06-08 19:02:10 +01:00
class options.}}
2014-06-05 04:28:14 +01:00
\fi
% ******************************* Bibliography *********************************
2013-12-09 14:59:07 +00:00
\ifPHD@authoryear
2014-06-09 16:22:51 +01:00
\ifPHD@biblatex
\RequirePackage[backend=biber, style=authoryear, citestyle=alphabetic,
sorting=nty, natbib=true]{biblatex}
\setBiBLaTeXtrue
\else
2014-06-09 16:22:51 +01:00
\RequirePackage[round, sort, numbers, authoryear]{natbib} %author year
\fi
2014-01-20 01:21:13 +00:00
\else
\ifPHD@numbered
2014-06-09 16:22:51 +01:00
\ifPHD@biblatex
\RequirePackage[backend=biber, style=numeric-comp,
citestyle=numeric, sorting=none, natbib=true]{biblatex}
\setBiBLaTeXtrue
2014-06-09 00:05:59 +01:00
\else
2015-06-19 22:08:36 +01:00
\RequirePackage[numbers,compress]{natbib} % numbered citation
2014-06-09 00:05:59 +01:00
\fi
\else
\ifuseCustomBib
2014-06-09 16:22:51 +01:00
\AtBeginDocument{
\@ifpackageloaded{natbib}{}{
\@ifpackageloaded{biblatex}{}{
2014-06-09 00:57:35 +01:00
\ClassWarning{PhDThesisPSnPDF}{%
2014-10-10 11:50:16 +01:00
You chose custom bibliography, but no corresponding package
2014-06-09 00:57:35 +01:00
(biblatex/natbib) has been loaded. Please load the
appropriate bibliography package in the preamble.}
}
}
}
2014-06-09 16:22:51 +01:00
\else % set default to numbered
\ifPHD@biblatex
\RequirePackage[backend=biber, style=numeric-comp,
citestyle=numeric, sorting=none, natbib=true]{biblatex}
2014-06-09 00:57:35 +01:00
\setBiBLaTeXfalse
\else
2015-06-19 22:08:36 +01:00
\RequirePackage[numbers,compress]{natbib}
2014-06-09 16:22:51 +01:00
\fi % default
2014-06-09 00:57:35 +01:00
\setBibfalse
\fi % custombib
\fi % numbered
\fi % author year
2014-06-09 00:57:35 +01:00
\ifsetBib
\else
2014-06-09 00:57:35 +01:00
\ClassWarning{PhDThesisPSnPDF}{No bibliography style was specified.
Default numbered style is used. If you would like to use a
different style, use `authoryear' or `numbered' in the options in
documentclass or use `custombib` and define the natbib package or
biblatex package with required style in the Preamble.tex file}
\fi
% ********************************** Fonts **********************************
\RequirePackage{textcomp}
2013-11-19 01:34:28 +00:00
% Font Selection
2013-12-09 14:59:07 +00:00
\ifPHD@times
\ifxetex
\else
\RequirePackage{mathptmx} % times roman, including math (where possible)
\fi
\setFonttrue
2014-06-09 16:22:51 +01:00
\message{PhDThesisPSnPDF: Using Times Roman font}
2013-11-23 16:43:15 +00:00
\else
\ifPHD@fourier
\RequirePackage{fourier} % Fourier
\setFonttrue
2014-06-09 16:22:51 +01:00
\message{PhDThesisPSnPDF: Using Fourier font}
\else
\ifsetCustomFont
2014-06-09 16:22:51 +01:00
\setFonttrue
\message{PhDThesisPSnPDF: Using custom font}
\else
\setFontfalse
2014-06-09 16:22:51 +01:00
\message{PhDThesisPSnPDF: No font is set}
\fi % custom font
\fi % Fourier font
\fi % Times font
2014-06-09 16:22:51 +01:00
% If Font is not set throw a warning.
2014-06-08 19:02:10 +01:00
\ifsetFont
2014-06-09 16:22:51 +01:00
\else
\ClassWarning{PhDThesisPSnPDF}{Using default font Latin Modern. If you
would like to use other pre-defined fonts use `times' (The Cambridge
University PhD thesis guidelines recommend using Times font) or `fourier'
or load a custom font in the preamble.tex file by specifying `customfont'
in the class options}
\RequirePackage{lmodern}
\fi
\ifxetex
% XeLaTeX
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage[]{unicode-math}
\setmainfont[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]{xits}
\setmathfont[
Extension = .otf,
BoldFont = *bold,
]{xits-math}
\else
% default: pdfLaTeX
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
% If building with PDFLaTeX, use microtype spacing adjustments
\RequirePackage[final]{microtype}
\input{glyphtounicode}
\pdfglyphtounicode{f_f}{FB00}
\pdfglyphtounicode{f_i}{FB01}
\pdfglyphtounicode{f_l}{FB02}
\pdfglyphtounicode{f_f_i}{FB03}
\pdfglyphtounicode{f_f_l}{FB04}
\pdfgentounicode=1
\RequirePackage{amsfonts}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\fi
2013-11-15 14:15:34 +00:00
2014-08-24 15:38:27 +01:00
% Don't break enumeration (etc.) across pages in an ugly manner
\clubpenalty=10000
\widowpenalty=10000
%******************************* Print / Online ********************************
2014-06-05 23:24:38 +01:00
% Defines a print / online version to define page-layout and hyperrefering
% Moved below other usepackage definitions to fix PDFLaTeX footnote warning
% Based on the suggestion by John Plaice
2017-03-19 10:01:49 +00:00
\RequirePackage[unicode=true]{hyperref}
\if@print
% For Print version
\hypersetup{
final=true,
plainpages=false,
pdfstartview=FitV,
pdftoolbar=true,
pdfmenubar=true,
bookmarksopen=true,
bookmarksnumbered=true,
breaklinks=true,
linktocpage,
colorlinks=true,
linkcolor=black,
urlcolor=black,
citecolor=black,
anchorcolor=black
}
\ifsetCustomMargin
% Margin to be define in preamble using geometry package
\else
\RequirePackage[paper=\PHD@papersize,hmarginratio=1:1,
2017-03-19 10:23:58 +00:00
vmarginratio=1:1,scale=0.75,bindingoffset=5mm]{geometry}
\fi
\if@twoside
\hypersetup{pdfpagelayout=TwoPageRight}
\else
\hypersetup{pdfpagelayout=OneColumn}
\fi
\else
% For PDF Online version
\hypersetup{
final=true,
plainpages=false,
pdfstartview=FitV,
pdftoolbar=true,
pdfmenubar=true,
bookmarksopen=true,
bookmarksnumbered=true,
breaklinks=true,
linktocpage,
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
citecolor=blue,
anchorcolor=green
}
\ifsetCustomMargin
% Margin to be define in preamble using geometry package
\else
% No Margin staggering on Odd and Even side
2017-03-19 10:23:58 +00:00
\RequirePackage[paper=\PHD@papersize,hmarginratio=1:1,
vmarginratio=1:1,scale=0.75]{geometry} % dvips
\fi
\hypersetup{pdfpagelayout=OneColumn}
\fi
% ************************ URL Package and Definition **************************
\RequirePackage{url}
% Redefining urlstyle to use smaller fontsize in References with URLs
\newcommand{\url@leostyle}{%
\@ifundefined{selectfont}{\renewcommand{\UrlFont}{\sffamily}}
{\renewcommand{\UrlFont}{\normalsize}}}
\urlstyle{leo}
% option to split urls over multiple lines for latex >> DVIPS >> PDF option
2017-03-19 10:23:58 +00:00
\ifpdf
% PDFLaTeX does it automatically.
2015-06-19 22:08:36 +01:00
\else
2017-03-19 10:23:58 +00:00
% dvips
\ifxetex
\else % If not XeLaTeX
\RequirePackage{breakurl} % to split the url over multiple lines
\fi
2017-03-19 10:23:58 +00:00
\fi
% ******************************************************************************
% **************************** Pre-defined Settings ****************************
% ******************************************************************************
2013-11-15 14:15:34 +00:00
% *************************** Setting PDF Meta-Data ****************************
2013-11-15 13:11:41 +00:00
\ifpdf
\AtBeginDocument{
\hypersetup{
pdftitle = {\@title},
pdfauthor = {\@author},
pdfsubject={\@subject},
pdfkeywords={\@keywords}
}
}
\fi
2014-06-09 22:05:10 +01:00
% ******************************** Line Spacing ********************************
% Set spacing as 1.5 line spacing for the PhD Thesis
% In practice, fortunately, nobody knows really what one-and-a-half spaced
% type means exactly (in terms of millimetres baseline distance). The following
% LaTeX setting has routinely been considered perfectly acceptable:
\renewcommand\baselinestretch{1.2}
% ******************************** Justification *******************************
% Left aligned as per University identity guidelines
2014-06-29 12:13:35 +01:00
\ifPHD@textJustify
\message{PhDThesisPSnPDF: The University identity guidelines recommend using
left aligned text. Please use `flushleft' in the documentclass option, if you
wish to left align your text}
2014-06-29 12:26:45 +01:00
\else
\AtBeginDocument{
\raggedright
}
2014-06-29 12:13:35 +01:00
\fi
2013-11-14 18:51:42 +00:00
% ************************** TOC and Hide Sections *****************************
\newcommand{\nocontentsline}[3]{}
\newcommand{\tochide}[2]{
\bgroup\let
\addcontentsline=\nocontentsline#1{#2}
\egroup}
% Removes pagenumber appearing from TOC
\addtocontents{toc}{\protect\thispagestyle{empty}}
2013-11-14 18:51:42 +00:00
% ***************************** Header Formatting ******************************
2013-11-14 18:51:42 +00:00
% Custom Header with Chapter Number, Page Number and Section Numbering
2013-11-23 01:14:15 +00:00
2013-11-25 18:14:19 +00:00
\RequirePackage{fancyhdr} % Define custom header
% Style 1: Sets Page Number at the Top and Chapter/Section Name on LE/RO
\fancypagestyle{PageStyleI}{
\renewcommand{\chaptermark}[1]{\markboth{##1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ ##1\ }}
\fancyhf{}
\fancyhead[RO]{\nouppercase \rightmark\hspace{0.25em} |
\hspace{0.25em} \bfseries{\thepage}}
\fancyhead[LE]{ {\bfseries\thepage} \hspace{0.25em} |
\hspace{0.25em} \nouppercase \leftmark}
}
% Style 2: Sets Page Number at the Bottom with Chapter/Section Name on LO/RE
\fancypagestyle{PageStyleII}{
\renewcommand{\chaptermark}[1]{\markboth{##1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ ##1}}
\fancyhf{}
\fancyhead[RO]{\bfseries\nouppercase \rightmark}
\fancyhead[LE]{\bfseries \nouppercase \leftmark}
\fancyfoot[C]{\thepage}
}
2013-11-26 00:56:29 +00:00
% Set Fancy Header Command is defined to Load FancyHdr after Geometry is defined
\newcommand{\setFancyHdr}{
2013-11-22 01:02:14 +00:00
2013-11-26 00:56:29 +00:00
\pagestyle{fancy}
2013-11-24 00:53:30 +00:00
\ifPHD@pageStyleI
% Style 1: Sets Page Number at the Top and Chapter/Section Name on LE/RO
\pagestyle{PageStyleI}
2013-11-24 00:53:30 +00:00
\else
\ifPHD@pageStyleII
2013-11-24 00:53:30 +00:00
% Style 2: Sets Page Number at the Bottom with Chapter/Section Name on LO/RE
\pagestyle{PageStyleII}
2013-11-15 00:05:34 +00:00
\else
% Default Style: Sets Page Number at the Top (LE/RO) with Chapter/Section Name
% on LO/RE and an empty footer
\renewcommand{\chaptermark}[1]{\markboth {##1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ ##1}}
\fancyhf{}
\fancyhead[LO]{\nouppercase \rightmark}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[RE]{\nouppercase \leftmark}
\fi
2013-11-24 00:53:30 +00:00
\fi
2013-11-26 00:56:29 +00:00
}
2013-11-25 18:14:19 +00:00
\setlength{\headheight}{14.5pt}
2013-11-16 22:57:26 +00:00
%\renewcommand{\headrulewidth}{0.5pt}
%\renewcommand{\footrulewidth}{0pt}
2013-11-17 01:25:23 +00:00
\fancypagestyle{plain}{
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
}
2013-11-14 18:51:42 +00:00
2013-11-26 00:56:29 +00:00
% If Margin has been set (default margin print/online version)
2014-06-06 19:22:15 +01:00
\ifsetCustomMargin
\AtBeginDocument{
\@ifpackageloaded{geometry}{}{\ClassWarning{PhDThesisPSnPDF}{%
Custom margin is chosen, but geometry package is not loaded. Please load the
`geometry' package in the preamble.}}}
2014-06-06 19:22:15 +01:00
\else
2013-11-26 00:56:29 +00:00
\setFancyHdr % Apply fancy header settings otherwise apply it in preamble
\fi
2013-11-25 18:14:19 +00:00
% **************** Clear Header Style on the Last Empty Odd pages **************
\renewcommand{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else%
\hbox{}%
\thispagestyle{empty} % Empty header styles
\newpage%
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
2013-11-14 18:51:42 +00:00
2013-11-17 20:12:08 +00:00
% ******************************************************************************
% **************************** Macro Definitions *******************************
% ******************************************************************************
2013-11-14 18:51:42 +00:00
% These macros are used to declare arguments needed for the
% construction of the title page and other preamble.
2014-07-14 23:54:39 +01:00
% Subtitle (optional)
\newcommand{\@subtitle}{}
\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}}
2013-11-14 18:51:42 +00:00
% The year and term the degree will be officially conferred
2014-06-09 16:22:51 +01:00
\newcommand{\@degreedate}{\monthname[\the\month]\space\the\year}
\newcommand{\degreedate}[1]{\renewcommand{\@degreedate}{#1}}
2013-11-14 18:51:42 +00:00
% The full (unabbreviated) name of the degree
2014-11-07 15:31:30 +00:00
\newcommand{\@degreetitle}{}
\newcommand{\degreetitle}[1]{\renewcommand{\@degreetitle}{#1}}
2013-11-14 23:17:26 +00:00
% The name of your department(eg. Engineering, Maths, Physics)
\newcommand{\@dept}{}
\newcommand{\dept}[1]{\renewcommand{\@dept}{#1}}
2013-11-14 23:17:26 +00:00
% The name of your college (eg. King's)
\newcommand{\@college}{}
\newcommand{\college}[1]{\renewcommand{\@college}{#1}}
2013-11-14 18:51:42 +00:00
% The name of your University
\newcommand{\@university}{}
\newcommand{\university}[1]{\renewcommand{\@university}{#1}}
2013-11-14 18:51:42 +00:00
% Defining the crest
\newcommand{\@crest}{}
\newcommand{\crest}[1]{\renewcommand{\@crest}{#1}}
2015-06-19 23:22:31 +01:00
% Defining the college crest
\newif\ifPHD@collegeshield\PHD@collegeshieldfalse
\newcommand{\@collegeshield}{}
\newcommand{\collegeshield}[1]{\renewcommand{\@collegeshield}{#1}\PHD@collegeshieldtrue}
% Supervisor
\newif\ifPHD@supervisor\PHD@supervisorfalse
\newcommand{\@supervisor}{}
\newcommand{\supervisor}[1]{\renewcommand{\@supervisor}{#1}\PHD@supervisortrue}
% Supervisor Title (Supervisor - Default, can be changed)
\newcommand{\@supervisorrole}{Supervisor: }
\newcommand{\supervisorrole}[1]{\renewcommand{\@supervisorrole}{#1}}
2016-11-26 12:00:05 +00:00
% Supervisor width to align
\newcommand{\@supervisorlinewidth}{0.35\textwidth}
\newcommand{\supervisorlinewidth}[1]{\renewcommand{\@supervisorlinewidth}{#1}}
% Advisor
\newif\ifPHD@advisor\PHD@advisorfalse
\newcommand{\@advisor}{}
\newcommand{\advisor}[1]{\renewcommand{\@advisor}{#1}\PHD@advisortrue}
% Advisor Title (Advisor - Default, can be changed)
\newcommand{\@advisorrole}{Advisor: }
\newcommand{\advisorrole}[1]{\renewcommand{\@advisorrole}{#1}}
2016-11-26 12:00:05 +00:00
% Advisor width to align
\newcommand{\@advisorlinewidth}{0.25\textwidth}
\newcommand{\advisorlinewidth}[1]{\renewcommand{\@advisorlinewidth}{#1}}
% Submission Text
\newcommand{\submissiontext}{This dissertation is submitted for the degree of }
% keywords (These keywords will appear in the PDF meta-information
% called `pdfkeywords`.)
\newcommand{\@keywords}{}
\newcommand{\keywords}[1]{\renewcommand{\@keywords}{#1}}
% subjectline (This subject will appear in the PDF meta-information
% called `pdfsubject`.)
\newcommand{\@subject}{}
\newcommand{\subject}[1]{\renewcommand{\@subject}{#1}}
2013-11-15 13:11:41 +00:00
% Declaration title text
\newcommand{\@declarationtitle}{Declaration}
% Acknowledgment title text
\newcommand{\@acknowledgementstitle}{Acknowledgements}
% Abstract title text
\newcommand{\@abstracttitle}{Abstract}
% Names for the nomenclature groups
\newcommand{\@nomenclatureromans}{Roman Symbols}
\newcommand{\@nomenclaturegreeks}{Greek Symbols}
\newcommand{\@nomenclatureacronyms}{Acronyms / Abbreviations}
\newcommand{\@nomenclaturesuperscripts}{Superscripts}
\newcommand{\@nomenclaturesubscripts}{Subscripts}
\newcommand{\@nomenclatureothers}{Other Symbols}
2013-11-14 18:51:42 +00:00
2014-06-05 23:24:38 +01:00
% These macros define an environment for front matter that is always
2013-11-14 18:51:42 +00:00
% single column even in a double-column document.
\newenvironment{alwayssingle}{%
\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
\else\newpage\fi}
{\if@restonecol\twocolumn\else\newpage\fi}
% Set single column even under two column layout
2013-11-17 21:24:43 +00:00
\newcommand{\setsinglecolumn}{
\if@twocolumn
\onecolumn
\else
\fi
}
2013-11-16 18:01:50 +00:00
% ******************************************************************************
% *************************** Front Matter Layout ******************************
% ******************************************************************************
% ******************************** Title Page **********************************
2013-11-18 00:27:00 +00:00
\renewcommand{\maketitle}{
2013-12-09 22:04:17 +00:00
2013-11-24 15:40:35 +00:00
% To compute the free vertical space in Title page
\computeTitlePageSpacing
2016-07-04 09:45:09 +01:00
\thispagestyle{empty}
2021-05-13 09:19:39 +01:00
% Author
\vspace*{-5.5em}
\hspace{14em}
{\usebox{\PHD@author}}
\vspace*{6.5em}
2013-11-14 18:51:42 +00:00
\begin{singlespace}
2021-05-13 09:19:39 +01:00
2013-11-14 23:17:26 +00:00
\begin{center}
2015-06-19 23:22:31 +01:00
% University Crest Long if college crest is defined
\ifPHD@collegeshield%
{\usebox{\PHD@crest}}
\vspace{.15\PHD@titlepagespacing}
\fi
2013-11-18 00:27:00 +00:00
% Title
2015-06-19 23:22:31 +01:00
{\usebox{\PHD@Title}} % subtitle is defined
2014-07-14 23:54:39 +01:00
2013-11-18 00:27:00 +00:00
% Crest
2015-06-19 23:22:31 +01:00
\ifPHD@collegeshield%
\vspace{.15\PHD@titlepagespacing}
{\usebox{\PHD@collegecrest}}
\vspace{.1\PHD@titlepagespacing}
\else
\vspace{.25\PHD@titlepagespacing}
{\usebox{\PHD@crest}}
\vspace{.15\PHD@titlepagespacing}
\fi
% Supervisor
\ifPHD@supervisor%
{\usebox{\PHD@supervisor}}
\vspace*{0.5em}
\fi
% Advisor
\ifPHD@advisor%
{\usebox{\PHD@advisor}}
\vspace*{0.5em}
\fi
2013-11-18 00:27:00 +00:00
% Department and University
2015-06-19 23:22:31 +01:00
{\usebox{\PHD@dept}}
2013-12-09 14:59:07 +00:00
\vspace{.2\PHD@titlepagespacing}
2013-11-18 00:27:00 +00:00
% Submission Text
2015-06-19 23:22:31 +01:00
{\usebox{\PHD@submission}}
2013-11-24 15:40:35 +00:00
2014-12-21 15:59:39 +00:00
% College and degree date
\vfill
2015-06-19 23:22:31 +01:00
{\usebox{\PHD@collegedate}}
2015-10-08 18:29:44 +01:00
\end{center}
2013-11-14 23:17:26 +00:00
\end{singlespace}
2013-11-14 18:51:42 +00:00
}
% ********************************* Dedication *********************************
2013-11-14 18:51:42 +00:00
% The dedication environment makes sure the dedication gets its
% own page, centered
2013-11-14 18:51:42 +00:00
\newenvironment{dedication}
2013-11-17 18:28:28 +00:00
{
\cleardoublepage
2013-11-17 21:24:43 +00:00
\setsinglecolumn
2013-11-17 18:28:28 +00:00
\vspace*{0.2\textheight}
\thispagestyle{empty}
\centering
}
2013-11-14 18:51:42 +00:00
% ******************************* Declaration **********************************
2014-06-05 23:24:38 +01:00
% The declaration environment puts a large, bold, centered
2013-11-19 01:34:28 +00:00
% "Declaration" label at the top of the page.
2013-11-14 18:51:42 +00:00
2013-11-17 20:12:08 +00:00
\newenvironment{declaration}{
2013-11-17 18:28:28 +00:00
\cleardoublepage
2013-11-17 21:24:43 +00:00
\setsinglecolumn
\chapter*{\centering \Large \@declarationtitle}
2013-11-17 18:37:05 +00:00
\thispagestyle{empty}
}{
2020-11-06 18:38:12 +00:00
\noindent\@author{}\\
\@degreedate{}
\vfill
2013-11-17 18:28:28 +00:00
}
2013-11-14 18:51:42 +00:00
2014-01-13 01:18:37 +00:00
% ****************************** Acknowledgements ********************************
2014-06-05 23:24:38 +01:00
% The acknowledgements environment puts a large, bold, centered
2013-11-19 01:34:28 +00:00
% "Acknowledgements" label at the top of the page.
2013-11-14 18:51:42 +00:00
2014-01-13 01:18:37 +00:00
\newenvironment{acknowledgements}{
2013-11-17 20:12:08 +00:00
\cleardoublepage
2013-11-17 21:24:43 +00:00
\setsinglecolumn
\chapter*{\centering \Large \@acknowledgementstitle}
2013-11-17 20:12:08 +00:00
\thispagestyle{empty}
}
2013-11-14 18:51:42 +00:00
2013-11-14 18:51:42 +00:00
2020-11-06 18:38:12 +00:00
% ********************************** Proforma ***********************************
% The acknowledgements environment puts a large, bold, centered
% "Proforma" label at the top of the page.
\newenvironment{proforma}{
\cleardoublepage
\setsinglecolumn
\chapter*{\centering \Large Proforma}
\thispagestyle{empty}
}
% ********************************** Proposal ***********************************
% The acknowledgements environment puts a large, bold, centered
2020-11-12 16:06:58 +00:00
% "Project Proposal" label at the top of the page.
2020-11-06 18:38:12 +00:00
\newenvironment{proposal}{
\cleardoublepage
\setsinglecolumn
\chapter*{\centering \Large Project Proposal}
2020-11-12 15:57:26 +00:00
\addcontentsline{toc}{chapter}{Project Proposal}
2020-11-06 18:38:12 +00:00
\thispagestyle{empty}
}
% ******************************* Nomenclature *********************************
2014-12-02 21:45:17 +00:00
\RequirePackage[intoc]{nomencl}
\makenomenclature
2013-11-20 00:55:21 +00:00
\renewcommand{\nomgroup}[1]{%
\ifthenelse{\equal{#1}{A}}{\item[\textbf{\@nomenclatureromans}]}{%
\ifthenelse{\equal{#1}{G}}{\item[\textbf{\@nomenclaturegreeks}]}{%
\ifthenelse{\equal{#1}{Z}}{\item[\textbf{\@nomenclatureacronyms}]}{%
\ifthenelse{\equal{#1}{R}}{\item[\textbf{\@nomenclaturesuperscripts}]}{%
\ifthenelse{\equal{#1}{S}}{\item[\textbf{\@nomenclaturesubscripts}]}{%
\ifthenelse{\equal{#1}{X}}{\item[\textbf{\@nomenclatureothers}]}
2013-11-20 00:55:21 +00:00
{}
}% matches mathematical symbols > X
}% matches Subscripts > S
}% matches Superscripts > R
}% matches Abbreviations > Z
}% matches Greek Symbols > G
}% matches Roman Symbols > A
2013-12-10 11:13:50 +00:00
% To add nomenclature in the header
\renewcommand{\nompreamble}{\markboth{\nomname}{\nomname}}
2013-11-20 00:55:21 +00:00
% Add nomenclature to contents and print out nomenclature
2013-11-26 18:18:30 +00:00
\newcommand{\printnomencl}[1][]{
\ifthenelse{\equal {#1}{}}
{\printnomenclature}
2014-06-05 23:24:38 +01:00
{\printnomenclature[#1]}
2014-12-02 21:45:17 +00:00
%\addcontentsline{toc}{chapter}{\nomname}
2013-11-20 00:55:21 +00:00
}
2013-11-14 18:51:42 +00:00
2013-11-16 10:46:13 +00:00
% ***************************** Create the index *******************************
2013-12-09 14:59:07 +00:00
\ifPHD@index
\RequirePackage{makeidx}
\makeindex
\newcommand{\printthesisindex}{
\cleardoublepage
\phantomsection
\printindex}
\else
\newcommand{\printthesisindex}{}
\fi
% ***************************** Chapter Mode ***********************************
% The chapter mode allows user to only print particular chapters with references
% All other options are disabled by default
% To include only specific chapters without TOC, LOF, Title and Front Matter
% To send it to supervisior for changes
\ifPHD@chapter
\defineChaptertrue
% Disable the table of contents, figures, tables, index and nomenclature
\renewcommand{\maketitle}{}
\renewcommand{\tableofcontents}{}
\renewcommand{\listoffigures}{}
\renewcommand{\listoftables}{}
\renewcommand{\printnomencl}{}
\renewcommand{\printthesisindex}{}
\else
\defineChapterfalse
\fi
% ******************************** Abstract ************************************
2013-12-05 16:01:45 +00:00
% The abstract environment puts a large, bold, centered "Abstract" label at
% the top of the page. Defines both abstract and separate abstract environment
% To include only the Title and the abstract pages for submission to BoGS
2013-12-09 14:59:07 +00:00
\ifPHD@abstract
2013-12-05 16:01:45 +00:00
\defineAbstracttrue
% Disable the table of contents, figures, tables, index and nomenclature
\renewcommand{\tableofcontents}{}
\renewcommand{\listoffigures}{}
\renewcommand{\listoftables}{}
\renewcommand{\printnomencl}{}
\renewcommand{\printnomencl}[1][2]{}
2013-12-05 16:01:45 +00:00
\renewcommand{\printthesisindex}{}
\renewcommand{\bibname}{}
\renewcommand{\bibliography}[1]{\thispagestyle{empty}}
2013-12-05 16:01:45 +00:00
\else
\defineAbstractfalse
\fi
\newenvironment{abstract} {
2013-12-09 14:59:07 +00:00
\ifPHD@abstract
2013-12-05 16:01:45 +00:00
% Separate abstract as per Student Registry guidelines
2015-06-19 23:22:31 +01:00
\thispagestyle{empty}
\setsinglecolumn
\begin{center}
{ \Large {\bfseries {\@title}} \par}
{{\large \vspace*{1em} \@author} \par}
\end{center}
2013-12-05 16:01:45 +00:00
\else
% Normal abstract in the thesis
2015-06-19 23:22:31 +01:00
\cleardoublepage
\setsinglecolumn
\chapter*{\centering \Large \@abstracttitle}
2015-06-19 23:22:31 +01:00
\thispagestyle{empty}
2013-12-05 16:01:45 +00:00
\fi
}
2015-06-19 23:22:31 +01:00
% ******************** To compute empty space in title page *******************
% Boxes below are used to space different contents on the title page
% Based on https://github.com/cambridge/thesis
2013-11-24 15:40:35 +00:00
\newcommand{\computeTitlePageSpacing}{
% Title Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@Title}
\begin{lrbox}{\PHD@Title}
2015-06-19 23:22:31 +01:00
\begin{minipage}[c]{0.98\textwidth}
\centering \Huge \bfseries{\@title}
\ifthenelse{\equal{\@subtitle}{}}{
% subtitle is not defined
}{
\\
\centering \Large {\@subtitle}
} % subtitle is defined
\end{minipage}
2013-11-24 15:40:35 +00:00
\end{lrbox}
% University Crest Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@crest}
\begin{lrbox}{\PHD@crest}
2015-06-19 23:22:31 +01:00
{\@crest \par}
\end{lrbox}
\newsavebox{\PHD@collegecrest}
\begin{lrbox}{\PHD@collegecrest}
\ifPHD@collegeshield%
{\@collegeshield}
\else
% College shield is undefined
\fi
2013-11-24 15:40:35 +00:00
\end{lrbox}
% Author Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@author}
\begin{lrbox}{\PHD@author}
2015-06-19 23:22:31 +01:00
\begin{minipage}[c]{\textwidth}
\centering \Large \bfseries{\@author}
\vspace{0.5em}
2015-06-19 23:22:31 +01:00
\end{minipage}
2013-11-24 15:40:35 +00:00
\end{lrbox}
% Supervisor Box
\newsavebox{\PHD@supervisor}
\begin{lrbox}{\PHD@supervisor}
\begin{minipage}[c]{\textwidth}
\ifthenelse{\equal{\@supervisor}{}}{
% supervisor is not defined
}{
2016-11-26 12:00:05 +00:00
\begin{center}
\makebox[\widthof{supervisorrole} + \@supervisorlinewidth][c]{
\Large
\@supervisorrole \parbox[t]{\@supervisorlinewidth}{\@supervisor}
}
\end{center}
\vspace{0.5em}
} % supervisor is defined
\end{minipage}
\end{lrbox}
% Advisor Box
\newsavebox{\PHD@advisor}
\begin{lrbox}{\PHD@advisor}
\begin{minipage}[c]{\textwidth}
\ifthenelse{\equal{\@advisor}{}}{
% advisor is not defined
}{
2016-11-26 12:00:05 +00:00
\begin{center}
\makebox[\widthof{advisorrole} + \@advisorlinewidth][c]{
\Large
\@advisorrole \parbox[t]{\@advisorlinewidth}{\@advisor}
}
\end{center}
\vspace{0.5em}
} % advisor is defined
\end{minipage}
\end{lrbox}
2013-11-24 15:40:35 +00:00
% Department Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@dept}
\begin{lrbox}{\PHD@dept}
2015-06-19 23:22:31 +01:00
\begin{minipage}[c]{\textwidth}
\centering {\large \@dept \par}
{\large \@university \par}
\end{minipage}
2013-11-24 15:40:35 +00:00
\end{lrbox}
% Submission Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@submission}
\begin{lrbox}{\PHD@submission}
2015-06-19 23:22:31 +01:00
\begin{minipage}[c]{\textwidth}
\begin{center}
\large \submissiontext \par
\large \textit {\@degreetitle} \par
\end{center}
\end{minipage}
2013-11-24 15:40:35 +00:00
\end{lrbox}
% College and Date Box
2013-12-09 14:59:07 +00:00
\newsavebox{\PHD@collegedate}
\begin{lrbox}{\PHD@collegedate}
2015-10-08 18:29:44 +01:00
\begin{minipage}[c]{\textwidth}
2015-06-19 23:22:31 +01:00
\large
\ifthenelse{\equal{\@college}{}}{
% college is not defined
2015-10-08 18:29:44 +01:00
\begin{center}
\@degreedate
\end{center}
2015-06-19 23:22:31 +01:00
}{
% college is defined
\begin{minipage}[b]{0.49\textwidth}
\flushleft\@college
\end{minipage}
\begin{minipage}[b]{0.49\textwidth}
\flushright \@degreedate
\end{minipage}
} % college is defined
2013-11-24 15:40:35 +00:00
\end{minipage}
\end{lrbox}
% Now to compute the free vertical space
2013-12-09 14:59:07 +00:00
\newlength{\PHD@titlepagespacing}
\setlength{\PHD@titlepagespacing}{ \textheight %
- \totalheightof{\usebox{\PHD@Title}}
- \totalheightof{\usebox{\PHD@crest}}
2015-06-19 23:22:31 +01:00
- \totalheightof{\usebox{\PHD@collegecrest}}
2013-12-09 14:59:07 +00:00
- \totalheightof{\usebox{\PHD@author}}
- \totalheightof{\usebox{\PHD@supervisor}}
- \totalheightof{\usebox{\PHD@advisor}}
2013-12-09 14:59:07 +00:00
- \totalheightof{\usebox{\PHD@dept}}
- \totalheightof{\usebox{\PHD@submission}}
- \totalheightof{\usebox{\PHD@collegedate}}
2013-11-24 15:40:35 +00:00
}
}
2014-08-15 11:46:25 +01:00