% % Based on Krishna Kumar's template, CUEDthesis v1.1 % and Alex Ridge % %-------------------------- identification --------------------- %\NeedsTeXFormat{LaTeX2e} \ProvidesClass{PhDThesisPSnPDF}[2013/11/14 version 1.0] %-------------------------- initial code ----------------------- \newif\ifCU@bookmode \CU@bookmodetrue \DeclareOption{report}{\CU@bookmodefalse} \DeclareOption{book}{\CU@bookmodetrue} \ProcessOptions\relax% \ifCU@bookmode \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}% \ProcessOptions\relax% \ifx\pdfoutput\undefined% \LoadClass[a4paper,11pt,dvips,fleqn,openright]{book}% \else% \LoadClass[pdftex,fleqn,openright]{book}% \fi% \else \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}% \ProcessOptions\relax% \ifx\pdfoutput\undefined% \LoadClass[dvips, a4paper]{report}% \else% \LoadClass[pdftex, a4paper]{report}% \fi% \fi % Set pdfpage and dvips paper sizes. Conditional tests are similar to that % of ifpdf.sty. Retain within {} to ensure tested macros are never altered, % even if only effect is to set them to \relax. % if \pdfoutput is undefined or equal to relax, output a dvips special {\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\paperwidth,\paperheight}}}{% % pdfoutput is defined and not equal to \relax % check for pdfpageheight existence just in case someone sets pdfoutput % under non-pdflatex. If exists, set them regardless of value of \pdfoutput. \@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth \global\pdfpageheight\paperheight}% % if using \pdfoutput=0 under pdflatex, send dvips papersize special \ifcase\pdfoutput \AtBeginDvi{\special{papersize=\paperwidth,\paperheight}}% \else \fi}} % Defines a print mode / online mode to define page-layout and hyperrefering \newif\if@printmode\@printmodefalse \DeclareOption{printmode}{\@printmodetrue} \ProcessOptions\relax \if@printmode \RequirePackage{hyperref} % For Print version \hypersetup{ plainpages=false, pdfstartview=FitV, unicode=true, pdftoolbar=true, pdfmenubar=true, bookmarksopen=true, bookmarksnumbered=true, breaklinks=true, linktocpage, colorlinks=true, linkcolor=black, urlcolor=black, citecolor=black, anchorcolor=black } \if@twoside \RequirePackage[hmarginratio=3:2]{geometry} % Odd and Even side Margin staggering for binding \hypersetup{pdfpagelayout=TwoPageRight} \else \RequirePackage[hmarginratio=3:2]{geometry} % Single side print margin for binding \hypersetup{pdfpagelayout=OneColumn} \fi \else \RequirePackage{hyperref} % For PDF Online version \hypersetup{ plainpages=false, pdfstartview=FitV, unicode=true, pdftoolbar=true, pdfmenubar=true, bookmarksopen=true, bookmarksnumbered=true, breaklinks=true, linktocpage, colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue, anchorcolor=green} \RequirePackage[hmarginratio=1:1]{geometry} % No Margin staggering on Odd and Even side \hypersetup{pdfpagelayout=OneColumn} \fi % index - puts the index at the end of the thesis. % \newif\ifCU@index\CU@indexfalse \DeclareOption{index}{\CU@indextrue} \ProcessOptions\relax %--------------------- packages ------------------------------- % Layout, Formatting and Headers \def\pdfshellescape{1} \usepackage{lscape} % Supports Landscape Layout \usepackage{setspace} % Define line spacing in para \usepackage{fancyhdr} % Define custom header \usepackage[perpage]{footmisc} %Range of footnote options % Algorithms and Pseudocode \usepackage{algpseudocode} % Algorithmicx package support for algorithms and pseudocode % Conditional Statements \RequirePackage{ifthen} % Used in LaTeX Class files for conditional statements \RequirePackage{ifpdf} % Check for pdfLaTeX % Table of Contents and Appendix \RequirePackage{tocbibind} % add Bibliography, List of figures and tables to contents \RequirePackage{appendix} % add appendix % Graphics and Figures \RequirePackage[usenames, dvipsnames]{color} \RequirePackage{epstopdf} % Convert eps figures to pdf \ifpdf % Graphicx package for figures \RequirePackage[pdftex]{graphicx} \DeclareGraphicsExtensions{.png, .jpg, .pdf} \pdfcompresslevel=9 \else %\RequirePackage{epsfig} \RequirePackage{graphicx} \DeclareGraphicsExtensions{.eps, .ps} \fi \usepackage{rotating} \usepackage{subfigure} \usepackage{wrapfig} \usepackage{float} % Table \usepackage{longtable} \usepackage{multicol} \usepackage{multirow} \usepackage{tabularx} % Captions and Hyperreferncing / URL \usepackage[figurename=Fig.,labelsep=space,tableposition=top]{caption} % Caption styling \RequirePackage{url} % Redefining urlstyle to use smaller fontsize in References with URLs \def\url@leostyle{% \@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\ttfamily}}} \urlstyle{leo} % Bibliography and References \usepackage{cleveref} \usepackage[square, sort, numbers, authoryear]{natbib} % Math and SI Units \usepackage{amsfonts} \usepackage{amsmath} \usepackage{amssymb} \usepackage{siunitx} %To copy ligatures and Fonts \RequirePackage{textcomp} \RequirePackage[ansinew]{inputenc} \RequirePackage[T1]{fontenc} \usepackage{libertine} \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 %******************************************************* % %A4 settings \ifpdf \pdfpageheight=297mm \pdfpagewidth=210mm \else \setlength{\paperheight}{297mm} \setlength{\paperwidth}{210mm} \fi % Setting PDF Meta-Data \ifpdf \AtBeginDocument{ \hypersetup{ pdftitle = {\@title}, pdfauthor = {\@author}, pdfsubject={\@subject}, pdfkeywords={\@keywords} } } \fi % 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} % Create the index \ifCU@index \RequirePackage{makeidx} \makeindex \newcommand{\printthesisindex}{ \cleardoublepage \phantomsection \printindex} \else \newcommand{\printthesisindex}{} \fi % Nomenclature \usepackage{nomencl} \makenomenclature \renewcommand\nomgroup[1]{% \ifthenelse{\equal{#1}{A}}{% \item[\textbf{Roman Symbols}] }{% A - Roman \ifthenelse{\equal{#1}{G}}{% \item[\textbf{Greek Symbols}]}{% G - Greek \ifthenelse{\equal{#1}{R}}{% \item[\textbf{Superscripts}]}{% R - Superscripts \ifthenelse{\equal{#1}{S}}{% \item[\textbf{Subscripts}]}{{% S - Subscripts \ifthenelse{\equal{#1}{X}}{% \item[\textbf{Other Symbols}]}{{% X - Other Symbols \ifthenelse{\equal{#1}{Z}}{% \item[\textbf{Acronyms}]}% Z - Acronyms {{}}}}}}}}}} % Custom Header with Chapter Number, Page Number and Section Numbering \pagestyle{fancy} % Style 1: %\renewcommand{\chaptermark}[1]{\markboth{\thechapter. #1 }{}} %\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} %\fancyhead[LO]{\bfseries\rightmark} %\fancyhead[LE,RO]{\bfseries\thepage} %\fancyhead[RE]{\bfseries\leftmark} %\fancyfoot{} % Style 2: \renewcommand{\chaptermark}[1]{\markboth{Chapter \thechapter. #1}{}} \renewcommand{\sectionmark}[1]{\markright{#1}} \fancyhead[LO]{\rightmark} \fancyhead[LE,RO]{\bfseries\thepage} \fancyhead[RE]{\leftmark} \fancyfoot{} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0pt} \addtolength{\headheight}{0.5pt} \fancypagestyle{plain}{ \fancyhead{} \renewcommand{\headrulewidth}{0pt} } \newcommand{\submissiontext}{{A thesis submitted for the degree of}} % These macros are used to declare arguments needed for the % construction of the title page and other preamble. % The year and term the degree will be officially conferred \newcommand{\@degreedate}{} \newcommand{\degreedate}[1]{\renewcommand{\@degreedate}{#1}} % The full (unabbreviated) name of the degree \newcommand{\@degree}{} \newcommand{\degree}[1]{\renewcommand{\@degree}{#1}} % The name of your department(eg. Engineering, Maths, Physics) \newcommand{\@dept}{} \newcommand{\dept}[1]{\renewcommand{\@dept}{#1}} % The name of your college (eg. King's) \newcommand{\@college}{} \newcommand{\college}[1]{\renewcommand{\@college}{#1}} % The name of your University \newcommand{\@university}{} \newcommand{\university}[1]{\renewcommand{\@university}{#1}} % Defining the crest \newcommand{\@crest}{} \newcommand{\crest}[1]{\renewcommand{\@crest}{#1}} % 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}} % These macros define an environment for front matter that is always % single column even in a double-column document. \newenvironment{alwayssingle}{% \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn \else\newpage\fi} {\if@restonecol\twocolumn\else\newpage\fi} %define title page layout \renewcommand{\maketitle}{% %Can use the line below to remove the blank page after the title page %\setcounter{page}{0} % Sasa Tomic \begin{singlespace} \begin{center} { \Huge {\bfseries {\@title}} \par} {\large \vspace*{25mm} {{\@crest} \par} \vspace*{20mm}} {{\Large \@author} \par} {\large \vspace*{1ex} {{\@dept} \par} \vspace*{1ex} {{\@university} \par} \vspace*{25mm} {{\submissiontext} \par} \vspace*{1ex} {\it {\@degree} \par} \vspace*{2ex} {\@degreedate}} \end{center} %\large %\begin{minipage}{0.5\textwidth} %\flushleft \@college %\end{minipage} %\begin{minipage}{0.5\textwidth} %\flushleft \@degreedate %\end{minipage} \end{singlespace} } % DEDICATION % % The dedication environment makes sure the dedication gets its % own page and is set out in verse format. \newenvironment{dedication} {\cleardoublepage \begin{alwayssingle} \pagestyle{empty} \begin{center} \vspace*{1.5cm} {\LARGE } \end{center} \vspace{0.5cm} \begin{quote} \begin{center}} {\end{center} \end{quote} \end{alwayssingle}} % DECLARATION % % The declaration environment puts a large, bold, centered % "Acknowledgements" label at the top of the page. The acknowledgements % themselves appear in a quote environment, i.e. tabbed in at both sides, and % on its own page. \newenvironment{declaration} {\cleardoublepage \pagestyle{empty} \begin{alwayssingle} \begin{center} \vspace*{1.5cm} {\Large \bfseries Declaration} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}} % ACKNOWLEDGEMENTS % % The acknowledgements environment puts a large, bold, centered % "Acknowledgements" label at the top of the page. The acknowledgements % themselves appear in a quote environment, i.e. tabbed in at both sides, and % on its own page. \newenvironment{acknowledgements} {\cleardoublepage \pagestyle{empty} \begin{alwayssingle} \begin{center} \vspace*{1.5cm} {\Large \bfseries Acknowledgements} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}} % The acknowledgementslong environment puts a large, bold, centered % "Acknowledgements" label at the top of the page. The acknowledgement itself % does not appears in a quote environment so you can get more in. \newenvironment{acknowledgementslong} {\cleardoublepage \pagestyle{empty} \begin{alwayssingle} \begin{center} \vspace*{1.5cm} {\Large \bfseries Acknowledgements} \end{center} \vspace{0.5cm}\begin{quote}} {\end{quote}\end{alwayssingle}} %ABSTRACT % %The abstract environment puts a large, bold, centered "Abstract" label at %the top of the page. The abstract itself appears in a quote environment, %i.e. tabbed in at both sides, and on its own page. \newenvironment{abstracts} {\cleardoublepage \begin{alwayssingle} \pagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Abstract} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}} %The abstractlong environment puts a large, bold, centered "Abstract" label at %the top of the page. The abstract itself does not appears in a quote %environment so you can get more in. \newenvironment{abstractslong} {\cleardoublepage \begin{alwayssingle} \pagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Abstract} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}} %The abstractseparate environment is for running of a page with the abstract %on including title and author etc as required to be handed in separately \newenvironment{abstractseparate} {\begin{alwayssingle} \pagestyle{empty} \vspace*{-1in} \begin{center} { \Large {\bfseries {\@title}} \par} {{\large \vspace*{1ex} \@author} \par} {\large \vspace*{1ex} {{\@collegeordept} \par} {{\@university} \par} \vspace*{1ex} {{\it \submissiontext} \par} {\it {\@degree} \par} \vspace*{2ex} {\@degreedate}} \end{center}} {\end{alwayssingle}} %ROMANPAGES % % The romanpages environment set the page numbering to lowercase roman one % for the contents and figures lists. It also resets % page-numbering for the remainder of the dissertation (arabic, starting at 1). \newenvironment{romanpages}{ \setcounter{page}{1} \renewcommand{\thepage}{\roman{page}}} {\newpage\renewcommand{\thepage}{\arabic{page}}}