-% \def\fileversion{0.3}
-% \def\filedate{2010/01/09}
+% \def\fileversion{0.15}
+% \def\filedate{2013/05/21}
% \iffalse meta-comment
-%<class>\def\fileversion{0.3}
-%<class>\def\filedate{2010/01/09}
-%
-% Copyright (C) 2010 W. Trevor King, Daniel J. Cross, T. Tsankov, and
-% R. Rojas.
+%<*driver>
+\ProvidesFile{drexel-thesis.dtx}
+\documentclass{ltxdoc}
+%</driver>
+%<*class|driver>
+\def\fileversion{0.15}
+\def\filedate{2013/05/21}
+%</class|driver>
+%
+% Copyright (C) 2010-2013 C.Y. Ip
+% Christopher D. Cera
+% Christopher S. Dahn
+% Daniel J. Cross
+% David T. McWherter
+% Evan Sultanik
+% Jeff Arahamson
+% Mitchell Peabody
+% R. Rojas, E
+% Robert Bernecky
+% T. Tsankov
+% Vincent A. Cicirello
+% W. Trevor King
% -------------------------------------------------------
%
% This file may be distributed and/or modified under the
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
-% Based on Scott Pakin's dtxtut/cskeleton.dtx
+% Docstrip formatting initially based on Scott Pakin's
+% dtxtut/cskeleton.dtx
% http://www.ctan.org/tex-archive/info/dtxtut/
%
% \fi
%
% \iffalse meta-comment
-%<*driver>
-\ProvidesFile{drexel-thesis.dtx}
-%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{drexel-thesis}
%<class> [\filedate\ \fileversion\ Drexel Thesis]
%
-% Code for the .ini driver, see section "2.1 The driver file" of doc.dtx.
+% Code for the .ini driver, see \S 2.1 ``The driver file'' of doc.dtx.
%<*driver>
-\documentclass{ltxdoc}
-\usepackage[colorlinks=true]{hyperref}
+\usepackage[colorlinks=true,]{hyperref}
+\hypersetup{pdfauthor={W. Trevor King et al.}}
+\hypersetup{pdftitle={drexel-thesis \fileversion\ documentation}}
%</driver>
% Include some useful commands from |xkeyval|'s |<preamble>|.
%<*driver>
backgroundcolor=\color{yellow!20},xleftmargin=\fboxsep,%
xrightmargin=\fboxsep,gobble=1}}{}
%</driver>
-% \TeX's arguments aren't optional/mandatory, but they do use brackets
-% and braces.
-%<*driver>
-\newcommand{\bracearg}[1]{\marg{#1}}
-\newcommand{\brackarg}[1]{\oarg{#1}}
-%</driver>
% Define a quick and dirty version of |xkeyval|'s |\DescribeOptions|.
%<*driver>
\newenvironment{option}[1]{\begin{macro}{#1}}
{\end{macro}}
%</driver>
+% Some commonly used abbreviations from |classes.dtx|.
+%<*driver>
+\newcommand*{\Lopt}[1]{\textsf {#1}}
+\newcommand*{\file}[1]{\texttt {#1}}
+\newcommand*{\Lcount}[1]{\textsl {\small#1}}
+\newcommand*{\pstyle}[1]{\textsl {#1}}
+%</driver>
+% Provide easy access to the @ character. Note that this, like the
+% short-verbatim markers ||, does not work in |\changes| sections
+% because of the way they are cached to the glossary file. If you
+% find a way to make them work there, let me know :).
+%<*driver>
+\newcommand*{\textat}{\makeatletter @ \makeatother}
+%</driver>
%<*driver>
\makeatletter
\def\DescribeOption#1{\leavevmode\@bsphack
% \changes{0.1}{2006/01/18}{Rewrite by Daniel J.~Cross}
% \changes{0.2}{2010/01/09}{W.~Trevor King transitioned from thesis.cls
% to drexel-thesis.dtx and did a good deal of reorganizing.}
-% \changes{0.2}{2010/01/09}{W.~Trevor King merged drexelthesis.cls
+% \changes{0.3}{2010/01/13}{W.~Trevor King merged drexelthesis.cls
% developed in the Comp.~Sci.~Department by Jeff Abrahamson,
% Evan Sultanik, C.Y.~Ip, Christopher S.~Dahn, Christopher D.~Cera,
% Mitchell Peabody, David T.~McWherter, and Vincent A.~Cicirello.
-% Based on the University of Toronto Thesis LaTeX2e Class.}
+% Based on the University of Toronto Thesis \LaTeXe\ Class. Also
+% greatly improved the documentation by incorperating bits of
+% the base/*.dtx files.}
+% \changes{0.4}{2010/02/23}{W.~Trevor King repositioned hyperref
+% inclusion for proper hyperref overriding. The previous
+% implementation couldn't handle \cs{label} for \cs{paragraph} and
+% some other section levels. The page number for the reference was
+% correct, but the link went to the label's parent chapter.}
+% \changes{0.5}{2010/03/03}{W.~Trevor King use hypcap for better
+% caption hyperlink anchor placement.}
+% \changes{0.6}{2010/03/11}{W.~Trevor King fixed \cs{if@final}
+% handling. Previous versions used it more like a hypothetical
+% \cs{if@finalspace}. Also adjusted theindex to use a
+% \cs{listed@schapter}.}
+% \changes{0.10}{2010/05/21}{W.~Trevor King added \cs{DUT*}
+% aliases for all public macros and environments and renamed
+% \cs{defmonth} and \cs{defyear} to \cs{DUTmonth} and \cs{DUTyear}
+% for consistency with the new aliases.}
+% \changes{0.13}{2010/07/28}{W.~Trevor King cleaned up TOC/LOT/LOF code.}
+% \changes{0.14}{2010/09/21}{Evan Sultanik added the
+% \texttt{approvalform} option for including a \LaTeX\ version of
+% the T-1 thesis form.}
+% \changes{0.15}{2011/04/22}{W.~Trevor King added the
+% \texttt{nodraftwatermark} option for clearing previous watermark
+% options.}
+% \changes{0.15}{2011/04/23}{W.~Trevor King added the
+% \texttt{pagebreak} and \texttt{nopagebreak} options for
+% controlling page breaking independently of \texttt{final} and
+% \texttt{draft}.}
%
% \MakeShortVerb{\|}
% \newcommand{\pkg}[1]{\textsf{#1}}
% \newcommand{\cls}[1]{\textsf{#1}}
-% ^^A\newcommand{\BibTeX}{{\sc Bib}\TeX}
+% ^^A\newcommand{\BibTeX}{{\scshape Bib}\TeX}
%
% \title{The \textsf{drexel-thesis} class\thanks{This document
% corresponds to \textsf{drexel-thesis}~\fileversion, dated \filedate.}}
-% \author{W.~Trevor King \\\texttt{wking@drexel.edu}
-% \and Daniel J.~Cross \and T.~Tsankov \and R.~Rojas.}
+% \author{W.~Trevor King \\\texttt{wking@tremily.us}
+% \and Daniel J.~Cross \and T.~Tsankov \and R.~Rojas. \and Evan A.~Sultanik}
% \date{\filedate}
%
% \maketitle
%
+%
% \section{Introduction}
%
% This package defines a \LaTeX\ thesis class for Drexel University
% \documentclass{drexel-thesis}
% \end{example}
%
+% For \href{http://www.lyx.org/}{LyX} users, we include a LyX template
+% (\file{drexel-thesis.layout}, originally by John K. Parejko) so that
+% the previews generated in LyX are similar to those generated by the
+% actual \cls{drexel-thesis} class.
+%
+%
% \subsection{Options}
%
% \DescribeOptions{final,draft}
-% The default option (selected if not options are passed) is |final|
-% mode, which has all the proper formatting and spacing for your final
-% product. The other main option is |draft| mode, which reduces all
-% the spacing in the document, so might be helpful when printing out
-% drafts (saves paper).
-%
-% |final| mode corresponds to (with Thesis Manual chapter and verse)\\
+% The default option (selected if not options are passed) is
+% \Lopt{final} mode, which has all the proper formatting and spacing
+% for your final product. The other main option is \Lopt{draft} mode,
+% which reduces all the spacing in the document, so might be helpful
+% when printing out drafts (saves paper).
+%
+% \Lopt{final} mode corresponds to (with Thesis Manual chapter and
+% verse) \\
% \begin{tabular}{r p{0.8\textwidth}}
-% |oneside| & 1.5 Library Submission Information, Print
+% \Lopt{oneside} & 1.5 Library Submission Information, Print
% Version: ``All copies must be: \ldots Typed/printed on only one
% side of the page (not double-sided).'' \\
-% |finalspace| & Assorted single, double, and triple spacing
+% \Lopt{finalspace} & Assorted single, double, and triple spacing
% directives. \\
-% |dottedtoc| & From the example on p17.
+% \Lopt{pagebreak} & Conform to thesis pagebreak rules. \\
+% \Lopt{dottedtoc} & From the example on p17. \\
+% \Lopt{nodraftwatermark} & Clear any earlier watermark options.
% \end{tabular}
%
-% |draft| mode corresponds to \\
+% \Lopt{draft} mode corresponds to \\
% \begin{tabular}{r p{0.8\textwidth}}
-% |twoside| & Save space. \\
-% |draftspace| & Save space. \\
-% |dottedtoc| & Might as well be consistent with |final|. \\
-% |draftwatermark| & It's good to have a timestamp. \\
+% \Lopt{twoside} & Save space. \\
+% \Lopt{draftspace} & Save space. \\
+% \Lopt{nopagebreak} & Save space. \\
+% \Lopt{dottedtoc} & Might as well be consistent with \Lopt{final}. \\
+% \Lopt{xdraftwatermark} & It's good to have a timestamp.
% \end{tabular}
%
+% \DescribeOption{subfig}
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/}{\pkg{subfig}}
+% makes it easy to include and caption multi-part figures. However,
+% getting \pkg{subfig} to cooperate with \pkg{floatrow} and
+% \pkg{tocloft} can be tricky. If you want to use \pkg{subfig}, just
+% pass the \Lopt{subfig} option to \cls{drexel-thesis}, and all the
+% pesky details will be taken care of. See \S
+% \ref{sec:better-example} for an example.
+%
% \DescribeOption{finalspace}
% Loosen spacing.
%
% \DescribeOption{draftspace}
% Tighten spacing.
%
+% \DescribeOption{pagebreak}
+% Break pages between chapters and chapter-like blocks.
+%
+% \DescribeOption{nopagebreak}
+% Don't break pages between chapters and chapter-like blocks (saves paper).
+%
% \DescribeOptions{dottedtoc,boldtoc,
% dottedpart,boldpart,
% dottedchapter,boldchapter}
-% These options change how the relevant TOC lines are printed
-% \LaTeX\ defaults to bold but not dots. The |*toc| options set all
-% of the types. For example, |boldtoc| is equivalent to
-% |boldchapter,boldpart|.
+% These options change how the relevant table of contents lines are
+% printed. \LaTeX\ defaults to bold but not dots. The \Lopt{*toc}
+% options set all of the types. For example, \Lopt{boldtoc} is
+% equivalent to \Lopt{boldchapter,boldpart}.
+%
+% \DescribeOption{indenttoc}
+% The example table of contents in the Manual p17 does not indent
+% section entries, etc., so neither does \cls{drexel-thesis}. If you
+% \emph{do} want pretty, indented TOCs, like the \LaTeX\ defaults pass
+% \Lopt{indenttoc} to \cls{drexel-thesis}.
+%
+% \DescribeOption{blackref}
+% \Lopt{blackref} colors all \pkg{hyperref} links black, so they won't
+% stand out in your printed document.
%
% \DescribeOption{draftwatermark}
-% |draftwatermark| adds ``DRAFT \meta{date}'' watermarks to each page.
-% A useful way to remember that the version you're looking at is not final.
-% Also helps reviewers tell you what version they're correcting.
+% \Lopt{draftwatermark} adds ``DRAFT \meta{date}'' watermarks to each
+% page. A useful way to remember that the version you're looking at
+% is not final. Also helps reviewers tell you what version they're
+% correcting. Requires the \pkg{draftmark} package, which allows you
+% to override the default watermark style if it is not to your liking
+% (\S~\ref{sec:draftmark}).
+%
+% \DescribeOption{xdraftwatermark}
+% \Lopt{xdraftwatermark} is also similar to \Lopt{draftwatermark} but
+% depends on the possibly more common \pkg{xcolor}, \pkg{eso-pic}, and
+% \pkg{graphicx}.
+%
+% \DescribeOption{nodraftwatermark}
+% \Lopt{nodraftwatermark} clears any earlier watermark options. For
+% example
+% \begin{example}
+% \documentclass[draft,nodraftwatermark]{drexel-thesis}
+% \end{example}
+% will format your thesis in \Lopt{draft} mode but without a watermark.
+% On the other hand,
+% \begin{example}
+% \documentclass[draftmark,final]{drexel-thesis}
+% \end{example}
+% will also format your thesis without a watermark, because
+% \Lopt{final} sets \Lopt{nodraftwatermark} internally.
+%
+% \DescribeOption{indentfirst}
+% \Lopt{indentfirst} indents the first paragraph after sections etc.
+%
+% \DescribeOption{approvalform}
+% \Lopt{approvalform} includes a copy of the
+% \href{http://www.drexel.edu/graduatestudies/forms/Thesis_Approval_Form.pdf}{%
+% T-1} approval form as the first page of your thesis/dissertation.
+% This form is bound to the front of every thesis/dissertation by the
+% library. The version that is generated by this option is typeset in
+% \LaTeX\ with the same margins, fonts, etc.~as the rest of
+% your document. The title of your dissertation and your name are
+% automatically entered.
+%
+% \DescribeOption{daring}
+% \Lopt{daring} breaks the official thesis rules in pursuit of a nicer
+% layout.
%
%
% \subsubsection{Interesting \cls{book} options}
% Setup output for two-sided printing.
%
% \DescribeOption{leqno}
-% |leqno| places the numbering of formulae on the left hand side
+% \Lopt{leqno} places the numbering of formulae on the left hand side
% instead of the right.
%
% \DescribeOption{fleqn}
-% |fleqn| typesets displayed formulae left-aligned instead of
+% \Lopt{fleqn} typesets displayed formulae left-aligned instead of
% centered.
%
%
% \subsection{Macros}
%
+% To help deal with name collisions, all \cls{drexel-thesis} macros
+% have ``secret'' aliases. For example, |\author| can also be used as
+% |\DUTauthor|. This is useful if one of your packages clobbers a
+% \cls{drexel-thesis} macro, but you still want to use the original.
+% \begin{example}
+% \documentclass{drexel-thesis}
+% \renewcommand{\author}[1]{I'm forgetting about your author! Muahahaha!}
+% \DUTauthor{Your Name Here}
+% ...
+% \end{example}
+%
% \begin{command}
% `\cs{author}\marg{name}'
% \end{command}
% \DescribeMacro{\author}
+% \DescribeMacro{\DUTauthor}
% Use this macro to set your full name to \meta{name}, including
% your middle initial or name. For example
% \begin{example}
% \name{Richard P. Feynman}
% \end{example}
-% See the Manual 3.1 p8.
+% See the Manual \S 3.1 p8.
%
% \begin{command}
% `\cs{title}\marg{title}'
% \end{command}
% \DescribeMacro{\title}
+% \DescribeMacro{\DUTtitle}
% Use this macro to set your thesis title to \meta{name}. For example
% \begin{example}
% \title{A New Approach to Quantum Theory}
% `\cs{advisor}\marg{name}'
% \end{command}
% \DescribeMacro{\advisor}
+% \DescribeMacro{\DUTadvisor}
% Use this macro to set your advisor's name to \meta{name}. For
% example
% \begin{example}
% \advisor{John A. Wheeler, Ph.D.}
% \end{example}
-% See the Manual 3.1 p8.
+% You can set multiple advisors, if appropriate, by calling |\advisor|
+% multiple times.
+% \begin{example}
+% \advisor{John A. Wheeler, Ph.D.}
+% \advisor{Advisor 2}
+% \end{example}
+% See the Manual \S 3.1 p8.
%
% \begin{command}
-% `\cs{defmonth}\marg{month}'
-% `\cs{defyear}\marg{year}'
+% `\cs{DUTmonth}\marg{month}'
+% `\cs{DUTyear}\marg{year}'
% \end{command}
-% \DescribeMacro{\defmonth}
-% \DescribeMacro{\defyear}
+% \DescribeMacro{\DUTmonth}
+% \DescribeMacro{\DUTyear}
% Use these macros to set the month with \meta{month} (spelled out)
% and year with \meta{year} (four digits) of your thesis defense. For
% example
% \begin{example}
-% \defmonth{June}
-% \defyear{1942}
+% \DUTmonth{June}
+% \DUTyear{1942}
% \end{example}
-% See the Manual 3.1 p8.
-% The |def| in |\def*| avoids collisions with the plain \TeX\
-% |\month| and |\year| (see the
+% See the Manual \S 3.1 p8.
+% There are no non-|DUT| versions of these commands to avoid
+% collisions with the plain \TeX\ |\month| and |\year| (see the
% \href{http://www.tug.org/utilities/plain/cseq.html#month-rp}{month}
% and
% \href{http://www.tug.org/utilities/plain/cseq.html#year-rp}{year}
% `\cs{degree}\marg{degree}'
% \end{command}
% \DescribeMacro{\degree}
-% Set your target degree with \meta{degree}. From the Manual 3.1 p8.
+% \DescribeMacro{\DUTdegree}
+% Set your target degree with \meta{degree}. From the Manual \S 3.1
+% p8.
% \begin{quote}
% Write out the name of the degree for which you are a candidate.
% All Ph.D.\ candidates must use |Doctor of Philosophy|. All
% \end{example}
%
% \begin{command}
-% `\cs{makecopyright}'
-% `\cs{makecopyrightCC}'
+% `\cs{copyrighttext}\marg{text}'
+% \end{command}
+% \DescribeMacro{\copyrighttext}
+% \DescribeMacro{\DUTcopyrighttext}
+% Use this macro to set the copyright text to \meta{text}.
+% The default value is ``All Rights Reserved.''.
+% \begin{example}
+% \copyrighttext{Released to the Public Domain.}
+% \end{example}
+% See the Manual \S 3.2 p9.
+%
+% \begin{command}
+% `\cs{copyrighttextCCBYSA}'
% \end{command}
-% \DescribeMacros{\makecopyright,\makecopyrightCC}
-% Write the copyright page (Manual 3.2 p9).
-% Use |\makecopyright| to reserve all rights or |\makecopyrightCC| for
-% a Creative Commons copyright.
+% \DescribeMacro{\copyrighttextCCBYSA}
+% \DescribeMacro{\DUTcopyrighttextCCBYSA}
+% There are a number of predefined copyright messages for ease of use \\
+% \begin{tabular}{l l}
+% |\copyrighttextCCBYSA| &
+% Creative Commons Attribution-ShareAlike License Version 3.0.\\
+% \end{tabular}
%
% \begin{command}
% `\cs{tableofcontents}'
% \end{command}
% \DescribeMacro{\tableofcontents}
-% Write the table of contents (Manual 3.5 p9). You can control the
+% \DescribeMacro{\DUTtableofcontents}
+% Write the table of contents (Manual \S 3.5 p9). You can control the
% verbosity by setting |\tocdepth| according to the following table
% (\href{http://www.image.ufl.edu/help/latex/intext.shtml}{source}). \\
% \begin{tabular}{l l l}
% to your preamble (the section before |\begin{document}|, not the
% |preamble| environment discussed below).
%
-% Note that the Manual 3.5 p9 requires ``List chapter titles and at
+% Note that the Manual \S 3.5 p9 requires ``List chapter titles and at
% least the first and second order subdivisions.'', which corresponds
% to a |\tocdepth| of at least 2.
%
% `\cs{listoftables}'
% \end{command}
% \DescribeMacro{\listoftables}
-% Write the List of Tables page (Manual 3.7 p10).
+% \DescribeMacro{\DUTlistoftables}
+% Write the List of Tables page (Manual \S 3.6 p10).
% Skip if you have no tables in your thesis.
%
% \begin{command}
% `\cs{listoffigures}'
% \end{command}
% \DescribeMacro{\listoffigures}
-% Write the List of Figures page (Manual 3.7 p10).
+% \DescribeMacro{\DUTlistoffigures}
+% Write the List of Figures page (Manual \S 3.7 p10).
% Skip if you have no figures in your thesis.
%
% \begin{command}
% `\cs{blanklines}\marg{num}'
% \end{command}
% \DescribeMacro{\blanklines}
+% \DescribeMacro{\DUTblanklines}
% Insert \meta{num} blank lines. For example
% \begin{example}
% \blanklines{2}
% The skipped lines are always \emph{single spaced} lines, regardless
% of the current line spacing in the environment calling this macro.
%
+% \begin{command}
+% `\cs{iffinal}\marg{final-mode-action}\marg{draft-mode-action}'
+% \end{command}
+% \DescribeMacro{\iffinal}
+% \DescribeMacro{\DUTiffinal}
+% Include \Lopt{final}- or \Lopt{draft}-specific code.
+% \begin{example}
+% We're in \iffinal{final}{draft} mode!
+% \end{example}
+%
+% \begin{command}
+% `\cs{ifdraftwatermark}\marg{draftwatermark-mode-action}\marg{other-action}'
+% \end{command}
+% \DescribeMacro{\ifdraftwatermark}
+% \DescribeMacro{\DUTifdraftwatermark}
+% Include \Lopt{draftwatermark}-specific code (e.g. |\draftmarksetup|,
+% \S~\ref{sec:draftmark})..
+% \begin{example}
+% We \ifdraftwatermark{are}{aren't} in draftwatermark mode!
+% \end{example}
+%
+% \begin{command}
+% `\cs{ifdaring}\marg{daring-action}\marg{wimpy-action}'
+% \end{command}
+% \DescribeMacro{\ifdaring}
+% \DescribeMacro{\DUTifdaring}
+% Include \Lopt{daring}-specific code, with wimpy fallbacks.
+% \begin{example}
+% \ifdaring{\singlespacing Muahahahaha!}{mumble mumble}.
+% \end{example}
+%
+% \begin{command}
+% `\cs{drexellogobw}'
+% \end{command}
+% \DescribeMacro{\drexellogobw}
+% Draws a black-and-white official vector Drexel logo. The image is
+% exactly 1~inch wide and 1.016~inches tall. This is accomplished
+% using the \pkg{tikz} package (\S~\ref{sec:tikz}). You can enclose
+% this command in a |\scalebox| to alter its size.
+%
%
% \subsection{Environments}
%
+% To help deal with name collisions, all \cls{drexel-thesis}
+% environments have ``secret'' aliases. For example, |preamble| can
+% also be used as |DUTpreamble|. This is useful if one of your
+% packages clobbers a \cls{drexel-thesis} environment, but you still
+% want to use the original.
+% \begin{example}
+% \documentclass{drexel-thesis}
+% \renewenvironment{preamble}{%
+% What preamble?\begingroup\color{white}}{\endgroup}
+% \begin{document}
+% \begin{DUTpreamble}
+% Thwarted again, evil one!
+% ...
+% \end{example}
+%
+%
% \DescribeEnv{preamble}
+% \DescribeEnv{DUTpreamble}
% Generalize the |\frontmatter| for the thesis, setting up page
% numbering, including the title page, copyright page etc. The
% |preamble| environment should contain the following elements
% \item |\listoffigures|
% \item |abstract| environment
% \end{itemize}
-% This will take care of everything from the title page (Manual 3.1),
-% up through the blank page before the text (Manual 3.9).
+% This will take care of everything from the title page (Manual \S 3.1),
+% up through the blank page before the text (Manual \S 3.9).
%
% \DescribeEnv{dedications}
+% \DescribeEnv{DUTdedications}
% Set the dedications text.
-% Highlights from the Manual 3.3 p9:
+% Highlights from the Manual \S 3.3 p9:
% \begin{quote}
% The |Dedications| page is optional.
% \end{quote}
%
% \DescribeEnv{acknowledgments}
+% \DescribeEnv{DUTacknowledgments}
% Set the acknowledgments text.
-% Highlights from the Manual 3.4 p9:
+% Highlights from the Manual \S 3.4 p9:
% \begin{quote}
% The |Acknowledgments| page is optional, but most theses do
% include a brief statement of thanks or recognition of any special
% \end{quote}
%
% \DescribeEnv{abstract}
-% Set the thesis abstract text. In the Thesis Manual, see section 3.8
+% \DescribeEnv{DUTabstract}
+% Set the thesis abstract text. In the Thesis Manual, see \S 3.8
% Abstract (p10) for details, p20 for an example.
%
% Highlights from the Manual:
% \end{itemize}
%
% \DescribeEnv{thesis}
-% Set the thesis text. In the Thesis Manual, see section 3.10 Thesis
-% (p11) for details.
+% \DescribeEnv{DUTthesis}
+% Set the thesis text. In the Thesis Manual, see \S 3.10 Thesis (p11)
+% for details.
%
% Highlights from the Manual:
% \begin{quote}
% \end{quote}
%
% \DescribeEnv{vita}
-% Set the thesis vita text (Ph.D.\ only). See the Manual 3.15 p12,
+% \DescribeEnv{DUTvita}
+% Set the thesis vita text (Ph.D.\ only). See the Manual \S 3.15 p12,
% ``Vita'', for details.
%
% Highlights from the Manual:
%
% \subsubsection{Tables and Figures}
%
-% From the Manual 2.3 p6, ``Tables and Figures'',
-% \begin{quote}
-% Place figure captions below figures.
-% Place table captions above tables.
-% \end{quote}
-% so make sure the |\caption| command is in the appropriate location.
-% For example
+% \pkg{drexel-thesis} loads
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/graphics/}{\pkg{graphicx}}
+% to define the |\includegraphics| macro,
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/caption/}{\pkg{caption}}
+% for pretty caption formatting,
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/floatrow/}{\pkg{floatrow}}
+% for placing captions, and
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/}{\pkg{hypcap}}
+% for placing caption anchors.
+%
+% Simple float definitions will look like
% \begin{example}
% \begin{table}
% \caption{Some caption text}
% \caption{Some caption text}
% \end{float}
% \end{example}
-% Note that you'll want to use the
-% \href{http://www.ctan.org/tex-archive/macros/latex/required/graphics/}{\pkg{graphicx}}
-% package to define the |\includegraphics| macro. For more useful
-% float information, see the
-% \href{http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions}{\LaTeX wikibook page}.
-%
+% For more useful float information, see the examples in \S
+% \ref{sec:better-example-part} and the
+% \href{http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions}
+% {\LaTeX\ wikibook page}.
+%
%
% \subsubsection{Citations}
%
% I highly recommend using \BibTeX\ and
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/}{\pkg{natbib}}.
-% See Section \ref{sec:natbib-example} for a simple example.
+% See \S \ref{sec:better-example} for a simple example.
%
% Suggested options:\\
% \begin{tabular}{r p{0.8\textwidth}}
%
% \subsubsection{References}
%
+% Easier cross referencing with
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/cleveref/}{\pkg{cleveref}}.
-% Is a wonderful tool for easy, consistent crosslinking. The manual is also very good.
+% Is a wonderful tool for easy, consistent crosslinking via |\cref|,
+% |\Cref|, etc.. The manual is also very good.
+% Note that if you use |\part|s in your document, you need to tell
+% \pkg{cleveref} how to deal with them:
+% \begin{example}
+% \usepackage{cleveref}
+% \crefname{part}{part}{parts}
+% \end{example}
%
%
% \subsubsection{Hyperlinks}
%
% \cls{drexel-thesis} loads
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/}{\pkg{hyperref}}.
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/}{%
+% \pkg{hyperref}}.
% with the options:\\
% \begin{tabular}{r p{0.8\textwidth}}
% |colorlinks| & color the link letters instead of drawing colored boxes. \\
% \end{tabular}
%
+% The default \pkg{hyperref} colors can be a bit jarring. Feel free
+% to use \Lopt{blackref} or override them yourself:
+% \begin{example}
+% \usepackage{xcolor}
+% \definecolor{dark-gray}{gray}{0.3}
+% \hypersetup{citecolor=dark-gray}
+% \end{example}
+% See
+% \href{http://mirror.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf}{%
+% the hyperref manual} (\S 3.4 Extension options)
+% for a list of |*color| options.
+%
% If running with a pdftex-based driver, |\author|, |\title|, and
% |\degree| automatically set |pdfauthor|, |pdftitle|, and
% |pdfsubject| respectively. You can use the |\hypersetup| macro to
% set options overriding these defaults.
%
%
+% \subsubsection{Developing large \LaTeX\ documents}
+%
+% A thesis may take a while to compile, especially if it contains
+% lots of images, etc.. One way to save time, is to use |\includeonly|
+% when including chapter \file{*.tex} files (see
+% \href{http://en.wikibooks.org/wiki/TeX/includeonly}{the \TeX\ Wikibook}).
+% Usage would be something like
+% \begin{example}
+% \documentclass{drexel-thesis}
+% ...
+% \includeonly{chapter2.tex,chapter3.tex}
+% \begin{document}
+% ...
+% \begin{thesis}
+% \include{chapter1.tex}
+% \include{chapter2.tex}
+% \include{chapter3.tex}
+% \include{chapter4.tex}
+% \end{thesis}
+% ...
+% \end{document}
+% \end{example}
+% which would only compile chapters two and three. Don't confuse the
+% similar commands |\include| and |\input|. The more fundamental
+% |\input| just inserts the file contents at that point, while
+% |\include|
+% \begin{itemize}
+% \item may only be used after |\begin{document}|
+% \item acts like |\clearpage \input{} \clearpage|
+% \item will not crash on nonexistent files
+% \end{itemize}
+%
+%
% \StopEventually{\pagebreak\PrintChanges}
%
%
+% \subsubsection{Passing options to packages used by \textsf{drexel-thesis}}
+%
+%
+% \cls{drexel-thesis} uses a number of \LaTeX\ packages internally to
+% format your thesis. Sometimes you also want to use these packages
+% directly, but \cls{drexel-thesis} is not passing them the option(s)
+% you need. The way to deal with these issues is
+% \href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=optionclash}{%
+% \cs{PassOptionsToPackage}}.
+% \begin{command}
+% `\cs{PassOptionsToPackage}\marg{option,...}\marg{package}'
+% \end{command}
+% For example, if you need to pass \Lopt{table} to \pkg{xcolor}, use:
+% \begin{example}
+% \PassOptionToPackage{table}{xcolor}
+% \documentclass{drexel-thesis}
+% \end{example}
+% Note that you need to call \cs{PassOptionsToPackage} before the
+% target package is imported via \cs{documentclass}.
+%
+%
% \section{Implementation}
-% \iffalse meta-comment
+% \begin{macrocode}
%<*class>
-% \fi
+% \end{macrocode}
%
% For simplicity, we'll derive everything from the standard \cls{book}
% class.
% Include
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xkeyval/}{\pkg{xkeyval}}
% for easier option parsing. If the package is not installed on your system,
-% see Section \ref{sec:dependencies} for installation instructions.
+% see \S \ref{sec:dependencies} for installation instructions.
% \begin{macrocode}
\RequirePackage{xkeyval}
% \end{macrocode}
% Define some booleans to store option states
% \begin{macrocode}
\newif\if@mainmatter \@mainmattertrue
+\newif\if@DUT@subfigopt
+\newif\if@DUT@pagebreak
\newif\if@dottedchapter
\newif\if@boldchapter
\newif\if@boldpart
\newif\if@dottedpart
+\newif\if@indenttoc
+\newif\if@blackref
\newif\if@draftwatermark
-\newif\if@appendix
-\newif\if@final \@finalfalse
+\newif\if@xdraftwatermark
+\newif\if@indentfirst
+\newif\if@final
+\newif\if@daring
+\newif\if@approvalform
+% \end{macrocode}
+%
+% \begin{macro}{\iffinal}
+% \begin{macro}{\DUTiffinal}
+% Setup a user-friendly means for including \Lopt{final}- or
+% \Lopt{draft}-specific code.
+% \changes{0.7}{2010/03/14}{W.~Trevor King added iffinal macro.}
+% \changes{0.15}{2011/04/22}{W.~Trevor King added DUTiffinal macro.}
+% \begin{macrocode}
+\newcommand\iffinal[2]{\if@final #1\else #2\fi}
+\let\DUTiffinal\iffinal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifdraftwatermark}
+% \begin{macro}{\DUTifdraftwatermark}
+% Setup a user-friendly means for including
+% \Lopt{draftwatermark}-specific code (e.g. |\draftmarksetup|,
+% \S~\ref{sec:draftmark}).
+% \changes{0.15}{2011/04/22}{W.~Trevor King added ifdraftwatermark macro.}
+% \changes{0.15}{2011/04/22}{W.~Trevor King added DUTifdraftwatermark macro.}
+% \begin{macrocode}
+\newcommand\ifdraftwatermark[2]{\if@draftwatermark #1\else #2\fi}
+\let\DUTifdraftwatermark\ifdraftwatermark
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifdaring}
+% \begin{macro}{\DUTifdaring}
+% Setup a user-friendly means for including \Lopt{daring}-specific
+% code.
+% \changes{0.11}{2010/06/04}{W.~Trevor King added ifdaring macro.}
+% \changes{0.15}{2011/04/22}{W.~Trevor King added DUTifdaring macro.}
+% \begin{macrocode}
+\newcommand\ifdaring[2]{\if@daring #1\else #2\fi}
+\let\DUTifdaring\ifdaring
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DUT@makeapprovalform}
+% Typesets the T-1 thesis/dissertation approval form.
+% \changes{0.14}{2010/09/21}{Evan Sultanik added macro.}
+% \begin{macrocode}
+\newcommand\DUT@makeapprovalform{
+ \thispagestyle{empty}
+ \begingroup
+ \newlength{\tempskipa}
+ \newlength{\tempskipb}
+% \end{macrocode}
+% Don't indent paragraphs on this page.
+% \begin{macrocode}
+ \parindent \z@
+% \end{macrocode}
+% Setup $\mbox{tempskipa} = \mbox{logo width} + \mbox{4pt}$ and
+% $\mbox{tempskipb} = \mbox{textwidth} - \mbox{tempskipa} -
+% \mbox{4pt}$. The first |pt| ensures the logo will fit in the left
+% column; the second provides some buffer space between the minipages.
+% \begin{macrocode}
+ \settowidth{\tempskipa}{\drexellogobw}
+ \addtolength{\tempskipa}{1em}
+ \setlength{\tempskipb}{\textwidth}
+ \addtolength{\tempskipb}{-\tempskipa}
+ \addtolength{\tempskipb}{-1em}
+% \end{macrocode}
+% Add the logo and form title in columns. Each column is in a minipage.
+% \begin{macrocode}
+ \begin{minipage}[c]{\tempskipa}
+% \end{macrocode}
+% |\raisebox| drops the logo so that the image is centered on the baseline.
+% \begin{macrocode}
+ \raisebox{-0.5\height}{\drexellogobw}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{\tempskipb}
+% \end{macrocode}
+% Unlike |\newline| or |\\|, |\linebreak| justifies the current line
+% before requesting a newline.
+% \begin{macrocode}
+ \textbf{\Huge Office of Graduate Studies} \linebreak
+ \vskip 0.1\baselineskip
% \end{macrocode}
+% The original form lacks the spaces around the slash (|/|), but
+% \LaTeX's font and kerning make the second line more compact in our
+% version. Allowing stretchy spaces around the slash helps the second
+% line look more balanced.
+% \begin{macrocode}
+ \textbf{\LARGE Dissertation / Thesis Approval Form} \linebreak
+ \end{minipage}
+
+ \vskip 2\baselineskip
+
+ This form is for use by all doctoral and master's students with a
+ dissertation/thesis requirement. Please print clearly as the
+ library will bind a copy of this form with each copy of the
+ dissertation/thesis. All doctoral dissertations must conform to
+ university format requirements, which is the responsibility of the
+ student and supervising professor. Students should obtain a copy of
+ the Thesis Manual located on the library website.
+
+ \vspace*{\fill}
+% \end{macrocode}
+% Setup $\mbox{tempskipb} = \mbox{left column width}$ and
+% $\mbox{tempskipa} = \mbox{textwidth} - \mbox{tempskipb} -
+% \mbox{4em}$. The |4em| provides some buffer space between the
+% columns.
+% \begin{macrocode}
+ \settowidth{\tempskipb}{Dissertation/Thesis Title:}
+ \setlength{\tempskipa}{\textwidth}
+ \addtolength{\tempskipa}{-\tempskipb}
+ \addtolength{\tempskipa}{-4em}
+% \end{macrocode}
+% Double space the student-contolled section to allow plenty of space
+% for hand-written entries.
+% \begin{macrocode}
+ \begin{spacing}{2}
+ \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} l p{\tempskipa}}
+ \textbf{Dissertation/Thesis Title:} & \@DUT@title \\
+ \textbf{Author:} & \@DUT@author
+ \end{tabular*}
+
+ \vspace*{\fill}
+
+ \begin{center}
+ \textbf{This dissertation/thesis is hereby accepted and approved.}
+ \end{center}
+
+ \vspace*{\fill}
+
+ \textbf{Signatures:} \\
+ Examining Committee \\
+% \end{macrocode}
+% The left most column is left blank and the stretchy space between
+% columns indents the middle column. I think this looks bad, but
+% that's how Drexel's version of the T-1 form looks.
+% \begin{macrocode}
+ \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} p{0pt} l p{\tempskipa}}
+ & Chair & \hrulefill \\
+ & Members & \hrulefill \\
+ & & \hrulefill \\
+ & & \hrulefill \\
+ & & \hrulefill \\
+ & & \hrulefill \\
+ & Academic Advisor & \hrulefill \\
+ & Department Head & \hrulefill
+ \end{tabular*}
+
+ \vspace*{\fill}
+ \end{spacing}
+
+ \begin{center}\scriptsize
+ Office of Graduate Studies
+ $\bullet$ 3141 Chestnut St.
+ $\bullet$ Randell Hall 240
+ $\bullet$ Philadelphia, PA 19104 \\
+ \textbf{Tel.}: 215-895-0366
+ $\bullet$ \textbf{Fax}: 215-895-0495
+ $\bullet$ \textbf{Email}:
+ \href{mailto:graduate@drexel.edu}{graduate@drexel.edu}
+ $\bullet$ \textbf{Web}:
+ \href{http://www.drexel.edu/provost/graduatestudies/}{%
+ www.drexel.edu/provost/graduatestudies}
+ \end{center}
+ \endgroup
+ \pagebreak
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\drexellogobw}
+% Draws a vector art official black-and-white Drexel logo. The image
+% is exactly 1~inch wide and 1.016~inches tall.
+% \changes{0.14}{2010/09/21}{Evan Sultanik added macro.}
+% \begin{macrocode}
+\newcommand\drexellogobw{
+ \begin{tikzpicture}[y=0.8pt, x=0.8pt,yscale=-1, inner sep=0pt, outer sep=0pt]
+ \begin{scope}[cm={{1.25,0.0,0.0,-1.25,(-332.5,550.73629)}},]
+ \path[fill=black,nonzero rule] (266.0000,367.4100) -- (338.0000,367.4100) --
+ (338.0000,440.5890) -- (266.0000,440.5890) -- (266.0000,367.4100) -- cycle;
+ \path[fill=white,nonzero rule] (269.3171,377.0107) -- (334.8469,377.0107) --
+ (334.8469,438.7106) -- (269.3171,438.7106) -- (269.3171,377.0107) -- cycle;
+ \path[fill=black,nonzero rule] (330.2168,398.2540) .. controls
+ (328.9195,397.9603) and (327.1082,397.5687) .. (326.0555,397.4220) --
+ (326.0555,396.7855) .. controls (327.6468,396.6388) and (327.6956,396.6388) ..
+ (327.6956,395.1942) -- (327.6956,383.2000) .. controls (327.6956,381.8537) and
+ (327.5489,381.7070) .. (326.0313,381.5600) -- (326.0313,380.8747) --
+ (331.9060,380.8747) -- (331.9060,381.5600) .. controls (330.3147,381.7070) and
+ (330.2168,381.8537) .. (330.2168,383.2000) -- (330.2168,398.2540) --
+ cycle(319.4750,387.8511) .. controls (319.6711,389.6870) and
+ (320.6989,390.8372) .. (321.7273,390.8372) .. controls (322.8042,390.8372) and
+ (323.5629,389.5642) .. (323.5629,388.5852) .. controls (323.5629,388.0466) and
+ (323.4650,387.8999) .. (323.1225,387.8999) -- (319.4750,387.8511) --
+ cycle(325.6436,383.5183) .. controls (324.6889,382.7839) and
+ (323.9057,382.4902) .. (323.0734,382.4902) .. controls (321.2375,382.4902) and
+ (319.3037,383.7632) .. (319.3528,386.8472) .. controls (322.0207,386.9454) and
+ (325.1787,387.1900) .. (325.5215,387.2391) .. controls (325.9865,387.3367) and
+ (326.0352,387.3858) .. (326.0352,388.2915) .. controls (326.0352,390.0540) and
+ (324.4443,391.7920) .. (322.3881,391.7920) .. controls (319.1570,391.7920) and
+ (316.8805,388.7813) .. (316.9296,385.7212) .. controls (316.9784,382.8575) and
+ (318.8630,380.5809) .. (322.0698,380.5809) .. controls (322.7551,380.5809) and
+ (324.5910,381.0704) .. (325.9865,383.1021) -- (325.6436,383.5183) --
+ cycle(312.6069,391.4983) -- (312.6069,390.8130) -- (313.2434,390.7393) ..
+ controls (313.7084,390.6659) and (313.5859,390.3968) .. (313.2188,389.7848) ..
+ controls (312.8518,389.1729) and (312.4111,388.5118) .. (311.9216,387.8265) --
+ (310.5019,389.9561) .. controls (310.1836,390.4210) and (310.2327,390.6659) ..
+ (310.6485,390.7147) -- (311.2851,390.8129) -- (311.2851,391.4982) --
+ (305.8754,391.4982) -- (305.8754,390.8129) .. controls (307.1972,390.6659) and
+ (307.3684,390.5680) .. (308.1762,389.3195) -- (310.4527,385.7948) .. controls
+ (309.6938,384.7667) and (308.9839,383.8365) .. (308.4211,383.1021) .. controls
+ (307.3930,381.7803) and (307.0259,381.7557) .. (305.6304,381.5599) --
+ (305.6304,380.8746) -- (310.2327,380.8746) -- (310.2327,381.5599) --
+ (309.5225,381.6824) .. controls (309.1309,381.7557) and (309.0576,381.9027) ..
+ (309.4492,382.5635) .. controls (309.9142,383.3470) and (310.4528,384.1547) ..
+ (310.9914,384.9379) -- (312.5824,382.5147) .. controls (312.9006,382.0252) and
+ (312.8761,381.7069) .. (312.4353,381.6581) -- (311.7258,381.5599) --
+ (311.7258,380.8746) -- (317.5271,380.8746) -- (317.5271,381.5599) .. controls
+ (316.2053,381.7069) and (315.8867,381.8048) .. (314.9323,383.2491) --
+ (312.4599,386.9942) .. controls (313.3168,388.1693) and (314.0021,389.0259) ..
+ (314.2715,389.3683) .. controls (315.2997,390.6168) and (315.5934,390.6659) ..
+ (317.1355,390.8129) -- (317.1355,391.4982) -- (312.6069,391.4982) --
+ cycle(299.3927,387.8511) .. controls (299.5885,389.6870) and
+ (300.6166,390.8372) .. (301.6447,390.8372) .. controls (302.7220,390.8372) and
+ (303.4806,389.5642) .. (303.4806,388.5852) .. controls (303.4806,388.0466) and
+ (303.3827,387.8999) .. (303.0402,387.8999) -- (299.3927,387.8511) --
+ cycle(305.5614,383.5183) .. controls (304.6066,382.7839) and
+ (303.8234,382.4902) .. (302.9911,382.4902) .. controls (301.1552,382.4902) and
+ (299.2215,383.7632) .. (299.2706,386.8472) .. controls (301.9384,386.9454) and
+ (305.0961,387.1900) .. (305.4389,387.2391) .. controls (305.9039,387.3367) and
+ (305.9530,387.3858) .. (305.9530,388.2915) .. controls (305.9530,390.0540) and
+ (304.3617,391.7920) .. (302.3058,391.7920) .. controls (299.0745,391.7920) and
+ (296.7982,388.7813) .. (296.8470,385.7212) .. controls (296.8961,382.8575) and
+ (298.7808,380.5809) .. (301.9876,380.5809) .. controls (302.6729,380.5809) and
+ (304.5087,381.0704) .. (305.9039,383.1021) -- (305.5614,383.5183) --
+ cycle(292.7087,391.8408) .. controls (291.4360,391.4492) and
+ (289.8205,391.1067) .. (288.6211,390.9109) -- (288.6211,390.3477) .. controls
+ (290.1387,390.2007) and (290.1875,390.1519) .. (290.1875,388.6585) --
+ (290.1875,383.2000) .. controls (290.1875,381.8537) and (290.0408,381.7070) ..
+ (288.5965,381.5600) -- (288.5965,380.8747) -- (294.6428,380.8747) --
+ (294.6428,381.5600) .. controls (292.8557,381.7070) and (292.7087,381.8537) ..
+ (292.7087,383.2000) -- (292.7087,388.1448) .. controls (293.2476,389.2217) and
+ (293.8105,389.5154) .. (294.2266,389.5154) .. controls (294.6182,389.5154) and
+ (295.0098,389.3196) .. (295.3526,388.9771) .. controls (295.4993,388.8301) and
+ (295.7930,388.7813) .. (296.0625,388.8789) .. controls (296.6253,389.0993) and
+ (297.0660,389.8091) .. (297.0660,390.4211) .. controls (297.0660,391.1067) and
+ (296.4298,391.8408) .. (295.5484,391.8408) .. controls (294.3487,391.8408) and
+ (293.3697,390.2986) .. (292.7823,389.3684) -- (292.7086,389.3684) --
+ (292.7086,391.8408) -- cycle(276.3892,394.4356) .. controls
+ (276.3892,395.0721) and (276.3892,395.5125) .. (276.5362,395.6350) .. controls
+ (276.6829,395.7574) and (277.3194,395.8553) .. (278.1272,395.8553) .. controls
+ (282.0438,395.8553) and (284.6874,394.0440) .. (284.6874,388.8055) .. controls
+ (284.6874,384.7422) and (282.5821,381.8782) .. (278.5188,381.8782) .. controls
+ (276.6341,381.8782) and (276.3892,382.3435) .. (276.3892,384.5952) --
+ (276.3892,394.4356) -- cycle(271.6405,396.7855) -- (271.6405,396.0999) ..
+ controls (273.4518,395.9532) and (273.6476,395.7574) .. (273.6476,393.1138) --
+ (273.6476,384.5464) .. controls (273.6476,381.9028) and (273.4518,381.7070) ..
+ (271.4447,381.5599) -- (271.4447,380.8746) -- (277.4419,380.8746) .. controls
+ (283.1695,380.8746) and (287.8206,383.5183) .. (287.8206,389.5399) .. controls
+ (287.8206,391.6941) and (286.8903,393.5054) .. (285.7643,394.6314) .. controls
+ (284.1488,396.1981) and (281.6522,396.7855) .. (278.9104,396.7855) --
+ (271.6405,396.7855);
+ \path[fill=white,nonzero rule] (277.1649,373.9784) -- (277.1649,371.3099) ..
+ controls (277.1649,370.4792) and (277.1239,369.7235) .. (276.0893,369.7235) ..
+ controls (275.0546,369.7235) and (275.0137,370.4792) .. (275.0137,371.3099) --
+ (275.0137,373.9784) -- (273.9584,373.9784) -- (273.9584,370.9013) .. controls
+ (273.9584,369.5942) and (274.8978,368.9613) .. (276.0893,368.9613) .. controls
+ (277.2808,368.9613) and (278.2201,369.5942) .. (278.2201,370.9013) --
+ (278.2201,373.9784) -- (277.1649,373.9784);
+ \path[fill=white,nonzero rule] (285.3943,369.0631) -- (285.3943,373.9784) --
+ (284.4072,373.9784) -- (284.4072,370.1253) -- (284.3933,370.1119) --
+ (282.5215,373.9785) -- (280.9557,373.9785) -- (280.9557,369.0632) --
+ (281.9429,369.0632) -- (281.9429,373.1344) -- (281.9563,373.1482) --
+ (283.8966,369.0632) -- (285.3943,369.0632);
+ \path[fill=white,nonzero rule] (287.9938,369.0631) -- (289.0489,369.0631) --
+ (289.0489,373.9783) -- (287.9938,373.9783) -- (287.9938,369.0631) -- cycle;
+ \path[fill=white,nonzero rule] (293.1186,369.0631) -- (294.2692,369.0631) --
+ (296.0802,373.9784) -- (295.0383,373.9784) -- (293.7518,370.1047) --
+ (293.7380,370.1047) -- (292.4581,373.9784) -- (291.3076,373.9784) --
+ (293.1186,369.0631);
+ \path[fill=white,nonzero rule] (298.3125,369.0631) -- (301.6824,369.0631) --
+ (301.6824,369.8804) -- (299.3678,369.8804) -- (299.3678,371.1940) --
+ (301.4647,371.1940) -- (301.4647,372.0109) -- (299.3678,372.0109) --
+ (299.3678,373.1615) -- (301.6078,373.1615) -- (301.6078,373.9784) --
+ (298.3125,373.9784) -- (298.3125,369.0631);
+ \path[fill=white,nonzero rule] (305.3086,373.1615) -- (306.1936,373.1615) ..
+ controls (306.6566,373.1545) and (306.9291,372.9710) .. (306.9291,372.5352) ..
+ controls (306.9291,372.0997) and (306.6566,371.8682) .. (306.1936,371.8613) --
+ (305.3086,371.8613) -- (305.3086,373.1615) -- cycle(305.3086,371.0444) --
+ (306.4251,371.0444) .. controls (306.7722,371.0306) and (306.8403,370.6564) ..
+ (306.8675,370.3840) .. controls (306.9153,369.9413) and (306.9631,369.4989) ..
+ (307.0515,369.0631) -- (308.2158,369.0631) .. controls (308.0181,369.3356) and
+ (307.9771,369.9141) .. (307.9297,370.2275) .. controls (307.8413,370.9082) and
+ (307.8413,371.4052) .. (307.0309,371.4936) -- (307.0309,371.5074) .. controls
+ (307.6369,371.6368) and (308.0521,372.0588) .. (308.0521,372.6986) .. controls
+ (308.0521,373.6995) and (307.1877,373.9719) .. (306.3436,373.9785) --
+ (304.2533,373.9785) -- (304.2533,369.0632) -- (305.3086,369.0632) --
+ (305.3086,371.0444);
+ \path[fill=white,nonzero rule] (314.2601,372.5761) .. controls
+ (314.2601,373.5633) and (313.5181,374.0806) .. (312.5650,374.0806) .. controls
+ (311.5572,374.0806) and (310.5225,373.5836) .. (310.5225,372.4605) .. controls
+ (310.5225,371.5889) and (311.4619,371.2759) .. (312.1495,371.1056) .. controls
+ (312.5719,370.9969) and (313.2729,370.9560) .. (313.2729,370.3771) .. controls
+ (313.2729,369.8529) and (312.7146,369.7235) .. (312.2926,369.7235) .. controls
+ (311.7412,369.7235) and (311.4282,370.0912) .. (311.4691,370.6358) --
+ (310.3932,370.6358) .. controls (310.3592,369.3968) and (311.1558,368.9613) ..
+ (312.2792,368.9613) .. controls (313.3341,368.9613) and (314.3963,369.3834) ..
+ (314.3963,370.6017) .. controls (314.3963,371.5889) and (313.2935,371.8001) ..
+ (312.5447,371.9906) .. controls (312.1227,372.0928) and (311.6459,372.1540) ..
+ (311.6459,372.6851) .. controls (311.6459,373.1140) and (312.0408,373.3184) ..
+ (312.4288,373.3184) .. controls (312.9393,373.3184) and (313.2048,373.0731) ..
+ (313.2457,372.5761) -- (314.2601,372.5761);
+ \path[fill=white,nonzero rule] (316.8870,369.0631) -- (317.9422,369.0631) --
+ (317.9422,373.9783) -- (316.8870,373.9783) -- (316.8870,369.0631) -- cycle;
+ \path[fill=white,nonzero rule] (320.2146,373.1615) -- (321.6782,373.1615) --
+ (321.6782,369.0631) -- (322.7335,369.0631) -- (322.7335,373.1615) --
+ (324.1971,373.1615) -- (324.1971,373.9784) -- (320.2146,373.9784) --
+ (320.2146,373.1615);
+ \path[fill=white,nonzero rule] (327.7961,369.0631) -- (328.8511,369.0631) --
+ (328.8511,370.6701) -- (330.5056,373.9784) -- (329.4231,373.9784) --
+ (328.3881,371.7251) -- (327.3741,373.9784) -- (326.1417,373.9784) --
+ (327.7961,370.6701) -- (327.7961,369.0631);
+ \path[fill=black,nonzero rule] (317.2675,431.5469) .. controls
+ (316.1860,431.3992) and (315.2214,430.7506) .. (314.6366,429.7477) .. controls
+ (314.1108,428.7739) and (313.9058,427.3581) .. (314.6661,426.4142) .. controls
+ (315.0459,425.9718) and (315.5138,425.6179) .. (316.0986,425.5884) .. controls
+ (317.6768,425.7655) and (318.7000,427.4174) .. (320.2199,427.8005) .. controls
+ (321.2140,428.1250) and (322.0325,427.5647) .. (322.7342,427.0042) .. controls
+ (323.2604,426.6797) and (323.9912,426.7681) .. (324.4882,427.0926) .. controls
+ (322.8511,425.7652) and (321.7401,423.7889) .. (321.5650,421.6357) .. controls
+ (321.3308,422.6386) and (320.7169,423.7299) .. (319.7232,424.0839) .. controls
+ (318.6126,424.4971) and (317.6480,423.8183) .. (316.8877,423.0810) .. controls
+ (316.1864,422.3436) and (315.8940,421.3997) .. (315.5138,420.5146) .. controls
+ (316.0400,420.9868) and (316.6834,421.6063) .. (317.4725,421.7536) .. controls
+ (318.4665,422.0486) and (319.4020,421.7241) .. (320.1911,421.1344) .. controls
+ (320.4540,420.8689) and (320.7759,420.6328) .. (320.8927,420.2199) .. controls
+ (319.8990,419.5415) and (319.5772,418.3909) .. (319.6358,417.1814) .. controls
+ (319.3142,418.1254) and (318.9636,419.2760) .. (317.8818,419.6889) .. controls
+ (317.1801,419.9839) and (316.3032,419.8955) .. (315.7479,419.3054) .. controls
+ (315.2800,418.8038) and (315.2509,418.0075) .. (315.3678,417.3291) .. controls
+ (315.8062,415.4120) and (317.5602,414.2909) .. (319.2265,413.7304) .. controls
+ (320.9514,413.1109) and (322.5299,411.5180) .. (322.7345,409.6304) .. controls
+ (322.9978,409.6893) and (323.4362,409.8956) .. (323.6700,409.6006) .. controls
+ (323.9329,410.4856) and (324.3422,411.6362) .. (325.3945,411.9309) .. controls
+ (326.1545,412.2262) and (326.9439,411.9309) .. (327.5287,411.4001) .. controls
+ (328.1426,410.7217) and (328.4350,409.8366) .. (328.2595,408.8927) .. controls
+ (328.1717,408.5093) and (327.9962,408.1553) .. (327.7625,407.8308) .. controls
+ (327.8502,408.2732) and (327.9088,408.9814) .. (327.6164,409.3943) .. controls
+ (327.3823,409.7188) and (327.0316,409.9548) .. (326.6515,409.9548) .. controls
+ (326.3594,409.9843) and (326.1548,409.8075) .. (326.0084,409.5714) .. controls
+ (325.6869,408.1258) and (327.4995,407.7424) .. (327.5578,406.3856) .. controls
+ (327.5873,405.6482) and (327.2949,404.9695) .. (326.6518,404.6453) .. controls
+ (325.9505,404.3503) and (325.1902,404.6155) .. (324.6932,405.1466) .. controls
+ (324.4303,405.3824) and (324.2256,405.6777) .. (324.1087,405.9724) .. controls
+ (324.6346,405.7072) and (325.5995,405.4416) .. (326.1548,405.9433) .. controls
+ (326.4180,406.1790) and (326.5346,406.4740) .. (326.5346,406.8280) .. controls
+ (326.5932,407.3591) and (326.1839,407.8014) .. (325.8333,408.0964) .. controls
+ (325.5114,408.3325) and (325.1607,408.4798) .. (324.7515,408.5388) .. controls
+ (324.9856,408.0669) and (324.9564,407.4180) .. (324.6346,407.0051) .. controls
+ (324.1087,406.2677) and (323.1733,406.3264) .. (322.3547,406.4151) .. controls
+ (321.4779,404.2030) and (319.0516,403.0230) .. (316.8884,402.4330) --
+ (315.3098,402.3151) .. controls (316.3039,401.6956) and (317.3562,401.2234) ..
+ (318.4086,400.7222) .. controls (318.9639,401.7251) and (319.7530,402.8458) ..
+ (320.9517,403.0819) .. controls (321.8285,403.1998) and (322.6471,402.9048) ..
+ (323.1441,402.1969) .. controls (323.5534,401.4595) and (323.8163,400.4566) ..
+ (323.4657,399.6011) -- (323.0855,398.8932) .. controls (323.2610,399.5421) and
+ (323.0563,400.3682) .. (322.5011,400.8695) .. controls (322.2087,401.1056) and
+ (321.8285,401.2234) .. (321.4484,401.1645) .. controls (321.0977,401.1056) and
+ (320.7471,400.8695) .. (320.6302,400.5156) .. controls (320.2500,398.7753) and
+ (322.8226,398.7458) .. (322.5302,396.9761) .. controls (322.4719,396.5039) and
+ (322.2673,396.1205) .. (321.8580,395.7961) .. controls (321.2444,395.2948) and
+ (320.1331,395.2358) .. (319.4026,395.6192) .. controls (318.9348,395.7961) and
+ (318.5255,396.1795) .. (318.1457,396.5039) .. controls (317.5609,396.1795) and
+ (316.6546,396.1503) .. (316.1284,396.6221) .. controls (315.3393,397.2711) and
+ (315.1930,398.2147) .. (314.9592,399.1292) .. controls (311.7435,400.3977) and
+ (308.7325,402.2561) .. (306.2186,404.9698) .. controls (304.4354,406.8872) and
+ (303.6460,409.5125) .. (304.0553,412.1968) .. controls (304.4646,414.6744) and
+ (304.2305,417.5357) .. (302.0966,419.0108) .. controls (301.1026,419.5415) and
+ (299.8161,419.8071) .. (298.7055,419.3647) .. controls (297.5945,418.8929) and
+ (296.8346,417.6539) .. (296.8054,416.4150) .. controls (296.8640,414.2026) and
+ (298.0919,412.3444) .. (299.0860,410.4565) .. controls (300.0214,408.2146) and
+ (299.6121,405.4122) .. (297.8581,403.7607) .. controls (296.4842,402.0793) and
+ (294.5259,401.5780) .. (293.0057,400.1914) .. controls (292.8010,399.9848) and
+ (292.7136,399.6606) .. (292.8305,399.3951) .. controls (293.3275,398.7462) and
+ (294.2921,398.7462) .. (295.1107,398.8051) .. controls (296.8644,399.1296) and
+ (298.1796,400.4570) .. (299.8459,400.9288) .. controls (300.8986,401.0764) and
+ (301.9215,400.7225) .. (302.4771,399.8080) .. controls (302.6817,399.4246) and
+ (302.8569,398.9230) .. (302.7109,398.4511) .. controls (302.5648,397.9790) and
+ (302.2138,397.5367) .. (301.8046,397.3300) .. controls (301.5416,397.2122) and
+ (301.1615,397.2416) .. (300.8691,397.2711) .. controls (301.2201,397.3893) and
+ (301.6585,397.6546) .. (301.7754,398.1264) .. controls (301.8631,398.5101) and
+ (301.7463,398.9230) .. (301.4830,399.2180) .. controls (301.1615,399.5130) and
+ (300.8108,399.6607) .. (300.3724,399.6607) .. controls (300.6353,399.3359) and
+ (300.8691,398.8935) .. (300.8108,398.3919) .. controls (300.6939,397.6251) and
+ (300.1678,396.8877) .. (299.4075,396.6811) .. controls (299.0277,396.5633) and
+ (298.6475,396.7106) .. (298.3260,396.9172) .. controls (298.0339,397.1533) and
+ (297.9167,397.4188) .. (297.7707,397.7138) .. controls (297.9753,397.5072) and
+ (298.2383,397.3599) .. (298.5306,397.3893) .. controls (298.9399,397.4482) and
+ (299.2323,397.6840) .. (299.3783,398.0678) .. controls (299.4661,398.3330) and
+ (299.4661,398.6873) .. (299.3197,398.9230) .. controls (299.1446,399.1885) and
+ (298.8522,399.3657) .. (298.5015,399.2769) .. controls (297.3906,398.9230) and
+ (297.1568,397.3599) .. (296.0167,397.0056) .. controls (294.5551,396.8877) and
+ (293.0057,397.0649) .. (291.4858,396.9761) -- (286.8671,396.8582) .. controls
+ (286.6042,396.9466) and (286.2824,397.0056) .. (286.1655,397.3009) .. controls
+ (285.6393,398.1856) and (286.9549,399.1885) .. (285.8439,399.8673) .. controls
+ (283.0376,401.7843) and (279.9097,403.7017) .. (278.0679,406.8283) .. controls
+ (276.4017,409.6307) and (274.9692,413.8490) .. (277.0735,416.9166) .. controls
+ (278.1845,418.5095) and (280.0263,419.4535) .. (282.0432,419.0995) .. controls
+ (283.6508,418.8929) and (284.9956,417.5656) .. (285.4049,416.0316) --
+ (285.4927,415.5005) .. controls (284.8787,416.5921) and (283.8850,417.6834) ..
+ (282.6277,418.0963) .. controls (282.7449,417.7718) and (282.6863,417.3000) ..
+ (282.6280,416.9461) .. controls (282.3942,417.4771) and (281.7509,417.9490) ..
+ (281.1664,418.1556) .. controls (281.4293,417.6834) and (281.7220,417.1229) ..
+ (281.6340,416.5037) .. controls (281.2247,416.9755) and (280.6111,417.4474) ..
+ (279.9386,417.2705) .. controls (280.4647,416.8282) and (280.9326,416.3560) ..
+ (281.1373,415.6776) .. controls (280.6697,415.9726) and (279.9680,416.2676) ..
+ (279.3246,416.0021) .. controls (279.8803,415.6482) and (280.8743,415.3531) ..
+ (280.8743,414.4386) .. controls (280.5819,414.6453) and (280.1727,414.7337) ..
+ (279.8217,414.6453) -- (279.3832,414.4386) .. controls (279.8217,414.2618) and
+ (280.4356,414.1145) .. (280.7571,413.6424) -- (281.0204,413.1705) .. controls
+ (280.4064,413.2294) and (279.7634,413.1407) .. (279.3246,412.6689) .. controls
+ (279.9972,412.5510) and (280.6988,412.4626) .. (281.1373,411.8432) .. controls
+ (280.5525,411.6955) and (279.9386,411.3710) .. (279.7339,410.7221) .. controls
+ (280.2896,411.0171) and (281.1373,411.0171) .. (281.6634,410.5747) .. controls
+ (281.0204,410.2208) and (280.3478,409.5423) .. (280.5233,408.6868) .. controls
+ (281.0790,409.1291) and (281.8681,409.5129) .. (282.6283,409.1586) .. controls
+ (281.8098,408.8047) and (281.2836,407.9789) .. (281.2541,407.1528) --
+ (281.2836,406.9171) .. controls (281.8681,407.5955) and (282.6284,408.0378) ..
+ (283.5344,407.8610) .. controls (282.7453,407.4773) and (282.3943,406.6810) ..
+ (282.4820,405.7959) .. controls (282.6284,405.8846) and (282.7453,406.0910) ..
+ (282.9208,406.2092) .. controls (283.4761,406.5631) and (284.0314,406.9171) ..
+ (284.6745,406.9465) .. controls (284.2360,406.3565) and (283.6221,405.5893) ..
+ (283.8854,404.7341) .. controls (284.2946,405.5013) and (285.0546,406.3270) ..
+ (285.9314,406.4154) .. controls (285.4930,405.8254) and (285.3470,405.0881) ..
+ (285.3470,404.3212) .. controls (285.9609,405.1765) and (286.8669,406.1794) ..
+ (287.8901,406.5631) .. controls (287.5391,405.9141) and (287.2176,404.8225) ..
+ (287.5977,404.0262) .. controls (287.8901,404.9997) and (288.5040,406.0026) ..
+ (289.2348,406.6512) .. controls (289.0885,405.8254) and (289.3517,405.0586) ..
+ (289.9948,404.4980) -- (290.0534,404.5569) .. controls (290.0239,405.6191) and
+ (290.4332,406.5333) .. (290.9594,407.3299) .. controls (290.8425,406.6220) and
+ (291.2517,405.9730) .. (291.8657,405.6188) -- (292.1289,405.5009) .. controls
+ (291.8365,406.2386) and (291.6319,407.0938) .. (291.7779,408.0083) .. controls
+ (292.3041,407.4478) and (293.0644,406.7693) .. (293.9117,406.8872) .. controls
+ (292.6551,408.0083) and (291.3978,409.2473) .. (290.8716,410.8104) .. controls
+ (291.3686,410.2797) and (292.1577,409.9254) .. (293.0054,409.9847) .. controls
+ (291.4272,411.1054) and (289.9948,413.0523) .. (289.8484,415.0876) .. controls
+ (290.1994,414.2618) and (290.9885,413.6125) .. (291.8071,413.3178) .. controls
+ (290.6961,414.9697) and (289.5269,416.8868) .. (290.1405,419.1286) .. controls
+ (290.2868,418.0668) and (290.9008,416.8868) .. (292.0117,416.5626) .. controls
+ (291.3978,417.7129) and (290.5792,418.8929) .. (290.7544,420.3676) .. controls
+ (290.8127,421.2821) and (291.1051,422.1671) .. (291.6312,422.9045) .. controls
+ (291.2514,422.0784) and (291.1928,420.7808) .. (291.9528,420.0137) --
+ (292.0114,419.9548) .. controls (291.7776,422.2556) and (292.6544,424.5269) ..
+ (294.6422,425.5888) -- (295.4022,426.0016) .. controls (294.7883,425.2050) and
+ (294.3793,424.3498) .. (294.3793,423.3171) .. controls (295.2558,425.2050) and
+ (297.0976,427.0635) .. (299.4364,426.9456) .. controls (299.7870,426.9751) and
+ (300.1086,426.9158) .. (300.4301,426.8569) .. controls (299.4655,426.4146) and
+ (298.2668,425.6769) .. (298.1499,424.4677) .. controls (299.7284,425.9129) and
+ (301.9503,426.7096) .. (304.1133,425.9129) .. controls (304.6103,425.7063) and
+ (305.1656,425.4411) .. (305.4872,425.0279) .. controls (304.7272,425.4411) and
+ (303.8504,425.1166) .. (303.2070,424.7034) .. controls (302.9149,424.4972) and
+ (302.5056,424.2021) .. (302.3888,423.8482) .. controls (303.8795,424.4088) and
+ (306.1597,424.7922) .. (307.3289,423.2877) -- (308.0598,422.1374) .. controls
+ (307.2707,422.6685) and (306.3352,423.1108) .. (305.3120,422.9046) .. controls
+ (305.1365,422.8453) and (304.9610,422.7569) .. (304.7858,422.6092) .. controls
+ (306.4226,422.5503) and (308.0306,421.7537) .. (308.7028,420.2200) --
+ (308.9075,419.3055) .. controls (308.4982,420.1021) and (307.6505,420.8984) ..
+ (306.6859,420.9279) .. controls (307.2412,420.3382) and (308.0892,419.7482) ..
+ (308.3521,418.9221) .. controls (308.9078,417.6831) and (309.0538,416.1789) ..
+ (310.3985,415.4121) .. controls (310.9247,415.1466) and (311.4800,414.9694) ..
+ (312.0648,414.8810) .. controls (310.0479,415.7068) and (309.3171,418.1258) ..
+ (309.1707,420.2495) .. controls (309.6677,419.6303) and (310.3108,419.0694) ..
+ (311.0125,418.7748) .. controls (310.6615,419.2171) and (310.3108,419.5121) ..
+ (309.9307,419.9839) .. controls (308.7614,421.4001) and (308.0598,423.2582) ..
+ (308.4982,425.1461) .. controls (308.8197,426.3553) and (309.6383,427.3582) ..
+ (310.4274,428.3611) .. controls (309.7846,427.1224) and (309.6674,425.3233) ..
+ (310.4569,424.1137) .. controls (310.8367,423.5237) and (311.3632,423.0221) ..
+ (311.8893,422.6387) .. controls (310.8661,423.9955) and (310.3982,426.0013) ..
+ (311.0122,427.7419) .. controls (311.8890,430.1312) and (314.3444,431.3993) ..
+ (316.7123,431.5764) -- (317.2676,431.5469);
+ \path[fill=white,nonzero rule] (314.4906,424.9100) .. controls
+ (314.8707,424.6150) and (315.4260,424.4378) .. (315.9231,424.6444) .. controls
+ (316.0109,424.6739) and (316.0986,424.7328) .. (316.2155,424.7623) .. controls
+ (315.7770,424.2905) and (315.3091,423.3171) .. (314.4906,423.5237) .. controls
+ (313.7892,424.0544) and (314.0522,425.1461) .. (313.9936,425.9424) .. controls
+ (314.0231,425.5295) and (314.1982,425.2050) .. (314.4906,424.9100);
+ \path[fill=white,nonzero rule] (312.1524,410.9578) .. controls
+ (312.7372,411.0167) and (313.2634,411.4001) .. (313.5849,411.8723) .. controls
+ (313.9356,410.8101) and (314.4621,409.1880) .. (313.5849,408.1851) .. controls
+ (313.3220,407.9196) and (313.0005,407.8014) .. (312.6203,407.8014) .. controls
+ (311.1587,407.8901) and (310.5157,409.4238) .. (310.1060,410.6627) .. controls
+ (309.8140,411.5183) and (309.8140,412.4623) .. (309.6968,413.4062) .. controls
+ (310.1355,412.3735) and (310.8663,410.9283) .. (312.1524,410.9578);
+ \path[fill=white,nonzero rule] (320.8934,398.4803) .. controls
+ (321.1563,398.2147) and (321.3023,397.9200) .. (321.2440,397.5363) .. controls
+ (321.2440,397.2122) and (320.9517,396.8874) .. (320.6887,396.7695) .. controls
+ (320.0748,396.5039) and (319.3440,396.7106) .. (318.8178,397.0056) .. controls
+ (319.3145,397.5068) and (319.6072,398.0969) .. (319.6947,398.7458) .. controls
+ (320.1331,398.8047) and (320.5424,398.7163) .. (320.8934,398.4803);
+ \path[fill=white,nonzero rule] (322.0034,426.5913) .. controls
+ (322.0616,426.2668) and (321.8865,426.0013) .. (321.6232,425.8834) .. controls
+ (321.1848,425.7652) and (320.6000,425.7652) .. (320.2785,426.1195) .. controls
+ (320.1324,426.3258) and (320.0447,426.6208) .. (320.2199,426.8274) .. controls
+ (320.6586,427.3581) and (321.6818,427.2403) .. (322.0034,426.5913);
+ \path[fill=white,nonzero rule] (317.0930,398.3624) .. controls
+ (317.0639,398.0968) and (316.8592,397.8611) .. (316.5963,397.8018) .. controls
+ (316.2453,397.7723) and (316.1575,398.0968) .. (316.0701,398.3624) --
+ (316.0406,398.7753) -- (317.0929,398.3624);
+ \path[fill=white,nonzero rule] (323.3484,407.8309) .. controls
+ (323.3193,407.3590) and (322.9977,407.1524) .. (322.5885,407.0051) .. controls
+ (322.7345,407.4474) and (322.7640,407.9785) .. (322.7057,408.4504) .. controls
+ (322.9686,408.3325) and (323.2315,408.1259) .. (323.3484,407.8309);
+ \end{scope}
+ \end{tikzpicture}
+}
+% \end{macrocode}
+% \end{macro}
%
-% Define some strings to store option arguments
+% \begin{option}{subfig}
+% Set \Lopt{subfig} flag
% \begin{macrocode}
-\newcommand{\@advisor}{ }
-\newcommand{\def@month}{ }
-\newcommand{\def@year}{ }
-\newcommand{\@degree}{ }
+\DeclareOptionX{subfig}{\@DUT@subfigopttrue}
% \end{macrocode}
+% \end{option}
+%
% \begin{option}{finalspace}
% \begin{macrocode}
\DeclareOptionX{finalspace}{
\setlength\overfullrule{0pt}
- \def\@csp{2} % content page spacing
+ \def\@DUT@toc@sep{1} % content page separation (# blanklines between entries)
\def\@ssp{1} % single space
\def\@dsp{2} % double space
\def\@tsp{3} % triple space
- \@finaltrue
}
% \end{macrocode}
% \end{option}
% \begin{macrocode}
\DeclareOptionX{draftspace}{
\setlength\overfullrule{5pt}
- \def\@csp{1} % content page spacing
+ \def\DUT@toc@sep{0} % content page separation (# blanklines between entries)
\def\@ssp{1} % single space
\def\@dsp{1} % double space
\def\@tsp{2} % triple space
- \@finalfalse
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{pagebreak}
+% \begin{macrocode}
+\DeclareOptionX{pagebreak}{
+ \@DUT@pagebreaktrue
+% \end{macrocode}
+% Force chapters onto right-hand pages.
+% \begin{macrocode}
+ \PassOptionsToClass{openright}{book}
+}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{nopagebreak}
+% \begin{macrocode}
+\DeclareOptionX{nopagebreak}{
+ \@DUT@pagebreakfalse
+% \end{macrocode}
+% Don't force chapters onto right-hand pages.
+% \begin{macrocode}
+ \PassOptionsToClass{openany}{book}
}
% \end{macrocode}
% \end{option}
% \begin{option}{dottedchapter}
% \begin{macrocode}
\DeclareOptionX{dottedchapter}{\@dottedchaptertrue}
-% \end{macrocode}
+% \end{macrocode}1
% \end{option}
% \begin{option}{boldpart}
% \begin{macrocode}
% \end{macrocode}
% \end{option}
%
+% \begin{option}{indenttoc}
+% Set \Lopt{indenttoc} flag
+% \begin{macrocode}
+\DeclareOptionX{indenttoc}{\@indenttoctrue}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{blackref}
+% Set \Lopt{blackref} flag
+% \changes{0.13}{2010/06/17}{W.~Trevor King added blackref option.}
+% \begin{macrocode}
+\DeclareOptionX{blackref}{\@blackreftrue}
+% \end{macrocode}
+% \end{option}
+%
% \begin{option}{draftwatermark}
-% Set draft watermark flag
+% Set \Lopt{draftwatermark} flag
+% \begin{macrocode}
+\DeclareOptionX{draftwatermark}{%
+ \@draftwatermarktrue
+ \@xdraftwatermarkfalse}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{xdraftwatermark}
+% Set \Lopt{xdraftwatermark} flag
+% \changes{0.15}{2011/04/22}{W.~Trevor King renamed mydraftwatermark
+% to xdraftwatermark.}
+% \begin{macrocode}
+\DeclareOptionX{xdraftwatermark}{%
+ \@draftwatermarkfalse
+ \@xdraftwatermarktrue}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{nodraftwatermark}
+% Clear \Lopt{draftwatermark} and \Lopt{xdraftwatermark} flags
+% \changes{0.15}{2011/04/22}{W.~Trevor King added nodraftwatermark option.}
+% \begin{macrocode}
+ \DeclareOptionX{nodraftwatermark}{%
+ \@draftwatermarkfalse
+ \@xdraftwatermarkfalse}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{indentfirst}
+% Set \Lopt{indentfirst} flag
% \begin{macrocode}
-\DeclareOptionX{draftwatermark}{\@draftwatermarktrue}
+\DeclareOptionX{indentfirst}{\@indentfirsttrue}
% \end{macrocode}
% \end{option}
%
-% Define the book options that |final| and |draft| need to access.
+% Define the book options that \Lopt{final} and \Lopt{draft} need to
+% access.
% \begin{option}{oneside}
% \begin{macrocode}
\DeclareOptionX{oneside}{\PassOptionsToClass{oneside}{book}}
% \begin{option}{final}
% \begin{macrocode}
\DeclareOptionX{final}{
+ \@finaltrue
\setkeys{drexel-thesis.cls}{oneside}
\setkeys{drexel-thesis.cls}{finalspace}
+ \setkeys{drexel-thesis.cls}{pagebreak}
\setkeys{drexel-thesis.cls}{dottedtoc}
}
% \end{macrocode}
% \begin{option}{draft}
% \begin{macrocode}
\DeclareOptionX{draft}{
+ \@finalfalse
\setkeys{drexel-thesis.cls}{twoside}
\setkeys{drexel-thesis.cls}{draftspace}
+ \setkeys{drexel-thesis.cls}{nopagebreak}
\setkeys{drexel-thesis.cls}{dottedtoc}
- \setkeys{drexel-thesis.cls}{draftwatermark}
+ \setkeys{drexel-thesis.cls}{xdraftwatermark}
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{daring}
+% \begin{macrocode}
+\DeclareOptionX{daring}{
+ \@daringtrue
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{approvalform}
+% \begin{macrocode}
+\DeclareOptionX{approvalform}{
+ \@approvalformtrue
}
% \end{macrocode}
% \end{option}
%
% Use the default \cls{book} implementation for any remaining options
-% including |oneside|, |twoside|, |leqno|, |fleqn|,
+% including \Lopt{oneside}, \Lopt{twoside}, \Lopt{leqno}, \Lopt{fleqn},
% \ldots.
% \begin{macrocode}
\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{book}}
%
% \subsection{Internal package includes}
%
+%
% Include some other packages we'll need. If the package is not
-% installed on your system, see Section \ref{sec:dependencies} for
+% installed on your system, see \S \ref{sec:dependencies} for
% installation instructions.
%
+% For many packages, we want the same functionality for both
+% \Lopt{final} and \Lopt{draft} modes. We pass \Lopt{final} to most
+% of those packages to override a possible \Lopt{draft} option passed
+% to \pkg{drexel-thesis}.
+%
+%
+% \subsubsection{\pkg{setspace}}
+%
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/setspace/}{\pkg{setspace}}
% for double spacing.
% \begin{macrocode}
\RequirePackage{setspace}
% \end{macrocode}
%
+%
+% \subsubsection{\pkg{calc}}
+%
% \href{http://www.ctan.org/tex-archive/macros/latex/required/tools/}{\pkg{calc}}
-% for |\blanklines| macro.
+% for |\set@lines@length| macro (page
+% \pageref{sec:implement-line-spacing}).
% \begin{macrocode}
\RequirePackage{calc}
% \end{macrocode}
%
+%
+% \subsubsection{\pkg{graphicx}}
+%
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/graphics/}{\pkg{graphicx}}
+% for |\includegraphics|. Not strictly necessary, but I can't imagine
+% a thesis without figures.
+% \begin{macrocode}
+\RequirePackage[final]{graphicx}
+% \end{macrocode}
+%
+% We include the graphicx package now so we can
+% pass \Lopt{final}, because some later packages include it with no options,
+% and a \Lopt{final} include after that produces errors like
+% \begin{example}
+% l.104 \RequirePackage
+% [final]{ifpdf}
+% The package graphicx has already been loaded with options:
+% []
+% There has now been an attempt to load it with options
+% [final]
+% \end{example}
+%
+%
+% \subsubsection{\pkg{draftmark}}
+% \label{sec:draftmark}
+%
% The Comp.~Sci.\ class used
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/draftcopy/}{\pkg{draftcopy}}
% to add their watermarks, but as of the current 2002/02/25 v2.16, it
% which unfortunately has a number of apparently non-standard dependencies
% (\href{http://www.ctan.org/tex-archive/macros/latex/contrib/etextools/}{\pkg{etextools}},
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/}{\pkg{etoolbox}},
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xifthen/}{\pkg{xifthen}},
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/lastpage/}{\pkg{lastpage}},
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/ltxnew/}{\pkg{ltxnew}},
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/pagerange/}{\pkg{pagerange}},
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/lastpage/}{\pkg{lastpage}},
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xifthen/}{\pkg{xifthen}},
% if only I had the space to install |texlive-latexextra| |:p|).
% The output is, however, very flexible, and it \emph{does} work with
-% both \LaTeX and pdf\LaTeX. If you don't like the default watermark,
+% both \LaTeX\ and pdf\LaTeX. If you don't like the default watermark,
% you can also adjust the particulars with |\draftmarksetup|.
% \begin{macrocode}
\if@draftwatermark
\fi
% \end{macrocode}
%
-% Setup page margins with the
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/geometry/}{\pkg{geometry}}
-% package. From the Manual p5:
-% \begin{itemize}
-% \item The left margin must be at least 1 1/2'' (1.5 inches)
-% throughout the document.
-% \item All other margins (top, bottom, and right) must be at least 1''.
-% \end{itemize}
-% And from the Manual 1.5 p4, Print Version:
-% ``The paper size must be 8 1/2'' x 11''{}''.
+% Travis Hoppe went for a more discrete watermark in the lower right
+% corner with something along the lines of:
+% \begin{example}
+% \ifdraftwatermark{
+% \draftmarksetup{angle=0,fontsize=24pt,color=red!45!blue!25,
+% xcoord=80,ycoord=-129,mark={DRAFT\\[12pt] \today}}
+% }{}
+% \end{example}
+%
+% Here is Evan's alternative implementation. This will not look right
+% as a DVI, but it'll look fine once rendered to either a PS or PDF.
% \begin{macrocode}
-\RequirePackage[letterpaper,margin=1in,bindingoffset=0.5in]{geometry}
+\if@xdraftwatermark
% \end{macrocode}
-% Note that we include the \pkg{geometry} package after loading \cls{book} to
-% override the margin manipulation that takes place in \cls{book}.
-%
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fancyhdr/}{\pkg{fancyhdr}}
-% for correct page numbering and fancy headers.
+% Use \pkg{eso-pic} for |\AddToShipoutPicture|.
% \begin{macrocode}
-\RequirePackage{fancyhdr}
+ \RequirePackage{eso-pic}
% \end{macrocode}
-% Setup the standard |fancy| format. |\leftmark| is the higher level
-% mark, see |\chaptermark| below. |\rightmark| is the lower level
-% mark, see |\sectionmark| below.
+% Use \pkg{xcolor} for |\definecolor|.
% \begin{macrocode}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[LE,RO]{\slshape\rightmark}
-\fancyhead[LO,RE]{\slshape\leftmark}
-\fancyfoot[LE,RO]{\thepage}
+ \RequirePackage{xcolor}
+ \definecolor{watermark}{rgb}{0.9,0.9,0.9}
% \end{macrocode}
-% Override the |plain| format (for chapter pages, etc.).
+% Set the font explicitly to avoid being effected by the last text on
+% the page having some strange font. |\sffamily| sets a sans serif
+% font.
% \begin{macrocode}
-\fancypagestyle{plain}{
- \fancyhf{}
- \renewcommand{\headrulewidth}{0pt}
- \fancyfoot[LE,RO]{\thepage}
-}
+ \newcommand{\watermarkfont}{%
+ \color{watermark}}%\fontfamily{phv}\selectfont\sffamily}
+ \newcommand{\watermark}{%
+ \rule{4.25in}{0pt}\raisebox{5.5in}{%
+ \makebox[0pt]{%
% \end{macrocode}
-%
-% Setup colon rather than period separated chapter marks, overriding
-% \cls{book}'s |\chaptermark|.
+% |\rotatebox| and |\resizebox| from \pkg{graphicx}.
% \begin{macrocode}
-\renewcommand\chaptermark[1]{%
- \markboth {\MakeUppercase{%
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \@chapapp\ \thechapter: \ %
- \fi
- \fi
- #1}}{}}
+ \rotatebox[origin=c]{45}{%
+ \resizebox{!}{1.5in}{%
+ {\watermarkfont DRAFT}%
+ }}}}
+ \raisebox{4.2in}{%
+ \makebox[0pt]{%
+ \rotatebox[origin=c]{45}{%
+ \resizebox{!}{.6in}{%
+ {\watermarkfont \qquad\today}%
+ }}}}}
+ \AddToShipoutPicture{\watermark{}}
+\fi
+% \end{macrocode}
+%
+%
+% \subsubsection{\pkg{indentfirst}}
+%
+% Indent the first paragraph after sections etc.\ with
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/tools/}{\pkg{indentfirst}}.
% \begin{macrocode}
+\if@indentfirst
+ \RequirePackage{indentfirst}
+\fi
+% \end{macrocode}
+%
%
-% Setup space rather than period separated section marks, overriding
-% \cls{book}'s |\sectionmark|.
+% \subsubsection{\pkg{geometry}}
+%
+% Setup page margins with
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/geometry/}{\pkg{geometry}}.
+% From the Manual p5:
+% \begin{itemize}
+% \item The left margin must be at least 1 1/2'' (1.5 inches)
+% throughout the document.
+% \item All other margins (top, bottom, and right) must be at least 1''.
+% \end{itemize}
+% And from the Manual \S 1.5 p4, Print Version:
+% \begin{quote}
+% The paper size must be 8 1/2'' x 11''.
+% \end{quote}
% \begin{macrocode}
-\renewcommand{\sectionmark}[1]{%
- \markright {\MakeUppercase{%
- \ifnum \c@secnumdepth >\z@
- \thesection \ %
- \fi
- #1}}}
+\RequirePackage[letterpaper,margin=1in,bindingoffset=0.5in]{geometry}
% \end{macrocode}
+% Note that we include the \pkg{geometry} package after loading \cls{book} to
+% override the margin manipulation that takes place in \cls{book}.
%
-% \href{http://www.ctan.org/tex-archive/macros/latex/required/graphics/}{\pkg{graphicx}}
-% for |\includegraphics|. Not strictly necessary, but I can't imagine
-% a thesis without figures.
+%
+% \subsubsection{\pkg{tocloft}}
+%
+% Typeset the table of contents, etc., with
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/tocloft/}{\pkg{tocloft}}.
% \begin{macrocode}
-\RequirePackage{graphicx}
+\if@DUT@subfigopt
+ \RequirePackage[subfigure]{tocloft}
+\else
+ \RequirePackage{tocloft}
+\fi
+% \end{macrocode}
+% The \Lopt{subfigure} option sets up \pkg{tocloft} for
+% \pkg{subfig}/\pkg{subfigure} compatibility. See the
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/tocloft/tocloft.pdf}{%
+% \pkg{tocloft} manual \S 2.1}
+% for details.
+%
+% The configuration of \pkg{tocloft} takes place in \S
+% \ref{sec:implement-toc}, \S \ref{sec:implement-lof}, and \S
+% \ref{sec:implement-lot}.
+%
+%
+% \subsubsection{\pkg{caption}}
+%
+% Get nice caption formatting with
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/caption/}{\pkg{caption}}.
+% From the Manual p5:
+% \begin{itemize}
+% \item The left margin must be at least 1 1/2'' (1.5 inches)
+% throughout the document.
+% \item All other margins (top, bottom, and right) must be at least 1''.
+% \end{itemize}
+% \begin{macrocode}
+\RequirePackage[margin=10pt,labelfont=bf,labelsep=colon]{caption}
+% \end{macrocode}
+% You can change these settings if you like using |\captionsetup|.
+%
+%
+% \subsubsection{\pkg{floatrow}}
+% \label{sec:floatrow}
+%
+% Enforce caption placement with
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/floatrow/}{\pkg{floatrow}}.
+% From the Manual \S 2.3 p6, ``Tables and Figures'',
+% \begin{quote}
+% \begin{itemize}
+% \item Place figure captions below figures.
+% \item Place table captions above tables.
+% \end{itemize}
+% \end{quote}
+% \begin{macrocode}
+\RequirePackage{floatrow}
+\floatsetup[table]{style=plaintop}
+\floatsetup{captionskip=10pt}
+\floatsetup[table]{captionskip=10pt}
+% \end{macrocode}
+% Use \pkg{fr-subfig} for \pkg{floatrow}/\pkg{subfig} compatibility.
+% See the \pkg{floatrow} documentation (Sec.~7.1, ``The \pkg{subfig}
+% package'') and \pkg{subfig} documentation (Sec.~4.3,
+% ``\pkg{FloatRow} Package'') for details.
+% \begin{macrocode}
+\if@DUT@subfigopt
+ \RequirePackage{fr-subfig}
+\fi
+% \end{macrocode}
+% We set up the three-line surrounding spaces in \S
+% \ref{sec:implement-floats}.
+%
+% You can change these settings using |\floatsetup|, but you probably
+% won't need to.
+%
+%
+% \subsubsection{\pkg{subfig}}
+% \label{sec:subfig}
+%
+% Allow multi-part figures with
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/}{\pkg{subfig}}.
+% \begin{macrocode}
+\if@DUT@subfigopt
+ \RequirePackage{subfig}
+\fi
% \end{macrocode}
%
+%
+% \subsubsection{\pkg{fancyhdr}}
+% \label{sec:fancyhdr}
+%
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fancyhdr/}{\pkg{fancyhdr}}
+% for correct page numbering and fancy headers.
+% From the Manual \S 2.3 p5, ``Pagination''
+% \begin{quote}
+% Place page numbers in the upper right-hand corner of the page,
+% 3/4'' from the top.
+% \end{quote}
+% \begin{macrocode}
+\RequirePackage{fancyhdr}
+% \end{macrocode}
+% Setup the standard |fancy| format.
+% \begin{macrocode}
+\pagestyle{fancy}
+\fancyhf{}
+% \end{macrocode}
+% Turn off the header rule by setting its width to $0$.
+% \begin{macrocode}
+\renewcommand{\headrulewidth}{0pt}
+% \end{macrocode}
+% 0.4 pt is \pkg{fancyhdr}'s default |\headrulewidth|, so we'll
+% recycle the value.
+% \begin{macrocode}
+\renewcommand{\footrulewidth}{0.4pt}
+% \end{macrocode}
+% |\leftmark| is the higher level mark, see |\chaptermark| below.
+% |\rightmark| is the lower level mark, see |\sectionmark| below.
+% We put the lower level mark to the outside because it changes more
+% often. Page numbers also go on the outside.
+% \begin{macrocode}
+\fancyfoot[RE,LO]{\scshape\leftmark}
+\fancyfoot[LE,RO]{\scshape\rightmark}
+\fancyhead[LE,RO]{\thepage}
+% \end{macrocode}
+% Override the |plain| format (for part pages, etc.).
+% \begin{macrocode}
+\fancypagestyle{plain}{
+ \fancyhf{}
+ \renewcommand{\footrulewidth}{0pt}
+ \fancyhead[LE,RO]{\thepage}
+}
+% \end{macrocode}
+% Keep the |empty| format at its default.
+% \begin{macrocode}
+\fancypagestyle{empty}{
+ \fancyhf{}
+ \renewcommand{\footrulewidth}{0pt}
+}
+% \end{macrocode}
+%
+% Note that the chapter/section footer is not required. You can
+% remove the footer text and rule entirely with.
+% \begin{example}
+% \renewcommand{\footrulewidth}{0pt}
+% \fancyfoot[RE,LO]{}
+% \fancyfoot[LE,RO]{}
+% \end{example}
+%
+%
+% \subsubsection{\pkg{ifpdf}}
+%
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/}{\pkg{ifpdf}}
% for detecting PDF drivers. We use it to configure \pkg{hyperref} below.
% \begin{macrocode}
\RequirePackage{ifpdf}
% \end{macrocode}
%
+% \subsubsection{\pkg{hyperref}}
+% \label{sec:hyperref}
+%
% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/}{\pkg{hyperref}}
% for hyperlinks. Not strictly necessary, but I can't imagine a
-% thesis without it.
-% \begin{macrocode}
-\RequirePackage{hyperref}
-% \end{macrocode}
-% Nobody likes the default colored boxes. Color the text itself.
+% thesis without it. We actually include this later (\S
+% \ref{sec:hyperref-inclusion}), because \pkg{hyperref} sticks its
+% fingers into \emph{everything} and we want it to use our versions of
+% some macros (e.g., |\@sect|) but not others (e.g., |thebibliography|).
+%
+%
+% \subsubsection{\pkg{hypcap}}
+% \label{sec:hypcap}
+%
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/}{\pkg{hypcap}}
+% for placing caption hyperlink anchors. Must be included after
+% \pkg{hypercap}, so the actual inclusion is in \S
+% \ref{sec:hypcap-inclusion}).
+%
+%
+% \subsubsection{\pkg{tikz}}
+% \label{sec:tikz}
+%
+% \href{http://sourceforge.net/projects/pgf/}{\pkg{tikz}}
+% for vector drawing natively in \TeX. This package is currently only
+% required for the \Lopt{approvalform} option (it is used in drawing
+% the Drexel logo on the approval form).
% \begin{macrocode}
-\hypersetup{colorlinks}
+\if@approvalform\RequirePackage{tikz}\fi
% \end{macrocode}
-% If we're writing a PDF, we set the |pdfauthor|, etc.\ arguments in
-% |\author|, etc.\ to avoid using |\AtBeginDocument| or some such.
%
%
-% \subsection{Macros}
+% \subsection{\LaTeX\ overrides and extensions}
%
-% \begin{macro}{\author}
-% Override |latex.ltx|'s |\author| to set \pkg{hyperref}'s |pdfauthor|.
+% Here we change the behavior of a bunch of macros and environments
+% from \file{latex.ltx} (generated by \file{format.ins} in
+% \href{http://www.ctan.org/tex-archive/macros/latex/base/}{\pkg{base}}).
+% We'll copy in their original notes along with their code, following
+% the relevant documentation an order given in \file{format.ins} and
+% the associated \file{*.dtx} files.
+%
+%
+% \subsubsection{\file{ltsect.dtx}}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\DUTtitle}
+% \begin{macro}{\@DUT@title}
+% |\title| for use in |\maketitle|. If not given |\maketitle| will
+% produce a warning message (\file{ltsect.dtx}, L117).
+%
+% We extend |\title| to set \pkg{hyperref}'s |pdftitle|.
+% (\file{ltsect.dtx}, L117).
% \begin{macrocode}
-\renewcommand{\author}[1]{
- \gdef\@author{#1}
- \ifpdf \hypersetup{pdfauthor={\@author}} \fi
+\renewcommand{\title}[1]{
+ \gdef\@DUT@title{#1}
+ \ifpdf \hypersetup{pdftitle={\@DUT@title}} \fi
}
+\let\DUTtitle\title
+\def\@DUT@title{\@latex@error{No \noexpand\title given}\@ehc}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\title}
-% Override |latex.ltx|'s |\title| to set \pkg{hyperref}'s |pdftitle|.
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\author}
+% \begin{macro}{\DUTauthor}
+% \begin{macro}{\@DUT@author}
+% |\author| for use in |\maketitle|. If not given |\maketitle| will
+% produce a warning message (\file{ltsect.dtx}, L129).
+%
+% We extend |\author| to set \pkg{hyperref}'s |pdfauthor| if we're
+% writing a PDF to avoid using |\AtBeginDocument| or some such.
+% (\file{ltsect.dtx}, L129).
% \begin{macrocode}
-\renewcommand{\title}[1]{
- \gdef\@title{#1}
- \ifpdf \hypersetup{pdftitle={\@title}} \fi
+\renewcommand{\author}[1]{
+ \gdef\@DUT@author{#1}
+ \ifpdf \hypersetup{pdfauthor={\protect\@DUT@author}} \fi
}
+\let\DUTauthor\author
+\def\@DUT@author{\@latex@error{No \noexpand\author given}\@ehc}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\advisor}
+% \end{macro}
+% \end{macro}
+%
+% In a similar vein, we some additional meta-info macros.
+%
+% \begin{macro}{\DUTmonth}
+% \begin{macro}{\@DUT@month}
+% |\DUTmonth| (defense month) for use in |\maketitle|. If not given
+% |\maketitle| will produce an error message.
% \begin{macrocode}
-\newcommand{\advisor}[1]{\renewcommand{\@advisor}{#1}}
+\def\DUTmonth#1{\gdef\@DUT@month{#1}}
+\def\@DUT@month{\@latex@error{No \noexpand\DUTmonth given}\@ehc}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\defmonth}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DUTyear}
+% \begin{macro}{\@DUT@year}
+% |\DUTyear| (defense year) for use in |\maketitle|. If not given
+% |\maketitle| will produce an error message.
% \begin{macrocode}
-\newcommand{\defmonth}[1]{\renewcommand{\def@month}{#1}}
+\def\DUTyear#1{\gdef\@DUT@year{#1}}
+\def\@DUT@year{\@latex@error{No \noexpand\DUTyear given}\@ehc}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\defyear}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\degree}
+% \begin{macro}{\DUTdegree}
+% \begin{macro}{\@DUT@degree}
+% |\degree| for use in |\maketitle|. If not given |\maketitle| will
+% produce an error message.
% \begin{macrocode}
-\newcommand{\defyear}[1]{\renewcommand{\def@year}{#1}}
+\def\degree#1{\gdef\@DUT@degree{#1}
+ \ifpdf \hypersetup{pdfsubject={\@DUT@degree}} \fi}
+\let\DUTdegree\degree
+\def\@DUT@degree{\@latex@error{No \noexpand\degree given}\@ehc}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\degree}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\copyrighttext}
+% \begin{macro}{\DUTcopyrighttext}
+% \begin{macro}{\@copyrighttext}
+% |\copyrighttext| for use in |\@DUT@makecopyright|. There are a
+% number of blurbs predefined in \S \ref{sec:implement-copyright}.
% \begin{macrocode}
-\newcommand{\degree}[1]{
- \renewcommand{\@degree}{#1}
- \ifpdf \hypersetup{pdfsubject={\@degree}} \fi
-}
-% \hypersetup{pdfauthor={\@author}}
-% \hypersetup{pdftitle={\@title}}
-% \hypersetup{pdfstartview=FitH}
-% }
+\def\copyrighttext#1{\gdef\@DUT@copyrighttext{#1}}
+\let\DUTcopyrighttext\copyrighttext
+\def\@DUT@copyrighttext{All Rights Reserved.}
% \end{macrocode}
-% \end{macro}
-%
-% Set the official names of the various sections encountered
-% \begin{macro}{\dedicationsname}
-% From the Manual 3.3 p9, ``The heading |Dedications| must appear at
-% the top of the page.''
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\advisor}
+% \begin{macro}{\DUTadvisor}
+% \begin{macro}{\@DUT@advisor}
+% |\advisor| stores advisor names, and |\@DUT@advisor| prints them out
+% nicely for the |abstract| environment. If no advisors are given
+% |\@DUT@advisor| will produce an error message. We get a bit fancier
+% here to support multiple advisors.
% \begin{macrocode}
-\newcommand\dedicationsname{Dedications}
+\newcounter{@DUT@advisors}
+\setcounter{@DUT@advisors}{0}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\acknowledgmentsname}
-% From the Manual 3.4 p9, ``The heading |Acknowledgments| must appear
-% at the top of the page.''
+% Store a new advisor name.
% \begin{macrocode}
-\newcommand\acknowledgmentsname{Acknowledgments}
+\newcommand\advisor[1]{%
+ \ifx
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\contentsname}
-% From the Manual 3.5 p9, ``The heading |Table of Contents| must
-% appear at the top of the page.'' Override \cls{book}'s definition.
+% If |#1| is |\empty|, this call is a no-op.
% \begin{macrocode}
-\renewcommand\contentsname{Table of Contents}
+ \empty{#1}
+ \else
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\listtablename}
-% From the Manual 3.6 p10, ``The heading |List of Tables| must appear
-% at the top of the page.''
-% Override \cls{book}'s definition.
+% Save the advisors to |\@DUT@advisor@a|, |\@DUT@advisor@b|, \ldots.
+% |\alph{|\Lcount{COUNTER}|}| (\file{ltcounts.dtx}, L319) prints the
+% value of \Lcount{COUNTER} as a lowercase letter: $1 =$~a, $2 =$~
+% b, etc.
% \begin{macrocode}
-\renewcommand\listtablename{List of Tables}
+ \stepcounter{@DUT@advisors}
+ \expandafter\gdef\csname @DUT@advisor@\alph{@DUT@advisors}\endcsname{#1}
+ \fi}
+% \end{macrocode}
+% Format and print a list of advisor names.
+% \begin{macrocode}
+\newcommand\@DUT@advisor{%
+ \ifnum\c@@DUT@advisors=0%
+ \@latex@error{No \noexpand\advisor given}\@ehc%
+ \else%
+% \end{macrocode}
+% Start a group so the scratch counter \Lcount{count\textat} is restored
+% afterwards\footnote{See the discussion in
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/localloc/}{%
+% \pkg{localloc}}
+% for some points on counter allocation.}.
+% \begin{macrocode}
+ \begingroup%
+% \end{macrocode}
+% Because \Lcount{count\textat} is a \TeX\ counter register not
+% wrapped by \LaTeX's counter sugar, we don't use \LaTeX's
+% |\setcounter| to set \Lcount{count\textat} to one.
+% \begin{macrocode}
+ \count@\@ne
+% \end{macrocode}
+% Print the first advisor, using \TeX's |\@alph| macro instead of
+% \LaTeX's |\alph|.
+% \begin{macrocode}
+% \begin{macrocode}
+ \csname @DUT@advisor@\@alph\count@\endcsname\relax%
+% \end{macrocode}
+% For any remaining advisors\ldots
+% \begin{macrocode}
+ \loop\ifnum\count@<\c@@DUT@advisors%
+% \end{macrocode}
+% Advance \Lcount{count\textat} using \TeX's |\advance| macro instead
+% of \LaTeX's |\stepcounter|.
+% \begin{macrocode}
+ \advance\count@\@ne
+% \end{macrocode}
+% Print the connecting text.
+% \begin{macrocode}
+ \ifnum\count@=\c@@DUT@advisors%
+ \ifnum\c@@DUT@advisors=2%
+% \end{macrocode}
+% The next advisor if the last of two.
+% \begin{macrocode}
+ {\ and\ }%
+ \else%
+% \end{macrocode}
+% The next advisor if the last of many.
+% \begin{macrocode}
+ {, and\ }%
+ \fi%
+ \else%
+% \end{macrocode}
+% The next advisor is not the last.
+% \begin{macrocode}
+ {,\ }%
+ \fi%
+% \end{macrocode}
+% Print the advisor's name.
+% \begin{macrocode}
+ \csname @DUT@advisor@\@alph\count@\endcsname\relax%
+ \repeat%
+ \endgroup%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{baselineskip}
+% \label{sec:implement-line-spacing}
+%
+% \begin{macro}{\@DUT@baselineskip}
+% Since we'll be messing with the spacing, save the single-spaced
+% baseline.
+% \changes{0.3}{2010/01/13}{Use \cs{setlength} to store the value at
+% the default font. The previous version used \cs{let}, which
+% made \cs{DUT@baselineskip} a synonym for \cs{baselineskip} that
+% changed with font size.}
+% \begin{macrocode}
+\newlength\@DUT@baselineskip
+\setlength\@DUT@baselineskip\baselineskip
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\listfigurename}
-% From the Manual 3.7 p10, ``The heading |List of Figures| must appear
-% at the top of the page.''
-% Override \cls{book}'s definition.
+%
+% \begin{command}
+% `\cs{set@lines@length}\marg{length}\marg{N}'
+% \end{command}
+% \begin{macro}{\set@lines@length}
+% Many specifications in the Manual refer to ``\meta{N} blank lines''.
+% |\set@lines@length| allows you to set a length to a given number of
+% lines, protecting against external |spacing| environments. It
+% requires \pkg{calc} for the multiplication.
% \begin{macrocode}
-\renewcommand\listfigurename{List of Figures}
+\newcommand{\set@lines@length}[2]{%
+ \setlength{#1}{\@DUT@baselineskip * {#2}}}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\abstractname}
-% From the Manual 3.8 p10, ``The following heading must be centered at
-% the top of the first page: |Abstract|\ldots''
+%
+%
+% Fix |\@ssect| and |\@sect| from \file{latex.ltx} to give single
+% spaced headings.
+%
+% \begin{macro}{\@sect}
+% Pseudocode for the |\@sect| command
+% \begin{example}
+% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[ARG1]{ARG2}
+% ==
+% BEGIN
+% IF LEVEL > \c@secnumdepth
+% THEN \@svsec :=L null
+% ELSE \refstepcounter{NAME}
+% \@svsec :=L BEGIN \@seccntformat{#1}\relax END
+% FI
+% IF AFTERSKIP > 0
+% THEN \begingroup
+% STYLE
+% \@hangfrom{\hskip INDENT\@svsec}
+% {\interlinepenalty 10000 ARG2\par}
+% \endgroup
+% \NAMEmark{ARG1}
+% \addcontentsline{toc}{NAME}
+% { IF LEVEL > \c@secnumdepth
+% ELSE \protect\numberline{\theNAME} FI
+% ARG1 }
+% ELSE \@svsechd == BEGIN STYLE
+% \hskip INDENT\@svsec
+% ARG2
+% \NAMEmark{ARG1}
+% \addcontentsline{toc}{NAME}
+% { IF LEVEL > \c@secnumdepth
+% ELSE
+% \protect\numberline{\theNAME}
+% FI
+% ARG1 }
+% END
+% FI
+% \@xsect{AFTERSKIP}
+% END
+% \end{example}
+% (\file{ltsect.dtx}, L295).
% \begin{macrocode}
-\newcommand\abstractname{Abstract}
+\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
+% \end{macrocode}
+% Here we deviate from \file{ltsect.dtx} to ensure single spacing for
+% the section title.
+% \begin{macrocode}
+ \setstretch{\@ssp}%
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \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}}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\bibname}
-% From the Manual 3.13 p12, ``The heading |Bibliography| (or
-% |List of References|) must appear at the top of first page.''
-% Override \cls{book}'s definition.
+%
+% \begin{macro}{\@ssect}
+% Pseudocode for the |\@ssect| command
+% \begin{example}
+% \@ssect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{ARG} ==
+% BEGIN
+% IF AFTERSKIP > 0
+% THEN \begingroup
+% STYLE
+% \@hangfrom{\hskip INDENT}{\interlinepenalty 10000 ARG\par}
+% \endgroup
+% ELSE \@svsechd == BEGIN STYLE
+% \hskip INDENT
+% ARG
+% END
+% FI
+% \@xsect{AFTERSKIP}
+% END
+% \end{example}
+% (\file{ltsect.dtx}, L521).
% \begin{macrocode}
-\renewcommand\bibname{Bibliography}
+\def\@ssect#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+% \end{macrocode}
+% Here we deviate from \file{ltsect.dtx} to ensure single spacing for
+% the section title.
+% \begin{macrocode}
+ \setstretch{\@ssp}%
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \else
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \fi
+ \@xsect{#3}}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\appendixname}
-% From the Manual 3.14 p12, ``Number the appendicies consecutively
-% either alphabetically or numerically (|Appendix A|, |Appendix B|\ldots
-% or |Appendix 1|, |Appendix 2|\ldots).''
-% Override \cls{book}'s definition.
+%
+%
+% \subsubsection{\file{ltbibl.dtx}}
+%
+% \DescribeMacro{\bibliography}
+% \DescribeEnv{thebibliography}
+% A bibliography is created by the |thebibliography| environment, which
+% generates a title such as ``Bibliography'', and a list of entries.
+% The \BibTeX\ program will create a file containing such an
+% environment, which will be read in by the |\bibliography| command.
+% With \BibTeX, the following commands will be used.
+%
+% The document class must define the thebibliography environment. This
+% environment has a single argument, which is the widest bibliography
+% label-- e.g., if the [Knuth67] is the widest entry, then this
+% argument will be Knuth67. The |\thebibliography| command must begin
+% a list environment, which the |\endthebibliography| command ends.
+%
+% \begin{macro}{\bibliography}
+% |\bibliography|\marg{file1,file2,\ldots,filen} : specifies
+% the bibdata files. Writes a |\bibdata| entry on the |.aux| file
+% and tries to read in |mainfile.bbl|.
+%
+% We don't need to change it, but it explains why we need to override
+% |thebibliography| even when we don't use it directly.
+% (\file{ltbibl.dtx}, L284).
% \begin{macrocode}
-\renewcommand\appendixname{Appendix}
+%\def\bibliography#1{%
+% \if@filesw
+% \immediate\write\@auxout{\string\bibdata{#1}}%
+% \fi
+% \@input@{\jobname.bbl}
+%}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\vitaname}
-% From the Manual 3.15 p13, ``The heading |Vita| must appear at the
-% top of the page.''
+%
+%
+% \subsubsection{\file{ltoutput.dtx}}
+%
+% \begin{macro}{\@DUT@clearpage}
+% \begin{macro}{\@DUT@cleardoublepage}
+% \begin{macro}{\@DUT@newpage}
+% Versions of |\clear*page| and |\newpage| that only work in
+% \Lopt{pagebreak} mode (\file{ltoutput.dtx}, L877 and L904).
+% Otherwise they add four blank lines.
+% \changes{0.15}{2011/04/23}{W.~Trevor King added
+% $\backslash$\@DUT\@newpage macro.}
% \begin{macrocode}
-\newcommand\vitaname{Vita}
+\newcommand\@DUT@clearpage{%
+ \if@DUT@pagebreak \clearpage \else \blanklinesp{4} \fi}
+\newcommand\@DUT@cleardoublepage{%
+ \if@DUT@pagebreak \cleardoublepage \else \blanklinesp{4} \fi}
+\newcommand\@DUT@newpage{%
+ \if@DUT@pagebreak \newpage \else \blanklinesp{4} \fi}
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\blankpage}
-% Insert a blank page without numbering (except in draft mode).
+% \begin{macro}{\@DUT@blankpage}
+% Add a useful extension to insert a blank page without numbering.
+% If we're not in \Lopt{pagebreak} mode, this macro is a no-op.
% \begin{macrocode}
-\newcommand\blankpage{%
- \if@final
- \clearpage
+\newcommand\@DUT@blankpage{%
+ \if@DUT@pagebreak
+ \@DUT@clearpage
\thispagestyle{empty}
\hphantom{0}
- \clearpage
- \else\fi
+ \@DUT@clearpage
+ \fi
}
% \end{macrocode}
% \end{macro}
%
+%
+% \begin{command}
+% `\cs{blanklines}\marg{N}'
+% `\cs{blanklines*}\marg{N}'
+% \end{command}
% \begin{macro}{\blanklines}
-% Insert number of blank lines, protecting against external |spacing|
-% environments. Requires \pkg{calc} for the multiplication.
-% \begin{macrocode}
-\newlength\blanklines@length
-\newcommand{\blanklines}[1]{%
- \begin{spacing}{1}
- \setlength{\blanklines@length}{\baselineskip * {#1}}
- \vspace{\blanklines@length}
- \end{spacing}
+% Insert \meta{N} blank lines. The starred forms use |\vspace|, which
+% inserts space even at the start and end of pages. The |p| forms
+% add a trailing |\par|. \emph{I'm still trying to get this part working
+% cleanly\ldots}
+% \begin{macrocode}
+\newlength\@DUT@blanklines@length
+\newcommand{\@blanklines@setup}[1]{%
+ \set@lines@length{\@DUT@blanklines@length}{#1}%
+ %\typeout{BLANKLINES -- #1}%
+ %\showthe\@DUT@blanklines@length
}
+\newcommand{\blanklines}{\@ifstar\@sblanklines\@blanklines}
+\newcommand{\@blanklines}[1]{%
+ \@blanklines@setup{#1}%
+ \vspace{\@DUT@blanklines@length}}
+\newcommand{\@sblanklines}[1]{%
+ \@blanklines@setup{#1}%
+ \vspace*{\@DUT@blanklines@length}}
+\newcommand{\blanklinesp}{\@ifstar\@sblanklines\@blanklines}
+\newcommand{\@blanklinesp}[1]{%
+ \@blanklines@setup{#1}%
+ \vspace{\@DUT@blanklines@length}\par}
+\newcommand{\@sblanklinesp}[1]{%
+ \@blanklines@setup{#1}%
+ \vspace*{\@DUT@blanklines@length}\par}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{\pkg{hyperref} inclusion}
+% \label{sec:hyperref-inclusion}
+%
+% This is the awkward \pkg{hyperref} inclusion. See \S
+% \ref{sec:hyperref} for an explanation of why we stash it here.
+% \begin{macrocode}
+\RequirePackage[final]{hyperref}
+% \end{macrocode}
+% Nobody likes the default colored boxes. Color the text itself.
+% \begin{macrocode}
+\hypersetup{colorlinks}
+% \end{macrocode}
+% If \Lopt{blackref} is set, set all \pkg{hyperref} colors to black.
+% \begin{macrocode}
+\if@blackref
+ \hypersetup{linkcolor=black}
+ \hypersetup{anchorcolor=black}
+ \hypersetup{citecolor=black}
+ \hypersetup{filecolor=black}
+ \hypersetup{menucolor=black}
+ \hypersetup{runcolor=black}
+ \hypersetup{urlcolor=black}
+\fi
+% \end{macrocode}
+%
+% \subsubsection{\pkg{hypcap}}
+% \label{sec:hypcap-inclusion}
+%
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/}{\pkg{hypcap}}
+% for placing caption hyperlink anchors. Not strictly necessary, but
+% we're using \pkg{hyperref}, and the poor link targets are annoying.
+% \begin{macrocode}
+\RequirePackage[all]{hypcap}
+% \end{macrocode}
+% \Lopt{all} redefines the figure and table environments to
+% place the anchor at the start of the float.
+%
+%
+% \subsection{\cls{book} overrides and extensions}
+%
+% Here we change the behavior of a bunch of macros and environments from
+% \cls{book} (generated by \file{classes.ins} from \file{classes.dtx}) in
+% \href{http://www.ctan.org/tex-archive/macros/latex/base/}{\pkg{base}}).
+% We'll copy in their original notes along with their code, following
+% the relevant documentation an order given in \file{classes.dtx}.
+%
+%
+% \subsubsection{Floats on a text page}
+% \label{sec:implement-floats}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% When a floating object is placed on a page with text, these
+% parameters control the separation between the float and the other
+% objects on the page.
+%
+% |\floatsep| is the space between adjacent floats that are moved
+% to the top or bottom of the text page.
+%
+% |\textfloatsep| is the space between the main text and floats
+% at the top or bottom of the page.
+%
+% |\intextsep| is the space between in-text floats and the text. We
+% don't bother overriding this one, because we've handled it with
+% \pkg{floatrow} in \S \ref{sec:floatrow}.
+%
+% From the Manual \S 2.3 p6, ``Tables and Figures''
+% \begin{quote}
+% Insert at least 3 single-spaced lines of space above table
+% captions and figures and below figure captions, tables, and other
+% graphics.
+% \end{quote}
+% (\file{classes.dtx}, L1426)
+% \begin{macrocode}
+\set@lines@length{\floatsep}{\@ssp}
+\set@lines@length{\textfloatsep}{\@tsp}
% \end{macrocode}
% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{The title}
%
% \begin{macro}{\maketitle}
% Automate the creation of the title page.
-% From Manual 3.1 p8, ``Title Page'', and the example on p16.
+% From Manual \S 3.1 p8, ``Title Page'', and the example on p16.
% \begin{itemize}
% \item This page is counted but not numbered (it counts as page i,
% but should not have a page number). TODO: How is this implemented?
% \end{itemize}
-% Override \cls{book}'s definition.
-% \begin{macrocode}
-\renewcommand\maketitle{
- \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
- \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \begin{titlepage}%
+% Our definition simplifies \cls{book}'s by ignoring footnotes.
+% (\file{classes.dtx}, L1796)
+% \begin{macrocode}
+\newcommand\@DUT@maketitle{
+ \begin{@DUT@titlepage}%
+% \end{macrocode}
+% Add some bookmarks if we're using pdf\LaTeX. The |frontmatter|
+% bookmark is set at the \emph{part} level (-1) to hold all bookmarks
+% from the |preamble| environment, since those entries are all
+% chapters.
+% \changes{0.8}{2010/05/20}{W.~Trevor King replaced Frontmatter with
+% Front Matter and Titlepage with Title Page for consistency with
+% \LaTeX's book class.}
+% \begin{macrocode}
\ifpdf
- \pdfbookmark[-1]{Frontmatter}{frontmatter}
- \pdfbookmark[0]{Title Page}{title}
+ \pdfbookmark[-1]{Front Matter}{Front Matter}
+ \pdfbookmark[0]{Title Page}{Title Page}
\fi
- \vspace*{\fill}
+% \end{macrocode}
+% Add some stretchy space to center the title vertically if we're in
+% \Lopt{pagebreak} mode.
+% \begin{macrocode}
+ \if@DUT@pagebreak \vspace*{\fill} \fi
+% \end{macrocode}
+% Here is the title text itself.
+% \begin{macrocode}
\begin{center}%
- \begin{spacing}{\@tsp}
- {\bf \@title \par}%
- \end{spacing}
- \begin{spacing}{\@dsp}
+ {\setstretch{\@tsp} \bfseries \@DUT@title \par}%
+% \end{macrocode}
+% We want two blank lines (triple spacing) between the title and the
+% remaining material, so add three but don't end the paragraph.
+% \begin{macrocode}
+ \blanklines{\@tsp}%
+ \setstretch{\@dsp}%
A Thesis\\
Submitted to the Faculty\\
of\\
Drexel University\\
by\\
- \@author \\
+ \@DUT@author\\
in partial fulfillment of the\\
requirements for the degree\\
of\\
- \@degree\\
- \def@month\ \def@year
- \end{spacing}
+ \@DUT@degree\\
+ \@DUT@month\ \@DUT@year
\end{center}\par
- \vspace*{\fill}
- \end{titlepage}%
+% \end{macrocode}
+% Some more stretchy space for the bottom if we're not in draft mode.
+% \begin{macrocode}
+% \end{macrocode}
+% Add some stretchy space to center the title vertically if we're in
+% \Lopt{pagebreak} mode.
+% \begin{macrocode}
+ \if@DUT@pagebreak \vspace*{\fill} \fi
+ \end{@DUT@titlepage}%
+% \end{macrocode}
+% And that's it. We reset the footnote counter for the rest of the
+% document and save space by freeing the memory associated with the
+% |\maketitle| and |\and| macros (by setting them equal to |\relax|).
+% \begin{macrocode}
\setcounter{footnote}{0}%
\global\let\maketitle\relax
\global\let\and\relax
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\m@kecopyright}
-% Automate the creation of the copyright page.
-% From Manual 3.2 p9, ``Copyright Page''.
+%
+% \subsubsection{Copyright pages}
+% \label{sec:implement-copyright}
+%
+% \begin{macro}{\@DUT@makecopyright}
+% The Manual allows for the selection of different copyrights, so we
+% define a base macro that generates a proper copyright page
+% containing |\@copyrighttext|, which the user can set with
+% |\copyrighttext|.
+% From Manual \S 3.2 p9, ``Copyright Page''.
% \begin{itemize}
% \item Include a copyright page with the following information: a
% copyright notice, full legal name of author, and date of
% publication on file.
% \item This page is neither counted nor numbered.
% \end{itemize}
+% In final mode, we start off on a new page and center the blurb.
+% In draft mode, we dive right into the text.
% \begin{macrocode}
-\newcommand\m@kecopyright[1]{%
- \clearpage
- \ifpdf \pdfbookmark[0]{Copyright Page}{copyright} \fi
- \vspace*{\fill}
+\newcommand\@DUT@makecopyright{%
+ \@DUT@clearpage
+% \end{macrocode}
+% If we're using pdf\LaTeX, add a bookmark.
+% \begin{macrocode}
+ \ifpdf \pdfbookmark[0]{Copyright Page}{Copyright Page} \fi
+ \if@DUT@pagebreak \vspace*{\fill} \fi
\begin{center}
- \copyright~Copyright \def@year\\
- \@author. #1
+ \copyright~Copyright \@DUT@year\\
+ \@DUT@author. \@DUT@copyrighttext
\end{center}
- \vspace*{\fill}
+ \if@DUT@pagebreak \vspace*{\fill} \fi
% \end{macrocode}
-% |\thispagestyle{empty}| turns off page numbering for the current
-% page. See
-% \href{http://www.personal.ceu.hu/tex/pagestyl.htm#pgstyle}{here}.
+% Turn off page numbering for this page.
% \begin{macrocode}
\thispagestyle{empty}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\makecopyright}
+% \begin{macro}{\copyrighttextCCBYSA}
+% \begin{macro}{\DUTcopyrighttextCCBYSA}
+% The Creative Commons Attribution-ShareAlike License.
+% \changes{0.4}{2010/02/23}{W.~Trevor King renamed from
+% \cs{copyrighttextCC}, and made specific to Creative Commons
+% Attribution-ShareAlike Version 3.0.}
+% \begin{macrocode}
+\newcommand\copyrighttextCCBYSA{
+ \begin{quote}
+ This work is licensed under the terms of the Creative Commons
+ Attribution-ShareAlike license Version 3.0. The license is
+ available at \\
+ \url{http://creativecommons.org/licenses/by-sa/3.0/}.
+ \end{quote}
+}
+\let\DUTcopyrighttextCCBYSA\copyrighttextCCBYSA
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Mark commands}
+%
+% Default initializations of |\*mark| commands. These commands
+% are used in the definition of the page styles.
+%
+% \begin{macro}{\chaptermark}
+% Setup colon rather than period separated chapter marks.
+% (\file{classes.dtx}, L2053)
+% \begin{macrocode}
+\renewcommand\chaptermark[1]{%
+ \markboth {%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \@chapapp\ \thechapter: \ %
+ \fi
+ \fi
+ #1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\schaptermark}
+% Setup unnumbered chapter marks for \pkg{fancyhdr}.
+% \begin{macrocode}
+\newcommand\schaptermark[1]{\markboth{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sectionmark}
+% Setup space rather than period separated section marks.
+% (\file{classes.dtx}, L2054)
+% \begin{macrocode}
+\renewcommand{\sectionmark}[1]{%
+ \markright {%
+ \ifnum \c@secnumdepth >\z@
+ \thesection \ %
+ \fi
+ #1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Front Matter, Main Matter, and Back Matter}
+%
+% A book contains these three (logical) sections. The switch
+% |\@mainmatter| is true if and only if we are processing main
+% matter\footnote{%
+% \href{http://en.wikipedia.org/wiki/Book_design}{Wikipedia}
+% suggests \emph{body matter} for the main content, but
+% \href{http://mirror.ctan.org/macros/latex/base/classes.dtx}{\LaTeX's
+% \cls{book}} uses \emph{Main Matter}. We're a \LaTeX\ class, so
+% we'll stick with ``main matter'' for consistency.
+% }. When this switch is false, the
+% |\chapter| command does not print chapter numbers.
+%
+% \begin{macro}{\mainmatter}
+% This command clears the page (in final mode), starts arabic page
+% numbering and turns on chapter numbering. Since this restarts the
+% page numbering from 1, it should also ensure that a recto page is
+% used.
+%
+% We replace \cls{book}'s |\clear*page| calls with |\@DUT@clearpage| calls.
+% (\file{classes.dtx}, L2211)
+% \begin{macrocode}
+\renewcommand\mainmatter{%
+ \@DUT@cleardoublepage
+ \@mainmattertrue
+ \pagenumbering{arabic}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Parts}
+%
+% \begin{macro}{\part}
+% The command to start a new part of our document.
+%
+% We start a new (righthand) page and use the \pstyle{plain}
+% pagestyle, replacing \cls{book}'s |\clear*page| calls with
+% |\@DUT@clearpage| calls and dropping twopage code.
+% (\file{classes.dtx}, L2249)
+% \begin{macrocode}
+\renewcommand\part{%
+ \if@openright
+ \@DUT@cleardoublepage
+ \else
+ \@DUT@clearpage
+ \fi
+ \thispagestyle{plain}%
+ \@tempswafalse
+% \end{macrocode}
+% Add some stretchy space for vertical centering if we're in
+% \Lopt{pagebreak} mode.
+% \begin{macrocode}
+ \if@DUT@pagebreak \null\vfil \fi
+% \end{macrocode}
+% Here we use |\secdef| to indicate which commands to use to make
+% the actual heading.
+% \begin{macrocode}
+ \secdef\@part\@spart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@part}
+% This macro does the actual formatting of the title of the part. We
+% replace \cls{book}'s |\Huge| with |\large|, and make use of
+% |\numberline| for consistent spacing.
+%
+% When \Lcount{secnumdepth} is larger than $-2$, we have a numbered
+% part, otherwise it is unnumbered.
+% (\file{classes.dtx}, L2310)
+% \begin{macrocode}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}%
+ {\protect\numberline{\thepart}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+% \end{macrocode}
+% We empty the mark registers and center the title on the page.
+% Also we prevent breaking between lines and reset the font.
+% \begin{macrocode}
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+% \end{macrocode}
+% When this is a numbered part we have to print the number.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >-2\relax
+ \large\bfseries \partname\nobreakspace\thepart
+ \par
+% \end{macrocode}
+% We leave some space before we print the title and leave the
+% finishing up to |\@endpart|.
+% \begin{macrocode}
+ \vskip 20\p@
+ \fi
+ \large \bfseries #2\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% This macro does the actual formatting of the title of the part
+% when the star form of the user command was used. In this case we
+% \emph{never} print a number. Otherwise the formatting is the
+% same.
+% (\file{classes.dtx}, L2402)
+% \begin{macrocode}
+\def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \large \bfseries #1\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% This macro finishes the part page, for both |\@part| and |\@spart|.
+% We drop \cls{book}'s twoside handling.
+% If we're in \Lopt{pagebreak} mode, we fill the current page.
+% (\file{classes.dtx}, L2435)
% \begin{macrocode}
-\newcommand\makecopyright{%
- \m@kecopyright{All Rights Reserved.}
+\def\@endpart{
+ \if@DUT@pagebreak \vfil\newpage \fi
+% \end{macrocode}
+% Then, when we are in twosided mode and the chapters are supposed to
+% be on the right hand sides, we produce a completely blank page. We
+% don't need to check \Lopt{pagebreak}-mode here, because the
+% pagebreak options set the \cls{book} opening options.
+% \begin{macrocode}
+ \if@twoside
+ \if@openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Chapters}
+% \label{sec:implement-chapters}
+%
+% \begin{macro}{\chapter}
+% \cls{book} always starts a chapter on a new page, but we don't want
+% to do that if we're in draft mode.
+% (\file{classes.dtx}, L2472).
+% \begin{macrocode}
+\renewcommand\chapter{%
+ \if@openright\@DUT@cleardoublepage\else\@DUT@clearpage\fi
+ \thispagestyle{plain}%
+% \end{macrocode}
+% Then we prevent floats from appearing at the top of this page
+% because it looks weird to see a floating object above a chapter
+% title.
+% \begin{macrocode}
+ \global\@topnum\z@
+% \end{macrocode}
+% Then we suppress the indentation of the first paragraph by
+% setting the switch |\@afterindent| to false. We use |\secdef|
+% to specify the macros to use for actually setting the chapter
+% title.
+% \begin{macrocode}
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listed@schapter}
+% |\chapter| declares numbered chapters, which are listed in the table
+% of contents.
+% |\chapter*| declares unnumbered chapters, which are \emph{not}
+% listed in the TOC.
+% |\listed@schapter| declares an unnumbered chapter that \emph{is}
+% listed in the TOC.
+% \begin{macrocode}
+\newcommand\listed@schapter[1]{%
+ \if@openright\@DUT@cleardoublepage\else\@DUT@clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \phantomsection
+ \addcontentsline{toc}{chapter}{#1}
+ \@afterindentfalse
+ \@schapter{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+% This macro is called when we have a numbered chapter. When
+% \Lcount{secnumdepth} is larger than $-1$ and |\@mainmatter| is true,
+% we display the chapter number.
+% We drop \cls{book}'s \Lopt{twocolumn} code.
+% (\file{classes.dtx}, L2496).
+% \begin{macrocode}
+\def\@chapter[#1]#2{
+% \end{macrocode}
+% Inform the user that a new chapter is about to be typeset by writing
+% a message to the terminal.
+% \changes{0.9}{2010/05/21}{W.~Trevor King disabled the label macro
+% for typeout.}
+% Some users place |\label| in their chapter argument:
+% \begin{example}
+% \chapter{Bla bla\label{x}}
+% \end{example}
+% rather than after (as recommended by
+% \href{http://en.wikibooks.org/wiki/LaTeX/Labels_and_Cross-referencing#Sections}%
+% {the \LaTeX\ Wikibook} and
+% \href{http://www.ctan.org/tex-archive/info/lshort/english/lshort.pdf}%
+% {The Not So Short Introduction to \LaTeXe\ (\S 2.8, p36)}):
+% \begin{example}
+% \chapter{Bla bla}
+% \label{x}
+% \end{example}
+% The embedded |\label| chokes |\typeout| so we temporarily redefine
+% |\label| to just gobble its contents. |\@DUT@label| stores the
+% original definition.
+% \begin{macrocode}
+ \let\@DUT@label=\label%
+ \renewcommand{\label}[1]{}%
+ \typeout{\@chapapp\space\thechapter. #1}%
+% \end{macrocode}
+% Restore |\label| to its previous glory.
+% \begin{macrocode}
+ \let\label=\@DUT@label%
+% \end{macrocode}
+% Now we can get on with the real work.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+% \end{macrocode}
+% After having written an entry to the table of contents we store
+% the (alternative) title of this chapter with |\chaptermark|.
+% \begin{macrocode}
+ \chaptermark{#1}%
+% \end{macrocode}
+% For nicer lists of figures and tables, we could add some white space
+% to separate the chapters. However, nice lists $\neq$~Manual
+% specifications.
+% \begin{macrocode}
+% \addtocontents{lof}{\protect\addvspace{10\p@}}%
+% \addtocontents{lot}{\protect\addvspace{10\p@}}%
+% \end{macrocode}
+% Then we call upon |\@makechapterhead| to format the actual chapter
+% title. |\@afterheading| which takes care of suppressing the
+% indentation.
+% \begin{macrocode}
+ \@makechapterhead{#2}%
+ \@afterheading}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+% The |\@chapter| macro uses |\@makechapterhead|\meta{text} to format
+% the heading of the chapter.
+% From the Manual \S 3.11 p11.
+% \begin{quote}
+% Chapter headings must be bold and centered.
+% The chapter number and title must be on the same line, separated
+% by a colon or period, as shown in the example below:
+% \begin{center}
+% CHAPTER 1: INTRODUCTION
+% \end{center}
+% Headings must not be larger than 12 points.
+% Headings must be single spaced.
+% \end{quote}
+% \cls{book} sets |\@chapapp| and |\thechapter| (e.g., ``Chapter 5'')
+% on a line above the chapter title, but that doesn't match the
+% Manual's specification.
+%
+% We begin by leaving some white space. The we open a group in which
+% we have a paragraph indent of 0pt, and in which we have the text set
+% ragged right. We also reset the font.
+% (\file{classes.dtx}, L2540).
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+% \end{macro}
+% Adding even a \vspace*{0\p@} here seems to increase the vertical
+% space above the chapter heading by two lines. I'm not sure why.
+% Workaround is to pass the ``value of blanklines you want minus two''
+% to |\blanklines*|. HACK!
+% \begin{macro}
+ \blanklines*{-1}% HACK!
+ {\parindent \z@ \raggedright \normalfont
+% \end{macrocode}
+% Ensure single spacing.
+% \begin{macrocode}
+ \setstretch{\@ssp}%
+% \end{macrocode}
+% Prevent a pagebreak from occuring in the middle of or after the title.
+% \begin{macrocode}
+ \interlinepenalty\@M
+% \end{macrocode}
+% Check whether the number of the chapter has to be printed.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >\m@ne
+% \end{macrocode}
+% Check whether there \emph{is} a number to be printed.
+% \begin{macrocode}
+ \if@mainmatter
+% \end{macrocode}
+% Setup a ``Chapter \#: Title'' heading.
+% \begin{macrocode}
+ \center \large \bfseries \@chapapp{} \thechapter: #1\par\nobreak
+ \else
+% \end{macrocode}
+% Setup a ``Title'' heading.
+% \begin{macrocode}
+ \center \large \bfseries #1\par\nobreak
+ \fi
+ \else
+ \center \large \bfseries #1\par\nobreak
+ \fi
+% \end{macrocode}
+% Put a little space before the chapter body. We use four blank lines
+% to comply with the Manual \S 3.13 p12
+% \begin{quote}
+% Begin the list of sources four spaces below the heading.
+% \end{quote}
+% \begin{macrocode}
+ \blanklines{4}
+ }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\makecopyrightCC}
+% \begin{macro}{\@schapter}
+% This macro is called when we have an unnumbered chapter. We drop
+% \file{classes.dtx}'s \Lopt{twocolumn} code and set marks for
+% \pkg{fancyhdr}.
+% (\file{classes.dtx}, L2582).
% \begin{macrocode}
-\newcommand\makecopyrightCC{
- \m@kecopyright{
- \begin{quote}
- This work is licensed under the terms of the Creative Commons
- Attribution-ShareAlike license. The license is available at \\
- \url{http://creativecommons.org/licenses/by-sa/2.0/}.
- \end{quote}
+\def\@schapter#1{
+% \end{macrocode}
+% Inform the user that a new chapter is about to be typeset by writing
+% a message to the terminal.
+% \begin{macrocode}
+ \typeout{\@chapapp\space #1}%
+ \schaptermark{#1}%
+ \@makeschapterhead{#1}%
+ \@afterheading}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makeschapterhead}
+% The macro above uses |\@makeschapterhead|\meta{text} to format
+% the heading of the chapter. It is similar to |\@makechapterhead|
+% except that it never has to print a chapter number.
+% (\file{classes.dtx}, L2595).
+% \begin{macrocode}
+\def\@makeschapterhead#1{%
+ \blanklines*{-1}% HACK!
+ {\parindent \z@ \raggedright \normalfont
+ \setstretch{\@ssp}%
+ \interlinepenalty\@M
+ \center \large \bfseries #1\par\nobreak
+ \blanklines{4}%
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tableofcontents}
-% Automate the creation of the table of contents.
-% From Manual 3.5 p9, ``Table of Contents'', and the example on p17.
-% \begin{itemize}
-% \item Do not list any sections that precede the
-% |Table of Contents| (e.g.\ |Dedications|, |Acknowledgments|). Do
-% not list the |Table of Contents| itself.
-% \item These pages are counted and numbered in lowercase Roman numerals.
-% \end{itemize}
-% Override \cls{book}'s definition.
+%
+% \subsubsection{Lower level headings}
+%
+% \begin{macro}{\section}
+% Setup section headings in |\large| rather than \cls{book}'s
+% |\Large|.
+% (\file{classes.dtx}, L2623).
% \begin{macrocode}
-\renewcommand\tableofcontents{%
- \clearpage
- \ifpdf
- \phantomsection
- \pdfbookmark[0]{\contentsname}{tableofcontents}
- \fi
- \chapter*{\contentsname}
- \@mkboth{\MakeUppercase\contentsname}%
- {\MakeUppercase\contentsname}%
- \@starttoc{toc}%
-}
+\renewcommand\section{%
+ \@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\large\bfseries}}
% \end{macrocode}
% \end{macro}
%
%
-% \subsection{Environments}
+% \subsubsection{Defining new environments}
+%
+% We don't override any of \cls{book}'s environments, but this is
+% where \file{classes.dtx} defines its environments (L2996), so we'll put
+% ours here too.
%
% \begin{environment}{preamble}
+% \begin{environment}{DUTpreamble}
% \begin{macrocode}
\newenvironment{preamble}{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{roman}
+ \if@approvalform
+ \ifpdf
+ \pdfbookmark[-1]{Approval Form}{Approval Form}
+ \fi
+ \DUT@makeapprovalform
+ \fi
% \end{macrocode}
-% From Manual 3.1 p8, ``Title Page''.
+% From Manual \S 3.1 p8, ``Title Page''.
% \begin{macrocode}
- \maketitle
+ \@DUT@maketitle
% \end{macrocode}
-% From Manual 3.2 p9, ``Copyright Page''.
+% From Manual \S 3.2 p9, ``Copyright Page''.
% \begin{macrocode}
- \makecopyright
+ \@DUT@makecopyright
}{%
% \end{macrocode}
-% From the Manual 3.9, p11:
+% From the Manual \S 3.9, p11:
% \begin{quote}
% Include a blank page (with no page number) before the first page
% of text. The blank page is neither numbered nor counted.
% \end{quote}
% \begin{macrocode}
- \blankpage
+ \@DUT@blankpage
}
% \end{macrocode}
+% \LaTeX's |\newenvironment| and company work by defining |\X| and
+% |\endX| for the environment |X|. We can alias the preamble
+% environment by saving these macros.
+% \begin{macrocode}
+\let\DUTpreamble\preamble
+\let\endDUTpreamble\endpreamble
+% \end{macrocode}
+% \end{environment}
% \end{environment}
%
% \begin{environment}{dedications}
-% From the Manual 3.3 p9
+% \begin{environment}{DUTdedications}
+% From the Manual \S 3.3 p9
% \begin{itemize}
% \item The heading |Dedications| must appear at the top of the
% page. The heading must be bold, centered, and without
% punctuation.
% \item This page is counted and numbered in lowercase Roman numerals.
% \end{itemize}
+% \changes{0.12}{2010/06/17}{W.~Trevor King added \cs{par} to detach
+% the single space \cs{setstretch} from the from the final
+% paragraph.}
% \begin{macrocode}
\newenvironment{dedications}{%
- \clearpage
+ \@DUT@clearpage
\ifpdf
\phantomsection
- \pdfbookmark[0]{\dedicationsname}{dedications}
+ \pdfbookmark[0]{\DUTdedicationsname}{\DUTdedicationsname}
\fi
- \chapter*{\dedicationsname}
- \begin{spacing}{\@dsp}
+ \chapter*{\DUTdedicationsname}
+ \setstretch{\@dsp}%
}{%
- \end{spacing}
+ \par\setstretch{\@ssp}%
}
+\let\DUTdedications\dedications
+\let\endDUTdedications\enddedications
% \end{macrocode}
% \end{environment}
+% \end{environment}
%
% \begin{environment}{acknowledgments}
-% From the Manual 3.4 p9
+% \begin{environment}{DUTacknowledgments}
+% From the Manual \S 3.4 p9
% \begin{itemize}
% \item The heading |Acknowledgments| must appear at the top of the
% page. The heading must be bold, centered, and without
% punctuation.
% \item This page is counted and numbered in lowercase Roman numerals.
% \end{itemize}
+% \changes{0.12}{2010/06/17}{W.~Trevor King added \cs{par} to detach
+% the single space \cs{setstretch} from the from the final
+% paragraph.}
% \begin{macrocode}
\newenvironment{acknowledgments}{%
- \clearpage
+ \@DUT@clearpage
\ifpdf
\phantomsection
- \pdfbookmark[0]{\acknowledgmentsname}{acknowledgments}
+ \pdfbookmark[0]{\DUTacknowledgmentsname}{\DUTacknowledgmentsname}
\fi
\chapter*{\acknowledgmentsname}
- \begin{spacing}{\@dsp}
+ \setstretch{\@dsp}%
}{%
- \end{spacing}
+ \par\setstretch{\@ssp}%
}
% \end{macrocode}
+\let\DUTacknowledgments\acknowledgments
+\let\endDUTacknowledgments\endacknowledgments
+% \end{environment}
% \end{environment}
%
% \begin{environment}{abstract}
+% \begin{environment}{DUTabstract}
% \begin{macrocode}
\newenvironment{abstract}{%
- \clearpage
- \thispagestyle{plain}%
- \global\@topnum\z@
- \phantomsection
- \addcontentsline{toc}{chapter}{\abstractname}
- \vspace*{50\p@}%
+ \listed@schapter{\abstractname}%
% \end{macrocode}
-% From the Manual 3.9 p10 ``The following heading must be centered at
-% the top of the page'':
-% \begin{center}
-% Abstract \\
-% Full Title of Dissertation or Thesis \\
-% Author's Name as it appears on the Dissertation or Thesis
-% \end{center}
-% In the example on p20, they list the advisor's name after the
-% author, but that is not specified in the text on p10.
-%
-% On p20, ``These pages are numbered using lowercase Roman numerals.
-% Note that the heading is single spaced, but the abstract is double
-% spaced.''
+% Suck up some blank space to position the rest of the header right
+% under the chapter title.
+% \begin{macrocode}
+ \blanklines{-4}%
+% \end{macrocode}
+% From the Manual \S 3.9 p10
+% \begin{quote}
+% \begin{itemize}
+% \item The following heading must be centered at the top of the page
+% \begin{center}
+% Abstract \\
+% Full Title of Dissertation or Thesis \\
+% Author's Name as it appears on the Dissertation or Thesis
+% \end{center}
+% In the example on p20, they list the advisor's name after the
+% author, but that is not specified in the text on p10.
+% \item The text begins four lines below this heading.
+% \end{itemize}
+% \end{quote}
+% On p20
+% \begin{quote}
+% \begin{itemize}
+% \item These pages are numbered using lowercase Roman numerals.
+% \item Note that the heading is single spaced, but the abstract
+% is double spaced.
+% \end{itemize}
+% \end{quote}
+% \changes{0.12}{2010/06/17}{W.~Trevor King added \cs{par} to detach
+% the single space \cs{setstretch} from the from the final
+% paragraph.}
% \begin{macrocode}
- \begin{spacing}{\@ssp}
\begin{center}
- {\large \bfseries \abstractname \par}
-%% \@endparpenalty\@M
- \@title\\
- \@author\\
- \@advisor\\
+ \setstretch{\@ssp}%
+ \@DUT@title\\
+ \@DUT@author\\
+% \end{macrocode}
+% If you're feeling daring, break the rules and add ``Advisor(s):'' to
+% set off your list of advisor names.
+% \changes{0.11}{2010/06/04}{W.~Trevor King added ``Advisor(s):'' for
+% daring users.}
+% \begin{macrocode}
+ \ifdaring{%
+ \ifnum\c@@DUT@advisors=\@ne%
+ Advisor:
+ \else%
+ Advisors:
+ \fi}{}
+ \@DUT@advisor\\
\end{center}
- \end{spacing}
- \blanklines{2}
- \begin{spacing}{\@dsp}
+ \blanklines{4}%
+ \setstretch{\@dsp}%
\@nobreaktrue
\@afterindentfalse
\@afterheading
}{%
- \end{spacing}
+ \par\setstretch{\@ssp}%
}
+\let\DUTabstract\abstract
+\let\endDUTabstract\endabstract
% \end{macrocode}
% \end{environment}
+% \end{environment}
%
% \begin{environment}{thesis}
-% From the Manual 3.10 p11
+% \begin{environment}{DUTthesis}
+% From the Manual \S 3.10 p11
% \begin{itemize}
% \item The pages are counted and numbered in Arabic numerals.
% \end{itemize}
+% \changes{0.8}{2010/05/20}{W.~Trevor King replaced Backmatter with
+% Back Matter for consistency with \LaTeX's book class.}
% \begin{macrocode}
\newenvironment{thesis}{%
\mainmatter
- \begin{spacing}{\@dsp}
+ \setstretch{\@dsp}%
}{%
- \end{spacing}
- \clearpage
+ \setstretch{\@ssp}%
+ \@DUT@clearpage
\ifpdf
\phantomsection
- \pdfbookmark[-1]{Backmatter}{backmatter}
+ \pdfbookmark[-1]{Back Matter}{Back Matter}
\fi
}
+\let\DUTthesis\thesis
+\let\endDUTthesis\endthesis
% \end{macrocode}
% \end{environment}
+% \end{environment}
%
+% \paragraph{Vita}
+% \label{sec:implement-vita}
+%
% \begin{environment}{vita}
-% From the Manual 3.15 p13
+% \begin{environment}{DUTvita}
+% From the Manual \S 3.15 p13
% \begin{itemize}
% \item The heading |Vita| must appear at the top of the page. The
% heading must be bold, centered, and without punctuation.
% \item List the Vita separately in the Table of Contents.
% \item The page is counted and numbered in Arabic numerals.
% \end{itemize}
+% \changes{0.12}{2010/06/17}{W.~Trevor King added \cs{par} to detach
+% the single space \cs{setstretch} from the from the final
+% paragraph.}
% \begin{macrocode}
\newenvironment{vita}{%
- \clearpage
- \phantomsection
- \addcontentsline{toc}{chapter}{\vitaname}
- \chapter*{\vitaname}
- \blanklines{1}
- \begin{spacing}{\@dsp}
+ \listed@schapter{\vitaname}
+ \setstretch{\@dsp}%
}{%
- \end{spacing}
+ \par\setstretch{\@ssp}%
}
+\let\DUTvita\vita
+\let\endDUTvita\endvita
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+%
+% \subsubsection{Titlepage}
+%
+% \begin{environment}{titlepage}
+% In the normal environments, the titlepage environment does nothing
+% but start and end a page, and inhibit page numbers. We inhibit the
+% paging in draft mode, since it seems silly to waste a whole page on
+% the title. We also drop the \Lopt{twocolumn} code.
+% (\file{classes.dtx}, L3111)
+% \begin{macrocode}
+\renewenvironment{titlepage}%
+ {\thispagestyle{empty}\setcounter{page}\z@}%
+ {\@DUT@newpage}
+\let\@DUT@titlepage\titlepage
+\let\end@DUT@titlepage\endtitlepage
% \end{macrocode}
% \end{environment}
%
%
-% \subsection{Adjust from the \LaTeX/\cls{book} defaults}
+% \subsubsection{Appendix}
+% \label{sec:implement-appendix}
+%
+% \begin{macro}{\appendix}
+% \begin{macro}{\DUTappendix}
+% The |\appendix| command is not really an environment, it is a
+% macro that makes some changes in the way things are done.
+%
+% In the article document class the |\appendix| command must do the
+% following:
+% \begin{itemize}
+% \item reset the section and subsection counters to zero,
+% \item redefine |\thesection| to produce alphabetic appendix
+% numbers. This redefinition is done globally to ensure that it
+% survives even if |\appendix| is issued within an environment such
+% as |multicols|.
+% \end{itemize}
+%
+% In addition to \cls{book}'s (or \pkg{hyperref}'s) activity, we
+% fiddle with the \pkg{tocloft} chapter settings add switch to global
+% double-spacing.
+% (\file{classes.dtx}, L3177)
+% \begin{macrocode}
+\let\@DUT@appendix\appendix
+\renewcommand\appendix{%
+ \@DUT@appendix%
+% \end{macrocode}
+% Setup TOC entries like
+% \begin{center}
+% Appendix A: Chapter Title
+% \end{center}
+% We don't need to worry about the |vita| environment (page
+% \pageref{sec:implement-vita}), because it is a |\listed@schapter|,
+% and therefore lacks a |\numberline| section in its \file{*.toc}
+% entry.
%
+% We increase |numwidth| to 6.5em to make room for |Appendix~| before
+% the chapter number/letter, and add a colon after it.
%
-% |\intextsep| sets the space left on top and bottom of an in-text
-% float (see
-% \href{http://www.eng.cam.ac.uk/help/tpl/textprocessing/squeeze.html}{here}).
+% The |\protect| calls get the macros into \file{*.toc} unexpanded, so
+% they function correctly when \LaTeX\ parses \file{*.toc}.
+% \begin{macrocode}
+ \addtocontents{toc}{%
+ \protect\cftsetindents{chapter}{0pt}{6.5em}
+ \protect\renewcommand{\protect\cftchappresnum}{\protect\appendixname~}
+ \protect\renewcommand{\protect\cftchapaftersnum}{:}}
+% \end{macrocode}
+% We also turn on double spacing by default, since we're no longer
+% wrapped in the |thesis| environment.
% \begin{macrocode}
-\setlength\intextsep{30pt}
+ \setstretch{\@dsp}%
+}
+\let\DUTappendix\appendix
% \end{macrocode}
+% \end{macro}
+% \end{macro}
%
%
-% \subsubsection{Part and chapter headings}
+% \subsubsection{Table of Contents}
+% \label{sec:implement-toc}
%
-% Override \cls{book}'s |\makechapterhead|.
-% From the Manual 3.11 p11.
+% From Manual \S 3.5 p9, ``Table of Contents'', and the example on p17.
% \begin{quote}
-% Chapter headings must be bold and centered.
-% The chapter number and title must be on the same line, separated
-% by a colon or period, as shown in the example below:
-% \begin{center}
-% CHAPTER 1: INTRODUCTION
-% \end{center}
-% Headings must not be larger than 12 points.
-% Headings must be single spaced.
+% \begin{itemize}
+% \item Do not list any sections that precede the
+% |Table of Contents| (e.g., |Dedications|, |Acknowledgments|). Do
+% not list the |Table of Contents| itself.
+% \item These pages are counted and numbered in lowercase Roman numerals.
+% \end{itemize}
% \end{quote}
+%
+% \begin{macro}{\cfttoctitlefont}
+% Take advantange of \pkg{tocloft}'s TOC title code.
+% (\file{tocloft.dtx}, L1501)
+% \begin{example}
+% \cfttoctitlefont\contentsname}{\cftaftertoctitle}
+% \end{example}
+% by setting it equal to something ending in |\chapter*|. That way
+% \LaTeX parses the whole thing as
+% \begin{example}
+% ...\chapter*\contentsname}{\cftaftertoctitle}
+% \end{example}
+% which will set up the TOC page correctly.
% \begin{macrocode}
-\def\@makechapterhead#1{%
- \vspace*{50\p@}%
+\renewcommand\cfttoctitlefont{%
% \end{macrocode}
-% Replaced |\normalfont| with |\reset@font| (TODO: why?).
+% Start a new page in \Lopt{final} mode
% \begin{macrocode}
- {\parindent \z@ \raggedright \reset@font
- \ifnum \c@secnumdepth >\m@ne
+ \@DUT@clearpage
% \end{macrocode}
-% Removed |\if@mainmatter| conditional guarding this indented section
-% (TODO: why?).
+% Add a bookmark if we're using pdf\LaTeX.
% \begin{macrocode}
- \par\nobreak
- \vskip 20\p@
- \fi
- \interlinepenalty\@M
+ \ifpdf
+ \phantomsection
+ \pdfbookmark[0]{\contentsname}{\contentsname}
+ \fi
% \end{macrocode}
-% Ensure single spacing, and ensure the chapter heading will have a
-% centered, |\large|, bold \emph{Chapter \#: Title} or \emph{Appendix
-% \#: Title} format (as opposed to \cls{book}'s unaligned, |\Huge|,
-% bold \emph{Title}).
+% |\chapter*| to gobble and format the next token (|\contentsname|).
% \begin{macrocode}
- \begin{spacing}{\@ssp}
- \center \large \bfseries \@chapapp{} \thechapter: #1\par\nobreak
- \blanklines{2}
- \end{spacing}
- }
-}
+ \chapter*}
% \end{macrocode}
+% \end{macro}
%
-% Override \cls{book}'s |\@makeschapterhead|. TODO: Why?
+% \begin{macro}{\aftertoctitleskip}
+% Don't add any extra space after the title (the chapter will take
+% care of that).
% \begin{macrocode}
-\def\@makeschapterhead#1{%
- \vspace*{50\p@}%
- {\parindent \z@ \raggedright
+\setlength\cftaftertoctitleskip{0pt}
% \end{macrocode}
-% Replaced |\normalfont| with |\reset@font| (TODO: why?).
+% \end{macro}
+%
+% \begin{macro}{\l@DUT@toc@sep}
+% Define a length for TOC/LOF/LOT spacing.
+% \changes{0.13}{2010/07/28}{Renamed from \cs{l@cont@sep}.}
% \begin{macrocode}
- \reset@font
- \interlinepenalty\@M
+\newlength\l@DUT@toc@sep
+\set@lines@length{\l@DUT@toc@sep}{\@DUT@toc@sep}
% \end{macrocode}
-% Ensure single spacing.
+% \end{macro}
+%
+% \begin{macro}{\DUT@toc@high@font}
+% Define a font for high level (part, chapter) entries.
+% \changes{0.13}{2010/07/28}{Renamed from \cs{@cont@font}.}
% \begin{macrocode}
- \begin{spacing}{\@ssp}
+\newcommand{\DUT@toc@high@font}{\normalsize\scshape}
% \end{macrocode}
-% Replaced |\Huge| with |\center \large|
+% \end{macro}
+%
+% \begin{macro}{\DUT@toc@low@font}
+% Define a font for low level (section, table, figure) entries.
+% \changes{0.13}{2010/07/28}{Macro added.}
% \begin{macrocode}
- \center \large \bfseries #1\par\nobreak
+\newcommand{\DUT@toc@low@font}{\normalfont}
% \end{macrocode}
-% Replaced |\vskip 40\p@| with |\blanklines{2}|
+% \end{macro}
+%
+% \begin{macro}{\DUT@toc@page@font}
+% Define a font for page numbers.
+% \changes{0.13}{2010/07/28}{Macro added.}
% \begin{macrocode}
- \blanklines{2}
- \end{spacing}
- }
-}
+\newcommand{\DUT@toc@page@font}{\normalfont}
% \end{macrocode}
+% \end{macro}
%
-% Override \cls{book}'s |\section|, replacing |\Large| with |\large|.
+% \begin{macro}{\cftbeforepartskip}
+% \begin{macro}{\cftpartfont}
+% \begin{macro}{\cftpartleader}
+% \begin{macro}{\cftpartdotsep}
+% \begin{macro}{\cftpartpagefont}
+% Setup parts. See the \pkg{tocloft} manual for a description of the
+% commands.
% \begin{macrocode}
-\renewcommand\section{\@startsection {section}{1}{\z@}%
- {-3.5ex \@plus -1ex \@minus -.2ex}%
- {2.3ex \@plus.2ex}%
- {\normalfont\large\bfseries}}
+\setlength\cftbeforepartskip{\l@DUT@toc@sep}
+\cftsetindents{part}{0pt}{3em}
+\if@boldpart \renewcommand{\cftpartfont}{\bfseries\DUT@toc@high@font}
+\else \renewcommand{\cftpartfont}{\DUT@toc@high@font}
+\renewcommand{\cftpartleader}{\cftdotfill{\cftpartdotsep}}
+\if@dottedpart \renewcommand{\cftpartdotsep}{\cftdotsep}
+\else \renewcommand{\cftpartdotsep}{\cftnodots} \fi
+\renewcommand{\cftpartpagefont}{\DUT@toc@page@font}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% Fix |\@ssect| and |\@sect| from |latex.ltx| to give single spaced
-% headings. These macros are defined in |ltsect.dtx|
-% (\href{http://www.ctan.org/tex-archive/macros/latex/base/}{\pkg{\LaTeX\ base}})),
-% but the documentation there is not great.
-% \begin{command}
-% `\cs{@ssect}\bracearg{INDENT}\bracearg{BEFORESKIP}\bracearg{AFTERSKIP}'
-% `~~\bracearg{STYLE}\bracearg{ARG}'
-% `\cs{@sect}\bracearg{NAME}\bracearg{LEVEL}\bracearg{INDENT}\bracearg{BEFORESKIP}'
-% `~~\bracearg{AFTERSKIP}\bracearg{STYLE}\brackarg{ARG1}\bracearg{ARG2}'
-% \end{command}
-% By comparison to \cls{book}'s |\@part| and |\@spart| (see below), I
-% imagine they have something to do with formatting section names.
+% \begin{macro}{\cftbeforechapskip}
+% \begin{macro}{\cftchapaftersnum}
+% \begin{macro}{\cftchapfont}
+% \begin{macro}{\cftchapleader}
+% \begin{macro}{\cftchapdotsep}
+% \begin{macro}{\cftchappagefont}
+% Setup chapters and appendicies. Some of these settings are adjusted
+% for appendicies in particular by |\appendix|
+% (Sec.~\ref{sec:implement-appendix}).
% \begin{macrocode}
-\def\@ssect#1#2#3#4#5{%
- \@tempskipa #3\relax
- \ifdim \@tempskipa>\z@
- \begingroup
- \begin{spacing}{\@ssp}
- #4{%
- \@hangfrom{\hskip #1}%
- \interlinepenalty \@M #5\@@par}%
- \endgroup
- \end{spacing}
- \else
- \def\@svsechd{#4{\hskip #1\relax #5}}%
- \fi
- \@xsect{#3}}
+\setlength\cftbeforechapskip{\l@DUT@toc@sep}
+\cftsetindents{chapter}{0pt}{1.5em}
+\renewcommand{\cftchapaftersnum}{.}
+\if@boldchapter \renewcommand{\cftchapfont}{\bfseries\DUT@toc@high@font}
+\else \renewcommand{\cftchapfont}{\DUT@toc@high@font} \fi
+\renewcommand{\cftchapleader}{\cftdotfill{\cftchapdotsep}}
+\if@dottedchapter \renewcommand{\cftchapdotsep}{\cftdotsep}
+\else \renewcommand{\cftchapdotsep}{\cftnodots} \fi
+\renewcommand{\cftchappagefont}{\DUT@toc@page@font}
% \end{macrocode}
-% Now for |\@sect|.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforesecskip}
+% \begin{macro}{\cftsecfont}
+% \begin{macro}{\cftpagefont}
+% \begin{macro}{\cftbeforesubsecskip}
+% \begin{macro}{\cftsubsecfont}
+% \begin{macro}{\cftsubsecpagefont}
+% \begin{macro}{\cftbeforesubsubsecskip}
+% \begin{macro}{\cftsubsubsecfont}
+% \begin{macro}{\cftsubsubsecpagefont}
+% Setup sections, subsections, etc.
+% \changes{0.13}{2010/07/28}{Added \cs{cft*pagefont} definitions and
+% switch \cs{cft*font} from hardcoded \cs{normalsize} to
+% \cs{DUT@toc@low@font}.}
% \begin{macrocode}
-\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
- \begin{spacing}{\@ssp}
- #6{%
- \@hangfrom{\hskip #3\relax\@svsec}%
- \interlinepenalty \@M #8\@@par}%
- \end{spacing}
- \endgroup
- \csname #1mark\endcsname{#7}%
- \addcontentsline{toc}{#1}{%
- \ifnum #2>\c@secnumdepth \else
- \protect\numberline{\csname the#1\endcsname}%
- \fi
- #7}%
- \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}}
+%\cftsetindents{chap}{0pt}{1.5em}
+\setlength\cftbeforesecskip{\l@DUT@toc@sep}
+\cftsetindents{section}{0pt}{3em}
+\renewcommand{\cftsecfont}{\DUT@toc@low@font}
+\renewcommand{\cftsecpagefont}{\DUT@toc@page@font}
+\setlength\cftbeforesubsecskip{\l@DUT@toc@sep}
+\cftsetindents{subsection}{0pt}{4.5em}
+\renewcommand{\cftsubsecfont}{\DUT@toc@low@font}
+\renewcommand{\cftsubsecpagefont}{\DUT@toc@page@font}
+\setlength\cftbeforesubsubsecskip{\l@DUT@toc@sep}
+\cftsetindents{subsubsection}{0pt}{6em}
+\renewcommand{\cftsubsubsecfont}{\DUT@toc@low@font}
+\renewcommand{\cftsubsubsecpagefont}{\DUT@toc@page@font}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% Override \cls{book}'s |\@part| and |\@spart|, replacing |\Huge| with
-% |\large|. From |classes.dtx|, |\@part| formats the title of the part,
-% and |\@spart| formats the title of a starred part.
+% The default indents above are all |0pt|. If \Lopt{indenttoc} was
+% given, override this, restoring the \pkg{tocloft} defaults, see the
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/tocloft/tocloft.pdf}{%
+% \pkg{tocloft} manual, Table 1}.
% \begin{macrocode}
-\def\@part[#1]#2{%
- \ifnum \c@secnumdepth >-2\relax
- \refstepcounter{part}%
- \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
- \else
- \addcontentsline{toc}{part}{#1}%
- \fi
- \markboth{}{}%
- {\centering
- \interlinepenalty \@M
- \normalfont
- \ifnum \c@secnumdepth >-2\relax
- \large\bfseries \partname\nobreakspace\thepart
- \par
- \vskip 20\p@
- \fi
- \large \bfseries #2\par}%
- \@endpart}
-\def\@spart#1{%
- {\centering
- \interlinepenalty \@M
- \normalfont
- \large \bfseries #1\par}%
- \@endpart}
+\if@indenttoc
+ \cftsetindents{chapter}{0pt}{1.5em}
+ \cftsetindents{section}{1.5em}{2.3em}
+ \cftsetindents{subsection}{3.8em}{3.2em}
+ \cftsetindents{subsubsection}{7.0em}{4.1em}
+\fi
% \end{macrocode}
%
%
-% \subsubsection{Adding TOC entries and blank pages}
+% \subsubsection{List of figures}
+% \label{sec:implement-lof}
%
-% Override \cls{book}'s |\listoftables|, selecting the false branch
-% of the |\if@twocolumn| conditionals, adding a line to the table of
-% contents, and clearing the page.
-% From the Manual 3.6 p10
+% From the Manual \S 3.7 p10
% \begin{quote}
-% The heading |List of Tables| must appear at the top of the first
-% page.
-% The heading must be bold, centered, and without punctuation.
-% List table captions exactly as they appear above the tables in
-% the text.
-% Single space each entry, but double-space between entries.
-% Separate table captions from page numbers with right-justified
-% tabs and dot leaders.
-% Do not use periods to separate captions and page numbers.
-% These pages are counted and numbered in lowercase Roman numerals.
+% \begin{itemize}
+% \item The heading |List of Figures| must appear at the top of
+% the first page.
+% \item The heading must be bold, centered, and without
+% punctuation. List figure captions exactly as they appear
+% below the figures in the text.
+% \item Single space each entry, but double-space between entries.
+% \item Separate figure captions from page numbers with
+% right-justified tabs and dot leaders.
+% \item Do not use periods to separate captions and page numbers.
+% \item These pages are counted and numbered in lowercase Roman
+% numerals.
+% \end{itemize}
% \end{quote}
+%
+% \begin{macro}{\cftloftitlefont}
+% Much like our |\cfttoctitlefont|, but the list of figures gets
+% listed in the TOC.
% \begin{macrocode}
-\renewcommand\listoftables{%
- \clearpage
- \phantomsection
- \addcontentsline{toc}{chapter}{\listtablename}
- \chapter*{\listtablename}%
- \@mkboth{\MakeUppercase\listtablename}%
- {\MakeUppercase\listtablename}%
- \@starttoc{lot}%
-}
+\renewcommand\cftloftitlefont{\listed@schapter}
% \end{macrocode}
+% \end{macro}
%
-% Override \cls{book}'s |\listoffigures|, selecting the false branch
-% of the |\if@twocolumn| conditionals, adding a line to the table of
-% contents, and clearing the page.
-% From the Manual 3.7 p10
-% \begin{quote}
-% The heading |List of Figures| must appear at the top of the first
-% page.
-% The heading must be bold, centered, and without punctuation.
-% List figure captions exactly as they appear below the figures in
-% the text.
-% Single space each entry, but double-space between entries.
-% Separate figure captions from page numbers with right-justified
-% tabs and dot leaders.
-% Do not use periods to separate captions and page numbers.
-% These pages are counted and numbered in lowercase Roman numerals.
-% \end{quote}
+% \begin{macro}{\afterloftitleskip}
+% Don't add any extra space after the title (the chapter will take
+% care of that). Actually we make a one-line correction so the first
+% line matches the first line in the TOC. HACK!
% \begin{macrocode}
-\renewcommand\listoffigures{%
- \clearpage
- \phantomsection
- \addcontentsline{toc}{chapter}{\listfigurename}
- \chapter*{\listfigurename}%
- \@mkboth{\MakeUppercase\listfigurename}%
- {\MakeUppercase\listfigurename}%
- \@starttoc{lof}%
-}
+\setlength\cftafterloftitleskip{-12pt}
% \end{macrocode}
+% \end{macro}
%
-% Override |latex.ltx|'s |\bibliography|, adding a line to the table
-% of contents.
+% \begin{macro}{\cftbeforefigskip}
+% \begin{macro}{\cftfigindent}
+% \begin{macro}{\cftfigfont}
+% \begin{macro}{\cftfigpagefont}
+% Setup figure entries.
+% \changes{0.13}{2010/07/28}{Added \cs{cftfigpagefont} definition and
+% switch \cs{cftfigfont} from hardcoded \cs{normalsize}
+% \cs{singlespace} to \cs{DUT@toc@low@font}. The \cs{singlespace}
+% portion appears to be unnecessary, and it was causing post-number
+% linebreak issues with latex (pdflatex always worked).}
% \begin{macrocode}
-\def\bibliography#1{%
- \addcontentsline{toc}{chapter}{\bibname}
- \if@filesw
- \immediate\write\@auxout{\string\bibdata{#1}}%
- \fi
- \@input@{\jobname.bbl}
-}
+\setlength{\cftbeforefigskip}{\l@DUT@toc@sep}
+\setlength{\cftfigindent}{0pt}
+\renewcommand{\cftfigfont}{\DUT@toc@low@font}
+\renewcommand{\cftfigpagefont}{\DUT@toc@page@font}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% Add a terminal blank page (when |\if@final| is true)
-% From the Manual 3.16 p13
+%
+% \subsubsection{List of tables}
+% \label{sec:implement-lot}
+%
+% From the Manual \S 3.6 p10
% \begin{quote}
-% Include a blank page (with no page number) at the end of the
-% thesis or dissertation. The blank page is neither counted nor
-% numbered.
+% \begin{itemize}
+% \item The heading |List of Tables| must appear at the top of the
+% first page.
+% \item The heading must be bold, centered, and without
+% punctuation.
+% \item List table captions exactly as they appear above the
+% tables in the text.
+% \item Single space each entry, but double-space between entries.
+% \item Separate table captions from page numbers with
+% right-justified tabs and dot leaders.
+% \item Do not use periods to separate captions and page numbers.
+% These pages are counted and numbered in lowercase Roman
+% numerals.
+% \end{itemize}
% \end{quote}
+%
+% \begin{macro}{\cftlottitlefont}
+% Much like our |\cfttoctitlefont|, but the list of tables gets
+% listed in the TOC.
+% \begin{macrocode}
+\renewcommand\cftlottitlefont{\listed@schapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\afterlottitleskip}
+% Don't add any extra space after the title (the chapter will take
+% care of that). Actually we make a one-line correction so the first
+% line matches the first line in the TOC. HACK!
+% \begin{macrocode}
+\setlength\cftafterlottitleskip{-12pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforetabskip}
+% \begin{macro}{\cfttabindent}
+% \begin{macro}{\cfttabfont}
+% \begin{macro}{\cfttabpagefont}
+% Setup table entries.
+% \changes{0.13}{2010/07/28}{Added \cs{cfttabpagefont} definition and
+% switch \cs{cftfabfont} from hardcoded \cs{normalsize}
+% \cs{singlespace} to \cs{DUT@toc@low@font}. The \cs{singlespace}
+% portion appears to be unnecessary, and it was causing post-number
+% linebreak issues with latex (pdflatex always worked).}
% \begin{macrocode}
-\AtEndDocument{\blankpage}
+\setlength{\cfttabindent}{0pt}
+\setlength{\cftbeforetabskip}{\l@DUT@toc@sep}
+\renewcommand{\cfttabfont}{\DUT@toc@low@font}
+\renewcommand{\cfttabpagefont}{\DUT@toc@page@font}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
-% \subsubsection{Captioning}
+% \subsubsection{Bibliography}
%
-% These are to get spacing right after table captions and make the
-% spacing around floats symmetrical. First, set |\if@table| in the
-% |table| environments.
+% \begin{environment}{thebibliography}
+% The |thebibliography| environment is a list environment. To save the
+% use of an extra counter, it should use |enumiv| as the item
+% counter.
+% Instead of using |\item|, items in the bibliography are produced by
+% the following commands:\\
+% |\bibitem|\marg{name} : Produces a numbered entry cited as
+% \meta{name}.\\
+% |\bibitem|\oarg{label}\marg{name} : Produces an entry labeled by
+% \meta{Label} and cited by \meta{name}.
+%
+% Override \cls{book}'s version, adding a line to the table of
+% contents. We split out the section-creation code into
+% |\bib@heading| for \pkg{natbib} compatibility.
+% (\file{classes.dtx}, L4063).
+% \begin{macrocode}
+\renewenvironment{thebibliography}[1]
+ {\bib@heading%
+ \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}}%
+% \end{macrocode}
+% Because it's hard to do line breaks in bibliographies.
+% \begin{macrocode}
+ \sloppy
+% \end{macrocode}
+% This is setting the normal (non-infinite) value of
+% |\clubpenalty| for the whole of this environment,
+% so we must reset its stored value also. (Why is there a |%| after
+% the second 4000 below?)
+% \begin{macrocode}
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+% \end{macrocode}
+% Cause a `.' (period) not to produce an end-of-sentence space.
+% \begin{macrocode}
+ \sfcode`\.\@m}
+% \end{macrocode}
+% Warn if an empty `thebibliography' environment is found.
% \begin{macrocode}
-\newif\if@table \@tablefalse
-\renewenvironment{table}
- {\@tabletrue\@float{table}}
- {\end@float\@tablefalse}
-\renewenvironment{table*}
- {\@tabletrue\@dblfloat{table}}
- {\end@dblfloat\@tablefalse}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
% \end{macrocode}
-% Now override \cls{book}'s |\@makecaption|, adding two |\if@table|
-% conditionals, which swap |\abovecaptionskip| and |\belowcaptionskip|
-% for tables (where the caption is above the float body). With our
-% implementation, |\belowcaptionskip| \emph{always} gives the distance
-% between the caption and the text, and |\abovecaptionskip|
-% \emph{always} gives the distance between the caption and the float
-% body.
+% \end{environment}
%
-% We also replace the caption lead-in |#1: #2| with
-% |\small{\bfseries#1:} #2|.
+% \begin{macro}{\bib@heading}
+% \pkg{natbib} messes with |thebibliography|. We setup |\bib@heading|
+% so we will still get our table of contents entry.
% \begin{macrocode}
-\newlength\@tempcapskip
-\long\def\@makecaption#1#2{%
- \if@table
- \@tempcapskip\abovecaptionskip
- \abovecaptionskip\belowcaptionskip
- \belowcaptionskip\@tempcapskip
- \fi
- \vskip\abovecaptionskip
- \sbox\@tempboxa{\small{\bfseries#1:} #2}%
- \ifdim \wd\@tempboxa >\hsize
- {\small{\bfseries#1:} #2\par}
- \else
- \global \@minipagefalse
- \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
- \fi
- \vskip\belowcaptionskip
- \if@table
- \@tempcapskip\belowcaptionskip
- \belowcaptionskip\abovecaptionskip
- \abovecaptionskip\@tempcapskip
- \fi
+\newcommand{\bib@heading}{%
+ \listed@schapter{\bibname}%
}
% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Index}
+%
+% \begin{environment}{theindex}
+% The environment |theindex| can be used for indices. It makes an
+% index with two columns, with each entry a separate paragraph. At
+% the user level the commands |\item|, |\subitem| and |\subsubitem|
+% are used to produce index entries of various levels. When a new
+% letter of the alphabet is encountered an amount of |\indexspace|
+% white space can be added.
+%
+% Override \cls{book}'s version, adding a line to the table of
+% contents. We split out the section-creation code into
+% |\bib@heading| for \pkg{natbib} compatibility.
+% (\file{classes.dtx}, L4107).
+% \begin{macrocode}
+\renewenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+% \end{macrocode}
+% Here we add our TOC entry, and setup two columns by hand
+% to avoid the |\clearpage| in \LaTeX's default |\twocolumn|.
+% \begin{macrocode}
+ \listed@schapter{\indexname}
+ \global\columnwidth\textwidth
+ \global\advance\columnwidth-\columnsep
+ \global\divide\columnwidth\tw@
+ \global\hsize\columnwidth
+ \global\linewidth\columnwidth
+ \global\@twocolumntrue
+ \global\@firstcolumntrue
+ \col@number \tw@
+% \end{macrocode}
+% Parameter changes to |\columnseprule| and |\columnsep| have to be
+% done after |\twocolumn| has acted. Otherwise they can affect the
+% last page before the index.
+% \begin{macrocode}
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \columnseprule \z@
+ \columnsep 35\p@
+ \let\item\@idxitem}
+% \end{macrocode}
+% When the document continues after the index and it was a one
+% column document we have to switch back to one column after the
+% index.
+% \begin{macrocode}
+ {\if@restonecol\onecolumn\else\@DUT@clearpage\fi}
+% \end{macrocode}
+% \end{environment}
%
-%
-% \subsubsection{Adjust table of contents}
%
-% From the \LaTeX\ base class documentation (|classes.dtx| in
-% \href{http://www.ctan.org/tex-archive/macros/latex/base/}{\pkg{\LaTeX\ base}})
-% \begin{quote}
-% The command |\contentsline{|\meta{name}|}| expands to
-% |\l@|\meta{name}. So, to specify the table of contents, we must
-% define |\l@chapter|, \ldots
-% \end{quote}
+% \subsubsection{Words}
+% \label{sec:words}
%
-% Override \cls{book}'s |\l@chapter| for printing TOC entries, adding
-% |spacing| environments to ensure single spacing, only using bold if
-% |\if@boldchapter| is true, handling |\if@dottedchapter|.
-% \begin{macrocode}
-\renewcommand*\l@chapter[2]{%
- \begin{spacing}{\@ssp}
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
-% \end{macrocode}
-% Don't handle spacing here; use the spacing environment at the end of
-% the macro.
-% \begin{macrocode}
-% \vskip 1.0em \@plus\p@
- \setlength\@tempdima{1.5em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode
- \if@boldchapter
- \bfseries
- \fi
- \advance\leftskip\@tempdima
- \hskip -\leftskip
-% \end{macrocode}
-% Insert |\if@dottedchapter| block into |#1\nobreak\hfil \nobreak...|.
+% Set the official names of the various sections encountered. Some of
+% these are not defined in \file{classes.dtx} but are close analogs of
+% those that are.
+%
+% \begin{macro}{\dedicationsname}
+% From the Manual \S 3.3 p9, ``The heading |Dedications| must appear at
+% the top of the page.''
% \begin{macrocode}
- #1\nobreak
- \if@dottedchapter
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}
- \else\fi
+\newcommand\dedicationsname{Dedications}
+\let\DUTdedicationsname\dedicationsname
% \end{macrocode}
-% Insert |\if@dottedchapter| block into |#1\nobreak\hfil \nobreak...|.
+% \end{macro}
+%
+% \begin{macro}{\acknowledgmentsname}
+% From the Manual \S 3.4 p9, ``The heading |Acknowledgments| must appear
+% at the top of the page.''
% \begin{macrocode}
- \hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \penalty\@highpenalty
+\newcommand\acknowledgmentsname{Acknowledgments}
+\let\DUTacknowledgmentsname\acknowledgmentsname
% \end{macrocode}
-% Add a content-page-spacing blank after this entry.
+% \end{macro}
+%
+% \begin{macro}{\contentsname}
+% From the Manual \S 3.5 p9, ``The heading |Table of Contents| must
+% appear at the top of the page.'' (\file{classes.dtx}, L4331)
% \begin{macrocode}
- \begin{spacing}{\@csp}\par\end{spacing}
- \endgroup
- \fi
- \end{spacing}
-}
+\renewcommand\contentsname{Table of Contents}
+\let\DUTcontentsname\contentsname
% \end{macrocode}
+% \end{macro}
%
-% Add |\l@appendix|, identical to our |\l@chapter|, except for
-% setting |\@tempdima| to 6.5em rather than 1.5em. TODO: Why?
-% TODO: Consolidate to \l@chapapp[3] calls.
-% \begin{macrocode}
-\newcommand*\l@appendix[2]{%
- \begin{spacing}{\@ssp}
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
-% \vskip 1.0em \@plus\p@
- \setlength\@tempdima{6.5em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode
- \if@boldchapter
- \bfseries
- \fi
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak
- \if@dottedchapter
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}
- \else\fi
- \hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \penalty\@highpenalty
- \begin{spacing}{\@csp}\par\end{spacing}
- \endgroup
- \fi
- \end{spacing}
-}
+% \begin{macro}{\listtablename}
+% From the Manual \S 3.6 p10, ``The heading |List of Tables| must appear
+% at the top of the page.'' (\file{classes.dtx}, L4333)
+% \begin{macrocode}
+\renewcommand\listtablename{List of Tables}
+\let\DUTlisttablename\listtablename
% \end{macrocode}
+% \end{macro}
%
-% Add |\l@part|, identical to our |\l@chapter|, except for
-% setting |\@tempdima| to 6.5em rather than 1.5em. TODO: Why?
-% TODO: Consolidate to \l@chapapp[3] calls.
+% \begin{macro}{\listfigurename}
+% From the Manual \S 3.7 p10, ``The heading |List of Figures| must appear
+% at the top of the page.'' (\file{classes.dtx}, L4332)
% \begin{macrocode}
-\renewcommand*\l@part[2]{%
- \begin{spacing}{\@ssp}
- \ifnum \c@tocdepth >-2\relax
- \addpenalty{-\@highpenalty}%
+\renewcommand\listfigurename{List of Figures}
+\let\DUTlistfigurename\listfigurename
% \end{macrocode}
-% Don't handle spacing here; use the spacing environment at the end of
-% the macro.
+% \end{macro}
+%
+% \begin{macro}{\abstractname}
+% From the Manual \S 3.8 p10, ``The following heading must be centered at
+% the top of the first page: |Abstract|\ldots.''
+% (\file{classes.dtx}, L4367)
% \begin{macrocode}
-% \addvspace{2.25em \@plus\p@}%
- \setlength\@tempdima{3em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- {\leavevmode
+\newcommand\abstractname{Abstract}
+\let\DUTabstractname\abstractname
% \end{macrocode}
-% Replace |\large \bfseries| with |\if@boldpart...|, so the parts are
-% the same size as the other entries, and bolding obeys |if@boldpart|.
+% \end{macro}
+%
+% \begin{macro}{\bibname}
+% From the Manual \S 3.13 p12, ``The heading |Bibliography| (or
+% |List of References|) must appear at the top of first page.''
+% (\file{classes.dtx}, L4344)
% \begin{macrocode}
- \if@boldpart
- \bfseries
- \fi
- #1
+\renewcommand\bibname{Bibliography}
+\let\DUTbibname\bibname
% \end{macrocode}
-% Insert |\if@dottedpart| between |#1| and |\hfil|.
+% \end{macro}
+%
+% \begin{macro}{\appendixname}
+% From the Manual \S 3.14 p12, ``Number the appendicies consecutively
+% either alphabetically or numerically (|Appendix A|, |Appendix B|\ldots
+% or |Appendix 1|, |Appendix 2|\ldots).''
+% (\file{classes.dtx}, L4366)
% \begin{macrocode}
- \if@dottedpart
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}
- \fi
- \hfil \hb@xt@\@pnumwidth{\hss #2}}\par
- \nobreak
- \global\@nobreaktrue
- \everypar{\global\@nobreakfalse\everypar{}}%
+\renewcommand\appendixname{Appendix}
+\let\DUTappendixname\appendixname
% \end{macrocode}
-% Add a content-page-spacing blank after this entry.
+% \end{macro}
+%
+% \begin{macro}{\vitaname}
+% From the Manual \S 3.15 p13, ``The heading |Vita| must appear at the
+% top of the page.''
% \begin{macrocode}
- \begin{spacing}{\@csp}\par\end{spacing}
- \endgroup
- \fi
- \end{spacing}
-}
+\newcommand\vitaname{Vita}
+\let\DUTvitaname\vitaname
% \end{macrocode}
+% \end{macro}
%
-% Override |latex.ltx|'s |\dottedtocline|, adding some |spacing|
-% environments. TODO: reasoning.
-% \begin{macrocode}
-\def\@dottedtocline#1#2#3#4#5{%
- \begin{spacing}{\@ssp}
- \ifnum #1>\c@tocdepth \else
- \vskip \z@ \@plus.2\p@
- {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
- \parindent #2\relax\@afterindenttrue
- \interlinepenalty\@M
- \leavevmode
- \@tempdima #3\relax
- \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
- {#4}\nobreak
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
- mu$}\hfill
- \nobreak
- \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
- \par\begin{spacing}{\@csp}\par\end{spacing}}%
- \fi
- \end{spacing}
+% \begin{macro}{\DUTnames}
+% Some packages (e.g.,
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/babel/}{%
+% \pkg{babel}})
+% mess with our |\*name| values and we have to restore them.
+\newcommand{\DUTnames}{%
+ \gdef\dedicationsname{\DUTdedicationsname}%
+ \gdef\contentsname{\DUTcontentsname}%
+ \gdef\listtablename{\DUTlisttablename}%
+ \gdef\listfigurename{\DUTlistfigurename}%
+ \gdef\bibname{\DUTbibname}%
+ \gdef\appendixname{\DUTappendixname}%
+ \gdef\vitaname{\DUTvitaname}%
}
-% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Remaining details}
%
-% Override \cls{book}'s (or \pkg{hyperref}'s) |\appendix|, adding
-% |\@appendixtrue|. This gets |\if@appendix| working in our
-% |\chapter| definition below.
-% \begin{macrocode}
-\let\DUT@appendix\appendix
-\renewcommand\appendix{%
- \@appendixtrue%
- \DUT@appendix
-}
-% \end{macrocode}
%
-% Override \cls{book}'s |\chapter|, selecting the false branch of the
-% |\if@twocolumn| conditional and adding an |\if@appendix|
-% conditional. After |\appendix| (when |\if@mainmatter| and
-% |\if@appendix| are both true), we generate table of content entries
-% such as \emph{Appendix A: Chapter Title} rather than the standard
-% \emph{Chapter Title}. |\thechapter| (defined in \cls{book}) is the
-% appendix letter (e.g.\ |A|). |\@chapapp{}| (also defined in
-% \cls{book}) Was redefined in |\appendix| (above) as |\appendixname|.
-% Before |\appendix|, we reproduce the \cls{book} behavior.
-% \begin{macrocode}
-\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \refstepcounter{chapter}%
- \typeout{\@chapapp\space\thechapter.}%
- \if@appendix
- \addcontentsline{toc}{appendix}%
- {\protect\numberline{\@chapapp{} \thechapter:}#1}%
- \else
- \addcontentsline{toc}{chapter}%
- {\protect\numberline{\thechapter}#1}%
- \fi
- \else
- \addcontentsline{toc}{chapter}{#1}%
- \fi
- \else
- \addcontentsline{toc}{chapter}{#1}%
- \fi
- \chaptermark{#1}%
- \addtocontents{lof}{\protect\addvspace{10\p@}}%
- \addtocontents{lot}{\protect\addvspace{10\p@}}%
- \@makechapterhead{#2}%
- \@afterheading}
+% \subsubsection{Terminal blank page}
+%
+% Add a terminal blank page (in \Lopt{pagebreak} mode)
+% From the Manual \S 3.16 p13
+% \begin{quote}
+% Include a blank page (with no page number) at the end of the
+% thesis or dissertation. The blank page is neither counted nor
+% numbered.
+% \end{quote}
+% \begin{macrocode}
+\AtEndDocument{\@DUT@blankpage}
% \end{macrocode}
%
%
-% \iffalse meta-comment
+% \begin{macrocode}
%</class>
-% \fi
+% \end{macrocode}
%
%
-% \section{Templates}
+% \section{Examples}
%
-% \subsection{Simple}
%
-% \subsubsection{Main}
+% \subsubsection{Template}
%
-% \iffalse meta-comment
-%<*template-main>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
-%% See drexel-thesis.pdf for details.
+% \begin{macrocode}
+%<*template>
+% See drexel-thesis.pdf for details.
\documentclass{drexel-thesis}
%% Enter the appropriate information here
-\author{Johny Henry} % Fullname
-\title{Inadequacies of Steam-Driven Boring Machines} % Title Of Thesis
-\defmonth{July} % Name of the month of you defense
-\defyear{1872} % Year you are defending
-\degree{Doctor of Philosophy} % Should be fine
-\advisor{C \& O Railroad, Ph.D.} % Put Advisor's full name, degree
+\author{} % Fullname
+\title{} % Title Of Thesis
+\DUTmonth{} % Name of the month of you defense
+\DUTyear{} % Year you are defending
+\degree{} % Your target degree, spelled out
+\advisor{} % Advisor's full name, degree
+\copyrighttext{} % If not "All Rights Reserved."
-\usepackage{graphicx} % to include images
+%% unsrt style give references in order of citation
+\bibliographystyle{unsrt}
\begin{document}
\begin{preamble}
\begin{dedications} % OPTIONAL
-Type dedications here
+%% Type dedications here
\end{dedications}
\begin{acknowledgments} % OPTIONAL
-Type acknowledgments here
+%% Type acknowledgments here
\end{acknowledgments}
\tableofcontents
-%% Include these following commands only if you have tables or figures.
-%% Tables should come before figures.
-\listoftables
-\listoffigures
+\listoftables % If you have tables
+\listoffigures % If you have figures
\begin{abstract}
-Type abstract here
+%% Type abstract here
\end{abstract}
\end{preamble}
\begin{thesis}
+%% If your thesis does not use \part{}s, you may want to add a
+%% part-level PDF bookmark to set the main matter of from the front
+%% matter.
+%%\pdfbookmark[-1]{Main Matter}{Main Matter}
+
%% Use include statements to include your main thesis code
%% from seperate files.
-\include{part1}
+%%\include{part1}
+%%...
\end{thesis}
-%% unsrt style give references in order of citation
-\bibliographystyle{unsrt}
-\phantomsection
-\addcontentsline{toc}{chapter}{\bibname}
-\begin{thebibliography}{9}
-% widest label (above "9"), when printed, as wide as widest entry label.
-\bibitem{lamport94}
- Leslie Lamport,
- \emph{\LaTeX: A Document Preparation System}.
- Addison Wesley, Massachusetts,
- 2nd Edition,
- 1994.
-%...
-\end{thebibliography}
+\bibliography{references} % Include references.bib BibTeX
-\appendix
+\appendix % If you have appendices
%% include files with your appendicies (if any) here
-\include{appendixA}
+%%\include{appendixA}
+%%...
-\begin{vita} % Ph.D. only. See Thesis Manual for details.
-Vita text.
+\begin{vita} % Ph.D. only.
+%%Vita text.
\end{vita}
\end{document}
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-main>
-% \fi
-%
-% \subsubsection{Part}
-%
-% \iffalse meta-comment
-%<*template-part>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
-\part{A Part Heading}
-\chapter{A Chapter Heading}
-\section{A Section Heading}
-The following sectioning commands are available:
-\begin{quote}
- part \\
- chapter \\
- section \\
- subsection \\
- subsubsection \\
- paragraph \\
- subparagraph
-\end{quote}
-\begin{table}
- \caption{A table float}
- \begin{center}
- \begin{tabular}{r@{.}l r@{.}l r@{.}l}
- \multicolumn{2}{c}{Time (s)} &
- \multicolumn{2}{c}{John Henry (m)} &
- \multicolumn{2}{c}{Steam drill (m)} \\
- 0&0 & 0&0 & 0&0 \\
- 10&0 & 4&3 & 3&75 \\
- 30&0 & 11&9 & 10&1 \\
- \ldots
- \end{tabular}
- \end{center}
-\end{table}
-Bla bla bla (text to test table/figure spacing)
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-\begin{figure}
- \begin{center}
- \includegraphics[width=0.4\textwidth]{drexel-logo}
- \end{center}
- \caption{A figure float}
-\end{figure}
-Bla bla bla (text to test table/figure spacing)
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-
-Bla bla bla
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-part>
-% \fi
-%
-% Note the strange |r@{.}l| notation in the |\tabular| column
-% definition. This allows for numbers aligned at the decimal point
-% (see \href{http://www.stat.unipg.it/tex-man/ltx-68.html}{here}).
-%
-% |\multicolumn{num_cols}{alignment}{contents}| allows the headings
-% to span the pre- and post-decimal columns.
-%
-%
-% \subsubsection{Appendix}
-%
-% \iffalse meta-comment
-%<*template-appendix>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
-\chapter{Some Appendix Heading}
-Bla Bla Bla
-\chapter{Another Appendix Heading}
-Bla Bla Bla
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-appendix>
-% \fi
+%</template>
+% \end{macrocode}
%
%
-% \subsection{\BibTeX/\pkg{natbib}}
-% \label{sec:natbib-example}
+% \subsection{A better example}
+% \label{sec:better-example}
%
% \subsubsection{Main}
%
-% \iffalse meta-comment
-%<*template-bibtex-main>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
+% \begin{macrocode}
+%<*example|example-draft>
%% See drexel-thesis.pdf for details.
-\documentclass{drexel-thesis}
+%<example>\documentclass[subfig,blackref,approvalform]{drexel-thesis}
+%<example-draft>\documentclass[draft,subfig]{drexel-thesis}
%% Enter the appropriate information here
-\author{Johny Henry} % Fullname
-\title{Inadequacies of Steam-Driven Boring Machines} % Title Of Thesis
-\defmonth{July} % Name of the month of you defense
-\defyear{1872} % Year you are defending
-\degree{Doctor of Philosophy} % Should be fine
-\advisor{C \& O Railroad, Ph.D.} % Put Advisor's full name, degree
+\author{Johny Henry}
+\title{Inadequacies of Steam-Driven Boring Machines}
+\DUTmonth{July}
+\DUTyear{1872}
+\degree{Doctor of Philosophy}
+\advisor{Collis Potter Huntington, R.R.D.}
+\advisor{Advisor 2, Ph.D.}
+\advisor{Advisor 3, Ph.D.}
+\copyrighttext{\copyrighttextCCBYSA}
\usepackage[super,sort&compress]{natbib} % fancy citation extensions
-%% super selects citations in superscript mode.
-%% sort&compress automatically sorts and compresses compound citations:
-%% \pcite{a,b,...}
-\bibliographystyle{plainnat}
+\bibliographystyle{unsrtnat}
+
+\usepackage{fancyvrb} % nicer verbatim handling
+\DefineShortVerb{\|} % \verb+TEXT+ -> |TEXT|
+
+% \end{macrocode}
+% Sometimes other packages clobber \cls{drexel-thesis}'s macros and
+% environments. It's ok though, the originals are all aliased to
+% |\DUT*|. We'll just have to use |DUTpreamble| instead.
+% \begin{macrocode}
+\renewenvironment{preamble}{% look, we're clobbering an environment!
+ What preamble?\begingroup\color{white}}{\endgroup}
+
+% \end{macrocode}
+% Use
+% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/blindtext/}%
+% {\pkg{blindtext}}
+% for dummy text creation. \pkg{blindtext} requires
+% \href{http://www.ctan.org/tex-archive/macros/latex/required/babel/}%
+% {\pkg{babel}}.
+% \begin{macrocode}
+\usepackage[english]{babel} % English blindtext
+\usepackage{blindtext} % macros for producing dummy output
+% \end{macrocode}
+% \pkg{babel} messes with some of our words (\S \ref{sec:words}), so
+% we have to reset them. See the
+% \href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords}{\TeX\ FAQ}
+% for details.
+% \begin{macrocode}
+\addto\captionsenglish{\DUTnames}
\begin{document}
-\begin{preamble}
+\begin{DUTpreamble} % "DUT" because original preamble was clobbered.
-\begin{dedications} % OPTIONAL
-Type dedications here
+\begin{dedications}
+We're in \iffinal{final}{draft} mode!
+
+\Blindtext[3]
\end{dedications}
-\begin{acknowledgments} % OPTIONAL
-Type acknowledgments here
+\begin{acknowledgments}
+\Blindtext[3]
\end{acknowledgments}
\tableofcontents
-%% Include these following commands only if you have tables or figures.
-%% Tables should come before figures.
\listoftables
\listoffigures
\begin{abstract}
-Type abstract here
+\Blindtext[3]
\end{abstract}
-\end{preamble}
+\end{DUTpreamble}
\begin{thesis}
-%% Use include statements to include your main thesis code
-%% from seperate files.
-\include{bibpart1}
+\include{example-1}
\end{thesis}
-\bibliography{references}
+\bibliography{example-ref}
\appendix
-%% include files with your appendicies (if any) here
-\include{appendixA}
+\include{example-a}
-\begin{vita} % Ph.D. only. See Thesis Manual for details.
-Vita text.
+\begin{vita}
+\Blindtext[3]
\end{vita}
\end{document}
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-bibtex-main>
-% \fi
+%</example|example-draft>
+% \end{macrocode}
%
-% \subsubsection{Part}
%
-% You can cite your references with \pkg{natbib}'s |\citet| and
-% |\citep| macros. See
-% \href{http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/}{the \pkg{natbib} manual}
-% for details.
+% \subsubsection{Part}
+% \label{sec:better-example-part}
%
-% \iffalse meta-comment
-%<*template-bibtex-part>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
+% \begin{macrocode}
+%<*example-part>
\part{A Part Heading}
\chapter{A Chapter Heading}
\section{A Section Heading}
+The following sectioning commands are available:
+\begin{quote}
+ part \\
+ chapter \\
+ section \\
+ subsection \\
+ subsubsection \\
+ paragraph \\
+ subparagraph
+\end{quote}
+
+\subsection{natbib}
+You can cite your references with |natbib|'s |\citet| and |\citep|
+macros. See
+\href{http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/}
+{the natbib manual} for details.
+
Here we have a text citation \citet{rief97} followed by a
parenthetical citation\citep{rief97}.
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-bibtex-part>
-% \fi
+
+\subsubsection{Tables and Figures}
+\Blindtext[2]
+\begin{table}
+ \begin{center}
+ \begin{tabular}{r@{.}l r@{.}l r@{.}l}
+ \multicolumn{2}{c}{Time (s)} &
+ \multicolumn{2}{c}{John Henry (m)} &
+ \multicolumn{2}{c}{Steam drill (m)} \\
+ 0&0 & 0&0 & 0&0 \\
+ 10&0 & 4&3 & 3&75 \\
+ 30&0 & 11&9 & 10&1 \\
+ \ldots
+ \end{tabular}
+ \caption{A table float.} % low caption allowed with floatrow
+%% Note the strange |r@{.}l| notation in the |\tabular| column
+%% definition. This allows for numbers aligned at the decimal point
+%% (see \href{http://www.stat.unipg.it/tex-man/ltx-68.html}{here}).
+%%
+%% |\multicolumn{num_cols}{alignment}{contents}| allows the headings
+%% to span the pre- and post-decimal columns.
+ \end{center}
+\end{table}
+\Blindtext[2]
+\begin{figure}
+ \caption{A figure float. \blindtext} % high caption allowed with floatrow
+ \begin{center}
+ \includegraphics[width=0.4\textwidth]{drexel-logo}
+ \end{center}
+\end{figure}
+\Blindtext[3]
+\begin{figure}
+ \begin{center}
+ \subfloat[][]{%
+ \includegraphics[width=0.2\textwidth]{drexel-logo}%
+ \label{fig:sub-a}}
+ \subfloat[][]{%
+ \includegraphics[width=0.2\textwidth]{drexel-logo}%
+ \label{fig:sub-b}}
+ \caption{(a) One subfig float. (b) Another subfig float.%
+ \label{fig:both}}
+ \end{center}
+\end{figure}
+You can reference the subfig floats individually (\ref{fig:sub-a}) or
+together (\ref{fig:both}).
+
+\Blindtext[3]
+
+\part{Another Part}
+\chapter{Another Chapter}
+\Blindtext[5]
+\chapter{A Long Title Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
+Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla}
+\Blindtext[5]
+%</example-part>
+% \end{macrocode}
%
-% \subsubsection{Bib}
%
-% What goes into the \BibTeX\ file |references.bib|?
+% \subsubsection{\BibTeX}
+%
+% What goes into the \BibTeX\ file |example-ref.bib|?
% For more information, check out this
% \href{http://cmtw.harvard.edu/Documentation/TeX/Bibtex/Example.html}{basic tutorial}.
% If you want to get deeper, take a look at
%
% Here is an example \BibTeX\ file to get you started. We define
% strings for the publishers, journals, and authors to avoid
-% duplication and minimize the risk of typos, etc.
+% duplication, minimize the risk of typos, etc.
%
-% \iffalse meta-comment
-%<*template-bibtex-refs>
-% \fi
-% \begin{quote} \hrule \begin{verbatim}
+% \begin{macrocode}
+%<*example-bibtex-refs>
%% Publishers
@String{APS = "American Physical Society"}
of its globular-chain structure.",
}
%% ...
-% \end{verbatim} \hrule \end{quote}
-% \iffalse meta-comment
-%</template-bibtex-refs>
-% \fi
+%</example-bibtex-refs>
+% \end{macrocode}
+%
+%
+% \subsubsection{Appendix}
+%
+% \begin{macrocode}
+%<*example-appendix>
+\chapter{Some Appendix Heading}
+\Blindtext[5]
+\chapter{Another Appendix Heading}
+\Blindtext[5]
+%</example-appendix>
+% \end{macrocode}
+%
+%
+% \section{Known bugs and issues}
+%
+%
+% \subsection{Hacks}
+%
+% \begin{itemize}
+% \item |\vspace*{0\p@}| space between page top and chapter
+% headings (|\@makechapterhead| and |\@makeschapterhead|,
+% Sec.~\ref{sec:implement-chapters}).
+% \item Extra space under LOT and LOF titles compared to TOC.
+% (Secs.~\ref{sec:implement-lof} and \ref{sec:implement-lot}).
+% \end{itemize}
+%
+%
+% \subsection{Bugs}
+%
+% \begin{itemize}
+% \item Different space between chapter heading and section heading,
+% vs.\ chapter heading and text. Compare \emph{A Chapter Heading}
+% and \emph{Another Chapter} in \file{example.pdf}. This is a
+% problem (although with opposite order) in the \cls{book} class
+% itself. For example, compile
+% \begin{example}
+%\documentclass{book}
+%\begin{document}
+%\chapter{Chapter with text}
+%Bla bla bla.
+%\chapter{Chapter with section}
+%\section{Section}
+%Bla bla bla.
+%\end{document}
+% \end{example}
+% \item Footer overlap if chapter/section names are particularly long.
+% See \emph{Section in long-titled chapter} in \file{example.pdf}.
+% Workaround: turn off sections in the footer:
+% \begin{example}
+% \fancyfoot[RE,LO]{\scshape\leftmark}
+% \fancyfoot[LE,RO]{}
+% \end{example}
+% For more header or footer manipulation ideas, see \S \ref{sec:fancyhdr}.
+% \end{itemize}
+%
%
% \Finale
\endinput