% 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