From 0cbdc6efea902598208303a21914ea3d03449126 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:10:27 +0000 Subject: umich-thesis git-svn-id: svn://tug.org/texlive/trunk@1423 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/umich-thesis/umich-thesis.cls | 592 +++++++++++++++++++++ 1 file changed, 592 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/umich-thesis/umich-thesis.cls (limited to 'Master') diff --git a/Master/texmf-dist/tex/latex/umich-thesis/umich-thesis.cls b/Master/texmf-dist/tex/latex/umich-thesis/umich-thesis.cls new file mode 100644 index 00000000000..217f9ff3a95 --- /dev/null +++ b/Master/texmf-dist/tex/latex/umich-thesis/umich-thesis.cls @@ -0,0 +1,592 @@ +% $Id: umich-thesis.cls,v 1.20 2004/03/12 19:56:55 kleb Exp $ +% +% Copyright (C) 1997,2004 by Bil.Kleb@NASA.Gov +% This software is released under the terms of the LaTeX Project +% public license. +% +% A LaTeX2e class to create a University of Michigan dissertation +% according to the Rackham dissertation handbook. +% +% This basic approach is to load the LaTeX2e book class, make +% modifications, and make use of various standard LaTeX2e packages. +% +% To use: \documentclass{umich-thesis} +% +% If you need help using LaTeX, try a Google 'groups' search +% on comp.text.tex; and while you wait, explore the TeX User +% Group's frequently asked questions site last seen at +% http://www.tex.ac.uk/cgi-bin/texfaq2html. If both of these +% fail to solve your problem, read +% +% http://www.tex.ac.uk/cgi-bin/texfaq2html?label=askquestion +% +% and post a question to news:comp.text.tex +% +% For help specific to this class, email me but please try to use +% the options above first. +% +% Wish list: +% +% o dissallow openright, twocolumn, twoside options for book class +% +% o add internal hook to change chapter styles consistently +% +% o produce list of appendices, etc. only if there are two or more +% items. + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +\ProvidesClass{umich-thesis}[2004/03/12 v1.20 University of Michigan thesis class] +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}% + \typeout{Unknown option, passing ``\CurrentOption" + option on to the standard LaTeX2e book class.}} +\ProcessOptions + +\LoadClass[12pt,oneside,openany]{book} + +\RequirePackage[left=1.5in,body={6in,9in}]{geometry}% page layout +\RequirePackage{setspace}% for \doublespacing and \singlespacing +\RequirePackage{placeins}% clear floats before starting new sections + +% new logical variables +\newif\if@appendix \@appendixfalse +\newif\if@backmatter \@backmatterfalse + +% define new fields (similar to the standard \author, \title, \date, etc.}: +\def\degree#1{\gdef\@degree{#1}} +\def\department#1{\gdef\@department{#1}} +\def\chairperson#1{\gdef\@chairperson{#1}} +\def\committee#1{\gdef\@committee{#1}} +% use \long definitions for the following since their contents +% may be more than a single paragraph: +\long\def\frontispiece#1{\gdef\@frontispiece{#1}} +\long\def\dedication#1{\gdef\@dedication{#1}} +\long\def\acknowledgements#1{\gdef\@acknowledgements{#1}} +\long\def\preface#1{\gdef\@preface{#1}} +\long\def\abstract#1{\gdef\@abstract{#1}} +\long\def\afterword#1{\gdef\@afterword{#1}} + +% warn if fields are empty: +\def\@degree{\@latex@warning@no@line{No \noexpand\degree given}} +\def\@department{\@latex@warning@no@line{No \noexpand\department given}} +\def\@chairperson{\@latex@warning@no@line{No \noexpand\chairperson given}} +\def\@committee{\@latex@warning@no@line{No \noexpand\committee given}} +\def\@frontispiece{\@latex@warning@no@line{No [optional] + \noexpand\frontispiece defined}} +\def\@dedication{\@latex@warning@no@line{No [optional] + \noexpand\dedication provided}} +\def\@acknowledgements{\@latex@warning@no@line{No [optional] + \noexpand\acknowledgements given}} +\def\@preface{\@latex@warning@no@line{No [optional] + \noexpand\preface given}} +\def\@abstract{\@latex@warning@no@line{No \noexpand\abstract given}} +\def\@vita{\@latex@warning@no@line{No [optional] + \noexpand\vita given}} +\def\@afterword{\@latex@warning@no@line{No [optional] + \noexpand\afterword given}} + +% change/add some names: +\renewcommand{\contentsname}{Table of Contents} +\renewcommand{\chaptername}{Chapter} +\renewcommand{\appendixname}{Appendix} +\newcommand{\appendicesname}{Appendices} +\newcommand{\listappendicesname}{List of Appendices} + +% change the chapter numbers to roman numerals +\renewcommand{\thechapter}{\Roman{chapter}} +% but use arabic for sections, etc. +\renewcommand{\thesection}{\arabic{chapter}.\arabic{section}} +\renewcommand\theequation{\@arabic\c@chapter.\@arabic\c@equation} +\renewcommand\thefigure{\@arabic\c@chapter.\@arabic\c@figure} +\renewcommand\thetable{\@arabic\c@chapter.\@arabic\c@table} + +% tweak \tableofcontents, \listoffigures, \listoftables +% and add \listofappendices: +\renewcommand\tableofcontents{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \chapter*{\contentsname} + {\singlespace\@starttoc{toc}}% + \if@restonecol\twocolumn\fi + } +\renewcommand\listoffigures{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \chapter*{\listfigurename} + \addcontentsline{toc}{chapter}{\MakeUppercase\listfigurename}% + {\singlespacing\@starttoc{lof}}% + \if@restonecol\twocolumn\fi + } +\renewcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.8em}} +\renewcommand\listoftables{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \chapter*{\listtablename} + \addcontentsline{toc}{chapter}{\MakeUppercase\listtablename}% + {\singlespacing\@starttoc{lot}}% + \if@restonecol\twocolumn\fi + } +\renewcommand*\l@table{\@dottedtocline{1}{1.5em}{2.8em}} +\def\ext@appendix{loa} +\newcommand\listofappendices{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi + \chapter*{\listappendicesname} + \addcontentsline{toc}{chapter}{\MakeUppercase\listappendicesname}% + {\singlespacing\@starttoc{loa}}% + \if@restonecol\twocolumn\fi + } +\newcommand*\l@appendix{\@dottedtocline{1}{1.5em}{2.3em}} + +% modify \mainmatter to add an entry to table of contents +% that introduces the chapters and to reset the page numbering: +\renewcommand\mainmatter{% + \if@openright\cleardoublepage\else\clearpage\fi + \@mainmattertrue + \pagenumbering{arabic}% + \addtocontents{toc}{% + \vspace{1em}\vspace{1pt}% + \hbox{\bfseries \MakeUppercase\chaptername}% + \vspace{10pt}}% + } + +% change sections to not add info to toc if in appendix: +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \if@appendix% + \relax% + \else % + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \fi% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} + +% set default pagestyle (Note: \chapter and other things may override this.) +\pagestyle{plain} + +% define a new verion of LaTeX's raggedright to allow some hyphenation +% per Edward Tufte's book layout: +\def\um@raggedright{% + \let\\\@centercr\@rightskip\z@ plus .1\hsize + \rightskip\@rightskip\leftskip\z@skip} + +% change LaTeX's footnotes to get vertical spacing correct +\skip\footins \baselinestretch2\skip\footins +\long\def\@footnotetext#1{% + \insert\footins{% + \def\baselinestretch {\setspace@singlespace}% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth + \@parboxrestore + \vskip 1.2\baselineskip + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} + +% Set captions in smaller font +\newcommand{\captionsize}{\footnotesize\raggedright} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{\captionsize #1: #2}% + \ifdim \wd\@tempboxa >\hsize + {\captionsize #1: #2\par} + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +% re-define the \maketitle command to do the thesis title page: +\renewcommand{\maketitle}% + {\begin{titlepage}% + \null\vfil + \begin{spacing}{1} + \begin{center}% + {\Large\bfseries \MakeUppercase{\@title} \par}% + \vfil% + by% + \vskip .75em + \@author \par% + \vfil% + {A dissertation submitted in partial fulfillment \\ + of the requirements for the degree of \\ + \@degree \\ + (\@department) \\ + in The University of Michigan \\ + \@date \par}% + \end{center}\par + \vfil + \hspace{1in} Doctoral Committee: \\[2ex] + \mbox{ }\hspace{1.5in}% + \parbox{4.5in}{\@chairperson, Chairperson \\ + \@committee \par}% + \end{spacing} + \vfil\null% + \end{titlepage}% + \setcounter{footnote}{0}% + \setcounter{page}{1}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@thanks\@empty + \global\let\@degree\@empty + \global\let\@department\@empty + \global\let\@committee\@empty + \global\let\and\relax + \global\let\degree\relax + \global\let\department\relax + \global\let\committee\relax +} + + +% the frontispiece +\newcommand{\makefrontispiece}% + {\cleardoublepage% + \thispagestyle{empty} + \null\vskip 1in% + \@frontispiece \par% + \setcounter{page}{1}% + \global\let\makefrontispiece\relax + \global\let\frontispiece\relax + \global\let\@frontispiece\@empty + } + +% the copyright: +\newcommand{\makecopyright}% + {\cleardoublepage% + \thispagestyle{empty} + \null\vfil% + \newdimen\@tempdimt% + \newdimen\@tempdimb% + \settowidth{\@tempdimt}{\@author}% + \settowidth{\@tempdimb}{All rights reserved.}% + \ifdim \@tempdimt<\@tempdimb% + \@tempdimt \@tempdimb% + \fi% + \begin{center} + \renewcommand{\arraystretch}{0.1}% + \begin{tabular}{rcl} + & \@author & \\ + \copyright & \rule[2pt]{\@tempdimt}{0.2pt} & \@date \\ + & All rights reserved. & + \end{tabular} + \end{center}% + \vfil\null% + \setcounter{page}{1}% + \global\let\makecopyright\relax + } + +% the dedication: +\newcommand{\makededication}% + {\chapter{Dedication} + \@dedication \par% + \global\let\makededication\relax + \global\let\dedication\relax + \global\let\@dedication\@empty + } + +% the acknowledgements: +\newcommand{\makeacknowledgements}% + {\chapter{Acknowledgements} + \@acknowledgements \par% + \global\let\makeacknowledgements\relax + \global\let\acknowledgements\relax + \global\let\@acknowledgements\@empty +} + +% the preface: +\newcommand{\makepreface} + {\chapter{Preface} + \@preface \par% + \global\let\makepreface\relax + \global\let\preface\relax + \global\let\@preface\@empty +} + +% the vita: +\newcommand{\makevita} + {\chapter*{Vita} + \@vita \par% + \global\let\makevita\relax + \global\let\vita\relax + \global\let\@vita\@empty +} + +% the afterword: +\newcommand{\makeafterword} + {\chapter*{Afterword} + \@afterword \par% + \global\let\makeafterword\relax + \global\let\afterword\relax + \global\let\@afterword\@empty +} + +% the abstract: +\newcommand{\makeabstract}% + {\begin{titlepage}% + \null + \begin{center}% + {\Large\bfseries\MakeUppercase{Abstract}} + \vskip \baselineskip + {\bfseries\MakeUppercase\@title} + \vskip 7\p@ + by \vskip 2\p@ + \@author + \end{center} + \vskip 20\p@ + \noindent Chairperson: \@chairperson + \vskip 17\p@ + \noindent \@abstract \par + \end{titlepage}% + \global\let\makeabstract\relax + \global\let\abstract\relax + \global\let\title\relax + \global\let\author\relax + \global\let\@abstract\@empty + \global\let\@title\@empty + \global\let\@author\@empty +} + +% change the format of the Table of Contents by +% add dotted lines to chapter-level toc entires +\renewcommand*\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak% + \leaders\hbox{$\m@th \mkern \@dotsep% \hfil -> core of latex.ltx's + mu.\mkern \@dotsep mu$}\hfill% + \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} + +% change \chapter command [book.cls] to allow indentation of first paragraph +\renewcommand\chapter{% + \if@openright\cleardoublepage\else\clearpage\fi% + \if@backmatter\thispagestyle{empty}\else\thispagestyle{plain}\fi% + \def\baselinestretch{1}% + \global\@topnum\z@ + \@afterindenttrue% + \secdef\@chapter\@schapter} + +% change toc behavior of chapter entries [book.cls] to +% indent them from the left +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \if@appendix% + \addcontentsline{loa}{chap}% + {\protect\numberline{% + \hbox{ }\hfill% + \thechapter.\hspace{1em}}% + #1}% + \else% + \addcontentsline{toc}{chap}% + {\protect\numberline{\bfseries% + \hbox{ }\hfill% + \thechapter.\hspace{1em}}% + \bfseries \MakeUppercase{#1}}% + \fi% + \else + \addcontentsline{toc}{chapter}{\MakeUppercase{#1}} + \fi + \else + \addcontentsline{toc}{chapter}{\MakeUppercase{#1}} + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{\MakeUppercase{#2}}] + \else + \@makechapterhead{\MakeUppercase{#2}} + \@afterheading + \fi} +\def\@schapter#1{\@makeschapterhead{\MakeUppercase{#1}}\@afterheading} + +% add chap entry for table of contents +\newcommand*\l@chap{\@dottedtocline{1}{0.5em}{3.5em}} +% modify indentation of the rest: +\renewcommand*\l@section{\@dottedtocline{2}{5.0em}{2.3em}} +\renewcommand*\l@subsection{\@dottedtocline{3}{8.3em}{3.2em}} +\renewcommand*\l@subsubsection{\@dottedtocline{4}{12.5em}{4.1em}} +\renewcommand*\l@paragraph{\@dottedtocline{5}{15.7em}{5em}} +\setcounter{tocdepth}{3}% default is 2 + +% change \@makechapterhead to center chapter +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \centering% + \large\bfseries\MakeUppercase\@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \centering% + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +% similar for chapter*'s: +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \centering% + \Large \bfseries\MakeUppercase{#1}\par\nobreak + \vskip 40\p@ + }} + +% redefine \appendix command to produce title page, change counter +% styles, and add entries to table of contents +\renewcommand{\appendix}{ + \if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi + \bgroup% + \null\vfil + \centering + \Large \bfseries \MakeUppercase\appendicesname\par + \addcontentsline{toc}{chapter}{\MakeUppercase\appendicesname}% + \vfil\newpage + \egroup% + \if@twoside\null\thispagestyle{plain}\newpage\fi + \if@tempswa\twocolumn\fi + \setcounter{chapter}{0}% + \@appendixtrue + \renewcommand\@chapapp{\appendixname}% + \renewcommand\thechapter{\@Alph\c@chapter} + \renewcommand\thesection{\thechapter.\@arabic\c@section} + \renewcommand\theequation{\thechapter.\@arabic\c@equation} + \renewcommand\thefigure{\thechapter.\@arabic\c@figure} + \renewcommand\thetable{\thechapter.\@arabic\c@table} + \renewcommand\thefootnote{\thechapter\@arabic\c@footnote} +} + +% change section command to revert to single spacing and to include +% the \FloatBarrier command from the placeins package so figures at +% least stay near the section they are referenced. +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\FloatBarrier% + \def\baselinestretch{1}% + \reset@font\Large\bfseries}} + +% change the rest to have single spacing +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\def\baselinestretch{1}% + \normalfont\large\bfseries}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\def\baselinestretch{1}% + \normalfont\normalsize\bfseries}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\def\baselinestretch{1}% + \normalfont\normalsize\bfseries}} +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\def\baselinestretch{1}% + \normalfont\normalsize\bfseries}} + +% add a contents line for the bibliography and +% single-spaced entries +\renewenvironment{thebibliography}[1] + {\chapter*{\bibname} + \addcontentsline{toc}{chapter}{\MakeUppercase\bibname}% + \begin{singlespace} + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist\end{singlespace}} + +% turn off page numbering for backmatter +\renewcommand\backmatter{% + \if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse + \@backmattertrue + \pagestyle{empty} + } + +% turn on `doublespacing' [setspace] +\AtBeginDocument{\doublespacing\um@raggedright} + +% be sure to end with an even number of pages: +\AtEndDocument{\if@openright\cleardoublepage\else\clearpage\fi} -- cgit v1.2.3