% \iffalse meta-comment
%
% Transformed from uccthesis.xml by ClassPack db2dtx.xsl
% version 1.20 (2020-05-26) on Tuesday 2 June 2020 at 22:17:26
%
% uccthesis.dtx is copyright © 2010-2020 by Peter Flynn <peter@silmaril.ie>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3 of this license or (at your option) any later
% version. The latest version of this license is in:
%
%     http://www.latex-project.org/lppl.txt
%
% and version 1.3 or later is part of all distributions of
% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status ‘maintained’.
% 
% The current maintainer of this work is Peter Flynn <peter@silmaril.ie>
%
% This work consists of the files uccthesis.dtx and uccthesis.ins,
% the derived file , 
% and any other ancillary files listed in the MANIFEST.
%
% \fi
% \iffalse
%<*driver>
\ProvidesFile{uccthesis.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%<class>\ProvidesClass{uccthesis}[2020/04/29 v2.9
%<class>  Formatting for a thesis for University College Cork]
%<*driver>
\RequirePackage{fix-cm}% included by default.
\PassOptionsToPackage{svgnames}{xcolor}% xcolor/dox/hypdoc implied.
\PassOptionsToPackage{irish,british}{babel}% use of other (non-en-IE) languages
\documentclass[a4paper,12pt]{ltxdoc}
%%
%% Packages added for documentation
%%
\usepackage{dox}% used by default. (0)%
  \makeatletter
  \doxitem[idxtype=attribute]{Attribute}{CPK@attribute}{attributes}
  \makeatother
  \makeatletter
  \doxitem[idxtype=attvalue]{AttValue}{CPK@attributevalue}{attribute values}
  \makeatother
  \makeatletter
  \doxitem[idxtype=class]{Class}{CPK@class}{classes}
  \makeatother
  \makeatletter
  \doxitem[idxtype=colour]{Colour}{CPK@colour}{colours}
  \makeatother
  \makeatletter
  \doxitem[idxtype=counter]{Counter}{CPK@counter}{counters}
  \makeatother
  \makeatletter
  \doxitem[idxtype=DTD]{DTD}{CPK@dtd}{DTDs/Schemas}
  \makeatother
  \makeatletter
  \doxitem[idxtype=element]{Element}{CPK@element}{element types}
  \makeatother
  \makeatletter
  \doxitem[idxtype=entity]{Entity}{CPK@entity}{entities}
  \makeatother
  \makeatletter
  \doxitem[idxtype=error]{Error}{CPK@error}{errors}
  \makeatother
  \makeatletter
  \doxitem[idxtype=field]{Field}{CPK@field}{fields}
  \makeatother
  \makeatletter
  \doxitem[idxtype=file]{File}{CPK@file}{files}
  \makeatother
  \makeatletter
  \doxitem[idxtype=font]{Font}{CPK@font}{fonts}
  \makeatother
  \makeatletter
  \doxitem[idxtype=function]{Function}{CPK@function}{functions}
  \makeatother
  \makeatletter
  \doxitem[idxtype=language]{Language}{CPK@language}{languages}
  \makeatother
  \makeatletter
  \doxitem[macrolike,idxtype=length]{Length}{CPK@length}{lengths}
  \makeatother
  \makeatletter
  \doxitem[idxtype=mode]{Mode}{CPK@mode}{modes}
  \makeatother
  \makeatletter
  \doxitem[idxtype=option]{Option}{CPK@option}{options}
  \makeatother
  \makeatletter
  \doxitem[idxtype=package]{Package}{CPK@package}{packages}
  \makeatother
  \makeatletter
  \doxitem[idxtype=variable]{Variable}{CPK@variable}{variables}
  \makeatother
  \makeatletter
  \doxitem[idxtype=parameter]{Parameter}{CPK@parameter}{parameters}
  \makeatother
  \makeatletter
  \doxitem[macrolike,idxtype=switch]{Switch}{CPK@switch}{switches}
  \makeatother
  \makeatletter
  \doxitem[idxtype=template]{Template}{CPK@template}{templates}
  \makeatother
  \makeatletter
  \doxitem[idxtype=typeface]{Typeface}{CPK@typeface}{typefaces}
  \makeatother
  \makeatletter
  \doxitem[macrolike,idxtype=box]{Box}{CPK@box}{boxes}
  \makeatother
  \newcommand{\LabelFont}[2][\relax]{\strut
    {\fontencoding\encodingdefault
	    \fontfamily{lmtt}\fontseries{lc}#1\selectfont#2}\space}
  \makeatletter
  \let\CPK@macro\macro\let\CPK@endmacro\endmacro
  \makeatother
  \makeatletter
  \let\CPK@environment\environment\let\CPK@endenvironment\endenvironment
  \makeatother
  \makeatletter
  \def\PrintAttributeName#1{\LabelFont{@#1}}
  \makeatother
  \def\PrintAttributeValueName#1{\LabelFont{"#1"}}
  \def\PrintClassName#1{\LabelFont[\fontfamily{lmss}]{#1}}
  \def\PrintColourName#1{\LabelFont[\color{#1}]{#1}}
  \def\PrintCounterName#1{\LabelFont{#1}}
  \def\PrintDTDName#1{\LabelFont{#1}}
  \def\PrintElementName#1{\LabelFont{<#1>}}
  \def\PrintEntityName#1{\LabelFont{\&#1;}}
  \def\PrintEnvironmentName#1{\LabelFont[\fontfamily{lmss}]{#1}}
  \def\PrintErrorName#1{\LabelFont[\color{Red}!]{#1}}
  \def\PrintFunctionName#1{\LabelFont[\bfseries\itshape]{#1}}
  \def\PrintLanguageName#1{\LabelFont{#1}}
  \def\PrintLengthName#1{\LabelFont{#1}}
  \def\PrintMacroName#1{\LabelFont{#1}}
  \def\PrintModeName#1{\LabelFont[\sffamily]{\textlangle#1\textrangle}}
  \def\PrintOptionName#1{\LabelFont[\bfseries]{#1}}
  \def\PrintPackageName#1{\LabelFont[\fontfamily{lmss}]{#1}}
  \def\PrintSwitchName#1{\LabelFont{#1}}
  \def\PrintTemplateName#1{\LabelFont[\bfseries]{#1}}
  \def\PrintVariableName#1{\LabelFont[\ttfamily]{#1}}
  \def\PrintParameterName#1{\LabelFont[\ttfamily]{#1}}
  \def\PrintFieldName#1{\LabelFont[\ttfamily]{#1}}
%% fontenc omit: conflict: fontspec (3)
%% inputenc omit: conflict: fontspec (4)
\usepackage{fontspec}% part/@conformance=xelatex detected. (7)%
\usepackage{caladea}% requested by author (27)%
  \renewcommand{\textsc}[1]{{\small\MakeTextUppercase{#1}}}
\usepackage[scale=.9]{raleway}% requested by author (29)%
  \renewcommand{\textsc}[1]{{\smaller\MakeTextUppercase{#1}}}
\usepackage{mflogo}% used by default. (36)%
\usepackage{bbding}% requested by author (38)%
%% apacite omit: conflict: biblatex (39)
\usepackage[british]{babel}% used by default. (41)%
\usepackage[backend=biber,doi=true,
  isbn=true,url=true,uniquename=false,style=apa]{biblatex}% bibliography/@arch=biblatex detected. (42)%
  \makeatletter
  \AtBeginDocument{%
	    \setlength{\bibitemsep}{1ex}%
	    \setlength{\bibnamesep}{1.5\itemsep}%
	    \defbibheading{shortbib}[References]%
	      {\section{#1}}}
	  \@ifpackagewith{babel}{british}{%
	    \DeclareLanguageMapping{british}%
	      {british-apa}}{\relax}
  \makeatother
  \makeatletter
  \providetoggle{blx@skipbiblist}
  \makeatother
\usepackage{csquotes}% bibliography/@arch=biblatex detected. (44)%
\usepackage{array}% use of <tgroup> detected (47)%
\usepackage{calc}% used by default. (50)%
  \makeatletter
  {\scriptsize
	    \global\advance\@totalleftmargin by1em
	    \global\advance\MacroIndent by.5em}
  \makeatother
\usepackage{ccaption}% used by default. (53)%
  \captionnamefont{\bfseries}
  \captionstyle{\raggedright}
\usepackage[inline]{enumitem}% orderedlist/@spacing=compact detected. (57)%
  \setlist[description]{style=unboxed}
  \setlist[itemize]{leftmargin=2em}
  \setlist[enumerate]{leftmargin=2em}
  \newlist{inlineenum}{enumerate*}{1}
  \setlist[inlineenum,1]{label=\emph{\alph*}),
	    itemjoin={{; }},itemjoin*={{; and }}}
\usepackage{fancybox}% use of <note> detected (58)%
\usepackage{fancyvrb}% use of <bibliography> detected (61)%
\usepackage{relsize}% use of <acronym> detected (65)%
\usepackage{textcase}% used by default. (68)%
\usepackage{float}% used by default. (70)%
  \renewcommand{\topfraction}{.85}
  \renewcommand{\bottomfraction}{.7}
  \renewcommand{\textfraction}{.15}
  \renewcommand{\floatpagefraction}{.66}
  \renewcommand{\dbltopfraction}{.66}
  \renewcommand{\dblfloatpagefraction}{.66}
  \setcounter{topnumber}{9}
  \setcounter{bottomnumber}{9}
  \setcounter{totalnumber}{20}
  \setcounter{dbltopnumber}{9}
\usepackage[level]{fmtcount}% xref/@linkend➝varlistentry/xml:id detected. (71)%
\usepackage[a4paper,left=30mm,top=25mm,
  textwidth=150mm,textheight=225mm,headheight=15pt]{geometry}% used by default. (72)%
\usepackage{printlen}% requested by author (74)%
  \uselengthunit{mm}
\usepackage{graphicx}% imagedata/@fileref detected. (77)%
\usepackage{hypdoc}% used by default. (78)%
  \hypersetup{linkcolor=MediumBlue,urlcolor=MediumBlue,citecolor=MediumBlue}
  \ExecuteBibliographyOptions{maxcitenames=1}
  \DeclareFieldFormat{citehyperref}{%
	    \DeclareFieldAlias{bibhyperref}{noformat}% Avoid nested links
	    \bibhyperref{#1}}
  \DeclareFieldFormat{textcitehyperref}{%
	    \DeclareFieldAlias{bibhyperref}{noformat}% Avoid nested links
	    \bibhyperref{%
	    #1%
	    \ifbool{cbx:parens}
	    {\bibcloseparen\global\boolfalse{cbx:parens}}
	    {}}}
  \savebibmacro{cite}
  \savebibmacro{textcite}
  \renewbibmacro*{cite}{%
	    \printtext[citehyperref]{%
	    \restorebibmacro{cite}%
	    \usebibmacro{cite}}}
  \renewbibmacro*{textcite}{%
	    \ifboolexpr{
	    ( not test {\iffieldundef{prenote}} and
	    test {\ifnumequal{\value{citecount}}{1}} )
	    or
	    ( not test {\iffieldundef{postnote}} and
	    test {\ifnumequal{\value{citecount}}{\value{citetotal}}} )
	    }
	    {\DeclareFieldAlias{textcitehyperref}{noformat}}
	    {}%
	    \printtext[textcitehyperref]{%
	    \restorebibmacro{textcite}%
	    \usebibmacro{textcite}}}
\usepackage{listings}% use of <programlisting> detected (85)%
  \lstdefinelanguage{dummy}
	    {morekeywords={dummy}}
  \lstdefinelanguage{METAFONT}
	    {morekeywords={draw}}
  \lstdefinelanguage{BiBTeX}
	    {morestring=[s]{\{\}},morekeywords={Article,Book,
	    BookInBook,Booklet,Collection,InBook,InCollection,
	    InProceedings,InReference,MVBook,MVCollection,
	    MVProceedings,MVReference,Manual,Misc,Online,Patent,
	    Periodical,Proceedings,Reference,Report,SuppBook,
	    SuppCollection,SuppPeriodical,Thesis,Unpublished,
	    address,annote,author,booktitle,chapter,crossref,
	    edition,editor,howpublished,institution,journal,
	    key,month,note,number,organization,pages,publisher,
	    location,
	    school,institution,series,title,type,volume,year,date}}
	  
  \makeatletter
  \lstdefinelanguage{bash}
	    {morestring=[s]{[]},morekeywords={exit,logout,yes,no,@,
	    password,ssh,URL,cd,dvips,latex,ls,makeindex,man,mkdir,
	    pdflatex,sudo,texconfig,texdoc,updmap,xelatex,biber,
	    latexmk,bibtex}} 
	  
  \makeatother
  \lstdefinelanguage{LaTeXe}[LaTeX]{TeX}
	    {morekeywords = {selectlanguage,foreignlanguage,
	    textbrokenbar,textlangle,textrangle,subsection,url,
	    chapter,tableofcontents,part,subsubsection,paragraph,
	    subparagraph,maketitle,setlength,listoffigures,
	    listoftables,color,arraybackslash,includegraphics,
	    textcite,parencite,graphicspath,lstinline,
	    DeclareLanguageMapping,textcolor,definecolor,colorbox,
	    fcolorbox,RequirePackage,PassOptionsToPackage}}
	  
  \lstset{defaultdialect=LaTeXe,frame=single,
	    framesep=.5em,backgroundcolor=\color{AliceBlue},
	    rulecolor=\color{LightSteelBlue},framerule=1pt}
	  
  \lstnewenvironment{listingsdoc}
	    {\lstset{language={[LaTeX]TeX}}}
	    {}
  \newcommand\basicdefault[1]{\footnotesize
	    \color{Black}\ttfamily#1}
	  
  \lstset{basicstyle=\basicdefault{\spaceskip.5em}}
  \lstset{literate=
	    {§}{{\S}}1
	    {©}{{\raisebox{.125ex}{\copyright}\enspace}}1
	    {«}{{\guillemotleft}}1
	    {»}{{\guillemotright}}1
	    {Á}{{\'A}}1
	    {Ä}{{\"A}}1
	    {É}{{\'E}}1
	    {Í}{{\'I}}1
	    {Ó}{{\'O}}1
	    {Ö}{{\"O}}1
	    {Ú}{{\'U}}1
	    {Ü}{{\"U}}1
	    {ß}{{\ss}}2
	    {à}{{\`a}}1
	    {á}{{\'a}}1
	    {ä}{{\"a}}1
	    {é}{{\'e}}1
	    {í}{{\'i}}1
	    {ó}{{\'o}}1
	    {ö}{{\"o}}1
	    {ú}{{\'u}}1
	    {ü}{{\"u}}1
	    {¹}{{\textsuperscript1}}1
            {²}{{\textsuperscript2}}1
            {³}{{\textsuperscript3}}1
	    {ı}{{\i}}1
	    {—}{{---}}1
	    {’}{{'}}1
	    {…}{{\dots}}1
	    {➝}{{$leftarrow$}}1
            {⮠}{{$\hookleftarrow$}}1
	    {␣}{{\textvisiblespace}}1,
	    keywordstyle=\color{DarkGreen}\bfseries,
	    identifierstyle=\color{DarkRed},
	    commentstyle=\color{Gray}\upshape,
	    stringstyle=\color{DarkBlue}\upshape,
	    emphstyle=\color{Chocolate}\upshape,
	    showstringspaces=false,
	    columns=fullflexible,
	    keepspaces=true}
  \lstloadlanguages{LaTeXe,bash,METAFONT,BiBTeX,dummy}
\usepackage{makeidx}% used by default. (87)%
  \makeindex
\usepackage{multirow}% entry/@morerows detected. (92)%
\usepackage{bigdelim}% requested by author (93)%
\usepackage{nicefrac}% used by default. (94)%
  \def\textonehalf{\ensuremath{\nicefrac12}}
\usepackage{parskip}% requested by author (96)%
\usepackage{sectsty}% used by default. (99)%
  \allsectionsfont{\sffamily\raggedright}
  \renewcommand*{\descriptionlabel}[1]{\hspace\labelsep
	    \sffamily\bfseries #1}
\usepackage[normalem]{ulem}% use of <link> detected (106)%
\usepackage{url}% use of <uri> detected (107)%
  \AtBeginDocument{\urlstyle{tt}}
\usepackage{varioref}% use of <xref> detected (110)%
  \vrefwarning
  \labelformat{appendix}{Appendix~#1}
  \makeatletter
  \labelformat{chapter}{\@chapapp~#1}
  \makeatother
  \labelformat{section}{section~#1}
  \labelformat{subsection}{section~#1}
  \labelformat{subsubsection}{section~#1}
  \labelformat{paragraph}{section~#1}
  \labelformat{figure}{Figure~#1}
  \labelformat{table}{Table~#1}
  \labelformat{item}{item~#1}
  \renewcommand{\reftextcurrent}{elsewhere on this
	    page}
  \def\reftextafter{on the
	    \reftextvario{next}{following} page}
\usepackage{xcolor}% used by default. (118)%
  \makeatletter
  \@ifundefined{T}{%
	    \newcommand{\T}[2]{{\fontencoding{T1}%
	      \selectfont#2}}}{}
  \makeatother
\usepackage{menukeys}% use of <guimenu> detected (121)%
  \renewmenumacro{\menu}[>]{roundedmenus}
  \renewmenumacro{\directory}[/]{hyphenatepathswithfolder}
  \renewmenumacro{\keys}{shadowedroundedkeys}
\usepackage{classpack}[2020/05/26]% used by default. (123)%
\addbibresource{uccthesis.bib}
\hypersetup{pdfauthor={PeterFlynnPhDMICS},
        pdftitle={The uccthesis LaTeX2e document class},
        pdfsubject={Formatting for a thesis for University College Cork},
        pdfkeywords={},
        pdfproducer={XeLateX with hyperref},
        pdfcreator={XeLaTeX}}
\setmonofont[Scale=MatchLowercase]{Luxi Mono}
%
%%
%% Settings for docstrip and ltxdoc 
%%
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}\raggedright
  \DocInput{uccthesis.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{1833}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!  Double quote  \"  Hash (number) \#
%   Dollar        \$  Percent       \%  Ampersand     \&
%   Acute accent  \'  Left paren    \(  Right paren   \)
%   Asterisk      \*  Plus          \+  Comma         \,
%   Minus         \-  Point         \.  Solidus       \/
%   Colon         \:  Semicolon     \;  Less than     \<
%   Equals        \=  Greater than  \>  Question mark \?
%   Commercial at \@  Left bracket  \[  Backslash     \\
%   Right bracket \]  Circumflex    \^  Underscore    \_
%   Grave accent  \`  Left brace    \{  Vertical bar  \|
%   Right brace   \}  Tilde         \~}
% 
% \changes{v2.9}{2020/04/29}{Updated to replace options with commands: 1) removed wp and cjk options, made cite-key argument to quotation mandatory; 2) updated the student declaration; 3) made first argument of author compulsory; 4) implemented the new version of ClassPack; 5) ready for testing.}
% \changes{v2.51}{2016/08/27}{Maintenance release: New version of ClassPack.}
% \changes{v2.5}{2015/06/24}{Pre-support for additional packages: Cleaned up some maketitle code in preparation for adding support for additional packages that need to generate ToC lines (eg nomenclature).}
% \changes{v2.4}{2014/09/22}{Experiment with biblatex for DAH: Adding MLA support.}
% \changes{v2.3}{2014/09/21}{Added doc on resetbibstyle: Coping with LaTeX and BibTeX styles, and MLA's need for PassOptionsToPackage.}
% \changes{v2.2}{2014/08/06}{Added DAH: Digital Arts and Humanities.}
% \changes{v2.1}{2014/06/29}{Revised for new regulations: Changed to 12pt.}
% \changes{v1.21}{2014/06/26}{Adjusted top and bottom margins: This allows less room at the top and more at the bottom.}
% \changes{v1.20}{2014/06/24}{Added availability to maketitle: Used for links to epub version.}
% \changes{v1.19}{2014/05/30}{Fixed bug in automated LOF/LOT: Added separate counters, incremented by endtable and endfigure (thanks to Malcolm Prinn of the Tyndall Institute for finding this bug).}
% \changes{v1.18}{2014/03/08}{Split options tables into two chapters: Refactored code for updated ClassPack.}
% \changes{v1.17}{2014/01/27}{Added switch to force apacite to load after hyperref: And removed the data, as the problem is fixed, but retained the code.}
% \changes{v1.16}{2013/11/19}{Added switch to fix Head of Dept/School: .}
% \changes{v1.15}{2013/11/12}{Added method to change tocdepth: .}
% \changes{v1.14}{2013/11/12}{Changed prelims to onehalfspacing: .}
% \changes{v1.13}{2013/10/02}{Added detection for glossaries package: .}
% \changes{v1.12}{2013/07/25}{Fixed double-sided: .}
% \changes{v1.11}{2013/07/23}{Removed from auto-maketitle and put in start of part or chapter: .}
% \changes{v1.10}{2013/07/09}{Added twoside option: Some people need to print bindable two-sided copies of long theses..}
% \changes{v1.09}{2013/07/06}{Corrected locations for installation in build file: Distinct directories for different embedded filetypes; also updated BIS to use APA.}
% \changes{v1.08}{2013/06/04}{Added short title to main title: Use the @title and @@title.}
% \changes{v1.07}{2013/05/06}{Reorganisation of implementations sections: 1) Addition of crest files, changes to description lists; 2) Added commands to override options.}
% \changes{v1.06}{2013/03/27}{Changes to bibrefs: Physics changed to ieeetr; resetbibstyle updated.}
% \changes{v1.05}{2013/03/23}{Updated for autopackage: General revision of packages; removed flag-protectors like mode="kernel".}
% \changes{v1.04}{2013/02/08}{Changes to quotations: Spacing of instep citation was not flush to margin.}
% \changes{v1.03}{2012/12/18}{Renamed Bibliography to References: Following suggestion from Ehsan Sooudi of Tyndall..}
% \changes{v1.02}{2012/11/22}{Added revision date facility for drafts: Added @revdate and revdate; if present in drafts, they supersede the default TODAY date..}
% \changes{v1.01}{2012/07/28}{Updated installation instructions: Added detail about installing the crest..}
% \changes{v1.00}{2012/06/11}{Added new code for citations in quotations: This tucks citations into the remaining space of the last line where possible..}
% \changes{v0.99}{2012/04/07}{Added tracing to bibliography: Reset page margins to allow printing on inkjets with restricted paper-handling.}
% \changes{v0.98}{2012/04/02}{Tidying up packages: Removed xcolor and ulem.}
% \changes{v0.97}{2012/03/31}{Experimenting with mdiss option for dissertations: Minor Dissertation option.}
% \changes{v0.96}{2012/03/16}{Rewrite of XML for new version of classpack: Changed method of specification of packages.}
% \changes{v0.95}{2011/08/21}{Reinforced wording of justification option: Justification option was open to misinterpretation..}
% \changes{v0.94}{2011/08/05}{Fixed incorrect recording of justification option: Justification option was not resetting indentation and paragraph spacing..}
% \changes{v0.93}{2011/06/10}{More bugs reported by testers: 1) Re-placed refloating to put captions under figures (already above tables).; 2) Enclosed footmisc in ifjustified to defeat ragged footnotes; moved ragged redefinition of captions to do the same.; 3) Added plainheaders option to avoid fancy headers.; 4) Added indented option to revert to indented/unspaced paragraphs.; 5) Added stable option to footmisc to allow footnotes in chapter and section headings..}
% \changes{v0.92}{2011/05/22}{Bugs reported by testers: 1) Added code to automate detection of use of tables and figures, and disable LoT and LoF accordingly.; 2) Added nolot and nolof options to manually disable automated Lists of Tables and Figures.; 3) Replaced the harvard package reference with natbib and har2nat, because harvard on its own was invoking html and breaking on an undefined htmladdnormallink* command (thanks to Dan Luecking, Mico Loretan, and others for this).; 4) Corrected misspelling of Sociology..}
% \changes{v0.91}{2011/05/10}{Changes after first release: 1) Added justified option; 2) Implemented 10/11/12 point size options; 3) Changed proportions of the page for floats.}
% \changes{v0.90}{2011/04/07}{Last changes before release: 1) Added all known degrees; 2) Updated bibliographic reference styles for those schools and departments who responded to the request; 3) Fixed text-wrapping error in footers and headers.}
% \changes{v0.70}{2010/05/22}{First working version derived from the author's personal thesis class.: Added running headers and footers.}
%
% \GetFileInfo{uccthesis.dtx}
%
% \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty}
% \DoNotIndex{\@flushglue,\@gobble,\@input,\@makefnmark}
% \DoNotIndex{\@makeother,\@maketitle,\@namedef,\@ne}
% \DoNotIndex{\@spaces,\@tempa,\@tempb,\@tempswafalse}
% \DoNotIndex{\@tempswatrue,\@thanks,\@thefnmark,\@topnum}
% \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa}
% \DoNotIndex{\@totalleftmargin,\",\/,\@ifundefined,\@nil}
% \DoNotIndex{\@verbatim,\@vobeyspaces,\|,\~,\ ,\active}
% \DoNotIndex{\advance,\aftergroup,\begingroup,\bgroup}
% \DoNotIndex{\mathcal,\csname,\def,\documentstyle}
% \DoNotIndex{\dospecials,\edef,\egroup,\else,\endcsname}
% \DoNotIndex{\endgroup,\endinput,\endtrivlist}
% \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef}
% \DoNotIndex{\global,\hbox,\hss,\if,\if@inlabel}
% \DoNotIndex{\if@tempswa,\if@twocolumn,\ifcase,\ifcat}
% \DoNotIndex{\iffalse,\ifx,\ignorespaces,\index,\input}
% \DoNotIndex{\item,\jobname,\kern,\leavevmode,\leftskip}
% \DoNotIndex{\let,\llap,\lower,\m@ne,\next,\newpage}
% \DoNotIndex{\nobreak,\noexpand,\nonfrenchspacing}
% \DoNotIndex{\obeylines,\or,\protect,\raggedleft}
% \DoNotIndex{\rightskip,\rm,\sc,\setbox,\setcounter}
% \DoNotIndex{\small,\space,\string,\strut,\strutbox}
% \DoNotIndex{\thefootnote,\thispagestyle,\topmargin}
% \DoNotIndex{\trivlist,\tt,\twocolumn,\typeout,\vss,\vtop}
% \DoNotIndex{\xdef,\z@,\,,\@bsphack,\@esphack,\@noligs}
% \DoNotIndex{\@vobeyspaces,\@xverbatim,\`,\catcode,\end}
% \DoNotIndex{\escapechar,\frenchspacing,\glossary}
% \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht}
% \DoNotIndex{\it,\langle,\leaders,\long,\makelabel}
% \DoNotIndex{\marginpar,\markboth,\mathcode,\mathsurround}
% \DoNotIndex{\mbox,\newcount,\newdimen,\newskip}
% \DoNotIndex{\nopagebreak,\parfillskip,\parindent}
% \DoNotIndex{\parskip,\penalty,\raise,\rangle,\section}
% \DoNotIndex{\setlength,\TeX,\topsep,\underline,\unskip}
% \DoNotIndex{\verb,\vskip,\vspace,\widetilde,\\,\%,\@date}
% \DoNotIndex{\@defpar,\[,\{,\},\],\count@,\ifnum,\loop}
% \DoNotIndex{\today,\uppercase,\uccode,\baselineskip}
% \DoNotIndex{\begin,\tw@,\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k}
% \DoNotIndex{\l,\m,\n,\o,\p,\q,\r,\s,\t,\u,\v,\w,\x,\y,\z}
% \DoNotIndex{\A,\B,\C,\D,\E,\F,\G,\H,\I,\J,\K,\L,\M,\N,\O}
% \DoNotIndex{\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z,\1,\2,\3,\4}
% \DoNotIndex{\5,\6,\7,\8,\9,\0,\!,\#,\$,\&,\',\(,\)}
% \DoNotIndex{\+,\.,\:,\;,\<,\=,\>,\?,\_,\discretionary}
% \DoNotIndex{\immediate,\makeatletter,\makeatother}
% \DoNotIndex{\meaning,\newenvironment,\par,\relax}
% \DoNotIndex{\renewenvironment,\repeat,\scriptsize}
% \DoNotIndex{\selectfont,\the,\undefined,\arabic,\do}
% \DoNotIndex{\makeindex,\null,\number,\show,\write,\@ehc}
% \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title}
% \DoNotIndex{\everypar,\if@minipage,\if@restonecol,\ifeof}
% \DoNotIndex{\ifmmode,\lccode,\newtoks,\onecolumn,\openin}
% \DoNotIndex{\p@,\SelfDocumenting,\settowidth}
% \DoNotIndex{\@resetonecoltrue,\@resetonecolfalse,\bf}
% \DoNotIndex{\clearpage,\closein,\lowercase,\@tempdima}
% \DoNotIndex{\@inlabelfalse,\selectfont,\mathcode}
% \DoNotIndex{\newmathalphabet,\rmdefault,\bfdefault}
% \DoNotIndex{\DeclareRobustCommand,\@ifpackagewith}
% \DoNotIndex{\htmladdnormallink*}
% \DoNotIndex{\mybibstyle}
% \DoNotIndex{\degree}
% \DoNotIndex{\author}
% \DoNotIndex{\prelim}
% \DoNotIndex{\documentclass}
% \DoNotIndex{\usepackage}
% \DoNotIndex{\appendix}
% \DoNotIndex{\project}
% \DoNotIndex{\maketitle}
% \DoNotIndex{\title}
% \DoNotIndex{\date}
% \DoNotIndex{\subtitle}
% \DoNotIndex{\professor}
% \DoNotIndex{\hod}
% \DoNotIndex{\supervisor}
% \DoNotIndex{\supervisors}
% \DoNotIndex{\college}
% \DoNotIndex{\school}
% \DoNotIndex{\department}
% \DoNotIndex{\discipline}
% \DoNotIndex{\qualifications}
% \DoNotIndex{\institute}
% \DoNotIndex{\centre}
% \DoNotIndex{\unit}
% \DoNotIndex{\hospital}
% \DoNotIndex{\volume}
% \DoNotIndex{\sponsor}
% \DoNotIndex{\revdate}
% \DoNotIndex{\ListOf...}
% \DoNotIndex{\prelim*}
% \DoNotIndex{\refsec}
% \DoNotIndex{\part}
% \DoNotIndex{\chapter}
% \DoNotIndex{\label}
% \DoNotIndex{\ref}
% \DoNotIndex{\pageref}
% \DoNotIndex{\textbf}
% \DoNotIndex{\bfseries}
% \DoNotIndex{\section}
% \DoNotIndex{\subsection}
% \DoNotIndex{\subsubsection}
% \DoNotIndex{\paragraph}
% \DoNotIndex{\subparagraph}
% \DoNotIndex{\cite}
% \DoNotIndex{\parencite}
% \DoNotIndex{\textcite}
% \DoNotIndex{\footcite}
% \DoNotIndex{\EUR}
% \DoNotIndex{\raggedright}
% \DoNotIndex{\texteuro}
% \DoNotIndex{\sloppy}
% \DoNotIndex{\raggedbottom}
% \DoNotIndex{\class@mode}
% \DoNotIndex{\iflot}
% \DoNotIndex{\iflof}
% \DoNotIndex{\today}
% \DoNotIndex{\ifjustified}
% \DoNotIndex{\ifindented}
% \DoNotIndex{\iffancy}
% \DoNotIndex{\parbox}
% \DoNotIndex{\chaptermark}
% \DoNotIndex{\sectionmark}
% \DoNotIndex{\ps@headings}
% \DoNotIndex{\TODAY}
% \DoNotIndex{\availability}
% \DoNotIndex{\annotation}
% \DoNotIndex{\UCC@submission}
% \DoNotIndex{\ifoptarg}
% \DoNotIndex{\sourceatright}
% \DoNotIndex{\abovecaptionskip}
% \DoNotIndex{\belowcaptionskip}
% \DoNotIndex{\vstrut}
%
% \def\fileversion{2.9}
% \def\filedate{2020/04/29}
% \title{The  \textsf{uccthesis} \LaTeXe\ document class\thanks{%
% This document corresponds to \textsf{uccthesis}
% \textit{v.}\ \fileversion π, dated \filedate.}
% \\[1em]\Large 
% Formatting for a thesis for University College Cork}
% \author{Peter Flynn PhD MICS\\\normalsize Silmaril Consultants\\[-.25ex]\normalsize Textual Therapy Division\\\normalsize(\url{peter@silmaril.ie})}
% \maketitle
% \renewcommand{\abstractname}{Summary}\thispagestyle{empty}
% \begin{abstract}
% \parskip=0.5\baselineskip
% \advance\parskip by 0pt plus 2pt
% \parindent=0pt% \noindent
% This is a \LaTeX{} document class for typesetting theses at
% University College Cork, according to the layout rules
% specified by the Graduate
% Studies Office at \href{https://www.ucc.ie/en/study/postgrad/currentresearchstudents/thesis/formatofe-thesis/}{\nolinkurl{https://www.ucc.ie/en/study/postgrad/currentresearchstudents/thesis/formatofe-thesis/}}.\par
% These rules (especially the naming of degrees and the
% disciplines within which they are granted) are subject to
% change from time to time, so before using this software,
% please check to see if there is an updated version.\par
% This version removes the use of document class options to
% identify the type of degree and the name of college, school,
% or department. These key metadata
% {\sffamily {\smaller MUST}} now be specified only with
% the commands provided in earlier versions. Most importantly,
% the specification of bibliographic style for citation and
% reference is no longer automatic and
% {\sffamily {\smaller MUST}} be given in
% commands.\par
% You need a copy of the \LaTeX{} software and a suitable
% editor on your computer in order to use this document class.
% If you are new to \LaTeX{}, please ensure that you read the
% documentation at \href{http://latex.silmaril.ie/formattinginformation/}{\nolinkurl{http://latex.silmaril.ie/formattinginformation/}} 
% before starting work. If you have already started writing with
% some other software, it can probably be converted to \LaTeX{}
% (see the section on conversion in the documentation).\par
% \end{abstract}
% \clearpage
% \tableofcontents
% \subsection*{Note on required and optional features}
% In this document, the keywords
%     {\sffamily {\smaller MUST}}, {\sffamily {\smaller MUST NOT}}, {\sffamily {\smaller REQUIRED}},
%     {\sffamily {\smaller SHALL}}, {\sffamily {\smaller SHALL NOT}}, {\sffamily {\smaller SHOULD}},
%     {\sffamily {\smaller SHOULD NOT}},
%     {\sffamily {\smaller RECOMMENDED}},
%     {\sffamily {\smaller MAY}}, and
%     {\sffamily {\smaller OPTIONAL}} have a specific
%     meaning when shown in {\sffamily {\smaller THIS TYPESTYLE}}, and
%     {\sffamily {\smaller MUST}} be interpreted as described in
%     RFC 2119 \parencite{rfc2119}.\par
% When shown in normal type, these words keep their conventional
%     contextual degree of meaning.\par
% \clearpage
% \section*{Latest changes}
% \subsection*{v.2.9 (2020-04-29)}
% \paragraph*{Updated to replace options with commands}
% \begin{itemize}
% \item removed wp and cjk options, made cite-key argument
% to quotation mandatory\par
% \item updated the student declaration\par
% \item made first argument of author compulsory\par
% \item implemented the new version of ClassPack\par
% \item ready for testing\par
% \end{itemize}
% \subsection*{v.2.51 (2016-08-27)}
% \paragraph*{Maintenance release}
% \begin{itemize}
% \item New version of ClassPack\par
% \end{itemize}
% \subsection*{v.2.5 (2015-06-24)}
% \paragraph*{Pre-support for additional packages}
% \begin{itemize}
% \item Cleaned up some maketitle code in preparation for
%     adding support for additional packages that need to
%     generate ToC lines (eg nomenclature)\par
% \end{itemize}
% \subsection*{v.2.4 (2014-09-22)}
% \paragraph*{Experiment with biblatex for DAH}
% \begin{itemize}
% \item Adding MLA support\par
% \end{itemize}
% \par\bigskip See p.\thinspace\pageref{changehistory} for earlier changes.
% \clearpage\null\vfill\begingroup\centering
% To struggling authors everywhere\par
% \par\endgroup\vfill
% \clearpage\section*{Acknowledgements}\addcontentsline{toc}{subsection}{Acknowledgements}
% My thanks again go to all the people who have kept me
% supplied with solutions to formatting problems which I have
% been able to incorporate into this package.\par
% Thank you also to the inhabitants of the \href{news:comp.text.tex}{\nolinkurl{news:comp.text.tex}} Usenet newsgroup and the
% \href{http://tex.stackexchange.com}{\nolinkurl{http://tex.stackexchange.com}} forum for
% answering my questions, and for their work in writing and
% maintaining all the packages on which this class
% depends.\par
% Most of all, thanks to the patient students of UCC who
% waited for me to finish this revision. It's been a long time
% coming, due to several factors including my retirement from
% active service in {\smaller UCC} and most recently the
% arrival of the {\smaller COVID–19} virus.\par
% \clearpage\section*{What's new?}\addcontentsline{toc}{subsection}{What's new?}
% As previously notified on the {\smaller UCC} \href{https://lists.ucc.ie/tex-users.html}{tex-users
%   mailing list}, the main changes are:\par
% \begin{description}[style=unboxed]
% \item[\XeLaTeX{}\thinspace:]This document class has been updated to use the
%       \XeLaTeX{} processor instead of
%       \emph{pdflatex}. It still creates a
%       {\smaller PDF}, but uses
%       {\smaller UTF-8} so you no longer need to escape
%       accented letters like \verb|\'e| but
%       just type é, and you can now use any of your installed
%       fonts, not just the ones that come with \TeX{}.\par
% The document class also uses
%       \textsf{biblatex} and
%       \emph{biber} instead of the old
%       \emph{bibtex} and
%       {\ttfamily{}.bst} files (see ‘\textbf{References and citations}’, the last item in this list).\par
% You need to set your \LaTeX{} editor to use the
%       \XeLaTeX{} processor instead of
%       \emph{pdflatex}, and
%       \emph{biber} instead of
%       \emph{bibtex}.\par
% \item[Affiliation\thinspace:]You no longer have to specify your type of degree
%       and your college/school/department/discipline
%       affiliation in document class options. Instead, you use
%       the commands which were introduced in version 1.07, like
%       \verb|\degree{PhD}|,
%       \verb|\college{med}|, and
%       \verb|\school{Applied Psychology}| (see \vref{primaffil}). This means that as
%       {\smaller UCC} continues to change its
%       structure, the document class doesn't need reprogramming
%       every time.\par
% \item[References and citations\thinspace:]\label{bibchanges}The way bibliography styles were tied to departments
%       and schools has been abolished.\footnote{%
% This was done because the removal of the
%   option-based selection of affiliation above also
%   meant the removal of the automatic assignment of
%   bibliographic style. There was no consensus within
%   disciplines, let alone between departments or even
%   supervisors within a department as to what style to
%   use, which made such automation pointless.\par} Instead, you specify the style and the name
%       of your \BibTeX{} file with a single new command,
%       {\ttfamily{}\textbackslash{}mybibstyle} (see \vref{bibstyle}), which lets you specify the
%       (optional) type of sorting, the style (numeric, alpha,
%       or authoryear), and the name of your
%       {\ttfamily{}.bib} file. \emph{You do not
% need to make any changes to your \BibTeX{}
% files.}\par
% As mentioned above, bibliographic citation and
%       reference will use the \textsf{biblatex}
%       package and the \emph{biber} program
%       instead of the obsolescent
%       \emph{bibtex} program and old
%       {\ttfamily{}.bst} style files. This is much more
%       up-to-date and flexible, and you can specify changes to
%       styling much more easily than with the old
%       system.\par
% \end{description}
% There is also a minor change to the way the citation for a
% quotation or epigraph is done: see details \vpageref{epigraph}.\par
% The Change History is \vpageref{changehistory}, which lists the stages of
% development, and the Index lists every \TeX{} and \LaTeX{}
% command that I have used or added in the class.
% Technically-minded authors can examine the commented
% listing in \vref{implementation}: to see how it
% works.\par
% This class is distributed on {\smaller CTAN} as a
% normal \LaTeX{} package but is also available from \href{http://latex.silmaril.ie/packages/uccthesis}{the
%   Silmaril web site} in the standard
% {\smaller TDS} format zip file with the documentation
% and class file ready to use, so you can unzip it straight into
% your Personal \TeX{} Directory and start work immediately (see
% \vref{ptd}). If you use the {\smaller CTAN}
% zip file in order to put things in place manually, please read
% the installation instructions in \vref{installation}.\par
% \subsection*{Main differences from \LaTeX{}'s default classes}
% If you have used \LaTeX{} before, you should be aware of
%   these changes:\par
% \begin{itemize}
% \item You {\sffamily {\smaller MUST}} start your
%       document by declaring the document class
%       \index{uccthesis=\textsf{uccthesis} (class)}\textsf{uccthesis} instead of
%       \index{article=\textsf{article} (class)}\textsf{article},
%       \index{book=\textsf{book} (class)}\textsf{book}, or
%       \index{report=\textsf{report} (class)}\textsf{report} (details \vpageref{setup})\par
% \item You {\sffamily {\smaller MUST}} identify the
%       college within {\smaller UCC} which is granting
%       your degree, and your school or department 
%       within it, using the commands provided for the
%       purpose\par
% \item You {\sffamily {\smaller MUST}} identify the
%       degree for which you are submitting the thesis (eg
%       {\smaller PHD}, {\smaller MA}, etc)
%       using the {\ttfamily{}\textbackslash{}degree} command\par
% \item You {\sffamily {\smaller MUST}} identify
%       your Supervisor[s] and Professor (Head of School or
%       Department) using the commands provided\par
% \item You {\sffamily {\smaller MUST}} give your
%       title and date in the normal way for any
%       \LaTeX{} document; the {\ttfamily{}\textbackslash{}author} command
%       is slightly different: there are
%       \emph{two} arguments, one for your student
%       number and one for your name.\par
% \item The Table of Contents, List of Figures (if used),
%       List of Tables (if used), and Declaration are all
%       automated: you {\sffamily {\smaller MUST NOT}}
%       include commands for these yourself (see \vref{docstruct})\par
% \item There are new environments
%       \texttt{acknowledgements} and
%       \texttt{dedication}, and a
%       {\ttfamily{}\textbackslash{}prelim} (titling) command for
%       explanatory sections, if you need them, before your
%       first Part or Chapter (see \vref{prelims})\par
% \item There is an \texttt{epigraph} (cited
%       quotation) environment which you can use immediately
%       after a chapter title (see
%       ‘\textbf{The \texttt{epigraph} environment}’, the first item in the list in \vref{epigraph})\par
% \item The \texttt{quotation} environment now has an
%       optional argument for a \BibTeX{} citation key (see ‘\textbf{The \texttt{quotation} environment}’, the second item in the list in \vref{quotation})\par
% \item The default format is draft-mode,
%       1\nicefrac12-line-spaced, unjustified text, no indentation,
%       and a line-space between paragraphs. These defaults
%       (except draft mode) are set to maximise readability,
%       but can be changed via class options: see the list in
%       \vref{moreopts}\par
% \item Some 30 or so packages are preloaded according to
%       the options you choose: see \vref{preloaded}. You {\sffamily {\smaller SHOULD NOT}} re-specify any of these if they
%       have already been loaded\par
% \end{itemize}
% \clearpage\section*{Introduction to \LaTeX{}}\addcontentsline{toc}{subsection}{Introduction to \LaTeX{}}\label{intro}
% \LaTeX{} is a document preparation system for the \TeX{}
% typesetting program. It is designed to automate all the tedious
% and repetitive tasks of preparing a document, freeing authors to
% concentrate on their writing.\par
% While it can also be used for almost any typesetting task,
% it is ideal for long or complex documents (the two are not
% necessarily synonymous), especially for documents with a
% well-defined structure such as books, articles, journals,
% theses, reports, white papers, and manuals.\par
% Although it originally came from the disciplines of
% mathematics and computing science, it is nowadays equally at
% home in the Humanities, thanks to the enormous range of
% add-ons or plug-ins (`document classes' and
% `packages'), and the extensive range of
% typefaces, which extend the basic typesetting capabilities
% into hundreds of specialist areas and formatting
% requirements.\par
% \par\begingroup
%   \fboxsep1em\centering
%   \fbox{\begin{minipage}{0.8\columnwidth}\sffamily
%  \raggedright\parindent0pt
%  \parskip=.5\baselineskip
% \subsubsection*{\sffamily What You Got Is What You Gave Me}
% \LaTeX{} is a typesetter, not a wordprocessor. It has no
%   graphical interface of its own~--- instead, you can choose
%   one of many \LaTeX{} editors available, or use your own
%   favourite plaintext editor.\par
% \LaTeX{} works by formatting your text according to how
%   you have labelled it. If you label some text as a section
%   title, that is how it will be formatted. If you mislabel it,
%   \LaTeX{} cannot guess how you really wanted it: you have to
%   tell it.\par
% \end{minipage}}\par\endgroup
% Full installations of \TeX{} are available for download at
% \href{http://www.tug.org/interest.html#free}{\nolinkurl{http://www.tug.org/interest.html\#free}}
% from the \TeX{} Users Group or a local user group.\par
% \subsection*{Documentation and training}
% If you haven't used \LaTeX{} before, you should read the
%   online beginners' guide, “Formatting Information” \parencite{fi} from
%   \href{http://latex.silmaril.ie/formattinginformation/}{\nolinkurl{http://latex.silmaril.ie/formattinginformation/}}, 
%   and install the latest version of \TeX{} from \href{http://www.tug.org/interest.html#free}{\nolinkurl{http://www.tug.org/interest.html\#free}}. UCC
%   may be a TUG member, in which case the DVD can be obtained
%   from the Computer Centre. The software is free in both
%   senses: free of restrictions (it can be copied and given
%   away); and also free of charge.\par
% \begin{itemize}
% \item Unix and GNU/Linux users do not normally need the
%       DVD: the software can be installed online as
%       \href{texlive-full}{\nolinkurl{texlive-full}} from each distribution's own
%       archive or Software Centre (eg
%       \emph{yum},
%       \emph{rpm},
%       \emph{apt},
%       \emph{Synaptic}, etc). A choice of
%       editors and viewers is available the same way.\par
% \item Apple Mac users should use the DVD or download the
%       latest \href{MacTeX.mpkg.zip}{\nolinkurl{MacTeX.mpkg.zip}} from
%       \href{http://tug.org/mactex/}{\nolinkurl{http://tug.org/mactex/}} (about 1.5Gb);
% \item Windows users should use the DVD and select the
%       \emph{Pro\TeX{}t}
%       distribution. Details of how to do this are in
%       “Formatting Information” \parencite{fi}.
% \end{itemize}
% The Training Centre may hold occasional 1--day
%   beginners' courses in \LaTeX{}: contact \href{tcentre@ucc.ie}{\nolinkurl{tcentre@ucc.ie}} for details.\par
% \subsection*{\LaTeX{} support (questions about \LaTeX{} itself, not
%   about the \index{uccthesis=\textsf{uccthesis} (class)}\textsf{uccthesis} document
%   class)}
% \TeX{} and \LaTeX{} are strongly supported by millions of
%   users worldwide, and by the teams of developers organised
%   around the \TeX{} Users Group and other users groups around
%   the world.\par
% There are therefore lots of places you can ask or search
%   for help, depending on how common or rare your query is.
%   Before you post a question on a web site or mailing list or
%   newsgroup, make sure you are providing enough information
%   for people to understand what you are trying to do. Best of
%   all, have a minimal example that you can upload, that
%   demonstrates what you want, or how what you are trying
%   doesn't work.\par
% \begin{enumerate}
% \item The \TeX{} FAQ maintained by the UK \TeX{} Users Group
%       on behalf of the worldwide \TeX{} community at \href{http://www.tex.ac.uk/faq}{\nolinkurl{http://www.tex.ac.uk/faq}}~--- always
%       try here first, to make sure you're not asking something
%       that a million people before you have asked\par
% \item The UCC \LaTeX{} mailing list \href{tex-users@lists.ucc.ie}{\nolinkurl{tex-users@lists.ucc.ie}}~--- this is
%       open to all: those who go on the 1--day course are
%       automatically added; anyone can join at \href{http://lists.ucc.ie/tex-users.html}{\nolinkurl{http://lists.ucc.ie/tex-users.html}}\par
% \item The island-wide public mailing list \href{italic-l@listserv.heanet.ie}{\nolinkurl{italic-l@listserv.heanet.ie}} for the
%       Irish \TeX{} And \LaTeX{} In-print Community at \href{http://listserv.heanet.ie/italic-l.html}{\nolinkurl{http://listserv.heanet.ie/italic-l.html}}\par
% \item The Usenet newsgroup \href{comp.text.tex}{\nolinkurl{comp.text.tex}} (ask your ISP for access,
%       or use the Google Groups interface). This is the
%       principal technical forum, monitored by the designers
%       and developers. High-volume (which is why it's a
%       newsgroup, not a web site or mailing list), but full of
%       information\par
% \item A native Google Group called
%       {\ttfamily{}latexusersgroup@gmail.com}\par
% \item Hundreds of web sites, led by the excellent \href{tex.stackexchange.com}{\nolinkurl{tex.stackexchange.com}}, whose searchable
%       archive and votable answers make it heavily used\par
% \item Online and on paper: \emph{TUGboat},
%       the quarterly journal of the \TeX{} Users Group.
%       Reference copies are available in UCC; email \href{latex@ucc.ie}{\nolinkurl{latex@ucc.ie}} or check the index at
%       \href{http://tug.org/tugboat/}{\nolinkurl{http://tug.org/tugboat/}}.\par
% \item Dozens of languages and cultures have \TeX{} users
%       groups for communication, development of their own
%       typefaces and resources: see the list at \href{http://tug.org/usergroups.html}{\nolinkurl{http://tug.org/usergroups.html}}\par
% \end{enumerate}
% \clearpage\section*{Terminology}\addcontentsline{toc}{subsection}{Terminology}\label{terms}
% \TeX{} and \LaTeX{} terminology and appearances used in
% this document are highlighted in the following ways:\par
% \begin{itemize}
% \item The names of class options and package options are
%     shown in \textbf{\texttt{bold monospace type}};\\ Example: \textbf{\texttt{draft}}\par 
% \emph{Class options} are the ones you
%     use in the {\ttfamily{}\textbackslash{}documentclass} (first) line
%     of your document; \emph{package options} are
%     the ones you use in {\ttfamily{}\textbackslash{}usepackage} commands
%     in your Preamble. Class and package options always go in
%     [square brackets] between the command and the curly brace
%     of the argument.\par
% \item The names of document classes
%     and packages are shown in \textsf{sans-serif type};\\
%     Example: \textsf{xcolor};
% \item The names of \LaTeX{} commands are in normal
%     {\ttfamily{}monospace type and start with a backslash};\\ Example:
%     {\ttfamily{}\textbackslash{}appendix};
% \item Where it is important to show the arguments that a
%     command may take, they are shown mnemonically in angled
%     brackets; this means you must replace them with meaningful
%     values of your own:\\ Examples: {\ttfamily{}\textbackslash{}prelim}\marg{title},\quad{\ttfamily{}\textbackslash{}project}\oarg{option}\marg{name};
% \item The names of environments are
%     in normal \texttt{monospace type};\\ Example: \texttt{dedication}.
% \end{itemize}
% Commands and environments are also shown in the margin,
% if specially relevant, and can be found in the Index.\par
% The keywords {\sffamily {\smaller MUST}},
% {\sffamily {\smaller MUST NOT}},
% {\sffamily {\smaller REQUIRED}},
% {\sffamily {\smaller SHALL}}, {\sffamily {\smaller SHALL NOT}}, {\sffamily {\smaller SHOULD}},
% {\sffamily {\smaller SHOULD NOT}},
% {\sffamily {\smaller RECOMMENDED}},
% {\sffamily {\smaller MAY}}, and
% {\sffamily {\smaller OPTIONAL}} have a specific
% meaning when shown in {\sffamily {\smaller THIS TYPESTYLE}}, following the specification in
% RFC 2119 \parencite{rfc2119}.\par
% \clearpage
% \section{Installation}\label{installation}
% You {\sffamily {\smaller MUST}} have a full \TeX{}
% system installed before you can use this document class.
% \LaTeX{} is a part of every full \TeX{} installation.  Please
% see the introduction \vref{intro} for details.\par
% This class {\sffamily {\smaller SHOULD}} be
% installed in the same way as any other add-on \LaTeX{} package
% or document class: \emph{in your Personal \TeX{}
%   Directory} as described in \vref{ptd}.
% Do \emph{not}, repeat
% {\sffamily {\smaller NOT}}, install this class into
% any of the main \TeX{} folders used by your \TeX{} system
% installation because that will be overwritten when it
% updates.\par
% If this is the first time you have installed a package or
% class like this, or if you haven't yet set up your Personal
% \TeX{} Directory, see \vref{ptd} first.\par
% Installation on shared (multiuser) systems is different:
% see the instructions for systems administrators in \vref{shared}.\par
% \paragraph*{Instructions for personal users}
% \begin{enumerate}
% \item Download the \textsf{uccthesis} document class zip file from
%     the link in \href{http://research.ucc.ie/latex/}{\nolinkurl{http://research.ucc.ie/latex/}}. This is
%     only accessible from {\smaller UCC} {\smaller IP} addresses;
% \item Unzip the {\ttfamily{}uccthesis-n.nn.tds.zip}
%     file directly into your Personal \TeX{} Directory.\par
% If you don't yet have a Personal \TeX{} Directory,
%     create one now (instructions below);
% \item Users of \emph{MiK\TeX{}} on
%     Windows {\sffamily {\smaller MUST}} update the
%     {\smaller FNDB}\index{FNDB} after installation (see the list `Updating the FileName DataBase' in \vref{update-fndb}), otherwise \LaTeX{} will not
%     find the new files.
% \end{enumerate}
% {\smaller UCC} users
% {\sffamily {\smaller MUST}} also download and install
% the \textsf{ucccrest} from \href{http://research.ucc.ie/latex/#uccclasses}{\nolinkurl{http://research.ucc.ie/latex/\#uccclasses}}
% (in section 2.4.1). This is only accessible from
% {\smaller UCC} {\smaller IP} addresses, as the
% crest is restricted to {\smaller UCC} users. You unzip
% this file into your Personal \TeX{} Directory in the same way
% as for the document class above.\par
% \subsection{Your Personal \TeX{} Directory}\label{ptd}
% If you don't have a Personal \TeX{} Directory yet, you
%   {\sffamily {\smaller SHOULD}} create one now. The
%   place for it is different on Apple Mac,
%   {\smaller UNIX} and {\smaller GNU}/Linux,
%   and Windows systems:\par
% \par\medskip{\sffamily\small\label{crefol}
% \begingroup
% \centering
% \begin{tabular}{@{}%
% 	l<{\CPKpoststrut\arraybackslash}%
% 	l<{\CPKpoststrut\arraybackslash}%
% 	@{}}
% \multicolumn{1}{@{}>{\raggedright{}\CPKprestrut}b{\widthof{Operating Systems}}<{\CPKpoststrut\arraybackslash}}{\sffamily\bfseries Operating System}&\multicolumn{1}{>{\raggedright{}\CPKprestrut}b{\widthof{Location of your Personal \TeX{} Directorys}}<{\CPKpoststrut\arraybackslash}@{}}{\sffamily\bfseries Location of your Personal \TeX{}
%   Directory}\\[2pt]\hline
% \CPKvstrut
% Apple Macintosh
% {\smaller OS X}&\url{~/Library/texmf}\\
% {\smaller UNIX} and
%   {\smaller GNU}/Linux&\url{~/texmf}\\
% Microsoft Windows&\\
%  • 95/98/XP/2003&\verb|C:\texmf|\\
%  • 2007/2010 and up&\verb|Computer\System\Users\|{\ttfamily\itshape your~name}\verb|\texmf|\\
% {\smaller VAX}/{\smaller VMS}&\verb|$[USER][TEXMF]|\\[2pt]\hline
% \end{tabular}
% \par\endgroup
% }
% If this folder does not already exist on your computer,
%   please create it now.\par
% \subsubsection{{\smaller UNIX},
%     {\smaller GNU}/Linux, and Apple Macintosh
%     {\smaller OS X}}
% You do not need to run
%     \emph{texhash} or
%     \emph{mktexlsr} after creating or
%     installing software into your personal \TeX{} folder
%     (indeed, you {\sffamily {\smaller MUST NOT}} do
%     so).\par
% \subsubsection{\emph{MiK\TeX{}} on
%     Windows}
% If you are using \emph{MiK\TeX{}}
%     on Windows (including
%     \emph{Pro\TeX{}t}) you
%     {\sffamily {\smaller MUST}} do an additional task
%     after you create your personal \TeX{} folder:\par
% \begin{enumerate}
% \item \label{runsettings}Run the \emph{MiK\TeX{}
%   Settings} program by clicking on the
% \menu{Start>Programs} 
% or
% \menu{Windows>Programs} 
% button, and then click on
% \menu{MiKTeX~\uline{x}.\uline{y}>Maintenance>Settings};
% \item Click on the {\renewmenumacro{\keys}{angularkeys}\keys{Roots}} tab;
% \item Click the {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Add}} button;
% \item Navigate to your new
% {\ttfamily{}texmf} folder;
% \item Click {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{OK}}.
% \end{enumerate}
% On subsequent occasions (when you install software or
%     updates manually) you must update the FileName DataBase ({\smaller FNDB})\index{FNDB|see{FileName DataBase}}\index{FileName DataBase|textbf}:\par
% \paragraph*{Updating the FileName DataBase}
% \label{update-fndb}
% \begin{enumerate}
% \item Run the \emph{MiK\TeX{}
%   Settings} program as before;
% \item \label{refresh-fndb}In the {\renewmenumacro{\keys}{angularkeys}\keys{Main}} tab, click the
% {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Refresh FNDB}}
% button.\par
% \end{enumerate}
% You {\sffamily {\smaller MUST}} do this after
%     installing or updating software in your Personal \TeX{}
%     Directory, otherwise MiK\TeX{} won't find anything.\par
% \subsection{Installation on a shared (multiuser) computer}\label{shared}
% If you need to install the files on a shared (multiuser)
%   system, you need to be root (Administrator). If you are not,
%   ask your local systems administrator to do it for you.\par
% \begin{enumerate}
% \item \label{loc}Identify where the local shared \TeX{} directory is.
%       This is conventionally something like
%       {\ttfamily{}/usr/local/share/texmf/} or
%       {\ttfamily{}/usr/local/texlive/2020/../texmf-local} 
%       but you can find out by typing the command:\par
% \verb|kpsewhich -expand-var '$TEXMFLOCAL'|;
% \item Unzip the
%       {\ttfamily{}uccthesis-n.nn.tds.zip} and the
%       {\ttfamily{}ucccrest.zip} files into this
%       folder;
% \item Run the \TeX{} index program
%       \emph{texhash} (some systems call
%       this \emph{mktexlsr}) to update the
%       fast-find ({\ttfamily{}ls-R}) database. Until
%       you do this, your \LaTeX{} users will not be able
%       to find the files.
% \end{enumerate}
% These instructions are for Unix-based systems, including
%   GNU/Linux and Apple Macintosh OS X. If someone would
%   like to provide me the equivalents for shared Windows
%   systems I would be pleased to include them.\par
% \subsection{Manual installation}
% This is only for older or
%   non-{\smaller TDS}-conformant systems. Do not use
%   this method on modern systems.\par
% \begin{enumerate}
% \item Download and unzip the
%       {\ttfamily{}uccthesis-n.nn.tds.zip} file into a
%       temporary directory (eg {\ttfamily{}/tmp}),
%       \emph{without} preserving all the paths:
%       use the \textbf{\texttt{-j}} option to
%       \emph{unzip} to do this\par
% \item Run \emph{pdflatex} on
%       {\ttfamily{}uccthesis.ins}. This will re-extract
%       the {\ttfamily{}uccthesis.cls} file (so the
%       program will ask you if you want to overwrite it: answer
%       yes by typing \texttt{y} and pressing the Return or
%       Enter key)\par
% \item Move or copy the files into a location where your
%       installation of \TeX{} will find them. This varies from
%       distribution to distribution: it is sometimes known as
%       `the {\ttfamily{}TEXINPUTS}
% directory', but it is \emph{your
% responsibility} to know where this
%       is.\par
% \item Repeat the procedure for the
%     {\ttfamily{}ucccrest.zip} file.\par
% \item Run the \TeX{} index program
%       \emph{texhash} (some systems call
%       this \emph{mktexlsr}) to update the
%       fast-find ({\ttfamily{}ls-R}) database. Until
%       you do this, your \LaTeX{} users will not be able to find
%       the files.\par
% \end{enumerate}
% \subsection{Testing the installation}
% The file {\ttfamily{}thesis-example.tex}
%   (one-sided) is provided as an example to test the document
%   class with.\par
% Move this file into your {\ttfamily{}Documents}
%   folder (or somewhere else you keep documents) and open it
%   with your \LaTeX{} editor and click on your editor's button
%   to typeset it (something like {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Typeset}}
%   or {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Make}} or
%   {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Compile}} or
%   {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{Build}} or
%   {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{pdf\LaTeX{}}} depending on your editor).
%   This should create a file
%   {\ttfamily{}thesis-example.pdf} that you can open in
%   your {\smaller PDF} reader or viewer.\par
% MiK\TeX{} users please note that MiK\TeX{} will not allow
%   you to do this in your Personal \TeX{} Directory or any of
%   its subfolders as MiK\TeX{} will not run \LaTeX{} at all in
%   those folders. You must copy the
%   {\ttfamily{}thesis-example.tex} file to somewhere
%   else to process it (eg a temporary folder).\par
% \clearpage
% \section[How to set up your thesis]{Author's Guide~--- How to set up your thesis}\label{setup}
% The first line of your thesis document
% {\sffamily {\smaller MUST}} say\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={options}]
\documentclass[options]{uccthesis}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% where \uline{options} is a list of
% options separated by commas. You can also use any of the 
% options explained in \vref{moreopts} that you find
% relevant.\par
% Apart from the title page and a few additional structures (see
% \vref{struct}), the remainder of your document
% {\sffamily {\smaller SHOULD}} use standard \LaTeX{}
% commands, environments, and packages which you can find
% explained in “Formatting Information” \parencite{fi} or any book or web site
% on how to use \LaTeX{}.\par
% \begin{figure}[hb]% \caption[Example title block of a \LaTeX{} UCC thesis
%   document]{Example title block of a \LaTeX{} UCC thesis
%   document (new commands highlighted)}\label{basic}\smallskip
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},frame=single,framesep=1em,emph={\professor,\supervisors,\subtitle,\qualifications,\sponsor,german,phd},xrightmargin=1em,xleftmargin=1em]
\documentclass[final]{uccthesis}
\begin{document}
\title{The subtleties of mathematics}
\subtitle{with specific reference to computing}
\author{102229277}{Georgina Boole}
\qualifications{msc}
\degree{PhD}
\college{sefs}
\school{Mathematical Sciences}
\professor{Prof AN Other}
\supervisors{Dr One Supervisor\\Dr Other Supervisor}
\sponsor{Some Company}
\date{August 2013}
\maketitle
...
\end{document}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \end{figure}
% The title page of your thesis follows the rules set down
% by the Registrar's Office and the Graduate Studies Office.
% This package does the formatting automatically if you
% provide the right information.\par
% You {\sffamily {\smaller MUST}} provide the
% following items (see \vref{basic} for an
% example). They can be in any order: they only get used when
% you give the {\ttfamily{}\textbackslash{}maketitle} command.\par
% \label{l1}
% \begin{enumerate}[noitemsep]
% \item Your thesis Title;
% \item Your full Name and ID (student number or
%     {\smaller ORCID}\index{ORCID});
% \item The Date of submission;
% \item The name of your Professor or Head of Department,
%     School, or Discipline;
% \item The name[s] of your Supervisor[s];
% \item Your class of degree (eg {\smaller PHD},
%     {\smaller MA}, etc);
% \item Your College within {\smaller UCC};
% \item Your School or Department or Discipline within that
%     college;
% \item A short Subject describing what your thesis is about
%     (different from the Title);
% \item One or more Keywords to help people find your thesis
%     in the Cork Online Research
%       Archive ({\smaller CORA})\index{CORA|see{Cork Online Research Archive}}\index{Cork Online Research Archive|textbf} (not repeating words already in the
%     Subject).
% \end{enumerate}
% \begin{figure}[hb]% \caption{Result of the title block in \vref{basic}}\label{basic-output}\smallskip
% \centering
% \fbox{%
% \includegraphics[width=0.7\columnwidth]{thesis-example-p1}}
% \end{figure}
% These title block commands
% {\sffamily {\smaller MAY}} occur in any order, but
% they {\sffamily {\smaller MUST}} be terminated in the
% normal way with the {\ttfamily{}\textbackslash{}maketitle} command. See
% the example in \vref{basic} and
% the output in \vref{basic-output}.\par
% The first three are done with the standard \LaTeX{}
% {\ttfamily{}\textbackslash{}title} command, a slightly modified
% {\ttfamily{}\textbackslash{}author} command, and the standard \LaTeX{}
% {\ttfamily{}\textbackslash{}date} command.\par
% The last two (subject and keywords) do not appear on the
% title page: they get included in the {\smaller PDF}
% metadata used for indexing.\par
% \subsection{Thesis title}
% The {\ttfamily{}\textbackslash{}title} command has an optional
%   argument where you can supply a short title for use in
%   running headers and footers if your full title is too
%   long, for example:\footnote{%
% This is a genuine, see \href{http://nar.oxfordjournals.org/content/15/1/51.abstract}{\nolinkurl{http://nar.oxfordjournals.org/content/15/1/51.abstract}}, 
%       but not from {\smaller UCC}.\par}\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\subtitle}]
\title[Nucleotide sequence of mitochondrial maxicircle DNA]
      {The nucleotide sequence of a 3.2 kb segment of mitochondrial
      maxicircle DNA from \textit{Crithidia fasciculata} containing
      the gene for cytochrome oxidase subunit III, the N-terminal 
      part of the apocytochrome $b$ gene and a possible frameshift
      gene}
\subtitle{Further evidence for the use of unusual initiator triplets
	  in trypanosome mitochondria}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% If your thesis has a subtitle, use the
%   {\ttfamily{}\textbackslash{}subtitle} command: you
%   {\sffamily {\smaller MUST NOT}} put the subtitle
%   in the {\ttfamily{}\textbackslash{}title} using a colon.\par
% \subsection{Author}
% The {\ttfamily{}\textbackslash{}author} command is different from
%   standard \LaTeX{}: there are \emph{two}
%   arguments, both compulsory. The first is your student number
%   \emph{or} your Open
%     Researcher and Contributor ID ({\smaller ORCID})\index{ORCID|see{Open Researcher and Contributor ID}}\index{Open Researcher and Contributor ID|textbf}; the second is
%   your full name:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\author}]
 
\author{1234-5678-9012-3456}{Michael Collins}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{Date}
% The 
%   {\ttfamily{}\textbackslash{}date} command is done as for any
%   \LaTeX{} document:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\date}]
 
\date{1 August 2021}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{Professor or Head}
% The name of your Professor \emph{or}
%   the name of your Head of College, School, Department, or
%   Discipline with \emph{one} of the commands
%   {\ttfamily{}\textbackslash{}professor} or\emph{} {\ttfamily{}\textbackslash{}hod} (not both).\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\professor,\hod}]
\professor{Dr F Händel}
\hod{Dr F Händel}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{Supervisor[s]}
% Give the name of your Supervisor with the command
%   {\ttfamily{}\textbackslash{}supervisor}.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\supervisor}]
\supervisor{Dr PDQ Bach}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% If you have more than one Supervisor, use the command
%   {\ttfamily{}\textbackslash{}supervisors} (plural) instead, and
%   separate their names with a double backslash
%   (\verb|\\|).\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\supervisors}]
\supervisors{Dr WA Mozart\\Mr L van Beethoven}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{Degree}
% You give the name of the degree for which you are
%   submitting this thesis with the {\ttfamily{}\textbackslash{}degree}
%   command:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\degree}]
\degree{PhD}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{College}\label{primaffil}
% Colleges are coded for convenience: the
%   {\ttfamily{}\textbackslash{}college} command
%   {\sffamily {\smaller MUST}} use one of the standard
%   abbreviations: \texttt{acsss}, \texttt{sefs},
%   \texttt{med}, or \texttt{buslaw}. No other values
%   can be used. The code will be automatically expanded to the
%   full name on the title page. This avoids misspellings, which
%   is important for indexing.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\college}]
\college{acsss}
\college{sefs}
\college{med}
\college{buslaw}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsection{School, Department, or Discipline}
% \begin{description}[style=unboxed]
% \item[School\thinspace:]The {\ttfamily{}\textbackslash{}school} command
% {\sffamily {\smaller MUST}} give the name of
% your School, if you are in one (otherwise use
% {\ttfamily{}\textbackslash{}department}).\par
% You {\sffamily {\smaller MUST NOT}} give
% the words `School of' as they
% will be added automatically.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\school}]
\school{Applied Psychology}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \item[Department\thinspace:]The {\ttfamily{}\textbackslash{}department} command
% {\sffamily {\smaller MUST}} give the name of
% your Department, if you are in one (otherwise use
% {\ttfamily{}\textbackslash{}school}).\par
% You {\sffamily {\smaller MUST NOT}} give
% the words `Department of' as
% they will be added automatically.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\department}]
\department{Music}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \item[Discipline\thinspace:]If your research was not affiliated to a single
% School or Department, you can use the
% {\ttfamily{}\textbackslash{}discipline} command to say where you
% did it.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\discipline}]
\discipline{Digital Humanities}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \end{description}
% If your Department is part of a School, you
%   {\sffamily {\smaller MAY}} use both
%   {\ttfamily{}\textbackslash{}school} \emph{and} {\ttfamily{}\textbackslash{}department}.\par
% Where a School or Department name requires a
%   different prefix from `School of' or
%   `Department of', this can be given in
%   an optional argument, for example:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\school,\department}]
\school[Summer School in]{Irish Studies} 
\department[Roinn an]{Ontolaoiachta}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% This method will print the full name preceded by the new
%   prefix, and is useful for the Irish forms of names pending
%   the integration of an Irish-language option for titling.
%   Note that this \emph{only} works with the
%   {\ttfamily{}\textbackslash{}school} and {\ttfamily{}\textbackslash{}department}
%   commands.\par
% \subsection{Subject}
% For electronic submission, you
%   {\sffamily {\smaller MUST}} provide a subject for
%   indexing by Cork Online Research
%     Archive ({\smaller CORA})\index{CORA|see{Cork Online Research Archive}}\index{Cork Online Research Archive|textbf}:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\subject}]
\subject{teaching coding to improve educational outcomes}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% The value {\sffamily {\smaller MUST}} be all
%   lowercase. The subject should describe what you have written
%   about: it is not necessarily worded the same way as your
%   title. Words in the subject do not need repeating in the
%   keywords.\par
% \subsection{Keywords}
% For electronic submission, you
%   {\sffamily {\smaller MUST}} provide one or more
%   keywords for indexing by {\smaller CORA}\index{CORA}:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\keywords}]
\keywords{coderdojo,programming,java,c,xml,children,measuring}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% The values {\sffamily {\smaller MUST}} be all
%   lowercase, separated by commas. They should be enough to let
%   someone who does not know your title find your thesis.
%   Keywords {\sffamily {\smaller SHOULD NOT}} repeat
%   any words already in the subject or title.\par
% \subsection{Optional metadata}
% \subsubsection{Subtitle}
% You can have a subtitle to your
%   thesis. {\sffamily {\smaller DO NOT}} put this in
%     the {\ttfamily{}\textbackslash{}title} command: you
%   {\sffamily {\smaller MUST}} use the
%   {\ttfamily{}\textbackslash{}subtitle} command instead:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX}]
\subtitle{Sturm und Drang in Malcesine}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsubsection{Qualifications}
% If you have prior \emph{postgraduate}
%     qualifications or membership of relevant professional
%     bodies, you can specify them with the
%     {\ttfamily{}\textbackslash{}qualifications} command.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\qualifications}]
\qualifications{msc mieee}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% You {\sffamily {\smaller MUST}} use lowercase
%     for qualifications, as they will be typeset in small
%     capitals (the lowercase equivalent of all-capitals).
%     Separate the qualifications with a space, not a comma, as
%     in the example above.\par
% \subsubsection{Additional affiliations}\label{subaffil}
% In addition to the College, School, Department, or
%     Discipline in which you conducted your research, you
%     {\sffamily {\smaller MAY}} also specify an
%     affiliation with an Institute, Research Centre (Group),
%     Unit, or Hospital with the commands
%     {\ttfamily{}\textbackslash{}institute}, {\ttfamily{}\textbackslash{}centre},
%     {\ttfamily{}\textbackslash{}unit}, and
%     {\ttfamily{}\textbackslash{}hospital}.\par
% These four commands automatically add the suffix
%     `Institute',
%     `Centre',
%     `Unit', or
%     `Hospital' respectively, so you
%     {\sffamily {\smaller MUST NOT}} include it
%     yourself. For example:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\institute,\centre,\unit,\hospital}]
\institute{Tyndall National}
\centre{Macrobiotic Research}
\unit{Linguistic Synthesis}
\hospital{Mercy University}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% If you need to use variant forms of names of the
%   affiliations {\ttfamily{}\textbackslash{}institute},
%   {\ttfamily{}\textbackslash{}hospital}, {\ttfamily{}\textbackslash{}centre}, and
%   {\ttfamily{}\textbackslash{}unit}, these commands all have an optional
%   argument which can be used for two purposes:\par
% \begin{description}[style=unboxed]
% \item[Suppress the automatic suffix and give the full
%       name\thinspace:]Supplying the square brackets but
% \emph{without} a value (ie the
% optional argument is present but null), will
% suppress the automatic prefix or suffix that is
% otherwise added to the name, letting you specify a
% name that does not fit the conventional pattern, for
% example:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\hospital,\institute,\centre,\unit}]
\institute[]{Institute for Advanced Studies} 
\centre[]{Centre of Excellence in Executive Education} 
\unit[]{Isolation Unit for Nervous Diseases}
\hospital[]{South Infirmary}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \item[Specifying an acronym\thinspace:]Where an Institute, Hospital, Centre, or Unit
% (\emph{only}) is normally known by an
% acronym, this can be given in the optional argument,
% and the name given in full in the main argument (no
% prefix or suffix will be added); for example:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\institute,\hospital,\centre,\unit}]
\institute[IMI]{Irish Management Institute} 
\centre[APC]{Alimentary Pharmabiotic Centre}
\unit[HFRG]{Human Factors Research Group}
\hospital[CUH]{Cork University Hospital}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% This method will print the full name followed by
% the acronym in parentheses. Note that this only
% works with the {\ttfamily{}\textbackslash{}institute},
% {\ttfamily{}\textbackslash{}hospital},
% {\ttfamily{}\textbackslash{}centre}, and
% {\ttfamily{}\textbackslash{}unit} commands.\par
% \end{description}
% \subsubsection{Multi-volume theses}
% If your thesis runs to two or more volumes, you
%     {\sffamily {\smaller MUST}} specify this with
%     the {\ttfamily{}\textbackslash{}volume} command. This has a
%     special format:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\volume,of}]
\volume n of m
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% where \uline{n} and
%     \uline{m} are the number of the
%     volume and the total number of volumes respectively,
%     for example \verb|\volume 3 of 5|.\par
% \subsubsection{Sponsor}
% Where your research has been sponsored by an
%     external organisation, you
%     {\sffamily {\smaller MAY}} be required under
%     the terms of your contract to add their name.  Use the
%     {\ttfamily{}\textbackslash{}sponsor} command to do this, for
%     example:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={\sponsor}]
\sponsor{Silmaril Consultants}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsubsection{Formatting the title page}
% The title page {\sffamily {\smaller MUST}} be
%     finished by the {\ttfamily{}\textbackslash{}maketitle} comand. Until
%     you give this command, the title page will not be
%     formatted.\par
% \begin{table}[ht]\small\sffamily
% \caption{Summary of title block commands}\label{tpcommands}\smallskip
% \begingroup
% \centering
% \begin{tabular}{@{}%
% 	>{\ttfamily\textbackslash\CPKprestrut}l<{\char'173\dots\char'175\CPKpoststrut\arraybackslash}%
% 	l<{\CPKpoststrut\arraybackslash}%
% 	@{}}
% \hline
% 
% \multicolumn{2}{@{}c<{\CPKpoststrut\arraybackslash}@{}}{\CPKvstrut\bfseries Compulsory}\\[2pt]\hline\CPKvstrut
% title&Title of your thesis (see below for
%     subtitle)\\
% author\{…\}&Your student number (or
%     {\smaller ORCID}\index{ORCID}) and full name\\
% date&Date of submission\\
% professor&\llap{\rdelim\}{2}{12pt}}%
% 	\multirow{2}{8cm}{Name of your Professor
%   \emph{or} the name of
%     your Head of Department or School}\\
% hod&\\[1pt]
% supervisor&\llap{\rdelim\}{2}{12pt}}%
% 	\multirow{2}{8cm}{Supervisor's name[s]. With the plural
%     form, separate the names with a double
%     backslash ({\texttt{\textbackslash}}{\texttt{\textbackslash}})}\\
% supervisors&\\
% degree&The degree for which you are submitting this
%     thesis\\
% college&One of \texttt{acsss},
%     \texttt{buslaw}, \texttt{med}, or
%     \texttt{sci}\\
% school[…]&\llap{\rdelim\}{3}{12pt}}%
% 	\multirow{3}{8cm}{Your School or Department or Discipline
%     or some combination (at least one of the three
%     {\sffamily {\smaller MUST}} be
%     present)}\\
% department&\\
% discipline&\\
% subject&Lowercase descriptive subject\\
% keywords&Comma-separated list of key words for
%     indexing\\
% [2pt]\hline
% \multicolumn{2}{@{}c<{\CPKpoststrut\arraybackslash}@{}}{\CPKvstrut\bfseries Optional}\\[2pt]\hline\CPKvstrut
% subtitle&Subtitle\\
% qualifications&Your existing qualifications (all
%     lowercase)\\
% institute[…]&Your Institute\\
% hospital[…]&Your Hospital\\
% centre[…]&Your Research Centre\\
% unit[…]&Your Unit\\
% \multicolumn{1}{@{}>{\ttfamily\CPKprestrut}l<{\CPKpoststrut\arraybackslash}}{\ttfamily{}volume $n$ of $m$}&For multi-volume theses\\
% sponsor&Sponsor or funding agency name, if
%     relevant\\[2pt]\hline
% \end{tabular}
% \par\endgroup
% \end{table}
% \subsection{Class options}\label{moreopts}
% There are some options that can be specified
%   in the {\ttfamily{}\textbackslash{}documentclass}
%   command at the start of the document. These are all
%   optional: use them if you need them.\par
% \begin{description}[style=unboxed]
% \item[\textbf{\texttt{classic}}\thinspace:]Use the classic monochrome crest instead of the
%       default modern colour one.\par
% \item[\textbf{\texttt{draft}}\thinspace:]\label{draft}Draft mode is the default. This highlights
% hyphenation and justification problems like overlong
% lines and unbreakable words with a black rectangle in
% the margin\marginnote{⬛}. It also replaces any images with an empty
% rectangle showing the filename: this makes your draft
% {\smaller PDF} \emph{much}
% smaller and easier to save or email, and it also saves
% printer ink if you need a printed copy for
% proofing or for your supervisor.\par
% In draft mode, the running head shows the current
% section on the left and the current subsection on the
% right. The running foot shows the name of the file on
% the left and the date and time on the right (see \vref{addset}). The page number is always bottom
% centre.\par
% \item[\textbf{\texttt{final}}\thinspace:]\label{final}Final mode removes the black rectangles of draft
% mode (it doesn't solve those hyphenation and
% justification problems: you still have to fix those
% yourself) and shows all the images.\par
% In final mode, the running head is the same as in
% draft mode, but the running foot shows the title of
% the thesis on the left and the author's name on the
% right. The page number is always bottom centre.\par
% \item[\textbf{\texttt{gaeilge}}\thinspace:]This option loads the Irish-language values for a
% thesis written in Irish, and adds the
% \textsf{eiad} package for typesetting with a
% {\fontencoding{OT1}\fontfamily{eiad}\selectfont{}sean-chl\'o} 
% typeface (you will still need to install the
% \textsf{eiad} font package yourself, if it
% is not already on your computer). This option also
% preloads the \textsf{polyglossia} package, with
% Irish as the main language and English as the other.\par
% \item[\textbf{\texttt{justified}}\thinspace:]\label{justify}Text in this document class is set
% \emph{unjustified} (ragged right margin)
% by default. This option turns justification back on.
% See \vref{just}. This option does
% \emph{not} restore indentation or
% remove paragraph-spacing: use the
% \textbf{\texttt{indented}} option for that.\par
% \item[\textbf{\texttt{indented}}\thinspace:]\label{ind}Text in this document class is set
% \emph{unindented} by default. This
% option turns indentation back on. See \vref{just}. This option does
% \emph{not} restore justification: use
% the \textbf{\texttt{justified}} option
% for that.\par
% \item[\textbf{\texttt{nolot}}\thinspace:]\label{noloft}Disables the automatic List of Tables.\par
% \item[\textbf{\texttt{nolof}}\thinspace:]Disables the automatic List of Figures.\par
% \item[\textbf{\texttt{termpaper}}\thinspace:]This is an experimental option for typesetting
% term papers. Feedback on useful features would be
% welcomed.\par
% \item[\textbf{\texttt{essay}}\thinspace:]This is an experimental option for typesetting
% undergraduate essays. Feedback on useful features
% would be welcomed.\par
% \item[\textbf{\texttt{plainheaders}}\thinspace:]\label{plainheaders}This disables the automated running headers
% described in \vref{headers} and reverts to
% \LaTeX{}'s defaults.\par
% \end{description}
% \subsection{Additional settings}\label{addset}
% There is an extra command {\ttfamily{}\textbackslash{}revdate}
% which you can use to set the date that you want to appear in
%   the footer in draft mode, eg \verb|\revdate{5 Sept 2021}|. The default is today's date.\par
% \clearpage
% \section{Document structure}\label{docstruct}
% After the title page, which is created by the
% {\ttfamily{}\textbackslash{}maketitle} command at the end of the title
% block, the UCC rules specify that there must be a Table of
% Contents, followed by the Declaration of Responsibility that
% this research is your own work. Both of these are inserted
% automatically: you do not need to add anything (see the sidebar in \vref{declresp}).\par
% If you have used tables or figures, a List of Tables and
% List of Figures will also be printed automatically after the
% Table of Contents. If you have only a very small
% number of tables or figures, you can disable the List of
% Tables or List of Figures independently with the
% \textbf{\texttt{nolot}} and \textbf{\texttt{nolof}} class
% options (see ‘\textbf{\textbf{\texttt{nolot}}}’, the seventh item in the list in \vref{noloft}).\par
% \subsection{Additional lists of special usage}\label{newlists}
% If you need glossaries, lists of symbols or acronyms,
%   and similar terminological lists, you
%   {\sffamily {\smaller MUST}} use the relevant
%   packages, and include the {\ttfamily{}\textbackslash{}ListOf...}
%   command (provided by the package) \emph{after}
%   the {\ttfamily{}\textbackslash{}maketitle} and
%   \emph{before} any preliminaries
%   (below).\par
% If you create these lists by hand, you
%   {\sffamily {\smaller MUST}} include them in the same
%   place using the starred form of the prelimiaries command
%   {\ttfamily{}\textbackslash{}prelim*}. This is necessary to avoid the
%   Declaration of Responsibility being triggered
%   prematurely.\par
% \subsection{Preliminaries (front matter)}\label{prelims}
% Before you actual text begins, you may want some
%   preliminary sections referred to as `front
%     matter' or `prelims'. This
%   class provides the following environments and commands for
%   these:\par
% \begin{description}[style=unboxed]
% \item[\texttt{dedication}\thinspace:]The \texttt{dedication}
% environment is for you to add a dedication.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={dedication}]
\begin{dedication}
...
\end{dedication}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \item[\texttt{acknowledgements}\thinspace:]The \texttt{acknowledgements}
% environment is for you to add your
% acknowledgements.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={acknowledgements}]
\begin{acknowledgements}
...
\end{acknowledgements}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \item[\texttt{abstract}\thinspace:]This is the normal \LaTeX{} \texttt{abstract}
% environment except that the heading starts a new page
% and is in the same format as all the other preliminary
% sections.\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={abstract}]
\begin{abstract}
...
\end{abstract}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% The UCC thesis rules state that an Abstract must
% be limited to 600 words and will be submitted to
% {\smaller CORA}\index{CORA}.\par
% \item[\texttt{\textbackslash{}prelim}\thinspace:]The {\ttfamily{}\textbackslash{}prelim}\marg{title}
% command is available for starting any other
% preliminary sections you may need, such as an
% Introduction which is not part of your research text.
% It works exactly like an unnumbered section heading,
% but it starts a new page, and \emph{is}
% included in the Table of Contents (see the example
% \vref{terms}).\par
% There is a special starred form of this command,
% {\ttfamily{}\textbackslash{}prelim*} which can be used
% \emph{before} any of the other commands
% or environments above to create preliminary sections
% that do not trigger the Declaration of Responsibility
% prematurely. Use with caution!\par
% \item[\texttt{\textbackslash{}refsec}\thinspace:]The {\ttfamily{}\textbackslash{}refsec} command works like
% {\ttfamily{}\textbackslash{}prelim*} but typesets the section
% single-spaced. This is for reference material such as
% medical protocols which are copied from elsewhere and
% do not form a part of your own text.\par
% \end{description}
% \par\begingroup
%   \fboxsep1em\centering
%   \shadowbox{\begin{minipage}{0.8\columnwidth}\sffamily
%  \raggedright\parindent0pt
%  \parskip=.5\baselineskip\label{declresp}
% \subsubsection*{\sffamily Declaration of Responsibility}
% The UCC Declaration (that this is your own work) is
%     automatically inserted by the \emph{first
%       use} of any of the following: \par
% \begin{itemize}
% \item a \texttt{dedication} environment;
% \item an \texttt{acknowledgements}
% environment;
% \item a
% {\ttfamily{}\textbackslash{}prelim} \emph{without}  
% the star;
% \item a {\ttfamily{}\textbackslash{}part};
% \item a {\ttfamily{}\textbackslash{}chapter}.
% \end{itemize}
% The {\ttfamily{}\textbackslash{}prelim*} command can be used to
%     add material \emph{before} these without
%     triggering the Declaration.\par
% \end{minipage}}\par\endgroup
% \subsection{Text body (main matter)}
% The main body of a thesis is usually divided into
%   chapters, containing sections and subsections (and perhaps
%   subsubsections). For a very long thesis you may use the
%   standard \LaTeX{} {\ttfamily{}\textbackslash{}part} command to group
%   the chapters into parts.\par
% The following changes have been made to \LaTeX{}'s
%   default appearance to improve readability and
%   consistency.\par
% \subsubsection{Size, spacing, justification, indentation, and paragraph
%     spacing}\label{just}
% The default for typesetting in this class is:\par
% \begin{itemize}[noitemsep]
% \item 12pt type;
% \item 1½ line spacing;
% \item unjustified (ragged-right margin);
% \item no indentation on the first line of paragraphs;
% \item one line white-space between paragraphs.
% \end{itemize}
% This makes it easier for your supervisor and External
%     Examiner to read your work, and it avoids most problems
%     with hyphenation and justification, which are much more
%     frequent in technical and academic work because of the
%     high incidence of specialist terms.\par
% Unless you are very skilled at typographic production,
%     it is probably better not to typeset a thesis like a book
%     for publication. It's not: it's a thesis.\par
% However, there are two class options available if you
%     want to emulate the book style with indented paragraphs
%     and no space between them:\par
% \begin{description}[style=unboxed]
% \item[\textbf{\texttt{justified}}\thinspace:]this option sets the text justified. It does not
%   affect the indentation or the space between
%   paragraphs. See ‘\textbf{\textbf{\texttt{justified}}}’, the fifth item in the list in \vref{justify}.\par
% \item[\textbf{\texttt{indented}}\thinspace:]this option indents paragraphs
%   \emph{and} removes the space between
%   paragraphs. It does not affect justification. See
%   ‘\textbf{\textbf{\texttt{indented}}}’, the sixth item in the list in \vref{ind}.\par
% \end{description}
% \par\begingroup
%   \fboxsep1em\centering
%   \fbox{\begin{minipage}{0.8\columnwidth}\sffamily
%  \raggedright\parindent0pt
%  \parskip=.5\baselineskip
% \subsubsection*{\sffamily Legibility}
% Justified text in the line-length used on A4 and
%       Letter paper sizes will make your thesis harder to
%       read.\par
% \end{minipage}}\par\endgroup
% \subsubsection{Running headers and footers}\label{headers}
% Running headers and footers are printed on all pages
%     except chapter openings so that readers can see
%     whereabouts in your thesis they are. This is also so that
%     photocopies or page-extracts of your thesis will show what
%     it is and who wrote it; this helps avoid plagiarism
%     because otherwise the reader of such fragment would not
%     know whose work it was.\par
% If you want the original (\LaTeX{}) default of just a
%     page number at the bottom and nothing else, you can use
%     the \textbf{\texttt{plainheaders}} class option, which will
%     then use \LaTeX{}'s own built-in running headings.\par
% \subsubsection{Page numbering}
% The title page is not numbered.\par
% All the preliminary pages from the Table of Contents
%     up to (but not including) the first page of the first Part
%     or Chapter are numbered in lowercase Roman
%     numerals.\par
% All remaining pages are numbered in Arabic numerals,
%     starting at 1 for the first page of the first Part or
%     Chapter.\par
% You {\sffamily {\smaller SHOULD}} use the
%     standard \LaTeX{} {\ttfamily{}\textbackslash{}label} and
%     {\ttfamily{}\textbackslash{}ref} or {\ttfamily{}\textbackslash{}pageref}
%     commands for making cross-references to sections and
%     pages. For more sophisticated cross-referencing, use the
%     \textsf{varioref} package.\par
% \subsubsection{Typefaces and fonts}
% \LaTeX{}'s default typeface is Computer Modern, based
%     on Monotype Series 8, a Victorian book typeface, in the
%     updated Latin Modern version from the
%     \textsf{lmodern} package. The default boldface
%     font has been changed in this class to normal bold from
%     bold extended, but you can still use the
%     {\ttfamily{}\textbackslash{}textbf} and {\ttfamily{}\textbackslash{}bfseries}
%     commands normally.\par
% The default type size is 12pt as required by the UCC
%     rules.\par
% The \textsf{fontspec} package is used with
%     \XeLaTeX{}, so you {\sffamily {\smaller MAY}} use
%     additional font or typeface packages, but you
%     {\sffamily {\smaller MUST NOT}} use display
%     (decorative) fonts for the text of a thesis. See the
%     documentation of the \textsf{fontspec} package
%     for details of how to set different fonts.\par
% \subsubsection{Structure}\label{struct}
% The basic structure is handled by the standard \LaTeX{}
%     commands {\ttfamily{}\textbackslash{}part},
%     {\ttfamily{}\textbackslash{}chapter}, {\ttfamily{}\textbackslash{}section},
%     {\ttfamily{}\textbackslash{}subsection}, and
%     {\ttfamily{}\textbackslash{}subsubsection}.\par
% \LaTeX{} also provides the commands
%     {\ttfamily{}\textbackslash{}paragraph} and
%     {\ttfamily{}\textbackslash{}subparagraph} for numbered, headed
%     paragraphs and subparagraphs, but you should avoid them if
%     possible because they make it harder for your readers to
%     remain aware of their location in your argument
%     (especially your supervisor[s], Professor and External
%     Examiner).\par
% Within the sectional divisions, separate your
%     paragraphs by a blank line in the normal way. All the
%     standard \LaTeX{} environments can be used for tables and
%     figures, lists, quotations, equations, theorems,
%     etc.\par
% A few small changes have been made to the formatting
%     and features of the following environments:\par
% \begin{description}[style=unboxed]
% \item[The \texttt{epigraph} environment\thinspace:]\label{epigraph}The \texttt{epigraph}\marg{citekey} environment
%   is a specialised format of short quotation that
%   comes immediately after a chapter or section title.
%   It typesets the contents centred, with the source
%   citation tucked into the end of the last line, or
%   right-aligned below if there isn't space.\par
% The one (mandatory) argument
%   {\sffamily {\smaller MUST}} contain a
%   \BibTeX{} citation key for the source of the
%   quotation. This is the same principle as for the
%   \texttt{quotation} environment described in
%   ‘\textbf{The \texttt{quotation} environment}’, the second item in this list\par
% However, if you want an indirect citation to
%   your epigraph, you
%   {\sffamily {\smaller MAY}} put it in an
%   optional argument in square brackets, and leave the
%   mandatory argument empty:
%     \verb|\begin{epigraph}[GBS, writing in 1940]{}|…\verb|\end{epigraph}|.\par
% \item[The \texttt{quotation} environment\thinspace:]\label{quotation}There is a mandatory argument to the \texttt{quotation}\oarg{citekey} environment
%   which is for the \BibTeX{} citation key of the
%   source, eg
%   \verb|\begin{quotation}{shaw}|.\par
% This is used to create a short-form citation
%   tucked into the end of the last line, or
%   right-aligned below if there isn't room.\par
% The quotation is set one size smaller than the
%   main text and the first line is
%   \emph{not} indented (both changes from
%   the \LaTeX{} default).\par
% If you need to give a page number or other
%   qualifier to such a reference, which would usually
%   go in square brackets before a normal
%   {\ttfamily{}\textbackslash{}cite} command, you
%   {\sffamily {\smaller MUST}} embed the whole
%   thing in curly braces inside the mandatory argument,
%   otherwise \LaTeX{} will not be able to distinguish
%   the square brackets of the citation modifier from
%   those of an optional argument to the
%   \texttt{quotation} command (see below). For
%   example:
%   \verb|\begin{quotation}[{[pp.80--81]{shaw}}]|\par
% The argument is mandatory (this is a change from
%   previous versions of this document class) because
%   quotations {\sffamily {\smaller MUST}}
%   always acknowledge their source. However, if the
%   quotation is being cited indirectly in the preceding
%   or following text, or is part of a group of
%   citations implicitly coming from the same source, so
%   that it does not always need a direct citation of
%   its own, you can give an abbreviated value in an
%   optional argument in square brackets, and leave the
%   mandatory argument empty:
%   \verb|\begin{quotation}[p.33]{}|…\verb|\end{quotation}|.\par
% \item[The \texttt{table} and
% \texttt{figure} environments\thinspace:]The standard parameters in \LaTeX{} for the
%   proportions of a page which can be occupied by
%   tables and figures are too small for theses, which
%   typically have many floats. In this class, they have
%   been increased to the values suggested in the \TeX{}
%   FAQ at
%   \href{https://texfaq.org/FAQ-floats}{\nolinkurl{https://texfaq.org/FAQ-floats}}; 
%   and additionally, the overall proportion of the page
%   that can be occupied by floats has been increased
%   from 66\% to 75\%. See the detailed code
%   description at \vref{floating} for the
%   exact values used.\par
% \end{description}
% \subsection{Back matter}
% The final sections are any Appendices, possibly an Index
%   or Glossary, and your References (Bibliography)\par
% \subsubsection{Appendices}
% Appendices are done in the standard way, using the
%     {\ttfamily{}\textbackslash{}appendix} command \emph{once
%       only} to signal the change from chapters to
%     appendices, and then use the {\ttfamily{}\textbackslash{}chapter}
%     command for each appendix, which will now create
%     appendix-type headings.\par
% \subsubsection{References (Bibliography)}\label{bibstyle}
% As part of this version of the thesis document class,
%     the automated identification of school, department, or
%     college preferences for bibliographic style has been
%     dropped, as it was impossible to get agreement.\par
% \par\begingroup
%   \fboxsep1em\centering
%   \fbox{\begin{minipage}{0.8\columnwidth}\sffamily
%  \raggedright\parindent0pt
%  \parskip=.5\baselineskip
% \subsubsection*{\sffamily Change to the \textsf{biblatex}
%       package}
% This document class now uses the
%       \textsf{biblatex} package and the
%       \emph{biber} program to handle
%       citation and reference instead of the old
%       {\ttfamily{}.bst} style files and the
%       \emph{bibtex} program.\par
% There is \emph{no change} to the data
%       format: your existing {\ttfamily{}.bib} file[s]
%       will work unchanged, although there are now many more
%       fields available for you to use, and new reference types
%       to handle electronic documents.\par
% \end{minipage}}\par\endgroup
% You now specify the sorting option, citation/reference
%     style and your filename with the
%     {\ttfamily{}\textbackslash{}mybibstyle} command in your document
%     Preamble (before \verb|\begin{document}|).
%     There are only a few common values shown here: the
%     documentation for the \textsf{biblatex} package
%     lists all the others.\par
% The {\ttfamily{}\textbackslash{}mybibstyle} command has one
%     optional and two mandatory arguments:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX},emph={mybibstyle}]
\mybibstyle[sort]{style}{file.bib}
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% where \uline{sort} is the type of
%     sorting, \uline{style} is the
%     citation/reference style, and
%     \uline{file} is the name of your
%     \BibTeX{} file. This command handles the most common
%     sttyles and options. If you need more complex settings,
%     read the \textsf{biblatex} documentation and use
%     the relevant commands.\par
% \begin{enumerate}
% \item The default sort is name, title, year, so if you
% omit the optional argument to
% {\ttfamily{}\textbackslash{}mybibstyle}, that's how your
% references will be sorted. If you want the references
% to appear in order of citation, use the value
% \texttt{none}. There are many other sort options
% listed in the \textsf{biblatex}
% documentation.\par
% \item There are many add-on styles, including 
% formats for journals and learned societies like
% {\smaller APA}, {\smaller MLA},
% {\smaller IEEE}, and others. The most common
% built-in styles are:\par
% \begin{description}[style=unboxed]
% \item[\texttt{numeric}\thinspace:]Citations and references are numbered in square
%       brackets [1].\par
% \item[\texttt{alphabetic}\thinspace:]Citations and references are labelled with
%       alphabetic abbreviations made from the authors'
%       names or initials plus a 2–digit year.\par
% \item[\texttt{authoryear}\thinspace:]Citations use author and year in
%       parentheses: either \parencite{heaney} or
%       \textcite{heaney}
%       depending on context. References are
%       unlabelled.\par
% \end{description}
% \item The third argument is the name of your \BibTeX{}
% file, \emph{including} the
% {\ttfamily{}.bib} (this is different from the
% old \BibTeX{} way where you had to omit the
% {\ttfamily{}.bib}).\par
% \end{enumerate}
% % \paragraph*{Citation commands}
% \begin{description}[style=unboxed]
% \item[\texttt{\textbackslash{}cite}\thinspace:]Use this for numeric and alphabetic styles.
% \item[\texttt{\textbackslash{}parencite}\thinspace:]The entire citation is enclosed in parenthesis,
%   like \parencite{heaney}.
% \item[\texttt{\textbackslash{}textcite}\thinspace:]Only the year is enclosed in parentheses, like
% \textcite{heaney}.
% \item[\texttt{\textbackslash{}footcite}\thinspace:]The citation is a superscript number, and
% the short reference is in a footnote\footcite{heaney}.
% \end{description}
% There are several other citation commands explained in
%     the package documentation, along with details of how to
%     make changes to the punctiation and formatting, and how to
%     use named styles (eg {\smaller APA},
%     {\smaller IEEE}, {\smaller MLA},
%     etc).\par
% To make your References section appear, you
%     {\sffamily {\smaller MUST}} use the command\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX}]
\printbibliography
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% at the place
%     where you want the references to come (usually at the end
%     of your thesis).\par
% \subsubsection{Typesetting your document}
% In most \LaTeX{} editors, the references (and index, and
%     glossaries, etc) get automatically remade when you make a
%     change and rebuild the document. If not, look for a
%     {\changemenucolor{keys}{bg}{HTML}{CDCDCD}\keys{biblatex}} button or menu option to
%     do this.\par
% In manual systems, use the \emph{latexmk}\thinspace(1) command with the
%     \textbf{\texttt{-bibtex}} option, eg:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language=bash]
$ latexmk -xelatex -bibtex mythesis.tex
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% This is equivalent to typing the commands manually:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language=bash,emph={biber,makeindex}]
$ xelatex mythesis
$ biber mythesis
$ xelatex mythesis
$ makeindex mythesis
$ xelatex mythesis
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% \subsubsection{Indexes and Glossaries}
% If you need to produce an Index, use the standard
%     \LaTeX{} facilities and the
%     \emph{makeindex} program. There is
%     a detailed explanation in \textcite[Ch\thinspace 5.4.1]{fi} at \href{http://latex.silmaril.ie/formattinginformation/indexgloss.html#indexes}{\nolinkurl{http://latex.silmaril.ie/formattinginformation/indexgloss.html\#indexes}}.\par
% For Glossaries, you
%     {\sffamily {\smaller MUST}} use the
%     \textsf{glossaries} package (the old
%     \textsf{glossary} package has been
%     superseded).\par
% \clearpage
% \section{Packages preloaded}
% To make this document class work, several packages are
% preloaded. If your own work needs one of these, you
% {\sffamily {\smaller MUST NOT}} use the
% {\ttfamily{}\textbackslash{}usepackage} command for it, as it is already
% defined. These preloaded packages are listed in \vref{preloaded}.\par
% Be aware that some packages may influence others. In
% particular, if you use the \textsf{hyperref} package
% that implements hyperlinks in PDF output, it
% {\sffamily {\smaller MUST}} be loaded last, after all
% other packages.\par
% \changes{v1.17}{2014/01/27}{Documented the fix for apacite}
% \begin{table}[hb]\small\sffamily
% \caption{Standard packages preloaded}\label{preloaded}\smallskip
% \begingroup\fontsize99\selectfont
% \centering
% \begin{tabular}{@{}%
% 	>{\sffamily\CPKprestrut}l<{\CPKpoststrut\arraybackslash}%
% 	>{\raggedright{}\ttfamily\CPKprestrut}m{2.6cm}<{\CPKpoststrut\arraybackslash}%
% 	l<{\CPKpoststrut\arraybackslash}%
% 	@{}}
% \multicolumn{1}{@{}>{\CPKprestrut}b{\widthof{Packages}}<{\CPKpoststrut\arraybackslash}}{\sffamily\bfseries Package}&\multicolumn{1}{>{\raggedright{}\CPKprestrut}b{2.6cm}<{\CPKpoststrut\arraybackslash}}{\sffamily\bfseries Options used}&\multicolumn{1}{>{\raggedright{}\CPKprestrut}b{\widthof{Usages}}<{\CPKpoststrut\arraybackslash}@{}}{\sffamily\bfseries Usage}\\[2pt]\hline
% 
% \multicolumn{3}{@{}c<{\CPKpoststrut\arraybackslash}@{}}{\CPKvstrut\bfseries Packages active in
% all cases}\\[2pt]\hline\CPKvstrut
% array&&allows paragraph formatting within table
% cells\\
% calc&&dimension arguments accepted in infix
% notation\\
% ccaption&&restyle captions (used to get {\ttfamily{}\textbackslash{}raggedright})\\
% enumitem&inline&fixes bug in description lists, add list
% formatting options and inline lists\\
% fancyhdr&&adds running headers and footers\\
% float&&allows \textbf{\texttt{H}} (`here') position for
% non-floating floats\\
% fontspec&&enables Unicode characters and use of 
%       system fonts\\
% footmisc&&ensure footnotes stay at the bottom of short
% pages\\
% geometry&&set the margins (see \vref{clspackages})\\
% graphicx&&enable graphics\\
% ifthen&&used for if\dots then\dots else
% internally\\
% lmodern&&extended Computer Modern (default)
% typeface\\
% parskip&&no indentation, paragraph gap is one
% line-space\\
% setspace&&set 1\nicefrac12 line-spacing\\
% \llap{\normalfont † }textcomp&&support for special characters including
% {\ttfamily{}\textbackslash{}texteuro} ({\fontencoding{OT1}\fontfamily{cmr}\selectfont\texteuro}
%       instead of €)\\
% \llap{\normalfont ‡ }ucccrest&&Monochrome classic UCC crest\\
% ulem&&Support for underlining\\
% url&&Improved line-breaking of long web
% addresses\\
% xcolor&&Colour\\
% [2pt]\hline
% \multicolumn{3}{@{}c<{\CPKpoststrut\arraybackslash}@{}}{\CPKvstrut\bfseries Packages active only
% with the \textbf{\texttt{gaeilge}} class option}\\[2pt]\hline\CPKvstrut
% babel&english,irish&Irish-language typesetting options\\
% eiad&&The sean-chló typeface\\[2pt]\hline
% \end{tabular}
% \par\endgroup
% \par\bigskip\footnotesize
% \begin{itemize}[noitemsep]
% \item[†]support for the official {\fontencoding{U}\fontfamily{mvs}\fontseries{m}\fontshape{n}\selectfont\char164}
%   symbol requires the \textsf{marvosym}
% package ({\ttfamily{}\textbackslash{}EUR})\par
% \item[‡]you must ensure that the
% \textsf{ucccrest} package is installed.\par
% \end{itemize}
% \end{table}
% \clearpage
% \section{Format of E-thesis}\label{regs}
% These rules were taken from the Graduate Studies web site
% at \href{https://www.ucc.ie/en/study/postgrad/currentresearchstudents/thesis/formatofe-thesis/}{\nolinkurl{https://www.ucc.ie/en/study/postgrad/currentresearchstudents/thesis/formatofe-thesis/}} 
% on 1 May 2020.\par
% \subsection{File Types}
% Theses for examination must be submitted as a PDF
%   file.\par
% Non-traditional submission formats such as video files
%   or audio files will continue to be accepted according to
%   disciplinary norms.\par
% \subsection{Title Page}
% There must be a title page which shall give the
%   following information:\par
% \begin{enumerate}
% \item The full title of the thesis.\par
% \item The full name of the author, followed, if desired,
%       by any qualifications and distinctions.\par
% \item The qualification for which the thesis is
%       submitted.\par
% \item The name of the institution: University College
%       Cork.\par
% \item The School or Department in which the research was
%       conducted.\par
% \item Name of the Head of the School or Department
%       concerned.\par
% \item Names of the Supervisors of the research.\par
% \item The Year of submission.\par
% \end{enumerate}
% Sample Title Page is available to view here: \href{https://www.ucc.ie/en/media/studyatucc/postgraduate-gsomedialibrary/2documentsandforms/UCCResearchThesisSampleTitlePage.docx}{UCC 
%     Research E-thesis Sample Title Page}.\par
% \subsection{Table of Contents}
% The table of contents shall immediately follow the title
%   page.\par
% \subsection{Declaration}
% Following the table of contents, a declaration should be
%   included stating that the thesis submitted is the
%   candidate's own work and has not been submitted for another
%   degree. The following wording should be used:\par
% \begin{quotation}\small\sffamily\parindent0pt
%   \parskip.5\baselineskip
%   \color{DarkBlue}\noindent
% “This is to certify that the work I am submitting is
%     my own and has not been submitted for another degree,
%     either at University College Cork or elsewhere. All
%     external references and sources are clearly acknowledged
%     and identified within the contents. I have read and
%     understood the regulations of University College Cork
%     concerning plagiarism.”\par
% \end{quotation}
% \subsection{Abstract}
% An abstract is required for all final thesis submissions
%   to CORA. We advise that an abstract should be a maximum of
%   600 words.\par
% \subsection{Formatting}
% The text must be formatted with a left-hand margin 4 cm.
%   Font size 12 and double or one-and-a-half spacing is
%   recommended.\par
% \renewcommand{\bibname}{References}
% \clearpage
% \raggedright
% \raggedright\printbibliography
% \StopEventually{\label{endcode}%
%   \clearpage
%   \newgeometry{left=3cm}%
%   \addcontentsline{toc}{section}{Change History}%
%   \label{changehistory}%
%   \PrintChanges
%   \clearpage
%   \label{codeindex}%
%   \addcontentsline{toc}{section}{Index}%
%   \PrintIndex}
% \addtolength{\CPKrevmarg}{\widthof{\LabelFont{UCC@textbodywidth}}}
% \newgeometry{left=\CPKrevmarg}
% \message{Margin reset to \the\CPKrevmarg, to fit <UCC@textbodywidth>}
% \iffalse
%<*class>
% \fi
% \clearpage
% \section{Implementation}\label{implementation}
% The \DescribeClass{uccthesis}\textsf{uccthesis} document class is
% based on the standard \LaTeX{} \DescribeClass{report}\textsf{report}
% class, with additional commands to create the title page and
% provide some extra formatting options.\par
% \subsection{Auto-initialisation}\label{implementation:autoinit}
% This section is added automatically by \textit{ClassPack} 
% as a preamble to all classes and style packages. 
% The \textsf{fixltx2e} package, which used to be included
% automatically, is no longer preloaded, as its
% features are now a part of the latest \LaTeXe\ kernel.\par
% The code starts with identity and requirements which are 
% generated automatically as needed by the Doc\TeX\ system.
% For details see the \textsf{ltxdoc} package documentation.
% \par\smallskip
% \begingroup\color{DarkRed}\footnotesize
% \leavevmode\enspace{\scriptsize1}\quad{\ttfamily\textbackslash NeedsTeXFormat\{LaTeX2e\}[2017/04/15]}\\
% \leavevmode\enspace{\scriptsize2}\quad{\ttfamily\textbackslash ProvidesClass\{uccthesis\}[2020/04/29 v2.9}\\
% \leavevmode\enspace{\scriptsize3}\qquad{\ttfamily Formatting for a thesis for University College Cork]}\\\endgroup
% \setcounter{CodelineNo}{3}
% \begin{CPK@package}{fix-cm}
% Preloaded functions to override the default \LaTeX\
% step-size font sizes (which can still be used,
% but are no longer restrictions).\par
%    \begin{macrocode}
\RequirePackage{fix-cm}
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@option}{svgnames}
% Pass the \textbf{\texttt{svgnames}} option to the
% \textsf{xcolor} package if that gets loaded later.
% This avoids a conflict with any other packages
% (eg \textsf{hyperref}) which use their own default
% is when they load \textsf{xcolor}.\par
%    \begin{macrocode}
  \PassOptionsToPackage{svgnames}{xcolor}
%    \end{macrocode}
% \end{CPK@option}
% \subsection{Preliminary declarations}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% Preliminary declarations
% \fi
% The \textsf{ifthen} package is required to
%   make the options work.\par
%    \begin{macrocode}
\RequirePackage{ifthen}
%    \end{macrocode}
% \subsection{Class options}\label{options}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% Class options
% \fi
% The options provided mainly affect formatting.\par
% \subsubsection{Draft and final modes}
% \begin{CPK@macro}{\class@mode}\label{macro--class@mode}
% Draft mode is the default, but we define a macro to
%       allow it to be passed through to the
%       \textsf{report} class as a default.\par
%    \begin{macrocode}
\def\class@mode{draft}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@environment}{draft}\label{environment--draft}
% We set the overfull rule as normal for draft mode,
%       and set the running footer to indicate draft mode for
%       activation at the end of processing, once the
%       \textsf{fancyhdr} package has been loaded. It
%       also sets {\ttfamily{}\textbackslash{}sloppy} and
%       {\ttfamily{}\textbackslash{}raggedbottom}, as these are likely to
%       prove useful in complex texts with substantial amounts
%       of mixed formatting (mathematics, figures, tables, long
%       words, etc).\par
%    \begin{macrocode}
\newif\ifthesis
\thesistrue
\def\@revdate{\relax}
\DeclareOption{draft}{\setlength\overfullrule{1ex}%
  \def\class@mode{draft}%
  \sloppy\raggedbottom
  \AtEndOfClass{%
    \lfoot{\scriptsize\ttfamily Draft: \jobname}%
    \rfoot{\scriptsize\ttfamily 
           \if\relax\@revdate
             \TODAY T\now:00\else\@revdate\fi}}%
  \typeout{DRAFT MODE}}
\newcommand{\revdate}[1]{\gdef\@revdate{#1}}
%    \end{macrocode}
% \end{CPK@environment}
% \begin{CPK@environment}{final}\label{environment--final}
% The final-mode setting sets the overfull rule to
%       nothing, records the status in
%       {\ttfamily{}\textbackslash{}class@mode}, and sets the same
%       tolerances as for draft mode.\par
%    \begin{macrocode}
\DeclareOption{final}{\setlength\overfullrule{0pt}%
  \def\class@mode{final}%
  \sloppy\raggedbottom
  \typeout{FINAL MODE}}
%    \end{macrocode}
% \end{CPK@environment}
% \subsubsection{Type size and paper size}
% \begin{CPK@macro}{\class@size}\label{macro--class@size}
% Provide a similar recording feature to pass the size
%       option through to the \textsf{report} class. The
%       required size is 12pt.\par
%    \begin{macrocode}
\def\class@size{12pt}
\DeclareOption{12pt}{\def\class@size{12pt}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\class@paper}\label{macro--class@paper}
% The same applies to passing the paper size. Only A4
%       and Letter are relevant here.\par
%    \begin{macrocode}
\def\class@paper{a4paper}
\DeclareOption{a4paper}{\def\class@paper{a4paper}}
\DeclareOption{letterpaper}{\def\class@paper{letterpaper}}
%    \end{macrocode}
% \end{CPK@macro}
% \subsubsection{Turning off the Lists of Tables and Figures}
% Production of a List of Tables and a List of Figures is
%     automated: if no figure or table is used, then no list is
%     produced.\par
% \begin{CPK@option}{nolot}\label{option--nolot}
% Allow thesis not to have any List of Tables with the
%       \textbf{\texttt{nolot}} option and the {\ttfamily{}\textbackslash{}iflot} switch.\par
%    \begin{macrocode}
\newif\iflot\lottrue
\DeclareOption{nolot}{\lotfalse}
%    \end{macrocode}
% \end{CPK@option}
% \begin{CPK@option}{nolof}\label{option--nolof}
% Allow thesis not to have any List of Figures with
%       the \textbf{\texttt{nolof}} option and the {\ttfamily{}\textbackslash{}iflof} switch.\par
%    \begin{macrocode}
\newif\iflof\loftrue
\DeclareOption{nolof}{\loffalse}
%    \end{macrocode}
% \end{CPK@option}
% \begin{CPK@macro}{\hypersetup}\label{macro--hypersetup}
% Because \textsf{hyperref} should be loaded
%       last, it is deferred to the beginning of the document.
%       Change the colours for links.\par
%    \begin{macrocode}
\AtBeginDocument{%
%%  \usepackage{hyperref}%
  \hypersetup{linkcolor=blue,
              urlcolor=purple,
              citecolor=magenta}%
}
%    \end{macrocode}
% \end{CPK@macro}
% At the end of the document, new global counter for
%     figures and tables are tested, and if there were none, the
%     false value is written to the auxiliary file, where it
%     will be detected on the next pass.\par
% \changes{v1.19}{2014/05/30}{These are now separate counters to reflect total figs and tables, because the normal counters get reset at the start of each chapter}
%    \begin{macrocode}
\newcounter{UCC@totfig}
\newcounter{UCC@tottab}
\AtBeginDocument{%
  \let\UCC@end@figure\endfigure
  \newcommand{\UCC@endfigure}{%
    \UCC@end@figure\global\advance\c@UCC@totfig by1}
  \let\endfigure\UCC@endfigure
  \let\UCC@end@table\endtable
  \newcommand{\UCC@endtable}{%
    \UCC@end@table\global\advance\c@UCC@tottab by1}
  \let\endtable\UCC@endtable
  \renewcommand{\UrlFont}{\ttfamily}%
}
\AtEndDocument{%
  \ifnum\c@UCC@totfig=0 \write\@mainaux{%
    \string\global\string\loffalse}\fi
  \ifnum\c@UCC@tottab=0 \write\@mainaux{%
    \string\global\string\lotfalse}\fi
}
%    \end{macrocode}
% \subsubsection{Irish-language theses}
% \begin{CPK@environment}{gaeilge}\label{environment--gaeilge}
% Provide for theses in Irish. This option loads the
%       \textsf{polyglossia} package with 
%       \textbf{\texttt{irish}} as the main language and
%       \textbf{\texttt{english}} as the
%       `other' language. It also loads
%       the \textsf{eiad} font package for sean-chló
%       type.\par
%    \begin{macrocode}
\def\UCC@language{en}
\DeclareOption{gaeilge}{%
%    \end{macrocode}
% At the end of the package processing, it makes some
%       changes to tokens which are not handled by
%       \textsf{polyglossia} (Institution [defined in
%       this package and not changeable],
%       Acknowledgements [defined in the package], and
%       {\ttfamily{}\textbackslash{}today} [defined by \LaTeX{}]).
%       Hyphenation is disabled for Irish text (the jury is
%       still out on whether Irish should be hyphenated or
%       not).\par
%    \begin{macrocode}
  \gdef\UCC@language{ga}
  \AtEndOfClass{%
    \RequirePackage{polyglossia}
    \setdefaultlanguage{irish}
    \setotherlanguage[variant=british]{english}
    \selectbackgroundlanguage
    \disablehyphenation
    \RequirePackage{eiad}%
    \def\UCC@ackname{Bu\'\i ochas}
    \def\today{\number\day\space\ifcase\month\or
      Ean\'a\i r\or Feabhra\or M\'arta\or A\i bre\'an\or 
      Bealta\i ne\or Me\i theamh\or U\'u\i l\or L\'unasa\or 
      Me\'an F\'omha\i r\or De\i readh F\'omha\i r\or 
      Samha\i n\or M\'\i\ na Nollag\fi\space
      \number\year}%
%    \end{macrocode}
% Finally, we change the tokens for the handles
%       previously defined for the division and degree options
%       above; and we preset {\ttfamily{}\textbackslash{}raggedright}
%       because the hyphenation of Irish is widely regarded as
%       problematic, and is turned off above.\par
%    \begin{macrocode}
   \raggedright
}}
%    \end{macrocode}
% \end{CPK@environment}
% \subsubsection{Justification, indentation, and paragraph-spacing}
% Documents formatted on office-size paper do not read
%     easily when justified with long line-lengths such as those
%     in effect when the Registrar's Rules are applied to A4 or
%     Letter paper. The default is therefore for  \begin{enumerate*}[label=\emph{\alph*}),itemjoin={{; }},itemjoin*={{ and }}]
% \item justification turned off\par
% \item white-space between paragraphs\par
% \item no indentation on the first lines of
%   paragraphs\par
% \end{enumerate*}\par
% \begin{CPK@option}{justified}\label{option--justified}
% The \textbf{\texttt{justified}} option is provided to
%       allow justification to be turned back on by setting the
%       {\ttfamily{}\textbackslash{}ifjustified}
%       switch.\par
% \changes{v0.93}{2011/05/01}{Added justified in response to user queries}
%    \begin{macrocode}
\newif\ifjustified
\DeclareOption{justified}{\justifiedtrue}
%    \end{macrocode}
% \end{CPK@option}
% It is also easier to read the longer lines in long
%     structured documents when the paragraphs are separated by
%     white-space and \emph{not} indented, rather
%     than set tight and with indentation, like a book.
%     (Indentation is never used with space between paragraphs
%     in English-language typesetting.)\par
% \begin{CPK@option}{indented}\label{option--indented}
% Nevertheless we provide an option to reverse this
%       and allow indentation: it sets the {\ttfamily{}\textbackslash{}ifindented} switch, so that it
%       can be set or unset later, along with paragraph-spacing
%       using the \textsf{parskip} package.\par
%    \begin{macrocode}
\newif\ifindented\indentedfalse
\DeclareOption{indented}{\indentedtrue}
%    \end{macrocode}
% \end{CPK@option}
% \subsubsection{Running headers and footers}
% \begin{CPK@option}{plainheaders}\label{option--plainheaders}
% Because theses are long documents, and because parts
%       or all of them are likely to be extracted for printing
%       off or photocopying at some stage, it is very important
%       that every page should be identifiable in isolation. The
%       \textsf{fancyhdr} package is used to do this
%       by default (see \vref{fancy}).\par
%    \begin{macrocode}
\newif\iffancy
\fancytrue
\DeclareOption{plainheaders}{\fancyfalse}
%    \end{macrocode}
% Some users were not permitted to use running headers
%       and footers, so the \textbf{\texttt{plainheaders}} allows
%       it to be turned off via the {\ttfamily{}\textbackslash{}iffancy} switch.\par
% \end{CPK@option}
% \subsubsection{Crest}
% The default crest is the current colour version. The
%     alternative (classic) crest uses the special heraldic arms
%     drawn in \MF{} specifically for UCC and included in
%     this class as {\ttfamily{}uccnew.mf} (with the
%     motto `Where Finbarr taught, let Munster
%       learn' omitted as per a decision of UCC many
%     years ago).\par
%    \begin{macrocode}
\def\UCC@crest{%
  \includegraphics[width=.333\columnwidth]{ucc_logo_clip.pdf}}
\DeclareOption{classic}{%
  \gdef\UCC@crest{{\Large
    \fontencoding{U}\fontfamily{zcc}\selectfont\char'001}}%
}
%    \end{macrocode}
% \subsubsection{Dissertations, term papers, and essays}
% WARNING: EXPERIMENTAL\par
% \changes{v0.97}{2012/03/31}{Added mdiss option}
% \begin{CPK@option}{mdiss}\label{option--mdiss}
% This is for minor dissertations.\par
%    \begin{macrocode}
\newif\ifdiss
\DeclareOption{mdiss}{%
  \disstrue
  \thesisfalse
  \fancyfalse
}
%    \end{macrocode}
% \end{CPK@option}
% \begin{CPK@option}{termpaper}\label{option--termpaper}
% This is for term papers.\par
%    \begin{macrocode}
\newif\iftermpaper
\DeclareOption{termpaper}{%
  \AtEndOfClass{%
    \degree{}%
    \def\UCC@degree{\relax}%
    \thesisfalse}%
  \typeout{Term paper}}
%    \end{macrocode}
% \end{CPK@option}
% \begin{CPK@option}{essay}\label{option--essay}
% This is for undegraduate essays.\par
%    \begin{macrocode}
\newif\ifessay
\DeclareOption{essay}{%
  \AtEndOfClass{%
    \degree{}%
    \def\UCC@degree{\relax}%
    \thesisfalse}%
  \typeout{Essay}}
%    \end{macrocode}
% \end{CPK@option}
% \subsubsection{One- and two-sided output}
% \begin{CPK@option}{oneside}\label{option--oneside}
% Theses are submitted electronically, so the default
%     format is for single-sided usage. This is also useful for
%     people printing the document, such as External
%     Examiners.\par
%    \begin{macrocode}
\newif\ifUCC@oneside
\UCC@onesidetrue
\def\UCC@sided{oneside}
\DeclareOption{oneside}{
  \UCC@onesidetrue
  \gdef\UCC@sided{oneside}
}
%    \end{macrocode}
% \end{CPK@option}
% \begin{CPK@option}{twoside}\label{option--twoside}
% However, the \textbf{\texttt{twoside}} is available
%       for when a very long thesis needs to economise on paper,
%       or when a presentation copy is being bound as a
%       book.\par
% \changes{v0.97}{2012/03/31}{added openright for Ethan Soudi}
%    \begin{macrocode}
\DeclareOption{twoside}{
  \UCC@onesidefalse
  \gdef\UCC@sided{twoside,openright}
}
%    \end{macrocode}
% \end{CPK@option}
% \subsubsection{Applying the options}
% Issue an error message for any bogus or
%     unsupported options:\par
%    \begin{macrocode}
\DeclareOption*{%
   \PackageWarning{uccthesis}{Unknown option ‘\CurrentOption’; 
     please Read The Fine Manual}%
}
%    \end{macrocode}
% Process those we support, and then load the
%     \textsf{report} document class with the values
%     we have gathered above.\par
%    \begin{macrocode}
\ProcessOptions\relax
\LoadClass[\class@mode,titlepage,\UCC@sided,\class@size,
           \class@paper]{report}
%    \end{macrocode}
%\iffalse
%%
%% Packages required for the class or package
%% 
% \fi
% \subsection{Packages required for the class}\label{clspackages}
% \begin{CPK@package}{fontspec}
% Font specification setup for use with \XeLaTeX{}.
% \iffalse
%% Font specification setup for use with \XeLaTeX{}.
% \fi
%    \begin{macrocode}
\RequirePackage{fontspec}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{geometry}
% Package for establishing margins and text area.
% Sets the page size to values within the Registrar's specification. This has the effect of making the textwidth 5.7″ (145mm) and the textheight 9.3″ (237mm) on an A4 page. The headheight is set to accommodate the default running headers.
% \iffalse
%% Package for establishing margins and text area.
% \fi
%    \begin{macrocode}
\RequirePackage[margin=2.5cm,left=4cm,
  bottom=3cm,headheight=22pt]{geometry}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{lmodern}
% The updated Computer Modern typeface as the default.
% \iffalse
%% The updated Computer Modern typeface as the default.
% \fi
%    \begin{macrocode}
\RequirePackage{lmodern}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{enumitem}
% List variants: inline and compact.
% Note that this replaces	the earlier defaults of
% \textsf{paralist} and 
% \textsf{mdwlist}.
% This is used to fix the permanent bug in \LaTeX{} where a long description list term would be boxed and force an overflow; also to allow inline lists.
% \iffalse
%% List variants: inline and compact. Note that this replaces the earlier defaults of paralist and mdwlist.
% \fi
%    \begin{macrocode}
\RequirePackage[inline]{enumitem}%
  \setlist[description]{style=unboxed}
  \setlist[itemize]{leftmargin=2em}
  \setlist[enumerate]{leftmargin=2em}
  \newlist{inlineenum}{enumerate*}{1}
  \setlist[inlineenum,1]{label=\emph{\alph*}),
	    itemjoin={{; }},itemjoin*={{; and }}}
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{url}
% Handling of URI formatting.
% \iffalse
%% Handling of URI formatting.
% \fi
%    \begin{macrocode}
\RequirePackage{url}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{graphicx}
% Provide for graphics (PNG, JPG, or PDF format (only) for
% pdflatex; EPS format (only) for standard \LaTeX{}).
% \iffalse
%% Provide for graphics (PNG, JPG, or PDF format (only) for pdflatex; EPS format (only) for standard \LaTeX{}).
% \fi
%    \begin{macrocode}
\RequirePackage{graphicx}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{array}
% Additional column formatting types for tables.
% \iffalse
%% Additional column formatting types for tables.
% \fi
%    \begin{macrocode}
\RequirePackage{array}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{calc}
% Required for calculations involving lengths or counters,
% such as changes to widths for margin adjustment.
% \iffalse
%% Required for calculations involving lengths or counters, such as changes to widths for margin adjustment.
% \fi
%    \begin{macrocode}
\RequirePackage{calc}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{textcomp}
% Additional commands for common symbols and punctuation.
% \iffalse
%% Additional commands for common symbols and punctuation.
% \fi
%    \begin{macrocode}
\RequirePackage{textcomp}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{ucccrest}
% University College Cork crest (restricted).
% Required for the classic title page.
% \iffalse
%% University College Cork crest (restricted).
% \fi
%    \begin{macrocode}
\RequirePackage{ucccrest}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{setspace}
% Provide 1½ or double line spacing.
% \iffalse
%% Provide 1½ or double line spacing.
% \fi
%    \begin{macrocode}
\RequirePackage{setspace}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{float}
% Allows redesigning of floats and creation of new float
%       types.
% \iffalse
%% Allows redesigning of floats and creation of new float types.
% \fi
%    \begin{macrocode}
\RequirePackage{float}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{relsize}
% Provides size-relative font size changes (smaller, larger,
% etc).
% \iffalse
%% Provides size-relative font size changes (smaller, larger, etc).
% \fi
%    \begin{macrocode}
\RequirePackage{relsize}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{textcase}
% Provides a more sophisticated casing function than the
%       default.
% \iffalse
%% Provides a more sophisticated casing function than the default.
% \fi
%    \begin{macrocode}
\RequirePackage{textcase}%
%    \end{macrocode}
% \end{CPK@package}
% \begin{CPK@package}{xcolor}
% Provide color.
% \iffalse
%% Provide color.
% \fi
%    \begin{macrocode}
\RequirePackage{xcolor}%
  \@ifundefined{T}{%
	    \newcommand{\T}[2]{{\fontencoding{T1}%
	      \selectfont#2}}}{}
%    \end{macrocode}
% There seems to be a bug in the T1 encoding of some package
% (unidentified, but possibly \textsf{xcolor}) which
% uses the command {\ttfamily{}\textbackslash{}T1}, which is an
% impossibility (no digits allowed in command names). So we fake
% it here to stop \LaTeX{} complaining, by dropping the first
% argument on the floor.
% \end{CPK@package}
% \begin{CPK@package}{hyperref}
% Provides complex settings for making hypertext (clickable)
%       links in PDF and PS output for URIs, cross-references, and
%       bibliographic citations.
% \iffalse
%% Provides complex settings for making hypertext (clickable) links in PDF and PS output for URIs, cross-references, and bibliographic citations.
% \fi
%    \begin{macrocode}
\RequirePackage{hyperref}%
  \hypersetup{linkcolor=Blue,urlcolor=DarkBlue,
  citecolor=DarkRed,colorlinks=true}
  \AtBeginDocument{\renewcommand{\UrlFont}{\ttfamily}}
%    \end{macrocode}
% \end{CPK@package}
% 
% \subsection{Modifications to the \textsf{report} class
% and packages}\label{packagemods}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% Modifications to the _report_ class and packages
% \fi
% Now that the \textsf{report} class and the
%   packages are loaded, we can start making the necessary
%   changes.\par
% \begin{CPK@macro}{\geometry}\label{macro--geometry}
% Fix the geometry for two-sided work.\par
%    \begin{macrocode}
\ifUCC@oneside
  \newgeometry{left=4cm,right=2.5cm,top=3cm,bottom=3cm,
	      headheight=22pt}
\else
  \newgeometry{inner=4cm,outer=2.5cm,top=3cm,bottom=3cm,
               headheight=22pt,twoside}
\fi
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\bibname}\label{macro--bibname}
% Call the references References, not Bibliography.\par
%    \begin{macrocode}
\renewcommand{\bibname}{References}
\def\UCC@bibsort{\relax}
\newcommand{\mybibstyle}[3][\relax]{%
  \if\relax#1
	    \RequirePackage[backend=biber,style=#2]{biblatex}%
  \else
    \RequirePackage[backend=biber,sort=#1,style=#2]{biblatex}%
  \fi
  \addbibresource{#3}%
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\ifjustified}\label{macro--ifjustified}
% The flags implementing [re-]justification and
%     [re-]indentation explained above are used here to
%     control loading of the \textsf{parskip},
%     \textsf{ccaption}, and
%     \textsf{footmisc} packages.\par
% Justified text, signalled with {\ttfamily{}\textbackslash{}ifjustified} requires only
%     \textsf{footmisc}, and only with the
%     \textbf{\texttt{bottom,stable}} options, because
%     \LaTeX{}'s default is to justify everything.\par
% \changes{v0.94}{2012/03/19}{updated (manual comment)}
%    \begin{macrocode}
\ifjustified
  \RequirePackage[bottom,stable]{footmisc}
%    \end{macrocode}
% On the other hand, unjustified text (the default)
%     requires the \textsf{ccaption} package and its
%     re-setting of the captioning to be unjustified; and the
%     \textbf{\texttt{ragged}} option to the
%     \textsf{footmisc} package.\par
%    \begin{macrocode}
\else
  \RequirePackage{ccaption}
  \captionstyle{\raggedright}%
  \RequirePackage[bottom,ragged,stable]{footmisc}
  \raggedright
\fi
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\ifindented}\label{macro--ifindented}
% Unindented text is the default, so it gets
%     established here, along with paragraph-spacing, unless
%     the \textbf{\texttt{indented}} option has been specified,
%     which sets the {\ttfamily{}\textbackslash{}ifindented}.\par
%    \begin{macrocode}
\ifindented
  \parindent1.5em
\else
  \RequirePackage{parskip}
\fi
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@length}{\UCC@textbodywidth}\label{fancy}
% To set the width of the boxes needed to handle
%     multiline running headers and footers, we need to copy the
%     text width.\par
% \changes{v1.11}{2013/07/23}{Added replication of columnwidth for use in headers to avoid conflict with longtable and lscape.}
%    \begin{macrocode}
\newlength{\UCC@textbodywidth}
\setlength{\UCC@textbodywidth}{\textwidth}
%    \end{macrocode}
% \end{CPK@length}
% \begin{CPK@macro}{\pagestyle}\label{macro--pagestyle}
% The loading of the \textsf{fancyhdr} package
%     is controlled by the {\ttfamily{}\textbackslash{}iffancy} switch. (Bear in mind
%     that these running headers and footers can be ignored by
%     using the \textbf{\texttt{plainheaders}} option.)\par
%    \begin{macrocode}
\iffancy
  \message{Fancy mode }%
  \RequirePackage{fancyhdr}
  \pagestyle{fancy}
%    \end{macrocode}
% We set the default page style to fancy. Although we
%     are using the \textsf{report} class as our
%     basis, it is single-sided by default, but we need to
%     accommodate two-sided usage.\par
% \changes{v1.00}{2012/06/15}{Made plain style for chapter starts retain the page number}
% \changes{v1.10}{2013/07/09}{Added specs for twosided fancy headers}
%    \begin{macrocode}
  \ifUCC@oneside
    \message{One-sided plain}%
    \fancypagestyle{plain}{%
      \fancyhf{}
      \cfoot{\thepage}%
      \renewcommand{\headrulewidth}{0pt}
      \renewcommand{\footrulewidth}{0pt}}
  \else
    \message{Two-sided plain}%
    \fancypagestyle{plain}{%
      \fancyhf{}
      \fancyfoot[CO,CE]{\thepage}%
      \renewcommand{\headrulewidth}{0pt}
      \renewcommand{\footrulewidth}{0pt}}
  \fi
%    \end{macrocode}
% For the one-sided running headers, the left-hand one
%     checks to see if the right and left marks are the same: if
%     so, do nothing (ie, leave the header as it is); otherwise,
%     use the left mark (the chapter title). As chapter titles
%     can be quite long, we set them in a
%     {\ttfamily{}\textbackslash{}parbox} just under half a page-width
%     wide, so they will wrap and not interfere with the
%     right-hand running header…\par
%    \begin{macrocode}
  \fancyhf{}
  \newlength{\rheadhang}
  \settowidth{\rheadhang}{\footnotesize\thechapter.\space}
  \ifUCC@oneside
    \message{One-sided fancy headers}%
    \lhead{\ifthenelse{\equal{\leftmark}{\rightmark}}{}{%
      \footnotesize\scshape\parbox[b]{.475\UCC@textbodywidth}{%
        \hangindent\rheadhang\hangafter1\raggedright
          {\let\\\space\leftmark}}}}
%    \end{macrocode}
% …which contains the section title in the right
%     mark, which we typeset exactly the same way, except that
%     it is made flush right for symmetry. There is no centre
%     running header.\par
%    \begin{macrocode}
    \rhead{\footnotesize\itshape
           \parbox[b]{.475\UCC@textbodywidth}{%
             \flushright{\let\\\space\rightmark}}}
    \chead{}
%    \end{macrocode}
% For two-sided running headers it's simpler, because no
%   cross-checking is needed.\par
%    \begin{macrocode}
  \else
    \message{Two-sided fancy headers}%
    \fancyhead[LE]{\ifthenelse{\equal{\leftmark}{\rightmark}}{}{%
      \footnotesize\scshape\parbox[b]{\UCC@textbodywidth}{%
        \hangindent\rheadhang\hangafter1\raggedright
          {\let\\\space\leftmark}}}}
    \fancyhead[RO]{\footnotesize\itshape
      \parbox[b]{\UCC@textbodywidth}{%
      \flushright{\let\\\space\rightmark}}}
  \fi
%    \end{macrocode}
% The running footers are different on fancy and plain
%     pages: on the left goes the title; on the right goes the
%     author; but on plain pages they are left empty. The centre
%     running footer always contains the page number, as
%     required by the Registrar's Rules.\par
% \changes{v0.91}{2011/04/28}{Zapped the intrusive double backslash in titles affecting the running footers}
% \changes{v0.99}{2012/04/15}{Italicised the thesis title in the footer}
%    \begin{macrocode}
  \ifUCC@oneside
    \message{One-sided fancy footers}%
    \lfoot{\fancyplain{}{\footnotesize
      \parbox[t]{.475\UCC@textbodywidth}{%
        \itshape\raggedright{\@@title}}}}% 
    \rfoot{\fancyplain{}{\footnotesize\UCC@author}}
    \cfoot{\fancyplain{\small\thepage}{\small\thepage}}
  \else
    \message{Two-sided fancy footers}%
    \fancyfoot[LE]{\fancyplain{}{\footnotesize
       \parbox[t]{.475\UCC@textbodywidth}{%
         \itshape\raggedright{\@@title}}}}
    \fancyfoot[RO]{\fancyplain{}{\footnotesize\UCC@author}}
    \fancyfoot[CE,CO]{\fancyplain{%
       \small\thepage}{\small\thepage}}
  \fi
%    \end{macrocode}
% Finally, we set the header and footer rules to null,
%     and we implement the chapter and section marking to
%     gather the current titling in
%     {\ttfamily{}\textbackslash{}chaptermark} and
%     {\ttfamily{}\textbackslash{}sectionmark}, and ensure that the
%     default headers do not perform any uppercasing by
%     setting the {\ttfamily{}\textbackslash{}ps@headings} command to
%     null.\par
% \changes{v0.99}{2012/04/15}{Fixed horrible default uppercased headings at last}
%    \begin{macrocode}
  \addtolength{\headheight}{10pt}
  \renewcommand{\headrulewidth}{0pt}
\else
  \message{^MPlain (non-fancy) mode }%
\fi
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}{}}
\def\ps@headings{}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\now}\label{macro--now}
% Calculate the time of day and provide for a
%     timestamp to identify draft versions.\par
% \changes{v0.70}{2010/05/29}{Added timestamp}
% \changes{v0.96}{2012/03/23}{Simplified now, added adobedate}
%    \begin{macrocode}
\newcounter{hours}
\newcounter{minutes}
\newcounter{temp}
\setcounter{hours}{\time}%
\setcounter{minutes}{\value{hours}}%
\divide\c@hours by60 % hours is now right
\setcounter{temp}{\value{hours}}%
\multiply\c@temp by60 % integer part to deduct
\addtocounter{minutes}{-\value{temp}}% make deduction
\newcommand{\now}{% \time is in minutes since midnight
  \ifnum\c@hours>9\else0\fi\thehours:%
  \ifnum\c@minutes>9\else0\fi\theminutes}
\def\adobedate{D:\number\year
  \ifnum\month>9\else0\fi\number\month
  \ifnum\day>9\else0\fi\number\day\now00}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\TODAY}\label{macro--TODAY}
% Redefine {\ttfamily{}\textbackslash{}today} the European way
%     round as {\ttfamily{}\textbackslash{}TODAY}, and provide an
%     ISO-format version for the footers.\par
%    \begin{macrocode}
\def\today{\number\day\space\ifcase\month\or
  January\or February\or March\or 
  April\or May\or June\or
  July\or August\or September\or 
  October\or November\or December\fi
  \space\number\year}
\def\TODAY{\number\year{-}%
  \ifnum\month<10 0\fi\number\month{-}%
  \ifnum\day<10 0\fi\number\day}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\define@newfont}\label{macro--define@newfont}
% The test for small caps in the next command below is
%     due to David Carlisle on \href{https://tex.stackexchange.com/questions/218539/is-it-possible-to-test-whether-small-caps-are-available-with-the-current-font}{StackExchange}. 
%     This redefinition enables it by recording the
%     availability.\par
%    \begin{macrocode}
\def\define@newfont{%
  \begingroup
    \let\typeout\@font@info
    \escapechar\m@ne
    \expandafter\expandafter\expandafter
       \split@name\expandafter\string\font@name\@nil
      \try@load@fontshape % try always
    \expandafter\ifx
       \csname\curr@fontshape\endcsname \relax
       \expandafter\gdef\csname \curr@fontshape/sub\endcsname{}% new      
      \wrong@fontshape\else
      \extract@font\fi
  \endgroup}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\UCC@sc}\label{macro--UCC@sc}
% Test if the current typeface has small caps, and if
%   not, fake them.\par
%    \begin{macrocode}
\newcommand{\UCC@sc}[1]{%
  \ifcsname \f@encoding/\f@family/\f@series/sc/sub\endcsname
     {\smaller\MakeTextUppercase{#1}}%
  \else 
    \ifcsname \f@encoding/\f@family/\f@series/sc\endcsname
      \textsc{#1}%
    \else 
      {\smaller\MakeTextUppercase{#1}}%
    \fi
  \fi}
%    \end{macrocode}
% \end{CPK@macro}
% \subsection{Metadata}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% Metadata
% \fi
% Define the metadata ({\ttfamily{}\textbackslash{}title} and
%   {\ttfamily{}\textbackslash{}date} are already given by \LaTeX{} in the
%   \textsf{report} class, and we redefine
%   {\ttfamily{}\textbackslash{}author} below). These are all done the
%   same way, with a default value that gets overridden when an
%   authorial value is given.\par
% \begin{CPK@macro}{\institution}\label{macro--institution}
% Institution (nominally still the
%     {\smaller NUI}). You can't change this.\par
%    \begin{macrocode}
\def\UCC@institution@en{National University of Ireland, Cork}
\def\UCC@institution@ga{Ollscoil na hÉireann, Corcaigh}
\def\UCC@university@en{University College Cork}
\def\UCC@university@ga{Coláiste na hOllscoile Corcaigh}
%\newcommand{\institution}[2][en]{%
%    \def\csname UCC@institution@#2\endcsname{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \changes{v0.97}{2012/03/31}{Added author so we can have optional student number}
% \begin{CPK@macro}{\author}\label{macro--author}
% Provide a mandatory first argument on the
%     {\ttfamily{}\textbackslash{}author} command for giving the student
%     number or {\smaller ORCID}\index{ORCID}.\par
%    \begin{macrocode}
\def\UCC@idno{0000-0000-0000-0000}
\def\UCC@author{Anon}
\newif\ifUCC@orcid
\def\UCC@find@orcid#1#2#3#4#5#6\sentinel{%
  \if-#5 \UCC@orcidtrue
  \else \UCC@orcidfalse
  \fi}
\renewcommand{\author}[2]{%
   \gdef\UCC@idno{#1}%    
   \expandafter\UCC@find@orcid#1\sentinel
   \gdef\UCC@author{#2}%
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\subtitle}\label{macro--subtitle}
% Optional subtitle.\par
%    \begin{macrocode}
\def\UCC@subtitle{\relax}
\newcommand{\subtitle}[1]{\gdef\UCC@subtitle{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\sponsor}\label{macro--sponsor}
% Sponsor or funding agency.\par
%    \begin{macrocode}
\def\UCC@sponsor{\relax}
\newcommand{\sponsor}[1]{\gdef\UCC@sponsor{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\supervisor}\label{macro--supervisor}
% Supervisor, but syntactically this needed a plural
%     value for the string label used in formatting, so we
%     define {\ttfamily{}\textbackslash{}supervisors} as well.\par
%    \begin{macrocode}
\def\UCC@supervisor{[Name not supplied]}
\def\UCC@supervisorname{Supervisor}
\newcommand{\supervisor}[1]{\gdef\UCC@supervisor{#1}}
\newcommand{\supervisors}[1]{\gdef\UCC@supervisor{#1}%
  \def\UCC@supervisorname{Supervisors}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\module}\label{macro--module}
% Only for dissertations and essays.\par
%    \begin{macrocode}
\def\UCC@module{\relax}
\newcommand{\module}[1]{\gdef\UCC@module{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\handles}\label{macro--handles}
% \par
%    \begin{macrocode}
\def\UCC@collegehandle@en{College of}
\def\UCC@schoolhandle@en{School of}
\def\UCC@departmenthandle@en{Department of}
\def\UCC@institutehandle@en{Institute}
\def\UCC@hospitalhandle@en{Hospital}
\def\UCC@centrehandle@en{Centre}
\def\UCC@unithandle@en{Unit}
\def\UCC@degreehandle@en{Degree of}
%
\def\UCC@collegehandle@ga{Coláiste}
\def\UCC@schoolhandle@ga{Scoil an}
\def\UCC@departmenthandle@ga{Roinn an}
\def\UCC@institutehandle@ga{Institúid }
\def\UCC@hospitalhandle@ga{Spidéal }
\def\UCC@centrehandle@ga{Lárionad }
\def\UCC@unithandle@ga{Aonad }
\def\UCC@degreehandle@ga{Céim }
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\college}\label{macro--college}
% Define the Colleges.\par
%    \begin{macrocode}
\newcommand{\college}[1]{%
  \ifthenelse{\equal{#1}{acsss}}{%
    \gdef\UCC@college@en{%
      \UCC@collegehandle@en\
      Arts, Celtic Studies and Social Sciences}%
    \gdef\UCC@college@ga{%
      \UCC@collegehandle@ga\
      na nEalaíon, an Léinn Cheiltigh agus na
      nEolaíochtaí Sóisialta}}%
  {\ifthenelse{\equal{#1}{sefs}}{%
    \gdef\UCC@college@en{%
      \UCC@collegehandle@en\
      Science, Engineering and Food Science}%
    \gdef\UCC@college@ga{%
      \UCC@collegehandle@ga\
      na hEolaíochta, na hInnealtóireachta 
      agus na hEolaíochta Bia}}% 
  {\ifthenelse{\equal{#1}{med}}{%
    \gdef\UCC@college@en{%
      \UCC@collegehandle@en\ Medicine and Health}%
    \gdef\UCC@college@ga{%
      \UCC@collegehandle@ga\
      an Leighis agus na Sláinte}}%
  {\ifthenelse{\equal{#1}{buslaw}}{%
    \gdef\UCC@college@en{%
      \UCC@collegehandle@en\ Business and Law}%
    \gdef\UCC@college@ga{%
      \UCC@collegehandle@ga\ an Ghnó agus an Dlí}}%
  {\gdef\UCC@college@en{No college identified}%
   \gdef\UCC@college@ga{Níor aithníodh aon choláiste}}%
}}}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\school}\label{macro--school}
% Define the School, Department, or Discipline. Also the
%   Hospital, Institute, Centre, or Unit.\par
%    \begin{macrocode}
\def\UCC@unittype{School}
\def\UCC@school{\relax}
\newcommand{\school}[1]{\gdef\UCC@school{%
  \csname UCC@schoolhandle@\UCC@language\endcsname\ #1}%
  \gdef\UCC@unittype{School}}
\def\UCC@discipline{\relax}
\newcommand{\discipline}[1]{\gdef\UCC@discipline{#1}%
  \gdef\UCC@unittype{Discipline}}
\def\UCC@department{\relax}
\newcommand{\department}[1]{\gdef\UCC@department{#1}%
  \gdef\UCC@unittype{Department}}
\def\UCC@hospital{\relax}
\newcommand{\hospital}[2][\relax]{%
  \if#1\relax
    \gdef\UCC@hospital{#2 \csname
      UCC@hospitalhandle\UCC@language\endcsname}%
  \else
    \ifthenelse{\equal{#1}{}}%
      {\gdef\UCC@hospital{#2}}%
      {\gdef\UCC@hospital{#2 (#1)}}%
  \fi}
\def\UCC@institute{\relax}
\newcommand{\institute}[2][\relax]{%
  \if#1\relax
    \gdef\UCC@institute{#2 \csname
      UCC@institutehandle\UCC@language\endcsname}%
  \else
    \ifthenelse{\equal{#1}{}}%
      {\gdef\UCC@institute{#2}}%
      {\gdef\UCC@institute{#2 (#1)}}%
  \fi}
\def\UCC@centre{\relax}
\newcommand{\centre}[2][\relax]{%
  \if#1\relax
    \gdef\UCC@centre{#2 \csname
      UCC@centrehandle\UCC@language\endcsname}%
  \else
    \ifthenelse{\equal{#1}{}}%
      {\gdef\UCC@centre{#2}}%
      {\gdef\UCC@centre{#2 (#1)}}%
  \fi}
\def\UCC@unit{\relax}
\newcommand{\unit}[2][\relax]{%
  \if#1\relax
    \gdef\UCC@unit{#2 \csname
      UCC@unithandle\UCC@language\endcsname}%
  \else
    \ifthenelse{\equal{#1}{}}%
      {\gdef\UCC@unit{#2}}%
      {\gdef\UCC@unit{#2 (#1)}}%
  \fi}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\degree}\label{macro--degree}
% The standard postgraduate degrees are given as the
%     standard abbreviations: PhD, MA, MSc. All others
%     {\sffamily {\smaller MUST}} be given in
%     full.\par
%    \begin{macrocode}
\def\UCC@degree{\relax}
\newcommand{\degree}[1]{%
  \ifthenelse{\equal{#1}{PhD}}{%
    \gdef\UCC@degree{Doctor of Philosophy}}%
  {\ifthenelse{\equal{#1}{MA}}{%
    \gdef\UCC@degree{Master of Arts}}% 
  {\ifthenelse{\equal{#1}{MSc}}{%
    \gdef\UCC@degree{Master of Science}}%
  {\gdef\UCC@degree{#1}}}}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\professor}\label{macro--professor}
% The name of the student's Professor. Also provide
%     {\ttfamily{}\textbackslash{}hod} for syntactic sugar.\par
%    \begin{macrocode}
\def\UCC@prof{\relax}
\newcommand{\professor}[1]{\gdef\UCC@prof{#1}}
\let\hod\professor
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\quals}\label{macro--quals}
% Prior qualifications.\par
%    \begin{macrocode}
\def\UCC@quals{\relax}
\newcommand{\qualifications}[1]{\gdef\UCC@quals{#1}}%
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\volume}\label{macro--volume}
% Optional volume number.\par
%    \begin{macrocode}
\def\UCC@volume{\relax}
\def\UCC@maxvolumes{\relax}
\def\volume #1 of #2 {\gdef\UCC@volume{#1}%
                      \gdef\UCC@maxvolumes{#2}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\@submission}\label{macro--@submission}
% This is the formal prioritising of the order in which
%     the various divisional identifiers are given, if used:
%     each one is enclosed in a test to ensure it is only used
%     if it has been specified.\par
%    \begin{macrocode}
\def\UCC@submission{%
  {\Large\bfseries\csname UCC@university@\UCC@language\endcsname\par}%
  {\bfseries\csname UCC@college@\UCC@language\endcsname}%
  \if\UCC@hospital\relax
  \else\par\textsc{\UCC@hospital}%
  \fi
  \if\UCC@school\relax
  \else\par\textsc{\UCC@school}%
  \fi
  \if\UCC@department\relax
  \else\par\textsc{\UCC@department}%
  \fi
  \if\UCC@discipline\relax
  \else\par\textsc{\UCC@discipline}%
  \fi
  \if\UCC@institute\relax
  \else\par\textsc{\UCC@institute}%
  \fi
  \if\UCC@centre\relax
  \else\par\textsc{\UCC@centre}%
  \fi
  \if\UCC@unit\relax
  \else\par\textsc{\UCC@unit}%
  \fi
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\availability}\label{macro--availability}
% If the document is available online the
%     {\ttfamily{}\textbackslash{}availability} command can be used to
%     provide a short paragraph with links. Keep the 2.4 name
%     ({\ttfamily{}\textbackslash{}annotation}) for compatibility for a
%     while.\par
%    \begin{macrocode}
\def\UCC@annot{\relax}
\newcommand{\availability}[1]{\gdef\UCC@annot{#1}}
\let\annotation\availability
%    \end{macrocode}
% \end{CPK@macro}
% Two final commands record the metadata needed to
%   complete the PDF Properties, which is needed for electronic
%   submission.\par
% \changes{v0.96}{2012/03/23}{Added subject and keywords}
% \begin{CPK@macro}{\subject}\label{macro--subject}
% This specifies the subject of the thesis.\par
%    \begin{macrocode}
\def\UCC@subject{SUBJECT NOT GIVEN BY AUTHOR}
\newcommand{\subject}[1]{\gdef\UCC@subject{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\keywords}\label{macro--keywords}
% This specifies a comma-separated list of keywords
%     for use when indexing your thesis.\par
%    \begin{macrocode}
\def\UCC@keywords{KEYWORDS NOT GIVEN BY AUTHOR}
\newcommand{\keywords}[1]{\gdef\UCC@keywords{#1}}
%    \end{macrocode}
% \end{CPK@macro}
% \subsection{Title page}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% Title page
% \fi
% Create the title page as per Registrar's Rules. This
%   automatically triggers the Table of Contents, List of
%   Figures, List of Tables, and the Declaration of
%   Responsibilityy.\par
% \begin{CPK@macro}{\ifmadetitle}\label{macro--ifmadetitle}
% First, define a switch that can be used if
%     {\ttfamily{}\textbackslash{}maketitle} is forgotten.\par
%    \begin{macrocode}
\newif\ifmadetitle
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\title}\label{macro--title}
% Allow for an optional short (or unformatted) title\par
% \changes{v1.08}{2011/04/07}{Added the @title and @@title commands}
%    \begin{macrocode}
\def\@@title{\relax}
\renewcommand{\title}[2][\relax]{%
  \gdef\@title{#2}%
  \ifthenelse{\equal{#1}{\relax}}{%
    \gdef\@@title{#2}%
    \message{No short title}%
  }{%
    \gdef\@@title{#1}%
    \message{Short title: #1}%
  }%
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\maketitle}\label{macro--maketitle1}
% The order is: institution, crest, title, subtitle,
%     volume, author, qualifications,
%     student/{\smaller ORCID}\index{ORCID} number, degree, college,
%     institute, school, department, professor, supervisor,
%     sponsor, date.\par
%    \begin{macrocode}
\renewcommand\maketitle{%
%    \end{macrocode}
% We want this on a page by itself, centered both
%     vertically and horizontally.\par
%    \begin{macrocode}
  \begin{titlepage}%
    \ifthesis\relax\else\null\vfill\fi
    \begin{center}%
      \Large\UCC@institution@ga
      \par\medskip
      \textbf{\UCC@institution@en}
      \par\bigskip
      \ifthesis
        \UCC@crest
        \par\bigskip
      \fi
%    \end{macrocode}
% Title is compulsory: subtitle is optional.\par
%    \begin{macrocode}
      {\LARGE\bfseries\@title \par}%
      \if\UCC@subtitle\relax\else\medskip
        {\Large\bfseries\UCC@subtitle\par}%
      \fi
%    \end{macrocode}
% Volume number is compulsory if the thesis is
%     multi-volume.\par
%    \begin{macrocode}
      \ifthesis
        \if\UCC@volume\relax\else
          \vspace{2pc}{\large Volume \UCC@volume\ of 
                       \UCC@maxvolumes\par}%
        \fi
      \fi
      \vspace*{2pc}%
%    \end{macrocode}
% Author is compulsory; qualifications are optional;
%     student number or {\smaller ORCID}\index{ORCID} is
%     compulsory.\par
% \changes{v0.90}{2011/04/07}{Changed author to LARGE size.}
%    \begin{macrocode}
      {\ifthesis\large Thesis presented by\par\fi
       \LARGE\UCC@author\hspace{.333em}%
       \if\relax\UCC@quals\else
         \UCC@sc{\UCC@quals}%
       \fi
       \\[6pt]\Large
       \ifUCC@orcid
         \href{https://orcid.org/\UCC@idno}{\UCC@idno}%
       \else
         \href{mailto:{\UCC@idno}@umail.ucc.ie}{\UCC@idno}%
       \fi
       \par}%
%    \end{macrocode}
% Grade of degree is compulsory. Phrasing for some
%     degrees `in part fulfilment' needs
%     investigating.\par
%    \begin{macrocode}
      \ifthesis
        \medskip
        {\large for the degree of\\
         \Large\bfseries\UCC@degree\par}%
      \else
        {\large\UCC@module~--- Minor Dissertation\par}%
      \fi
      \vspace*{1.5pc}%
%    \end{macrocode}
% Use the preformed {\ttfamily{}\textbackslash{}UCC@submission}
%     which reproduces those divisional elements which have
%     been specified.\par
%    \begin{macrocode}
      \ifthesis
        {\large\UCC@submission\par}
        \vspace*{1pc}%
      \fi
%    \end{macrocode}
% If this is a thesis, give the Professor and
%     Supervisor(s) as a tabular alignment.\par
%    \begin{macrocode}
      \ifthesis\large
        \begin{tabular}{%
>{\raggedleft\arraybackslash}p{.45\UCC@textbodywidth}%
>{\raggedright\arraybackslash}p{.45\UCC@textbodywidth}}
%    \end{macrocode}
% Professor or Head of School/Department is now
%     required.\par
%    \begin{macrocode}
          \if\UCC@prof\relax\else
              Head of \UCC@unittype:&\UCC@prof\\[1pc]
          \fi
	  \UCC@supervisorname:&
%    \end{macrocode}
% Multiple supervisors must have been separated  by
%     double backslashes, so we can use a 1-column table to
%     make them format vertically.\par
%    \begin{macrocode}
          \begin{tabular}[t]{@{}l@{}}
            \UCC@supervisor
          \end{tabular}%
        \end{tabular}\par
%    \end{macrocode}
% If this was not a thesis, just
%     give the supervisor. This should probably be collapsed
%     into the above formatting.\par
%    \begin{macrocode}
        \else
            Supervisor:\quad\UCC@supervisor\par
        \fi
        \medskip
%    \end{macrocode}
% Sponsor, if there is one.\par
%    \begin{macrocode}
        \if\UCC@sponsor\relax\else
           Research supported by \UCC@sponsor\par
        \fi
%    \end{macrocode}
% Date of submission comes last.\par
%    \begin{macrocode}
        \medskip\@date\par\vfill
%    \end{macrocode}
% That's all, folks!\par
%    \begin{macrocode}
      \end{center}%
%    \end{macrocode}
% Set the title page number to one and make sure it
%     has no running header or footer.\par
%    \begin{macrocode}
      \setcounter{page}{1}%
      \pagestyle{empty}%
%    \end{macrocode}
% Set the {\smaller PDF} metadata, but
%     temporarily redefine the double backslash in case it has
%     been used in the title.\par
% \changes{v0.96}{2012/03/23}{Added PDF metadata}
% \changes{v0.98}{2012/04/02}{Moved pdfinfo to the end of maketitle, temporarily nullified the double backslash}
% \changes{v2.9}{2020/05/29}{Moved the pdfinfo into the maketitle, using hyperref's pdfsetup.}
%    \begin{macrocode}
      \let\doublebackslash\\\let\\\space
      \hypersetup{pdfauthor={\UCC@author},
                  pdftitle={\@title},
                  pdfsubject={\UCC@subject},
                  pdfkeywords={\UCC@keywords},
                  pdfcreator={Xelatex}}%
      \let\\\doublebackslash
    \end{titlepage}%
%    \end{macrocode}
% Now reset the commands used to create the title page
%     so that they can't accidentally be used again. Note that
%     the stored values in the
%     \verb|\@|-variables remain unaffected
%     for re-use in running headers, etc.\par
%    \begin{macrocode}
  \global\let\thanks\@empty
  \global\let\and\relax
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\professor\relax
  \global\let\hod\relax
  \global\let\supervisor\relax
  \global\let\supervisors\relax
  \global\let\degree\relax
  \global\let\college\relax
  \global\let\school\relax
  \global\let\department\relax
  \global\let\discipline\relax
  \global\let\institute\relax
  \global\let\subject\relax
  \global\let\keywords\relax
  \global\let\subtitle\relax
  \global\let\qualifications\relax
  \global\let\hospital\relax
  \global\let\centre\relax
  \global\let\unit\relax
  \global\let\volume\relax
  \global\let\sponsor\relax
  \global\let\maketitle\relax
%    \end{macrocode}
% Set the footnote counter (back) to zero, establish
%     Roman (lowercase) page numbering for the front matter, and
%     set the ToC depth down to the subsubsection.\par
%    \begin{macrocode}
  \setcounter{footnote}{0}%
  \pagestyle{empty}
  \setcounter{tocdepth}{3}
%    \end{macrocode}
% Insert the availability/annotation para on an empty
%     page, either extra (for single-sided) or on the back of the
%     title page (for double-sided).\par
%    \begin{macrocode}
  \ifUCC@oneside\clearpage
    \if\relax\UCC@annot
    \else\null\vfill{\small\@annot\par}\clearpage\fi
  \else
    \if\relax\UCC@annot\cleardoublepage
    \else\clearpage\null\vfill{\small\@annot\par}\clearpage\fi
  \fi
%    \end{macrocode}
% If this is a thesis, set the section numbering depth
%     to 5; otherwise to zero (other uses for this document
%     class).\par
%    \begin{macrocode}
  \ifthesis
    \setcounter{secnumdepth}{5}
    \pagenumbering{roman}%
  \else
    \setcounter{secnumdepth}{0}
    \pagenumbering{arabic}
  \fi
%    \end{macrocode}
% Turn on fancy page headers and footers if the option
%     was set.\par
%    \begin{macrocode}
  \iffancy
    \pagestyle{fancy}
  \else
    \pagestyle{plain}
  \fi
%    \end{macrocode}
% As an integral part of the
%     {\ttfamily{}\textbackslash{}maketitle} command, do the Table of
%     Contents immediately after the title page, as required
%     by the Registrar's rules; then do the List of Figures
%     and List of Tables if they are needed.\par
%    \begin{macrocode}
  \ifthesis
    \tableofcontents
    \iflof\listoffigures\fi
    \iflot\listoftables\fi
  \fi
%    \end{macrocode}
% Flag the titlepage as having been done.\par
%    \begin{macrocode}
  \madetitletrue
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\makedecl}\label{macro--makedecl}
% If this is a thesis (ie not a term paper or essay),
%     start a new page, set both marks to null, and output the
%     Declaration of Responsibility.\par
% \changes{v0.90}{2011/04/07}{Wording from Michelle Nelson.}
% \changes{v0.90}{2011/04/28}{Centering removed from Declaration of Responsibility.}
%    \begin{macrocode}
\newif\ifmadedecl
\newcommand{\makedecl}{%
  \ifthesis
    \ifUCC@oneside\clearpage\else\cleardoublepage\fi
    \null\vfill\markboth{}{}\label{UCC:decl}%
    \begingroup
    This is to certify that the work I am submitting
    is my own and has not been submitted for another
    degree, either at University College Cork or
    elsewhere. All external references and sources
    are clearly acknowledged and identified within
    the contents. I have read and understood the
    regulations of University College Cork concerning
    plagiarism.
    \par\flushright\bigskip\bigskip\bigskip\leavevmode
    \hbox to2in{\hrulefill}\par\medskip
    \textit{\UCC@author}\par\endgroup\vfill
  \fi
  \global\madedecltrue
  \addcontentsline{toc}{section}{Declaration of
    Responsibility}
  \global\UCC@delaydeclfalse}
%    \end{macrocode}
% \end{CPK@macro}
% \subsection{General settings and redefinitions}
% \iffalse
%% 
%% ****************************************************************** 
%% 
%% General settings and redefinitions
% \fi
% This is a collection of changes (usually small) and
%   additions (for convenience).\par
% \subsubsection{Floats}\label{floating}
% Reset the proportions of the page used for floats.
%     This is taken from \href{https://texfaq.org/FAQ-floats}{\nolinkurl{https://texfaq.org/FAQ-floats}}.\par
%    \begin{macrocode}
\renewcommand{\topfraction}{.85}
\renewcommand{\bottomfraction}{.7}
\renewcommand{\textfraction}{.15}
\renewcommand{\floatpagefraction}{.75}
\renewcommand{\dbltopfraction}{.75}
\renewcommand{\dblfloatpagefraction}{.75}
\setcounter{topnumber}{9}
\setcounter{bottomnumber}{9}
\setcounter{totalnumber}{20}
\setcounter{dbltopnumber}{9}
%    \end{macrocode}
% \subsubsection{New front and back matter macros and
%     environments}
% Firstly, a consistent way to provide a Dedication,
%     Acknowledgements, and other preliminaries.\par
% \begin{CPK@environment}{dedication}\label{environment--dedication}
% The \texttt{dedication}
%       environment is for dedicating a thesis. It creates a
%       page on its own and does not make a ToC entry. If the
%       title page has not yet been done, this will trigger it
%       first.\par
%    \begin{macrocode}
\newenvironment{dedication}{%
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else\makedecl\fi
  \clearpage\null\vfill
  \thispagestyle{empty}%
  \begin{center}}{%
  \end{center}\vfill}
%    \end{macrocode}
% \end{CPK@environment}
% \begin{CPK@macro}{\prelim}\label{macro--prelim}
% The {\ttfamily{}\textbackslash{}prelim}
%       command creates a minor frontmatter (unnumbered)
%       section.\par
%    \begin{macrocode}
\newif\ifUCC@delaydecl
\newcommand{\prelim}{%
  \@ifnextchar *
     {\UCC@delaydecltrue\UCC@prelim}
     {\UCC@delaydeclfalse\UCC@prelim{*}}}
\newcommand{\UCC@prelim}[2]{% dummy first arg
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else
    \ifUCC@delaydecl\else\makedecl\fi
  \fi
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \section*{#2}\@mkboth{{#2}}{{#2}}%
  \addcontentsline{toc}{section}{#2}%
  \onehalfspacing}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\refsec}\label{macro--refsec}
% A {\ttfamily{}\textbackslash{}refsec} is a special form of
%       {\ttfamily{}\textbackslash{}prelim} that does not trigger the
%       Declaration of Responsibility, and is typeset
%       single-spaced.\par
%    \begin{macrocode}
\newcommand{\refsec}[1]{%
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \section*{#1}\@mkboth{{#1}}{{#1}}%
  \addcontentsline{toc}{section}{#1}%
  \singlespacing}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\UCC@ackname}\label{macro--UCC@ackname}
% Define a string for the titling of the
% Acknowledgements section, so that it can be redefined
% in the \textbf{\texttt{gaeilge}} option.\par
%    \begin{macrocode}
\def\UCC@ackname{Acknowledgements}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@environment}{acknowledgements}\label{environment--acknowledgements}
% The \texttt{acknowledgements}
% environment uses the {\ttfamily{}\textbackslash{}prelim}
% format.\par
% \changes{v1.11}{2013/07/23}{Added maketitle test to acknowledgements.}
%    \begin{macrocode}
\newenvironment{acknowledgements}{%
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else\makedecl\fi
  \prelim{\UCC@ackname}\singlespacing
}{}%
%    \end{macrocode}
% \end{CPK@environment}
% Redefine the Table of Contents as a section, and the
%       same for the List of Figures and List of Tables.\par
% \begin{CPK@macro}{\tableofcontents}\label{macro--tableofcontents}
% The ToC is just a section, otherwise unchanged.\par
%    \begin{macrocode}
\renewcommand\tableofcontents{%
  \section*{\contentsname
    \@mkboth{\contentsname}{\contentsname}}%
  \@starttoc{toc}%
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\listoffigures}\label{macro--listoffigures}
% LoF works the same as ToC\par
%    \begin{macrocode}
\renewcommand\listoffigures{%
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \section*{\listfigurename
    \@mkboth{\listfigurename}{\listfigurename}}%
  \addcontentsline{toc}{section}{\listfigurename}%
  \@starttoc{lof}%
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\listoftables}\label{macro--listoftables}
% And so does LoT\par
%    \begin{macrocode}
\renewcommand\listoftables{%
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \section*{\listtablename
    \@mkboth{\listtablename}{\listtablename}}%
  \addcontentsline{toc}{section}{\listtablename}%
  \@starttoc{lot}%
}
%    \end{macrocode}
% \end{CPK@macro}
% The Abstract is done slightly differently to normal
%       for a page by itself.\par
% \begin{CPK@macro}{\maketitle}\label{macro--maketitle2}
% We can't use the \texttt{titlepage}
%       environment, because it resets the page number, so we do
%       it like all the other Prelims.\par
%    \begin{macrocode}
\renewenvironment{abstract}{% 
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else\makedecl\fi
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \@beginparpenalty\@lowpenalty
  \section*{\abstractname}%
  \addcontentsline{toc}{section}{\abstractname}%
  \markboth{\abstractname}{\abstractname}%
  \onehalfspacing
}{%
  \clearpage
}
%    \end{macrocode}
% \end{CPK@macro}
% Lastly, the Index, if used.\par
% \begin{CPK@environment}{theindex}\label{environment--theindex}
% Again, this is a section-level start, otherwise it
%       uses the same format as the default. Possibly this
%       should use the \textsf{multicol} package if
%       people wanted balanced columns; but indexes are
%       rare in theses.\par
%    \begin{macrocode}
\renewenvironment{theindex}{%
  \ifUCC@oneside\clearpage\else\cleardoublepage\fi
  \columnseprule \z@
  \columnsep 35\p@
  \twocolumn[\section*{\indexname}]%
  \@mkboth{\indexname}{\indexname}%
  \parindent\z@
  \parskip\z@ \@plus .3\p@\relax
  \let\item\@idxitem}%
 {\clearpage}
%    \end{macrocode}
% We should have a closer look at the
%       \textsf{glossaries} package to see if there is
%       anything there needs redefining.\par
% \end{CPK@environment}
% \subsubsection{Sectioning commands}
% Make sure that {\ttfamily{}\textbackslash{}part}s and
%     {\ttfamily{}\textbackslash{}chapter}s switch to Arabic numbering
%     and the appropriate stretch, because all the prelims are
%     Roman.\par
% \begin{CPK@macro}{\part}\label{macro--part}
% Same as the default, but with a switch to Arabic
%       page numbering and wide spacing if this is the first
%       Part (resets the page number to~1).\par
%    \begin{macrocode}
\renewcommand\part{%
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else\madedecl\fi
  \if@openright
    \cleardoublepage
  \else
    \clearpage
  \fi
  \thispagestyle{plain}%
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \null\vfil
  \ifnum\c@part=0 
    \pagenumbering{arabic}%
    \onehalfspacing
  \fi
  \secdef\@part\@spart}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\chapter}\label{macro--chapter}
% Same switch as in {\ttfamily{}\textbackslash{}part}, checking that this is
%       the first chapter and that we have not started an
%       Appendix, \emph{but only} if the Part
%       number is also zero (ie Parts are not in use).\par
% \changes{v0.99}{2012/04/15}{Changed onehalfspacing to setstretch of 1.333 for prelims and moved the main 1.666 one to here.}
% \changes{v0.99}{2012/04/16}{Changed it back.}
%    \begin{macrocode}
\renewcommand{\chapter}{%
  \ifmadetitle\else\maketitle\fi
  \ifmadedecl\else\makedecl\fi
  \if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{plain}%
  \global\@topnum\z@
  \ifnum\c@chapter=0 
    \ifnum\c@part=0 
      \ifthenelse{\equal{\@chapapp}{\chaptername}}%
                 {\pagenumbering{arabic}\onehalfspacing}%
                 {}%
    \fi
  \fi
  \@afterindentfalse
  \secdef\@chapter\@schapter}
%    \end{macrocode}
% \end{CPK@macro}
% \subsubsection{Epigraphs and quotations}
% \begin{CPK@macro}{\@opttest}\label{macro--@opttest}
% To enable optional argument testing for the null
%       string in Epigraphs (and later, in Quotations), we
%       define a Plain \TeX{} macro which sets the {\ttfamily{}\textbackslash{}ifoptarg} switch.\par
%    \begin{macrocode}
\newif\ifoptarg
\def\@opttest#1#2\sentinel{\ifx[#1\optargtrue
      \else\optargfalse\fi}
\newlength{\mainparskip}
\newlength{\mainparindent}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@environment}{epigraph}\label{environment--epigraph}
% Define an environment for Epigraphs. These would
%       normally go immediate after the
%       {\ttfamily{}\textbackslash{}chapter} command. This is basically
%       the \texttt{quotation} environment modified, but
%       it has to allow for \emph{either} manual
%       \emph{or} automated citation (because it
%       may just be a phrase needing no citation), whereas a
%       normal quotation \emph{must} be
%       cited. It therefore has \emph{two}
%       arguments, described below:\par
% \changes{v0.92}{2011/05/31}{Added Epigraphs.}
%    \begin{macrocode}
\newenvironment{epigraph}[2][\relax]{%
%    \end{macrocode}
% Record the existing paragraph space first, because
%       the \texttt{list} environment may change it; set
%       the font smaller; and record the argument values because
%       they are needed in the end of the environment, so they
%       have to pass across the group boundary.\par
% The compulsory argument is for a \BibTeX{} citation
%       key, so that a proper citation can be formatted; the
%       optional argument is for when a pre-formed,
%       `full' (actually often simpler,
%       non-rigorous) citation is wanted (in which case the
%       compulsory argument must be present but empty).\par
%    \begin{macrocode}
  \mainparskip\parskip\small
  \gdef\@fullcite{#1}%
  \gdef\@quotcite{#2}%
%    \end{macrocode}
% Like the default \texttt{quotation}
%       environment, this is done with an itemized list but with
%       no bullet, no vertical space, and narrower right margin.
%       The only difference is that for \texttt{epigraph}
%       we use italic type.\par
%    \begin{macrocode}
  \begin{itemize}[label={},noitemsep,rightmargin=\leftmargin]%
  \item\parskip\mainparskip\itshape\ignorespaces
}{%
%    \end{macrocode}
% As for the \texttt{quotation}
%       environment below, a citation is compulsory here, even
%       if it's just `Anon'. However, the
%       \BibTeX{} citation key can be empty if there was a manual
%       citation in the optional argument.\par
%    \begin{macrocode}
    \unskip\nobreak\hfil\penalty50
    \hskip2em\hbox{}\nobreak\hfil\upshape\footnotesize
%    \end{macrocode}
% If there is a manual citation (optional argument),
%       use it before any \BibTeX{} one:\par
%    \begin{macrocode}
      \if\@fullcite\relax\else\@fullcite\fi
%    \end{macrocode}
% If the compulsory argument (\BibTeX{} key) was
%       empty (ie, just a pair of curly braces)
%       \emph{and} there was no optional
%       argument, print `Anon.'\par
%    \begin{macrocode}
      \ifthenelse{\equal{\@quotcite}{}}{%
        \if\@fullcite\relax(Anon.)\fi}{%
%    \end{macrocode}
% Otherwise (compulsory argument was provided), test
%       it to see if it contains an optional argument of its
%       own (for example, a page number for a citation key),
%       and {\ttfamily{}\textbackslash{}cite} it accordingly.\par
%    \begin{macrocode}
        \expandafter\@opttest\@quotcite\sentinel
        \ifoptarg\expandafter\cite\@quotcite
        \else\cite{\@quotcite}\fi}%
%    \end{macrocode}
% Now terminate the paragraph so that the citation
%       is fitted in, using the same code from the
%       \DescribeClass{memoir}\textsf{memoir} class as used for the
%       \texttt{quotation} environment below.\par
% \changes{v1.00}{2012/06/11}{Added new positional code for citations to epigraphs}
%    \begin{macrocode}
    \parfillskip\z@\finalhyphendemerits=0\par
    \medskip\end{itemize}%
}%
%    \end{macrocode}
% \end{CPK@environment}
% See the user-level documentation for examples.\par
% The Quotation environment is redefined exactly as for
%     \texttt{epigraph}.\par
% \par\begingroup
%   \fboxsep1em\centering
%   \fbox{\begin{minipage}{0.8\columnwidth}\sffamily
%  \raggedright\parindent0pt
%  \parskip=.5\baselineskip
% This is a change from previous versions. Read
%     carefully.\par
% \end{minipage}}\par\endgroup
% \begin{CPK@macro}{\quotation}\label{macro--quotation}
% In earlier versions, a citation is compulsory, so
%       there was only one argument.\par
%    \begin{macrocode}
\renewenvironment{quotation}[2][\relax]{%
  \mainparskip\parskip\small
  \gdef\@fullcite{#1}%
  \gdef\@quotcite{#2}%
  \begin{itemize}[label={},noitemsep,rightmargin=\leftmargin]%
  \item\parskip\mainparskip\ignorespaces
}{%
%    \end{macrocode}
% This positional code, here and for
%       \texttt{epigraph} is taken from the
%       {\ttfamily{}\textbackslash{}sourceatright} command of the
%       \DescribeClass{memoir}\textsf{memoir} class (thanks to Lee
%       Rudolph and Robin Fairbairns for identifying
%       this).\par
% \changes{v1.00}{2012/06/11}{Added new positional code for citations to block quotations}
% \changes{v1.04}{2013/02/08}{Removed footnotesize for citation, changed hfil to hfill, and moved the parfillskip and finalhyphendemerits earlier}
%    \begin{macrocode}
  \unskip\nobreak\hfil\penalty50
  \hskip2em\hbox{}\nobreak\hfill\upshape\footnotesize
  \if\@fullcite\relax\else\@fullcite\fi
  \ifthenelse{\equal{\@quotcite}{}}{%
    \if\@fullcite\relax(Anon.)\fi}{%
    \expandafter\@opttest\@quotcite\sentinel
    \ifoptarg\expandafter\cite\@quotcite
    \else\cite{\@quotcite}\fi}%
  \parfillskip\z@\finalhyphendemerits=0\par%
  \medskip\end{itemize}%
}%
%    \end{macrocode}
% \end{CPK@macro}
% \subsubsection{Odds 'n' sods}
% This is mostly fixes and utilities.\par
% \changes{v0.99}{2012/04/22}{Removed code for altering layout of description lists, as the modifications were not working consistently}
% \changes{v1.07}{2013/05/06}{Added a setlist command via prepost to preset description lists to the unboxed option}
% Add more space around captions with the
%     {\ttfamily{}\textbackslash{}abovecaptionskip} and
%     {\ttfamily{}\textbackslash{}belowcaptionskip} commands.\par
%    \begin{macrocode}
\setlength{\abovecaptionskip}{.5\baselineskip}
\setlength{\belowcaptionskip}{.5\baselineskip}
%    \end{macrocode}
% \begin{CPK@environment}{table}\label{environment--table}
% Restyle the Table float to have the caption on
%       top.\par
%    \begin{macrocode}
\floatstyle{plaintop}
\restylefloat{table}
%    \end{macrocode}
% \end{CPK@environment}
% \begin{CPK@environment}{figure}\label{environment--figure}
% Restyle the Figure float to have the caption
%       below.\par
%    \begin{macrocode}
\floatstyle{plain}
\restylefloat{figure}
%    \end{macrocode}
% \end{CPK@environment}
% \begin{CPK@macro}{\@pnumwidth}\label{macro--@pnumwidth}
% Make more space for the page number in the ToC, LoT,
%       and LoF.\par
% \changes{v0.90}{2011/04/28}{Changed pnumwidth.}
%    \begin{macrocode}
\renewcommand\@pnumwidth{2em}%
%    \end{macrocode}
% \end{CPK@macro}
% Define a few experimental utilities.\par
%    \begin{macrocode}
\def\inch{\ifmmode{}^{\prime\prime}\else$
                  {}^{\prime\prime}$\fi}
\newcommand{\me}{\UCC@author}
\newcommand{\signature}[1][\relax]{%
  \begin{flushright}\small\me\\
    \if#1\relax\else#1, \fi\@date
  \end{flushright}}
\newcommand{\tm}{\raisebox{2pt}{%
                 \scriptsize\textsf{\texttrademark}}}
\newcommand{\etc}{etc.\ }
\newcommand{\eg}{e.g.\ }
\newcommand{\ie}{i.e.\ }
%    \end{macrocode}
% \begin{CPK@macro}{\hyphenation}\label{macro--hyphenation}
% Add a few bells and whistles to the hyphenation.\par
%    \begin{macrocode}
\hyphenation{%
Analy-ses
Analy-sis
Regi-strar 
Sebas-tian 
analy-ses
analy-sis
bre-vi-ty 
chan-ges 
de-fi-ning 
docu-ment 
epex-e-ge-ses
epex-e-ge-sis
exa-mined
helico-pter
hier-ar-chy 
inter-linea-ted
lexi-cal 
manu-script
no-men-cla-ture
re-fe-ren-ces
re-prin-ted 
smal-ler 
spe-ci-fy 
sub-con-sci-ous-ly 
tech-no-logy
typo-gra-phy
}
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\foreign}\label{macro--foreign}
% Enable semantic distinction of foreign words and
%       phrases.\par
%    \begin{macrocode}
\let\foreign\emph
%    \end{macrocode}
% \end{CPK@macro}
% \begin{CPK@macro}{\marginal}\label{macro--marginal}
% Define a new command for marginal notes.\par
%    \begin{macrocode}
\newcommand{\marginal}[1]{%
  \marginpar{\sffamily\tiny\raggedright#1\par}}
%    \end{macrocode}
% \end{CPK@macro}
% Add a trace to the log file to help in cutting the
%     PDF to separate sections.\par
% \changes{v0.99}{2012/04/07}{Added typeout to bibliography}
% \changes{v2.9}{2020/05/07}{Removed old BiBTeX code}
% \changes{v2.4}{2014/09/21}{Added switch to detect biblatex}
% The new {\ttfamily{}\textbackslash{}vstrut} command which takes
%     account of the surrounding font size has been moved to the
%     documentation.\par
% Last of all, establish 1\nicefrac12 line-spacing and a
%     ragged page-bottom.\par
% \changes{v0.99}{2012/04/15}{Changed onehalfspacing to setstretch of 1.333 for prelims and moved the main 1.666 one to the start of the first part or chapter.}
% \changes{v0.99}{2012/04/16}{Changed it back to single spacing for prelims and one and ahalf spacing for the rest.}
%    \begin{macrocode}
\raggedbottom
\message{UCC thesis class loaded}
%    \end{macrocode}
% \iffalse
%</class>
% \fi
% \appendix
% \newgeometry{left=3cm}
% \clearpage
% \section{The \LaTeX{} Project Public License (v\thinspace{}1.3c)}\label{LPPL}
% \begin{quotation}\small\sffamily\parindent0pt
%   \parskip.5\baselineskip
%   \color{DarkBlue}\noindent
% Everyone is allowed to distribute verbatim copies of this
%       license document, but modification of it is not allowed.\par
% \end{quotation}
% \subsection{Preamble}\label{Preamble}
% The \LaTeX{} Project Public License ({\smaller LPPL})
%       is the primary license under which the \LaTeX{} kernel and the
%       base \LaTeX{} packages are distributed.\par
% You may use this license for any work of which you hold the
%       copyright and which you wish to distribute.  This license may be
%       particularly suitable if your work is \TeX{}-related (such as a
%       \LaTeX{} package), but it is written in such a way that you can
%       use it even if your work is unrelated to \TeX{}.\par
% The section “Whether and How to Distribute Works under This
%       License”, below, gives instructions, examples, and
%       recommendations for authors who are considering distributing
%       their works under this license.\par
% This license gives conditions under which a work may be
%       distributed and modified, as well as conditions under which
%       modified versions of that work may be distributed.\par
% We, the \LaTeX{3} Project, believe that the conditions below
%       give you the freedom to make and distribute modified versions of
%       your work that conform with whatever technical specifications
%       you wish while maintaining the availability, integrity, and
%       reliability of that work.  If you do not see how to achieve your
%       goal while meeting these conditions, then read the document
%       {\ttfamily{}cfgguide.tex} and {\ttfamily{}modguide.tex} in the base \LaTeX{}
%       distribution for suggestions.\par
% \subsection{Definitions}\label{Definitions}
% In this license document the following terms are used:\par
% \begin{description}[style=unboxed]
% \item[Work\thinspace:]Any work being distributed under this License.\par
% \item[Derived Work\thinspace:]Any work that under any applicable law is derived from
%     the Work.\par
% \item[Modification\thinspace:]Any procedure that produces a Derived Work under any
%     applicable law~--- for example, the production of a file
%     containing an original file associated with the Work or a
%     significant portion of such a file, either verbatim or
%     with modifications and/or translated into another
%     language.\par
% \item[Modify\thinspace:]To apply any procedure that produces a Derived Work
%     under any applicable law.\par
% \item[Distribution\thinspace:]Making copies of the Work available from one person to
%     another, in whole or in part.  Distribution includes (but
%     is not limited to) making any electronic components of the
%     Work accessible by file transfer protocols such as
%     {\smaller FTP} or {\smaller HTTP} or by
%     shared file systems such as Sun's Network File System
%     ({\smaller NFS}).\par
% \item[Compiled Work\thinspace:]A version of the Work that has been processed into a
%     form where it is directly usable on a computer system.
%     This processing may include using installation facilities
%     provided by the Work, transformations of the Work, copying
%     of components of the Work, or other activities.  Note that
%     modification of any installation facilities provided by
%     the Work constitutes modification of the Work.\par
% \item[Current Maintainer\thinspace:]A person or persons nominated as such within the Work.
%     If there is no such explicit nomination then it is the
%     `Copyright Holder' under any applicable
%     law.\par
% \item[Base Interpreter\thinspace:]A program or process that is normally needed for
%     running or interpreting a part or the whole of the
%     Work.\par
% A Base Interpreter may depend on external components
%     but these are not considered part of the Base Interpreter
%     provided that each external component clearly identifies
%     itself whenever it is used interactively.  Unless
%     explicitly specified when applying the license to the
%     Work, the only applicable Base Interpreter is a
%     `\LaTeX{}-Format' or in the case of files
%     belonging to the `\LaTeX{}-format' a program
%     implementing the `\TeX{} language'.\par
% \end{description}
% \subsection{Conditions on Distribution and Modification}\label{Conditions}
% \begin{enumerate}
% \item Activities other than distribution and/or modification
%   of the Work are not covered by this license; they are
%   outside its scope. In particular, the act of running the
%   Work is not restricted and no requirements are made
%   concerning any offers of support for the Work.\par
% \item \label{item-distribute}You may distribute a complete, unmodified copy of the
%   Work as you received it.  Distribution of only part of the
%   Work is considered modification of the Work, and no right to
%   distribute such a Derived Work may be assumed under the
%   terms of this clause.\par
% \item You may distribute a Compiled Work that has been
%   generated from a complete, unmodified copy of the Work as
%   distributed under Clause~item~\ref{item-distribute} above above, as
%   long as that Compiled Work is distributed in such a way that
%   the recipients may install the Compiled Work on their system
%   exactly as it would have been installed if they generated a
%   Compiled Work directly from the Work.\par
% \item \label{item-currmaint}If you are the Current Maintainer of the Work, you may,
%   without restriction, modify the Work, thus creating a
%   Derived Work.  You may also distribute the Derived Work
%   without restriction, including Compiled Works generated from
%   the Derived Work.  Derived Works distributed in this manner
%   by the Current Maintainer are considered to be updated
%   versions of the Work.\par
% \item If you are not the Current Maintainer of the Work, you
%   may modify your copy of the Work, thus creating a Derived
%   Work based on the Work, and compile this Derived Work, thus
%   creating a Compiled Work based on the Derived Work.\par
% \item \label{item-conditions}If you are not the Current Maintainer of the Work, you
%   may distribute a Derived Work provided the following
%   conditions are met for every component of the Work unless
%   that component clearly states in the copyright notice that
%   it is exempt from that condition.  Only the Current
%   Maintainer is allowed to add such statements of exemption to
%   a component of the Work.\par
% \begin{enumerate}
% \item If a component of this Derived Work can be a direct
%       replacement for a component of the Work when that
%       component is used with the Base Interpreter, then,
%       wherever this component of the Work identifies itself to
%       the user when used interactively with that Base
%       Interpreter, the replacement component of this Derived
%       Work clearly and unambiguously identifies itself as a
%       modified version of this component to the user when used
%       interactively with that Base Interpreter.\par
% \item Every component of the Derived Work contains
%       prominent notices detailing the nature of the changes to
%       that component, or a prominent reference to another file
%       that is distributed as part of the Derived Work and that
%       contains a complete and accurate log of the
%       changes.\par
% \item No information in the Derived Work implies that any
%       persons, including (but not limited to) the authors of
%       the original version of the Work, provide any support,
%       including (but not limited to) the reporting and
%       handling of errors, to recipients of the Derived Work
%       unless those persons have stated explicitly that they do
%       provide such support for the Derived Work.\par
% \item You distribute at least one of the following with
%       the Derived Work:\par
% \begin{enumerate}
% \item A complete, unmodified copy of the Work; if your
%   distribution of a modified component is made by
%   offering access to copy the modified component from
%   a designated place, then offering equivalent access
%   to copy the Work from the same or some similar place
%   meets this condition, even though third parties are
%   not compelled to copy the Work along with the
%   modified component;\par
% \item Information that is sufficient to obtain a
%   complete, unmodified copy of the Work.\par
% \end{enumerate}
% \end{enumerate}
% \item If you are not the Current Maintainer of the Work, you
%   may distribute a Compiled Work generated from a Derived
%   Work, as long as the Derived Work is distributed to all
%   recipients of the Compiled Work, and as long as the
%   conditions of Clause~item~\ref{item-conditions} above, above, are met
%   with regard to the Derived Work.\par
% \item The conditions above are not intended to prohibit, and
%   hence do not apply to, the modification, by any method, of
%   any component so that it becomes identical to an updated
%   version of that component of the Work as it is distributed
%   by the Current Maintainer under Clause~item~\ref{item-currmaint} above, above.\par
% \item Distribution of the Work or any Derived Work in an
%   alternative format, where the Work or that Derived Work (in
%   whole or in part) is then produced by applying some process
%   to that format, does not relax or nullify any sections of
%   this license as they pertain to the results of applying that
%   process.\par
% \item % \begin{enumerate}
% \item A Derived Work may be distributed under a different
%       license provided that license itself honors the
%       conditions listed in Clause~item~\ref{item-conditions} in the list on p.\thinspace\pageref{item-conditions} above, in
%       regard to the Work, though it does not have to honor the
%       rest of the conditions in this license.\par
% \item If a Derived Work is distributed under a different
%       license, that Derived Work must provide sufficient
%       documentation as part of itself to allow each recipient
%       of that Derived Work to honor the restrictions in
%       Clause~item~\ref{item-conditions} in the list on p.\thinspace\pageref{item-conditions} above, concerning
%       changes from the Work.\par
% \end{enumerate}
% \item This license places no restrictions on works that are
%   unrelated to the Work, nor does this license place any
%   restrictions on aggregating such works with the Work by any
%   means.\par
% \item Nothing in this license is intended to, or may be used
%   to, prevent complete compliance by all parties with all
%   applicable laws.\par
% \end{enumerate}
% \subsection{No Warranty}\label{Warranty}
% There is no warranty for the Work.  Except when otherwise
%       stated in writing, the Copyright Holder provides the Work
%       `as is', without warranty of any kind, either
%       expressed or implied, including, but not limited to, the implied
%       warranties of merchantability and fitness for a particular
%       purpose.  The entire risk as to the quality and performance of
%       the Work is with you.  Should the Work prove defective, you
%       assume the cost of all necessary servicing, repair, or
%       correction.\par
% In no event unless required by applicable law or agreed to
%       in writing will The Copyright Holder, or any author named in the
%       components of the Work, or any other party who may distribute
%       and/or modify the Work as permitted above, be liable to you for
%       damages, including any general, special, incidental or
%       consequential damages arising out of any use of the Work or out
%       of inability to use the Work (including, but not limited to,
%       loss of data, data being rendered inaccurate, or losses
%       sustained by anyone as a result of any failure of the Work to
%       operate with any other programs), even if the Copyright Holder
%       or said author or said other party has been advised of the
%       possibility of such damages.\par
% \subsection{Maintenance of The Work}\label{Maintenance}
% The Work has the status `author-maintained'
%       if the Copyright Holder explicitly and prominently states near
%       the primary copyright notice in the Work that the Work can only
%       be maintained by the Copyright Holder or simply that it is
%       `author-maintained'.\par
% The Work has the status `maintained' if there
%       is a Current Maintainer who has indicated in the Work that they
%       are willing to receive error reports for the Work (for example,
%       by supplying a valid e-mail address). It is not required for the
%       Current Maintainer to acknowledge or act upon these error
%       reports.\par
% The Work changes from status `maintained' to
%       `unmaintained' if there is no Current Maintainer,
%       or the person stated to be Current Maintainer of the work cannot
%       be reached through the indicated means of communication for a
%       period of six months, and there are no other significant signs
%       of active maintenance.\par
% You can become the Current Maintainer of the Work by
%       agreement with any existing Current Maintainer to take over this
%       role.\par
% If the Work is unmaintained, you can become the Current
%       Maintainer of the Work through the following steps:\par
% \begin{enumerate}
% \item Make a reasonable attempt to trace the Current
%   Maintainer (and the Copyright Holder, if the two differ)
%   through the means of an Internet or similar search.\par
% \item If this search is successful, then enquire whether the
%   Work is still maintained.\par
% \begin{enumerate}
% \item If it is being maintained, then ask the Current
%       Maintainer to update their communication data within one
%       month.\par
% \item \label{item-intention}If the search is unsuccessful or no action to resume
%       active maintenance is taken by the Current Maintainer,
%       then announce within the pertinent community your
%       intention to take over maintenance.  (If the Work is a
%       \LaTeX{} work, this could be done, for example, by
%       posting to \url{news:comp.text.tex}.)\par
% \end{enumerate}
% \item % \begin{enumerate}
% \item If the Current Maintainer is reachable and agrees to
%       pass maintenance of the Work to you, then this takes
%       effect immediately upon announcement.\par
% \item \label{item-announce}If the Current Maintainer is not reachable and the
%       Copyright Holder agrees that maintenance of the Work be
%       passed to you, then this takes effect immediately upon
%       announcement.\par
% \end{enumerate}
% \item \label{item-change}If you make an `intention announcement'
%   as described in~item~\ref{item-intention} in the list on p.\thinspace\pageref{item-intention} above and after three
%   months your intention is challenged neither by the Current
%   Maintainer nor by the Copyright Holder nor by other people,
%   then you may arrange for the Work to be changed so as to
%   name you as the (new) Current Maintainer.\par
% \item If the previously unreachable Current Maintainer becomes
%   reachable once more within three months of a change
%   completed under the terms of~item~\ref{item-announce} in the list on p.\thinspace\pageref{item-announce}
%   or~item~\ref{item-change} above, then that
%   Current
%   Maintainer must become or remain the Current Maintainer upon
%   request provided they then update their communication data
%   within one month.\par
% \end{enumerate}
% A change in the Current Maintainer does not, of itself,
%       alter the fact that the Work is distributed under the
%       {\smaller LPPL} license.\par
% If you become the Current Maintainer of the Work, you should
%       immediately provide, within the Work, a prominent and
%       unambiguous statement of your status as Current Maintainer.  You
%       should also announce your new status to the same pertinent
%       community as in~item~\ref{item-intention} in the list on p.\thinspace\pageref{item-intention}
%       above.\par
% \subsection{Whether and How to Distribute Works under This
%       License}\label{Distribute}
% This section contains important instructions, examples, and
%       recommendations for authors who are considering distributing
%       their works under this license.  These authors are addressed as
%       `you' in this section.\par
% \subsubsection{Choosing This License or Another License}\label{Choosing}
% If for any part of your work you want or need to use
% \emph{distribution} conditions that differ
% significantly from those in this license, then do not refer to
% this license anywhere in your work but, instead, distribute
% your work under a different license. You may use the text of
% this license as a model for your own license, but your license
% should not refer to the {\smaller LPPL} or otherwise
% give the impression that your work is distributed under the
% {\smaller LPPL}.\par
% The document {\ttfamily{}modguide.tex} in the base \LaTeX{}
% distribution explains the motivation behind the conditions of
% this license.  It explains, for example, why distributing
% \LaTeX{} under the {\smaller GNU} General Public
% License ({\smaller GPL}) was considered inappropriate.
% Even if your work is unrelated to \LaTeX{}, the discussion in
% {\ttfamily{}modguide.tex} may still be
% relevant, and authors intending to distribute their works
% under any license are encouraged to read it.\par
% \subsubsection{A Recommendation on Modification Without
% Distribution}\label{WithoutDistribution}
% It is wise never to modify a component of the Work, even
% for your own personal use, without also meeting the above
% conditions for distributing the modified component.  While you
% might intend that such modifications will never be
% distributed, often this will happen by accident~--- you may
% forget that you have modified that component; or it may not
% occur to you when allowing others to access the modified
% version that you are thus distributing it and violating the
% conditions of this license in ways that could have legal
% implications and, worse, cause problems for the community. It
% is therefore usually in your best interest to keep your copy
% of the Work identical with the public one.  Many works provide
% ways to control the behavior of that work without altering any
% of its licensed components.\par
% \subsubsection{How to Use This License}\label{HowTo}
% To use this license, place in each of the components of
% your work both an explicit copyright notice including your
% name and the year the work was authored and/or last
% substantially modified.  Include also a statement that the
% distribution and/or modification of that component is
% constrained by the conditions in this license.\par
% Here is an example of such a notice and statement:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX}]
%%% pig.dtx
%%% Copyright 2005 M. Y. Name
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is M. Y. Name.
%%
%% This work consists of the files pig.dtx and pig.ins
%% and the derived file pig.sty.
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% Given such a notice and statement in a file, the
% conditions given in this license document would apply, with
% the `Work' referring to the three files
% {\ttfamily{}pig.dtx}, {\ttfamily{}pig.ins}, and {\ttfamily{}pig.sty} (the last being generated
% from {\ttfamily{}pig.dtx} using {\ttfamily{}pig.ins}), the `Base
%   Interpreter' referring to any
% `\LaTeX{}-Format', and both `Copyright
%   Holder' and `Current Maintainer'
% referring to the person
% M.~Y.~Name\index{!}.\par
% If you do not want the Maintenance section of
% {\smaller LPPL} to apply to your Work, change
% `maintained' above into
% `author-maintained'. However, we recommend that
% you use `maintained' as the Maintenance
% section was added in order to ensure that your Work remains
% useful to the community even when you can no longer maintain
% and support it yourself.\par
% \subsubsection{Derived Works That Are Not Replacements}\label{NotReplacements}
% Several clauses of the {\smaller LPPL} specify
% means to provide reliability and stability for the user
% community. They therefore concern themselves with the case
% that a Derived Work is intended to be used as a (compatible or
% incompatible) replacement of the original Work. If this is not
% the case (e.g., if a few lines of code are reused for a
% completely different task), then clauses 6b and 6d shall not
% apply.\par
% \subsubsection{Important Recommendations}\label{Recommendations}
% \paragraph[Defining What Constitutes the Work]{Defining What Constitutes the Work :}
% The {\smaller LPPL} requires that distributions
%   of the Work contain all the files of the Work.  It is
%   therefore important that you provide a way for the licensee
%   to determine which files constitute the Work.  This could,
%   for example, be achieved by explicitly listing all the files
%   of the Work near the copyright notice of each file or by
%   using a line such as:\par
% \iffalse
%<*ignore>
% \fi
\begin{lstlisting}[language={[LaTeX]TeX}]
%% This work consists of all files listed in manifest.txt.
\end{lstlisting}
% \iffalse
%</ignore>
% \fi
% in that place.  In the absence of an unequivocal list it
%   might be impossible for the licensee to determine what is
%   considered by you to comprise the Work and, in such a case,
%   the licensee would be entitled to make reasonable
%   conjectures as to which files comprise the Work.\par
% \iffalse
%<*creststyle>

%% UCC crest implemented as a character in a METAFONT font outline
\def\fileversion{2.0}
\def\filedate{2012/11/22}
\def\docdate{2013/07/06}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ucccrest}[\filedate\space\fileversion\space 
 UCC 2013 crest font MFNFSS2e package]
%%\RequirePackage[U]{fontenc}
\newcommand{\UCCcrest}{\fontencoding{U}%
  \fontfamily{zcc}\selectfont\char'001 }
      
%</creststyle>
% \fi
% \iffalse
%<*crestfd>

%% Filename: uzcc UCC crest
%% Created by: PF 2000/03/23
\ProvidesFile{uzcc.fd}
   [2000/03/23 UCC crest definitions for U/zcc.]
\DeclareFontFamily{U}{zcc}{}
\DeclareFontShape{U}{zcc}{m}{n}{<-> uccnew}{}
      
%</crestfd>
% \fi
% \iffalse
%<*crestfont>

%% METAFONT program to draw University College, Cork coat of arms.
%%
%% Jeremy Gibbons, Oxford University, October 1989
%% Modified by JG (now at University of Auckland; jeremy@cs.aukuni.ac.nz)
%%    September 1994, December 1994.
%%
%% There are now two "knobs" to adjust the appearance. One is called 
%% "pen_knob", the other "banner_gap_knob". Search through this file 
%% for the second occurrences of these strings, and play with the 
%% settings as much as you like!

designsize:=10pt#;

def !! = scantokens ("input " & jobname); enddef;

mode_setup;

u# := .2pt#; define_pixels(u);
if unknown sections: sections := 1; fi

banner_gap_knob := 8;
   % Adjusting this affects the width of the gap between the top
   % of the banner and the bottom of the shield. A setting of 0 
   % has them touching; a setting of 8 gives a gap of about 1mm
   % when the whole shield is about 3cm high. You can set it to
   % a floating-point number (eg 7.5).

total_width# := 170u#; total_height# := 210u#; 
total_depth# := (banner_gap_knob+1)*u#;
section_width# := total_width#;

if sections > 1: % round so sections whole no of pixels wide
      % SURPRISE: makes crests at different resolutions have different widths!
   section_width# := (round((total_width#/sections)*hppp))/hppp;
      % should be a whole no of pixels
   total_width# := section_width# * sections;
fi

define_pixels(section_width, total_width, total_height, total_depth);
w := section_width; h := total_height; d := total_depth;

pen_knob := 1.5;
   % Adjusting this affects the width of the "detailpen" (used for the 
   % castles, ship, book, lion and crowns). A setting of 1 was too fine 
   % at high resolutions; it was set at 2 for the 1989 version of the coat 
   % of arms. You can set it to a floating-point number (eg 1.5).

thickpenwidth#:=4u#;
thinpenwidth#:=u#;
detailpenwidth#:=pen_knob * .5u#;
calligraphicpenwidth#:=u#;
calligraphicpenheight#:=0.1u#;
define_whole_blacker_pixels(thickpenwidth, thinpenwidth, detailpenwidth,
              calligraphicpenwidth, calligraphicpenheight);

pickup pencircle scaled thickpenwidth; thickpen := savepen;
pickup pencircle scaled thinpenwidth; thinpen  := savepen;
pickup pencircle scaled detailpenwidth; detailpen := savepen;

pickup pensquare 
   xscaled calligraphicpenwidth yscaled calligraphicpenheight 
   rotated 40; % a `calligraphic' nib
calligraphicpen := savepen;

pickup pencircle; draftpen := savepen; 
%% thickpen := draftpen; thinpen := draftpen; 
%% detailpen := draftpen; calligraphicpen := draftpen;

def drawbothsides (expr p) =
   draw p;
   draw (p reflectedabout axis);
enddef;
      
def fillbothsides (expr p) =
   fill p;
   fill (p reflectedabout axis);
enddef;
      
def crown(suffix $) =
   % (0,0) is centre of bottom edge of crown
   
   def axis = ((0,0),up) enddef;
   
   z0$ = (-12u,0);     % left end of bottom edge
   z1$ = z0$ + 6u*up;  % left end of top of `band' on crown
   z2$ = (-11u,0);     % lower end of left edge of band
   z3$ = z2$ + 6u*up;  % upper end ditto
   z4$ = (-16u, 23u);  % point of lefthand spike
   z5$ = (-9u, 13u);   % trough between left and centreleft spikes
   z6$ = (-7u, 25u);   % point of centreleft spike
   z7$ = (-3u, 15u);   % trough between centreleft and centre spikes
   z8$ = (0, 26u);     % point of centre spike

   pickup detailpen;
   drawbothsides(z3$--z4$--z5$--z6$--z7$--z8$); % spiky bit
   
   draw z0$ -- (z0$ reflectedabout axis); % bottom of band
   draw z1$ -- (z1$ reflectedabout axis); % top of band
   
   drawbothsides(z2$--(z2$+2u*up)); % lower halves of edges of band
   drawbothsides(z3$--(z3$-2u*up)); % ... and upper halves
   
   drawbothsides(unitsquare scaled 2u xscaled 2 shifted (z2$+(-2u,2u)));
   draw unitsquare scaled 2u xscaled 2 shifted (-2u,2u);
      % three rectangular jewels
   drawbothsides(fullcircle scaled 2u shifted ((.5[(0,0),z2$])+3u*up));
      % and two circular jewels
   
enddef;   

def shield(suffix $) =
   z0$ = (.5total_width, 30u);    % centre bottom
   z1$ = (50u, 37.5u);  % ...
   z2$ = (3u, 85u);     % up the left hand side
   z3$ = (13u, 147u);   % ...
   z4$ = (3u, 188u);    % top left (sw of diagonal line)
   z5$ = (22u, 207u);   % top left (ne of diagonal line)
   z6$ = (52u, 200u);   % ... across top ...
   z7$ = (.5total_width, 205u);   % centre top
   
   def axis = (z0$,z0$+total_height*up) enddef; % axis of symmetry of shield
   
   path shieldleft; 
   shieldleft = z0${dir 135}..z1${left}..z2${up}..z3${up}..{dir 135}
                z4$--z5$
                {dir -30}..z6${right};
   
   % y8$ = 138u; z8$ = shieldleft intersectionpoint ((0,y8$)--(total_width,y8$));
   z8$ = shieldleft intersectionpoint ((0,138u)--(total_width,138u));
                          % left edge of horiz dividing line
   y9$ = 134u;  x9$=x0$;  % top of gap for book in vert dividing line
   y10$ = 103u; x10$=x0$; % bottom of gap ...
   
   pickup thickpen;
   draw ( shieldleft .. z7$ .. (reverse shieldleft reflectedabout axis) );
   
   draw z8$ -- (z8$ reflectedabout axis);        % horiz dividing line
   draw (.5[z8$,z8$ reflectedabout axis])--z9$;  % top of vert dividing line
   draw z10$ -- z0$;                             % ... and bottom

enddef;

def book(suffix $) = 
   z0$ = (0,0); % centre of base of spine
   
   def axis = (z0$, z0$ + up) enddef; % up the spine
   
   z1$ = (-2.5u,0);   % left edge of ellipse at base of spine
   z2$ = (-20u,0);    % bottom left hand corner of cover
   z3$ = (-19u,19u);  % top left corner of cover
   y5$ = 18u; z5$ = whatever[z2$,z3$];
                      % top left corner of page 1
   z6$ = z2$ + (4u*(up+right));  % bottom left corner of lefthand open page
   z7$ = z5$ + (z6$-z2$); % ... and top left
   z8$ = (-6u, 4u);   % centre of bottom edge of lh open page
   z9$ = (0, 1.5u);   % bottom right of lh open page
   
   path bottomleftofpages; bottomleftofpages = z2${dir 40}..z6${dir 60};
   y4$=y3$; 
   z4$ = (bottomleftofpages shifted (z5$-z2$)) 
         intersectionpoint (z3$--(z3$ reflectedabout axis));
      % where top of book cover goes behind pages
   
   y10$ = 4u; z10$ = whatever[z2$,z3$]; % lower left flap
   y11$ = y10$; x11$ = -29u;
   y12$ = y11$ + 4u; z12$=z11$+whatever*(z3$-z2$);
   y13$ = y12$; z13$ = whatever[z2$,z3$];
   
   y14$ = 12u; z14$ = whatever[z2$,z3$]; % upper left flap
   y15$ = y14$; z15$ = whatever[z11$,z12$]; % z15--z16 in line with z11--z12
   y16$ = y15$+(y12$-y11$); z16$ = whatever[z11$,z12$];
   y17$ = y16$; z17$ = whatever[z2$,z3$];
   
   z18$ = z11$ + 3u*right; z19$=z18$+(z12$-z11$);
      % vert line on lower flap
   
   z21$ = z20$+(z8$-z9$); % middle of top of left open page
   z20$ = z9$+(0,y7$-y6$); % top of spine
   
   pickup detailpen;

   drawbothsides(z1$--z2$--z3$--z4$); % cover
   drawbothsides(bottomleftofpages);
   drawbothsides((bottomleftofpages shifted (z5$-z2$))); % top of pages
   drawbothsides(z9${dir 135}..z8${left}..z6${dir 150});
   drawbothsides(z20${dir 135}..z21${left}..z7${dir 150}); % top of open page
   drawbothsides(z6$--z7$); % outside edge of open page
   drawbothsides(z10$--z11$--z12$--z13$); % lower flap
   drawbothsides(z14$--z15$--z16$--z17$); % upper flap
   fillbothsides(unitsquare scaled u shifted .5[z18$,z19$] shifted 
      (u*left+.5u*down));
      % catch on lower flap
   fillbothsides(unitsquare scaled u shifted .5[z18$,z19$] 
      shifted (u*left+.5u*down) shifted (z15$-z11$));
      % catch on upper flap
   
   draw fullcircle xscaled 5u yscaled 3u; % ellipse at base of spine
   draw z9$--z20$; % spine
   draw z18$--z19$; % vert line on lower flap
   draw (z18$--z19$) shifted (z15$-z11$); % ... and on upper flap
   
enddef;

def castle (suffix $) =
   z0$ = (0,0);
   
   def axis = (z0$, z0$ + up) enddef; % up the middle
   
   z1$ = (0, 6u); % top of doorway
   z17$ = (-2u,4u); % bottom left of door archway
   z2$ = (-2u,0); % bottom left of doorway
   z3$ = (-9u, 0); % bottom left
   z4$ = z3$ + 7u*up; % left bottom of band round castle
   z5$ = z4$ + 6u*right; % end of band
   z7$ = z4$ + (-2u,2u); % left edge of band
   z8$ = z4$ + 4u*up; % left top of band
   z9$ = (-7u,33u); % top of body
   z10$ = z9$ + (-u,2u); % bottom of battlements
   z11$ = z10$ + u*left; % bottom left of battlements
   z12$ = z11$ + (-2u,6u); % top left
   z13$ = z12$ + 4u*right; % top right of lh battlement
   z14$ = z13$ + (u,-3u); % bottom left of lh gap
   z15$ = z14$ + 3u*right; % bottom right
   z16$ = z15$ + 3u*up; % top left of middle battlement
   
   pickup detailpen;

   drawbothsides(z1${left}..{down}z17$--z2$--z3$--z4$); % lower floor
   drawbothsides(z5$--z4$..z7$..z8${right}); 
   draw z8$--(z8$ reflectedabout axis); % band
   drawbothsides(z8$--z9$--z10$); % upper floor
   draw z9$--(z9$ reflectedabout axis); % top of top floor
   drawbothsides(z11$--z12$--z13$--z14$--z15$--z16$); % battlements
   draw z11$--(z11$ reflectedabout axis); % bottom of battlements
   draw z16$--(z16$ reflectedabout axis); % top of middle battlement
   
   drawbothsides(unitsquare scaled 3u yscaled 2.5 shifted (-5u,14u));
      % lower windows
   draw unitsquare scaled 3u yscaled 2.5 shifted (-1.5u,24u); % upper window
   
enddef;

def ship (suffix $) =
   z0$ = (0,0);
   
   def axis = (z0$, z0$ + up) enddef; % up the middle
   
   z1$ = (-22u,9u); % front of the hull
   z2$ = (-10u, 0); % front of the keel
   z3$ = (10u, 0); % back of the keel
   z4$ = (14u, u); % further back on the keel
   z5$ = (16u, 10u); % back of the hull
   z6$ = z1$ + 2u*right;
   z7$ = (-7u, 2u); % lower deck
   z8$ = (5u, 2u);
   x9$ = x1$; y9$ = y10$;
   z10$ = (-25u, 11u); % bottom of bowsprit
   z11$ = z10$ + 2u*up; % top deck...
   z12$ = z11$ + 15u*right;
   z13$ = z12$ + (4u,-3u);
   z14$ = z13$ + 13u*right;
   z15$ = z14$ + (4u,3u);
   z16$ = z15$ + 10u*right;
   x17$=x16$; y17$=y5$;
   z18$ = z17$ + (-13u,-2u);
   z19$ = z18$ + 15u*left;
   x20$ = x19$ - 9u; y20$=y10$;
   
   z29$ = (-15u,23u); 
   z30$ = z29$ + (28u,14u); % ``crossbar'' for sail
   z25$ = .05[z29$,z30$];
   z26$ = .15[z29$,z30$] + (2u,-2u);
   z27$ = .75[z29$,z30$] + (2u,-2u);
   z28$ = .95[z29$,z30$];
   path lsail, msail, rsail; % three parts of sail
   rsail = z27${dir -45}..{(z30$-z29$) rotated 90}z28$;
   msail = z26${dir -45}..tension 1.4..(point .25 of rsail);
   lsail = z25${(z30$-z29$) rotated -90}..(point .08 of msail);
   
   x21$ = -u; y21$ = y13$; % bottom left of mast
   x23$ = u; y23$ = y21$;  % bottom right
   x22$ = -.5u; z22$ = ((x22$,0)--(x22$,h)) intersectionpoint msail; % top left
   x24$ = .5u; z24$ = ((x24$,0)--(x24$,h)) intersectionpoint msail; % top right
   
   x31$ = 0; z31$ = whatever[z29$,z30$];
   z32$ = z31$ + 10u*up; % flagpole
   z33$ = .7[z31$,z32$] + 10u*left; % tip of flag
   
   pickup detailpen;
   
   draw z1${right}..{right}z2$--z3${right}..z4$; draw z4${up}..z5$; % keel
   draw z9$--z1$--z6${right}..{right}z7$--z8${right}..z5$; % lower deck
   draw z10$--z11$--z12${right}..{right}z13$--z14${right}..z15$--z16$--
        z17$--z5${left}..{left}z18$--z19${left}..{left}z20$-- cycle; % top deck
   
   def oar (expr p) =
      draw (p+1.5u*left){dir 60}..{dir -60}(p+1.5u*right);
      draw p--(p+(5u,-9u));
   enddef;
   
   oar((-8u,5u));
   oar((-3u,5u));
   oar((2u,5u));
   oar((7u,5u));
   
   draw z21$--z22$; draw z23$--z24$; % mast
   
   draw lsail; draw msail; draw rsail;
   draw z29$--z30$; % `crossbar' for mast
   
   draw z31$--z32$; % flagpole
   draw (.2[z31$,z32$]){dir 120}..z33${dir 120};
   draw (.8[z31$,z32$]){dir 135}..z33${dir 135}; % flag
enddef;

def lion (suffix $) =
   path lowermanea, lowermaneb, lowermanec;
   lowermaneb = flex( (5u, 28u), (3u, 26u), (3u, 23u) ) &
                flex( (3u, 23u), (4u, 24u), (5u, 24u), (7u, 26u) ) &
                flex( (7u, 26u), (6u, 24u), (7u, 22u) ) &
                flex( (7u, 22u), (8u, 24u), (9u, 24u) ) &
                flex( (9u, 24u), (7.5u, 21u), (8u, 19u) ) &
                flex( (8u, 19u), (10u, 21u), (12u, 22u) );
   lowermanea = flex( (4u, 33u), (2u, 31u), (2u, 30u), (u, 29u) ) &
                flex( (u, 29u), (2u, 28u), (4u, 29u) ) & 
                flex( (4u, 29u), (3u, 27u), (point .8 of lowermaneb) );
   lowermanec = flex( (14u, 23u), (13u, 20u), (14u, 17u) ) &
                flex( (14u, 17u), (15u, 19u), (18u, 21u), (18u, 23u) ) &
                flex( (18u, 23u), (19u, 21u), (20u, 21u), (21u, 20u) ) &
                flex( (21u, 20u), (20u, 22u), (22u, 24u), (20u, 26u) ) &
                flex( (20u, 26u), (21u, 25.5u), (23u, 26.5u), (25u, 26u) ) &
                flex( (25u, 26u), (24u, 27u), (23u, 29.5u), (22u, 30u) ) &
                flex( (22u, 30u), (23u, 30u), (24u, 31.5u), (25u, 31u) ) &
                flex( (25u, 31u), (24.5u, 31.5u), (24u, 33u), (22u, 33u) ) &
                flex( (22u, 33u), (24u, 34u), (26u, 36u), (27u, 36u) ) &
                flex( (27u, 36u), (24u, 36.5u), (23u, 38u) );
   
   path uppermane, rightear;
   rightear = (20u, 45u) -- (21.5u, 46.5u) --
              flex( (21u, 44u), (23u, 44.5u), (25u, 42.5u), (26u, 42.5u) ) &
              flex( (26u, 42.5u), (24u, 42u), (22u, 40u), (20u, 41u) );
   uppermane = (6u, 45u) -- (4u, 46u) -- 
              flex( (5u, 44u), (4u, 44u), (0, 43u) ) &
              flex( (0, 43u), (2u, 41u), (3u, 39u), (5u, 39u) ) & 
              flex( (5u, 39u), (3u, 37u), (3u, 34u) ) &
              flex( (3u, 34u), (4.5u, 36u), (5u, 35.5u) ) &
              flex( (5u, 35.5u), (4u, 33u), (5u, 30u) ) &
              flex( (5u, 30u), (6u, 31.5u), (7u, 32u) ) &
              flex( (7u, 32u), (7u, 30u), (8u, 26u) ) &
              flex( (8u, 26u), (8.5u, 28u), (10u, 30u) ) &
              flex( (10u, 30u), (10u, 28u), (11u, 27u), (11u, 26u) ) &
              flex( (11u, 26u), (12u, 28u), (14u, 28u), (14u, 30u) ) &
              flex( (14u, 30u), (15u, 28.5u), (14u, 27u) ) &
              flex( (14u, 27u), (16u, 28.5u), (17u, 31u) ) &
              flex( (17u, 31u), (18u, 30u), (18u, 29u) ) &
              flex( (18u, 29u), (19u, 32u), (18u, 34u) ) &
              flex( (18u, 34u), (19.5u, 33u), (20u, 32u) ) &
              flex( (20u, 32u), (20u, 35u), (19u, 36u) ) &
              flex( (19u, 36u), (21u, 36u), (23u, 35u) ) &
              flex( (23u, 35u), (23u, 36u), (21u, 38u), point 7 of rightear );
   
   path leftfrontleg;
   leftfrontleg = 
      flex( point 2.8 of lowermanec, (19u, 12u), (20u, 6u) ) &
      flex( (20u, 6u), (18u, 4.5u), (14u, 4.5u), (16u, 3u) ) &
      flex( (16u, 3u), (16u, u), (19u, 3u) ) &
      flex( (19u, 3u), (20u, .5u), (22u, 2u), (24u, 2u), (24u, 6u), (26u, 7u) ) &
      flex( (26u, 7u), (25u, 7.5u), (24u, 7u) ) &
      flex( (24u, 7u), (24.5u, 8u), (26u, 9u) ) &
      flex( (26u, 9u), (25u, 10u), (23u, 11u) ) &
      flex( (23u, 11u), (25u, 11.5u), (26u, 11u) ) &
      flex( (26u, 11u), (23u, 15u), (25u, 18u) ) &
      flex( (25u, 18u), (23u, 19u), (23u, 21u) );
   
   path rightfrontmidtoe;
   rightfrontmidtoe = flex( (5u, 4u), (3u, 5u), (2u, 2u) ) ... {right}(6u, 3u);
   
   path rightfrontlega, rightfrontlegb;
   rightfrontlega =
      flex( point 12.5 of lowermaneb, (10u, 10u), (6u, 7u) ) &
      flex( (6u, 7u), (2u, 7u), point 1 of rightfrontmidtoe );
   rightfrontlegb =
      flex( (6u, 3u), (6u, 0), (9u, 3u), (11u, 2u), (12u, 6u), (13u, 5u) ) &
      flex( (13u, 5u), (13.5u, 6.5u), (13u, 8u) ) &
      flex( (13u, 8u), (14u, 8.5u), (16u, 7.5u) ) &
      flex( (16u, 7.5u), (16u, 9u), (15u, 11u) ) &
      flex( (15u, 11u), (16u, 11u), (17u, 10u) ) &
      flex( (17u, 10u), (16.5u, 11.5u), point .6 of leftfrontleg );
   
   path riba, ribb, ribc, ribd;
   riba = flex( point 21.7 of leftfrontleg, (26u, 18u), (27u, 21u) );
   ribb = flex( point .7 of riba, (28u, 18u), (30u, 21u) );
   ribc = flex( point .5 of ribb, (31u, 19u), (33u, 22u) );
   ribd = flex( point .7 of ribc, (33u, 18.5u), (36u, 21u), (39u, 22u) );
   
   path leftrearlega, leftrearlegb;
   leftrearlegb =
      flex( (58u, 3u), (58u, u), (59u, 2u), (63u, 2u), (64u, 6u), (66u, 7u) ) &
      flex( (66u, 7u), (64u, 9u), (66u, 11u) ) &
      flex( (66u, 11u), (64u, 12u), (66u, 13u) ) &
      flex( (66u, 13u), (64u, 14u), (62u, 13u) ) &
      flex( (62u, 13u), (61u, 15u), (62u, 17u) ) &
      flex( (62u, 17u), (60.5u, 16u), (60u, 14u) ) &
      flex( (60u, 14u), (56.5u, 17u), (55u, 26u), (52u, 26u) );
   leftrearlega =
      flex( (38u, 24u), (45u, 18u), (43u, 14u) ) 
      --(47.5u, 16u)--(47u, 14u)--
      flex( (49u, 15u), (49u, 13u), (50u, 11u) ) --
      flex( (50u, 15u), (52u, 13u), (55u, 12u) ) ..
      flex( (60u, 8u), (59u, 7u), (55u, 7u), (56u, 5u) ) &
      flex( (56u, 5u), (54.5u, 3.5u), point .45 of leftrearlegb );
   
   path rightrearleg;
   rightrearleg =
      (point 1.6 of ribd) -- 
      flex( (35u, 17u), (33.5u, 15u), (33.5u, 13.5u) ) &
      flex( (33.5u, 13.5u), (35u, 15.5u), (36u, 16u) ) &
      flex( (36u, 16u), (35u, 14u), (36u, 12u) ) &
      flex( (36u, 12u), (36u, 13u), (37u, 15u) ) &
      flex( (37u, 15u), (42u, 10u), (39u, 6u) ) ..
      flex( (36u, 7u), (34u, 6u), (36u, 4.5u) ) &
      flex( (36u, 4.5u), (33u, 4.5u), (35u, 3u) ) &
      flex( (35u, 3u), (35u, -.5u), (38u, 2u), (39u, u), (43u, 3u), (43u, u) )
    & flex( (43u, u), (44u, 2u), (45u, 5u) ) 
      -- (46u, 3u) -- (46u, 6u) --
      flex( (49u, 5u), (47u, 8u), (49u, 11u) ) &
      flex( (49u, 11u), (46u, 12u), point 2.6 of leftrearlega );
   
   def axis = ((13u,0), (13u,1)) enddef;
   
   pickup detailpen;
   
   % Head:
   draw lowermanea; draw lowermaneb; draw lowermanec;
   draw flex( (19u, 25u), (20u, 24.5u), (20.5u, 24u) );
   %
   draw uppermane; draw flex( (4u, 41u), (5u, 42u), (2u, 42u) );
   draw rightear; draw flex( (21u, 42u), (21u, 43u), (23u, 43u) );
   %
   draw flex( (6u, 41u), (6u, 39u), (7u, 38u), (7u, 36u) ); % cheeks
   draw flex( (19u, 40u), (19.5u, 39u), (18u, 37u), (18.5u, 36u) );
   %
   drawbothsides( flex( (6u, 43u), (8u, 42u), (10u, 42.5u), (12u, 41u) )
                & flex( (12u, 41u), (11u, 41u), (8u, 40.5u), (7u, 42u) ) );
   drawbothsides( fullcircle scaled u shifted (9.5u,41.25u) ); % eyes
   %
   draw (13u,42u)--(13u,43u); % line on forehead
   %
   draw (10u, 39u){dir -120}..(13u, 36u){right}..{dir 120}(16u, 39u);
   draw flex( (12u, 39u), (13u, 37.5u), (14u, 39u) ); % nose
   %
   path tongue; tongue = flex( (11.5u,36u), (11.5u, 35u), (13u, 31u) );
   drawbothsides( flex( (10u, 37u), (10.5u, 35u), point 1.5 of tongue ));
   drawbothsides( tongue );
   draw (13u, 36u)--(13u, 35u); % mouth
   %
   % drawbothsides( (11u, 34u)--(8.5u, 35u) );
   % drawbothsides( (11u, 33u)--(9u, 32u) ); % whiskers?
   
   
   % Crown:
   draw (7u,44u)--((7u,44u) reflectedabout axis); % band
   drawbothsides (unitsquare scaled u xscaled 2 shifted (6.5u, 45u));
   drawbothsides (fullcircle scaled u shifted (10u, 45.5u));
   draw unitsquare scaled u xscaled 2 shifted (12u, 45u);
   draw (7u,47u)--((7u,47u) reflectedabout axis);
   %
   drawbothsides((7u,47u)--(4u,50u)--
                 flex( (6u,49u), (5u,50.5u), (6u, 51u) ) &
                 flex( (6u, 51u), (5.5u, 52.5u), (7u, 52u) ) &
                 flex( (7u, 52u), (7.25u, 53.5u), (8.5u, 53u) ) &
                 flex( (8.5u, 53u), (9.75u, 54u), (11u, 53u) ));
   drawbothsides(flex( (7u, 49u), (8u, 52u), (12u, 51u) ));
   %
   draw fullcircle scaled 2u shifted (13u, 52u);
   draw unitsquare scaled 2u yscaled .7 shifted (12u,49u);
   draw unitsquare scaled u xscaled 4 shifted (11u, 48u);
   path partofjewel; 
   partofjewel = flex( (12.5u, 55u), (13u, 53u), (13.5u, 55u) );
   partofjewel := partofjewel--(partofjewel rotatedaround ((13u, 55.5u), 90));
   draw partofjewel--(partofjewel rotatedaround ((13u, 55.5u), 180));
   drawbothsides(unitsquare scaled u rotated 45 yscaled 1.5 shifted (9u,48u));
   
   % draw leftfrontleg;
   draw subpath (0,4+xpart ((subpath(4,5-eps) of leftfrontleg) 
                                intersectiontimes 
                             (subpath(5+eps,6) of leftfrontleg)))
      of leftfrontleg;
   draw subpath (5,6+xpart ((subpath(6,7-eps) of leftfrontleg) 
                                intersectiontimes 
                             (subpath(7+eps,8) of leftfrontleg)))
      of leftfrontleg;
   draw subpath (7,infinity) of leftfrontleg;
   draw flex( point 4.3 of leftfrontleg, (12u, 2u), (12.5u, .5u) ) & 
        flex( (12.5u, .5u), (13u, 2u), point 4.6 of leftfrontleg );
   draw flex( point 5.5 of leftfrontleg, (14u, .5u), (15u, -.5u) ) & 
        flex( (15u, -.5u), (15u, .5u), point 6 of leftfrontleg );
   draw flex( point 7.5 of leftfrontleg, (17u, 0u), (18u, -u) ) & 
        flex( (18u, -u), (18u, -0u), point 7.8 of leftfrontleg );
   
   draw rightfrontlega; 
   draw subpath (0,xpart (rightfrontmidtoe intersectiontimes
                          (subpath (eps,infinity) of rightfrontlegb))) 
      of rightfrontmidtoe; 
   draw rightfrontlegb;
   draw flex( point 3 of rightfrontlega, (.3u, 6u), (0,4u) ) &
        flex( (0,4u), (u, 5u), point 3.5 of rightfrontlega );
   draw flex( point 1.4 of rightfrontmidtoe, (0.3u, 2.2u), (0u, .5u) ) &
        flex( (0u, .5u), (.7u, 1.8u), point 2 of rightfrontmidtoe );
   draw flex( point .5 of rightfrontlegb, (3u, u), (3u, -u) ) &
        flex( (3u, -u), (4u, 0), point .8 of rightfrontlegb );
   
   draw riba; draw ribb; draw ribc; draw ribd;
   
   draw leftrearlega; draw leftrearlegb;
   draw flex( point 13 of leftrearlega, (53.5u, 7.5u), (52u, 6u) ) &
        flex( (52u, 6u), (53u, 6.5u), point 13.7 of leftrearlega );
   draw flex( point 14.7 of leftrearlega, (53u, 4u), (51u, 2u) ) &
        flex( (51u, 2u), (53u, 3u), point 15.3 of leftrearlega );
   draw flex( point .5 of leftrearlegb, (55u, 2u), (54u, -u) ) &
        flex( (54u, -u), (54.5u, 0), point .8 of leftrearlegb );
   
   draw subpath (0,13+xpart ((subpath(13,14-eps) of rightrearleg) 
                                intersectiontimes 
                             (subpath(14+eps,15) of rightrearleg)))
      of rightrearleg;
   draw subpath (14,15+xpart ((subpath(15,16-eps) of rightrearleg) 
                                 intersectiontimes 
                              (subpath(16+eps,17) of rightrearleg)))
      of rightrearleg;
   draw subpath (16,infinity) of rightrearleg;
   
   draw flex( point 12.4 of rightrearleg, (33u, 8u), (32u, 6u) ) &
        flex( (32u, 6u), (33u, 7u), point 13.2 of rightrearleg );
   draw flex( point 14.9 of rightrearleg, (31u, 4u), (30u, 2u) ) &
        flex( (30u, 2u), (31u, 3u), point 15.4 of rightrearleg );
   draw flex( point 16.3 of rightrearleg, (32u, u), (31u, -u) ) &
        flex( (31u, -u), (32u, 0), point 16.6 of rightrearleg );
   
   draw flex( (52u, 26u), (54u, 27u), (56u, 27.5u), (59u, 29u) ) ..
        flex( (59u, 38u), (51u, 39u), (49u, 42u) ) &
        flex( (49u, 42u), (48u, 40u), (49u, 38u) ) &
        flex( (49u, 38u), (46u, 40u), (45u, 43u) ) &
        flex( (45u, 43u), (43.5u, 40.5u), (45u, 39u) ) &
        (45u, 39u){left}..(33u, 43u){up}..{dir -45}(43u, 43u) &
        flex( (43u, 43u), (43u, 44u), (42u, 46u) ) &
        flex( (42u, 46u), (48u, 44u), (53u, 48u) ) &
        flex( (53u, 48u), (50u, 46.5u), (47u, 47.5u), (45u, 47u) ) &
        flex( (45u, 47u), (47u, 48u), (48u, 50u) ) &
        flex( (48u, 50u), (46u, 49u), (41u, 50u), (39u, 49u) ) &
        flex( (39u, 49u), (40u, 51u), (37u, 52u) ) &
        flex( (37u, 52u), (37u, 50u), (31u, 46u), (30u, 43u) )
        {down}..{right}(43u, 37u) &
        flex( (43u, 37u), (42.5u, 35.5u), (43u, 34u) ) &
        flex( (43u, 34u), (44u, 36u), (47u, 37u) ) &
        flex( (47u, 37u), (47u, 35u), (50u, 33u) ) &
        flex( (50u, 33u), (49u, 35u), (51u, 37u) ) &
        flex( (51u, 37u), (51u, 36u), (52u, 34u) ) &
        flex( (52u, 34u), (56u, 37u), (59u, 33u) )
        {down}..{left}(53u, 31u)..{left}(44u,32u)..{left}(34u,31u)..
        point 24.5 of lowermanec; % tail and back
enddef;

def banner(suffix $) =
   def axis = ((.5total_width, 0), (.5total_width,0)+up) enddef;

   path upperedge,loweredge;
   upperedge = 
      ((15u,49u){curl 0}..tension 2..(7u,52u)..tension 4..(43u,32u)
         ..tension 4..(10u,30u)..tension 4 and 1..{right}(.5total_width,15u))
      shifted (banner_gap_knob * u*down);
   loweredge = 
      (( 9u,39u){curl 0}..tension 2.. (u,42u)..tension 4..(39u,21u)
         ..tension 4..( 6u,19u)..tension 4 and 1..{right}(.5total_width,u))
      shifted (banner_gap_knob * u*down);

   pair intersectA, intersectB;
   intersectA = ((subpath (1,2) of loweredge) intersectiontimes
                 (subpath (2,3) of upperedge)) + (1,2);
   intersectB = ((subpath (2,3) of loweredge) intersectiontimes
                 (subpath (3,4) of upperedge)) + (2,3);
   
   pickup thinpen;
   drawbothsides ((((point 0 of loweredge)--(point 0 of upperedge)) 
      intersectionpoint (subpath (1,infinity) of upperedge))
      -- point 0 of upperedge);
   drawbothsides (subpath (0,2) of upperedge);
   drawbothsides (subpath (ypart intersectA,4) of upperedge);
   drawbothsides (subpath (1,xpart intersectB) of loweredge);
   drawbothsides (subpath (3.06,4) of loweredge);

   def dent (expr za,zb,delta) = 
      (.5[za,zb] + delta * (unitvector(zb-za) rotated 90))
   enddef;

   def wiggle (expr p,q,delta) = 
      (subpath (length p,2+length p) of 
         (p...dent(point (length p) of p, point 0 of q,delta)...q))
   enddef;

   drawbothsides 
      (wiggle ((subpath (0,1) of upperedge),(subpath (1,2) of loweredge),.5u));
   drawbothsides 
      (wiggle ((subpath (1,2) of upperedge),(subpath (2,3) of loweredge),-.5u));
   drawbothsides 
      (wiggle ((subpath (2,3.06) of upperedge),(subpath (3.06,4) of loweredge),.5u));

   def diagfoot(expr base, dirn) =
      draw base+u*left -- base+.5u*right;
      draw base+u*left{right}..{dirn}base+u*dir angle dirn;
   enddef;
   
   def foot(expr base) =
      diagfoot(base, up);
   enddef;
   
   def diaghook(expr topofstem, dirn) =
      draw topofstem-u*dir 30 -- topofstem;
      draw topofstem-u*dir 30{dir 30}..{dirn}topofstem+u*dir angle dirn;
   enddef;
   
   def hook(expr topofstem) =
      diaghook(topofstem, down);
   enddef;
   
   def vertstem(expr base) = % for F, I, H, R
      foot(base);
      draw base -- base+lh*up;
      hook(base+lh*up);
   enddef;
   
   def crossbar(expr leftend, straightlength) =
      draw leftend -- leftend+straightlength*right {right}
           ..{dir 30}leftend+(straightlength+u)*right + .5u*dir 45;
   enddef;
   
   def upperbowl(expr bl, midht) = % for B, R
      draw bl+.8lh*up{dir 30} .. bl+lh*up+2u*right .. 
           bl+(midht+u)*up+3u*right..{left}bl+midht*up;
   enddef;
   
   def SEdiagwithtail(expr nw, se) = % eg R
      draw nw{se+.5u*left-nw} .. se .. se+.3u*dir 45;
   enddef;
   
   def SEdiagwithtwotails(expr nw, se) = % eg A, N
      draw nw+u*-dir 30 .. nw 
           ... {se+.5u*left-(nw+.5u*right)}.5[nw,se] ...
           se .. se+u*dir 30;
   enddef;
   
   numeric letterspacing; letterspacing = 2.6u;

   def letter (expr c) =
     % this big case statement is a bit grotty, but a better way doesn't
     % spring to mind...
     if c = ASCII "A":
      SEdiagwithtwotails(lh*up+2u*right, 5u*right);
      draw (0,0)--lh*up+2u*right;
      diagfoot((0,0),lh*up+2u*right);
      crossbar(.4[(0,0),lh*up+2u*right], 2.5u);
      width(letterspacing+5u);

     elseif c = ASCII "B":
      vertstem((0,0));
      upperbowl((0,0), .5lh);
      draw .5lh*up{right} .. .2lh*up+3.5u*right .. {left}(0,0);
      width(letterspacing+3u);
     
     elseif c = ASCII "E":
      crossbar((0,0), 2u);
      vertstem((0,0));   % next four lines same as an "F"
      crossbar(.5lh*up, u);
      draw .8lh*up{dir 30} .. lh*up+2u*right .. .8lh*up+3u*right;
      width(letterspacing+3u);
     
     elseif c = ASCII "F":
      vertstem((0,0));
      crossbar(.5lh*up, u);
      draw .8lh*up{dir 30} .. lh*up+2u*right .. .8lh*up+3u*right;
      width(letterspacing+3u);
      
     elseif c = ASCII "G":
      draw 4u*right+(lh-u)*up .. 3u*right+lh*up ..
           .5lh*up .. 2u*right .. {up}4u*right+.5lh*up;
      draw 4u*right -- 4u*right+.5lh*up -- 3u*right+.5lh*up;
      width(letterspacing+4u);
     
     elseif c = ASCII "H":
      vertstem((0,0));
      vertstem(3.5u*right);
      crossbar(.5lh*up, 3u);
      width(letterspacing+3.5u);
     
     elseif c = ASCII "I":
      vertstem((0,0));
      width(letterspacing+u);
     
     elseif c = ASCII "L":
      vertstem((0,0));
      crossbar((0,0), 2u);
      width(letterspacing+3u);
     
     elseif c = ASCII "M":
      diagfoot((0,0), lh*up+.5u*right);
      draw (0,0) -- lh*up+.5u*right;
      SEdiagwithtwotails(lh*up+.5u*right, 3.5u*right);
      draw 3u*right+.5u*up -- 5u*right+lh*up -- 6u*right+lh*up;
      draw 5u*right+lh*up -- 6u*right;
      diagfoot(6u*right, lh*up-u*right);
      width(letterspacing+6u);
     
     elseif c = ASCII "N":
      foot((0,0));
      draw (0,0)--.85lh*up;
      SEdiagwithtwotails(lh*up+u*left, 4u*right);
      draw 4u*right -- 4u*right+.8lh*up ..
           3u*right+lh*up{left} -- 3u*right+lh*up+u*-dir 60;
      width(letterspacing+4u);
     
     elseif c = ASCII "R":
      vertstem((0,0));
      upperbowl((0,0), .4lh);
      SEdiagwithtail(.4lh*up+u*right, 4u*right);
      width(letterspacing+3.5u);
     
     elseif c = ASCII "S":
      draw 4u*right+(lh-u)*up-.5u*dir 45 --
           4u*right+(lh-u)*up .. {left}2u*right+lh*up .. 
           (lh-2u)*up .. 4u*right+2u*up .. 
           {left}2u*right .. u*up
           -- u*up+.5u*dir 45;
      width(letterspacing+3.5u);
     
     elseif c = ASCII "T":
      foot(2.5u*right);
      draw 2.5u*right -- 2.5u*right+lh*up;
      draw u*right+(lh-2u)*up{dir 135} .. (lh-u)*up ..
           {right}2u*right+lh*up -- 5u*right+lh*up;
      width(letterspacing+4u);
     
     elseif c = ASCII "U":
      hook(lh*up);
      draw lh*up{down} -- .4lh*up{down} ..
           2u*right{right} -- 3.5u*right+u*up;
      hook(3.5u*right+lh*up);
      draw 3.5u*right+lh*up -- 3.5u*right -- 3.5u*right+.5u*dir 20;
      width(letterspacing+4u);
     
     elseif c = ASCII "W":
      draw lh*up -- 2u*right -- .3[3u*right+lh*up,5u*right];
      draw 3u*right+lh*up -- 5u*right;
      draw 5u*right{dir 60} .. {left}5u*right+lh*up 
           -- 5u*right+lh*up + .5u*dir 30;
      diaghook(lh*up, 2u*right-lh*up);
      diaghook(3u*right+lh*up, 2u*right-lh*up);
      width(letterspacing+6u);
     
     elseif c = ASCII " ":
      width(letterspacing+0); % used to be +1.5u, but that was too slack

     elseif c = ASCII "/":
      width(-.5u); % small kern
      
     fi;
   enddef;
   
   % pathtext takes theword (a string) and draws it with a baseline that
   % follows thepath (roughly). Probably won't work for intricate paths,
   % but fine for smooth shallow curves.
   
   def pathtext (expr theword, thepath) =
      % width advances thetime, so that the next letter will go in the right
      % place on thepath. Works by intersecting thepath with the `vertical'
      % line at the right of the character.
      def width(expr wid) =
         thetime := xpart (thepath intersectiontimes
            (((wid,-infinity)--(wid,infinity))
               transformed currenttransform));
      enddef;
      numeric thetime; thetime := 0;
      transform savetfm; savetfm := currenttransform;
         for i = 1 upto (length theword):
            currenttransform := 
               savetfm rotated(angle direction thetime of thepath)
                       shifted(point thetime of thepath);
               % ie the translation to put the letter at the right place
               % and angle on thepath
            letter(ASCII (substring (i-1,i) of theword))
         endfor;
      currenttransform := savetfm;
   enddef;

   numeric lh; lh = 6u; % letter height
   
   pickup calligraphicpen;

   def offset (expr d, t, p) = % point d away from path p at time t
      (point t of p + d*dir(90 + angle direction t of p))
   enddef;

   pathtext ("WHERE", subpath (1.25, 2) of loweredge 
         shifted (3.15u*dir (90 + angle direction 1.7 of loweredge)));

   path thetextpath;
   
   def scaffold (expr theoffset, thetime) =
      if thetime <= 4:
         offset(theoffset,thetime,loweredge)
            {direction thetime of loweredge}
      else:
         offset(theoffset,(thetime-4),reverse (loweredge reflectedabout axis))
            {direction (thetime-4) of reverse (loweredge reflectedabout axis)}
      fi
   enddef;

   thetextpath = 
      (scaffold(3.15u,3.32) ... scaffold(3.2u,3.6) ... scaffold(3.25u,4)
                         ... scaffold(3.2u,4.4) ... scaffold(3.15u,4.68))
         shifted (u*up);
   pathtext ("FINBARR T/A/U/GHT L/E//T MUNSTER", thetextpath);

   pathtext ("LEARN", 
         subpath (2.25,3) of reverse (loweredge reflectedabout axis) 
         shifted (3.15u*dir (90 + angle direction 2.5 of 
                 reverse (loweredge reflectedabout axis))));
      
enddef;

      transform tfm;
      tfm := currenttransform;
   
      currenttransform := tfm;                                 shield(a);
%%                                                               banner(j);

      currenttransform := tfm shifted (round 106u, round 79u); crown(b);
      currenttransform := tfm shifted (round 144u, round 79u); crown(c);
      currenttransform := tfm shifted (round 125u, round 48u); crown(d);
   
      currenttransform := tfm shifted (.5total_width, 109u);   book(e);

      currenttransform := tfm shifted (132u, 148u);            castle(f);
      currenttransform := tfm shifted (total_width-132u,148u); castle(g);
   
      currenttransform := tfm shifted (.5total_width,151u);    ship(h);
   
      currenttransform := tfm shifted (15u,57u);               lion(i);

      currenttransform := tfm;

picture crest_picture; cullit; % crest_picture := currentpicture;
crest_picture := nullpicture; addto crest_picture also currentpicture;

clearit; 
fill unitsquare xscaled (section_width+4u) 
                yscaled (total_height+(banner_gap_knob+1)*u)
                shifted (2u*left+(banner_gap_knob+1)*u*down);
picture mask; cullit; mask = currentpicture;

   for code := 1 upto sections:
      beginchar(code, section_width#, total_height#, total_depth#); "UCC Arms";
         currentpicture := crest_picture shifted ((code-1)* -section_width,0);
         addto currentpicture also mask; cull currentpicture keeping (2,2);
      endchar;
   endfor

end
      
%</crestfont>
% \fi
% \iffalse
%<*testfile>

%<<COMMENT
% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode
% !BIB TS-program = biber
%COMMENT
      
%</testfile>
% \fi
% \iffalse
%<*testfile>
\documentclass[final]{uccthesis}
\usepackage{noto}% fonts, there are thousands
\mybibstyle{authoryear}{thesis-example.bib}
%% make a new column type for decimal alignment
\usepackage{dcolumn}
\makeatletter
\newcolumntype{d}[1]{>{%
    \textfont0=\the\font\DC@{.}{.}{#1}}c<{\DC@end}}
\makeatother
\begin{document}

\title{The subtleties of mathematics}
\subtitle{with specific reference to computing}
\author{1234-5678-9012-3456}{Georgina Boole}
\qualifications{msc}
\degree{PhD}
\college{sefs}
\school{Mathematical Sciences}
\professor{Prof AN Other}
\supervisors{Dr One Supervisor\\Dr Other Supervisor}
\sponsor{Some Company}
\date{August 2020}

\maketitle

\prelim*{Informal preliminary section}

This mock section appears here because it was created by the
\verb+\prelim*+ command. This adds a ‘prelim’ (preliminary
section) heading \emph{without} triggering the Declaration
of Responsibility (see p. \pageref{UCC:decl}), so it can be
used for preliminary information pages for the reader that
are \emph{not} part of your thesis text.

That's why I am using it here to let you know that the
Declaration of Responsibility is triggered by the first one
of these that you use:

\begin{itemize}
\item a \textsf{dedication} environment
\item an \textsf{acknowledgements} environment
\item a \verb+\prelim+ \emph{without} the star
\item a \verb+\part+
\item a \verb+\chapter+
\end{itemize}

You \textsf{\small MUST} use at least one of them, otherwise
you won't have a Declaration of Responsibility (and you
won't have any thesis, either, because the minimum
structural element is the \verb+\chapter+).

So my next section in the \verb+.tex+ document is the
\textsf{dedication} environment, so that triggers my
Declaration of Responsibility (on the next page).

\begin{dedication}
This is for all those nice people who helped me.\footnote{A
  \textsf{dedication} is optional.}
\end{dedication}

\begin{acknowledgements}

This is often just a short acknowledgement of your main
helpers (partners, family, co-workers, volunteer subjects,
etc). But it could be an exhaustive list of every single
person who contributed knowledge or information to your
research.

It's usually regarded as embarrassing to thank your
supervisor, but some people do it anyway, for the divilment.
\end{acknowledgements}

\prelim{Introduction}

Now we finally get to the last thing before your actual
thesis text starts. Sometimes supervisors insist that the
Introduction should be the first chapter — if so, obey them
and make it so.

Otherwise this is the place to explain to the reader those
things that will not necessarily be obvious to them from the
formal text, like why you chose this topic when there were
so many others; or if you have some special or personal
interest in an aspect of the research.

\chapter{Background}
\begin{epigraph}[George Bernard Shaw]{}
Some time ago you mentioned something about changing the
cover… This is to give you formal notice that if you do
anything of the sort… I will have your heart's blood.
\end{epigraph}

An epigraph is permissible at the start of a chapter,
provided it is on-topic or otherwise enlightening. Note that
in this case I did \emph{not} use the auto-citation (as in
the full quotation below) but used the optional argument in
square brackets and left the normal argument in curly braces
present but empty:
\begin{verbatim}
\begin{epigraph}[George Bernard Shaw]{}
\end{verbatim}
This is because it's from a book written by someone else,
and I wanted Shaw's name to appear, not Hesketh Pearson's.

Shaw spared no pains over the editing and artistic
appearance of the volume (\citetitle{shaw3},
\citefield{shaw3}{year}).  He got Walter Crane to design the
cover, and when the printer did not come up to scratch he
wrote a letter to the Reader of the Newcastle-on-Tyne
publisher who had brought out \citetitle{shaw4}:
\begin{quotation}{[ch.12]{shaw2}}
Personally I have lost faith in you, because I believe the
artistic sense to be the true basis of moral rectitude: and
a more horrible offence against Art than what you have put
above Crane's design on the cover of the Essays, has never
been perpetrated even in Newcastle. I reject your handbill
with disdain, with rage, with contumelious epithets. You
must re-set the authors' names in the same type as "price
one shilling", and the words "Essays by" must on no account
be in a different type. To aim at having as many different
founts as possible on the same sheet is worthy of a jobbing
printer at work on a bookmaker's handbill; but that you who
turn out your Camelot title-pages so well should condescend
to such barbarism simply destroys my faith in human
nature... Of the hellish ugliness of the block of
letterpress headed "What the Press says," I cannot trust
myself to write, lest I be betrayed into intemperance of
language... Some time ago you mentioned something about
changing the cover of Cashel Byron, and introducing a design
of some pugilistic kind. This is to give you formal notice
that if you do anything of the sort without first submitting
the cover to me, I will have your heart's blood.

Yours respectfully,

G BERNARD SHAW.
\end{quotation}

\chapter{Review of research to date}

This is usually the chapter where you go through everything
anyone has written up until now, investigating the problem,
and coming up with answers, or just snippets of information;
as the fictional Professor Challenger said in
\citetitle{lostworld}, “One smallest new fact obtained in
the laboratory, one brick built into the temple of science,
far outweighs any second-hand exposition which passes an
idle hour, but can leave no useful result behind it.”
\parencite[Ch.5]{lostworld}

\begin{table}[hb]\label{dietgrowth}
  \caption{Mean growth rate and intakes added of supplement,
    milk, and water for 4 added diets [after
      \textcite{sherington}]} \centering
  \begin{tabular}{@{}|
      >{\vrule height1em width0pt}l|r|r|d{1}|r|@{}}
    \hline
    \multicolumn1{|b{25mm}}{%
      \vrule height3\baselineskip width 0pt Supplement}&
    \multicolumn1{|>{\centering}b{1.6cm}}{Growth rate
      (g/day)}& 
    \multicolumn1{|>{\centering}b{2.5cm}}{Supplement intake
      (g/day)}& 
    \multicolumn1{|>{\centering}b{2cm}}{Milk intake
      (ml/kg\textsuperscript{0.75})}&
    \multicolumn1{|>{\centering}b{2cm}|}{Water intake
      (ml/kg\textsuperscript{0.75})}\\[2mm]\hline
    Lucerne &145&450&10.5&144\\\hline
    Sesbania&132&476& 9.2&128\\\hline
    Leucaena&128&364& 8.9&121\\\hline
    None    & 89&  0& 9.8&108\\\hline
\end{tabular}
\end{table}

Tables and figures work as in standard \LaTeX, except that
more space per page is allowed for them, to minimise the
problems of having too many one after another so that they
don't fit properly.

\begin{figure}[ht]
  \caption{Swiss and Dutch Mennonite migrations of the
    1700s and 1800s}
  
  \includegraphics[width=\columnwidth]{menno-a}
  
  \footnotesize
  Courtesy of Paul C. Adams, Department of Geography
  and the Environment, University of Texas at Austin
  \parencite{adams}.
\end{figure}

\printbibliography

\appendix

\chapter{Questionnaire}

More

\nocite{*}
\end{document}
%</testfile>
% \fi
% \iffalse
%<*testbib>
@techreport{rfc2119,
  author      = {Scott Bradner},
  shortauthor = {Bradner},
  title       = {{Key words for use in RFCs to Indicate Requirement Levels}},
  institution = {Internet Engineering Task Force},
  address     = {Fremont, CA},
  number      = {RFC 2119},
  year        = {1997},
  month       = {3},
  url         = {http://www.ietf.org/rfc/rfc2119.txt}
}
@article{shaw1,
  author      = {George Bernard Shaw},
  shortauthor = {Shaw},
  title       = {{On Modern Typography (In article `The Author Looks
                  at his Book')}},
  journal     = {{The Dolphin: A Journal of the Making of Books}},
  editor      = {Lawrence C Wroth},
  shorteditor = {Wroth},
  publisher   = {Limited Editions Club},
  address     = {New York},
  year        = {1940},
  volume      = {4},
  number      = {1},
  pages       = {80-81}
}
@book{shaw2,
  author      = {Hesketh Pearson},
  title       = {{Bernard Shaw}},
  publisher   = {House of Stratus},
  date        = 2014,
  address     = {Looe, Cornwall},
  isbn        = 9871842321652}

@book{shaw3,
  editor      = {George Bernard Shaw},
  title       = {Fabian Essays in Socialism},
  shorttitle  = {Fabian Essays},
  publisher   = {The Fabian Society},
  location    = {London},
  year        = 1889,
  month       = 12
}

@book{shaw4,
  author      = {George Bernard Shaw},
  title       = {Cashel Byron's Profession},
  year        = 1886,
  edition     = 1,
  publisher   = {The Modern Press},
  pagetotal   = 164
}

@book{lostworld,
  title       = {The Lost World},
  author      = {Arthur Conan~Doyle},
  year        = 1912,
  publisher   = {Hodder \& Stoughton}
}

@article{einstein,
  author      = {Albert Einstein},
  shortauthor = {Einstein},
  title       = {{Grundgedanken der allgemeinen
                  Relativit\"{a}tstheorie und Anwendung dieser
                  Theorie in der Astronomie}},
  journal     = {{Preussische Akademie der Wissenschaften}},
  number      = {Schilpp 82},
  year        = {1915},
  volume      = {1},
  pages       = {315}
}
@book{heaney,
  author      = {Seamus Heaney},
  shortauthor = {Heaney},
  title       = {{Beowulf: A New Verse Translation}},
  publisher   = {WW Norton},
  address     = {New York},
  isbn        = {978-0393320978},
  year        = {2001},
  month       = {2},
  pages       = {215}
}
@book{fi,
  author      = {Peter Flynn},
  shortauthor = {Flynn},
  title       = {{Formatting Information}},
  publisher   = {Silmaril Consultants},
  address     = {Cork},
  edition     = {8th},
  year        = {2020},
  month       = {3},
  url         = {http://latex.silmaril.ie/formattinginformation}
}
@Manual{sherington,
  author =       {Sherington, J},
  title =        {{Informative Presentation of Graphs and Statistics}},
  organization = {Statistical Services Centre, University of Reading},
  year =         1998,
  url =          {http://www.reading.ac.uk/ssc/publications/guides/toptgs.htm},
  note =         {4.2, example table}
}
@InProceedings{adams,
  author =       {Paul Adams},
  title =        {{Linguistic Chaos in Montreal}},
  booktitle =    {{Chaos and the City miniconference}},
  year =         2002,
  month =        {11},
  url =          {http://www.utexas.edu/depts/grg/adams/chaos.ppt},
  institution  = {University of Texas School of Architecture}}
%</testbib>
% \fi
% \Finale

