diff --git a/.gitignore b/.gitignore index 88d80c5..b82f8ec 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ *.aux *.bbl *.blg +*.fdb_latexmk +*.fls *.ist *.lof *.log @@ -11,4 +13,4 @@ *.lot *.out *.synctex.gz -*.toc \ No newline at end of file +*.toc diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5eaa69a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + "latex-workshop.latex.recipes":[ + { + "name": "Build with glossaries", + "tools": [ + "pdflatex", + "makeglossaries", + "pdflatex", + "pdflatex" + ] + }, + ], + "latex-workshop.latex.tools":[ + { + "name": "pdflatex", + "command": "pdflatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "%DOC%" + ] + }, + { + "name": "makeglossaries", + "command": "makeglossaries", + "args": [ + "%DOCFILE%" + ] + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 3908f4c..a09a834 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,47 @@ This repository contains an updated version of CU's LaTeX class with support for * table of acronyms * table of code snippets -The resulting PDF contains examples on how to best use LaTeX for a PhD Prospectus. +The resulting PDF contains examples on how to best use LaTeX for a PhD Prospectus or PhD Thesis. -To use, open `main-cu-prospectus.tex` in your favorite Tex editor. I use TexStudio. You can also upload this entire package to Overleaf to edit collaboratively online. +To use, open `main-cu-prospectus.tex` in your favorite Tex editor such as TexStudio or VSCode. You can also upload this entire package to Overleaf to edit collaboratively online. + +One catch is that to see the acronyms the `makeglossaries` command needs to be in the build step. This repo committed the .vscode/settings.json file with the changes. In TexStudio, this will need to be +manually configured as well. Also, it is common to have to call the `pdflatex` command twice to have the glossaries show up correctly. + +``` + "latex-workshop.latex.recipes":[ + { + "name": "Build with glossaries", + "tools": [ + "pdflatex", + "makeglossaries", + "pdflatex", + "pdflatex" + ] + }, + ], + "latex-workshop.latex.tools":[ + { + "name": "pdflatex", + "command": "pdflatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "%DOC%" + ] + }, + { + "name": "makeglossaries", + "command": "makeglossaries", + "args": [ + "%DOCFILE%" + ] + } + ] +``` + +An example PDF is in this project [here](./main-cu-prospectus.pdf) and [here](./main-cu-phd-thesis.pdf) but a version is created each commit on GitHub. The GitHub veresion is [here](https://github.com/henze-research-group/latex-template/actions). Go to the latest passing workflow run, then click on the PDF text in the Artifacts section. Note that the GitHub build version does not have the Acronyms listing since the build step does not know how to `makeglossaries`. + +The difference between the prospectus and thesis is minimal. The prospectus version contains language that it is just that, a prospectus, and the thesis.cls has the approval page. -An example PDF is in this project [here](./main-cu-prospectus.pdf) but a version is created each commit on GitHub. The GitHub veresion is [here](https://github.com/henze-research-group/latex-template/actions). Go to the latest passing workflow run, then click on the PDF text in the Artifacts section. Note that this version does not have the Acronyms listing since the build step does not know how to `makeglossaries`. \ No newline at end of file diff --git a/main-cu-phd-thesis.pdf b/main-cu-phd-thesis.pdf new file mode 100644 index 0000000..2ad56c8 Binary files /dev/null and b/main-cu-phd-thesis.pdf differ diff --git a/main-cu-phd-thesis.tex b/main-cu-phd-thesis.tex new file mode 100644 index 0000000..dfce8b0 --- /dev/null +++ b/main-cu-phd-thesis.tex @@ -0,0 +1,173 @@ +\documentclass[defaultstyle,11pt]{thesis} + + +% custom added -- must go first +\usepackage[table,xcdraw]{xcolor} % support using rowcolor when pasting from table generator + +% default packages from CU Boulder's template +\usepackage{amssymb} % to get all AMS symbols +\usepackage{amsmath} +\usepackage{graphicx} % to insert figures +\usepackage{float} +\usepackage{todonotes} +\usepackage{multirow} + +% setup hyperlinks and colors +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, %Colours links instead of ugly boxes + urlcolor = blue, %Colour for external hyperlinks + linkcolor = blue, %Colour of internal links + citecolor = blue %Colour of citations +} + +% custom added +\usepackage{subfiles} +\usepackage{subcaption} +\usepackage[export]{adjustbox} % allow margin definition in tables (center images) +\usepackage[acronym,toc,nomain]{glossaries} +\loadglsentries{acronyms} +\makeglossaries % for acronyms +\renewcommand*{\glspostdescription}{} % Removes dots at the end of each entry. +\glsnogroupskiptrue % skip spaces in acronym list (that is don't group alphabetically) +\renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{#1}} % Hyperlink color of glossary links + +% column with ragged right and hyphenation +\usepackage{array} +\usepackage{ragged2e} + +% table layout settings +\newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}p{#1}} +\newcolumntype{L}[1]{>{\RaggedRight\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{R}[1]{>{\RaggedLeft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{M}[1]{>{\RaggedRight\arraybackslash}m{#1}} + +% enum hyperlinks +\usepackage{enumitem} + +% code highlighting +\usepackage{listings} +\input{listings-modelica.cfg} +\lstset{language = modelica, + basicstyle=\fontsize{9pt}{10pt}\ttfamily} +\renewcommand\lstlistingname{Code} +\renewcommand\lstlistlistingname{Code} +% color for the background of the code snippets +\definecolor{aliceblue}{rgb}{0.94, 0.97, 1.0} + +%\DeclareCaptionStyle{listing} []{} +%\captionsetup[lstlisting]{style=listing, labelsep=none} + +% landscape pages +\usepackage{pdflscape} +\usepackage{afterpage} + +% Method for block comment +\newcommand{\comment}[1]{} + +%%%%%%%%%%%% All the preamble material: %%%%%%%%%%%% + +\title{CU Example Prospectus Document} + +\author{First Middle}{Last} + +\otherdegrees{B.S., University of Colorado, 2016 \\ + M.S., University of Colorado, 2020} + +\degree{Doctor of Philosophy} % #1 {long descr.} +{Ph.D., Architectural Engineering} % #2 {short descr.} + +\dept{Department of} % #1 {designation} +{Civil, Environmental and Architectural Engineering} % #2 {department name} + +\advisor{Gregor Henze, Ph.D, P.E.} {\normalsize } % #1 {title} +%{Ph.D., P.E.} % #2 {name} + +\reader{Second Advisor , Ph.D.} % 2nd person to sign thesis +\readerThree{Third Advisor, Ph.D.} % 3rd person to sign thesis +\readerFour{Fourth Advisor, Ph.D.} % 4th person to sign thesis +\readerFive{Fifth Advisor, Ph.D.} % 5th person to sign thesis + +\abstract{ \OnePageChapter % because it is very short + +What is the purpose of this document +} + +% To create a dedication, remove the \comment{ block below. Don't +% forget to remove the last curly brace }. +\comment{ +\dedication[Dedication]{ % NEVER use \OnePageChapter here. +To my friends and family +} +} + +% To create the acknowledgments, remove the \comment{ block below. Don't +% forget to remove the last curly brace }. +\comment{ +\acknowledgements{ \OnePageChapter % *MUST* BE ONLY ONE PAGE! + Support Team: + Amy Allen + Sourav Dey + Thibault Marzullo +} +} + +% \IRBprotocol{E927F29.001X} % optional! + +\ToCisShort + +\LoFisShort +% \emptyLoF % use this if there is no List of Figures + +\LoTisShort +% \emptyLoT % use this if there is no List of Tables + +% LIst of listings (i.e., snippets of code) +\LoLisShort +% \emptyLoL % use this if there is no List of Listings (code chunks) + +% List of acronyms +\LoAisShort +% \emptyLoA % use this if there are no acronyms + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% BEGIN DOCUMENT... %%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +% path to where the figures are saved +\graphicspath{{\subfix{figures}}} +\input macros.tex + +% main content +\input{chapter1-intro.tex} + +\input{chapter2-litreview.tex} + +\input{chapter3-methodology.tex} + +\input{chapter4-results.tex} + +\input{chapter5-conclusions.tex} + +%%%%%%%%% then the Bibliography, if any %%%%%%%%% +%bibliographystyle{plain} % or "siam", or "alpha", etc. + +% Use IEEEtr to order based on appearance in document. This will make the citations +% numbered by the order of appearance. + +\bibliographystyle{ieeetr} +%\nocite{*} % list all refs in database, cited or not + +% Change the name of the bibliography file if needed. +\bibliography{bibliography} + + +%%%%%%%%% then the Appendices, if any %%%%%%%%% +\appendix +\input{appendix-a.tex} + +\end{document} + diff --git a/main-cu-prospectus.pdf b/main-cu-prospectus.pdf index 5b70239..de0c59b 100644 Binary files a/main-cu-prospectus.pdf and b/main-cu-prospectus.pdf differ diff --git a/main-cu-prospectus.tex b/main-cu-prospectus.tex index dfce8b0..985c9f0 100644 --- a/main-cu-prospectus.tex +++ b/main-cu-prospectus.tex @@ -1,4 +1,4 @@ -\documentclass[defaultstyle,11pt]{thesis} +\documentclass[defaultstyle,11pt]{prospectus} % custom added -- must go first diff --git a/prospectus.cls b/prospectus.cls new file mode 100644 index 0000000..25dfcc8 --- /dev/null +++ b/prospectus.cls @@ -0,0 +1,1313 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% prospectus.cls - LaTeX2e class for CU Theses and Prospectuses. +%% To conform to the University of Colorado at Boulder +%% Graduate School SPECIFICATIONS (April 2010) for +%% Preparation of Master's Thesis and Doctoral Dissertations +%% Version 1.00 written by John P. Weiss, 1997 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% version 1.15, Nicholas Long, May 2022 -- Added listings and +%% acronyms to table of contents. Added fourth and +%% fifth readers. This version also updated the cover +%% to focus to be a prospectus. +%% version 1.14, Ken Anderson, August 2020 -- removed signature +%% page; instead list committee members on title page. +%% Changes made to comply with new Graduate School +%% guidelines. +%% version 1.13, Hongcheng Ni, March 2014 -- made compatible with +%% hyperref. +%% version 1.12, Hongcheng Ni, March 2014 -- added title before +%% the advisor's name in the signature page. +%% version 1.11, Bruce Fast, April 2008 -- changed left margin +%% from 1.75" to 1", and added \IRBprotocol option +%% version 1.10, E. Joshua Rigler, January 2003 -- making it safe +%% for folks who inadvertently load setspace.sty, changed +%% \latex@xfloat to \latexx@xfloat +%% version 1.09, BF, November 2000 -- conforms to revised specs +%% no significant changes required +%% version 1.08, Steven V Penton, September 1999 -- added +%% \readerFive; moved list of tables in front of figures +%% version 1.07, BF, January 1999 -- fixed \LoFisShort etc. +%% version 1.06, BF, November 1998 -- fixed level 4 headers; +%% SubSubSections, inline4 & nonum4. Eliminated +%% unwanted space before chapter/section numbers. +%% version 1.05, BF, August 1998 -- Footnotes and floats +%% (captions) now singlespaced, fixing an omission +%% in v1.04. Fixed value of \belowcaptionskip, +%% for table captions. +%% version 1.04, BF, July 1998, Adjusted doublespacing +%% (no longer uses setspace.sty) and margin values. +%% version 1.03, May 1998, Bruce Fast -- Added optional +%% \readerThree{}, \readerFour{}; LoF/LoT debugging; +%% doublespaced abstract +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{thesis}[2022/05/15] % version 1.15 + +\typeout{} +\typeout{--------------------------------------------------------------} +\typeout{ +---+ Prospectus Style (prospectus.cls) version 1.14} +\typeout{ +---+ for University of Colorado Ph.D. theses/dissertations.} +\typeout{ * Conforms to the University of Colorado at Boulder Graduate} +\typeout{ * School "SPECIFICATIONS for Preparation of Master's Thesis} +\typeout{ * and Doctoral Dissertations" (rev. May 2022).} +\typeout{--------------------------------------------------------------} +\typeout{ URL: http://www.colorado.edu/oit/software-hardware/tex-latex} +\typeout{} + +% Certain options are not handled here but are passed on to report.cls +% by \PassOptionToClass. + +\DeclareOption{fleqn}{ \PassOptionsToClass{fleqn}{report} } +\DeclareOption{leqno}{ \PassOptionsToClass{leqno}{report} } +\DeclareOption{openbib}{ \PassOptionsToClass{openbib}{report} } +\DeclareOption{draft}{ \PassOptionsToClass{draft}{report} } +\DeclareOption{final}{ \PassOptionsToClass{final}{report} } +\DeclareOption{openright}{ \PassOptionsToClass{openright}{report} } +\DeclareOption{openany}{ \PassOptionsToClass{openany}{report} } +\DeclareOption{10pt}{ \PassOptionsToClass{10pt}{report} } +\DeclareOption{11pt}{ \PassOptionsToClass{11pt}{report} } +\DeclareOption{12pt}{ \PassOptionsToClass{12pt}{report} } + +% Invalid options - normally used in report.cls and others, but not here: + +\DeclareOption{titlepage} + {\ClassWarning{thesis}{Title page always generated. Option ignored.}} +\DeclareOption{notitlepage} + {\ClassWarning{thesis}{Option 'notitlepage' not available for thesis.}} +\DeclareOption{twoside} + {\ClassWarning{thesis}{Option 'twoside' not available for thesis.}} +\DeclareOption{twocolumn} + {\ClassWarning{thesis}{Option 'twocolumn' not available for thesis.}} +\DeclareOption{landscape} + {\ClassWarning{thesis}{Option 'landscape' not available for thesis.}} +\DeclareOption{legalpaper} + {\ClassWarning{thesis}{Option 'legalpaper' not available for thesis.}} +\DeclareOption{a4paper} + {\ClassWarning{thesis}{Option 'a4paper' not available for this class.}} +\DeclareOption{a5paper} + {\ClassWarning{thesis}{Option 'a5paper' not available for this class.}} +\DeclareOption{executivepaper} + {\ClassWarning{thesis}{Option 'executivepaper' not available.}} +\DeclareOption{b5paper} + {\ClassWarning{thesis}{Option 'b5paper' not available for this class.}} +\DeclareOption{letterpaper} + {\ClassWarning{thesis}{Option 'letterpaper' superfluous. Ignored.}} +\DeclareOption{onecolumn} + {\ClassWarning{thesis}{Option 'onecolumn' superfluous. Ignored.}} +\DeclareOption{oneside} + {\ClassWarning{thesis}{Option 'oneside' superfluous. Ignored.}} + +%%%%%%%%%%% CUSTOM OPTIONS: +% Options for no decimal numbering, or decimal number nested over 3 deep: +\newif\if@AllHeadings +\newif\if@NumberStdHeadings +\newif\if@PerChptrNumbering +\newif\if@emphisbold +\newif\if@boldhead +\newif\if@fixedHeadSz +\newif\if@headSizeTwelvePt +\newif\if@ChapterDefault +\newif\if@SectionDefault +\newif\if@SubSectionDefault +\newif\if@OtherHeadingDefault +\newif\if@centerChapter +\newif\if@centerSection +\newif\if@inlineSubSubSection +\newif\if@numberSubSubSection +\newif\if@chapterCaps +\@AllHeadingsfalse +\@NumberStdHeadingstrue +\@PerChptrNumberingtrue +\@emphisboldtrue +\@boldheadtrue +\@fixedHeadSzfalse +\@centerChaptertrue +\@centerSectionfalse +\@inlineSubSubSectionfalse +\@numberSubSubSectiontrue +\@chapterCapsfalse +\@headSizeTwelvePttrue +\DeclareOption{consecutivenumbering}{ \@PerChptrNumberingfalse } +\DeclareOption{inlineh4}{ \@inlineSubSubSectiontrue } +\DeclareOption{nonumh4}{ \@numberSubSubSectionfalse } +\DeclareOption{centerh1}{ \@centerSectiontrue } +\DeclareOption{chapleft}{ \@centerSectiontrue } +\DeclareOption{chapup}{ \@chapterCapstrue } +\DeclareOption{emph2underline}{ \@emphisboldfalse } +\DeclareOption{plainhead}{ \@boldheadfalse } +\DeclareOption{fixedheadsize}{ \@fixedHeadSztrue } +\DeclareOption{varheadsize}{\@headSizeTwelvePtfalse}% Hidden option. Don't use. +\DeclareOption{numberchapteronly}{ + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse } +\DeclareOption{allheadings}{ + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingstrue + \@centerChaptertrue\@centerSectionfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue} +\DeclareOption{typewriterstyle}{ \@emphisboldfalse + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue\@chapterCapstrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadfalse\@fixedHeadSztrue} +\DeclareOption{modernstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadtrue\@fixedHeadSzfalse} +\DeclareOption{defaultstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue + \@boldheadtrue\@fixedHeadSzfalse} + +% Now we load the report class with certain options by default. It +% will process any other options specified. Then, we process the +% options for this class file. Lastly, we load in the font option +% file for the given font size. + +\ProcessOptions +\LoadClass[letterpaper,oneside,onecolumn]{report}[1996/10/31] + +% Other required LaTeX2e packages: if your computer doesn't already +% have these, you can copy them to your own directory (URL above): + +\RequirePackage{indentfirst} % indentfirst.sty, 1995/11/23 +\RequirePackage{ifthen} % ifthen.sty, 1996/08/02 +\RequirePackage[ULforem,normalbf]{ulem} % ulem.sty, 1995/12/17 + + +%%%%%% SPECIAL INTERNAL COMMANDS. Needed by later routines. + +% Create a command to be used for default arguments. +\newcommand*{\th@DefArg}{aWfdRvV11f66GL00K5} + +% Now create a command to check for the default argument, and call the +% command [in the first arg] appropriately. Used for section heading +% commands. + +\newcommand{\th@ExecChkOptArg}[3]{ +\ifthenelse{\equal{\th@DefArg}{#2}}{ + #1{#3} + }{ + #1[#2]{#3}} +} + +% Controls the heading styles. You can change the size to suit your needs. + +\if@fixedHeadSz + \newcommand*{\th@ChSz}{\normalsize} + \newcommand*{\th@ScSz}{\normalsize} +\else\if@headSizeTwelvePt + \newcommand*{\th@ChSz}{\normalsize\fontsize{12}{12}\selectfont} + \newcommand*{\th@ScSz}{\normalsize\fontsize{12}{12}\selectfont} +\else + \newcommand*{\th@ChSz}{\normalsize\Large} + \newcommand*{\th@ScSz}{\normalsize\large} +\fi\fi + +\if@boldhead + \newcommand*{\th@HdFnt}{\normalfont\bfseries} +\else + \newcommand*{\th@HdFnt}{\normalfont} +\fi + +% The style commands proper. Controlled by a flag. + +\newif\if@thInHeading +\@thInHeadingfalse +\newcommand*{\th@ChapterStyle}{\if@thInHeading\th@HdFnt\th@ChSz\fi} +\newcommand*{\th@SectionStyle}{\if@thInHeading\th@HdFnt\th@ScSz\fi} +\newcommand*{\th@SubSectionStyle}{\if@thInHeading\normalsize\th@HdFnt\fi} +\newcommand*{\th@OtherSecHeadStyles}{\if@thInHeading\normalsize\th@HdFnt\fi} + +% Re-define the emphasis commands to use either BOLDFACE or UNDERLINING, +% depending on the startup flags. + +\newcommand*{\EmphReset}{ + \if@emphisbold + \let\em\bfseries + \let\emph\textbf + \else + \ULforem + \fi +} + +% Makes the chapter heading label, putting it in the desired style. +% We need to define it here, since we need it before redefining the +% chapter commands. + +\newcommand*{\th@DoChapCenter}{\if@centerChapter\centering\fi} +\newcommand*{\th@ChapHead}[1]{ + \protect\th@ChapterStyle + \protect\th@DoChapCenter #1} + + +%%%%%%% DEFINE DOUBLE-SPACING (THE DEFAULT) AND OTHER SPACING: +\def\setspace@size{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi} +\def\doublespacing{ \ifcase \@ptsize \relax + \def \baselinestretch {2.004}% 10pt + \or \def \baselinestretch {1.771}% 11pt + \or \def \baselinestretch {1.660}% 12pt + \fi \setspace@size} +\def\singlespacing{\def \baselinestretch {1} \setspace@size \vskip \baselineskip} +\def\setstretch#1{\renewcommand{\baselinestretch}{#1}} +\def\@setsize#1#2#3#4{\@nomath#1 + \let\@currsize#1 \baselineskip #2 + \baselineskip \baselinestretch\baselineskip + \parskip \baselinestretch\parskip + \setbox\strutbox \hbox{ \vrule height.7\baselineskip depth.3\baselineskip + width\z@} \skip\footins \baselinestretch\skip\footins + \normalbaselineskip\baselineskip#3#4} +%%%%%%%%% floats & footnotes singlespaced %%%%%%%%% +\let\latexx@xfloat=\@xfloat +\def\@xfloat #1[#2]{\latexx@xfloat #1[#2] +\def\baselinestretch{1}\@normalsize \normalsize} +\long\def\@footnotetext#1{ + \insert\footins{ + \def\baselinestretch {1} + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@footnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +\long\def\@mpfootnotetext#1{ + \global\setbox\@mpfootins\vbox{ + \unvbox \@mpfootins + \def\baselinestretch {1} + \reset@font\footnotesize + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@mpfootnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +%%%%%%%% single / double spacing %%%%%%%%% +\def\singlespace{ \vskip \baselineskip \def\baselinestretch {1} + \setspace@size \vskip -\baselineskip } +\def\endsinglespace{\par} +\def\spacing#1{ \par \begingroup \def\baselinestretch {#1} \setspace@size } +\def\endspacing{ \par \vskip \parskip \vskip \baselineskip + \endgroup \vskip -\parskip \vskip -\baselineskip } +\def\doublespace{ \ifcase \@ptsize \relax + \spacing{2.004}% 10pt + \or \spacing{1.771}% 11pt + \or \spacing{1.660}% 12pt + \fi } +\let\enddoublespace=\endspacing + + + +%%%%% SET THE OVERALL DOCUMENT PROPERTIES, such as page numbering, +% margins... Initialize several global document properties, but do so +% *before* the beginning of the document to forces these changes. +\AtBeginDocument{ + \setlength{\topmargin}{-0.30in} + \setlength{\headheight}{0.20in} + \setlength{\headsep}{0.0in} + \setlength{\topskip}{0.40in} % first line, down from page number + \setlength{\textheight}{9.10in} % 9"-(topmargin+headsep+headheight) + \setlength{\footskip}{0pt} + \setlength{\oddsidemargin}{0.00in} + \setlength{\evensidemargin}{0.00in} + \setlength{\parindent}{0.40in} % somewhere between 0.3" and 0.5" + \setlength{\textwidth}{6.50in} + \setlength{\leftmargini}{3.5em} + \setlength{\leftmarginii}{2.2em} + \setlength{\leftmarginiii}{2.2em} + \setlength{\leftmarginiv}{2.2em} + \setlength{\leftmarginv}{2.2em} + \setlength{\leftmarginvi}{2.2em} + \setlength{\leftmargin}{\leftmargini} + \setlength{\labelsep}{.5em} + \setlength{\labelwidth}{ 1.5em} + \pagenumbering{arabic} + \pagestyle{myheadings} + \markright{} + \onecolumn + \raggedbottom + \normalsize + \normalfont + \EmphReset % bold or underlined? + \doublespacing % footnotes and floats still singlespaced + \setcounter{tocdepth}{2} + \setcounter{secnumdepth}{\value{th@SecNum}} +% Redefine the bibliography command here, just in case someone +% uses a custom *.sty file that redefines bibliography command + \let\th@OldBib\thebibliography + \let\endth@OldBib\endthebibliography + \renewenvironment*{thebibliography}[1]{ + \begin{th@OldBib}{#1} + \ULforem% set \em to underline + \begin{singlespace} + \addcontentsline{toc}{part}{\bibnameToC} + }{ + \end{singlespace} + \EmphReset% set \em back to the user-specified default. + \end{th@OldBib} + } +} + +%%%%%%%%%%% ADDITIONAL STUFF: +\setcounter{tocdepth}{2} +\newcommand*{\@normalsize}{\normalsize} +\doublespacing + +% Figures and Tables +\setcounter{topnumber}{1} +\renewcommand*{\topfraction}{.4} +\setcounter{totalnumber}{2} +\renewcommand*{\textfraction}{.5} +\renewcommand*{\floatpagefraction}{.3} +\setcounter{dbltopnumber}{1} +\renewcommand*{\dbltopfraction}{.4} +\renewcommand*{\dblfloatpagefraction}{.3} +\setlength{\abovecaptionskip}{10pt} +\setlength{\belowcaptionskip}{10pt} + +% Re-define some formatting commands to produce lists, labels, +% and numberings that are more to the Grad School's liking. + +% Set up some titles on the table of contents page. +\renewcommand*{\figurename}{Figure} +\renewcommand*{\tablename}{Table} +\newcommand*{\figurenameToC}{\normalsize\th@HdFnt\figurename\normalfont} +\newcommand*{\tablenameToC}{\normalsize\th@HdFnt\tablename\normalfont} + +\if@chapterCaps + \renewcommand*{\contentsname}{\th@ChapHead{CONTENTS}} + \renewcommand*{\listfigurename}{\th@ChapHead{FIGURES}} + \renewcommand*{\listtablename}{\th@ChapHead{TABLES}} + \renewcommand*{\appendixname}{\th@ChapHead{APPENDIX}} + \renewcommand*{\bibname}{\th@ChapHead{BIBLIOGRAPHY}} + \renewcommand*{\chaptername}{\th@ChapHead{CHAPTER}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt CHAPTER\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt BIBLIOGRAPHY\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt APPENDIX\normalfont} +\else + \renewcommand*{\contentsname}{\th@ChapHead{Contents}} + \renewcommand*{\listfigurename}{\th@ChapHead{Figures}} + \renewcommand*{\listtablename}{\th@ChapHead{Tables}} + \renewcommand*{\appendixname}{\th@ChapHead{Appendix}} + \renewcommand*{\bibname}{\th@ChapHead{Bibliography}} + \renewcommand*{\chaptername}{\th@ChapHead{Chapter}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt Chapter\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt Bibliography\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt Appendix\normalfont} +\fi + +% Adds the appropriate label to the ToC/LoF/LoT + +\addtocontents{lof}{\protect\contentsline {part} + {\protect\figurenameToC}{\protect\relax}{}} +\addtocontents{lot}{\protect\contentsline {part} + {\protect\tablenameToC}{\protect\relax}{}} +\addtocontents{toc}{\protect\contentsline {part} + {\protect\chapternameToC}{\protect\relax}{}} + +% NUMBERING STYLES, DEFAULT VALUES + +% Using macros of the form \th@Def* avoids conflicts with +% LaTeX internals which use \theDef* forms... + +\newcounter{th@SecNum} +\setcounter{th@SecNum}{3} +\if@NumberStdHeadings + \@centerSectionfalse% Force this. + \newcommand*{\th@DefTheChapter}{\arabic{chapter}} + \newcommand*{\th@DefTheSection}{\th@DefTheChapter.\arabic{section}} + \newcommand*{\th@DefTheSubsection}{\th@DefTheSection.\arabic{subsection}} +\else + \@AllHeadingsfalse% Just to be safe... + \newcommand*{\th@DefTheChapter}{\Roman{chapter}} + \newcommand*{\th@DefTheSection}{\relax} + \newcommand*{\th@DefTheSubsection}{\relax} +\fi + +\if@AllHeadings + \@inlineSubSubSectionfalse% Force this... + \@numberSubSubSectiontrue% ...and this. + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \newcommand*{\th@DefTheParagraph} + {\th@DefTheSubsubsection.\arabic{paragraph}} + \newcommand*{\th@DefTheSubparagraph} + {\th@DefTheParagraph.\arabic{subparagraph}} +\else + \newcommand*{\th@DefTheParagraph}{\relax} + \newcommand*{\th@DefTheSubparagraph}{\relax} + \if@numberSubSubSection + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \else + \newcommand*{\th@DefTheSubsubsection}{\relax} + \fi +\fi +\renewcommand*{\thechapter}{\th@DefTheChapter} +\renewcommand*{\thesection}{\th@DefTheSection} +\renewcommand*{\thesubsection}{\th@DefTheSubsection} +\renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} +\renewcommand*{\theparagraph}{\th@DefTheParagraph} +\renewcommand*{\thesubparagraph}{\th@DefTheSubparagraph} + +% Figure, Table, and Equation numbering. +\if@PerChptrNumbering\else + \newcounter{th@SaveFigure} + \newcounter{th@SaveTable} + \newcounter{th@SaveEquation} + \renewcommand*{\thefigure}{\arabic{figure}} + \renewcommand*{\thetable}{\arabic{table}} + \renewcommand*{\theequation}{\arabic{equation}} +\fi + +% Enumerated List labels +\renewcommand*{\theenumi}{\arabic{enumi}} +\renewcommand*{\theenumii}{\alph{enumii}} +\renewcommand*{\theenumiii}{\roman{enumiii}} +\renewcommand*{\theenumiv}{\alph{enumiv}} +\renewcommand*{\labelenumi}{(\theenumi)} +\renewcommand*{\labelenumii}{(\theenumii)} +\renewcommand*{\labelenumiii}{(\theenumiii)} +\renewcommand*{\labelenumiv}{(\theenumiii.\theenumiv)} + +% Itemized list labels. +\renewcommand*{\labelitemi}{\textbullet} +\renewcommand*{\labelitemii}{\textasteriskcentered} +\renewcommand*{\labelitemiii}{\normalfont \bfseries \textendash} +\renewcommand*{\labelitemiv}{\textperiodcentered} + +% Margins for lists +\setlength{\leftmargini}{3.5em} +\setlength{\leftmarginiii}{2.2em} +\setlength{\leftmarginiv}{2.2em} +\setlength{\leftmarginv}{2.2em} +\setlength{\leftmarginvi}{2.2em} +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelwidth}{1.5em} + +% Redefine certain commands and environments from report.cls. +% This is where things get messy. We rename each command we modify, +% then redefine the command using the old version as subset. + +% VERSE, QUOTATION, and QUOTE must be single-spaced. +% These rename the internal commands for the \begin{...} and +% \end{...} environment commands. +\let\th@OldVerse\verse +\let\th@OldQuotation\quotation +\let\th@OldQuote\quote +\let\endth@OldVerse\endverse +\let\endth@OldQuotation\endquotation +\let\endth@OldQuote\endquote + +% Note - the ``\begin{singlespace}'' and ``\end{singlespace}'' +% are defined in setspace.sty. + +\renewenvironment*{verse}{\begin{th@OldVerse}\begin{singlespace}} + {\end{singlespace}\end{th@OldVerse}} + +\renewenvironment*{quotation}{\begin{th@OldQuotation} \begin{singlespace}} + {\end{singlespace}\end{th@OldQuotation}} + +\renewenvironment*{quote}{\begin{th@OldQuote} \begin{singlespace}} + {\end{singlespace} \end{th@OldQuote}} + +% Theorems and Axioms: They must NOT be italicized. To do this +% robustly, I've needed to use some in-depth TeXnology. Check out a +% good LaTeX book for info on the \@namedef and \@nameuse commands. + +\let\th@OldNewtheorem\newtheorem +% Check for the calling format: \newtheorem{}[]{} +\def\newtheorem#1{ \@ifnextchar[{\th@nuthrmOM{#1}}{\th@newtheoremTwo{#1}}%] +} +% Calling format: \newtheorem{}{}[]; checks for the optional arg at the end. +\def\th@newtheoremTwo#1#2{ + \@ifnextchar[{\th@nuthrmO{#1}{#2}}{\th@nuthrm{#1}{#2}}%] +} +% Standard call. No optional args. +\def\th@nuthrm#1#2{ + \th@OldNewtheorem{th@#1}{#2} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} +} +% Optional arg at end. +\def\th@nuthrmO#1#2[#3]{ + \th@OldNewtheorem{th@#1}{#2}[#3] + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +% Optional arg in the middle. +\def\th@nuthrmOM#1[#2]#3{ + \th@OldNewtheorem{th@#1}[th@#2]{#3} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +\def\th@execThrmOpt#1[#2]{ + \@nameuse{#1}[#2] \normalsize\normalfont +} +\newcommand*{\th@correctTheorem}[4]{ + \@namedef{#1}{\@nameuse{#3}} + \@namedef{#2}{\@ifnextchar[{\th@execThrmOpt{#4}}{ %%} + \@nameuse{#4} \normalsize\normalfont} + } +} + +% APPENDIX command +\newcounter{th@SectionSave} +\let\th@OldAppCmd\appendix +\renewcommand{\appendix}{ + \setcounter{th@SectionSave}{\value{section}} + \th@OldAppCmd + \if@NumberStdHeadings\else + \setcounter{section}{\value{th@SectionSave}} + \fi + \addtocontents{toc}{\protect\contentsline {part} + {\protect\appendixnameToC}{\protect\relax}{}} + \renewcommand*{\th@DefTheChapter}{\Alph{chapter}} + } + +%%%%%%%%%%%%%%% BIBLIOGRAPHY: Used to be redefined here. +% Moved to permit use of different bibliography .sty and .bst files. +% It's now in the '\AtBeginDocument' command. + +%%%%%%%%%%%%%%% SECTION HEADINGS (including several new options): +% New if-s +\newif\if@AlwaysFalse +\@AlwaysFalsefalse +\newif\if@CenterHeading +\@CenterHeadingfalse +\newif\if@UseStarCmd +\@UseStarCmdfalse + +%%%%%%%%%%%%%%% GENERAL AND SETUP COMMANDS. +% Makes a heading. +% The optional argument (#1) is a centering flag. The heading gets +% centered if it's present and set to true. +% The second arg is the style command. +% The third arg is the heading proper. +\newcommand*{\th@MakeHeading}[2]{ + \protect #1 + \if@CenterHeading\begin{center}\typeout{centered}\fi + #2 + \if@CenterHeading\end{center}\fi + } + +% Makes a heading. +% The entire thing is something of a mess. We want all ToC entries to +% be in normal text. We also want references in normal text. But, we +% want the heading numbers to appear in the correct size and font. To +% get this to happen is a chore. + +% The args are, in order: +% The command to execute (#1), +% The heading style command (#2), +% The optional arg passed to the heading command proper (#3). +% E.g. if you execute a \section[foo]{bigfoo}, #3=="foo". +% The heading text itself (#4). +% The name of the current command (#5). E.g. "chapter". +% The internal command that generates the number label (#6). + +% There are also two important flags used by this command. The first +% is \@UseStarCmd. Set this to "true" if this is the starred version +% of the command. The second flag is \@thInHeading. This gets set +% 'true' inside the section heading commands and turned off at the end +% of the command. + +\newcommand*{\th@Heading}[6]{ + \@thInHeadingtrue + % Alter the '\the...' command. + \@namedef{the#5}{\protect#2 #6} + \if@UseStarCmd + #1*{\th@MakeHeading{\protect#2}{#4}} + \else + \ifthenelse{\equal{\th@DefArg}{#3}}{ + #1[\normalsize\normalfont#4]{ + \th@MakeHeading{\protect#2}{#4}} + }{ + #1[\normalsize\normalfont#3]{ + \th@MakeHeading{\protect#2}{#4}} + } + \fi +% Reset the '\the...' command, but don't enforce +% '\normalsize\normalfont' anywhere, as this messes up +% cross-references in footnotes. + \@namedef{the#5}{#6} + \@thInHeadingfalse + \@CenterHeadingfalse + \normalsize\normalfont +} + +%%%%%%%%%%% CHAPTER HEADING: +% The chapter command definitely needs some re-defining. The primary +% purpose is to control numbering in figures, tables, and equations. + +\let\th@OldChapter\chapter +% The \@ifstar{}{} is a LaTeX tool to check the character following +% the command and see if it's a '*'. +\renewcommand*{\chapter}{\@ifstar{\th@ChapterS}{\th@Chapter}} + +% Special if-s; used internally for chapters. +\newif\if@THshortChapter +\@THshortChapterfalse + +% We define a special command for stepping the chapter counter, +% zeroing the figure, table, and equation counters only if necessary. + +\newcommand*{\th@PreChCmd}{ + \if@PerChptrNumbering + \relax + \else + \setcounter{th@SaveTable}{\value{table}} + \setcounter{th@SaveFigure}{\value{figure}} + \setcounter{th@SaveEquation}{\value{equation}} + \fi +} + +\newcommand*{\th@PostChCmd}{ + \if@THshortChapter + \typeout{Short Chapter (page numbered)} + \@THshortChapterfalse + \thispagestyle{myheadings} + \else + \thispagestyle{empty} + \fi + \if@PerChptrNumbering + \relax + \else + \setcounter{table}{\value{th@SaveTable}} + \setcounter{figure}{\value{th@SaveFigure}} + \setcounter{equation}{\value{th@SaveEquation}} + \fi + \normalsize\normalfont + \@UseStarCmdfalse +} +\if@chapterCaps + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {\uppercase\expandafter{#2}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {\uppercase\expandafter{#1}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\else + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {#2}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {#1}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\fi + +%%%%%%%%% SECTION HEADING COMMANDS. We need to use the starred version +% and add the numbering and toc-entry ourselves. We need to do this +% for all of the subsequent heading commands. If we don't we'll get +% weird-looking ToC entries and references. + +\let\th@OldSection\section +\renewcommand*{\section}{\@ifstar{\th@SectionS}{\th@Section}} + +\newcommand*{\th@Section}[2][\th@DefArg]{ + \@UseStarCmdfalse + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{#1}{#2} + {section}{\th@DefTheSection} + \normalsize\normalfont +} +\newcommand*{\th@SectionS}[1]{ + \@UseStarCmdtrue + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{\th@DefArg} + {#1}{section}{\th@DefTheSection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSECTION HEADING COMMANDS. + +\let\th@OldSubSection\subsection +\renewcommand*{\subsection}{ + \@ifstar{\th@SubSectionS}{\th@SubSection} +} +\newcommand*{\th@SubSection}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {#1}{#2}{subsection}{\th@DefTheSubsection} + \normalsize\normalfont +} +\newcommand*{\th@SubSectionS}[1]{ + \@UseStarCmdtrue + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {\th@DefArg}{#1}{subsection}{\th@DefTheSubsection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSUBSECTION HEADING COMMANDS. No starred version permitted. +% No ToC entry. We also need to check and see if we should number +% it or not and if we should inline it or not. + +\let\th@OldSubSubSection\subsubsection +\newlength{\th@SubSubSecSpc} +\if@numberSubSubSection + \renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdfalse} + \setcounter{th@SecNum}{4} + \setlength{\th@SubSubSecSpc}{0.5em} +\else + \renewcommand*{\thesubsubsection}{\relax} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdtrue} + \setlength{\th@SubSubSecSpc}{0em} +\fi + +\newif\if@shutoffSSSect +\@shutoffSSSectfalse + +\if@inlineSubSubSection +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \refstepcounter{subsubsection} + \vspace{4\parsep} + \underline{% + \@thInHeadingtrue\th@OtherSecHeadStyles% + \thesubsubsection\hspace{\th@SubSubSecSpc}#2}\hspace{2mm} + \ignorespaces\normalsize\normalfont + } +\else +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \th@PreSubsubsecCmd + \@CenterHeadingfalse + \th@Heading{\th@OldSubSubSection}{\th@OtherSecHeadStyles} + {\th@DefArg}{#2}{subsubsection}{\th@DefTheSubsubsection} + \@UseStarCmdfalse\normalsize\normalfont + } +\fi + +% We don't need to do much for paragraph and subparagraph. We won't +% even define a *-version or permit entries in the ToC. +\if@AllHeadings + \let\th@OldParagraph\paragraph + \renewcommand*{\paragraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{paragraph} + {\hspace*{\parindent}\th@DefTheParagraph} + \@UseStarCmdfalse + \@namedef{theparagraph}{\th@DefTheParagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \let\th@OldSubParagraph\subparagraph + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{subparagraph} + {\th@DefTheSubparagraph} + \@UseStarCmdfalse + \@namedef{thesubparagraph}{\th@DefTheSubparagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \setcounter{th@SecNum}{5} +\else + \renewcommand*{\paragraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} +\fi + + +%%%%%%%%%% COMMANDS CHANGED FOR THIS CLASS +%%%%%% Unavailable commands +\renewcommand*{\theindex}{\ClassWarning{thesis} + {Indexing not available in this class.}} +\renewcommand*{\twocolumn}{\ClassWarning{thesis} + {Twocolumn not available in this class.}} +\renewcommand*{\thepart}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +\renewcommand*{\part}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +%%%%%% New commands +% This forces a page number on the first page of a chapter, etc. +\newcommand*{\forcepageno}{\thispagestyle{myheadings}} +\newcommand*{\OnePageChapter}{\forcepageno} + + +%%%%%%%%%%% THESIS PROLOGUE PAGES: +% Stores the second arg in the command specified by the first arg. +\newcommand{\th@StoreIn}[2]{ \gdef#1{#2} } +% Default values of storage variables. Emits an error message. +% This part of the class is long... +\newcommand*{\th@title}{ + \ClassError{thesis}{ + You must specify a title!} + {Use the \protect\title{} command in the preamble.} +} +\newcommand*{\th@fwdname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@revname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@deptname}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@deptorg}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@advisor}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@advisortitle}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@reader}{ + \ClassError{thesis}{ + You must specify the name of the other \MessageBreak + committee member who will be signing your \MessageBreak + thesis.} + {Use the \protect\reader{} command in the preamble.} +} +\newcommand*{\th@readerThree}{none} % optional +\newcommand*{\th@readerFour}{none} % optional +\newcommand*{\th@readerFive}{none} % optional +\newcommand*{\th@readerSix}{none} % optional +\newcommand*{\th@IRBprotocol}{none} % optional +\newcommand*{\th@fulldegree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, e.g.\MessageBreak + 'Ph. D., Biology'.} +} +\newcommand*{\th@degree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, \MessageBreak + e.g. 'Ph. D., Biology'.} +} +\newcommand{\th@otherdegrees}{ + \ClassError{thesis}{ + You must specify other degrees you hold!} + {Use the \protect\otherdegrees{} command in the \MessageBreak + preamble. Break each line using the \protect\\ \MessageBreak + command.} +} +\newcommand{\th@abstractStash}{ + \ClassError{thesis}{ + You must specify an abstract!} + {Use the \protect\abstractpage[]{} command in the \MessageBreak + preamble. If your abstract runs over a page, \MessageBreak + use the optional argument with the word 'long'.} +} +\newcommand*{\th@degreeyear}{\number\the\year} +\newcommand*{\th@signature}[1]{ \begin{center} + \normalsize + \vspace*{16mm} % works well? + \vrule width 80mm height 0.2mm\\ + #1 \end{center} +} +\newcommand*{\th@dateline}{ + \vspace*{9mm} + \begin{flushright} + Date~{\vrule width 35mm height 0.2mm} + \end{flushright} +} +\newcommand{\th@AbstractPageStyle}{\relax} +\newcommand{\th@dedicationStash}{\relax} +\newcommand{\th@dedicationTitleStash}{\relax} +\newcommand{\th@acknowledgementsStash}{\relax} +\newif\if@shortLoA +\newif\if@shortLoL +\newif\if@shortLoF +\newif\if@shortLoT +\newif\if@shortToC +\newif\if@makenoLoF +\newif\if@makenoLoT +\newif\if@makenoLoL +\newif\if@makenoLoA +\newif\if@makeDedication +\newif\if@makeAcknowledgements +\newif\if@makePrologue +\@shortLoAfalse +\@shortLoLfalse +\@shortLoFfalse +\@shortLoTfalse +\@shortToCfalse +\@makenoLoFfalse +\@makenoLoTfalse +\@makenoLoLfalse +\@makeDedicationfalse +\@makeAcknowledgementsfalse +\@makeProloguetrue + +% The base commands that make all of the prologue pages. +\newcommand*{\th@Titlepage}{ + \thispagestyle{empty} + \@thInHeadingtrue + \null\vfill + \begin{list}{}{\setlength{\leftmargin}{0.8in} + \setlength{\rightmargin}{0.8in}\sloppy} + \centering\item[] + {\th@ChapterStyle + \if@chapterCaps + \uppercase\expandafter{\th@title}\\ + \else + \th@title\\ + \fi} + by\\ + {\th@OtherSecHeadStyles + \if@chapterCaps + \uppercase\expandafter{\th@fwdname}\\ + \else + \th@fwdname\\ + \fi} + \th@otherdegrees\\ + \end{list} + \vfill + \begin{center} + A prospectus submitted to\\ + \th@advisortitle\ \th@advisor \\ + \th@reader\\ % REQUIRED + \ifthenelse{\equal{\th@readerThree}{none}}{\relax} + {\th@readerThree\\} % optional + \ifthenelse{\equal{\th@readerFour}{none}}{\relax} + {\th@readerFour\\} % optional + \ifthenelse{\equal{\th@readerFive}{none}}{\relax} + {\th@readerFive\\} % optional + in partial fulfillment of the requirements for the degree of\\ + \th@fulldegree\\ + \th@deptorg\ \th@deptname\\ + \ \th@degreeyear \\ + \end{center} + \@thInHeadingfalse + \vfill +} +\newcommand{\th@Abstractpage}{ + \clearpage + \th@AbstractPageStyle + \doublespacing % 1998 revision of Grad School Specs + \par + \vspace*{4\parsep} + \begin{center} + \textbf{\th@ChapHead{Abstract}} + \end{center} + \th@abstractStash % finally, the actual abstract +} +\newcommand{\th@Dedicationpage}{ + \if@makeDedication + \clearpage + \thispagestyle{empty} + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\chapter*{\th@dedicationTitleStash}} + \th@dedicationStash + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\relax} + \fi +} +\newcommand{\th@Acknowledgementpage}{ + \if@makeAcknowledgements + \clearpage + \chapter*{Acknowledgements} + {\doublespacing + \th@acknowledgementsStash} + \fi +} + +\newcommand{\th@ToCpage}{ + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \@THshortChapterfalse + \if@shortToC + \@THshortChaptertrue + \typeout{Making Short ToC...} + \fi + \@thInHeadingfalse + {\doublespacing + \tableofcontents} + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoTpage}{ + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \glsunsetall + \@THshortChapterfalse + \if@makenoLoT + \typeout{Skipping LoT...} + \else + \if@shortLoT + \@THshortChaptertrue + \typeout{Making Short LoT...} + \fi + {\doublespacing + \listoftables} + \fi + \glsresetall + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoFpage}{ + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \glsunsetall + \@THshortChapterfalse + \if@makenoLoF + \typeout{Skipping LoF...} + \else + \if@shortLoF + \@THshortChaptertrue + \typeout{Making Short LoF...} + \fi + {\doublespacing + \listoffigures} + \fi + \glsresetall + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoLpage}{ + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \@THshortChapterfalse + \if@makenoLoL + \typeout{Skipping LoL...} + \else + \if@shortLoL + \@THshortChaptertrue + \typeout{Making Short LoL...} + \fi + {\doublespacing + \lstlistoflistings} + \fi + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoApage}{ + \@THshortChapterfalse + \if@makenoLoA + \typeout{Skipping LoA...} + \else + \if@shortLoA + \@THshortChaptertrue + \typeout{Making Short LoA...} + \fi + {\singlespacing + % list of acronyms + \printglossary[type=\acronymtype,style=long,nonumberlist]} + \fi +} + + + +% This performs the actual generation of the prologue +\newcounter{th@storepage} +\newcommand{\th@MakeThesisPrologue}{ + \if@makePrologue + \pagenumbering{roman} + \typeout{Making Title Page} + \th@Titlepage + % Note: Approval Page is no longer required. + % \typeout{Making Approval Page} + % \th@Approvalpage + \typeout{Making Abstract Page} + \th@Abstractpage + \typeout{Making Dedication Page} + \th@Dedicationpage + \typeout{Making Acknowledgement Page} + \th@Acknowledgementpage + \setcounter{th@storepage}{\value{page}} + \typeout{Making ToC Page} + \th@ToCpage + \typeout{Making LoT Page} + \th@LoTpage + \typeout{Making LoF Page} + \th@LoFpage + \typeout{Making LoL Page} + \th@LoLpage + \typeout{Making LoA Page} + \th@LoApage + \fi +} + + +% Make the generator-command the very first command of the document. +\let\th@OldBeginDocument\document +\renewcommand*{\document}{ + \th@OldBeginDocument + \th@MakeThesisPrologue + \typeout{} + \typeout{} + \typeout{-------------------Beginning Body----------------------} + \typeout{} + \typeout{} + \doublespacing + \clearpage + \pagenumbering{arabic} + \@THshortChapterfalse +} + +%%%%%%%%% USER COMMANDS FOR CONTROLLING THE PROLOGUE: +\renewcommand*{\title}[1]{\th@StoreIn{\th@title}{#1}} +\newcommand*{\reader}[1]{\th@StoreIn{\th@reader}{#1}} +\newcommand*{\readerThree}[1]{\th@StoreIn{\th@readerThree}{#1}} +\newcommand*{\readerFour}[1]{\th@StoreIn{\th@readerFour}{#1}} +\newcommand*{\readerFive}[1]{\th@StoreIn{\th@readerFive}{#1}} +\newcommand*{\readerSix}[1]{\th@StoreIn{\th@readerSix}{#1}} +\newcommand*{\IRBprotocol}[1]{\th@StoreIn{\th@IRBprotocol}{#1}} +\newcommand*{\degreeyear}[1]{\th@StoreIn{\th@degreeyear}{#1}} +\newcommand{\otherdegrees}[1]{\th@StoreIn{\th@otherdegrees}{#1}} +\newcommand{\acknowledgements}[1]{ + \@makeAcknowledgementstrue + \th@StoreIn{\th@acknowledgementsStash}{#1} +} +\newcommand{\dedication}[2][\th@DefArg]{ + \@makeDedicationtrue + \th@StoreIn{\th@dedicationTitleStash}{#1} + \th@StoreIn{\th@dedicationStash}{#2} +} +\renewcommand*{\author}[2]{ + \th@StoreIn{\th@fwdname}{#1 #2} + \th@StoreIn{\th@revname}{#2, #1} +} +\newcommand*{\degree}[2]{ + \th@StoreIn{\th@fulldegree}{#1} + \th@StoreIn{\th@degree}{#2} +} +\newcommand*{\advisor}[2]{ + \th@StoreIn{\th@advisor}{#2} + \th@StoreIn{\th@advisortitle}{#1} +} +\newcommand*{\dept}[2]{ + \th@StoreIn{\th@deptorg}{#1} + \th@StoreIn{\th@deptname}{#2} +} +\renewcommand{\abstract}[2][long]{ + \ifthenelse{\equal{#1}{short}}{\relax}{ + \th@StoreIn{\th@AbstractPageStyle}{\thispagestyle{empty}} + } + \th@StoreIn{\th@abstractStash}{#2} +} +\newcommand*{\SuspendPrologue}{ + \@makeProloguefalse + \typeout{No prologue pages printed.} +} +\newcommand*{\emptyLoF}{ + \@makenoLoFtrue + \typeout{No LoF printed} +} +\newcommand*{\emptyLoT}{ + \@makenoLoTtrue + \typeout{No LoT printed} +} +\newcommand*{\emptyLoL}{ + \@makenoLoLtrue + \typeout{No LoL printed} +} +\newcommand*{\emptyLoA}{ + \@makenoLoAtrue + \typeout{No LoA printed} +} +\newcommand*{\ToCisShort}{ + \@shortToCtrue + \typeout{Putting page number on short ToC} +} +\newcommand*{\LoFisShort}{ + \@shortLoFtrue + \typeout{Putting page number on short LoF} +} +\newcommand*{\LoTisShort}{ + \@shortLoTtrue + \typeout{Putting page number on short LoT} +} +\newcommand*{\LoLisShort}{ + \@shortLoLtrue + \typeout{Putting page number on short LoL} +} +\newcommand*{\LoAisShort}{ + \@shortLoAtrue + \typeout{Putting page number on short LoA} +} + +\endinput +%%%%%%%%%%%%%%%% End of file ``thesis.cls'' diff --git a/thesis.cls b/thesis.cls index a238538..8a1041a 100644 --- a/thesis.cls +++ b/thesis.cls @@ -1,1313 +1,1372 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% thesis.cls - LaTeX2e class for CU Theses. -%% To conform to the University of Colorado at Boulder -%% Graduate School SPECIFICATIONS (April 2010) for -%% Preparation of Master's Thesis and Doctoral Dissertations -%% Version 1.00 written by John P. Weiss, 1997 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% version 1.15, Nicholas Long, May 2022 -- Added listings and -%% acronyms to table of contents. Added fourth and -%% fifth readers. This version also updated the cover -%% to focus to be a prospectus. -%% version 1.14, Ken Anderson, August 2020 -- removed signature -%% page; instead list committee members on title page. -%% Changes made to comply with new Graduate School -%% guidelines. -%% version 1.13, Hongcheng Ni, March 2014 -- made compatible with -%% hyperref. -%% version 1.12, Hongcheng Ni, March 2014 -- added title before -%% the advisor's name in the signature page. -%% version 1.11, Bruce Fast, April 2008 -- changed left margin -%% from 1.75" to 1", and added \IRBprotocol option -%% version 1.10, E. Joshua Rigler, January 2003 -- making it safe -%% for folks who inadvertently load setspace.sty, changed -%% \latex@xfloat to \latexx@xfloat -%% version 1.09, BF, November 2000 -- conforms to revised specs -%% no significant changes required -%% version 1.08, Steven V Penton, September 1999 -- added -%% \readerFive; moved list of tables in front of figures -%% version 1.07, BF, January 1999 -- fixed \LoFisShort etc. -%% version 1.06, BF, November 1998 -- fixed level 4 headers; -%% SubSubSections, inline4 & nonum4. Eliminated -%% unwanted space before chapter/section numbers. -%% version 1.05, BF, August 1998 -- Footnotes and floats -%% (captions) now singlespaced, fixing an omission -%% in v1.04. Fixed value of \belowcaptionskip, -%% for table captions. -%% version 1.04, BF, July 1998, Adjusted doublespacing -%% (no longer uses setspace.sty) and margin values. -%% version 1.03, May 1998, Bruce Fast -- Added optional -%% \readerThree{}, \readerFour{}; LoF/LoT debugging; -%% doublespaced abstract -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{thesis}[2020/08/06] % version 1.14 - -\typeout{} -\typeout{--------------------------------------------------------------} -\typeout{ +---+ Thesis Style (thesis.cls) version 1.14} -\typeout{ +---+ for University of Colorado Ph.D. theses/dissertations.} -\typeout{ * Conforms to the University of Colorado at Boulder Graduate} -\typeout{ * School "SPECIFICATIONS for Preparation of Master's Thesis} -\typeout{ * and Doctoral Dissertations" (rev. May 2020).} -\typeout{--------------------------------------------------------------} -\typeout{ URL: http://www.colorado.edu/oit/software-hardware/tex-latex} -\typeout{} - -% Certain options are not handled here but are passed on to report.cls -% by \PassOptionToClass. - -\DeclareOption{fleqn}{ \PassOptionsToClass{fleqn}{report} } -\DeclareOption{leqno}{ \PassOptionsToClass{leqno}{report} } -\DeclareOption{openbib}{ \PassOptionsToClass{openbib}{report} } -\DeclareOption{draft}{ \PassOptionsToClass{draft}{report} } -\DeclareOption{final}{ \PassOptionsToClass{final}{report} } -\DeclareOption{openright}{ \PassOptionsToClass{openright}{report} } -\DeclareOption{openany}{ \PassOptionsToClass{openany}{report} } -\DeclareOption{10pt}{ \PassOptionsToClass{10pt}{report} } -\DeclareOption{11pt}{ \PassOptionsToClass{11pt}{report} } -\DeclareOption{12pt}{ \PassOptionsToClass{12pt}{report} } - -% Invalid options - normally used in report.cls and others, but not here: - -\DeclareOption{titlepage} - {\ClassWarning{thesis}{Title page always generated. Option ignored.}} -\DeclareOption{notitlepage} - {\ClassWarning{thesis}{Option 'notitlepage' not available for thesis.}} -\DeclareOption{twoside} - {\ClassWarning{thesis}{Option 'twoside' not available for thesis.}} -\DeclareOption{twocolumn} - {\ClassWarning{thesis}{Option 'twocolumn' not available for thesis.}} -\DeclareOption{landscape} - {\ClassWarning{thesis}{Option 'landscape' not available for thesis.}} -\DeclareOption{legalpaper} - {\ClassWarning{thesis}{Option 'legalpaper' not available for thesis.}} -\DeclareOption{a4paper} - {\ClassWarning{thesis}{Option 'a4paper' not available for this class.}} -\DeclareOption{a5paper} - {\ClassWarning{thesis}{Option 'a5paper' not available for this class.}} -\DeclareOption{executivepaper} - {\ClassWarning{thesis}{Option 'executivepaper' not available.}} -\DeclareOption{b5paper} - {\ClassWarning{thesis}{Option 'b5paper' not available for this class.}} -\DeclareOption{letterpaper} - {\ClassWarning{thesis}{Option 'letterpaper' superfluous. Ignored.}} -\DeclareOption{onecolumn} - {\ClassWarning{thesis}{Option 'onecolumn' superfluous. Ignored.}} -\DeclareOption{oneside} - {\ClassWarning{thesis}{Option 'oneside' superfluous. Ignored.}} - -%%%%%%%%%%% CUSTOM OPTIONS: -% Options for no decimal numbering, or decimal number nested over 3 deep: -\newif\if@AllHeadings -\newif\if@NumberStdHeadings -\newif\if@PerChptrNumbering -\newif\if@emphisbold -\newif\if@boldhead -\newif\if@fixedHeadSz -\newif\if@headSizeTwelvePt -\newif\if@ChapterDefault -\newif\if@SectionDefault -\newif\if@SubSectionDefault -\newif\if@OtherHeadingDefault -\newif\if@centerChapter -\newif\if@centerSection -\newif\if@inlineSubSubSection -\newif\if@numberSubSubSection -\newif\if@chapterCaps -\@AllHeadingsfalse -\@NumberStdHeadingstrue -\@PerChptrNumberingtrue -\@emphisboldtrue -\@boldheadtrue -\@fixedHeadSzfalse -\@centerChaptertrue -\@centerSectionfalse -\@inlineSubSubSectionfalse -\@numberSubSubSectiontrue -\@chapterCapsfalse -\@headSizeTwelvePttrue -\DeclareOption{consecutivenumbering}{ \@PerChptrNumberingfalse } -\DeclareOption{inlineh4}{ \@inlineSubSubSectiontrue } -\DeclareOption{nonumh4}{ \@numberSubSubSectionfalse } -\DeclareOption{centerh1}{ \@centerSectiontrue } -\DeclareOption{chapleft}{ \@centerSectiontrue } -\DeclareOption{chapup}{ \@chapterCapstrue } -\DeclareOption{emph2underline}{ \@emphisboldfalse } -\DeclareOption{plainhead}{ \@boldheadfalse } -\DeclareOption{fixedheadsize}{ \@fixedHeadSztrue } -\DeclareOption{varheadsize}{\@headSizeTwelvePtfalse}% Hidden option. Don't use. -\DeclareOption{numberchapteronly}{ - \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse - \@centerChaptertrue\@centerSectiontrue - \@inlineSubSubSectiontrue\@numberSubSubSectionfalse } -\DeclareOption{allheadings}{ - \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingstrue - \@centerChaptertrue\@centerSectionfalse - \@inlineSubSubSectionfalse\@numberSubSubSectiontrue} -\DeclareOption{typewriterstyle}{ \@emphisboldfalse - \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse - \@centerChaptertrue\@centerSectiontrue\@chapterCapstrue - \@inlineSubSubSectiontrue\@numberSubSubSectionfalse - \@boldheadfalse\@fixedHeadSztrue} -\DeclareOption{modernstyle}{ \@emphisboldtrue - \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse - \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse - \@inlineSubSubSectiontrue\@numberSubSubSectionfalse - \@boldheadtrue\@fixedHeadSzfalse} -\DeclareOption{defaultstyle}{ \@emphisboldtrue - \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse - \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse - \@inlineSubSubSectionfalse\@numberSubSubSectiontrue - \@boldheadtrue\@fixedHeadSzfalse} - -% Now we load the report class with certain options by default. It -% will process any other options specified. Then, we process the -% options for this class file. Lastly, we load in the font option -% file for the given font size. - -\ProcessOptions -\LoadClass[letterpaper,oneside,onecolumn]{report}[1996/10/31] - -% Other required LaTeX2e packages: if your computer doesn't already -% have these, you can copy them to your own directory (URL above): - -\RequirePackage{indentfirst} % indentfirst.sty, 1995/11/23 -\RequirePackage{ifthen} % ifthen.sty, 1996/08/02 -\RequirePackage[ULforem,normalbf]{ulem} % ulem.sty, 1995/12/17 - - -%%%%%% SPECIAL INTERNAL COMMANDS. Needed by later routines. - -% Create a command to be used for default arguments. -\newcommand*{\th@DefArg}{aWfdRvV11f66GL00K5} - -% Now create a command to check for the default argument, and call the -% command [in the first arg] appropriately. Used for section heading -% commands. - -\newcommand{\th@ExecChkOptArg}[3]{ -\ifthenelse{\equal{\th@DefArg}{#2}}{ - #1{#3} - }{ - #1[#2]{#3}} -} - -% Controls the heading styles. You can change the size to suit your needs. - -\if@fixedHeadSz - \newcommand*{\th@ChSz}{\normalsize} - \newcommand*{\th@ScSz}{\normalsize} -\else\if@headSizeTwelvePt - \newcommand*{\th@ChSz}{\normalsize\fontsize{12}{12}\selectfont} - \newcommand*{\th@ScSz}{\normalsize\fontsize{12}{12}\selectfont} -\else - \newcommand*{\th@ChSz}{\normalsize\Large} - \newcommand*{\th@ScSz}{\normalsize\large} -\fi\fi - -\if@boldhead - \newcommand*{\th@HdFnt}{\normalfont\bfseries} -\else - \newcommand*{\th@HdFnt}{\normalfont} -\fi - -% The style commands proper. Controlled by a flag. - -\newif\if@thInHeading -\@thInHeadingfalse -\newcommand*{\th@ChapterStyle}{\if@thInHeading\th@HdFnt\th@ChSz\fi} -\newcommand*{\th@SectionStyle}{\if@thInHeading\th@HdFnt\th@ScSz\fi} -\newcommand*{\th@SubSectionStyle}{\if@thInHeading\normalsize\th@HdFnt\fi} -\newcommand*{\th@OtherSecHeadStyles}{\if@thInHeading\normalsize\th@HdFnt\fi} - -% Re-define the emphasis commands to use either BOLDFACE or UNDERLINING, -% depending on the startup flags. - -\newcommand*{\EmphReset}{ - \if@emphisbold - \let\em\bfseries - \let\emph\textbf - \else - \ULforem - \fi -} - -% Makes the chapter heading label, putting it in the desired style. -% We need to define it here, since we need it before redefining the -% chapter commands. - -\newcommand*{\th@DoChapCenter}{\if@centerChapter\centering\fi} -\newcommand*{\th@ChapHead}[1]{ - \protect\th@ChapterStyle - \protect\th@DoChapCenter #1} - - -%%%%%%% DEFINE DOUBLE-SPACING (THE DEFAULT) AND OTHER SPACING: -\def\setspace@size{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi} -\def\doublespacing{ \ifcase \@ptsize \relax - \def \baselinestretch {2.004}% 10pt - \or \def \baselinestretch {1.771}% 11pt - \or \def \baselinestretch {1.660}% 12pt - \fi \setspace@size} -\def\singlespacing{\def \baselinestretch {1} \setspace@size \vskip \baselineskip} -\def\setstretch#1{\renewcommand{\baselinestretch}{#1}} -\def\@setsize#1#2#3#4{\@nomath#1 - \let\@currsize#1 \baselineskip #2 - \baselineskip \baselinestretch\baselineskip - \parskip \baselinestretch\parskip - \setbox\strutbox \hbox{ \vrule height.7\baselineskip depth.3\baselineskip - width\z@} \skip\footins \baselinestretch\skip\footins - \normalbaselineskip\baselineskip#3#4} -%%%%%%%%% floats & footnotes singlespaced %%%%%%%%% -\let\latexx@xfloat=\@xfloat -\def\@xfloat #1[#2]{\latexx@xfloat #1[#2] -\def\baselinestretch{1}\@normalsize \normalsize} -\long\def\@footnotetext#1{ - \insert\footins{ - \def\baselinestretch {1} - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{ - \csname p@footnote\endcsname\@thefnmark} - \color@begingroup \@makefntext{ - \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} - \color@endgroup}} -\long\def\@mpfootnotetext#1{ - \global\setbox\@mpfootins\vbox{ - \unvbox \@mpfootins - \def\baselinestretch {1} - \reset@font\footnotesize - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{ - \csname p@mpfootnote\endcsname\@thefnmark} - \color@begingroup \@makefntext{ - \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} - \color@endgroup}} -%%%%%%%% single / double spacing %%%%%%%%% -\def\singlespace{ \vskip \baselineskip \def\baselinestretch {1} - \setspace@size \vskip -\baselineskip } -\def\endsinglespace{\par} -\def\spacing#1{ \par \begingroup \def\baselinestretch {#1} \setspace@size } -\def\endspacing{ \par \vskip \parskip \vskip \baselineskip - \endgroup \vskip -\parskip \vskip -\baselineskip } -\def\doublespace{ \ifcase \@ptsize \relax - \spacing{2.004}% 10pt - \or \spacing{1.771}% 11pt - \or \spacing{1.660}% 12pt - \fi } -\let\enddoublespace=\endspacing - - - -%%%%% SET THE OVERALL DOCUMENT PROPERTIES, such as page numbering, -% margins... Initialize several global document properties, but do so -% *before* the beginning of the document to forces these changes. -\AtBeginDocument{ - \setlength{\topmargin}{-0.30in} - \setlength{\headheight}{0.20in} - \setlength{\headsep}{0.0in} - \setlength{\topskip}{0.40in} % first line, down from page number - \setlength{\textheight}{9.10in} % 9"-(topmargin+headsep+headheight) - \setlength{\footskip}{0pt} - \setlength{\oddsidemargin}{0.00in} - \setlength{\evensidemargin}{0.00in} - \setlength{\parindent}{0.40in} % somewhere between 0.3" and 0.5" - \setlength{\textwidth}{6.50in} - \setlength{\leftmargini}{3.5em} - \setlength{\leftmarginii}{2.2em} - \setlength{\leftmarginiii}{2.2em} - \setlength{\leftmarginiv}{2.2em} - \setlength{\leftmarginv}{2.2em} - \setlength{\leftmarginvi}{2.2em} - \setlength{\leftmargin}{\leftmargini} - \setlength{\labelsep}{.5em} - \setlength{\labelwidth}{ 1.5em} - \pagenumbering{arabic} - \pagestyle{myheadings} - \markright{} - \onecolumn - \raggedbottom - \normalsize - \normalfont - \EmphReset % bold or underlined? - \doublespacing % footnotes and floats still singlespaced - \setcounter{tocdepth}{2} - \setcounter{secnumdepth}{\value{th@SecNum}} -% Redefine the bibliography command here, just in case someone -% uses a custom *.sty file that redefines bibliography command - \let\th@OldBib\thebibliography - \let\endth@OldBib\endthebibliography - \renewenvironment*{thebibliography}[1]{ - \begin{th@OldBib}{#1} - \ULforem% set \em to underline - \begin{singlespace} - \addcontentsline{toc}{part}{\bibnameToC} - }{ - \end{singlespace} - \EmphReset% set \em back to the user-specified default. - \end{th@OldBib} - } -} - -%%%%%%%%%%% ADDITIONAL STUFF: -\setcounter{tocdepth}{2} -\newcommand*{\@normalsize}{\normalsize} -\doublespacing - -% Figures and Tables -\setcounter{topnumber}{1} -\renewcommand*{\topfraction}{.4} -\setcounter{totalnumber}{2} -\renewcommand*{\textfraction}{.5} -\renewcommand*{\floatpagefraction}{.3} -\setcounter{dbltopnumber}{1} -\renewcommand*{\dbltopfraction}{.4} -\renewcommand*{\dblfloatpagefraction}{.3} -\setlength{\abovecaptionskip}{10pt} -\setlength{\belowcaptionskip}{10pt} - -% Re-define some formatting commands to produce lists, labels, -% and numberings that are more to the Grad School's liking. - -% Set up some titles on the table of contents page. -\renewcommand*{\figurename}{Figure} -\renewcommand*{\tablename}{Table} -\newcommand*{\figurenameToC}{\normalsize\th@HdFnt\figurename\normalfont} -\newcommand*{\tablenameToC}{\normalsize\th@HdFnt\tablename\normalfont} - -\if@chapterCaps - \renewcommand*{\contentsname}{\th@ChapHead{CONTENTS}} - \renewcommand*{\listfigurename}{\th@ChapHead{FIGURES}} - \renewcommand*{\listtablename}{\th@ChapHead{TABLES}} - \renewcommand*{\appendixname}{\th@ChapHead{APPENDIX}} - \renewcommand*{\bibname}{\th@ChapHead{BIBLIOGRAPHY}} - \renewcommand*{\chaptername}{\th@ChapHead{CHAPTER}} - \newcommand*{\chapternameToC}{ - \normalsize\th@HdFnt CHAPTER\normalfont} - \newcommand*{\bibnameToC}{ - \normalsize\th@HdFnt BIBLIOGRAPHY\normalfont} - \newcommand*{\appendixnameToC}{ - \normalsize\th@HdFnt APPENDIX\normalfont} -\else - \renewcommand*{\contentsname}{\th@ChapHead{Contents}} - \renewcommand*{\listfigurename}{\th@ChapHead{Figures}} - \renewcommand*{\listtablename}{\th@ChapHead{Tables}} - \renewcommand*{\appendixname}{\th@ChapHead{Appendix}} - \renewcommand*{\bibname}{\th@ChapHead{Bibliography}} - \renewcommand*{\chaptername}{\th@ChapHead{Chapter}} - \newcommand*{\chapternameToC}{ - \normalsize\th@HdFnt Chapter\normalfont} - \newcommand*{\bibnameToC}{ - \normalsize\th@HdFnt Bibliography\normalfont} - \newcommand*{\appendixnameToC}{ - \normalsize\th@HdFnt Appendix\normalfont} -\fi - -% Adds the appropriate label to the ToC/LoF/LoT - -\addtocontents{lof}{\protect\contentsline {part} - {\protect\figurenameToC}{\protect\relax}{}} -\addtocontents{lot}{\protect\contentsline {part} - {\protect\tablenameToC}{\protect\relax}{}} -\addtocontents{toc}{\protect\contentsline {part} - {\protect\chapternameToC}{\protect\relax}{}} - -% NUMBERING STYLES, DEFAULT VALUES - -% Using macros of the form \th@Def* avoids conflicts with -% LaTeX internals which use \theDef* forms... - -\newcounter{th@SecNum} -\setcounter{th@SecNum}{3} -\if@NumberStdHeadings - \@centerSectionfalse% Force this. - \newcommand*{\th@DefTheChapter}{\arabic{chapter}} - \newcommand*{\th@DefTheSection}{\th@DefTheChapter.\arabic{section}} - \newcommand*{\th@DefTheSubsection}{\th@DefTheSection.\arabic{subsection}} -\else - \@AllHeadingsfalse% Just to be safe... - \newcommand*{\th@DefTheChapter}{\Roman{chapter}} - \newcommand*{\th@DefTheSection}{\relax} - \newcommand*{\th@DefTheSubsection}{\relax} -\fi - -\if@AllHeadings - \@inlineSubSubSectionfalse% Force this... - \@numberSubSubSectiontrue% ...and this. - \newcommand*{\th@DefTheSubsubsection} - {\th@DefTheSubsection.\arabic{subsubsection}} - \newcommand*{\th@DefTheParagraph} - {\th@DefTheSubsubsection.\arabic{paragraph}} - \newcommand*{\th@DefTheSubparagraph} - {\th@DefTheParagraph.\arabic{subparagraph}} -\else - \newcommand*{\th@DefTheParagraph}{\relax} - \newcommand*{\th@DefTheSubparagraph}{\relax} - \if@numberSubSubSection - \newcommand*{\th@DefTheSubsubsection} - {\th@DefTheSubsection.\arabic{subsubsection}} - \else - \newcommand*{\th@DefTheSubsubsection}{\relax} - \fi -\fi -\renewcommand*{\thechapter}{\th@DefTheChapter} -\renewcommand*{\thesection}{\th@DefTheSection} -\renewcommand*{\thesubsection}{\th@DefTheSubsection} -\renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} -\renewcommand*{\theparagraph}{\th@DefTheParagraph} -\renewcommand*{\thesubparagraph}{\th@DefTheSubparagraph} - -% Figure, Table, and Equation numbering. -\if@PerChptrNumbering\else - \newcounter{th@SaveFigure} - \newcounter{th@SaveTable} - \newcounter{th@SaveEquation} - \renewcommand*{\thefigure}{\arabic{figure}} - \renewcommand*{\thetable}{\arabic{table}} - \renewcommand*{\theequation}{\arabic{equation}} -\fi - -% Enumerated List labels -\renewcommand*{\theenumi}{\arabic{enumi}} -\renewcommand*{\theenumii}{\alph{enumii}} -\renewcommand*{\theenumiii}{\roman{enumiii}} -\renewcommand*{\theenumiv}{\alph{enumiv}} -\renewcommand*{\labelenumi}{(\theenumi)} -\renewcommand*{\labelenumii}{(\theenumii)} -\renewcommand*{\labelenumiii}{(\theenumiii)} -\renewcommand*{\labelenumiv}{(\theenumiii.\theenumiv)} - -% Itemized list labels. -\renewcommand*{\labelitemi}{\textbullet} -\renewcommand*{\labelitemii}{\textasteriskcentered} -\renewcommand*{\labelitemiii}{\normalfont \bfseries \textendash} -\renewcommand*{\labelitemiv}{\textperiodcentered} - -% Margins for lists -\setlength{\leftmargini}{3.5em} -\setlength{\leftmarginiii}{2.2em} -\setlength{\leftmarginiv}{2.2em} -\setlength{\leftmarginv}{2.2em} -\setlength{\leftmarginvi}{2.2em} -\setlength{\leftmargin}{\leftmargini} -\setlength{\labelwidth}{1.5em} - -% Redefine certain commands and environments from report.cls. -% This is where things get messy. We rename each command we modify, -% then redefine the command using the old version as subset. - -% VERSE, QUOTATION, and QUOTE must be single-spaced. -% These rename the internal commands for the \begin{...} and -% \end{...} environment commands. -\let\th@OldVerse\verse -\let\th@OldQuotation\quotation -\let\th@OldQuote\quote -\let\endth@OldVerse\endverse -\let\endth@OldQuotation\endquotation -\let\endth@OldQuote\endquote - -% Note - the ``\begin{singlespace}'' and ``\end{singlespace}'' -% are defined in setspace.sty. - -\renewenvironment*{verse}{\begin{th@OldVerse}\begin{singlespace}} - {\end{singlespace}\end{th@OldVerse}} - -\renewenvironment*{quotation}{\begin{th@OldQuotation} \begin{singlespace}} - {\end{singlespace}\end{th@OldQuotation}} - -\renewenvironment*{quote}{\begin{th@OldQuote} \begin{singlespace}} - {\end{singlespace} \end{th@OldQuote}} - -% Theorems and Axioms: They must NOT be italicized. To do this -% robustly, I've needed to use some in-depth TeXnology. Check out a -% good LaTeX book for info on the \@namedef and \@nameuse commands. - -\let\th@OldNewtheorem\newtheorem -% Check for the calling format: \newtheorem{}[]{} -\def\newtheorem#1{ \@ifnextchar[{\th@nuthrmOM{#1}}{\th@newtheoremTwo{#1}}%] -} -% Calling format: \newtheorem{}{}[]; checks for the optional arg at the end. -\def\th@newtheoremTwo#1#2{ - \@ifnextchar[{\th@nuthrmO{#1}{#2}}{\th@nuthrm{#1}{#2}}%] -} -% Standard call. No optional args. -\def\th@nuthrm#1#2{ - \th@OldNewtheorem{th@#1}{#2} - \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} -} -% Optional arg at end. -\def\th@nuthrmO#1#2[#3]{ - \th@OldNewtheorem{th@#1}{#2}[#3] - \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} - } -% Optional arg in the middle. -\def\th@nuthrmOM#1[#2]#3{ - \th@OldNewtheorem{th@#1}[th@#2]{#3} - \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} - } -\def\th@execThrmOpt#1[#2]{ - \@nameuse{#1}[#2] \normalsize\normalfont -} -\newcommand*{\th@correctTheorem}[4]{ - \@namedef{#1}{\@nameuse{#3}} - \@namedef{#2}{\@ifnextchar[{\th@execThrmOpt{#4}}{ %%} - \@nameuse{#4} \normalsize\normalfont} - } -} - -% APPENDIX command -\newcounter{th@SectionSave} -\let\th@OldAppCmd\appendix -\renewcommand{\appendix}{ - \setcounter{th@SectionSave}{\value{section}} - \th@OldAppCmd - \if@NumberStdHeadings\else - \setcounter{section}{\value{th@SectionSave}} - \fi - \addtocontents{toc}{\protect\contentsline {part} - {\protect\appendixnameToC}{\protect\relax}{}} - \renewcommand*{\th@DefTheChapter}{\Alph{chapter}} - } - -%%%%%%%%%%%%%%% BIBLIOGRAPHY: Used to be redefined here. -% Moved to permit use of different bibliography .sty and .bst files. -% It's now in the '\AtBeginDocument' command. - -%%%%%%%%%%%%%%% SECTION HEADINGS (including several new options): -% New if-s -\newif\if@AlwaysFalse -\@AlwaysFalsefalse -\newif\if@CenterHeading -\@CenterHeadingfalse -\newif\if@UseStarCmd -\@UseStarCmdfalse - -%%%%%%%%%%%%%%% GENERAL AND SETUP COMMANDS. -% Makes a heading. -% The optional argument (#1) is a centering flag. The heading gets -% centered if it's present and set to true. -% The second arg is the style command. -% The third arg is the heading proper. -\newcommand*{\th@MakeHeading}[2]{ - \protect #1 - \if@CenterHeading\begin{center}\typeout{centered}\fi - #2 - \if@CenterHeading\end{center}\fi - } - -% Makes a heading. -% The entire thing is something of a mess. We want all ToC entries to -% be in normal text. We also want references in normal text. But, we -% want the heading numbers to appear in the correct size and font. To -% get this to happen is a chore. - -% The args are, in order: -% The command to execute (#1), -% The heading style command (#2), -% The optional arg passed to the heading command proper (#3). -% E.g. if you execute a \section[foo]{bigfoo}, #3=="foo". -% The heading text itself (#4). -% The name of the current command (#5). E.g. "chapter". -% The internal command that generates the number label (#6). - -% There are also two important flags used by this command. The first -% is \@UseStarCmd. Set this to "true" if this is the starred version -% of the command. The second flag is \@thInHeading. This gets set -% 'true' inside the section heading commands and turned off at the end -% of the command. - -\newcommand*{\th@Heading}[6]{ - \@thInHeadingtrue - % Alter the '\the...' command. - \@namedef{the#5}{\protect#2 #6} - \if@UseStarCmd - #1*{\th@MakeHeading{\protect#2}{#4}} - \else - \ifthenelse{\equal{\th@DefArg}{#3}}{ - #1[\normalsize\normalfont#4]{ - \th@MakeHeading{\protect#2}{#4}} - }{ - #1[\normalsize\normalfont#3]{ - \th@MakeHeading{\protect#2}{#4}} - } - \fi -% Reset the '\the...' command, but don't enforce -% '\normalsize\normalfont' anywhere, as this messes up -% cross-references in footnotes. - \@namedef{the#5}{#6} - \@thInHeadingfalse - \@CenterHeadingfalse - \normalsize\normalfont -} - -%%%%%%%%%%% CHAPTER HEADING: -% The chapter command definitely needs some re-defining. The primary -% purpose is to control numbering in figures, tables, and equations. - -\let\th@OldChapter\chapter -% The \@ifstar{}{} is a LaTeX tool to check the character following -% the command and see if it's a '*'. -\renewcommand*{\chapter}{\@ifstar{\th@ChapterS}{\th@Chapter}} - -% Special if-s; used internally for chapters. -\newif\if@THshortChapter -\@THshortChapterfalse - -% We define a special command for stepping the chapter counter, -% zeroing the figure, table, and equation counters only if necessary. - -\newcommand*{\th@PreChCmd}{ - \if@PerChptrNumbering - \relax - \else - \setcounter{th@SaveTable}{\value{table}} - \setcounter{th@SaveFigure}{\value{figure}} - \setcounter{th@SaveEquation}{\value{equation}} - \fi -} - -\newcommand*{\th@PostChCmd}{ - \if@THshortChapter - \typeout{Short Chapter (page numbered)} - \@THshortChapterfalse - \thispagestyle{myheadings} - \else - \thispagestyle{empty} - \fi - \if@PerChptrNumbering - \relax - \else - \setcounter{table}{\value{th@SaveTable}} - \setcounter{figure}{\value{th@SaveFigure}} - \setcounter{equation}{\value{th@SaveEquation}} - \fi - \normalsize\normalfont - \@UseStarCmdfalse -} -\if@chapterCaps - \newcommand*{\th@Chapter}[2][\th@DefArg]{ - \th@PreChCmd - \@UseStarCmdfalse - \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} - {\uppercase\expandafter{#2}}{chapter}{\th@DefTheChapter} - \th@PostChCmd - } - \newcommand*{\th@ChapterS}[1]{ - \th@PreChCmd - \@UseStarCmdtrue - \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} - {\uppercase\expandafter{#1}}{chapter}{\th@DefTheChapter} - \th@PostChCmd - } -\else - \newcommand*{\th@Chapter}[2][\th@DefArg]{ - \th@PreChCmd - \@UseStarCmdfalse - \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} - {#2}{chapter}{\th@DefTheChapter} - \th@PostChCmd - } - \newcommand*{\th@ChapterS}[1]{ - \th@PreChCmd - \@UseStarCmdtrue - \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} - {#1}{chapter}{\th@DefTheChapter} - \th@PostChCmd - } -\fi - -%%%%%%%%% SECTION HEADING COMMANDS. We need to use the starred version -% and add the numbering and toc-entry ourselves. We need to do this -% for all of the subsequent heading commands. If we don't we'll get -% weird-looking ToC entries and references. - -\let\th@OldSection\section -\renewcommand*{\section}{\@ifstar{\th@SectionS}{\th@Section}} - -\newcommand*{\th@Section}[2][\th@DefArg]{ - \@UseStarCmdfalse - \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldSection}{\th@SectionStyle}{#1}{#2} - {section}{\th@DefTheSection} - \normalsize\normalfont -} -\newcommand*{\th@SectionS}[1]{ - \@UseStarCmdtrue - \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi - \th@Heading{\th@OldSection}{\th@SectionStyle}{\th@DefArg} - {#1}{section}{\th@DefTheSection} - \@UseStarCmdfalse - \normalsize\normalfont -} - -%%%%%%%%%% SUBSECTION HEADING COMMANDS. - -\let\th@OldSubSection\subsection -\renewcommand*{\subsection}{ - \@ifstar{\th@SubSectionS}{\th@SubSection} -} -\newcommand*{\th@SubSection}[2][\th@DefArg]{ - \@UseStarCmdfalse - \@CenterHeadingfalse - \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} - {#1}{#2}{subsection}{\th@DefTheSubsection} - \normalsize\normalfont -} -\newcommand*{\th@SubSectionS}[1]{ - \@UseStarCmdtrue - \@CenterHeadingfalse - \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} - {\th@DefArg}{#1}{subsection}{\th@DefTheSubsection} - \@UseStarCmdfalse - \normalsize\normalfont -} - -%%%%%%%%%% SUBSUBSECTION HEADING COMMANDS. No starred version permitted. -% No ToC entry. We also need to check and see if we should number -% it or not and if we should inline it or not. - -\let\th@OldSubSubSection\subsubsection -\newlength{\th@SubSubSecSpc} -\if@numberSubSubSection - \renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} - \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdfalse} - \setcounter{th@SecNum}{4} - \setlength{\th@SubSubSecSpc}{0.5em} -\else - \renewcommand*{\thesubsubsection}{\relax} - \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdtrue} - \setlength{\th@SubSubSecSpc}{0em} -\fi - -\newif\if@shutoffSSSect -\@shutoffSSSectfalse - -\if@inlineSubSubSection -\renewcommand*{\subsubsection}[2][\th@DefArg]{ - \refstepcounter{subsubsection} - \vspace{4\parsep} - \underline{% - \@thInHeadingtrue\th@OtherSecHeadStyles% - \thesubsubsection\hspace{\th@SubSubSecSpc}#2}\hspace{2mm} - \ignorespaces\normalsize\normalfont - } -\else -\renewcommand*{\subsubsection}[2][\th@DefArg]{ - \th@PreSubsubsecCmd - \@CenterHeadingfalse - \th@Heading{\th@OldSubSubSection}{\th@OtherSecHeadStyles} - {\th@DefArg}{#2}{subsubsection}{\th@DefTheSubsubsection} - \@UseStarCmdfalse\normalsize\normalfont - } -\fi - -% We don't need to do much for paragraph and subparagraph. We won't -% even define a *-version or permit entries in the ToC. -\if@AllHeadings - \let\th@OldParagraph\paragraph - \renewcommand*{\paragraph}[2][\th@DefArg]{ - \@UseStarCmdfalse - \@CenterHeadingfalse - \th@Heading{\th@OldParagraph} - {\@thInHeadingtrue\th@OtherSecHeadStyles} - {\th@DefArg}{\underline{#2}}{paragraph} - {\hspace*{\parindent}\th@DefTheParagraph} - \@UseStarCmdfalse - \@namedef{theparagraph}{\th@DefTheParagraph - \protect\normalsize\protect\normalfont} - \normalsize\normalfont - } - \let\th@OldSubParagraph\subparagraph - \renewcommand*{\subparagraph}[2][\th@DefArg]{ - \@UseStarCmdfalse - \@CenterHeadingfalse - \th@Heading{\th@OldSubParagraph} - {\@thInHeadingtrue\th@OtherSecHeadStyles} - {\th@DefArg}{\underline{#2}}{subparagraph} - {\th@DefTheSubparagraph} - \@UseStarCmdfalse - \@namedef{thesubparagraph}{\th@DefTheSubparagraph - \protect\normalsize\protect\normalfont} - \normalsize\normalfont - } - \setcounter{th@SecNum}{5} -\else - \renewcommand*{\paragraph}[2][\th@DefArg]{ - {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} - \renewcommand*{\subparagraph}[2][\th@DefArg]{ - {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} -\fi - - -%%%%%%%%%% COMMANDS CHANGED FOR THIS CLASS -%%%%%% Unavailable commands -\renewcommand*{\theindex}{\ClassWarning{thesis} - {Indexing not available in this class.}} -\renewcommand*{\twocolumn}{\ClassWarning{thesis} - {Twocolumn not available in this class.}} -\renewcommand*{\thepart}{\ClassWarning{thesis} - {``thepart'' not available in this class.}} -\renewcommand*{\part}{\ClassWarning{thesis} - {``thepart'' not available in this class.}} -%%%%%% New commands -% This forces a page number on the first page of a chapter, etc. -\newcommand*{\forcepageno}{\thispagestyle{myheadings}} -\newcommand*{\OnePageChapter}{\forcepageno} - - -%%%%%%%%%%% THESIS PROLOGUE PAGES: -% Stores the second arg in the command specified by the first arg. -\newcommand{\th@StoreIn}[2]{ \gdef#1{#2} } -% Default values of storage variables. Emits an error message. -% This part of the class is long... -\newcommand*{\th@title}{ - \ClassError{thesis}{ - You must specify a title!} - {Use the \protect\title{} command in the preamble.} -} -\newcommand*{\th@fwdname}{ - \ClassError{thesis}{ - You must specify your name!} - {Use the \protect\author{}{} command in the \MessageBreak - preamble. The first arg is your first name and \MessageBreak - middle initial. The second arg is your last name.} -} -\newcommand*{\th@revname}{ - \ClassError{thesis}{ - You must specify your name!} - {Use the \protect\author{}{} command in the \MessageBreak - preamble. The first arg is your first name and \MessageBreak - middle initial. The second arg is your last name.} -} -\newcommand*{\th@deptname}{ - \ClassError{thesis}{ - You must specify the name of the department \MessageBreak - granting your degree and what type of \MessageBreak - organization it is within the University.} - {Use the \protect\dept{}{} command in the \MessageBreak - preamble. The second arg is the name of the \MessageBreak - department. The first arg is the department's \MessageBreak - official designation, e.g. 'College of', \MessageBreak - 'Department of', 'School of', etc.} -} -\newcommand*{\th@deptorg}{ - \ClassError{thesis}{ - You must specify the name of the department \MessageBreak - granting your degree and what type of \MessageBreak - organization it is within the University.} - {Use the \protect\dept{}{} command in the \MessageBreak - preamble. The second arg is the name of the \MessageBreak - department. The first arg is the department's \MessageBreak - official designation, e.g. 'College of', \MessageBreak - 'Department of', 'School of', etc.} -} -\newcommand*{\th@advisor}{ - \ClassError{thesis}{ - You must specify your research advisor's name \MessageBreak - and full title.} - {Use the \protect\advisor{}{} command in the \MessageBreak - preamble. The first arg is your advisor's \MessageBreak - full title. The second arg is your advisor's \MessageBreak - name.} -} -\newcommand*{\th@advisortitle}{ - \ClassError{thesis}{ - You must specify your research advisor's name \MessageBreak - and full title.} - {Use the \protect\advisor{}{} command in the \MessageBreak - preamble. The first arg is your advisor's \MessageBreak - full title. The second arg is your advisor's \MessageBreak - name.} -} -\newcommand*{\th@reader}{ - \ClassError{thesis}{ - You must specify the name of the other \MessageBreak - committee member who will be signing your \MessageBreak - thesis.} - {Use the \protect\reader{} command in the preamble.} -} -\newcommand*{\th@readerThree}{none} % optional -\newcommand*{\th@readerFour}{none} % optional -\newcommand*{\th@readerFive}{none} % optional -\newcommand*{\th@readerSix}{none} % optional -\newcommand*{\th@IRBprotocol}{none} % optional -\newcommand*{\th@fulldegree}{ - \ClassError{thesis}{ - You must specify the type of degree you are \MessageBreak - receiving.} - {Use the \protect\degree{}{} command in the \MessageBreak - preamble. The first arg is the unabbreviated \MessageBreak - name of the degree itself, e.g. \MessageBreak - 'Doctor of Philosophy'. The second arg is the \MessageBreak - degree abbreviation followed by the subject, e.g.\MessageBreak - 'Ph. D., Biology'.} -} -\newcommand*{\th@degree}{ - \ClassError{thesis}{ - You must specify the type of degree you are \MessageBreak - receiving.} - {Use the \protect\degree{}{} command in the \MessageBreak - preamble. The first arg is the unabbreviated \MessageBreak - name of the degree itself, e.g. \MessageBreak - 'Doctor of Philosophy'. The second arg is the \MessageBreak - degree abbreviation followed by the subject, \MessageBreak - e.g. 'Ph. D., Biology'.} -} -\newcommand{\th@otherdegrees}{ - \ClassError{thesis}{ - You must specify other degrees you hold!} - {Use the \protect\otherdegrees{} command in the \MessageBreak - preamble. Break each line using the \protect\\ \MessageBreak - command.} -} -\newcommand{\th@abstractStash}{ - \ClassError{thesis}{ - You must specify an abstract!} - {Use the \protect\abstractpage[]{} command in the \MessageBreak - preamble. If your abstract runs over a page, \MessageBreak - use the optional argument with the word 'long'.} -} -\newcommand*{\th@degreeyear}{\number\the\year} -\newcommand*{\th@signature}[1]{ \begin{center} - \normalsize - \vspace*{16mm} % works well? - \vrule width 80mm height 0.2mm\\ - #1 \end{center} -} -\newcommand*{\th@dateline}{ - \vspace*{9mm} - \begin{flushright} - Date~{\vrule width 35mm height 0.2mm} - \end{flushright} -} -\newcommand{\th@AbstractPageStyle}{\relax} -\newcommand{\th@dedicationStash}{\relax} -\newcommand{\th@dedicationTitleStash}{\relax} -\newcommand{\th@acknowledgementsStash}{\relax} -\newif\if@shortLoA -\newif\if@shortLoL -\newif\if@shortLoF -\newif\if@shortLoT -\newif\if@shortToC -\newif\if@makenoLoF -\newif\if@makenoLoT -\newif\if@makenoLoL -\newif\if@makenoLoA -\newif\if@makeDedication -\newif\if@makeAcknowledgements -\newif\if@makePrologue -\@shortLoAfalse -\@shortLoLfalse -\@shortLoFfalse -\@shortLoTfalse -\@shortToCfalse -\@makenoLoFfalse -\@makenoLoTfalse -\@makenoLoLfalse -\@makeDedicationfalse -\@makeAcknowledgementsfalse -\@makeProloguetrue - -% The base commands that make all of the prologue pages. -\newcommand*{\th@Titlepage}{ - \thispagestyle{empty} - \@thInHeadingtrue - \null\vfill - \begin{list}{}{\setlength{\leftmargin}{0.8in} - \setlength{\rightmargin}{0.8in}\sloppy} - \centering\item[] - {\th@ChapterStyle - \if@chapterCaps - \uppercase\expandafter{\th@title}\\ - \else - \th@title\\ - \fi} - by\\ - {\th@OtherSecHeadStyles - \if@chapterCaps - \uppercase\expandafter{\th@fwdname}\\ - \else - \th@fwdname\\ - \fi} - \th@otherdegrees\\ - \end{list} - \vfill - \begin{center} - A prospectus submitted to\\ - \th@advisortitle\ \th@advisor \\ - \th@reader\\ % REQUIRED - \ifthenelse{\equal{\th@readerThree}{none}}{\relax} - {\th@readerThree\\} % optional - \ifthenelse{\equal{\th@readerFour}{none}}{\relax} - {\th@readerFour\\} % optional - \ifthenelse{\equal{\th@readerFive}{none}}{\relax} - {\th@readerFive\\} % optional - in partial fulfillment of the requirements for the degree of\\ - \th@fulldegree\\ - \th@deptorg\ \th@deptname\\ - \ \th@degreeyear \\ - \end{center} - \@thInHeadingfalse - \vfill -} -\newcommand{\th@Abstractpage}{ - \clearpage - \th@AbstractPageStyle - \doublespacing % 1998 revision of Grad School Specs - \par - \vspace*{4\parsep} - \begin{center} - \textbf{\th@ChapHead{Abstract}} - \end{center} - \th@abstractStash % finally, the actual abstract -} -\newcommand{\th@Dedicationpage}{ - \if@makeDedication - \clearpage - \thispagestyle{empty} - \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} - }{\vfill}{\chapter*{\th@dedicationTitleStash}} - \th@dedicationStash - \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} - }{\vfill}{\relax} - \fi -} -\newcommand{\th@Acknowledgementpage}{ - \if@makeAcknowledgements - \clearpage - \chapter*{Acknowledgements} - {\doublespacing - \th@acknowledgementsStash} - \fi -} - -\newcommand{\th@ToCpage}{ - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} - \@THshortChapterfalse - \if@shortToC - \@THshortChaptertrue - \typeout{Making Short ToC...} - \fi - \@thInHeadingfalse - {\doublespacing - \tableofcontents} - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} -} - -\newcommand{\th@LoTpage}{ - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} - \glsunsetall - \@THshortChapterfalse - \if@makenoLoT - \typeout{Skipping LoT...} - \else - \if@shortLoT - \@THshortChaptertrue - \typeout{Making Short LoT...} - \fi - {\doublespacing - \listoftables} - \fi - \glsresetall - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} -} - -\newcommand{\th@LoFpage}{ - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} - \glsunsetall - \@THshortChapterfalse - \if@makenoLoF - \typeout{Skipping LoF...} - \else - \if@shortLoF - \@THshortChaptertrue - \typeout{Making Short LoF...} - \fi - {\doublespacing - \listoffigures} - \fi - \glsresetall - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} -} - -\newcommand{\th@LoLpage}{ - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} - \@THshortChapterfalse - \if@makenoLoL - \typeout{Skipping LoL...} - \else - \if@shortLoL - \@THshortChaptertrue - \typeout{Making Short LoL...} - \fi - {\doublespacing - \lstlistoflistings} - \fi - % Hyperlink color of glossary links - \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} -} - -\newcommand{\th@LoApage}{ - \@THshortChapterfalse - \if@makenoLoA - \typeout{Skipping LoA...} - \else - \if@shortLoA - \@THshortChaptertrue - \typeout{Making Short LoA...} - \fi - {\singlespacing - % list of acronyms - \printglossary[type=\acronymtype,style=long,nonumberlist]} - \fi -} - - - -% This performs the actual generation of the prologue -\newcounter{th@storepage} -\newcommand{\th@MakeThesisPrologue}{ - \if@makePrologue - \pagenumbering{roman} - \typeout{Making Title Page} - \th@Titlepage - % Note: Approval Page is no longer required. - % \typeout{Making Approval Page} - % \th@Approvalpage - \typeout{Making Abstract Page} - \th@Abstractpage - \typeout{Making Dedication Page} - \th@Dedicationpage - \typeout{Making Acknowledgement Page} - \th@Acknowledgementpage - \setcounter{th@storepage}{\value{page}} - \typeout{Making ToC Page} - \th@ToCpage - \typeout{Making LoT Page} - \th@LoTpage - \typeout{Making LoF Page} - \th@LoFpage - \typeout{Making LoL Page} - \th@LoLpage - \typeout{Making LoA Page} - \th@LoApage - \fi -} - - -% Make the generator-command the very first command of the document. -\let\th@OldBeginDocument\document -\renewcommand*{\document}{ - \th@OldBeginDocument - \th@MakeThesisPrologue - \typeout{} - \typeout{} - \typeout{-------------------Beginning Body----------------------} - \typeout{} - \typeout{} - \doublespacing - \clearpage - \pagenumbering{arabic} - \@THshortChapterfalse -} - -%%%%%%%%% USER COMMANDS FOR CONTROLLING THE PROLOGUE: -\renewcommand*{\title}[1]{\th@StoreIn{\th@title}{#1}} -\newcommand*{\reader}[1]{\th@StoreIn{\th@reader}{#1}} -\newcommand*{\readerThree}[1]{\th@StoreIn{\th@readerThree}{#1}} -\newcommand*{\readerFour}[1]{\th@StoreIn{\th@readerFour}{#1}} -\newcommand*{\readerFive}[1]{\th@StoreIn{\th@readerFive}{#1}} -\newcommand*{\readerSix}[1]{\th@StoreIn{\th@readerSix}{#1}} -\newcommand*{\IRBprotocol}[1]{\th@StoreIn{\th@IRBprotocol}{#1}} -\newcommand*{\degreeyear}[1]{\th@StoreIn{\th@degreeyear}{#1}} -\newcommand{\otherdegrees}[1]{\th@StoreIn{\th@otherdegrees}{#1}} -\newcommand{\acknowledgements}[1]{ - \@makeAcknowledgementstrue - \th@StoreIn{\th@acknowledgementsStash}{#1} -} -\newcommand{\dedication}[2][\th@DefArg]{ - \@makeDedicationtrue - \th@StoreIn{\th@dedicationTitleStash}{#1} - \th@StoreIn{\th@dedicationStash}{#2} -} -\renewcommand*{\author}[2]{ - \th@StoreIn{\th@fwdname}{#1 #2} - \th@StoreIn{\th@revname}{#2, #1} -} -\newcommand*{\degree}[2]{ - \th@StoreIn{\th@fulldegree}{#1} - \th@StoreIn{\th@degree}{#2} -} -\newcommand*{\advisor}[2]{ - \th@StoreIn{\th@advisor}{#2} - \th@StoreIn{\th@advisortitle}{#1} -} -\newcommand*{\dept}[2]{ - \th@StoreIn{\th@deptorg}{#1} - \th@StoreIn{\th@deptname}{#2} -} -\renewcommand{\abstract}[2][long]{ - \ifthenelse{\equal{#1}{short}}{\relax}{ - \th@StoreIn{\th@AbstractPageStyle}{\thispagestyle{empty}} - } - \th@StoreIn{\th@abstractStash}{#2} -} -\newcommand*{\SuspendPrologue}{ - \@makeProloguefalse - \typeout{No prologue pages printed.} -} -\newcommand*{\emptyLoF}{ - \@makenoLoFtrue - \typeout{No LoF printed} -} -\newcommand*{\emptyLoT}{ - \@makenoLoTtrue - \typeout{No LoT printed} -} -\newcommand*{\emptyLoL}{ - \@makenoLoLtrue - \typeout{No LoL printed} -} -\newcommand*{\emptyLoA}{ - \@makenoLoAtrue - \typeout{No LoA printed} -} -\newcommand*{\ToCisShort}{ - \@shortToCtrue - \typeout{Putting page number on short ToC} -} -\newcommand*{\LoFisShort}{ - \@shortLoFtrue - \typeout{Putting page number on short LoF} -} -\newcommand*{\LoTisShort}{ - \@shortLoTtrue - \typeout{Putting page number on short LoT} -} -\newcommand*{\LoLisShort}{ - \@shortLoLtrue - \typeout{Putting page number on short LoL} -} -\newcommand*{\LoAisShort}{ - \@shortLoAtrue - \typeout{Putting page number on short LoA} -} - -\endinput -%%%%%%%%%%%%%%%% End of file ``thesis.cls'' +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% thesis.cls - LaTeX2e class for CU Theses. +%% To conform to the University of Colorado at Boulder +%% Graduate School SPECIFICATIONS (April 2010) for +%% Preparation of Master's Thesis and Doctoral Dissertations +%% Version 1.00 written by John P. Weiss, 1997 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% version 1.16, Nicholas Long, October 2023 -- Merged in the +%% latest updates from CU's hosted version of this class. +%% This version is nearly identical as prospectus.cls, but +%% now includes the PhD fulfillment text. +%% version 1.15, Nicholas Long, May 2022 -- Added listings and +%% acronyms to table of contents. Added fourth and +%% fifth readers. This version also updated the cover +%% to focus to be a prospectus. +%% version 1.14, Ken Anderson, August 2020 -- removed signature +%% page; instead list committee members on title page. +%% Changes made to comply with new Graduate School +%% guidelines. +%% version 1.13, Hongcheng Ni, March 2014 -- made compatible with +%% hyperref. +%% version 1.12, Hongcheng Ni, March 2014 -- added title before +%% the advisor's name in the signature page. +%% version 1.11, Bruce Fast, April 2008 -- changed left margin +%% from 1.75" to 1", and added \IRBprotocol option +%% version 1.10, E. Joshua Rigler, January 2003 -- making it safe +%% for folks who inadvertently load setspace.sty, changed +%% \latex@xfloat to \latexx@xfloat +%% version 1.09, BF, November 2000 -- conforms to revised specs +%% no significant changes required +%% version 1.08, Steven V Penton, September 1999 -- added +%% \readerFive; moved list of tables in front of figures +%% version 1.07, BF, January 1999 -- fixed \LoFisShort etc. +%% version 1.06, BF, November 1998 -- fixed level 4 headers; +%% SubSubSections, inline4 & nonum4. Eliminated +%% unwanted space before chapter/section numbers. +%% version 1.05, BF, August 1998 -- Footnotes and floats +%% (captions) now singlespaced, fixing an omission +%% in v1.04. Fixed value of \belowcaptionskip, +%% for table captions. +%% version 1.04, BF, July 1998, Adjusted doublespacing +%% (no longer uses setspace.sty) and margin values. +%% version 1.03, May 1998, Bruce Fast -- Added optional +%% \readerThree{}, \readerFour{}; LoF/LoT debugging; +%% doublespaced abstract +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{thesis}[2023/10/16] % version 1.16 + +\typeout{} +\typeout{--------------------------------------------------------------} +\typeout{ +---+ Thesis Style (thesis.cls) version 1.14} +\typeout{ +---+ for University of Colorado Ph.D. theses/dissertations.} +\typeout{ * Conforms to the University of Colorado at Boulder Graduate} +\typeout{ * School "SPECIFICATIONS for Preparation of Master's Thesis} +\typeout{ * and Doctoral Dissertations" (rev. October 2023).} +\typeout{--------------------------------------------------------------} +\typeout{ URL: http://www.colorado.edu/oit/software-hardware/tex-latex} +\typeout{} + +% Certain options are not handled here but are passed on to report.cls +% by \PassOptionToClass. + +\DeclareOption{fleqn}{ \PassOptionsToClass{fleqn}{report} } +\DeclareOption{leqno}{ \PassOptionsToClass{leqno}{report} } +\DeclareOption{openbib}{ \PassOptionsToClass{openbib}{report} } +\DeclareOption{draft}{ \PassOptionsToClass{draft}{report} } +\DeclareOption{final}{ \PassOptionsToClass{final}{report} } +\DeclareOption{openright}{ \PassOptionsToClass{openright}{report} } +\DeclareOption{openany}{ \PassOptionsToClass{openany}{report} } +\DeclareOption{10pt}{ \PassOptionsToClass{10pt}{report} } +\DeclareOption{11pt}{ \PassOptionsToClass{11pt}{report} } +\DeclareOption{12pt}{ \PassOptionsToClass{12pt}{report} } + +% Invalid options - normally used in report.cls and others, but not here: + +\DeclareOption{titlepage} + {\ClassWarning{thesis}{Title page always generated. Option ignored.}} +\DeclareOption{notitlepage} + {\ClassWarning{thesis}{Option 'notitlepage' not available for thesis.}} +\DeclareOption{twoside} + {\ClassWarning{thesis}{Option 'twoside' not available for thesis.}} +\DeclareOption{twocolumn} + {\ClassWarning{thesis}{Option 'twocolumn' not available for thesis.}} +\DeclareOption{landscape} + {\ClassWarning{thesis}{Option 'landscape' not available for thesis.}} +\DeclareOption{legalpaper} + {\ClassWarning{thesis}{Option 'legalpaper' not available for thesis.}} +\DeclareOption{a4paper} + {\ClassWarning{thesis}{Option 'a4paper' not available for this class.}} +\DeclareOption{a5paper} + {\ClassWarning{thesis}{Option 'a5paper' not available for this class.}} +\DeclareOption{executivepaper} + {\ClassWarning{thesis}{Option 'executivepaper' not available.}} +\DeclareOption{b5paper} + {\ClassWarning{thesis}{Option 'b5paper' not available for this class.}} +\DeclareOption{letterpaper} + {\ClassWarning{thesis}{Option 'letterpaper' superfluous. Ignored.}} +\DeclareOption{onecolumn} + {\ClassWarning{thesis}{Option 'onecolumn' superfluous. Ignored.}} +\DeclareOption{oneside} + {\ClassWarning{thesis}{Option 'oneside' superfluous. Ignored.}} + +%%%%%%%%%%% CUSTOM OPTIONS: +% Options for no decimal numbering, or decimal number nested over 3 deep: +\newif\if@AllHeadings +\newif\if@NumberStdHeadings +\newif\if@PerChptrNumbering +\newif\if@emphisbold +\newif\if@boldhead +\newif\if@fixedHeadSz +\newif\if@headSizeTwelvePt +\newif\if@ChapterDefault +\newif\if@SectionDefault +\newif\if@SubSectionDefault +\newif\if@OtherHeadingDefault +\newif\if@centerChapter +\newif\if@centerSection +\newif\if@inlineSubSubSection +\newif\if@numberSubSubSection +\newif\if@chapterCaps +\@AllHeadingsfalse +\@NumberStdHeadingstrue +\@PerChptrNumberingtrue +\@emphisboldtrue +\@boldheadtrue +\@fixedHeadSzfalse +\@centerChaptertrue +\@centerSectionfalse +\@inlineSubSubSectionfalse +\@numberSubSubSectiontrue +\@chapterCapsfalse +\@headSizeTwelvePttrue +\DeclareOption{consecutivenumbering}{ \@PerChptrNumberingfalse } +\DeclareOption{inlineh4}{ \@inlineSubSubSectiontrue } +\DeclareOption{nonumh4}{ \@numberSubSubSectionfalse } +\DeclareOption{centerh1}{ \@centerSectiontrue } +\DeclareOption{chapleft}{ \@centerSectiontrue } +\DeclareOption{chapup}{ \@chapterCapstrue } +\DeclareOption{emph2underline}{ \@emphisboldfalse } +\DeclareOption{plainhead}{ \@boldheadfalse } +\DeclareOption{fixedheadsize}{ \@fixedHeadSztrue } +\DeclareOption{varheadsize}{\@headSizeTwelvePtfalse}% Hidden option. Don't use. +\DeclareOption{numberchapteronly}{ + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse } +\DeclareOption{allheadings}{ + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingstrue + \@centerChaptertrue\@centerSectionfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue} +\DeclareOption{typewriterstyle}{ \@emphisboldfalse + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue\@chapterCapstrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadfalse\@fixedHeadSztrue} +\DeclareOption{modernstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadtrue\@fixedHeadSzfalse} +\DeclareOption{defaultstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue + \@boldheadtrue\@fixedHeadSzfalse} + +% Now we load the report class with certain options by default. It +% will process any other options specified. Then, we process the +% options for this class file. Lastly, we load in the font option +% file for the given font size. + +\ProcessOptions +\LoadClass[letterpaper,oneside,onecolumn]{report}[1996/10/31] + +% Other required LaTeX2e packages: if your computer doesn't already +% have these, you can copy them to your own directory (URL above): + +\RequirePackage{indentfirst} % indentfirst.sty, 1995/11/23 +\RequirePackage{ifthen} % ifthen.sty, 1996/08/02 +\RequirePackage[ULforem,normalbf]{ulem} % ulem.sty, 1995/12/17 + + +%%%%%% SPECIAL INTERNAL COMMANDS. Needed by later routines. + +% Create a command to be used for default arguments. +\newcommand*{\th@DefArg}{aWfdRvV11f66GL00K5} + +% Now create a command to check for the default argument, and call the +% command [in the first arg] appropriately. Used for section heading +% commands. + +\newcommand{\th@ExecChkOptArg}[3]{ +\ifthenelse{\equal{\th@DefArg}{#2}}{ + #1{#3} + }{ + #1[#2]{#3}} +} + +% Controls the heading styles. You can change the size to suit your needs. + +\if@fixedHeadSz + \newcommand*{\th@ChSz}{\normalsize} + \newcommand*{\th@ScSz}{\normalsize} +\else\if@headSizeTwelvePt + \newcommand*{\th@ChSz}{\normalsize\fontsize{12}{12}\selectfont} + \newcommand*{\th@ScSz}{\normalsize\fontsize{12}{12}\selectfont} +\else + \newcommand*{\th@ChSz}{\normalsize\Large} + \newcommand*{\th@ScSz}{\normalsize\large} +\fi\fi + +\if@boldhead + \newcommand*{\th@HdFnt}{\normalfont\bfseries} +\else + \newcommand*{\th@HdFnt}{\normalfont} +\fi + +% The style commands proper. Controlled by a flag. + +\newif\if@thInHeading +\@thInHeadingfalse +\newcommand*{\th@ChapterStyle}{\if@thInHeading\th@HdFnt\th@ChSz\fi} +\newcommand*{\th@SectionStyle}{\if@thInHeading\th@HdFnt\th@ScSz\fi} +\newcommand*{\th@SubSectionStyle}{\if@thInHeading\normalsize\th@HdFnt\fi} +\newcommand*{\th@OtherSecHeadStyles}{\if@thInHeading\normalsize\th@HdFnt\fi} + +% Re-define the emphasis commands to use either BOLDFACE or UNDERLINING, +% depending on the startup flags. + +\newcommand*{\EmphReset}{ + \if@emphisbold + \let\em\bfseries + \let\emph\textbf + \else + \ULforem + \fi +} + +% Makes the chapter heading label, putting it in the desired style. +% We need to define it here, since we need it before redefining the +% chapter commands. + +\newcommand*{\th@DoChapCenter}{\if@centerChapter\centering\fi} +\newcommand*{\th@ChapHead}[1]{ + \protect\th@ChapterStyle + \protect\th@DoChapCenter #1} + + +%%%%%%% DEFINE DOUBLE-SPACING (THE DEFAULT) AND OTHER SPACING: +\def\setspace@size{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi} +\def\doublespacing{ \ifcase \@ptsize \relax + \def \baselinestretch {2.004}% 10pt + \or \def \baselinestretch {1.771}% 11pt + \or \def \baselinestretch {1.660}% 12pt + \fi \setspace@size} +\def\singlespacing{\def \baselinestretch {1} \setspace@size \vskip \baselineskip} +\def\setstretch#1{\renewcommand{\baselinestretch}{#1}} +\def\@setsize#1#2#3#4{\@nomath#1 + \let\@currsize#1 \baselineskip #2 + \baselineskip \baselinestretch\baselineskip + \parskip \baselinestretch\parskip + \setbox\strutbox \hbox{ \vrule height.7\baselineskip depth.3\baselineskip + width\z@} \skip\footins \baselinestretch\skip\footins + \normalbaselineskip\baselineskip#3#4} +%%%%%%%%% floats & footnotes singlespaced %%%%%%%%% +\let\latexx@xfloat=\@xfloat +\def\@xfloat #1[#2]{\latexx@xfloat #1[#2] +\def\baselinestretch{1}\@normalsize \normalsize} +\long\def\@footnotetext#1{ + \insert\footins{ + \def\baselinestretch {1} + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@footnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +\long\def\@mpfootnotetext#1{ + \global\setbox\@mpfootins\vbox{ + \unvbox \@mpfootins + \def\baselinestretch {1} + \reset@font\footnotesize + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@mpfootnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +%%%%%%%% single / double spacing %%%%%%%%% +\def\singlespace{ \vskip \baselineskip \def\baselinestretch {1} + \setspace@size \vskip -\baselineskip } +\def\endsinglespace{\par} +\def\spacing#1{ \par \begingroup \def\baselinestretch {#1} \setspace@size } +\def\endspacing{ \par \vskip \parskip \vskip \baselineskip + \endgroup \vskip -\parskip \vskip -\baselineskip } +\def\doublespace{ \ifcase \@ptsize \relax + \spacing{2.004}% 10pt + \or \spacing{1.771}% 11pt + \or \spacing{1.660}% 12pt + \fi } +\let\enddoublespace=\endspacing + + + +%%%%% SET THE OVERALL DOCUMENT PROPERTIES, such as page numbering, +% margins... Initialize several global document properties, but do so +% *before* the beginning of the document to forces these changes. +\AtBeginDocument{ + \setlength{\topmargin}{-0.30in} + \setlength{\headheight}{0.20in} + \setlength{\headsep}{0.0in} + \setlength{\topskip}{0.40in} % first line, down from page number + \setlength{\textheight}{9.10in} % 9"-(topmargin+headsep+headheight) + \setlength{\footskip}{0pt} + \setlength{\oddsidemargin}{0.00in} + \setlength{\evensidemargin}{0.00in} + \setlength{\parindent}{0.40in} % somewhere between 0.3" and 0.5" + \setlength{\textwidth}{6.50in} + \setlength{\leftmargini}{3.5em} + \setlength{\leftmarginii}{2.2em} + \setlength{\leftmarginiii}{2.2em} + \setlength{\leftmarginiv}{2.2em} + \setlength{\leftmarginv}{2.2em} + \setlength{\leftmarginvi}{2.2em} + \setlength{\leftmargin}{\leftmargini} + \setlength{\labelsep}{.5em} + \setlength{\labelwidth}{ 1.5em} + \pagenumbering{arabic} + \pagestyle{myheadings} + \markright{} + \onecolumn + \raggedbottom + \normalsize + \normalfont + \EmphReset % bold or underlined? + \doublespacing % footnotes and floats still singlespaced + \setcounter{tocdepth}{2} + \setcounter{secnumdepth}{\value{th@SecNum}} +% Redefine the bibliography command here, just in case someone +% uses a custom *.sty file that redefines bibliography command + \let\th@OldBib\thebibliography + \let\endth@OldBib\endthebibliography + \renewenvironment*{thebibliography}[1]{ + \begin{th@OldBib}{#1} + \ULforem% set \em to underline + \begin{singlespace} + \addcontentsline{toc}{part}{\bibnameToC} + }{ + \end{singlespace} + \EmphReset% set \em back to the user-specified default. + \end{th@OldBib} + } +} + +%%%%%%%%%%% ADDITIONAL STUFF: +\setcounter{tocdepth}{2} +\newcommand*{\@normalsize}{\normalsize} +\doublespacing + +% Figures and Tables +\setcounter{topnumber}{1} +\renewcommand*{\topfraction}{.4} +\setcounter{totalnumber}{2} +\renewcommand*{\textfraction}{.5} +\renewcommand*{\floatpagefraction}{.3} +\setcounter{dbltopnumber}{1} +\renewcommand*{\dbltopfraction}{.4} +\renewcommand*{\dblfloatpagefraction}{.3} +\setlength{\abovecaptionskip}{10pt} +\setlength{\belowcaptionskip}{10pt} + +% Re-define some formatting commands to produce lists, labels, +% and numberings that are more to the Grad School's liking. + +% Set up some titles on the table of contents page. +\renewcommand*{\figurename}{Figure} +\renewcommand*{\tablename}{Table} +\newcommand*{\figurenameToC}{\normalsize\th@HdFnt\figurename\normalfont} +\newcommand*{\tablenameToC}{\normalsize\th@HdFnt\tablename\normalfont} + +\if@chapterCaps + \renewcommand*{\contentsname}{\th@ChapHead{CONTENTS}} + \renewcommand*{\listfigurename}{\th@ChapHead{FIGURES}} + \renewcommand*{\listtablename}{\th@ChapHead{TABLES}} + \renewcommand*{\appendixname}{\th@ChapHead{APPENDIX}} + \renewcommand*{\bibname}{\th@ChapHead{BIBLIOGRAPHY}} + \renewcommand*{\chaptername}{\th@ChapHead{CHAPTER}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt CHAPTER\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt BIBLIOGRAPHY\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt APPENDIX\normalfont} +\else + \renewcommand*{\contentsname}{\th@ChapHead{Contents}} + \renewcommand*{\listfigurename}{\th@ChapHead{Figures}} + \renewcommand*{\listtablename}{\th@ChapHead{Tables}} + \renewcommand*{\appendixname}{\th@ChapHead{Appendix}} + \renewcommand*{\bibname}{\th@ChapHead{Bibliography}} + \renewcommand*{\chaptername}{\th@ChapHead{Chapter}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt Chapter\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt Bibliography\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt Appendix\normalfont} +\fi + +% Adds the appropriate label to the ToC/LoF/LoT + +\addtocontents{lof}{\protect\contentsline {part} + {\protect\figurenameToC}{\protect\relax}{}} +\addtocontents{lot}{\protect\contentsline {part} + {\protect\tablenameToC}{\protect\relax}{}} +\addtocontents{toc}{\protect\contentsline {part} + {\protect\chapternameToC}{\protect\relax}{}} + +% NUMBERING STYLES, DEFAULT VALUES + +% Using macros of the form \th@Def* avoids conflicts with +% LaTeX internals which use \theDef* forms... + +\newcounter{th@SecNum} +\setcounter{th@SecNum}{3} +\if@NumberStdHeadings + \@centerSectionfalse% Force this. + \newcommand*{\th@DefTheChapter}{\arabic{chapter}} + \newcommand*{\th@DefTheSection}{\th@DefTheChapter.\arabic{section}} + \newcommand*{\th@DefTheSubsection}{\th@DefTheSection.\arabic{subsection}} +\else + \@AllHeadingsfalse% Just to be safe... + \newcommand*{\th@DefTheChapter}{\Roman{chapter}} + \newcommand*{\th@DefTheSection}{\relax} + \newcommand*{\th@DefTheSubsection}{\relax} +\fi + +\if@AllHeadings + \@inlineSubSubSectionfalse% Force this... + \@numberSubSubSectiontrue% ...and this. + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \newcommand*{\th@DefTheParagraph} + {\th@DefTheSubsubsection.\arabic{paragraph}} + \newcommand*{\th@DefTheSubparagraph} + {\th@DefTheParagraph.\arabic{subparagraph}} +\else + \newcommand*{\th@DefTheParagraph}{\relax} + \newcommand*{\th@DefTheSubparagraph}{\relax} + \if@numberSubSubSection + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \else + \newcommand*{\th@DefTheSubsubsection}{\relax} + \fi +\fi +\renewcommand*{\thechapter}{\th@DefTheChapter} +\renewcommand*{\thesection}{\th@DefTheSection} +\renewcommand*{\thesubsection}{\th@DefTheSubsection} +\renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} +\renewcommand*{\theparagraph}{\th@DefTheParagraph} +\renewcommand*{\thesubparagraph}{\th@DefTheSubparagraph} + +% Figure, Table, and Equation numbering. +\if@PerChptrNumbering\else + \newcounter{th@SaveFigure} + \newcounter{th@SaveTable} + \newcounter{th@SaveEquation} + \renewcommand*{\thefigure}{\arabic{figure}} + \renewcommand*{\thetable}{\arabic{table}} + \renewcommand*{\theequation}{\arabic{equation}} +\fi + +% Enumerated List labels +\renewcommand*{\theenumi}{\arabic{enumi}} +\renewcommand*{\theenumii}{\alph{enumii}} +\renewcommand*{\theenumiii}{\roman{enumiii}} +\renewcommand*{\theenumiv}{\alph{enumiv}} +\renewcommand*{\labelenumi}{(\theenumi)} +\renewcommand*{\labelenumii}{(\theenumii)} +\renewcommand*{\labelenumiii}{(\theenumiii)} +\renewcommand*{\labelenumiv}{(\theenumiii.\theenumiv)} + +% Itemized list labels. +\renewcommand*{\labelitemi}{\textbullet} +\renewcommand*{\labelitemii}{\textasteriskcentered} +\renewcommand*{\labelitemiii}{\normalfont \bfseries \textendash} +\renewcommand*{\labelitemiv}{\textperiodcentered} + +% Margins for lists +\setlength{\leftmargini}{3.5em} +\setlength{\leftmarginiii}{2.2em} +\setlength{\leftmarginiv}{2.2em} +\setlength{\leftmarginv}{2.2em} +\setlength{\leftmarginvi}{2.2em} +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelwidth}{1.5em} + +% Redefine certain commands and environments from report.cls. +% This is where things get messy. We rename each command we modify, +% then redefine the command using the old version as subset. + +% VERSE, QUOTATION, and QUOTE must be single-spaced. +% These rename the internal commands for the \begin{...} and +% \end{...} environment commands. +\let\th@OldVerse\verse +\let\th@OldQuotation\quotation +\let\th@OldQuote\quote +\let\endth@OldVerse\endverse +\let\endth@OldQuotation\endquotation +\let\endth@OldQuote\endquote + +% Note - the ``\begin{singlespace}'' and ``\end{singlespace}'' +% are defined in setspace.sty. + +\renewenvironment*{verse}{\begin{th@OldVerse}\begin{singlespace}} + {\end{singlespace}\end{th@OldVerse}} + +\renewenvironment*{quotation}{\begin{th@OldQuotation} \begin{singlespace}} + {\end{singlespace}\end{th@OldQuotation}} + +\renewenvironment*{quote}{\begin{th@OldQuote} \begin{singlespace}} + {\end{singlespace} \end{th@OldQuote}} + +% Theorems and Axioms: They must NOT be italicized. To do this +% robustly, I've needed to use some in-depth TeXnology. Check out a +% good LaTeX book for info on the \@namedef and \@nameuse commands. + +\let\th@OldNewtheorem\newtheorem +% Check for the calling format: \newtheorem{}[]{} +\def\newtheorem#1{ \@ifnextchar[{\th@nuthrmOM{#1}}{\th@newtheoremTwo{#1}}%] +} +% Calling format: \newtheorem{}{}[]; checks for the optional arg at the end. +\def\th@newtheoremTwo#1#2{ + \@ifnextchar[{\th@nuthrmO{#1}{#2}}{\th@nuthrm{#1}{#2}}%] +} +% Standard call. No optional args. +\def\th@nuthrm#1#2{ + \th@OldNewtheorem{th@#1}{#2} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} +} +% Optional arg at end. +\def\th@nuthrmO#1#2[#3]{ + \th@OldNewtheorem{th@#1}{#2}[#3] + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +% Optional arg in the middle. +\def\th@nuthrmOM#1[#2]#3{ + \th@OldNewtheorem{th@#1}[th@#2]{#3} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +\def\th@execThrmOpt#1[#2]{ + \@nameuse{#1}[#2] \normalsize\normalfont +} +\newcommand*{\th@correctTheorem}[4]{ + \@namedef{#1}{\@nameuse{#3}} + \@namedef{#2}{\@ifnextchar[{\th@execThrmOpt{#4}}{ %%} + \@nameuse{#4} \normalsize\normalfont} + } +} + +% APPENDIX command +\newcounter{th@SectionSave} +\let\th@OldAppCmd\appendix +\renewcommand{\appendix}{ + \setcounter{th@SectionSave}{\value{section}} + \th@OldAppCmd + \if@NumberStdHeadings\else + \setcounter{section}{\value{th@SectionSave}} + \fi + \addtocontents{toc}{\protect\contentsline {part} + {\protect\appendixnameToC}{\protect\relax}{}} + \renewcommand*{\th@DefTheChapter}{\Alph{chapter}} + } + +%%%%%%%%%%%%%%% BIBLIOGRAPHY: Used to be redefined here. +% Moved to permit use of different bibliography .sty and .bst files. +% It's now in the '\AtBeginDocument' command. + +%%%%%%%%%%%%%%% SECTION HEADINGS (including several new options): +% New if-s +\newif\if@AlwaysFalse +\@AlwaysFalsefalse +\newif\if@CenterHeading +\@CenterHeadingfalse +\newif\if@UseStarCmd +\@UseStarCmdfalse + +%%%%%%%%%%%%%%% GENERAL AND SETUP COMMANDS. +% Makes a heading. +% The optional argument (#1) is a centering flag. The heading gets +% centered if it's present and set to true. +% The second arg is the style command. +% The third arg is the heading proper. +\newcommand*{\th@MakeHeading}[2]{ + \protect #1 + \if@CenterHeading\begin{center}\typeout{centered}\fi + #2 + \if@CenterHeading\end{center}\fi + } + +% Makes a heading. +% The entire thing is something of a mess. We want all ToC entries to +% be in normal text. We also want references in normal text. But, we +% want the heading numbers to appear in the correct size and font. To +% get this to happen is a chore. + +% The args are, in order: +% The command to execute (#1), +% The heading style command (#2), +% The optional arg passed to the heading command proper (#3). +% E.g. if you execute a \section[foo]{bigfoo}, #3=="foo". +% The heading text itself (#4). +% The name of the current command (#5). E.g. "chapter". +% The internal command that generates the number label (#6). + +% There are also two important flags used by this command. The first +% is \@UseStarCmd. Set this to "true" if this is the starred version +% of the command. The second flag is \@thInHeading. This gets set +% 'true' inside the section heading commands and turned off at the end +% of the command. + +\newcommand*{\th@Heading}[6]{ + \@thInHeadingtrue + % Alter the '\the...' command. + \@namedef{the#5}{\protect#2 #6} + \if@UseStarCmd + #1*{\th@MakeHeading{\protect#2}{#4}} + \else + \ifthenelse{\equal{\th@DefArg}{#3}}{ + #1[\normalsize\normalfont#4]{ + \th@MakeHeading{\protect#2}{#4}} + }{ + #1[\normalsize\normalfont#3]{ + \th@MakeHeading{\protect#2}{#4}} + } + \fi +% Reset the '\the...' command, but don't enforce +% '\normalsize\normalfont' anywhere, as this messes up +% cross-references in footnotes. + \@namedef{the#5}{#6} + \@thInHeadingfalse + \@CenterHeadingfalse + \normalsize\normalfont +} + +%%%%%%%%%%% CHAPTER HEADING: +% The chapter command definitely needs some re-defining. The primary +% purpose is to control numbering in figures, tables, and equations. + +\let\th@OldChapter\chapter +% The \@ifstar{}{} is a LaTeX tool to check the character following +% the command and see if it's a '*'. +\renewcommand*{\chapter}{\@ifstar{\th@ChapterS}{\th@Chapter}} + +% Special if-s; used internally for chapters. +\newif\if@THshortChapter +\@THshortChapterfalse + +% We define a special command for stepping the chapter counter, +% zeroing the figure, table, and equation counters only if necessary. + +\newcommand*{\th@PreChCmd}{ + \if@PerChptrNumbering + \relax + \else + \setcounter{th@SaveTable}{\value{table}} + \setcounter{th@SaveFigure}{\value{figure}} + \setcounter{th@SaveEquation}{\value{equation}} + \fi +} + +\newcommand*{\th@PostChCmd}{ + \if@THshortChapter + \typeout{Short Chapter (page numbered)} + \@THshortChapterfalse + \thispagestyle{myheadings} + \else + \thispagestyle{empty} + \fi + \if@PerChptrNumbering + \relax + \else + \setcounter{table}{\value{th@SaveTable}} + \setcounter{figure}{\value{th@SaveFigure}} + \setcounter{equation}{\value{th@SaveEquation}} + \fi + \normalsize\normalfont + \@UseStarCmdfalse +} +\if@chapterCaps + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {\uppercase\expandafter{#2}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {\uppercase\expandafter{#1}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\else + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {#2}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {#1}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\fi + +%%%%%%%%% SECTION HEADING COMMANDS. We need to use the starred version +% and add the numbering and toc-entry ourselves. We need to do this +% for all of the subsequent heading commands. If we don't we'll get +% weird-looking ToC entries and references. + +\let\th@OldSection\section +\renewcommand*{\section}{\@ifstar{\th@SectionS}{\th@Section}} + +\newcommand*{\th@Section}[2][\th@DefArg]{ + \@UseStarCmdfalse + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{#1}{#2} + {section}{\th@DefTheSection} + \normalsize\normalfont +} +\newcommand*{\th@SectionS}[1]{ + \@UseStarCmdtrue + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{\th@DefArg} + {#1}{section}{\th@DefTheSection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSECTION HEADING COMMANDS. + +\let\th@OldSubSection\subsection +\renewcommand*{\subsection}{ + \@ifstar{\th@SubSectionS}{\th@SubSection} +} +\newcommand*{\th@SubSection}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {#1}{#2}{subsection}{\th@DefTheSubsection} + \normalsize\normalfont +} +\newcommand*{\th@SubSectionS}[1]{ + \@UseStarCmdtrue + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {\th@DefArg}{#1}{subsection}{\th@DefTheSubsection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSUBSECTION HEADING COMMANDS. No starred version permitted. +% No ToC entry. We also need to check and see if we should number +% it or not and if we should inline it or not. + +\let\th@OldSubSubSection\subsubsection +\newlength{\th@SubSubSecSpc} +\if@numberSubSubSection + \renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdfalse} + \setcounter{th@SecNum}{4} + \setlength{\th@SubSubSecSpc}{0.5em} +\else + \renewcommand*{\thesubsubsection}{\relax} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdtrue} + \setlength{\th@SubSubSecSpc}{0em} +\fi + +\newif\if@shutoffSSSect +\@shutoffSSSectfalse + +\if@inlineSubSubSection +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \refstepcounter{subsubsection} + \vspace{4\parsep} + \underline{% + \@thInHeadingtrue\th@OtherSecHeadStyles% + \thesubsubsection\hspace{\th@SubSubSecSpc}#2}\hspace{2mm} + \ignorespaces\normalsize\normalfont + } +\else +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \th@PreSubsubsecCmd + \@CenterHeadingfalse + \th@Heading{\th@OldSubSubSection}{\th@OtherSecHeadStyles} + {\th@DefArg}{#2}{subsubsection}{\th@DefTheSubsubsection} + \@UseStarCmdfalse\normalsize\normalfont + } +\fi + +% We don't need to do much for paragraph and subparagraph. We won't +% even define a *-version or permit entries in the ToC. +\if@AllHeadings + \let\th@OldParagraph\paragraph + \renewcommand*{\paragraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{paragraph} + {\hspace*{\parindent}\th@DefTheParagraph} + \@UseStarCmdfalse + \@namedef{theparagraph}{\th@DefTheParagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \let\th@OldSubParagraph\subparagraph + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{subparagraph} + {\th@DefTheSubparagraph} + \@UseStarCmdfalse + \@namedef{thesubparagraph}{\th@DefTheSubparagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \setcounter{th@SecNum}{5} +\else + \renewcommand*{\paragraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} +\fi + + +%%%%%%%%%% COMMANDS CHANGED FOR THIS CLASS +%%%%%% Unavailable commands +\renewcommand*{\theindex}{\ClassWarning{thesis} + {Indexing not available in this class.}} +\renewcommand*{\twocolumn}{\ClassWarning{thesis} + {Twocolumn not available in this class.}} +\renewcommand*{\thepart}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +\renewcommand*{\part}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +%%%%%% New commands +% This forces a page number on the first page of a chapter, etc. +\newcommand*{\forcepageno}{\thispagestyle{myheadings}} +\newcommand*{\OnePageChapter}{\forcepageno} + + +%%%%%%%%%%% THESIS PROLOGUE PAGES: +% Stores the second arg in the command specified by the first arg. +\newcommand{\th@StoreIn}[2]{ \gdef#1{#2} } +% Default values of storage variables. Emits an error message. +% This part of the class is long... +\newcommand*{\th@title}{ + \ClassError{thesis}{ + You must specify a title!} + {Use the \protect\title{} command in the preamble.} +} +\newcommand*{\th@fwdname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@revname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@deptname}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@deptorg}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@advisor}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@advisortitle}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@reader}{ + \ClassError{thesis}{ + You must specify the name of the other \MessageBreak + committee member who will be signing your \MessageBreak + thesis.} + {Use the \protect\reader{} command in the preamble.} +} +\newcommand*{\th@readerThree}{none} % optional +\newcommand*{\th@readerFour}{none} % optional +\newcommand*{\th@readerFive}{none} % optional +\newcommand*{\th@readerSix}{none} % optional +\newcommand*{\th@IRBprotocol}{none} % optional +\newcommand*{\th@fulldegree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, e.g.\MessageBreak + 'Ph. D., Biology'.} +} +\newcommand*{\th@degree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, \MessageBreak + e.g. 'Ph. D., Biology'.} +} +\newcommand{\th@otherdegrees}{ + \ClassError{thesis}{ + You must specify other degrees you hold!} + {Use the \protect\otherdegrees{} command in the \MessageBreak + preamble. Break each line using the \protect\\ \MessageBreak + command.} +} +\newcommand{\th@abstractStash}{ + \ClassError{thesis}{ + You must specify an abstract!} + {Use the \protect\abstractpage[]{} command in the \MessageBreak + preamble. If your abstract runs over a page, \MessageBreak + use the optional argument with the word 'long'.} +} +\newcommand*{\th@degreeyear}{\number\the\year} +\newcommand*{\th@signature}[1]{ \begin{center} + \normalsize + \vspace*{16mm} % works well? + \vrule width 80mm height 0.2mm\\ + #1 \end{center} +} +\newcommand*{\th@dateline}{ + \vspace*{9mm} + \begin{flushright} + Date~{\vrule width 35mm height 0.2mm} + \end{flushright} +} +\newcommand{\th@AbstractPageStyle}{\relax} +\newcommand{\th@dedicationStash}{\relax} +\newcommand{\th@dedicationTitleStash}{\relax} +\newcommand{\th@acknowledgementsStash}{\relax} +\newif\if@shortLoA +\newif\if@shortLoL +\newif\if@shortLoF +\newif\if@shortLoT +\newif\if@shortToC +\newif\if@makenoLoF +\newif\if@makenoLoT +\newif\if@makenoLoL +\newif\if@makenoLoA +\newif\if@makeDedication +\newif\if@makeAcknowledgements +\newif\if@makePrologue +\@shortLoAfalse +\@shortLoLfalse +\@shortLoFfalse +\@shortLoTfalse +\@shortToCfalse +\@makenoLoFfalse +\@makenoLoTfalse +\@makenoLoLfalse +\@makeDedicationfalse +\@makeAcknowledgementsfalse +\@makeProloguetrue + +% The base commands that make all of the prologue pages. +\newcommand*{\th@Titlepage}{ + \thispagestyle{empty} + \@thInHeadingtrue + \null\vfill + \begin{list}{}{\setlength{\leftmargin}{0.8in} + \setlength{\rightmargin}{0.8in}\sloppy} + \centering\item[] + {\th@ChapterStyle + \if@chapterCaps + \uppercase\expandafter{\th@title}\\ + \else + \th@title\\ + \fi} + by\\ + {\th@OtherSecHeadStyles + \if@chapterCaps + \uppercase\expandafter{\th@fwdname}\\ + \else + \th@fwdname\\ + \fi} + \th@otherdegrees\\ + \end{list} + \vfill + \begin{center} + A thesis submitted to the\\ + Faculty of the Graduate School of the\\ + University of Colorado in partial fulfillment\\ + of the requirements for the degree of\\ + \th@fulldegree\\ + \th@deptorg\ \th@deptname\\ + \ \th@degreeyear \\ + \end{center} + \begin{flushright} + \vfill + % List committee members on title page + Committee Members:\\ + \th@advisor, Chair\\ % REQUIRED + \th@reader\\ % REQUIRED + \ifthenelse{\equal{\th@readerThree}{none}}{\relax} + {\th@readerThree\\} % optional + \ifthenelse{\equal{\th@readerFour}{none}}{\relax} + {\th@readerFour\\} % optional + \ifthenelse{\equal{\th@readerFive}{none}}{\relax} + {\th@readerFive\\} % optional + \ifthenelse{\equal{\th@readerSix}{none}}{\relax} + {\th@readerSix\\} % optional + \end{flushright} + \@thInHeadingfalse + \vfill +} +\newcommand*{\th@Approvalpage}{ + \singlespacing + \clearpage + \thispagestyle{empty} + \vspace*{\fill} + \begin{center} + This thesis entitled:\\ + \th@title\\ + written by\ + \th@fwdname\\ + has been approved for the\ + \th@deptorg\ + \th@deptname + \end{center} + \vspace*{1mm} + \th@signature{\th@advisortitle\ \th@advisor} + \th@signature{\th@reader} % REQUIRED. + \ifthenelse{\equal{\th@readerThree}{none}}{\relax} + {\th@signature{\th@readerThree}} % optional + \ifthenelse{\equal{\th@readerFour}{none}}{\relax} + {\th@signature{\th@readerFour}} % optional + \ifthenelse{\equal{\th@readerFive}{none}}{\relax} + {\th@signature{\th@readerFive}} % optional + \ifthenelse{\equal{\th@readerSix}{none}}{\relax} + {\th@signature{\th@readerSix}} % optional + \th@dateline + \vspace*{\fill} + \begin{center} + The final copy of this thesis has been examined by + the signatories, and we find that both the content + and the form meet acceptable presentation standards + of scholarly work in the above mentioned discipline. + \ifthenelse{\equal{\th@IRBprotocol}{none}}{\relax} + {\par\vspace*{7mm}IRB protocol \#{\th@IRBprotocol}} + \end{center} + \vspace*{\fill} +} +\newcommand{\th@Abstractpage}{ + \clearpage + \th@AbstractPageStyle + \doublespacing % 1998 revision of Grad School Specs + \begin{list}{}{\setlength{\leftmargin}{2em} + \setlength{\itemindent}{-2em} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0pt}} + \item \th@revname\ (\th@degree) + \item \th@title + \item Thesis directed by \th@advisortitle\ \th@advisor + \end{list} + \par + \vspace*{4\parsep} +\begin{center} + \textbf{\th@ChapHead{Abstract}} + \end{center} + \th@abstractStash % finally, the actual abstract +} +\newcommand{\th@Dedicationpage}{ + \if@makeDedication + \clearpage + \thispagestyle{empty} + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\chapter*{\th@dedicationTitleStash}} + \th@dedicationStash + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\relax} + \fi +} +\newcommand{\th@Acknowledgementpage}{ + \if@makeAcknowledgements + \clearpage + \chapter*{Acknowledgements} + {\doublespacing + \th@acknowledgementsStash} + \fi +} + +\newcommand{\th@ToCpage}{ +% Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \@THshortChapterfalse + \if@shortToC + \@THshortChaptertrue + \typeout{Making Short ToC...} + \fi + \@thInHeadingfalse + {\doublespacing + \tableofcontents} +% Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoTpage}{ +% Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \glsunsetall + \@THshortChapterfalse + \if@makenoLoT + \typeout{Skipping LoT...} + \else + \if@shortLoT + \@THshortChaptertrue + \typeout{Making Short LoT...} + \fi + {\doublespacing + \listoftables} + \fi +\glsresetall + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoFpage}{ +% Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \glsunsetall + \@THshortChapterfalse + \if@makenoLoF + \typeout{Skipping LoF...} + \else + \if@shortLoF + \@THshortChaptertrue + \typeout{Making Short LoF...} + \fi + {\doublespacing + \listoffigures} + \fi +\glsresetall + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoLpage}{ + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{blue}{##1}} + \@THshortChapterfalse + \if@makenoLoL + \typeout{Skipping LoL...} + \else + \if@shortLoL + \@THshortChaptertrue + \typeout{Making Short LoL...} + \fi + {\doublespacing + \lstlistoflistings} + \fi + % Hyperlink color of glossary links + \renewcommand*{\glstextformat}[1]{\textcolor{darkgray}{##1}} +} + +\newcommand{\th@LoApage}{ + \@THshortChapterfalse + \if@makenoLoA + \typeout{Skipping LoA...} + \else + \if@shortLoA + \@THshortChaptertrue + \typeout{Making Short LoA...} + \fi + {\singlespacing + % list of acronyms + \printglossary[type=\acronymtype,style=long,nonumberlist]} + \fi +} + + + +% This performs the actual generation of the prologue +\newcounter{th@storepage} +\newcommand{\th@MakeThesisPrologue}{ + \if@makePrologue + \pagenumbering{roman} + \typeout{Making Title Page} + \th@Titlepage + % Note: Approval Page is no longer required, but + % enabled for completeness for now. + \typeout{Making Approval Page} + \th@Approvalpage + \typeout{Making Abstract Page} + \th@Abstractpage + \typeout{Making Dedication Page} + \th@Dedicationpage + \typeout{Making Acknowledgement Page} + \th@Acknowledgementpage + \setcounter{th@storepage}{\value{page}} + \typeout{Making ToC Page} + \th@ToCpage + \typeout{Making LoT Page} + \th@LoTpage + \typeout{Making LoF Page} + \th@LoFpage + \typeout{Making LoL Page} + \th@LoLpage + \typeout{Making LoA Page} + \th@LoApage + \fi +} + + +% Make the generator-command the very first command of the document. +\let\th@OldBeginDocument\document +\renewcommand*{\document}{ + \th@OldBeginDocument + \th@MakeThesisPrologue + \typeout{} + \typeout{} + \typeout{-------------------Beginning Body----------------------} + \typeout{} + \typeout{} + \doublespacing + \clearpage + \pagenumbering{arabic} + \@THshortChapterfalse +} + +%%%%%%%%% USER COMMANDS FOR CONTROLLING THE PROLOGUE: +\renewcommand*{\title}[1]{\th@StoreIn{\th@title}{#1}} +\newcommand*{\reader}[1]{\th@StoreIn{\th@reader}{#1}} +\newcommand*{\readerThree}[1]{\th@StoreIn{\th@readerThree}{#1}} +\newcommand*{\readerFour}[1]{\th@StoreIn{\th@readerFour}{#1}} +\newcommand*{\readerFive}[1]{\th@StoreIn{\th@readerFive}{#1}} +\newcommand*{\readerSix}[1]{\th@StoreIn{\th@readerSix}{#1}} +\newcommand*{\IRBprotocol}[1]{\th@StoreIn{\th@IRBprotocol}{#1}} +\newcommand*{\degreeyear}[1]{\th@StoreIn{\th@degreeyear}{#1}} +\newcommand{\otherdegrees}[1]{\th@StoreIn{\th@otherdegrees}{#1}} +\newcommand{\acknowledgements}[1]{ + \@makeAcknowledgementstrue + \th@StoreIn{\th@acknowledgementsStash}{#1} +} +\newcommand{\dedication}[2][\th@DefArg]{ + \@makeDedicationtrue + \th@StoreIn{\th@dedicationTitleStash}{#1} + \th@StoreIn{\th@dedicationStash}{#2} +} +\renewcommand*{\author}[2]{ + \th@StoreIn{\th@fwdname}{#1 #2} + \th@StoreIn{\th@revname}{#2, #1} +} +\newcommand*{\degree}[2]{ + \th@StoreIn{\th@fulldegree}{#1} + \th@StoreIn{\th@degree}{#2} +} +\newcommand*{\advisor}[2]{ + \th@StoreIn{\th@advisor}{#2} + \th@StoreIn{\th@advisortitle}{#1} +} +\newcommand*{\dept}[2]{ + \th@StoreIn{\th@deptorg}{#1} + \th@StoreIn{\th@deptname}{#2} +} +\renewcommand{\abstract}[2][long]{ + \ifthenelse{\equal{#1}{short}}{\relax}{ + \th@StoreIn{\th@AbstractPageStyle}{\thispagestyle{empty}} + } + \th@StoreIn{\th@abstractStash}{#2} +} +\newcommand*{\SuspendPrologue}{ + \@makeProloguefalse + \typeout{No prologue pages printed.} +} +\newcommand*{\emptyLoF}{ + \@makenoLoFtrue + \typeout{No LoF printed} +} +\newcommand*{\emptyLoT}{ + \@makenoLoTtrue + \typeout{No LoT printed} +} +\newcommand*{\emptyLoL}{ + \@makenoLoLtrue + \typeout{No LoL printed} +} +\newcommand*{\emptyLoA}{ + \@makenoLoAtrue + \typeout{No LoA printed} +} +\newcommand*{\ToCisShort}{ + \@shortToCtrue + \typeout{Putting page number on short ToC} +} +\newcommand*{\LoFisShort}{ + \@shortLoFtrue + \typeout{Putting page number on short LoF} +} +\newcommand*{\LoTisShort}{ + \@shortLoTtrue + \typeout{Putting page number on short LoT} +} +\newcommand*{\LoLisShort}{ + \@shortLoLtrue + \typeout{Putting page number on short LoL} +} +\newcommand*{\LoAisShort}{ + \@shortLoAtrue + \typeout{Putting page number on short LoA} +} + +\endinput +%%%%%%%%%%%%%%%% End of file ``thesis.cls''