dissertation-4-dissertation/Classes/PhDThesisPSnPDF.cls

502 lines
14 KiB
OpenEdge ABL
Raw Normal View History

2013-11-14 18:51:42 +00:00
%
% 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 -----------------------
2013-11-16 21:02:19 +00:00
2013-11-14 18:51:42 +00:00
\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%
2013-11-16 21:02:19 +00:00
\LoadClass[a4paper,11pt,dvips,fleqn,openright]{book}%
2013-11-14 18:51:42 +00:00
\else%
2013-11-14 22:06:51 +00:00
\LoadClass[pdftex,fleqn,openright]{book}%
2013-11-14 18:51:42 +00:00
\fi%
\else
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}%
\ProcessOptions\relax%
\ifx\pdfoutput\undefined%
2013-11-14 22:06:51 +00:00
\LoadClass[dvips, a4paper]{report}%
2013-11-14 18:51:42 +00:00
\else%
2013-11-14 22:06:51 +00:00
\LoadClass[pdftex, a4paper]{report}%
2013-11-14 18:51:42 +00:00
\fi%
\fi
2013-11-16 21:02:19 +00:00
% 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
}
2013-11-16 21:02:19 +00:00
\if@twoside \RequirePackage[hmarginratio=3:2]{geometry} % Odd and Even side Margin staggering for binding
2013-11-16 21:02:19 +00:00
\hypersetup{pdfpagelayout=TwoPageRight}
\else \RequirePackage[hmarginratio=3:2]{geometry} % Single side print margin for binding
2013-11-16 21:02:19 +00:00
\hypersetup{pdfpagelayout=OneColumn}
\fi
2013-11-16 21:02:19 +00:00
\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}
2013-11-16 21:02:19 +00:00
\RequirePackage[hmarginratio=1:1]{geometry} % No Margin staggering on Odd and Even side
2013-11-16 21:02:19 +00:00
\hypersetup{pdfpagelayout=OneColumn}
\fi
2013-11-16 17:13:31 +00:00
% index - puts the index at the end of the thesis.
%
\newif\ifCU@index\CU@indexfalse
\DeclareOption{index}{\CU@indextrue}
\ProcessOptions\relax
2013-11-14 18:51:42 +00:00
%--------------------- 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
2013-11-14 22:06:51 +00:00
% Conditional Statements
\RequirePackage{ifthen} % Used in LaTeX Class files for conditional statements
\RequirePackage{ifpdf} % Check for pdfLaTeX
2013-11-14 18:51:42 +00:00
% Table of Contents and Appendix
\RequirePackage{tocbibind} % add Bibliography, List of figures and tables to contents
\RequirePackage{appendix} % add appendix
2013-11-14 18:51:42 +00:00
% Graphics and Figures
\RequirePackage[usenames, dvipsnames]{color}
\RequirePackage{epstopdf} % Convert eps figures to pdf
2013-11-14 18:51:42 +00:00
\ifpdf % Graphicx package for figures
\RequirePackage[pdftex]{graphicx}
2013-11-14 18:51:42 +00:00
\DeclareGraphicsExtensions{.png, .jpg, .pdf}
\pdfcompresslevel=9
\else
%\RequirePackage{epsfig}
\RequirePackage{graphicx}
2013-11-14 18:51:42 +00:00
\DeclareGraphicsExtensions{.eps, .ps}
\fi
\usepackage{rotating}
\usepackage{subfigure}
\usepackage{wrapfig}
\usepackage{float}
% Table
\usepackage{longtable}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{tabularx}
2013-11-15 17:05:57 +00:00
% Captions and Hyperreferncing / URL
\usepackage[figurename=Fig.,labelsep=space,tableposition=top]{caption} % Caption styling
\RequirePackage{url}
2013-11-16 10:46:13 +00:00
% Redefining urlstyle to use smaller fontsize in References with URLs
2013-11-15 17:05:57 +00:00
\def\url@leostyle{%
2013-11-16 10:46:13 +00:00
\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\ttfamily}}}
2013-11-15 17:05:57 +00:00
\urlstyle{leo}
2013-11-14 18:51:42 +00:00
% Bibliography and References
\usepackage{cleveref}
\usepackage[square, sort, numbers, authoryear]{natbib}
% Math and SI Units
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{siunitx}
2013-11-15 14:15:34 +00:00
%To copy ligatures and Fonts
\RequirePackage{textcomp}
\RequirePackage[ansinew]{inputenc}
\RequirePackage[T1]{fontenc}
2013-11-15 14:15:34 +00:00
\usepackage{libertine}
\input{glyphtounicode}
\pdfglyphtounicode{f_f}{FB00}
2013-11-16 18:01:50 +00:00
\pdfglyphtounicode{f_i}{FB01}
\pdfglyphtounicode{f_l}{FB02}
2013-11-15 14:15:34 +00:00
\pdfglyphtounicode{f_f_i}{FB03}
\pdfglyphtounicode{f_f_l}{FB04}
2013-11-16 18:01:50 +00:00
2013-11-15 14:15:34 +00:00
\pdfgentounicode=1
2013-11-15 17:05:57 +00:00
2013-11-15 14:15:34 +00:00
%******************************************************* %
2013-11-16 21:02:19 +00:00
%A4 settings
\ifpdf
\pdfpageheight=297mm
\pdfpagewidth=210mm
\else
\setlength{\paperheight}{297mm}
\setlength{\paperwidth}{210mm}
\fi
2013-11-14 18:51:42 +00:00
2013-11-15 13:11:41 +00:00
% Setting PDF Meta-Data
\ifpdf
\AtBeginDocument{
\hypersetup{
pdftitle = {\@title},
pdfauthor = {\@author},
pdfsubject={\@subject},
pdfkeywords={\@keywords}
}
}
\fi
2013-11-15 14:15:34 +00:00
% Clear Header Style on the Last Empty Odd pages
\renewcommand{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else%
2013-11-15 14:15:34 +00:00
\hbox{}%
\thispagestyle{empty} % Empty header styles
2013-11-15 14:15:34 +00:00
\newpage%
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
2013-11-14 18:51:42 +00:00
2013-11-16 17:13:31 +00:00
% Create the index
\ifCU@index
\RequirePackage{makeidx}
\makeindex
\newcommand{\printthesisindex}{
\cleardoublepage
\phantomsection
\printindex}
\else
\newcommand{\printthesisindex}{}
\fi
2013-11-14 18:51:42 +00:00
% 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}
2013-11-15 00:05:34 +00:00
% 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}
2013-11-14 18:51:42 +00:00
\fancyhead[LE,RO]{\bfseries\thepage}
2013-11-15 00:05:34 +00:00
\fancyhead[RE]{\leftmark}
2013-11-14 22:45:27 +00:00
\fancyfoot{}
2013-11-15 00:05:34 +00:00
2013-11-14 18:51:42 +00:00
\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}}
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.
2013-11-14 18:51:42 +00:00
% The year and term the degree will be officially conferred
\newcommand{\@degreedate}{}
\newcommand{\degreedate}[1]{\renewcommand{\@degreedate}{#1}}
2013-11-14 18:51:42 +00:00
% The full (unabbreviated) name of the degree
\newcommand{\@degree}{}
\newcommand{\degree}[1]{\renewcommand{\@degree}{#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}}
% 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
2013-11-14 18:51:42 +00:00
% 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}
2013-11-16 18:01:50 +00:00
2013-11-14 18:51:42 +00:00
%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}
2013-11-14 23:17:26 +00:00
\begin{center}
2013-11-14 18:51:42 +00:00
{ \Huge {\bfseries {\@title}} \par}
{\large \vspace*{25mm} {{\@crest} \par} \vspace*{20mm}}
{{\Large \@author} \par}
{\large \vspace*{1ex}
2013-11-14 23:17:26 +00:00
{{\@dept} \par}
2013-11-14 18:51:42 +00:00
\vspace*{1ex}
{{\@university} \par}
\vspace*{25mm}
{{\submissiontext} \par}
2013-11-14 18:51:42 +00:00
\vspace*{1ex}
2013-11-14 23:17:26 +00:00
{\it {\@degree} \par}
2013-11-14 18:51:42 +00:00
\vspace*{2ex}
2013-11-14 23:17:26 +00:00
{\@degreedate}}
2013-11-14 18:51:42 +00:00
\end{center}
2013-11-14 23:17:26 +00:00
%\large
%\begin{minipage}{0.5\textwidth}
%\flushleft \@college
%\end{minipage}
%\begin{minipage}{0.5\textwidth}
%\flushleft \@degreedate
%\end{minipage}
\end{singlespace}
2013-11-14 18:51:42 +00:00
}
% 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}
2013-11-14 18:51:42 +00:00
{\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).
2013-11-16 10:46:13 +00:00
\newenvironment{romanpages}{
\setcounter{page}{1}
2013-11-14 18:51:42 +00:00
\renewcommand{\thepage}{\roman{page}}}
{\newpage\renewcommand{\thepage}{\arabic{page}}}
2013-11-16 10:46:13 +00:00