Switch to side-by-side view

--- a
+++ b/docs/project_writeup/byumsphd.cls
@@ -0,0 +1,988 @@
+% BYU MS/PhD LaTeX Class File
+%
+% Copyright (c) 2006 Christopher K. Monson
+% The latest version of this file may be obtained from
+%   http://latex-byu-thesis.googlecode.com/
+%
+% Bug reports are also welcome at that address, and will be addressed as
+% quickly as possible; I know that this is your baby and that everyone is on a
+% tight schedule.  I was there once.
+%
+% License: LaTeX Project Public License (www.latex-project.org/lppl.txt)
+%   Executive summary:
+%       This software is copyright but you are granted a license which gives
+%       you, the "user" of the software, legal permission to copy, distribute,
+%       and/or modify the software. However, if you modify the software and
+%       then distribute it (even just locally) you must change the name of the
+%       software to avoid confusion.
+%
+% OR (dual-licensed)
+%
+% License: GNU Lesser General Public License (www.gnu.org/licenses/lgpl.html)
+%
+% Author Information:
+%   Christopher K. Monson
+%   Brigham Young University
+%   monpublic@gmail.com
+%
+% Please contact the author for change requests.  If you have patches, please
+% send those to the author as well so that this class has a single point of
+% distribution and all may benefit.
+%
+% NOTE TO USERS WHO DON'T USE NATBIB:
+%
+% Your references section may or may not be included properly in the table of
+% contents or in the pdf bookmarks.  If it isn't, do the following in the
+% preamble of your document and it should show up there.:
+%
+% \let\old@openbib@code\@openbib@code
+% \renewcommand{\@openbib@code}{\addcontentsline{toc}{chapter}{\bibname}\old@openbib@code}
+%
+% Version: 1.4
+%
+% Changelog:
+%   Chris Tensmeyer (2019-04-01):
+%       *   Fix Vertical Spacing on first page to match template
+%   Daron Barnes (2017-07-12):
+%       *   Removed Month-Year of graduation from title page.
+%   Andrew McNabb (2013-06-05):
+%       *   Bump version to 1.5
+%       *   Change monthgraduated to monthapproved (issue 48)
+%       *   Make the electronic option set openany (issue 48)
+%   Andrew McNabb (2012-03-02):
+%       *   Bumped version to 1.4
+%       *   Change to 11 pt and single spacing in the byuprop class.
+%   Andrew McNabb (2012-03-02):
+%       *   Bumped version to 1.3
+%       *   Make abstracts in the byuprop class match the byumsphd class.
+%   Andrew McNabb (2012-03-02):
+%       *   Bumped version to 1.2.2
+%       *   Ensure the Table of Contents name in the PDF bookmarks matches.
+%       *   Work around a fatal error occuring with some versions of natbib.
+%   Chris Monson (2011-04-18):
+%       *   Bumped version to 1.2.1
+%       *   More clarity on shifting requirements for abstracts (issue 38).
+%       *   Made electronic option the default in the example file, clarified
+%               use of geometry package.
+%   Chris Monson (2011-03-11):
+%       *   Bumped version to 1.2.0
+%       *   New university requirements, per issue 37 (no sig page, no margin
+%               shifting on electronic copies)
+%       *   Backed out addition of driverfallback option in example - it is not
+%               available on all systems.
+%   Chris Monson (2011-03-03):
+%       *   Bumped version to 1.1.9
+%       *   Subtitle now works properly
+%       *   Thanks to Oliver Kopp for microtype patch to the example file.
+%   Chris Monson (2010-10-08):
+%       *   Bumped version to 1.1.8
+%       *   issue 31: example needs plainpages=false in hyperref settings
+%   Chris Monson (2010-03-10):
+%       *   Bumped version to 1.1.7
+%       *   issue 27: Added bib.bib to the distribution tarball
+%   Chris Monson (2010-03-10):
+%       *   Bumped version to 1.1.6
+%       *   issue 29: Removed deprecated commands from example file
+%   Chris Monson (2010-01-06):
+%       *   Bumped version to 1.1.5
+%       *   Removed tocloft documentation until it can be better supported
+%       *   Added twosidetoc option to the class
+%   Chris Monson (2009-12-17):
+%       *   Bumped version to 1.1.4
+%       *   Added documentation about how to add dot leaders to the TOC, fixed
+%           some spacing.
+%   Chris Monson (2009-11-24):
+%       *   Bumped version to 1.1.3
+%       *   Fixed hardcopy option to work properly
+%   Chris Monson (2009-11-23):
+%       *   Bumped version to 1.1.2
+%       *   issue 21: Make compliant headings the default
+%       *   issue 22: Add convenience options for electronic/hardcopy
+%   Chris Monson (2009-11-20):
+%       *   Bumped version to 1.1.1
+%       *   issue 19: ms setting gives "no line here to end" errors
+%       *   issue 18: change monthsubmitted to monthgraduated
+%       *   issue 20: page numbering wrong for chapter 1 in some cases
+%       *   issue 17: bookmarks need to be numbered - see example file
+%   Chris Monson (2009-11-14):
+%       *   Bumped version to 1.1.0
+%       *   Change Graduate Coordinator default to Kent E. Seamons
+%       *   Addressed issue 16: template is out of sync with new university
+%           requirements
+%       *   Changed the canonical location in the comments (googlecode)
+%       *   Added options for more margin fiddling
+%   Chris Monson (2009-10-27):
+%       *   Bumped version to 1.0.13
+%       *   Addressed issue 12: chapter heading styles have changed
+%       *   Addressed issue 13: lol, lot, and lof not linking properly
+%       *   Made bibsection hack part of standard behavior
+%   Chris Monson (2009-09-25):
+%       *   Bumped version to 1.0.12
+%   Lloyd Brown (Contrib) (2009-09-25):
+%       *   Added options to enable "list of listings", named "lol".
+%   Chris Monson (2009-09-16):
+%       *   Bumped version to 1.0.11
+%       *   Updated example file to be more informative.
+%   Chris Monson (Anonymous Contrib) (2009-03-06):
+%       *   Bumped version to 1.0.10
+%       *   Added \copyrighttext settable option (replacing All Rights
+%           Reserved)
+%   Chris Monson (2008-05-21):
+%       *   Bumped version to 1.0.9
+%   Lloyd Brown (Contrib) (2008-05-15):
+%       *   Added option for setting "Department" as in "Accepted for the
+%           Department" to something else
+%       *   Added option for setting "Graduate Coordinator" title to something
+%           else
+%       *   This closes issue 8 in the tracker
+%   Chris Monson (2007-07-06):
+%       *   Bumped version to 1.0.8
+%       *   Fixed signature page to be compliant with new rules
+%       *   Added duplexprinter convenience option
+%       *   Added tocbibind to the example file to show people how to get their
+%           bibliography referenced in the TOC
+%       *   This closes issues 4 and 6 in the tracker
+%   Chris Monson (2007-03-10):
+%       *   Bumped version to 1.0.5
+%       *   Addressed issue (2) on code.google.com/p/latex-byu-thesis as follows
+%       *   Created a fake pdfbookmark command that switches on with hyperref
+%       *   Inserted pdfbookmark commands per Dan Delorey (new requirements)
+%       *   Later bumped version to 1.0.6
+%       *   Added an option to put an entry for References into the TOC
+%       *   Later bumped version to 1.0.7
+%       *   Reverted the addition of refintoc.  There is an easier way in the
+%           document itself, and it is too dependent on the particular
+%           bibliography environment used.
+%   Chris Monson (2007-03-09):
+%       *   Bumped version to 1.0.4
+%       *   Added the LGPL as an alternate license
+%   Chris Monson (2007-02-01):
+%       *   Created a version number and bumped it to 1.0.3
+%       *   Added option for setting "Department of" string to something else
+%   Chris Monson (2006-03-13):
+%       *   Removed some cruft
+%       *   Established some suitable defaults
+%   Chris Monson (2006-03-10):
+%       *   First reasonable release
+%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{byumsphd}[2007/03/10 BYU LaTeX MS/PhD Class]
+%
+% Boolean option creation
+\newif\if@hardcopyoption % tells us that the hardcopy option was set
+\newif\if@electronicoption % tells us that the electronic option was set
+\newif\if@twosidetoc % Two-sided printing starts at TOC (earlier than body)
+\newif\if@simplechapterheading % "1 Title" instead of "Chapter 1<nl>Title"
+\newif\if@thesis % generates \if@thesis, \@thesistrue, and \@thesisfalse
+\newif\if@chapternum % for putting page numbers on part and chapter pages
+\newif\if@centerchapter % for centered chapter headings vs. left-justified
+\newif\if@vcenterpart % for vertical centering of parts vs. top
+\newif\if@compliantsizes % for headings no larger than 12 pt (ugly)
+\newif\if@lof % Show list of figures?
+\newif\if@lot % Show list of tables?
+\newif\if@lol % Show list of listings?
+\newif\if@needdrawing % Need the eso-pic environment?  Drawing something?
+\newif\if@needlistings % Need the listings package?  Using List of Listings?
+\newif\if@layout % This will draw lines showing all the margins
+\newif\if@equalmargins % Make all margins equal
+\newif\if@grid % Show a grid
+\newif\if@separator % Show a separator page between the single-sided and double-sided parts of the document
+\newif\if@committeemembera
+\newif\if@committeememberb
+\newif\if@committeememberc
+\newif\if@committeememberd
+\newif\if@duplexprinter % Ensure that there are an even number of pages in the front matter
+
+% committee members are not assumed to exist
+\@committeememberafalse
+\@committeememberbfalse
+\@committeemembercfalse
+\@committeememberdfalse
+
+\newcommand{\@@sideval}{twoside}
+\newcommand{\@@openval}{openright}
+\newcommand{\@@ptsize}{12pt}
+
+% This is an empty no-op command in case pdfbookmark is not defined (hyperref
+% not included)
+\newcommand{\@@pdfbookmark}[3][1]{%
+  \ifx\pdfbookmark\undefined
+    \relax
+  \else
+    \pdfbookmark[#1]{#2}{#3}%
+  \fi
+}%
+
+%
+% This document can serve as either a PhD dissertation or a Master's thesis
+\DeclareOption{hardcopy}{\@hardcopyoptiontrue}
+\DeclareOption{electronic}{\@electronicoptiontrue}
+\DeclareOption{simplechapterheading}{\@simplechapterheadingtrue}
+\DeclareOption{compliantheadings}{\@compliantsizestrue}
+\DeclareOption{prettyheadings}{\@compliantsizesfalse}
+\DeclareOption{chaptercenter}{\@centerchaptertrue}
+\DeclareOption{chapterleft}{\@centerchapterfalse}
+\DeclareOption{partmiddle}{\@vcenterparttrue}
+\DeclareOption{parttop}{\@vcenterpartfalse}
+\DeclareOption{ms}{\@thesistrue}
+\DeclareOption{phd}{\@thesisfalse}
+\DeclareOption{chapternum}{\@chapternumtrue}
+\DeclareOption{nochapternum}{\@chapternumfalse}
+\DeclareOption{lof}{\@loftrue}
+\DeclareOption{lot}{\@lottrue}
+\DeclareOption{lol}{\@needlistingstrue \@loltrue}
+\DeclareOption{layout}{\@needdrawingtrue \@layouttrue}
+\DeclareOption{grid}{\@needdrawingtrue \@gridtrue}
+\DeclareOption{separator}{\@separatortrue}
+\DeclareOption{duplexprinter}{\@duplexprintertrue}
+\DeclareOption{twoside}{\renewcommand{\@@sideval}{twoside}}%
+\DeclareOption{oneside}{\renewcommand{\@@sideval}{oneside}}%
+\DeclareOption{equalmargins}{\@equalmarginstrue}%
+\DeclareOption{openright}{\renewcommand{\@@openval}{openright}}%
+\DeclareOption{openany}{\renewcommand{\@@openval}{openany}}%
+\DeclareOption{twosidetoc}{\@twosidetoctrue}%
+\DeclareOption{10pt}{\renewcommand{\@@ptsize}{10pt}}%
+\DeclareOption{11pt}{\renewcommand{\@@ptsize}{11pt}}%
+\DeclareOption{12pt}{\renewcommand{\@@ptsize}{12pt}}%
+% Ignore the letterpaper option, but allow it to be passed.
+\DeclareOption{letterpaper}{\typeout{Ignoring option ``letterpaper''}}%
+
+\setlength{\unitlength}{1in}
+%
+% Default to compliant heading sizes
+\@compliantsizestrue
+% Default to not using the convenience settings for hardcopy or ETD
+\@hardcopyoptionfalse
+\@electronicoptionfalse
+% Default to two-sided printing starting at the body (not TOC)
+\@twosidetocfalse
+% Default to equal margins
+\@equalmarginstrue
+% Default to NOT indenting first paragraph, using normal chapter headings
+\@simplechapterheadingfalse
+% Default to NOT showing lists of figures and tables
+\@loffalse
+\@lotfalse
+\@lolfalse
+% Default to PhD
+\@thesisfalse
+% Default to one-sided printing
+\@duplexprinterfalse
+% Don't show the layout, usually
+\@needdrawingfalse
+\@layoutfalse
+\@gridfalse
+\ExecuteOptions{%
+    chapternum,
+    chapterleft,
+    partmiddle,
+    equalmargins,
+    oneside,
+    }%
+\ProcessOptions
+%
+% Handle convenience settings
+\if@hardcopyoption
+    \if@electronicoption
+        \ClassError{byumsphd}{%
+            Invalid inclusion of both ``electronic'' and ``hardcopy''
+            in class options.}%
+    \fi
+    \@equalmarginsfalse
+    \renewcommand{\@@sideval}{twoside}
+\fi
+\if@electronicoption
+    \@equalmarginstrue
+\fi
+%
+% We base our work on the report class
+%
+% You would think that we could just use a DeclareOption* and pass the options
+% on to this class, but that doesn't work very well.  If you want to do that,
+% you can't use ExecuteOptions to set defaults because then the overriding
+% options never get passed.  It's nuts.  So, this is how we do it, with
+% appropriate default specifications.
+\LoadClass[\@@ptsize,letterpaper,\@@sideval,\@@openval]{report}
+%
+% Rather than fiddle with spacing, we set it up using the setspace package
+% Note that even though most of the document is double spaced, we start with
+% single spacing because of the following reasons:
+%  * setspace likes to *enlarge* the spacing, not shrink it
+%  * the minimum style requirements dictate vertical spacing as a number of
+%   ``blank lines'', and the size of those lines is single-spaced.
+\RequirePackage[singlespacing]{setspace}
+%
+% The geometry package is great and we use it rather than fiddling with the
+% margins directly.  We do have to employ some margin-fiddling trickery after
+% the preamble, however, because the geometry package does not provide a way to
+% set the margins in the middle of a document.
+\RequirePackage{geometry}
+%
+% If we are showing a list of listings, then we need to include the listings package
+\if@needlistings
+    \RequirePackage{listings}%
+\fi
+%
+% If we are showing layout grids, then we include the appropriate package and
+% draw stuff on every page.
+\if@needdrawing
+    \RequirePackage[grid=false]{eso-pic}%
+    \newcommand{\@vertline}{\line(0,1){11}}
+    \newcommand{\@horzline}{\line(1,0){8.5}}
+    \newcommand{\@maingrid}{%
+        \multiput(1,0)(1,0){8}{\thicklines\@vertline}%
+        \multiput(0,1)(0,1){10}{\thicklines\@horzline}%
+    }%
+    \newcommand{\@smallgrid}{%
+        \multiput(0.5,0)(1,0){8}{\thinlines\@vertline}%
+        \multiput(0,0.5)(0,1){11}{\thinlines\@horzline}%
+    }%
+    \newcommand{\@layoutpreamble}{\setlength{\unitlength}{1in}}
+    \newcommand{\@rightsidebox}{
+        \put (1.5,1){\dashbox{0.03125}(6,9)}%
+    }%
+    \newcommand{\@leftsidebox}{
+        \put (1,1){\dashbox{0.03125}(6,9)}%
+    }%
+    \newcommand{\@prefaceinnerbox}{
+        \put (1.5,1){\dashbox{0.03125}(6,8)}%
+    }%
+    \AddToShipoutPicture{%
+        \@layoutpreamble
+        \if@layout
+            \@rightsidebox
+            \@leftsidebox
+            \@prefaceinnerbox
+        \fi
+        \if@grid
+            \@smallgrid
+            \@maingrid
+        \fi
+    }%
+\fi
+% Name of the degree
+\newcommand*{\@degreename}{%
+    \if@thesis%
+        Master of Science%
+    \else%
+        Doctor of Philosophy%
+    \fi%
+}%
+%
+% Name of document
+\newcommand*{\@documenttype}{%
+    \if@thesis%
+        project%
+    \else%
+        dissertation%
+    \fi%
+}%
+%
+% Page style for initial chapter and part pages
+\newcommand*{\@chapterpagestyle}{%
+    \if@chapternum%
+        \thispagestyle{plain}%
+    \else%
+        \thispagestyle{empty}%
+    \fi%
+}%
+%
+% Tells the chapter headings how to justify themselves (center or left)
+\newenvironment{@headjustify}{%
+    \begingroup
+    \if@centerchapter
+        \centering
+    \fi
+}{%
+    \endgroup
+}%
+%
+% Sets the top spacing for a Part
+\newcommand{\@parttopspace}{%
+    \if@vcenterpart
+        \vspace*{\fill}\par
+    \else
+        \begin{singlespace}%
+            \vspace*{\@prefacemargingapsingle}\par
+        \end{singlespace}%
+    \fi
+}%
+%
+% Sets the bottom spacing for a Part
+\newcommand{\@partbottomspace}{%
+    \if@vcenterpart
+        \vspace*{\fill}\par
+    \else
+        \begin{singlespace}%
+            \vspace*{3\@blankline}\par
+        \end{singlespace}%
+    \fi
+}%
+%
+% Use this instead of \Large in case compliant sizes are needed
+\newcommand{\@sizeLarge}{%
+    \if@compliantsizes
+        \normalsize
+    \else
+        \Large
+    \fi
+}%
+%
+% Use this instead of \large in case compliant sizes are needed
+\newcommand{\@sizelarge}{%
+    \if@compliantsizes
+        \normalsize
+    \else
+        \large
+    \fi
+}%
+%
+% Use this instead of \Huge in case compliant sizes are needed
+\newcommand{\@sizeHuge}{%
+    \if@compliantsizes
+        \normalsize
+    \else
+        \Huge
+    \fi
+}%
+%
+% Use this instead of \huge in case compliant sizes are needed
+\newcommand{\@sizehuge}{%
+    \if@compliantsizes
+        \normalsize
+    \else
+        \huge
+    \fi
+}%
+%
+\newcommand{\@clearemptydoublepage}{%
+    \clearpage
+    {\pagestyle{empty}\cleardoublepage}%
+}%
+%
+\newcommand{\clearpage@forchapter}{%
+    \if@openright
+        \cleardoublepage
+    \else
+        \clearpage
+    \fi
+}%
+%
+% These are internal variables used throughout the class.  They represent
+% default values for their corresponding @-less versions.
+\newcommand{\@university}{Brigham Young University}
+\newcommand{\@universityabbrev}{BYU}
+\newcommand{\@department}{Computer Science}
+\newcommand{\@departmentprefix}{Department of}
+\newcommand{\@departmentprefixshort}{Department}
+\newcommand{\@graduatecoordinator}{Kent~E.~Seamons}
+\newcommand{\@graduatecoordinatortitle}{Graduate~Coordinator}
+\newcommand{\@college}{College of Physical and Mathematical Sciences}
+\newcommand{\@collegedean}{Thomas~W.~Sederberg}
+\newcommand{\@collegedeantitle}{Associate Dean}
+\newcommand{\@committeechair}{}
+\newcommand{\@committeemembera}{}
+\newcommand{\@committeememberb}{}
+\newcommand{\@committeememberc}{}
+\newcommand{\@committeememberd}{}
+\newcommand{\@monthgraduated}{}
+\newcommand{\@yeargraduated}{}
+\newcommand{\@yearcopyrighted}{\@yeargraduated}
+\newcommand{\@copyrighttext}{All Rights Reserved}
+%
+\newcommand{\@documentabstract}{}
+\newcommand{\@documentkeywords}{}
+\newcommand{\@acknowledgments}{}
+\newcommand{\@bindingoffset}{0.5in}
+%
+% This tells us whether to generate document keywords
+\newif\if@hasdocumentkeywords
+\@hasdocumentkeywordsfalse
+%
+% This tells us whether to generate the acknowledgments
+\newif\if@hasacknowledgments
+\@hasacknowledgmentsfalse
+%
+% Set up default geometry specifications
+\geometry{top=1.0in,
+          bottom=1.0in,
+          textwidth=6.5in,
+          hcentering}
+\if@equalmargins
+    \geometry{bindingoffset=0in}
+\else
+    \geometry{bindingoffset=\@bindingoffset}
+\fi
+%
+% Here are some things that can be set from inside the document.  Most of them
+% have suitable defaults.
+\newcommand{\university}[1]{\renewcommand{\@university}{#1}}
+\newcommand{\universityabbrev}[1]{\renewcommand{\@universityabbrev}{#1}}
+\newcommand{\department}[1]{\renewcommand{\@department}{#1}}
+\newcommand{\departmentprefix}[1]{\renewcommand{\@departmentprefix}{#1}}
+\newcommand{\departmentprefixshort}[1]{\renewcommand{\@departmentprefixshort}{#1}}
+\newcommand{\graduatecoordinator}[1]{\renewcommand{\@graduatecoordinator}{#1}}
+\newcommand{\graduatecoordinatortitle}[1]{\renewcommand{\@graduatecoordinatortitle}{#1}}
+\newcommand{\college}[1]{\renewcommand{\@college}{#1}}
+\newcommand{\collegedean}[1]{\renewcommand{\@collegedean}{#1}}
+\newcommand{\collegedeantitle}[1]{\renewcommand{\@collegedeantitle}{#1}}
+\newcommand{\committeechair}[1]{\renewcommand{\@committeechair}{#1}}
+\newcommand{\committeemembera}[1]{\@committeememberatrue\renewcommand{\@committeemembera}{#1}}
+\newcommand{\committeememberb}[1]{\@committeememberbtrue\renewcommand{\@committeememberb}{#1}}
+\newcommand{\committeememberc}[1]{\@committeememberctrue\renewcommand{\@committeememberc}{#1}}
+\newcommand{\committeememberd}[1]{\@committeememberdtrue\renewcommand{\@committeememberd}{#1}}
+\newcommand{\monthsubmitted}[1]{\ClassWarning{byumsphd}{monthsubmitted is deprecated - use monthgraduated instead}\monthgraduated{#1}}% TODO: delete this
+\newcommand{\yearsubmitted}[1]{\ClassWarning{byumsphd}{yearsubmitted is deprecated - use yeargraduated instead}\yeargraduated{#1}}% TODO: delete this
+\newcommand{\monthgraduated}[1]{\renewcommand{\@monthgraduated}{#1}}
+\newcommand{\yeargraduated}[1]{\renewcommand{\@yeargraduated}{#1}}
+\newcommand{\yearcopyrighted}[1]{\renewcommand{\@yearcopyrighted}{#1}}
+\newcommand{\copyrighttext}[1]{\renewcommand{\@copyrighttext}{#1}}
+%
+\newcommand{\documentabstract}[1]{\renewcommand{\@documentabstract}{#1}}
+\newcommand{\documentkeywords}[1]{%
+    \@hasdocumentkeywordstrue
+    \renewcommand{\@documentkeywords}{#1}%
+}
+\newcommand{\acknowledgments}[1]{%
+    \@hasacknowledgmentstrue
+    \renewcommand{\@acknowledgments}{#1}%
+}
+\newcommand{\setbindingoffset}[1]{%
+    \renewcommand{\@bindingoffset}{#1}%
+    \if@equalmargins\else
+        \geometry{bindingoffset=#1}%
+    \fi
+}
+\newcommand{\settextwidth}[1]{\geometry{textwidth=#1}}
+%
+% Internal lengths with no external settings
+\newlength{\@assumedcharwidth}
+\newlength{\@defaultindent}
+\newlength{\@blankline}
+\newlength{\@prefacemargingapsingle}
+\newlength{\@prefacemargingapdouble}
+\setlength{\@assumedcharwidth}{6pt}
+\setlength{\@defaultindent}{6\@assumedcharwidth}
+\setlength{\@blankline}{\baselineskip}
+%
+% This is the margin gap between the top of the paper and single-spaced text.  It defines a margin that is a total of 2 inches from the top
+\setlength{\@prefacemargingapsingle}{1in}
+\setlength{\@prefacemargingapdouble}{\@prefacemargingapsingle}
+\addtolength{\@prefacemargingapdouble}{-\baselineskip}
+%
+% This is defined for a gap that goes from the top of the page down to text
+% that is double-spaced.  Because double-spacing text moves the text down
+% within a double-space height box, it makes the margins look wrong (even
+% though they are technically right).  Subtracting a single-space height fixes
+% the problem in these cases.
+
+%\end{doublespace}
+%
+% Title page
+\renewcommand{\titlepage}{%
+    \clearpage
+    \@@pdfbookmark[1]{Title Page}{title}%
+    {\parindent 0pt%
+    {\centering
+    \parbox[t]{5in}{\centering
+        \begin{doublespace}%
+            \@title
+        \end{doublespace}%
+    \par}%
+    \vfill
+        \@author
+    \vfill
+        A {\@documenttype} submitted to the faculty of\\%
+        \@university\\%
+        in partial fulfillment of the requirements for the degree of\\%
+        \begin{doublespace}
+            \@degreename
+        \end{doublespace}
+    \vfill
+        \@committeechair, Chair\\%
+        \if@committeemembera
+            \@committeemembera\\%
+        \fi
+        \if@committeememberb
+            \@committeememberb\\%
+        \fi
+        \if@committeememberc
+            \@committeememberc\\%
+        \fi
+        \if@committeememberd
+            \@committeememberd\\%
+        \fi
+    \vfill
+    %\vfill
+        \begin{doublespace}%
+            {\@departmentprefix} {\@department} \\%
+            \@university\\%
+        \end{doublespace}%
+    \vspace*{\fill}%
+    \begin{doublespace}
+        Copyright {\copyright} {\@yearcopyrighted} {\@author}\\%
+        {\@copyrighttext}%
+    \end{doublespace}
+    %\vspace*{\fill}%
+    \par}% end centering
+    }% end parindent
+    \newpage
+}%
+%
+\newcommand{\abstractpage}{%
+    \clearpage
+    \@@pdfbookmark[1]{Abstract}{abstract}%
+    {\centering
+    \parindent 0pt%
+    ABSTRACT%
+    \vspace{1.2\@blankline}\par
+    \parbox[t]{5in}{\centering
+        \@title
+    \par}% end parbox
+    \vspace{1.2\@blankline}\par
+    {\@author}\\%
+    {\@departmentprefix} {\@department}, {\@universityabbrev}\\%
+    \@degreename
+    \par}% end centering
+    {\setlength{\parskip}{\@blankline}\par
+    % parskip is applied at the beginning of paragraphs, so we add a bit of
+    % length here to make it the same as above.
+    \vspace{0.2\@blankline}\par
+    \@documentabstract
+    \par}
+    \if@hasdocumentkeywords
+    \vfill\par\noindent
+        Keywords: \@documentkeywords
+    \par
+    \par
+    \else
+        \ClassError{byumsphd}{%
+            Specification of document keywords is required.
+        }%
+    \fi
+    \newpage
+}%
+%
+% Create a counter for the listings that need to be referenced from the table
+% of contents.  This is needed to get hyperref to link to unnumbered sections
+% properly (like listoftables, etc.) without using an existing counter and
+% messing up the numbering of other kinds of sections.
+\newcounter{toclistings}
+%
+\newcommand{\acknowledgmentspage}{%
+    \clearpage
+    \begin{doublespace}%
+    {\centering
+    \parindent 0pt%
+    ACKNOWLEDGMENTS%
+    \vspace{2\@blankline}\par
+    \par}% end centering
+    \@acknowledgments
+    \end{doublespace}%
+    \newpage
+}%
+%
+\renewcommand{\tableofcontents}{%
+    \if@twosidetoc
+        \clearpage@forchapter
+    \else
+        \clearpage
+    \fi
+    \@@pdfbookmark[1]{\contentsname}{toc}%
+    \@tocheader{\contentsname}%
+    \thispagestyle{plain}%
+    \@starttoc{toc}%
+    \newpage
+}%
+%
+\renewcommand{\listoffigures}{%
+    \if@twosidetoc
+        \clearpage@forchapter
+    \else
+        \clearpage
+    \fi
+    \refstepcounter{toclistings}
+    \addcontentsline{toc}{chapter}{\listfigurename}
+    \@tocheader{\listfigurename}%
+    \@starttoc{lof}%
+    \newpage
+}%
+%
+\renewcommand{\listoftables}{%
+    \if@twosidetoc
+        \clearpage@forchapter
+    \else
+        \clearpage
+    \fi
+    \refstepcounter{toclistings}
+    \addcontentsline{toc}{chapter}{\listtablename}
+    \@tocheader{\listtablename}%
+    \@starttoc{lot}%
+    \newpage
+}%
+%
+\if@lol
+\renewcommand{\lstlistlistingname}{List of Listings}
+\renewcommand{\lstlistoflistings}{%
+    \if@twosidetoc
+        \clearpage@forchapter
+    \else
+        \clearpage
+    \fi
+    \refstepcounter{toclistings}
+    \addcontentsline{toc}{chapter}{\lstlistlistingname}
+    \@tocheader{\lstlistlistingname}%
+    \@starttoc{lol}%
+    \newpage
+}%
+\fi
+%
+\newcommand{\@separatorpage}{%
+    \if@twoside
+        \if@separator
+            \clearpage
+            \thispagestyle{empty}%
+            \addtocounter{page}{-1}% Don't count this page
+            {\centering
+            \vspace*{\fill}
+            DISCARD THIS PAGE --- IT IS ONLY A MARKER\\
+            \vspace{3\@blankline}%
+            All preceding pages must be single-sided.\\
+            All subsequent pages must be double-sided.
+            \vspace*{\fill}
+            \par}% end centering
+            \newpage
+        \fi
+    \fi
+}%
+%
+% Lifted from report.cls and edited to be smaller
+% NOTE that the minimum standards document indicates that ALL fonts should be
+% 10, 11, or 12 point *including titles and headings*.  This requirement is
+% incredibly ugly, but if you want to comply with it, change everything to
+% normalsize in this document.
+\renewcommand{\section}{\@startsection {section}{1}{\z@}%
+                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
+                                   {2.3ex \@plus.2ex}%
+                                   {\normalfont\@sizelarge\bfseries}}%
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\normalfont\normalsize\bfseries}}%
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\normalfont\normalsize\bfseries}}%
+%
+\renewcommand{\chapter}{%
+    \clearpage@forchapter
+    \thispagestyle{plain}%
+    \@afterindenttrue
+    \global\@topnum\z@
+    \secdef\@chapter\@schapter
+}%
+%
+\newcommand{\@tocheader}[1]{%
+    \begin{@headjustify}%
+    \@chapterpagestyle
+    \parindent 0pt%
+        \begin{singlespace}%
+        \vspace*{\@prefacemargingapdouble}%
+        \ifnum \c@secnumdepth > \m@ne
+            \@sizeLarge \bf {#1}%
+            \par
+            \vspace{\@blankline}%
+        \fi
+        \vspace{\@blankline}%
+        \end{singlespace}%
+        \nobreak
+    \end{@headjustify}%
+}%
+%
+%
+\renewcommand{\@makechapterhead}[1]{%
+    \begin{@headjustify}%
+    \@chapterpagestyle
+    \parindent 0pt%
+        \begin{singlespace}%
+        \vspace*{\@prefacemargingapdouble}%
+        \ifnum \c@secnumdepth > \m@ne
+            \@sizeLarge \bf
+            \if@simplechapterheading
+                \expandafter{%
+                    \thechapter
+                    \hspace{0.25in}%
+                    \MakeUppercase{#1}%
+                }%
+            \else
+                \expandafter{\@chapapp{} \thechapter}%
+            \fi
+            \par
+            \vspace{\@blankline}%
+        \fi
+        \end{singlespace}%
+        \if@simplechapterheading\else
+            \@sizelarge \bf {#1} \par
+        \fi
+        \begin{singlespace}%
+        \vspace{\@blankline}%
+        \end{singlespace}%
+        \nobreak
+    \end{@headjustify}%
+}%
+%
+\renewcommand{\@makeschapterhead}[1]{%
+    \begin{@headjustify}
+    \@chapterpagestyle
+    \parindent 0pt%
+        \begin{singlespace}%
+        \vspace*{\@prefacemargingapdouble}%
+        \@sizelarge \bf {#1} \par
+        \vspace{\@blankline}%
+        \end{singlespace}%
+        \nobreak
+    \end{@headjustify}%
+}%
+%
+\renewcommand{\part}{%
+    \clearpage@forchapter
+    \@chapterpagestyle
+    \@parttopspace
+    \secdef\@part\@spart
+}%
+%
+\def\@part[#1]#2{%
+    \ifnum \c@secnumdepth >-2\relax
+        \refstepcounter{part}%
+        \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+        \addcontentsline{toc}{part}{#1}%
+    \fi
+    \markboth{}{}% empty headings
+    {\centering
+        \interlinepenalty \@M
+        \normalfont
+        \ifnum \c@secnumdepth >-2\relax
+            \@sizehuge\bfseries \partname\nobreakspace\thepart
+            \par
+            \vskip 20\p@
+        \fi
+        \@sizeHuge \bfseries #2%
+    \par}% end centering
+    \@partbottomspace
+}%
+%
+\def\@spart#1{%
+    \addcontentsline{toc}{part}{#1}%
+    \@chapterpagestyle
+    {\centering
+        \interlinepenalty \@M
+        \normalfont
+        \@sizeHuge \bfseries #1%
+    \par}% end centering
+    \@partbottomspace
+}%
+%
+\let\old@bibliography\bibliography
+\renewcommand{\bibliography}[1]{%
+    \onehalfspace\par
+    \old@bibliography{#1}%
+}%
+%
+\renewcommand{\maketitle}{%
+    \begin{singlespace}%
+    \pagenumbering{roman}%
+    {%
+        \pagestyle{empty}%
+        % The front matter is one-sided, so the margins don't alternate
+        \if@equalmargins\else
+            \addtolength{\evensidemargin}{\@bindingoffset}%
+        \fi
+        \titlepage
+        \abstractpage
+        \if@hasacknowledgments
+            \acknowledgmentspage
+        \fi
+    }%
+    {%
+        \if@twosidetoc
+            % If we are beginning two-sided at the TOC, then the separator page
+            % belongs here (if anywhere).
+            \@separatorpage
+        \else
+            % Otherwise, we need to make our margins one-sided again in this
+            % block.
+            \if@equalmargins\else
+                \addtolength{\evensidemargin}{\@bindingoffset}%
+            \fi
+        \fi
+        \pagestyle{plain}%
+        \begin{doublespace}%
+            \tableofcontents
+            \if@lof
+                \listoffigures
+            \fi
+            \if@lot
+                \listoftables
+            \fi
+            \if@lol
+                \lstlistoflistings
+            \fi
+            \if@twosidetoc\else
+                % If we start two-sided printing after the various tables (body
+                % only), then we print the separator here.
+                \@separatorpage
+            \fi
+        \end{doublespace}%
+    }%
+    \end{singlespace}%
+    \if@duplexprinter
+        \@clearemptydoublepage
+    \fi
+    % Body starts here
+    \clearpage@forchapter
+    \pagenumbering{arabic}%
+}%
+%
+% Different font in captions
+\newcommand{\captionfonts}{\small}
+%
+% Fix the abstract environment for individual chapters
+\renewenvironment{abstract}%
+{%
+    \begin{singlespace}%
+    {\vspace*{\fill}\centering\bf\@sizelarge Abstract\bigskip\par}%
+    \end{singlespace}%
+    \begingroup\noindent
+}%
+{%
+    \endgroup\vspace*{\fill}%
+}%
+%
+%
+% Set up default document settings
+\AtBeginDocument{%
+    \pagestyle{plain}%
+    \pagenumbering{arabic}%
+    \parindent \@defaultindent
+    % Fix the bibliography stuff (if using natbib).
+    \@ifpackageloaded{natbib}{% natbib loaded
+        \renewcommand{\bibname}{\refname}
+        \let\oldbibsection\bibsection
+        \renewcommand{\bibsection}{%
+            \oldbibsection
+            \refstepcounter{toclistings}%
+            \addcontentsline{toc}{chapter}{\refname}
+        }%
+    }{% natbib not loaded
+        \ClassWarning{byumsphd}{Not using natbib - TOC might not show references.  Search class file comments for "NATBIB" for how to resolve this by hand (or just use natbib - it's an excellent package)}
+        \renewcommand{\bibname}{References}
+    }%
+    % Set up double spacing---this is safe because the overall document is
+    % single-spaced and we'll set up single spacing as the default in maketitle
+    % where spacing matters.
+    \doublespace
+}%
+%
+\newcommand{\@subtitle}{}
+% vim: ft=tex sw=4 sts=4