Index: doc/theses/andrew_beach_MMath/Makefile
===================================================================
--- doc/theses/andrew_beach_MMath/Makefile	(revision 9c6f459404ce3627bd0c5f7bbf944db4b7c0feda)
+++ doc/theses/andrew_beach_MMath/Makefile	(revision c88f0cfd89882ae4c0bf70ca3afdf4516900cd96)
@@ -5,4 +5,6 @@
 TEXSRC=$(wildcard *.tex)
 BIBSRC=$(wildcard *.bib)
+STYSRC=$(wildcard *.sty)
+CLSSRC=$(wildcard *.cls)
 TEXLIB= .:${BUILD}:
 BIBLIB= .:../../bibliography
@@ -24,5 +26,5 @@
 all: ${DOC}
 
-${BUILD}/${DOC}: ${TEXSRC} ${BIBSRC} Makefile | ${BUILD}
+${BUILD}/${DOC}: ${TEXSRC} ${BIBSRC} ${STYSRC} ${CLSSRC} Makefile | ${BUILD}
 	${LATEX} ${BASE}
 	${BIBTEX} ${BUILD}/${BASE}
Index: doc/theses/andrew_beach_MMath/thesis.tex
===================================================================
--- doc/theses/andrew_beach_MMath/thesis.tex	(revision 9c6f459404ce3627bd0c5f7bbf944db4b7c0feda)
+++ doc/theses/andrew_beach_MMath/thesis.tex	(revision c88f0cfd89882ae4c0bf70ca3afdf4516900cd96)
@@ -1,84 +1,9 @@
-% uWaterloo Thesis Template for LaTeX 
-% Last Updated June 14, 2017 by Stephen Carr, IST Client Services
-% FOR ASSISTANCE, please send mail to rt-IST-CSmathsci@ist.uwaterloo.ca
-
-% Effective October 2006, the University of Waterloo 
-% requires electronic thesis submission. See the uWaterloo thesis regulations at
-% https://uwaterloo.ca/graduate-studies/thesis.
-
-% DON'T FORGET TO ADD YOUR OWN NAME AND TITLE in the "hyperref" package
-% configuration. THIS INFORMATION GETS EMBEDDED IN THE FINAL PDF DOCUMENT.
-% You can view the information if you view Properties of the PDF document.
-
-% Many faculties/departments also require one or more printed
-% copies. This template attempts to satisfy both types of output. 
-% It is based on the standard "book" document class which provides all
-% necessary sectioning structures and allows multi-part theses.
-
-% DISCLAIMER
-% To the best of our knowledge, this template satisfies the current uWaterloo
-% requirements. However, it is your responsibility to assure that you have met
-% all  requirements of the University and your particular department.
-% Many thanks for the feedback from many graduates that assisted the
-% development of this template.
-
-% -----------------------------------------------------------------------
-
-% By default, output is produced that is geared toward generating a PDF 
-% version optimized for viewing on an electronic display, including 
-% hyperlinks within the PDF.
- 
-% E.g. to process a thesis called "mythesis.tex" based on this template, run:
-
-% pdflatex mythesis	-- first pass of the pdflatex processor
-% bibtex mythesis	-- generates bibliography from .bib data file(s)
-% makeindex         -- should be run only if an index is used 
-% pdflatex mythesis	-- fixes numbering in cross-references,
-% pdflatex mythesis --   bibliographic references, glossaries, index, etc.
-
-% N.B. The "pdftex" program allows graphics in the following formats to be
-% included with the "\includegraphics" command: PNG, PDF, JPEG, TIFF
-% Tip 1: Generate your figures and photos in the size you want them to appear
-% in your thesis, rather than scaling them with \includegraphics options.
-% Tip 2: Any drawings you do should be in scalable vector graphic formats:
-% SVG, PNG, WMF, EPS and then converted to PNG or PDF, so they are scalable in
-% the final PDF as well.
-% Tip 3: Photographs should be cropped and compressed so as not to be too large.
-
-% To create a PDF output that is optimized for double-sided printing: 
-%
-% 1) comment-out the \documentclass statement in the preamble below, and
-% un-comment the second \documentclass line.
-%
-% 2) change the value assigned below to the boolean variable
-% "PrintVersion" from "false" to "true".
-
-% --------------------- Start of Document Preamble -----------------------
-
-% Specify the document class, default style attributes, and page dimensions
-% For hyperlinked PDF, suitable for viewing on a computer, use this:
-\documentclass[letterpaper,12pt,titlepage,oneside,final]{book}
- 
-% For PDF, suitable for double-sided printing, change the PrintVersion
-% variable below to "true" and use this \documentclass line instead of the one
-% above:
-%\documentclass[letterpaper,12pt,titlepage,openright,twoside,final]{book}
-
-% Some LaTeX commands I define for my own nomenclature.
-% If you have to, it's better to change nomenclature once here than in a 
-% million places throughout your thesis!
-\newcommand{\package}[1]{\textbf{#1}} % package names in bold text
-\newcommand{\cmmd}[1]{\textbackslash\texttt{#1}} % command name in tt font 
-\newcommand{\href}[1]{#1} % does nothing, but defines the command so the
-  % print-optimized version will ignore \href tags (redefined by hyperref pkg).
-%\newcommand{\texorpdfstring}[2]{#1} % does nothing, but defines the command
-% Anything defined here may be redefined by packages added below...
-
-% This package allows if-then-else control structures.
-\usepackage{ifthen}
-\newboolean{PrintVersion}
-\setboolean{PrintVersion}{false} 
-% CHANGE THIS VALUE TO "true" as necessary, to improve printed results for
-% hard copies by overriding some options of the hyperref package below.
+% Main tex file for thesis document.
+\documentclass[digital]{uw-ethesis}
+
+% Commands used in documenting how to use the template. To remove.
+\newcommand{\package}[1]{\textbf{#1}}
+\newcommand{\cmmd}[1]{\textbackslash\texttt{#1}}
+\newcommand{\href}[1]{#1}
 
 % For a nomenclature (optional; available from ctan.org)
@@ -86,97 +11,21 @@
 % Lots of math symbols and environments
 \usepackage{amsmath,amssymb,amstext}
-% For including graphics N.B. pdftex graphics driver 
+% For including graphics, sets the pdftex graphics driver.
 \usepackage[pdftex]{graphicx}
 
-% I believe the general index function is covered by the glossaries.
-% \usepackage{makeidx}
-% \makeindex
-
-% Hyperlinks make it very easy to navigate an electronic document.
-% In addition, this is where you should specify the thesis title
-% and author as they appear in the properties of the PDF document.
-% Use the "hyperref" package 
-% N.B. HYPERREF MUST BE THE LAST PACKAGE LOADED; ADD ADDITIONAL PKGS ABOVE
-% N.B. pagebackref=true provides links back from the References to the body
-% text. This can cause trouble for printing.
-\usepackage[pdftex,pagebackref=false]{hyperref} % with basic options
-\hypersetup{
-    plainpages=false,       % needed if Roman numbers in frontpages
-    unicode=false,          % non-Latin characters in Acrobat’s bookmarks
-    pdftoolbar=true,        % show Acrobat’s toolbar?
-    pdfmenubar=true,        % show Acrobat’s menu?
-    pdffitwindow=false,     % window fit to page when opened
-    pdfstartview={FitH},    % fits the width of the page to the window
-    pdftitle={uWaterloo\ LaTeX\ Thesis\ Template},    % title: CHANGE THIS TEXT!
-%    pdfauthor={Author},    % author: CHANGE THIS TEXT! and uncomment this line
-%    pdfsubject={Subject},  % subject: CHANGE THIS TEXT! and uncomment this line
-%    pdfkeywords={keyword1} {key2} {key3}, % list of keywords, and uncomment this line if desired
-    pdfnewwindow=true,      % links in new window
-    colorlinks=true,        % false: boxed links; true: colored links
-    linkcolor=blue,         % color of internal links
-    citecolor=green,        % color of links to bibliography
-    filecolor=magenta,      % color of file links
-    urlcolor=cyan           % color of external links
-}
-\ifthenelse{\boolean{PrintVersion}}{
-  % for improved print quality, override some hyperref options
-\hypersetup{
-%    colorlinks,%
-    citecolor=black,%
-    filecolor=black,%
-    linkcolor=black,%
-    urlcolor=black}
-}{} % end of ifthenelse (no else)
-
-\usepackage[toc,abbreviations]{glossaries-extra} % Exception to the
-% rule of hyperref being the last add-on package. If glossaries-extra is not
-% in your LaTeX distribution, get it from CTAN
-% (http://ctan.org/pkg/glossaries-extra). 
-
-% Setting up the page margins...
-% uWaterloo thesis requirements specify a minimum of 1 inch (72pt) margin at
-% the top, bottom, and outside page edges and a 1.125 in. (81pt) gutter
-% margin (on binding side). While this is not an issue for electronic
-% viewing, a PDF may be printed, and so we have the same page layout for
-% both printed and electronic versions, we leave the gutter margin in.
-% Set margins to minimum permitted by uWaterloo thesis regulations:
-\setlength{\marginparwidth}{0pt} % width of margin notes
-% N.B. If margin notes are used, you must adjust \textwidth, \marginparwidth
-% and \marginparsep so that the space left between the margin notes and page
-% edge is less than 15 mm (0.6 in.)
-% Width of space between body text and margin notes.
-\setlength{\marginparsep}{0pt}
-\setlength{\evensidemargin}{0.125in} % Adds 1/8 in. to binding side of all 
-% even-numbered pages when the "twoside" printing option is selected
-\setlength{\oddsidemargin}{0.125in} % Adds 1/8 in. to the left of all pages
-% when "oneside" printing is selected, and to the left of all odd-numbered
-% pages when "twoside" printing is selected
-% Assuming US letter paper (8.5 in. x 11 in.) and side margins as above.
-\setlength{\textwidth}{6.375in}
-\raggedbottom
-
-% The following statement specifies the amount of space between paragraphs.
-% Other reasonable specifications are \bigskipamount and \smallskipamount.
-\setlength{\parskip}{\medskipamount}
-
-% The following statement controls the line spacing.  The default
-% spacing corresponds to good typographic conventions and only slight
-% changes (e.g., perhaps "1.2"), if any, should be made.
-\renewcommand{\baselinestretch}{1} % this is the default line space setting
-
-% By default, each chapter will start on a recto (right-hand side)
-% page.  We also force each section of the front pages to start on 
-% a recto page by inserting \cleardoublepage commands.
-% In many cases, this will require that the verso page be
-% blank and, while it should be counted, a page number should not be
-% printed.  The following statements ensure a page number is not
-% printed on an otherwise blank verso page.
-\let\origdoublepage\cleardoublepage
-\newcommand{\clearemptydoublepage}{%
-  \clearpage{\pagestyle{empty}\origdoublepage}}
-\let\cleardoublepage\clearemptydoublepage
-
-% Define Glossary terms (This is properly done here, in the preamble.
-% Could be \input{} from a file...)
+\usehyperrefpackage[pdftex,pagebackref=false]{
+    pdftitle={Exception Handling in CFA},
+    pdfauthor={Andrew James Beach},
+    pdfsubject={Programming Languages},
+    pdfkeywords={exceptions,implementation},
+}
+
+% The \phantomsection is used to help the hyperref package create links.
+
+% Maybe only package that should be loaded after the hyperref package.
+% From http://ctan.org/pkg/glossaries-extra, extends glossaries which replaces
+% glossary and builds off of the makeindex system.
+\usepackage[toc,abbreviations]{glossaries-extra}
+
 % Main glossary entries -- definitions of relevant terminology
 \newglossaryentry{computer}
@@ -209,19 +58,10 @@
 description={Random vector: a location in n-dimensional Cartesian space, where each dimensional component is determined by a random process}
 }
- 
+
+% Generate the glossaries defined above.
 \makeglossaries
 
-%======================================================================
-%   L O G I C A L    D O C U M E N T -- the content of your thesis
-%======================================================================
 \begin{document}
 
-% For a large document, it is a good idea to divide your thesis
-% into several files, each one containing one chapter.
-% To illustrate this idea, the "front pages" (i.e., title page,
-% declaration, borrowers' page, abstract, acknowledgements,
-% dedication, table of contents, list of tables, list of figures,
-% nomenclature) are contained within the file "uw-ethesis-frontpgs.tex" which
-% is included into the document by the following statement.
 %----------------------------------------------------------------------
 % FRONT MATERIAL
@@ -232,9 +72,4 @@
 % MAIN BODY
 %----------------------------------------------------------------------
-% Because this is a short document, and to reduce the number of files
-% needed for this template, the chapters are not separate
-% documents as suggested above, but you get the idea. If they were
-% separate documents, they would each start with the \chapter command, i.e, do
-% not contain \documentclass or \begin{document} and \end{document} commands.
 %======================================================================
 \chapter{Introduction}
@@ -327,42 +162,22 @@
 %----------------------------------------------------------------------
 
-% B I B L I O G R A P H Y
-% -----------------------
-
-% The following statement selects the style to use for references. It controls
-% the sort order of the entries in the bibliography and also the formatting
-% for the in-text labels.
-\bibliographystyle{plain}
-% This specifies the location of the file containing the bibliographic
-% information. It assumes you're using BibTeX (if not, why not?).
-
-% This is needed if the book class is used, to place the anchor in the correct
-% page, because the bibliography will start on its own page.
+%----------------------------------------------------------------------
+% BIBLIOGRAPHY
+%----------------------------------------------------------------------
+
 % Use \clearpage instead if the document class uses the "oneside" argument.
 \cleardoublepage
-% With hyperref package, enables hyperlinking from the table of contents to
-% bibliography
 \phantomsection
 
-% The following statement causes the title "References" to be used for the
-% bibliography section:
-\renewcommand*{\bibname}{References}
-
-% Add the References to the Table of Contents
-\addcontentsline{toc}{chapter}{\textbf{References}}
-
-% Tip 5: You can create multiple .bib files to organize your references. Just
-% list them all in the \bibliogaphy command, separated by commas (no spaces).
+% Bibliography setup and creation, renamed to References.
+\addcontentsline{toc}{chapter}{\textbf{\bibname}}
+\bibliographystyle{plain}
 \bibliography{thesis}
 
-% The following statement causes the specified references to be added to the
-% bibliography even if they were not cited in the text. The asterisk is a
-% wildcard that causes all entries in the bibliographic database to be
-% included (optional).
+% Include all uncited entries in the bibliography.
 \nocite{*}
 
-% The \appendix statement indicates the beginning of the appendices.
+% Begin the appendix, add a title and table of contents entry.
 \appendix
-% Add a title page before the appendices and a line in the Table of Contents
 \chapter*{APPENDICES}
 \addcontentsline{toc}{chapter}{APPENDICES}
Index: doc/theses/andrew_beach_MMath/uw-ethesis.cls
===================================================================
--- doc/theses/andrew_beach_MMath/uw-ethesis.cls	(revision c88f0cfd89882ae4c0bf70ca3afdf4516900cd96)
+++ doc/theses/andrew_beach_MMath/uw-ethesis.cls	(revision c88f0cfd89882ae4c0bf70ca3afdf4516900cd96)
@@ -0,0 +1,137 @@
+% A document class built from the uw-ethesis template, 2017-06-14 version.
+% This link should get to the regulations:
+% https://uwaterloo.ca/graduate-studies/thesis.
+%
+% WIP I am still moving things out of the provided template.
+%
+% This is approximately (check regulations to be sure) the required set up for
+% a thesis at UW. It also adds some other pieces that are likely to be useful.
+%
+% There are several formats you may choose from. These adjust the settings so
+% the document comes out a little better for different uses. "digital" is for
+% pdf documents that will remain on a computer while "print" is for printing
+% paper copies.
+%
+% Options:
+%   <format>
+%     All the formats are options, sets the document's format to that format.
+%     If no format is given digital is the default.
+%
+% Exported Names:
+%   \ifformat{<format>}{<true>}{<false>}
+%     If the document's format is <format> than expands to <true> otherwise
+%     expands to <false>.
+%
+%   \usehyperrefpackage[<options>]{<setup>}
+%     Loads the hyperref package with <options> and preforms set up. The
+%     initial setup depends on the document format but they can be overriden
+%     with options in <setup> (set hyperref's \hypersetup for details).
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{uw-ethesis} %[DATE VERSION NOTES]
+
+\RequirePackage{etoolbox}
+
+% Requested Format:
+\newrobustcmd*{\ethesis@format}{digital}
+\DeclareOption{print}{\renewrobustcmd*{\ethesis@format}{print}}
+\DeclareOption{digital}{\renewrobustcmd*{\ethesis@format}{digital}}
+
+\ProcessOptions\relax
+
+\def\ifformat#1#2#3{\ifdefstring{\ethesis@format}{#1}{#2}{#3}}
+
+\ifformat{print}{%
+  \LoadClass[letterpaper,12pt,titlepage,openright,twoside,final]{book}%
+}{%
+  \LoadClass[letterpaper,12pt,titlepage,twoside,final]{book}%
+}
+
+% Setting up the page margins. These are the minimum margins in the uWaterloo
+% thesis requirements. 1in (72pt) on the top, bottom and outside and
+% 1 1/8in (81pt) on the inside/gutter/binding side. Only required for
+% printing but here set for all formats.
+
+% If margin notes are used, you must adjust \textwidth, \marginparwidth and
+% \marginparsep so space between the margin notes and page edge is less than
+% 15mm (0.6in). I don't actually understand that instruction.
+
+\setlength{\marginparwidth}{0pt}
+
+% Width of space between body text and margin notes.
+\setlength{\marginparsep}{0pt}
+
+% Set width of margin on binding side. With oneside all pages are odd.
+\setlength{\evensidemargin}{0.125in}
+\setlength{\oddsidemargin}{0.125in}
+
+% Assuming US letter paper (8.5 in. x 11 in.) and side margins as above.
+\setlength{\textwidth}{6.375in}
+\raggedbottom
+
+% The following statement specifies the amount of space between paragraphs.
+% Other reasonable specifications are \bigskipamount and \smallskipamount.
+\setlength{\parskip}{\medskipamount}
+
+% The following statement controls the line spacing. You should not change
+% this value significantly (e.g. perhaps "1.2").
+\renewcommand{\baselinestretch}{1}
+
+% Normally every chapter will start on a recto (right-hand side) page. This
+% command is used to make sure the each section of the front pages starts on
+% a recto page. This will often require an empty verso (left-hand side) page
+% that should not have the page number printed on it.
+\let\origdoublepage\cleardoublepage
+\newcommand{\clearemptydoublepage}{%
+  \clearpage{\pagestyle{empty}\origdoublepage}}
+\let\cleardoublepage\clearemptydoublepage
+
+% Change the default name of the bibliography.
+\renewcommand*{\bibname}{References}
+
+% Configurations
+\def\setThesisTitle#1{\newrobustcmd*{\ethesis@title}{#1}}
+\def\setThesisAuthor#1{\newrobustcmd*{\ethesis@author}{#1}}
+\def\setThesisSubject#1{\newrobustcmd*{\ethesis@subject}{#1}}
+\def\setThesisKeywords#1{\newrobustcmd*{\ethesis@keywords}{#1}}
+
+% Includes the hyperref package loading a number of defaults.
+\newrobustcmd*{\usehyperrefpackage}[2][]{%
+  \usepackage[#1]{hyperref}
+  \hypersetup{
+    plainpages=false,       % Needed for Roman numbers in frontpages.
+    unicode=false,          % Non-Latin characters in Acrobat ^ ^ s bookmarks.
+    pdftoolbar=true,        % Show Acrobat ^ ^ s toolbar?
+    pdfmenubar=true,        % Show Acrobat ^ ^ s menu?
+    pdffitwindow=false,     % Window is not fit to page when opened.
+    pdfstartview={FitH},    % Fits the width of the page to the window.
+  }
+  \ifdef{\ethesis@title}{\hypersetup{pdftitle={\ethesis@title}}}{}
+  \ifdef{\ethesis@author}{\hypersetup{pdfauthor={\ethesis@author}}}{}
+  \ifdef{\ethesis@subject}{\hypersetup{pdfsubject={\ethesis@subject}}}{}
+  \ifdef{\ethesis@keywords}{\hypersetup{pdfkeywords={\ethesis@keywords}}}{}
+  \ifformat{print}{
+    \hypersetup{
+      %colorlinks=false,
+      colorlinks=true, % I think there is a style difference here.
+      citecolor=black,
+      filecolor=black,
+      linkcolor=black,
+      urlcolor=black
+    }
+  }{
+    \hypersetup{
+      colorlinks=true,        % false: boxed links; true: colored links
+      linkcolor=blue,         % colour of internal links
+      citecolor=green,        % colour of links to bibliography
+      filecolor=magenta,      % colour of file links
+      urlcolor=cyan           % colour of external links
+    }
+  }
+  \notblank{#2}{\hypersetup{#2}}{}
+}
+
+% Includes the glossaries-extra package and sets up some helpers.
+% Except right now I don't really have any helpers to add.
+%\newrobustcmd*{\useglossariesextrapackage}[2][]{%
+%  \usepackage[#1]{glossaries-extra}
+%}
