diff options
Diffstat (limited to 'macros/latex/contrib/hepthesis/hepthesis.cls')
-rw-r--r-- | macros/latex/contrib/hepthesis/hepthesis.cls | 903 |
1 files changed, 903 insertions, 0 deletions
diff --git a/macros/latex/contrib/hepthesis/hepthesis.cls b/macros/latex/contrib/hepthesis/hepthesis.cls new file mode 100644 index 0000000000..a430515657 --- /dev/null +++ b/macros/latex/contrib/hepthesis/hepthesis.cls @@ -0,0 +1,903 @@ +%% hepthesis +%% LaTeX class for writing PhD theses, particularly those for +%% high energy physics (HEP) +%% Author: Andy Buckley <andy@insectnation.org> +%% +%% This material is subject to the LaTeX Project Public License. +%% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +%% or the details of that license. +%% +%% Please let me know if you use hepthesis and what you think of it. +%% I'll try to implement any suggested options or geometry changes, +%% provided I think they're a good idea! + + +%% ======================================================================== +%% Admin +%% ======================================================================== +\def\fileversion{1.5.1} +\def\filedate{2017/09/20} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{hepthesis}[\filedate\space HEP thesis class by Andy Buckley (v\fileversion)] + +%% ======================================================================== +%% Option parsing +%% ======================================================================== +%% Conditional packages (can be disabled) +\def\@empty{} +\def\@yes{yes} +\def\@requireamsmath{yes} +\def\@requirebooktabs{yes} +\def\@requiremakeidx{} +\def\@requiretitling{} +\def\@requirehep{} +\def\@requirehyper{} +\def\@requiredraft{} +\def\@useAFour{yes} +\def\@requireAFourWide{} +\def\@useTwelvePt{yes} +\def\@oneside{} +\def\@sftitles{} +\def\@bindmargins{yes} +\def\@hidefrontmatter{} +\def\@hidebackmatter{} + +%% Part-wise spacing commands and definitions +\def\@frontmatterspacing{onehalfspacing} +\def\@mainmatterspacing{onehalfspacing} +\def\@appendixspacing{onehalfspacing} +\def\@backmatterspacing{onehalfspacing} + +%% One-sided or two-sided (bound copies may have to be single-sided) +\DeclareOption{oneside}{% + \def\@oneside{yes} + \PassOptionsToClass{oneside}{scrbook}} +\DeclareOption{twoside}{% + \def\@oneside{} + \PassOptionsToClass{twoside}{scrbook}} + +%% Sans serif titles? +\DeclareOption{sftitles}{% + \def\@sftitles{yes}} +\DeclareOption{rmtitles}{% + \def\@sftitles{}} + +%% Pad inner margins for binding +\DeclareOption{bind}{% + \def\@bindmargins{yes}} +\DeclareOption{nobind}{% + \def\@bindmargins{}} +%% Use binding margins if output is not PDF +\DeclareOption{bindnopdf}{ + \ifx\pdfoutput\undefined% + \def\@bindmargins{yes}% + \else% + \def\@bindmargins{}% + \fi% +} + +%% Use AMS math packages +\DeclareOption{noams}{% + \def\@requireamsmath{}} +\DeclareOption{ams}{% + \def\@requireamsmath{yes}} + +%% Change footnote markers to alphabetic +\DeclareOption{alphafoot}{% + \DeclareRobustCommand{\thefootnote}{\alph{footnote}}% +} + +%% Draft mode with line numbers and draft over-print +\DeclareOption{draft}{% + \def\@requiredraft{yes} + \AtEndOfPackage{% + \let\@oldermainmatter\mainmatter% + \DeclareRobustCommand{\mainmatter}{\@oldermainmatter\linenumbers}% + } +} + +%% Disable the frontmatter +\DeclareOption{hidefront}{% + \def\@hidefrontmatter{yes} +} +\DeclareOption{hideback}{% + \def\@hidebackmatter{yes} +} +\DeclareOption{hidefrontback}{% + \def\@hidefrontmatter{yes} + \def\@hidebackmatter{yes} +} + +% Use hyperref package (with decent options) +\DeclareOption{hyper}{ + \def\@requirehyper{yes}} + +% Use hyperref package (with decent options) only if output is PDF +\DeclareOption{hyperpdf}{ + \ifx\pdfoutput\undefined\else% + \def\@requirehyper{yes}% + \fi% +} + +%% Don't break enumerations (etc.) across pages in +%% an ugly manner +\clubpenalty = 10000 +\widowpenalty = 10000 + +%% Use nice-looking tables +\DeclareOption{booktabs}{% + \def\@requirebooktabs{yes}} +\DeclareOption{nobooktabs}{% + \def\@requirebooktabs{}} + + +%% Allows us to make an index +\DeclareOption{index}{% + \def\@requiremakeidx{yes} +} + +%% Allows us to make an index +\DeclareOption{titling}{% + \def\@requiretitling{yes} +} + +%% Particle physics options +\DeclareOption{hep}{% + \def\@requirehep{yes} +} + +%% Paper size (wide A4 is default) +\DeclareOption{a4paper}{% + \def\@useAFour{yes}% + \def\@requireAFourWide{yes}% +} +\DeclareOption{a4narrow}{% + \def\@useAFour{yes}% + \def\@requireAFourWide{}% +} +\DeclareOption{a5paper}{% + \def\@useAFour{}% + \PassOptionsToClass{a5paper}{scrbook}% +} +\DeclareOption{b5paper}{% + \def\@useAFour{}% + \PassOptionsToClass{b5paper}{scrbook}% +} +\DeclareOption{letterpaper}{% + \def\@useAFour{}% + \PassOptionsToClass{letterpaper}{scrbook}% +} +\DeclareOption{legalpaper}{% + \def\@useAFour{}% + \PassOptionsToClass{legalpaper}{scrbook}% +} +\DeclareOption{executivepaper}{% + \def\@useAFour{}% + \PassOptionsToClass{executivepaper}{scrbook}% +} +%% Handle the A4 default paper size +\ifx\@useAFour\@empty\else% + \PassOptionsToClass{a4paper}{scrbook}% +\fi + + +%% Font size (12pt is default) +\DeclareOption{10pt}{% + \def\@useTwelvePt{}% + \PassOptionsToClass{10pt}{scrbook}% +} +\DeclareOption{11pt}{% + \def\@useTwelvePt{}% + \PassOptionsToClass{11pt}{scrbook}% +} +\DeclareOption{12pt}{% + \def\@useTwelvePt{yes}% +} +%% Handle the 12pt default font size +\ifx\@useTwelvePt\@empty\else% + \PassOptionsToClass{12pt}{scrbook}% +\fi + + +%% Options to be passed to the hep package +\DeclareOption{hepfd}{\def\@requirehep{yes}\PassOptionsToPackage{fd}{hep}} +\DeclareOption{heplayout}{\def\@requirehep{yes}\PassOptionsToPackage{layout}{hep}} +\DeclareOption{hephyper}{\def\@requirehep{yes}\PassOptionsToPackage{hyper}{hep}} +\DeclareOption{hepfloat}{\def\@requirehep{yes}\PassOptionsToPackage{float}{hep}} +\DeclareOption{hepall}{\def\@requirehep{yes}\PassOptionsToPackage{all}{hep}} + +%% Process the options (no package requirement allowed above here) +\ProcessOptions + + +%% ======================================================================== +%% Base class and packages +%% ======================================================================== + +%% Base class +\LoadClass[chapterprefix]{scrbook} + +%% Use wide format if using A4 paper +\ifx\@requireAFourWide\@empty\else\RequirePackage{a4wide}\fi + +%% Use Type 1 font encoding +\RequirePackage[T1]{fontenc} + +%% Useful tools +\RequirePackage{etoolbox} + +%% If building with PDFLaTeX, use microtype spacing adjustments +\RequirePackage{microtype} + +%% Need to be able to locally change the text width. +\RequirePackage{changepage} + +%% Used to center the variable width page quote (must be version >= 0.9a) +\RequirePackage{varwidth}[2003/03/10] + + +%% AMS math package (optional) +\ifx\@requireamsmath\@empty\else% + \RequirePackage{amsmath} + \AtEndOfPackage{% + %% Displayed maths environments re-defined to be the same as AMS' align + \renewenvironment{displaymath}{\align}{\endalign\ignorespacesafterend} + \newenvironment{displaymath*}% + {\expandafter\let\expandafter\@oldoldalignstar \csname align*\endcsname \@oldoldalignstar}% + {\expandafter\let\expandafter\@oldoldendalignstar \csname endalign*\endcsname \@oldoldendalignstar \ignorespacesafterend} + \renewenvironment{equation}{\align}{\endalign\ignorespacesafterend} + \renewenvironment{equation*}% + {\expandafter\let\expandafter\@oldoldalignstar \csname align*\endcsname \@oldoldalignstar}% + {\expandafter\let\expandafter\@oldoldendalignstar \csname endalign*\endcsname \@oldoldendalignstar \ignorespacesafterend} + }% +\fi + +%% Index building (optional) +\ifx\@requiremakeidx\@empty\else\RequirePackage{makeidx}\fi + +%% Use the \title and \author arguments to build the front page etc. +\ifx\@requiretitling\@empty% +%% Re-define \title and \author to store their args in \thetitle, \theauthor variables + \renewcommand*\title[1]{\gdef\@title{#1}\global\let\thetitle\@title}% + \renewcommand*\author[1]{\gdef\@author{#1}\global\let\theauthor\@author}% +\else% + \RequirePackage{titling}% +\fi + +%% Serif titles +\ifx\@sftitles\@empty + \addtokomafont{sectioning}{\rmfamily\bfseries} +\fi + +%% In standard tabular: aligns \hline properly with vertical +%% lines (check with zoom). But you shouldn't using vertical +%% lines, should you? See booktabs documentation ;-) +%\RequirePackage{array} + +%% Nice tables (optional) +\ifx\@requirebooktabs\@empty\else% + \RequirePackage{booktabs} + \AtEndOfClass{% + %% Tabular environment, defined to use the booktabs facilities + \let\@oldtabular\tabular + \let\@oldendtabular\endtabular + \renewenvironment{tabular}[1]{% + \@oldtabular{@{}#1@{}}% + \toprule% + }{% + \bottomrule% + \@oldendtabular% + \ignorespacesafterend% + } + %% + }% +\fi + +%% Convenience-included HEP packages (optional) +\ifx\@requirehep\@empty\else\RequirePackage{hep}\fi + +%% ``DRAFT'' underprint and line numbering in draft mode (optional) +\ifx\@requiredraft\@empty\else% + \RequirePackage[pagewise, mathlines]{lineno} + \RequirePackage{draftcopy} +\fi + +%% The right way to do custom spacing +\RequirePackage{setspace} +%% \singlespacing, \onehalfspacing, \doublespacing +%% \begin{spacing}{2.5} ... + +%% Funky headers +\RequirePackage{fancyhdr} + +%% Make sure bibliography (but not ToC) appears in the ToC +\RequirePackage[nottoc]{tocbibind} + +%% Special comments for block enabling/disabling +\RequirePackage{comment} + +%% Rotated figures (used to define sidewaysfigure) +\RequirePackage{rotating} + +%% Re-defines captions of figures and tables +%% TODO: make configurable / optional? +\RequirePackage[format=hang,labelfont=bf,labelsep=colon,font=small]{caption}[2004/01/23] + +%% Ability to specify a hook for after a page is completed +\RequirePackage{afterpage} + +%% Misc tweaks +\AtEndOfClass{% + %% Make maths in titles go automatically bold + \g@addto@macro\bfseries{\boldmath} + %% Declare a bold version of the typewriter font + \DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{} +} + + +%% ======================================================================== +%% Length definitions +%% ======================================================================== + +\setlength{\parindent}{0.6cm} % tweak the initial indent in paras +\setlength{\parskip}{0.3cm} % tweak the intra-para gap size +\setlength{\topmargin}{0in} +\setlength{\textheight}{9in} +\setlength{\footskip}{0.5in} +\setlength{\textwidth}{6.2in} +%% Increase inner margins for binding +\newlength{\@bindextramargin} +\AtEndOfClass{% + \ifx\@bindmargins\@empty% + \setlength{\@bindextramargin}{0.0in} + \else% + \setlength{\@bindextramargin}{0.2in} + \fi + \setlength{\oddsidemargin}{\@bindextramargin} + \setlength{\evensidemargin}{-\@bindextramargin} +} + +%% Redefine bits of document shape +\renewcommand{\topfraction}{0.95}% +\renewcommand{\bottomfraction}{0.95}% +\renewcommand{\textfraction}{0.05}% +\renewcommand{\arraystretch}{1.25}% + +%% Reset rule widths and the header width +\renewcommand{\headwidth}{\textwidth}% +\renewcommand{\headrulewidth}{0.5pt}% +\renewcommand{\footrulewidth}{0pt}% +\addtolength{\headheight}{2.5pt}% +\addtolength{\headsep}{20pt}% + +%% Extra margins for various sections +\newlength{\@mainmatterextramargin}% +\setlength{\@mainmatterextramargin}{0cm}% +\newlength{\@backmatterextramargin}% +\setlength{\@backmatterextramargin}{0cm}% +\newlength{\@frontmatterextramargin}% +\setlength{\@frontmatterextramargin}{0cm}% +\newlength{\@appendixextramargin}% +\setlength{\@appendixextramargin}{0cm}% +\newlength{\@abstractextramargin}% +\setlength{\@abstractextramargin}{1.5cm}% +\newlength{\@declarationextramargin}% +\setlength{\@declarationextramargin}{1cm}% +\newlength{\@acknowledgementsextramargin}% +\setlength{\@acknowledgementsextramargin}{0cm}% +\newlength{\@prefaceextramargin}% +\setlength{\@prefaceextramargin}{0cm}% +\newlength{\@pagequoteextramargin}% +\setlength{\@pagequoteextramargin}{2cm}% + +%% Top vertical spacing in the front matter +\newlength{\@frontmattertopskip}% +\newlength{\@frontmattertitletopskip}% +\newlength{\frontmattertitleskip}% +\addtolength{\frontmattertitleskip}{2cm}% +\addtolength{\@frontmattertitletopskip}{0cm}% +\setlength{\@frontmattertopskip}{\frontmattertitleskip}% +\addtolength{\@frontmattertopskip}{\@frontmattertitletopskip}% + +%% Figure widths +\newlength{\smallfigwidth} +\newlength{\mediumfigwidth} +\newlength{\largefigwidth} +\newlength{\hugefigwidth} +\setlength{\smallfigwidth}{0.45\textwidth} +\setlength{\mediumfigwidth}{0.6\textwidth} +\setlength{\largefigwidth}{0.75\textwidth} +\setlength{\hugefigwidth}{0.9\textwidth} + +%% Figure width aliases +\newlength{\littlefigwidth} +\newlength{\bigfigwidth} +\setlength{\littlefigwidth}{\smallfigwidth} +\setlength{\bigfigwidth}{\largefigwidth} + + +%% ======================================================================== +%% Headers and footers +%% ======================================================================== +%% No header or footer on the title page +\AtBeginDocument{\thispagestyle{plain}} +%% Use funky headers and footers +\pagestyle{fancy} + + +%% Normal headers and footers (headers are all like RH pages for oneside) +\ifx\@oneside\@empty% + \fancyhead[RO,LE]{\bfseries\thepage}% + \fancyhead[LO,RE]{\bfseries\leftmark}% +\else% + \fancyhead[RO,R]{\bfseries\thepage}% + \fancyhead[LO,L]{\bfseries\leftmark}% +\fi% +\fancyfoot{}% +%% Lower case header content +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} + + +%% Headers and footers for plain (blank) pages +\fancypagestyle{plain}{% + \fancyhf{}% + %\fancyhead[RO,LE]{\bfseries \thepage}% + \fancyfoot[C]{\bfseries \thepage}% + \renewcommand{\headrulewidth}{0pt}% + \renewcommand{\footrulewidth}{0pt}% +} + + +%% Treat forced blank pages in the same way as chapter title pages +\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else% + \hbox{}% + %\thispagestyle{empty}% + \thispagestyle{plain}% + \newpage% + \if@twocolumn\hbox{}\newpage\fi\fi\fi}% + +%% Commenting out front and back matter +\ifx\@hidefrontmatter\@yes\AtBeginDocument{\excludecomment{frontmatter}}\fi +\ifx\@hidebackmatter\@yes\AtBeginDocument{\excludecomment{backmatter}}\fi + + +%% ======================================================================== +%% Internal environments and commands +%% ======================================================================== + +\AtEndPreamble{% + \RequirePackage[autostyle]{csquotes}[2007/03/25] + %% Provide dumb quoting commands in case the csquotes package hasn't been used. + \providecommand{\enquote}[1]{``#1''}% + \providecommand{\foreignquote}[1]{``#1''}% + + %% Provide mixed-case versions of the Table of contents, + %% List of tables, List of figures, Bibliography etc. header names + \@ifpackageloaded{babel}{\addto\captionsenglish{% + \renewcommand*{\contentsname}{Contents} + \renewcommand*{\bibname}{Bibliography} + \renewcommand*{\listfigurename}{List of figures} + \renewcommand*{\listtablename}{List of tables} + }}{% + \renewcommand*{\contentsname}{Contents} + \renewcommand*{\bibname}{Bibliography} + \renewcommand*{\listfigurename}{List of figures} + \renewcommand*{\listtablename}{List of tables} + } + + %% Hyperlinks (optional, has to come late in the package list) + \ifx\@requirehyper\@empty\else% + \RequirePackage[colorlinks=true,bookmarks=true,plainpages=false]{hyperref}% + % pdfpagemode=None, FullScreen, UseThumbs, UseOutlines + \fi +} + + +%% ======================================================================== +%% Public environments and commands +%% ======================================================================== + + +%% Change the spacing of lines +\DeclareRobustCommand{\setspacing}[1]{% + \setfrontmatterspacing{#1}% + \setmainmatterspacing{#1}% + \setappendixspacing{#1}% + \setbackmatterspacing{#1}% +} +\DeclareRobustCommand{\setfrontmatterspacing}[1]{\def\@frontmatterspacing{#1spacing}} +\DeclareRobustCommand{\setmainmatterspacing}[1]{\def\@mainmatterspacing{#1spacing}} +\DeclareRobustCommand{\setappendixspacing}[1]{\def\@appendixspacing{#1spacing}} +\DeclareRobustCommand{\setbackmatterspacing}[1]{\def\@backmatterspacing{#1spacing}} + + +%% Change the extra margin size +\DeclareRobustCommand{\setextramargins}[1]{% + \setfrontmatterextramargins{#1}% + \setmainmatterextramargins{#1}% + \setappendixextramargins{#1}% + \setbackmatterextramargins{#1}% +} +\DeclareRobustCommand{\setfrontmatterextramargins}[1]{\setlength{\@frontmatterextramargin}{#1}} +\DeclareRobustCommand{\setmainmatterextramargins}[1]{\setlength{\@mainmatterextramargin}{#1}} +\DeclareRobustCommand{\setappendixextramargins}[1]{\setlength{\@appendixextramargin}{#1}} +\DeclareRobustCommand{\setbackmatterextramargins}[1]{\setlength{\@backmatterextramargin}{#1}} +\DeclareRobustCommand{\setabstractextramargins}[1]{\setlength{\@abstractextramargin}{#1}} +\DeclareRobustCommand{\setdeclarationextramargins}[1]{\setlength{\@declarationextramargin}{#1}} +\DeclareRobustCommand{\setacknowledgementsextramargins}[1]{\setlength{\@acknowledgementsextramargin}{#1}} +\DeclareRobustCommand{\setprefaceextramargins}[1]{\setlength{\@prefaceextramargin}{#1}} + + +%% An environment for the rubbish at the front of a typical thesis +\let\@oldfrontmatter\frontmatter +\specialcomment{frontmatter}{% + \setcounter{tocdepth}{2}% show down to subsections in contents + \setcounter{secnumdepth}{2}% number down to subsections + \newcounter{iterlist}% + \@oldfrontmatter% + \adjustwidth{\@frontmatterextramargin}{\@frontmatterextramargin}% + \begin{\@frontmatterspacing}% +}{% + \end{\@frontmatterspacing}% + \endadjustwidth% + \ignorespacesafterend% + % \thispagestyle{empty} +} + + +%% Environment for the thesis main body +\let\@oldmainmatter\mainmatter +\specialcomment{mainmatter}{% + %\@oldmainmatter% + \if@twoside\clearpage\fi% + \@mainmattertrue% + \afterpage{\pagenumbering{arabic}}% + \adjustwidth{\@mainmatterextramargin}{\@mainmatterextramargin}% + \begin{\@mainmatterspacing}% +}{% + \end{\@mainmatterspacing}% + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Environment for appendices +\specialcomment{appendices}{% + \adjustwidth{\@appendixextramargin}{\@appendixextramargin}% + \begin{\@appendixspacing}% + \appendix% +}{% + \end{\@appendixspacing}% + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Environment for all the junk at the end of the thesis +\let\@oldbackmatter\backmatter +\specialcomment{backmatter}{% + %\thispagestyle{plain}% + %pagestyle{plain}% + %\@oldbackmatter% + \adjustwidth{\@backmatterextramargin}{\@backmatterextramargin}% + \begin{\@backmatterspacing}% + \appendix% +}{% + \end{\@backmatterspacing}% + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Environment for acknowledgements page in frontmatter +\newenvironment{acknowledgements}{% + \cleardoublepage% + \adjustwidth{\@acknowledgementsextramargin}{\@acknowledgementsextramargin}% + \vspace*{\@frontmattertopskip}% + \begin{center}% + \begingroup + \ifx\@sftitles\@empty\else\sffamily\fi + {\LARGE{\textbf{Acknowledgements}}}% + \endgroup + \end{center}% + \vspace*{1cm}% +}{% + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Environment for preface page in frontmatter +\newenvironment{preface}{% + \cleardoublepage% + \adjustwidth{\@prefaceextramargin}{\@prefaceextramargin}% + \vspace*{\@frontmattertopskip}% + \begin{center}% + \begingroup + \ifx\@sftitles\@empty\else\sffamily\fi + {\LARGE{\textbf{Preface}}}% + \endgroup + \end{center}% + \vspace*{1cm}% +}{% + \endadjustwidth% + \ignorespacesafterend % +} + + +%% Environment for declaration rubrik page in frontmatter +%% (flushright doesn't work in this macro for some reason, +%% so you'll have to do that bit yourself like in the +%% example file) +\newenvironment{declaration}{% + \cleardoublepage% + \adjustwidth{\@declarationextramargin}{\@declarationextramargin}% + \vspace*{\@frontmattertopskip}% + \begin{center}% + \begingroup + \ifx\@sftitles\@empty\else\sffamily\fi + {\LARGE\textbf{Declaration}}% + \endgroup + \end{center}% + \vspace*{1cm}% +}{% + %\newline \newline \newline% + %\begin{flushright} + % \thesisauthor\newline + % \today\newline + %\end{flushright} + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Environment for thesis abstract in frontmatter +%% (argument is the thesis title) +\newenvironment{abstract}[1][Abstract]{% + \adjustwidth{\@abstractextramargin}{\@abstractextramargin}% + \cleardoublepage% + \vspace*{\@frontmattertopskip}% + \begin{center}% + \begingroup + \ifx\@sftitles\@empty\else\sffamily\fi + {\LARGE\textbf{#1}}% + \endgroup + \end{center}% + \vspace*{1cm}% +}{% + \endadjustwidth% + \ignorespacesafterend% +} + + +%% Deprecated: combined command for defining the title and author in the preamble +%% TODO Remove in 1.5 +\DeclareRobustCommand{\definethesis}[2]{% + \typeout{hepthesis: definethesis macro is deprecated. Use author and title macros instead.} + \author{#1}% + \title{#2}% +} + + +%% Makes a thesis title page +\let\@oldtitlepage\titlepage +\let\@oldendtitlepage\endtitlepage +\DeclareRobustCommand{\titlepage}[2][]{% + %\@oldtitlepage% + \thispagestyle{empty}% + \begingroup% + \ifx\@sftitles\@empty\else\sffamily\fi% + \begin{center}% + \vspace*{\frontmattertitleskip}% + \begin{doublespace}% + {\Huge\textbf{\thetitle}}\\% + \end{doublespace}% + \vspace*{3cm}% + {\Large{{\theauthor} \\ {#1}}}\\% + \vspace*{8cm}% + {#2}% + \end{center}% + \endgroup% + %\@oldendtitlepage% + %\cleardoublepage% +} +\renewcommand{\maketitle}[1]{\titlepage{}} + + +%% A quote on its own page +\newlength{\@oldparindent} +\setlength{\@oldparindent}{\parindent} +\DeclareRobustCommand{\pagequote}[3][same]{% + \cleardoublepage% + \vspace*{\stretch{2}}% + \thispagestyle{empty}% + % \thispagestyle{plain}% + % \pagestyle{plain}% + \begin{center}% + \begin{varwidth}{\textwidth}% + \def\@samelang{same}% + \def\@reqlang{#1}% + \ifx\@samelang\@reqlang% + \noindent\textsl{\enquote{\hspace{0.1ex}#2}}% + \else% + \noindent\textsl{\foreignquote{\@reqlang}{\hspace{0.1ex}#2}}% + \fi% + \newline% + \setlength{\parindent}{\@oldparindent} + \indent --- {#3}% + \end{varwidth}% + \end{center}% + \vspace*{\stretch{4}}% + \if@twoside\clearpage\fi% + \thispagestyle{plain}% +} +%% Alias +\let\frontquote\pagequote + + +%% A quote on its own page +\DeclareRobustCommand{\dedication}[1]{% + \cleardoublepage% + \vspace*{\stretch{2}}% + \thispagestyle{plain}% + \pagestyle{plain}% + \begin{center}% + \begin{varwidth}{\textwidth}% + \noindent\textsl{\enquote{#1}}% + \end{varwidth}% + \end{center}% + \vspace*{\stretch{4}}% + %\cleardoublepage% + \pagestyle{plain}% +} + + +%% Environment for colophon in backmatter +\newenvironment{colophon}{% + \chapter*{Colophon}% + \@mkboth{\MakeUppercase{Colophon}}{\MakeUppercase{Colophon}}% +}{% + \ignorespacesafterend % +} + + +%% Typesets a chapter quote +\DeclareRobustCommand{\chapterquote}[3][same]{% + \def\@samelang{same}% + \def\@reqlang{#1}% + \begin{adjustwidth}{}{3cm}% + \ifx\@samelang\@reqlang% + \noindent\emph{\enquote{#2}}% + \else% + \noindent\emph{\foreignquote{\@reqlang}{#2}}% + \fi% + \newline% + \indent --- #3% + \end{adjustwidth}% + \vspace{1cm}% +} + +%% Typesets the first para of a chapter slightly differently +%% (I don't use it, so maybe it needs some work) +\newenvironment{chapterintro}[1][blah]{% + %\begingroup + \def\thearg{#1}% + \def\sans{sf}% + \def\italic{it}% + \def\sansit{sfit}% + \ifx\thearg\sans% + \sffamily% + \else% + \ifx\thearg\italic% + \itshape% + \else% + \ifx\thearg\sansit% + \sffamily% + \itshape% + \fi\fi\fi% +}{% + \ignorespacesafterend% + %\endgroup +} + +%% Bold inline section heading with a finishing colon +\DeclareRobustCommand{\verysubsection}[1]{{\noindent\textbf{#1:}}} + +%% Table environment +\let\@oldtable\table +\let\@oldendtable\endtable +\renewenvironment{table}[1][tbp]{% + \vspace{0.4cm}% + \@oldtable[#1]% + \begin{center}% +}{% + \end{center}% + \@oldendtable% + \ignorespacesafterend% +} + +%% Figure environment +\let\@oldfigure\figure +\let\@oldendfigure\endfigure +\renewenvironment{figure}[1][tbp]{ + \@oldfigure[#1]% + \begin{center}% +}{% + \end{center}% + \@oldendfigure% + \ignorespacesafterend% +} + +%% Figure* environment (lots of \expandafter and \csname gubbins reqd... *sigh*) +\expandafter\let\expandafter\@oldfigurestar \csname figure*\endcsname +\expandafter\let\expandafter\@oldendfigurestar \csname endfigure*\endcsname +\renewenvironment{figure*}[1][tbp]{ + \@oldfigurestar[#1]% + \begin{center}% +}{% + \end{center}% + \@oldendfigurestar% + \ignorespacesafterend% +} + +%% Sideways figure environment +\let\@oldsidewaysfigure\sidewaysfigure +\let\@oldendsidewaysfigure\endsidewaysfigure +\renewenvironment{sidewaysfigure}[1][tbp]{ + \@oldsidewaysfigure[#1]% + \begin{center}% +}{% + \end{center}% + \@oldendsidewaysfigure% + \ignorespacesafterend% +} + + +% %% ``Thesis''-prefixed duplicate commands and environments (deprecated) +% \newcommand{\thesistypeout}{\typeout{hepthesis: thesis- prefix commands are deprecated and will be removed from hepthesis v1.5 onwards}} +% \newenvironment{thesistable}{\thesistypeout\table}{\endtable\ignorespacesafterend} +% \newenvironment{thesistabular}{\thesistypeout\tabular}{\endtabular\ignorespacesafterend} +% \newenvironment{thesisfigure}{\thesistypeout\expandafter\let\expandafter\@oldoldfigurestar \csname figure*\endcsname \@oldoldfigurestar}% +% {\expandafter\let\expandafter\@oldoldendfigurestar \csname endfigure*\endcsname \@oldoldendfigurestar \ignorespacesafterend} +% \newenvironment{thesissidewaysfigure}{\thesistypeout\sidewaysfigure}{\endsidewaysfigure\ignorespacesafterend} +% \newenvironment{thesisdisplaymath}{\thesistypeout\displaymath}{\enddisplaymath\ignorespacesafterend} +% \newenvironment{thesisdisplaymath*}{\thesistypeout\expandafter\let\expandafter\@oldolddisplaymathstar \csname displaymath*\endcsname \@oldolddisplaymathstar}% +% {\expandafter\let\expandafter\@oldoldenddisplaymathstar \csname enddisplaymath*\endcsname \@oldoldenddisplaymathstar \ignorespacesafterend} +% \newenvironment{thesisequation}{\thesistypeout\equation}{\endequation\ignorespacesafterend} +% \newenvironment{thesisequation*}{\thesistypeout\expandafter\let\expandafter\@oldoldequationstar \csname equation*\endcsname \@oldoldequationstar}% +% {\expandafter\let\expandafter\@oldoldendequationstar \csname endequation*\endcsname \@oldoldendequationstar \ignorespacesafterend} +% \newenvironment{thesisdeclaration}{\thesistypeout\declaration}{\enddeclaration\ignorespacesafterend} +% \newenvironment{thesisabstract}[1][Abstract]{\thesistypeout\abstract[#1]}{\endabstract\ignorespacesafterend} +% \newenvironment{thesischapterintro}[1]{\thesistypeout\chapterintro{#1}}{\endchapterintro\ignorespacesafterend} +% \newenvironment{thesispreface}{\thesistypeout\preface}{\endpreface\ignorespacesafterend} +% \newenvironment{thesisacknowledgements}[1]{\thesistypeout\acknowledgements}{\endacknowledgements\ignorespacesafterend} +% \newenvironment{thesisfrontmatter}{\thesistypeout\frontmatter}{\ignorespacesafterend} +% \newenvironment{thesismainmatter}{\thesistypeout\mainmatter}{\ignorespacesafterend} +% \newenvironment{thesisbackmatter}{\thesistypeout\backmatter}{\ignorespacesafterend} +% \DeclareRobustCommand{\thesistitlepage}[2][]{\thesistypeout\titlepage{#1}{#2}} +% \DeclareRobustCommand{\thesisfrontquote}[2]{\thesistypeout\frontquote{#1}{#2}} +% \DeclareRobustCommand{\thesischapterquote}[2]{\thesistypeout\chapterquote{#1}{#2}} +% \DeclareRobustCommand{\thesisverysubsection}[1]{\thesistypeout\verysubsection{#1}} + +%% In-document references +\DeclareRobustCommand{\Chapter}{Chapter\xspace} +\DeclareRobustCommand{\Section}{Section\xspace} +\DeclareRobustCommand{\Appendix}{Appendix\xspace} +\DeclareRobustCommand{\Figure}{Figure\xspace} +\DeclareRobustCommand{\Table}{Table\xspace} +\DeclareRobustCommand{\Equation}{equation\xspace} +\DeclareRobustCommand{\Reference}{reference\xspace} +%% Standard way to refer to a page number +\DeclareRobustCommand{\Page}{page\xspace} + +%% Reference terms with built-in reference +\DeclareRobustCommand{\ChapterRef}[1]{\Chapter~\ref{#1}} +\DeclareRobustCommand{\SectionRef}[1]{\Section~\ref{#1}} +\DeclareRobustCommand{\AppendixRef}[1]{\Appendix~\ref{#1}} +\DeclareRobustCommand{\FigureRef}[1]{\Figure~\ref{#1}} +\DeclareRobustCommand{\TableRef}[1]{\Table~\ref{#1}} +\DeclareRobustCommand{\EquationRef}[1]{\Equation~\eqref{#1}} +\DeclareRobustCommand{\ReferenceRef}[1]{\Reference~\cite{#1}} +\DeclareRobustCommand{\PageRef}[1]{\Page~\pageref{#1}} |