summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ut-thesis
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-11-25 03:00:39 +0000
committerNorbert Preining <norbert@preining.info>2020-11-25 03:00:39 +0000
commit224d125bf0d14ba177ef8a181907a713484afa2f (patch)
treec7be3cf437ba902f6fd09520a329e373ed956ede /macros/latex/contrib/ut-thesis
parent55c6d66f61a96ba63cd8c141229843ad2ab42632 (diff)
CTAN sync 202011250300
Diffstat (limited to 'macros/latex/contrib/ut-thesis')
-rw-r--r--macros/latex/contrib/ut-thesis/README142
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.cls497
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.dtx607
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.ins39
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.pdfbin0 -> 116662 bytes
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.tex209
6 files changed, 663 insertions, 831 deletions
diff --git a/macros/latex/contrib/ut-thesis/README b/macros/latex/contrib/ut-thesis/README
index 289425e90f..74457725ac 100644
--- a/macros/latex/contrib/ut-thesis/README
+++ b/macros/latex/contrib/ut-thesis/README
@@ -1,10 +1,12 @@
-LaTeX2e document class and template for graduate theses that conform to
-the guidelines of the School of Graduate Studies at the University of
-Toronto (as of 2008). [http://www.sgs.utoronto.ca/informationfor/+
-students/finup/producingthesis/formatting.htm]
+LaTeX2e document class for graduate theses
+that conform to the formatting requirements of
+the School of Graduate Studies at the University of Toronto,
+as of Fall 2020:
+[https://www.sgs.utoronto.ca/academic-progress/program-completion/formatting]
-Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>
-last updated at 16:17 (EDT) on Wed 25 Sep 2013
+Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>,
+ 2020-2024 Jesse Knight <jesse.knight@mail.utoronto.ca>
+last updated at 15:30 (EST) on Thu 19 Nov 2020
This work may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
@@ -17,124 +19,14 @@ version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
The Current Maintainer of this work is
-Francois Pitt <fpitt@cs.utoronto.ca>.
+Jesse Knight <jesse.knight@mail.utoronto.ca>.
-This work consists of the following files:
- README: this file
- ut-thesis.cls: class file
- ut-thesis.tex: template
+This work consists of the files:
+- README
+- ut-thesis.dtx
+- ut-thesis.ins
+- ut-thesis.pdf (derived user manual)
+- ut-thesis.cls (derived class file)
-See the comments inside each file for further details.
-
----------------
-Version History
----------------
-
-TODO:
-- [2012/12/06] Redefinition of \thebibliography not compatible with
- packages like natbib. Figure out how to fix this.
-
-v2.1: 2013/09/25 (Francois Pitt)
-- Changed definition of dedication environment to simply format its
- paragraph flush right with no header -- this also helps fix a bug
- where LaTeX complains of a "missing \item" when both dedication and
- acknowledgement sections are used (reported by Bardia Bina).
-
-v2.0: 2012/06/01 (Francois Pitt)
-- Rewritten to use standard packages: `setspace' to handle line spacing
- and `geometry' for page layout. Some options and macros have been
- renamed from v1.8, hence the change of major version number -- this
- version is _not_ fully backward-compatible because of these changes.
-- Renamed `oneandahalfspaced' option to `onehalfspaced' (for consistency
- with `setspace' package).
-- Removed `singlespaced', `oneandahalfspaced', `doublespaced', and
- `spacing' environments -- use environments from `setspace' package
- instead.
-- Renamed `spacednotes' option to `standardspacednotes' and added
- `singlespacednotes' option.
-- Added options `cleardoublepagestyleempty', `cleardoublepagestyleplain'
- and `cleardoublepagestylestandard' to set the default style for
- cleared pages, and new macros `\clearthesisdoublepage' and
- `\clearstandarddoublepage'.
-- Changed default options: now 1 1/2-spaced and LaTeX default font size.
-- Renamed `utthesis' page style to `thesis'.
-- The abstract is no longer put on a right-side page by default.
-- Cleaned up the code and comments throughout.
-
-v1.8: 2000/02/20, 1999/12/10 (Francois Pitt)
-- Minor formatting changes to comments.
-- Fixed circular definition problem with \currenttextsize that caused
- TeX to run out of input stack memory.
-
-v1.7: 1999/06/02, 1999/05/20, 1999/05/13 (Francois Pitt)
-- Minor change to the format of the date printed on every page with the
- `draft' option.
-- Minor cosmetic change to the word "DRAFT" printed on the corners of
- every page with the `draft' option.
-- Made `draft' mode doublespaced by default (it just makes more sense
- for actual drafts; suggested by Eric Joanis).
-- Changed \currenttextsize from a "\newcommand" to a "\let".
-- Added "known bugs" above.
-
-v1.6: 1999/03/06 (Francois Pitt)
-- Minor change: replaced ``\ifx\empty#1\else...\fi'' with
- ``\ifx\empty#1\empty\else...\fi'' (the former works only by accident
- while the latter is logically correct).
-
-v1.5: 1999/02/17 (Francois Pitt)
-- Fixed missing page numbers and headers by removing redefinition of
- \cleardoublepage (reported by Robert Bernecky 1999/02/04 and Nedialko
- Nedialkov 1999/02/12).
-- Added \clearemptydoublepage and \clearplaindoublepage commands.
-- Removed redefinitions of \tableofcontents, \listoftables, and
- \listoffigures because they already call \clearpage or
- \cleardoublepage by default.
-- Removed "\setcounter{tocdepth}{2}" from the page layout section (moved
- to `ut-thesis.tex' where it belongs).
-- Added \ignore command to comment out parts of a file.
-- Put version macros at the top of the file.
-- Changed order of revision comments.
-
-v1.4: 1998/11/05 (Francois Pitt)
-- Fixed `abstract' environment so that it is really put on a separate
- page, and changed "\newpage\endgroup" at the end to
- "\par\endgroup\newpage", which is more logical.
-- Changed `acknowledgements' environment so that it is *not* put on a
- separate page, allowing users to add other text on that page (e.g.,
- `dedication' described next).
-- Added `dedication' environment based on `acknowledgements'
- (suggested by Robert Bernecky 98/11/04).
-- Changed page layout so that it is defined in terms of the physical
- page size instead of being hard-coded for letter paper (8.5" x 11").
-
-v1.3: 1998/11/01 (Francois Pitt)
-- Fixed `thebibliography' so page headers are generated in the same
- style as for the rest of the thesis.
-- Swapped \endgroup and \newpage in definition of `abstract' and
- `acknowledgements' environments, to fix problem with adjusted line
- spacing in `abstract'.
-- Renamed `\currentsize' to `\currenttextsize'.
-- Added \cleardoublepage at the end of preliminary sections, so that
- page 1 of main text is on right-hand side.
-
-v1.2: 1998/10/20 (Francois Pitt)
-- Changed `spacenotes' option to `spacednotes' to have more consistently
- named options.
-- Fixed spacing between main text and footnotes.
-- Fixed `singlespaced' environment, which didn't seem to work at all
- (reported by Nedialko Nedialkov 98/10/12): Actually, created a
- `newspacing' environment, which takes a parameter, and based
- `singlespaced', `oneandahalfspaced', and `doublespaced' environments
- on `newspacing'.
-
-v1.1: 1998/10/01 (Francois Pitt)
-- Fixed bug that caused footnotes to make following tables single-spaced
- (reported by Philip Edmonds 98/09/30).
-- Made spacing of marginal notes and footnotes the same.
-- Added option to control line spacing of notes.
-- Added options to control the size of margins.
-- Changed names of temporary macros used in redefinitions to avoid
- conflicts with existing names.
-
-v1.0: 1998/09/29 (Francois Pitt)
-- Initial version.
+See version history on GitHub:
+[https://github.com/jessexknight/ut-thesis] \ No newline at end of file
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.cls b/macros/latex/contrib/ut-thesis/ut-thesis.cls
deleted file mode 100644
index f9f83f3738..0000000000
--- a/macros/latex/contrib/ut-thesis/ut-thesis.cls
+++ /dev/null
@@ -1,497 +0,0 @@
-%% ut-thesis.cls -- document class for graduate theses at UofT
-%%
-%% Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>
-%% last updated at 16:18 (EDT) on Wed 25 Sep 2013
-%%
-%% This work may be distributed and/or modified under the conditions of
-%% the LaTeX Project Public License, either version 1.3c 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.3c 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
-%% Francois Pitt <fpitt@cs.utoronto.ca>.
-%%
-%% This work consists of the files listed in the accompanying README.
-
-%% USAGE: \documentclass{ut-thesis}
-%% \documentclass[...options...]{ut-thesis}
-%%
-%% The default settings produce a final copy, ready for submission to
-%% the School of Graduate Studies (SGS) at the University of Toronto:
-%% single-sided, "normal" margins (see below), one-and-a-half spaced
-%% with single-spaced notes.
-%%
-%% OPTIONS:
-%%
-%% - Any standard option for the LaTeX2e `report' class, including
-%% `10pt', `11pt', `12pt', `oneside', `twoside', etc.
-%%
-%% - `narrowmargins', `normalmargins', `widemargins', or
-%% `extrawidemargins': Set the size of the margins, as follows:
-%% . `narrow': 1 1/4" on the left, 3/4" on all other sides,
-%% headers & footers 3/8" from body
-%% (these are the minimum values required by SGS);
-%% . `normal': 1 1/4" on the left, 1" on all other sides,
-%% headers & footers 1/2" from body;
-%% . `wide': 1 1/4" on all sides,
-%% headers & footers 5/8" from body;
-%% . `extrawide': 1 1/2" on all sides,
-%% headers & footers 3/4" from body.
-%% If you have more than just a few marginal notes, it is recommended
-%% that you use at least `wide' margins. For other settings, use the
-%% \geometry command (see the template for details).
-%%
-%% - `singlespaced', `oneandahalfspaced', or `doublespaced': Set the
-%% entire document's default line spacing (except for notes, which
-%% are single-spaced by default). For other settings, use the
-%% \setstretch command (see the template for details).
-%%
-%% - `singlespacednotes' or `standardspacednotes': Set line spacing
-%% for footnotes and marginal notes: either single-spaced or the same
-%% as the rest of the document.
-%%
-%% - `cleardoublepagestyleempty', `cleardoublepagestyleplain', or
-%% `cleardoublepagestylestandard': Set the page style for all
-%% "cleared" pages (empty pages inserted in two-sided documents to
-%% put the next page on the right-hand side) to either `empty',
-%% `plain', or whatever style is in effect when the page is cleared
-%% (the default).
-%%
-%% - `draft': Produce a draft copy (double-sided, double-spaced,
-%% normal margins, with the word "DRAFT" printed at all four corners
-%% of every page).
-%%
-%% Note that these options can be used to override the default or draft
-%% document settings, so that it is possible, for example, to create a
-%% double-sided final copy, or a 1 1/2-spaced draft copy with wide
-%% margins, etc. You may use standard LaTeX packages to tailor the
-%% layout and formatting in other ways.
-%% Also note that when producing double-sided documents while _not_ in
-%% draft mode, new chapters and preliminary sections will always start
-%% on a right-hand page under the default settings (inserting a blank
-%% page if needed). This can be overridden by using the `openany' or
-%% `openright' options. To achieve this effect for individual sections
-%% or chapters, use \cleardoublepage -- or one of the more specific
-%% \clearemptydoublepage, \clearplaindoublepage, \clearthesisdoublepage,
-%% or \clearstandarddoublepage (see below for details).
-%%
-%% NEW ENVIRONMENTS and COMMANDS:
-%%
-%% * \degree{...}: (preamble only; REQUIRED)
-%% Specify the name of the degree (e.g., "Doctor of Philosophy").
-%%
-%% * \department{...}: (preamble only; REQUIRED)
-%% Specify the name of the graduate department.
-%%
-%% * \gradyear{...}: (preamble only; REQUIRED)
-%% Specify the year of graduation (defaults to current year).
-%%
-%% * \author{...}: (preamble only; REQUIRED)
-%% Specify the name of the author.
-%%
-%% * \title{...}: (preamble only; REQUIRED)
-%% Specify the title of the thesis.
-%%
-%% - \begin{preliminary}...\end{preliminary}:
-%% Delimit head matter (title page, abstract, table of contents,
-%% lists of tables and figures, etc.): set the page style and
-%% numbering for the preliminary sections and reset them for the main
-%% document.
-%%
-%% - \maketitle:
-%% Generate the title page from the information supplied in the
-%% preamble.
-%%
-%% - \begin{abstract}...\end{abstract}:
-%% Generate the abstract page, double-sided. (According to SGS
-%% guidelines, this must immediately follow the title page.)
-%%
-%% - \begin{dedication}...\end{dedication}:
-%% Generate a dedication section, if needed (just a paragraph
-%% formatted flush right).
-%%
-%% - \begin{acknowledgements}...\end{acknowledgements}:
-%% Generate an acknowledgements section, if needed.
-%%
-%% Note that neither the `dedication' nor the `acknowledgements' are
-%% put on a separate page by default (use \newpage to do this
-%% explicitly). Also note that the table of contents, list of
-%% tables, and list of figures can be generated using the usual LaTeX
-%% commands.
-%%
-%% - \begin{longquote}...\end{longquote}:
-%% Single-spaced version of the `quote' environment.
-%%
-%% - \begin{longquotation}...\end{longquotation}:
-%% Single-spaced version of the `quotation' environment.
-%%
-%% - \clearemptydoublepage, \clearplaindoublepage,
-%% \clearthesisdoublepage:
-%% Same as \cleardoublepage except that cleared pages have style
-%% `empty', `plain', or `thesis' respectively.
-%%
-%% - \clearstandarddoublepage:
-%% Same as the original \cleardoublepage (cleared pages use the style
-%% currently in effect) -- used to override the effects of options
-%% `cleardoublepagestyleempty' or `cleardoublepagestyleplain'.
-%%
-%% The companion file `ut-thesis.tex' contains a skeleton illustrating
-%% the use of this class.
-
-
-%%%%%%%%%%%% IDENTIFICATION %%%%%%%%%%%%
-
-\newcommand*{\utthesisversion}{v2.0} % current version number
-\newcommand*{\utthesisupdated}{2012/06/01} % date of last change(s)
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01] % robust macros with * form
-\ProvidesClass{ut-thesis}[\utthesisupdated\space\utthesisversion\space
- graduate theses at the University of Toronto]
-
-
-%%%%%%%%%%%% INITIAL CODE %%%%%%%%%%%%
-
-%% Switch for testing draft mode (toggled by `draft' option).
-\newif\if@draft
-\@draftfalse
-
-%% Switch for testing current page style.
-\newif\if@thesispagestyle
-\@thesispagestyletrue
-
-%% Save original definitions of footnote and marginal note macros and
-%% lengths, to be able to reset them below as needed (when changing
-%% between single-spaced and standard-spaced notes).
-\let\@thesis@footnotetext\@footnotetext
-\let\@thesis@mpfootnotetext\@mpfootnotetext
-\let\@thesis@marginparreset\@marginparreset
-\newlength{\@thesisfootnotesep}
-\newlength{\@thesismarginparpush}
-\AtBeginDocument
- {\setlength\@thesisfootnotesep{\footnotesep}
- \setlength\@thesismarginparpush{\marginparpush}}
-
-%% Save original definition of \cleardoublepage.
-\let\clearstandarddoublepage\cleardoublepage
-
-%% The \singlespacing macro from `setspace' includes some vertical space
-%% (to make it easier to change line spacing within the document).
-%% Unfortunately, this has undesirable side-effects within macros, so we
-%% define our own replacement here for use within the class.
-\newcommand*{\singlespacingnoskip}{\setstretch{\setspace@singlespace}}
-
-
-%%%%%%%%%%%% OPTION DECLARATION %%%%%%%%%%%%
-
-%% `draft' option: change default document settings.
-\DeclareOption{draft}{\@drafttrue
- \newcommand*{\tlDRAFT}%
- {\raisebox{ 3ex}[0pt][0pt]{\llap{\sffamily\scriptsize DRAFT\ \ }}}
- \newcommand*{\trDRAFT}%
- {\raisebox{ 3ex}[0pt][0pt]{\rlap{\sffamily\scriptsize \ \ DRAFT}}}
- \newcommand*{\blDRAFT}%
- {\raisebox{-3ex}[0pt][0pt]{\llap{\sffamily\scriptsize DRAFT\ \ }}}
- \newcommand*{\brDRAFT}%
- {\raisebox{-3ex}[0pt][0pt]{\rlap{\sffamily\scriptsize \ \ DRAFT}}}
- \ExecuteOptions{doublespaced}
- \PassOptionsToClass{draft,twoside,openany}{report}}
-
-%% Margin options.
-\DeclareOption{narrowmargins}{\AtEndOfClass % 1 1/4" left, 3/4" others
- {\geometry{margin=.75in,left=1.25in,headsep=.375in-\headheight,
- footskip=.375in,marginparwidth=.5in,marginparsep=.125in}}}
-\DeclareOption{normalmargins}{\AtEndOfClass % 1 1/4" left, 1" others
- {\geometry{margin=1in,left=1.25in,headsep=.5in-\headheight,
- footskip=.5in,marginparwidth=.75in,marginparsep=.125in}}}
-\DeclareOption{widemargins}{\AtEndOfClass % 1 1/4" all around
- {\geometry{margin=1.25in,headsep=.625in-\headheight,
- footskip=.625in,marginparwidth=.75in,marginparsep=.25in}}}
-\DeclareOption{extrawidemargins}{\AtEndOfClass % 1 1/2" all around
- {\geometry{margin=1.5in,headsep=.75in-\headheight,
- footskip=.75in,marginparwidth=1in,marginparsep=.25in}}}
-
-%% Line Spacing options.
-\DeclareOption{singlespaced}{\AtEndOfClass{\singlespacingnoskip}}
-\DeclareOption{onehalfspaced}{\AtEndOfClass{\onehalfspacing}}
-\DeclareOption{doublespaced}{\AtEndOfClass{\doublespacing}}
-
-%% Line spacing for notes.
-\DeclareOption{singlespacednotes}{\AtBeginDocument
- {\setlength\footnotesep{\@thesisfootnotesep}
- \setlength\marginparpush{\@thesismarginparpush}
- \renewcommand{\@footnotetext}[1]%
- {\@thesis@footnotetext{#1\singlespacingnoskip}}
- \renewcommand{\@mpfootnotetext}[1]%
- {\@thesis@mpfootnotetext{#1\singlespacingnoskip}}
- \renewcommand*{\@marginparreset}%
- {\@thesis@marginparreset\singlespacingnoskip}}}
-\DeclareOption{standardspacednotes}{\AtBeginDocument
- {\setlength\footnotesep{\baselineskip-\@thesisfootnotesep}
- \setlength\marginparpush{\baselineskip-\@thesismarginparpush}
- \let\@footnotetext\@thesis@footnotetext
- \let\@mpfootnotetext\@thesis@mpfootnotetext
- \let\@marginparreset\@thesis@marginparreset}}
-
-%% Page styles for cleared pages.
-\DeclareOption{cleardoublepagestyleempty}
- {\AtEndOfClass{\let\cleardoublepage\clearemptydoublepage}}
-\DeclareOption{cleardoublepagestyleplain}
- {\AtEndOfClass{\let\cleardoublepage\clearplaindoublepage}}
-\DeclareOption{cleardoublepagestylestandard}
- {\AtEndOfClass{\let\cleardoublepage\clearstandarddoublepage}}
-
-%% All other options are passed to the base class directly.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
-
-
-%%%%%%%%%%%% OPTION EXECUTION %%%%%%%%%%%%
-
-%% Default settings: standard options followed by ut-thesis options.
-\ExecuteOptions{letterpaper,oneside,openright}
-\ExecuteOptions{normalmargins,onehalfspaced,singlespacednotes}
-
-%% Process options.
-\ProcessOptions
-
-
-%%%%%%%%%%%% PACKAGE LOADING %%%%%%%%%%%%
-
-%% Load base class using current setting for basic options.
-\LoadClass{report}
-
-%% To set/change page layout.
-\RequirePackage{calc}
-\RequirePackage{geometry}
-
-%% To set/change line spacing.
-\RequirePackage{setspace}
-
-
-%%%%%%%%%%%% MAIN CODE %%%%%%%%%%%%
-
-%%%%%% Parameters
-
-%% The following five commands set the respective field values so we can
-%% generate the title page and abstract page automatically.
-\newcommand*{\degree}[1]%
- {\ifx\empty#1\empty\else\gdef\@degree{#1}\fi}
-\newcommand*{\department}[1]%
- {\ifx\empty#1\empty\else\gdef\@department{#1}\fi}
-\newcommand*{\gradyear}[1]%
- {\ifx\empty#1\empty\else\gdef\@gradyear{#1}\fi}
-\renewcommand*{\author}[1]%
- {\ifx\empty#1\empty\else\gdef\@author{#1}\fi}
-\renewcommand*{\title}[1]%
- {\ifx\empty#1\empty\else\gdef\@title{#1}\fi}
-
-%% Default values for the required fields.
-\degree{\emph{(degree)}}
-\department{\emph{(department)}}
-\gradyear{\emph{(year of graduation)}}
-\author{\emph{(author)}}
-\title{\emph{(title)}}
-
-%%%%%% New formatting environments and commands.
-
-%% \begin{preliminary} sets the pagestyle and page numbering for the
-%% preliminary sections; \end{preliminary} resets the page numbering.
-%% The default page style is used outside of the preliminary block.
-\newenvironment*{preliminary}%
- {\pagestyle{plain}\pagenumbering{roman}}%
- {\cleardoublepage\pagenumbering{arabic}}
-
-%% Change \maketitle to follow SGS guidelines.
-\renewcommand*{\maketitle}%
- {\begin{titlepage}
- \large\singlespacingnoskip
- \begin{center}
- \mbox{}
- \vfill
- \textsc{\@title}\\
- \vfill
- by \\
- \vfill
- {\@author}\\
- \vfill
- \vfill
- A thesis submitted in conformity with the requirements\\
- for the degree of {\@degree}\\
- Graduate Department of {\@department}\\
- University of Toronto\\
- \vfill
- {\copyright} Copyright {\@gradyear} by {\@author}\\
- \vspace{.01\textheight}
- \mbox{}
- \end{center}
- \setcounter{page}{1}
- \end{titlepage}
- \setcounter{page}{2}}
-
-%% Change \begin{abstract}...\end{abstract} to follow SGS guidelines.
-\renewenvironment*{abstract}%
- {\begin{center}
- \section*{Abstract}
- \end{center}
- \begin{center}
- {\@title}\\[2ex]
- {\@author}\\
- {\@degree}\\
- Graduate Department of {\@department}\\
- University of Toronto\\
- {\@gradyear}\\
- \end{center}
- \begingroup
- %% Adjust line spacing: if it was less than 2, increase it to 2;
- %% otherwise, leave it as is.
- \ifdim \baselinestretch pt < 1.6pt \doublespacing\fi}%
- {\par\endgroup\newpage}
-
-%% \begin{dedication}...\end{dedication} formats a dedication section
-%% (*not* on a separate page -- just a paragraph formatted flush right).
-\newenvironment*{dedication}%
- {\begin{flushright}}%
- {\end{flushright}}
-
-%% \begin{acknowledgements}...\end{acknowledgements} formats an
-%% acknowledgements section (*not* on a separate page).
-\newenvironment*{acknowledgements}%
- {\begin{center}
- \section*{Acknowledgements}
- \end{center}
- \begingroup\noindent}%
- {\par\endgroup}
-
-%% Redefine `thebibliography' environment so that it generates headers
-%% in the same style as the rest of the document.
-\let\@thesisthebibliography\thebibliography
-\renewcommand*{\thebibliography}[1]{\@thesisthebibliography{#1}
- \if@thesispagestyle\@mkboth{\textsc{\bibname}}{\textsc{\bibname}}\fi}
-
-%% Variations of \cleardoublepage that explicitly set the pagestyle of
-%% any inserted blank page.
-\newcommand*{\clearemptydoublepage}%
- {{\pagestyle{empty}\clearstandarddoublepage}}
-\newcommand*{\clearplaindoublepage}%
- {{\pagestyle{plain}\clearstandarddoublepage}}
-\newcommand*{\clearthesisdoublepage}%
- {{\pagestyle{thesis}\clearstandarddoublepage}}
-
-%% Single-spaced quotes and quotations.
-\newenvironment*{longquote}%
- {\begin{quote}\singlespacingnoskip}{\end{quote}}
-\newenvironment*{longquotation}%
- {\begin{quotation}\singlespacingnoskip}{\end{quotation}}
-
-%%%%%% Page Styles
-
-%% Redefine all four standard page styles (empty, plain, headings,
-%% myheadings), based on the definitions in `report', so that they
-%% conform to the SGS guidelines (and include draft information if
-%% applicable). Then, define a new pagestyle `thesis'.
-
-%% TODO: Get rid of copy-pasted definitions for pagestyles?
-
-%% Pagestyle `empty'.
-\renewcommand*{\ps@empty}%
- {\@thesispagestylefalse
- \let\@mkboth\@gobbletwo
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \let\@evenfoot\@oddfoot
- \def\@oddhead{\if@draft\tlDRAFT\hfil
- {\slshape\small\today}\hfil\trDRAFT\fi}%
- \let\@evenhead\@oddhead}
-
-%% Pagestyle `plain'.
-\renewcommand*{\ps@plain}%
- {\@thesispagestylefalse
- \let\@mkboth\@gobbletwo
- \def\@oddfoot{\if@draft\blDRAFT\fi\hfil
- \thepage\hfil\if@draft\brDRAFT\fi}%
- \let\@evenfoot\@oddfoot
- \def\@oddhead{\if@draft\tlDRAFT\hfil
- {\slshape\small\today}\hfil\trDRAFT\fi}%
- \let\@evenhead\@oddhead}
-
-%% Pagestyle `headings'.
-\if@twoside % two-sided printing
-\renewcommand*{\ps@headings}%
- {\@thesispagestylefalse
- \let\@mkboth\markboth
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \let\@evenfoot\@oddfoot
- \def\@oddhead{\if@draft\tlDRAFT\fi{\slshape\rightmark}\hfil
- \thepage\if@draft\trDRAFT\fi}%
- \def\@evenhead{\if@draft\tlDRAFT\fi\thepage\hfil
- {\slshape\leftmark}\if@draft\trDRAFT\fi}%
- \def\chaptermark##1{\markboth
- {\MakeUppercase{\ifnum \c@secnumdepth >\m@ne
- \@chapapp\ \thechapter. \ \fi ##1}}{}}%
- \def\sectionmark##1{\markright
- {\MakeUppercase{\ifnum \c@secnumdepth >\z@
- \thesection. \ \fi ##1}}}}
-\else % one-sided printing
-\renewcommand*{\ps@headings}%
- {\@thesispagestylefalse
- \let\@mkboth\markboth
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \def\@oddhead{\if@draft\tlDRAFT\fi{\slshape\rightmark}\hfil
- \thepage\if@draft\trDRAFT\fi}%
- \def\chaptermark##1{\markright
- {\MakeUppercase{\ifnum \c@secnumdepth >\m@ne
- \@chapapp\ \thechapter. \ \fi ##1}}}}
-\fi%@twoside
-
-%% Pagestyle `myheadings'.
-\renewcommand*{\ps@myheadings}%
- {\@thesispagestylefalse
- \let\@mkboth\@gobbletwo
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \let\@evenfoot\@oddfoot
- \def\@oddhead{\if@draft\tlDRAFT\fi{\slshape\rightmark}\hfil
- \thepage\if@draft\trDRAFT\fi}%
- \def\@evenhead{\if@draft\tlDRAFT\fi\thepage\hfil
- {\slshape\leftmark}\if@draft\trDRAFT\fi}%
- \let\chaptermark\@gobble\let\sectionmark\@gobble}
-
-%% Pagestyle `thesis' (based on `headings').
-\if@twoside % two-sided printing
-\newcommand*{\ps@thesis}%
- {\@thesispagestyletrue
- \let\@mkboth\markboth
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \let\@evenfoot\@oddfoot
- \def\@oddhead{\if@draft\tlDRAFT\fi{\slshape\rightmark}\hfil
- \thepage\if@draft\trDRAFT\fi}%
- \def\@evenhead{\if@draft\tlDRAFT\fi\thepage\hfil
- {\slshape\leftmark}\if@draft\trDRAFT\fi}%
- \def\chaptermark##1{\markboth
- {\textsc{\ifnum \c@secnumdepth >\m@ne
- \@chapapp\ \thechapter. \ \fi ##1}}{}}%
- \def\sectionmark##1{\markright
- {\textsc{\ifnum \c@secnumdepth >\z@
- \thesection. \ \fi ##1}}}}
-\else % one-sided printing
-\newcommand*{\ps@thesis}%
- {\@thesispagestyletrue
- \let\@mkboth\markboth
- \def\@oddfoot{\if@draft\blDRAFT\hfil
- {\slshape\small\today}\hfil\brDRAFT\fi}%
- \def\@oddhead{\if@draft\tlDRAFT\fi{\slshape\rightmark}\hfil
- \thepage\if@draft\trDRAFT\fi}%
- \def\chaptermark##1{\markright
- {\textsc{\ifnum \c@secnumdepth >\m@ne
- \@chapapp\ \thechapter. \ \fi ##1}}}}
-\fi%@twoside
-
-%% Default page style.
-\pagestyle{thesis}
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.dtx b/macros/latex/contrib/ut-thesis/ut-thesis.dtx
new file mode 100644
index 0000000000..f1180b7056
--- /dev/null
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.dtx
@@ -0,0 +1,607 @@
+% \iffalse
+%<*driver>
+\ProvidesFile{ut-thesis.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<class>\ProvidesClass{ut-thesis}
+%<*class>
+[2020/11/19 v3.0.0a University of Toronto thesis class]
+%</class>
+%
+%<*driver>
+\documentclass[10pt]{ltxdoc}
+\usepackage[osf]{mathpazo}
+\usepackage[toc]{multitoc}
+\renewcommand*{\multicolumntoc}{2}
+\usepackage[margin=3cm,inner=5cm]{geometry}
+\usepackage{xcolor}
+\definecolor{code} {HTML}{990033}
+\definecolor{link} {HTML}{000066}
+\let\ottfamily\ttfamily
+\renewcommand{\ttfamily}{\color{code}\ottfamily}
+\renewcommand{\MacroFont}{\ttfamily\color{code}}
+\usepackage[colorlinks,linkcolor=link]{hyperref}
+\setlength{\skip\footins}{4ex}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{6pt}
+\newcommand{\smacro}[2][0]{%
+ \begin{macro}{#2}\end{macro}%
+ \vspace{\dimexpr #1\baselineskip-3\baselineskip}}
+\begin{document}
+ \DocInput{ut-thesis.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{ut-thesis.dtx}
+%
+% \title{The \texttt{ut-thesis} class
+% \thanks{\fileversion~[\filedate] CTAN repository:
+% \href{https://ctan.org/pkg/ut-thesis}
+% {\texttt{https://ctan.org/pkg/ut-thesis}}}}
+% \author{
+% Francois Pitt,
+% Jesse Knight
+% \thanks{maintainer, contact:
+% \href{mailto:jesse.knight@mail.utoronto.ca}
+% {\texttt{jesse.knight@mail.utoronto.ca}}}
+% }
+%
+% \maketitle
+%
+% \begin{abstract}\noindent
+% The |ut-thesis| document class implements the formatting requirements of
+% the University of Toronto School of Graduate Studies (SGS),
+% as of Fall 2020.
+% \end{abstract}
+%
+% {\footnotesize\setlength{\parskip}{3pt}\tableofcontents}
+% \clearpage
+%
+% \section{Installation}\label{inst}
+%
+% To use the |ut-thesis| class,
+% you must first make the file |ut-thesis.cls| visible to your current \LaTeX\ distribution.
+% There are two ways to do this:
+% \begin{itemize}
+% \item \textbf{local file}: Place the file |ut-thesis.cls| in your project directory.
+% This is usually easiest, and works if you don't have write access
+% in the \LaTeX\ distribution, such as if you use Overleaf.
+% \item \textbf{installing}: Installation steps will depend on your \LaTeX\ distribution.
+% Some helpful instructions can be found
+% \href{https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages}{here}.
+% \end{itemize}
+%
+% \section{Usage}\label{use}
+%
+% |\documentclass{ut-thesis}|\\
+% |\documentclass[ <options> ]{ut-thesis}|
+%
+% The default options produce a final copy, ready for submission to
+% the University of Toronto School of Graduate Studies (SGS).
+%
+% \subsection{Options}\label{use:opt}
+%
+% The default class options are denoted like |option*|.
+%
+% \subsubsection{Paper Size}\label{use:opt:paper}
+%
+% The standard page sizes are supported, including:
+% |[letterpaper*]|, and |[a4paper]|.
+%
+% \subsubsection{Font Size}\label{use:opt:fontsize}
+%
+% \smacro[ 1]{[10pt*]}
+% \smacro[ 1]{[11pt]}
+% \smacro[-2]{[12pt]}
+% \begin{macro}{]}
+% The three standard font sizes are supported.
+% SGS requires at least 10\,pt font for the text,
+% but captions, footnotes, etc.\ can be smaller.
+% \end{macro}
+%
+% \subsubsection{Line Spacing}\label{use:opt:spacing}
+%
+% \smacro[ 1]{[singlespacing]}
+% \smacro[ 1]{[onehalfspacing*]}
+% \smacro[-2]{[doublespacing]}
+% \begin{macro}{]}
+% Three options are available for line spacing.
+% Note that |[singlespacing]| does not conform to the SGS guidelines,
+% but we provide it in case you ever prefer it while writing.
+% \end{macro}
+%
+% \subsubsection{Margins}\label{use:opt:margins}
+%
+% \paragraph{Sides:}
+% Three variants of margins are defined,
+% reflecting preferences for printing and binding,
+% the first two being the same as in the |book| class:
+%
+% \begin{macro}{[oneside]}
+% All pages behave as if they open to the right (wider left margin).
+% \end{macro}
+%
+% \begin{macro}{[twoside*]}
+% Most pages will alternate opening to the right and left;
+% however, the commands: |\maketitle|, |\begin{abstract}| and |\mainmatter|,
+% which create new pages, will always open to the right,
+% sometimes requiring a blank page before to do so.
+% \end{macro}
+%
+% \begin{macro}{[equalmargins]}
+% The left and right margins are equal (averaged);
+% all pages behave as if they open to the right.
+% \end{macro}
+%
+% \paragraph{Opening:}
+% Only if |[twoside]| is used, two additional options from the |book| class
+% control how other new pages will open, including new pages created by:
+% |\listoftables|, |\listoffigures|, and |\chapter{}|.
+%
+% \begin{macro}{[openright*]}
+% These pages will always open to the right (like |\maketitle|, etc.).
+% \end{macro}
+%
+% \begin{macro}{[openany]}
+% These pages can open to the left or right.
+% \end{macro}
+%
+% \paragraph{Widths:}
+% Four widths of margins are defined based on
+% the inner (left) and outer (right/top/bottom) dimensions:
+%
+% \begin{macro}{[narrowmargins]}
+% Inner: 1.25 inch; outer: 0.75 inch
+% (minimum SGS requirements)
+% \end{macro}
+% \begin{macro}{[normalmargins*]}
+% Inner: 1.50 inch; outer: 1.00 inch
+% \end{macro}
+% \begin{macro}{[widemargins]}
+% Inner: 1.75 inch; outer: 1.25 inch
+% \end{macro}
+% \begin{macro}{[extrawidemargins]}
+% Inner: 2.00 inch; outer: 1.50 inch
+% \end{macro}
+%
+% \subsubsection{Draft}\label{use:opt:draft}
+%
+% \begin{macro}{[draft]}
+% Adds ``DRAFT'' to all 4 corners, plus the date centered below the footer.
+% The default |draft| behaviour for the |book| class is also supported.
+% \end{macro}
+%
+% \subsection{Commands}\label{use:cmd}
+%
+% \subsubsection{Author Information}\label{use:cmd:author}
+%
+% The following 5 commands should be used in the preamble
+% to define the content of the titlepage (|\maketitle|) and abstract page (|abstract| environment).
+%
+% \begin{macro}{\author}
+% Your full name.
+% \end{macro}
+%
+% \begin{macro}{\title}
+% The title of your thesis.
+% \end{macro}
+%
+% \begin{macro}{\degree}
+% The title of your degree (spelled out, like ``Doctor of Philosophy'' not ``PhD'').
+% \end{macro}
+%
+% \begin{macro}{\department}
+% The name of your department.
+% \end{macro}
+%
+% \begin{macro}{\gradyear}
+% The year of your degree completion.
+% \end{macro}
+%
+% If undefined, template values are used like ``(author)''.
+%
+% \subsubsection{Document Parts}\label{use:cmd:parts}
+%
+% From the |book| class, four commands can be used to divide the document into major parts.
+% These should be used in the order they appear here, as needed.
+% The first two commands are necessary for the required SGS page numbering style.
+%
+% \begin{macro}{\frontmatter}
+% Turns off chapter numbers, uses roman numerals for page numbers.\\
+% Suggested use: immediately after |\begin{document}|.
+% \end{macro}
+%
+% \begin{macro}{\mainmatter}
+% Turns on chapter numbers, uses arabic numerals for page numbers.\\
+% Suggested use: immediately before the first main |\chapter{}| command.
+% \end{macro}
+%
+% \begin{macro}{\appendix}
+% Uses letters for chapter numbers, no change to page numbers.\\
+% Suggested use: immediately before the first appendix |\chapter{}| command.
+% \end{macro}
+%
+% \begin{macro}{\backmatter}
+% Turns off chapter numbers, no change to page numbers.\\
+% Suggested use: immediately before |\printbibliography| or |\bibliography{}|.
+% \end{macro}
+%
+% \subsubsection{Front Matter}\label{use:cmd:front}
+%
+% From the |book| class, the following commands are available to generate the frontmatter.
+% These should be used in the order they appear here, as needed.
+%
+% \begin{macro}{\maketitle}
+% Creates the title page according to SGS requirements,
+% and adds a blank page following if using |[twoside]|.
+% \end{macro}
+%
+% (The abstract page should appear here;
+% see \S~\ref{use:env:abs}).
+%
+% (The dedication and acknowledgements should appear here, as needed;
+% see \S~\ref{use:env:ded-ackn}).
+%
+% \begin{macro}{\tableofcontents}
+% Prints the table of contents, starting on a new page.
+% \end{macro}
+%
+% \begin{macro}{\tableoftables}
+% Prints the table of tables, starting on a new page.
+% \end{macro}
+%
+% \begin{macro}{\tableoffigures}
+% Prints a table of figures, starting on a new page.
+% \end{macro}
+%
+% \subsection{Environments}\label{use:env}
+%
+% \subsubsection{Abstract}\label{use:env:abs}
+%
+% \begin{macro}{abstract}
+% Creates the abstract page according to SGS requirements,
+% and adds a blank page if using |[twoside]|.
+% The abstract content should be added within the environment,
+% and should be no more than
+% 350 words for a PhD thesis or
+% 150 words for a Master's thesis.
+% We do not provide tools for counting words.
+% \end{macro}
+%
+% \subsubsection{Dedication \& Acknowledgments}\label{use:env:ded-ackn}
+%
+% \begin{macro}{dedication}
+% The |dedication| environment formats text flush right and 2/3 down a new page.
+% Not necessary for SGS requirements, so you're welcome to redefine this environment.
+% \end{macro}
+%
+% \begin{macro}{acknowledgements}
+% The |acknowledgments| environment creates a centered heading using |\section*{}|,
+% and a new page after the text.
+% Not necessary for SGS requirements, so you're welcome to redefine this environment.
+% \end{macro}
+%
+% \subsubsection{Base Environments}\label{use:env:misc}
+%
+% As in the |book| class, the base environments
+% like |figure|, |table|, and |equation| are sub-numbered
+% within the current chapter like ``(2.1)'' for Equation~1 in Chapter~2.
+% The behaviour is equivalent to: |\counterwithin{equation}{section}|,
+% and can be undone with: |\counterwithout{equation}{section}|.
+%
+% For sub-figures, we recommend the |subcaption| package.
+%
+% The |quote| and |quotation| environments from the |book| class are also available.
+%
+% \clearpage
+%
+% \section{Implementation}\label{imp}
+%
+% \subsection{Option Declaration}\label{imp:opt}
+%
+% \subsubsection{Draft Mode}\label{imp:opt:draft}
+% Specifying |draft| adds ``DRAFT'' to all 4 corners,
+% plus the date centered below the footer.
+% The default |draft| behaviour for the |book| class is also supported.
+% \begin{macrocode}
+\newcommand{\draftmarkstyle}{\scriptsize\sffamily}
+\DeclareOption{draft}{%
+ \PassOptionsToClass{\CurrentOption}{book}
+ \AtEndOfClass{
+ \AtBeginShipout{\AtBeginShipoutUpperLeft{%
+ \draftmarkstyle
+ \put(+0.125in, -0.125in-\f@size pt ){\rlap{DRAFT}}
+ \put(-0.125in+\paperwidth,-0.125in-\f@size pt ){\llap{DRAFT}}
+ \put(+0.125in, +0.125in-\paperheight){\rlap{DRAFT}}
+ \put(-0.125in+\paperwidth,+0.125in-\paperheight){\llap{DRAFT}}
+ \put(+0.5\paperwidth,+0.125in-\paperheight)%
+ {\makebox[0in][c]{\today}}
+}}}}
+% \end{macrocode}
+%
+% \subsubsection{Margins}\label{imp:opt:margins}
+% First, we define three lengths to help us compute the margins:
+% |\margin@v| is the top and bottom margins;
+% |\margin@xhi| is the inner margin offset;
+% |\margin@xho| is the outer margin offset.
+% \begin{macrocode}
+\newlength{\margin@v}
+\newlength{\margin@xhi}\setlength{\margin@xhi}{0.5in}
+\newlength{\margin@xho}\setlength{\margin@xho}{0.0in}
+% \end{macrocode}
+%
+% The options are based off |\margin@v|:
+% \begin{macrocode}
+\DeclareOption{narrowmargins} {\setlength{\margin@v}{0.75in}}
+\DeclareOption{normalmargins} {\setlength{\margin@v}{1.00in}}
+\DeclareOption{widemargins} {\setlength{\margin@v}{1.25in}}
+\DeclareOption{extrawidemargins}{\setlength{\margin@v}{1.50in}}
+% \end{macrocode}
+%
+% For digital copies, |equalmargins| may be preferred.
+% However, to keep the |\textwidth| consistent
+% for any of the above margin options with and without |equalmargins|,
+% we simply average the inner and outer offsets:
+% \begin{macrocode}
+\DeclareOption{equalmargins}%
+ {\setlength{\margin@xho}{0.5\margin@xhi}
+ \setlength{\margin@xhi}{0.5\margin@xhi}}
+% \end{macrocode}
+%
+% Finally, we actually compute the margins using the above three lengths,
+% and adjust the placement of the header, footer, and margin notes.
+% \begin{macrocode}
+\AtEndOfClass{
+ \setlength{\leftmargin}{\dimexpr\margin@v+\margin@xhi}
+ \setlength{\rightmargin}{\dimexpr\margin@v+\margin@xho}
+ \geometry{
+ top = \margin@v,
+ bottom = \margin@v,
+ inner = \leftmargin,
+ outer = \rightmargin,
+ headsep = \dimexpr 0.5\margin@v - \headheight,
+ footskip = \dimexpr 0.5\margin@v,
+ marginparwidth = \dimexpr \rightmargin - 0.25in,
+ marginparsep = 0.125in,
+}}
+% \end{macrocode}
+%
+% \subsubsection{Line Spacing}\label{imp:opt:spacing}
+% We're using the |setspace| package.
+% We simply call one of the spacing commands after the class is loaded.
+% So, be careful to place any line spacing commands within a group,
+% or the global setting can be changed in the middle of the document.
+% The default is |onehalfspacing|.
+%
+% \begin{macrocode}
+\DeclareOption{doublespacing}{%
+ \AtEndOfClass{\doublespacing}
+}
+\DeclareOption{onehalfspacing}{%
+ \AtEndOfClass{\onehalfspacing}
+}
+\DeclareOption{singlespacing}{%
+ \AtEndOfClass{\singlespacing}
+}
+% \end{macrocode}
+%
+% \subsubsection{Book Options}\label{imp:opt:misc}
+%
+% Finally, we try to process all remaining options using the |book| class,
+% so the usual options and default values should be defined, like:
+% \begin{itemize}
+% \item page size: e.g. |letterpaper|, |a4paper|, \dots
+% \item font size: e.g. |10pt|, |11pt|, |12pt|
+% \item open side for twoside: e.g. |openright|, |openany|
+% \end{itemize}
+%
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
+% \end{macrocode}
+%
+% \subsubsection{Default Options \& Processing}\label{imp:opt:proc}
+%
+% Executing the default options and processing.
+% Any remaining options should now raise an error like:
+% |LaTeX Warning: Unused global option(s): ...|
+%
+% \begin{macrocode}
+\ExecuteOptions{letterpaper} % book
+\ExecuteOptions{normalmargins,onehalfspacing,chapterhead} % ut-thesis
+\ProcessOptions
+% \end{macrocode}
+%
+% \subsection{Initialization}\label{imp:init}
+% We load the |book| class and the required packages.
+%
+% \begin{macrocode}
+\LoadClass{book}
+\RequirePackage{picture} % for draft mode
+\RequirePackage{atbegshi} % for draft mode
+\RequirePackage{geometry} % for margins etc.
+\RequirePackage{setspace} % for line spacing
+% \end{macrocode}
+%
+% \subsection{Author Information}\label{imp:author}
+%
+% Getting the user inputs.
+%
+% \begin{macrocode}
+\renewcommand*{\author} [1]{\gdef\@author{#1}}
+\renewcommand*{\title} [1]{\gdef\@title{#1}}
+\newcommand*{\degree} [1]{\gdef\@degree{#1}}
+\newcommand*{\department}[1]{\gdef\@department{#1}}
+\newcommand*{\gradyear} [1]{\gdef\@gradyear{#1}}
+% \end{macrocode}
+%
+% Setting default values that will hopefully be overwritten.
+%
+% \begin{macrocode}
+\author {(author)}
+\title {(title)}
+\degree {(degree)}
+\department{(department)}
+\gradyear {(gradyear)}
+% \end{macrocode}
+%
+% \subsection{Front Matter}\label{imp:front}
+%
+% \subsubsection{Matter Commands}\label{imp:front:pp}
+% We enforce that the |\frontmatter| and |\mainmatter| use the right
+% page numbering and styles.
+% Also, if we are using |[twoside]|,
+% then we need to reduce all page numbers in the front matter by 1,
+% so that the |abstract| is page ``ii'',
+% because adjusting the |page| counter directly causes typesetting problems,
+% such as incorrect alternating margins.
+% \begin{macrocode}
+\newcommand{\@romanskip}[1]{\@roman{\if@twoside\numexpr#1-1\else#1\fi}}
+\g@addto@macro\frontmatter{\pagenumbering{romanskip}\pagestyle{plain}}
+\g@addto@macro\mainmatter {\pagenumbering{arabic}\pagestyle{headings}}
+% \end{macrocode}
+%
+% \subsubsection{Title Page}\label{imp:front:title}
+%
+% We don't enforce firm distances between lines,
+% but use |\vfill| to stretch and fill the space evenly,
+% except for a double-sized gap after the author name.
+% There is one part of space above the title,
+% while the copyright is pushed all the way to the bottom.
+%
+% \begin{macrocode}
+\renewcommand*{\maketitle}%
+ {\thispagestyle{empty}
+ \large
+ \begin{center}
+ \singlespacing
+ \null
+ \vfill
+ \textsc{\@title}
+ \vfill
+ by
+ \vfill
+ {\@author}
+ \vfill
+ \vfill
+ A thesis submitted in conformity with the requirements\\
+ for the degree of {\@degree}\\[1ex]
+ Graduate Department of {\@department}\\
+ University of Toronto\\
+ \vfill
+ {\copyright} Copyright {\@gradyear} by {\@author}
+ \end{center}
+ {{\pagestyle{empty}\ocleardoublepage}}
+ }
+% \end{macrocode}
+%
+% \subsubsection{Abstract Page}\label{imp:front:abs}
+%
+% The abstract is an environment, but it creates its own page
+% (and possibly an extra empty page if using |twoside|).
+% The author and title info is centered and singlespaced.
+% The word ``Abstract'' uses the |\section*| style, without any numbering.
+% The abstract content is doublespaced.
+%
+% \begin{macrocode}
+\newenvironment*{abstract}%
+ {\thispagestyle{plain}
+ \begin{center}
+ \singlespacing
+ {\@title}\\[2ex]
+ {\@author}\\
+ {\@degree}\\[1ex]
+ Graduate Department of {\@department}\\
+ University of Toronto\\
+ {\@gradyear}\\
+ \section*{Abstract}
+ \end{center}
+ \begingroup
+ \doublespacing}%
+ {\endgroup\cleardoublepage}
+% \end{macrocode}
+%
+% \subsubsection{Dedication}\label{imp:front:ded}
+%
+% As described above.
+%
+% \begin{macrocode}
+\newenvironment*{dedication}%
+ {\thispagestyle{plain}
+ \null
+ \vfill
+ \begin{flushright}}%
+ {\end{flushright}
+ \vfill
+ \vfill
+ \clearpage}
+% \end{macrocode}
+%
+% \subsubsection{Acknowledgments}\label{imp:front:ackn}
+%
+% As described above.
+%
+% \begin{macrocode}
+\newenvironment*{acknowledgements}%
+ {\thispagestyle{plain}
+ \begin{center}
+ \section*{Acknowledgments}
+ \end{center}
+ \begingroup}%
+ {\endgroup\clearpage}
+% \end{macrocode}
+%
+% \subsection{Page Styles}\label{imp:hf}
+%
+% \subsubsection{Blank Pages}\label{imp:hf:blank}
+% By defauly, all blank pages will have page style |plain|,
+% but the original definition is stored in |\ocleardoublepage|.
+% \begin{macrocode}
+\let\ocleardoublepage\cleardoublepage
+\def\cleardoublepage{{\newpage\pagestyle{plain}\ocleardoublepage}}
+% \end{macrocode}
+%
+% \subsubsection{Headers \& Footers}\label{imp:hf:hf}
+% We redefine the |headings| page style
+% with a new formatting hook |\headerstyle{}|,
+% but is otherwise similar to the original |headings|.
+% \begin{macrocode}
+\newcommand{\headerstyle}[1]{\footnotesize\MakeUppercase{#1}}
+\if@twoside
+\renewcommand*{\ps@headings}%
+ {\let\@mkboth\markboth
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \def\@oddhead{\headerstyle{\rightmark\hfil\thepage}}%
+ \def\@evenhead{\headerstyle{\thepage\hfil\leftmark}}%
+ \def\chaptermark##1{\markboth{%
+ \if@mainmatter\headerstyle{\@chapapp\ \thechapter.\ ##1}\fi}{}}
+ \def\sectionmark##1{\markright{%
+ \if@mainmatter\headerstyle{\thesection.\ ##1}\fi}}}
+\else
+\renewcommand*{\ps@headings}%
+ {\let\@mkboth\markboth
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \def\@oddhead{\headerstyle{\rightmark\hfil\thepage}}%
+ \def\chaptermark##1{\markright{%
+ \if@mainmatter\headerstyle{\@chapapp\ \thechapter.\ ##1}\fi}}}
+\fi
+% \end{macrocode}
+%
+% Default page style.
+% \begin{macrocode}
+\pagestyle{headings}
+% \end{macrocode}
+%
+% \subsection{Spacing Adjustments}\label{imp:adj}
+% The default spacing below captions is too small
+% for captions on top of floats (e.g.\ for tables),
+% so we make it consistent above and below.
+%
+% \begin{macrocode}
+\setlength\abovecaptionskip{1ex}
+\setlength\belowcaptionskip{1ex}
+% \end{macrocode}
+%
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.ins b/macros/latex/contrib/ut-thesis/ut-thesis.ins
new file mode 100644
index 0000000000..362c5806c1
--- /dev/null
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.ins
@@ -0,0 +1,39 @@
+\input docstrip.tex
+\keepsilent
+\usedir{.}
+
+\preamble
+
+The |ut-thesis| document class implements the formatting requirements of
+the University of Toronto School of Graduate Studies (SGS),
+as of Fall 2020.
+
+Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>,
+ 2020-2020 Jesse Knight <jesse.knight@mail.utoronto.ca>
+last updated at 10:00 (EST) on Wed 14 Oct 2020
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c 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.3c 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
+Jesse Knight <jesse.knight@mail.utoronto.ca>.
+
+This work consists of the files:
+- README
+- ut-thesis.dtx
+- ut-thesis.ins
+- ut-thesis.pdf (derived user manual)
+- ut-thesis.cls (derived class file)
+
+\endpreamble
+
+\generate{\file{ut-thesis.cls}{\from{ut-thesis.dtx}{class}}}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.pdf b/macros/latex/contrib/ut-thesis/ut-thesis.pdf
new file mode 100644
index 0000000000..10cce05d84
--- /dev/null
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.tex b/macros/latex/contrib/ut-thesis/ut-thesis.tex
deleted file mode 100644
index 050e3e1859..0000000000
--- a/macros/latex/contrib/ut-thesis/ut-thesis.tex
+++ /dev/null
@@ -1,209 +0,0 @@
-%% ut-thesis.tex -- document template for graduate theses at UofT
-%%
-%% Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>
-%% last updated at 16:20 (EDT) on Wed 25 Sep 2013
-%%
-%% This work may be distributed and/or modified under the conditions of
-%% the LaTeX Project Public License, either version 1.3c 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.3c 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
-%% Francois Pitt <fpitt@cs.utoronto.ca>.
-%%
-%% This work consists of the files listed in the accompanying README.
-
-%% SUMMARY OF FEATURES:
-%%
-%% All environments, commands, and options provided by the `ut-thesis'
-%% class will be described below, at the point where they should appear
-%% in the document. See the file `ut-thesis.cls' for more details.
-%%
-%% To explicitly set the pagestyle of any blank page inserted with
-%% \cleardoublepage, use one of \clearemptydoublepage,
-%% \clearplaindoublepage, \clearthesisdoublepage, or
-%% \clearstandarddoublepage (to use the style currently in effect).
-%%
-%% For single-spaced quotes or quotations, use the `longquote' and
-%% `longquotation' environments.
-
-
-%%%%%%%%%%%% PREAMBLE %%%%%%%%%%%%
-
-%% - Default settings format a final copy (single-sided, normal
-%% margins, one-and-a-half-spaced with single-spaced notes).
-%% - For a rough copy (double-sided, normal margins, double-spaced,
-%% with the word "DRAFT" printed at each corner of every page), use
-%% the `draft' option.
-%% - The default global line spacing can be changed with one of the
-%% options `singlespaced', `onehalfspaced', or `doublespaced'.
-%% - Footnotes and marginal notes are all single-spaced by default, but
-%% can be made to have the same spacing as the rest of the document
-%% by using the option `standardspacednotes'.
-%% - The size of the margins can be changed with one of the options:
-%% . `narrowmargins' (1 1/4" left, 3/4" others),
-%% . `normalmargins' (1 1/4" left, 1" others),
-%% . `widemargins' (1 1/4" all),
-%% . `extrawidemargins' (1 1/2" all).
-%% - The pagestyle of "cleared" pages (empty pages inserted in
-%% two-sided documents to put the next page on the right-hand side)
-%% can be set with one of the options `cleardoublepagestyleempty',
-%% `cleardoublepagestyleplain', or `cleardoublepagestylestandard'.
-%% - Any other standard option for the `report' document class can be
-%% used to override the default or draft settings (such as `10pt',
-%% `11pt', `12pt'), and standard LaTeX packages can be used to
-%% further customize the layout and/or formatting of the document.
-
-%% *** Add any desired options. ***
-\documentclass{ut-thesis}
-
-%% *** Add \usepackage declarations here. ***
-%% The standard packages `geometry' and `setspace' are already loaded by
-%% `ut-thesis' -- see their documentation for details of the features
-%% they provide. In particular, you may use the \geometry command here
-%% to adjust the margins if none of the ut-thesis options are suitable
-%% (see the `geometry' package for details). You may also use the
-%% \setstretch command to set the line spacing to a value other than
-%% single, one-and-a-half, or double spaced (see the `setspace' package
-%% for details).
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% %%
-%% *** I M P O R T A N T *** %%
-%% %%
-%% Fill in the following fields with the required information: %%
-%% - \degree{...} name of the degree obtained %%
-%% - \department{...} name of the graduate department %%
-%% - \gradyear{...} year of graduation %%
-%% - \author{...} name of the author %%
-%% - \title{...} title of the thesis %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% *** Change this example to appropriate values. ***
-\degree{Doctor of Philosophy}
-\department{Computer Science}
-\gradyear{2012}
-\author{Fran\c{c}ois Pitt}
-\title{UT-Thesis Class File Example}
-
-%% *** NOTE ***
-%% Put here all other formatting commands that belong in the preamble.
-%% In particular, you should put all of your \newcommand's,
-%% \newenvironment's, \newtheorem's, etc. (in other words, all the
-%% global definitions that you will need throughout your thesis) in a
-%% separate file and use "\input{filename}" to input it here.
-
-
-%% *** Adjust the following settings as desired. ***
-
-%% List only down to subsections in the table of contents;
-%% 0=chapter, 1=section, 2=subsection, 3=subsubsection, etc.
-\setcounter{tocdepth}{2}
-
-%% Make each page fill up the entire page.
-\flushbottom
-
-
-%%%%%%%%%%%% MAIN DOCUMENT %%%%%%%%%%%%
-
-\begin{document}
-
-%% This sets the page style and numbering for preliminary sections.
-\begin{preliminary}
-
-%% This generates the title page from the information given above.
-\maketitle
-
-%% There should be NOTHING between the title page and abstract.
-%% However, if your document is two-sided and you want the abstract
-%% _not_ to appear on the back of the title page, then uncomment the
-%% following line.
-%\cleardoublepage
-
-%% This generates the abstract page, with the line spacing adjusted
-%% according to SGS guidelines.
-\begin{abstract}
-%% *** Put your Abstract here. ***
-%% (At most 150 words for M.Sc. or 350 words for Ph.D.)
-\end{abstract}
-
-%% Anything placed between the abstract and table of contents will
-%% appear on a separate page since the abstract ends with \newpage and
-%% the table of contents starts with \clearpage. Use \cleardoublepage
-%% for anything that you want to appear on a right-hand page.
-
-%% This generates a "dedication" section, if needed -- just a paragraph
-%% formatted flush right (uncomment to have it appear in the document).
-%\begin{dedication}
-%% *** Put your Dedication here. ***
-%\end{dedication}
-
-%% The `dedication' and `acknowledgements' sections do not create new
-%% pages so if you want the two sections to appear on separate pages,
-%% uncomment the following line.
-%\newpage % separate pages for dedication and acknowledgements
-
-%% Alternatively, if you leave both on the same page, it is probably a
-%% good idea to add a bit of extra vertical space in between the two --
-%% for example, as follows (adjust as desired).
-%\vspace{.5in} % vertical space between dedication and acknowledgements
-
-%% This generates an "acknowledgements" section, if needed
-%% (uncomment to have it appear in the document).
-%\begin{acknowledgements}
-%% *** Put your Acknowledgements here. ***
-%\end{acknowledgements}
-
-%% This generates the Table of Contents (on a separate page).
-\tableofcontents
-
-%% This generates the List of Tables (on a separate page), if needed
-%% (uncomment to have it appear in the document).
-%\listoftables
-
-%% This generates the List of Figures (on a separate page), if needed
-%% (uncomment to have it appear in the document).
-%\listoffigures
-
-%% You can add commands here to generate any other material that belongs
-%% in the head matter (for example, List of Plates, Index of Symbols, or
-%% List of Appendices).
-
-%% End of the preliminary sections: reset page style and numbering.
-\end{preliminary}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Put your Chapters here; the easiest way to do this is to keep %%
-%% each chapter in a separate file and `\include' all the files. %%
-%% Each chapter file should start with "\chapter{ChapterName}". %%
-%% Note that using `\include' instead of `\input' will make each %%
-%% chapter start on a new page, and allow you to format only parts %%
-%% of your thesis at a time by using `\includeonly'. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% *** Include chapter files here. ***
-
-
-%% This adds a line for the Bibliography in the Table of Contents.
-\addcontentsline{toc}{chapter}{Bibliography}
-%% *** Set the bibliography style. ***
-%% (change according to your preference/requirements)
-\bibliographystyle{plain}
-%% *** Set the bibliography file. ***
-%% ("thesis.bib" by default; change as needed)
-\bibliography{thesis}
-
-%% *** NOTE ***
-%% If you don't use bibliography files, comment out the previous line
-%% and use \begin{thebibliography}...\end{thebibliography}. (In that
-%% case, you should probably put the bibliography in a separate file and
-%% `\include' or `\input' it here).
-
-\end{document}