%\iffalse -*- doctex -*- \fi
%
%% \RCS$Id: brandeis-dissertation.dtx,v 2.0 2004/10/27 00:47:04 turtle Exp $
%% \RCS$Revision: 2.0 $
%% \RCS$Date: 2013/10/17 00:47:04 $
%
%\iffalse metacomment
% -*- latex-mode -*-
%%
%%  (C) 2000 Andy Garland (aeg@cs.brandeis.edu)
%%  (C) 2001 Pablo Funes (pablo@cs.brandeis.edu)
%%  (C) 2004 Peter Møller Neergaard
%%  (C) 2013 Meg Peck and John Burt
%%  
%%   This program may be distributed and/or modified under the
%%   conditions of the LaTeX Project Public License, either version 1.2
%%   of this license or (at your option) any later version.
%%   The latest version of this license is in
%%     http://www.latex-project.org/lppl.txt
%%   and version 1.2 or later is part of all distributions of LaTeX 
%%   version 1999/12/01 or later.
%
% This program consists of the file brandeis-dissertation.cls.
% 
%\fi
%
% \CheckSum{667}
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \MakeShortVerb{\"}
% \DeleteShortVerb{\|}
%
% \title{The \package{brandeis-dissertation} class\thanks
%   {This file has CVS revision \RCSRevision, dated \RCSDate. The
%   class has been redesigned by the author based on previous 
%   work by Pablo Funes, Andy Garland, LFBrown 30Aug87, and RJLuoma. Some final fiddling by John  Burt.}} 
% \author{%
%   Meghan Peck\thanks{\texttt{mcpeck@brandeis.}}}
% \maketitle
%
% \begin{abstract}
%   This \LaTeXe-class file contains to design to typeset your
%   dissertation according to the guidelines of GSAS of Brandeis University.
% \end{abstract}
%
% \newif\ifmulticols
% \IfFileExists{multicol.sty}{\multicolstrue}{}
%
% \ifmulticols
% \begin{multicols}{2}
% \fi
% {\parskip 0pt                ^^A We have to reset \parskip
%                              ^^A (bug in \LaTeX)
% \tableofcontents
% }
% \ifmulticols
% \end{multicols}
% \fi
%
% You have done all the research.  The ideas are in your
% head.  All you are missing is that little thing called a
% dissertation, which you are gung-ho on writing using \LaTeX. This is
% where this class file enters: it allows you to use \LaTeX\ while
% adhering to the formatting guidelines of Brandeis University
% Graduate School of Arts and Sciences (GSAS).   In
% particular, it allows you to get the front matter correct.
%
% The features are as follows:
% \begin{itemize}
% \item It provides correct margins for either single-paged
%   output or double-paged output.
% \item It typesets the text with double-spaced line.  However, footnotes,
%   long quotations (the environment "quotation"), the bibliography, and
%   the index is singe-spaced.
% \item It provides commands to produce the front matter.
% \end{itemize}
%
% To use the class, you should begin your document file with
% \begin{verbatim}
% \documentclass{brandeis-dissertation}\end{verbatim}
% instead of your usual document class declaration.  The various
% options are described below in section~\ref{sec:class-options}.
%
% \section{Front Matter}
%
% The front matter is all the pages that comes before the main text of
% your dissertation, e.g., title page, dedication, abstract, table of
% contents. For the class to typeset the front matter, you should
% specify the formalities regarding your dissertation in the preamble
% of your document.  You do this with the following commands.
% \begin{description}
% \item[\cmd{\title}\marg{title}:]\DescribeMacro{\title}
%    The title of your dissertation.
% \item[\cmd{\author}\marg{name}:]\DescribeMacro{\author}
%   Your full name. 
% \item[\cmd{\department}\marg{department}:]\DescribeMacro{\department}
%   Your department.
% \item[\cmd{\advisor}\meta{advisor}:]\DescribeMacro{\advisor}
%    The full name of you advisor (chair of your
%   committee) . 
% \item[\cmd{\reader}\meta{reader}:]\DescribeMacro{\reader} Adds
%   \meta{reader} to your committee.  You should have one
%   \cmd{\reader}-command for each reader on the committee. You should
%   provide them in the order you want them to appear on the signature
%   page. You should also include the school and department of every 
%   reader.
% \item[\cmd{\dean}\meta{name}:]\DescribeMacro{\dean}
%    The full name of the dean who eventually
%   signs off on the dissertation.
% \item[\cmd{\graduationyear}\meta{year}:]\DescribeMacro{\graduationyear}
%    The year of your dissertation.
% \item[\cmd{\graduationmonth}\meta{month}:]\DescribeMacro{\graduationmonth}
%    The month of your dissertation.
% \item[\cmd{\othercopyright}\meta{text} (optional):] Uses \meta{text}
%   to  acknowledge other people's copyright on your copyright page.
%   This is only printed if you print a copyright page.
% \end{description}
% As an example, the following is an except from the preamble of my
% dissertation:
% \begin{verbatim}
% \title{Complexity Aspects of Programming Language Design}
% \author{Peter M{\o}ller Neergaard}
% \dean{Adam B. Jaffe}
% \advisor{Harry G. Mairson}
% \department{Michtom School of Computer Science}
% \reader{Peter Clote}
% \reader{Simone Martini}
% \reader{Timothy J. Hickey}\end{verbatim}
%
% \DescribeMacro{\thesisfront}The command
% \cmd{\thesisfront}\oarg{options} should be used at the very
% beginning of your document to produce all the front
% matter for you, e.g.,
% \begin{verbatim}
% \begin{document}
% \thesisfront\end{verbatim}
% 
% You need to specify the abstract and possible also the preface,
% dedication, and acknowledgments using the following commands:
% \begin{description}
% \item[\mcmd{\thesisabstract}\marg{text}:]\DescribeMacro{\thesisabstract}
%    Uses \meta{text} as your abstract.
% \item[\mcmd{\dedication}\marg{dedication} (optional):]\DescribeMacro{\dedication}
%    The dedication of your dissertation to \meta{dedication} appears
%    on separate page. 
% \item[\mcmd{\acknowledgments}\marg{text}
%   (optional):]\DescribeMacro{\acknowledgments}
%   \meta{text} is used as your acknowledgment.
% \item[\cmd{\preface}\marg{text} (optional):]\DescribeMacro{\preface}
%    The preface of your dissertation.
% \end{description}
% As the abstract, preface and acknowledgments might by fairly long,
% it can be convenient to keep them in a separate file and include
% them using \cmd{\input}, e.g.
% \begin{verbatim}
%   \thesisabstract{\input{abstract}}\end{verbatim}
% where the abstract in stored in the file "abstract.tex".
%
% \label{p:thesisfront-options}
% You can fine tune the behavior of \cmd{\thesisfront} with the following
% options.  You provide them in an optional argument as a
% comma-separated list:
% \begin{description}
% \item[\texttt{onlinesubmission}:] The signature page is typeset for
%   online submission (default).
% \item[\texttt{papersubmission}:] The signature page is typeset for
%   paper submission.
% \item[\texttt{copyright}:] Print a copyright page (default).
% \item[\texttt{nocopyright}:] Do not print a copyright page.
% \item[\texttt{lot}:] Print a list of tables.
% \item[\texttt{nolot}:] Do not print a list of tables (default)
% \item[\texttt{lof}:]  Print a list of figures.
% \item[\texttt{nolof}:] Do not print a list of figures (default).
% \end{description}
% For instance, the command to produce the front matter for a paper
% submission with a list of tables is:
% \begin{verbatim}
% \thesisfront[lot,papersubmission]\end{verbatim}
%
% \DescribeMacro{\signaturepage}
% When submitting online, you need to produce a signature page to be
% signed before your defense.  You can do this using "\signaturepage*"
% in front of \cmd{\thesisfront} sometimes before you make the final
% version. 
% 
% \subsection{Your Own Front Matter Layout}
%
% Instead of using \cmd{\thesisfront} to produce the front matter, you
% can build the front matter yourself with the command below.
% \emph{However, this option is not recommended and you should ensure
% that you adhere to all the GSAS guidelines}.
%
% \begin{description}
% \item[\mcmd{\thesistitlepage}:]\DescribeMacro{\thesistitlepage} This
%   command produces the front page of your dissertation.
%
% \item[\mcmd{\signaturetitlepage}\ostar:]\DescribeMacro{\signaturepage} 
%   This produces a signature page.  The unstarred version is for
%   online submission, while the starred version is for paper submission.
%
% \item[\mcmd{\copyrightpage}\marg{your name}\marg{year}:]
%   \DescribeMacro{\copyrightpage} This produces the copyright page.
%
% \item[\mcmd{\dedicationpage}\marg{dedication}:] 
%   \DescribeMacro{\dedicationpage}This produces a page with the
%   dedication. 
% \end{description}
%
% \DescribeEnv{optionalpage} 
% \DescribeEnv{optionalpage*}
% The environments  "optionalpage" and "optionalpage*" produce other
% parts of the front matter, for instance the preface.  The part will
% be typeset as if it was a chapter.  They take the title of the part
% as a single argument.  You can thus produce a preface as follows:
% \begin{alltt}\cs{begin}\{optionalpage\}\{Preface\}\par  \(...\)\par\cs{end}\{optionalpage\}\end{alltt}
% By default an entry is added to the table of contents.  This can be
% disabled by using the starred form.
% 
% When printing double-sided, you might \cmd{\cleardoublepage} to
% get the pages positioned on a right hand side.
%
% \section{Margins and Line-spacing}
%
% \begin{table}
% \caption{The two options for margins}
% \begin{tabular}{l|r|r}
%                  & Minimum margins & Consistent 1.5in \\\hline        
%    Left margin   &  1in         & 1.5in \\         
%    Right margin  &  1in           & 1.5in \\
%    Top margin    &  1in           & 1.5in \\
%    Bottom margin &  1in           & 1.5in 
% \end{tabular}
% \label{tbl:margins}
% \end{table}
%
% The GSAS guidelines call for the minimum margins given in
% Table~\ref{tbl:margins}.  This is the default margins for the
% class.  If you prefer, you can get a consistent 1.5in
% margins by using the class option "15margins" (see below).
%
% The class uses the package \package{geometry} to set the
% margins. This provides a very simple way to change the paper layout,
% e.g., to change the margins to 2 inches you just need to use:
% \begin{verbatim}
%   \geometry{top=2in, bottom=2in, left=2in, right=2in }\end{verbatim}
% Note that the \cmd{\geometry} can only be used only in the document
% preamble.  
%
% By default, the dissertation class uses page style "brandeisheadings". This page style will place
%  the page number, centered, in 
% the footer.  If
% you change the page style (to "headings" or "myheadings") in the preamble, the dissertation class
% will adjust the margins accordingly.  However, if you use a
% non-standard heading (for instance from \package{fancyhdr}) you will
% need to adjust the margins accordingly.
% 
% \DescribeEnv{singlespacing}You can use the environment
% "singlespacing" to single-space a block of text.
%
% \section{Class Options}
% \label{sec:class-options}
% 
% The class takes the following options provided as optional arguments
% to the \cmd{\documentclass} command:
% \begin{description}
% \item[\texttt{minmargins}:]  Use the minimum margins called for by
%   GSAS (default).
% \item[\texttt{15margins}:] Use a consistent 1.5in margin.
% \item[\texttt{oneside}:] Single-sided output (from \package{book}
%   class, default). 
% \item[\texttt{twoside}:] Double-sided output.  This gives  different
%   headers on left and right pages.  Some pages might be left blank to have
%   chapters start on right pages (from the \package{book} class).
%
%   You are prone to get some overfull
%   \cmd{\vbox} warnings when using this option.\footnote{With
%     double-sided printing, \LaTeX\ attempts to fill every page to 
%     the bottom to avoid ragged bottoms.  Its main remedy for this is
%     to stretch the spacing between paragraphs.  When this does not
%     provide enough extra space, you get an underfull \cmd{\vbox}.}
%   They can be avoided  by using \cmd{\raggedbottom}, but the result
%   can be very aesthetically unpleasant as you get facing pages with
%   different text height.  Therefore, you are recommended to ignore
%   the overfull boxes if you cannot rearrange the paragraphs to avoid
%   them. 
%
% \item[\texttt{draft}:] Draft version---this marks overfull boxes and might
%   also effect other packages (from the \package{book} class).
% \item[\texttt{final}:] Final version (from the \package{book} class, default).
% \item[\texttt{openright}:] For double-sided printing: chapters
%   always open on the right page (from the \package{book} class, default).
% \item[\texttt{openany}:] For double-sided printing: chapters can
%   open on either a  left or a right page (from the \package{book} class).
% \item[\texttt{blankcleared}:] For double-sided printing: when a page
%   is cleared to make a chapter start on a right page, leave out page
%   number and headers.
% \item[\texttt{numbercleared}:]For double-sided printing: when a page
%   is cleared to make a chapter start on a right page, put page
%   number and headings on the cleared page.
% \item[\texttt{leqno}:] Equation number are placed to the left (from
%   \package{book} class). 
% \item[\texttt{fleqno}:] Equation number are placed flushed to the
%   left (from the \package{book} class).
% \item[\texttt{openbib}:] A more open layout of the bibliography (from the \package{book} class).
% \item[\texttt{12pt}:] The main text is set in 12pt font size (from the \package{book} class, default)
% \item[\texttt{11pt}:] The main text is set in 11pt font size;
%   \cmd{\small} and \cmd{\footnotesize} do not change the font size
%   (essentially from the \package{book} class, \emph{not recommended by
%   GSAS).} 
% \item[\texttt{10pt}:] The main text is set in 11pt font size;
%   \cmd{\small} and \cmd{\footnotesize} do not change the font size
%   (essentially from the \package{book} class, \emph{not recommended by
%   GSAS).}
% \end{description}
%
% \section{Issues To Be Aware Of} 
%
% The following is a list of issues you should be aware.  It might be
% a little {\TeX}nichal so skip it, if it does not apply to your
% dissertation.
%
% \subsection{Margin Notes}
%
% While the class  allows margin notes set with the \LaTeX\ command
% \cmd{\marginpar}, the margins are not designed for margin
% notes. 
% 
% If you use margin notes they will comes as close as  .35in from the
% border of the paper.  If you use them extensively, this is unlikely to
% be kosher and you should adjust the margin parameters.  You can
% solve this by including the following in your preamble.
% \begin{alltt}\cs{geometry}\{marginparwidth=\(w\), marginparsep=\(s\), includemp\}\end{alltt}
% where~$w$ is the width of your margin notes and $s$ their separation
% from the text
%
% You should check with the GSAS for more guidance.  
%
% \StopEventually{}
%
% \section{Driver Producing Documentation}
% 
% We want to  distribution  the documented class file as a single
% file even though the file is used for two very different purposes:
% \begin{enumerate}
% \item \label{it:documentation}To produce the documentation of the class.
% \item \label{it:class}To provide the class for users.
% \end{enumerate} 
% We accomplish this with a bit of code taken from the
% \package{doc} package: We test whether a \cmd{\documentclass}-command has
% already been processed (we exploit that \LaTeX\ binds
% \cmd{\documentclass} to \cmd{\@twoclasseserror} when it start to
% process \cmd{\documentclass}).  If so, we know that we are in
% Case~\ref{it:class}, otherwise we use the driver to produce the
% documentation.
%
% This is implemented with the following trickery.  If the condition
% below is false, i.e., \cmd{\documentclass} is not bound ot
% \cmd{\@twoclasseserror}, then a \cs{fi} is constructed on the fly
% and \LaTeX\ continues processing the code following "\csname fi\endcsname".  On the other hand, if the condition is true, \LaTeX\
% searches for a \cs{fi}, but has no clue that "\csname fi\endcsname" 
% stands for \cs{fi}.  Therefore, it skips until it finds the
% \cs{fi} following "\end{document}".  
%
% Additionally, these parts are enclosed in a guard "gobble" to
% prevent the trickery to end up in files coming out of
% \package{docstrip}. 
%    \begin{macrocode}
%<*driver>
%<*gobble>
\makeatletter
\ifx\documentclass\@twoclasseserror
\else \makeatother\csname fi\endcsname
%</gobble>
%    \end{macrocode}
% Otherwise we process the following lines which will produced the 
% formatted the documentation.  
%
%    \begin{macrocode}
\documentclass{ltxdoc}
\usepackage{url}
\usepackage{alltt}
%    \end{macrocode}
% By default we only want the user documentation:
%    \begin{macrocode}
 \OnlyDescription % Comment this line out for full documentation
%    \end{macrocode}
%  For the full documentation, the following lines should be uncommented:
%    \begin{macrocode}
 % \EnableCrossrefs % Uncomment for full documentation
 % \RecordChanges 
%    \end{macrocode}
% which produces a cross-referenced index of the macros' definitions
% and usage and a history of changes.
% 
% We tell the user not to worry about underfull/overfull boxes.
%    \begin{macrocode}
 \typeout{Expect some Under- and overfull boxes}
%    \end{macrocode}
% Finally, we define some commands to typeset the documentation: First, a
% command to typeset the RCS tags generated by the version control.
% \begin{macro}{\RCS}
%   \mcmd{\RCS}"$"\meta{ID}": "\meta{description}" $" defines
%   \cs{RCS\meta{ID}} to expand to \meta{description}.
%    \begin{macrocode}
\makeatletter
\def\RCS$#1: #2 ${\@namedef{RCS#1}{#2}}
%    \end{macrocode}
% \end{macro}^^A \RCS
% 
% \begin{macro}{\cmd}
% \begin{macro}{\mcmd}
% \begin{macro}{\mcs}
% \begin{macro}{\marg}
% \begin{macro}{\ostar}
% \begin{macro}{\package}
% Second, some commands for formatting the various parts of the
% documentation: We fix the \cmd{\cmd} so it includes "@" in the
% command names (necessary when we define commands \cs{if@$\ldots$}),
% \cmd{\mcmd}\marg{\cs{command}} for the mandatory command name set as
% with \cmd{\cmd}, \cmd{\mcs}\marg{name} for the mandatory command
% name set as with \cmd{\cs}, \cmd{\marg}\marg{argument} for a
% mandatory argument, \cmd{\ostar} for an optional start, and
% \cmd{\package}\marg{package name} for a package name.
%    \begin{macrocode}
\let\bd@saved@cmd\cmd
\renewcommand{\cmd}{\bgroup\makeatletter\bd@cmd@i}
\newcommand{\bd@cmd@i}[1]{\bd@saved@cmd{#1}\egroup}
\newcommand{\mcmd}{\bgroup\makeatletter\mcmd@i}
\newcommand{\mcmd@i}[1]{\textbf{\hbox{\bd@saved@cmd#1}}\egroup}
\newcommand{\mcs}[1]{\textbf{\hbox{\cs{#1}}}}
\let\org@marg\marg
\renewcommand{\marg}[1]{\textbf{\org@marg{#1}}}
\newcommand{\ostar}{\texttt{*}}
\newcommand{\package}[1]{\textsf{#1}}
\makeatother
%    \end{macrocode}
% \end{macro}^^A \package
% \end{macro}^^A \ostar
% \end{macro}^^A \marg
% \end{macro}^^A \mcs
% \end{macro}^^A \mcmd
% \end{macro}^^A \cmd
%
%    \begin{macrocode}
\begin{document}
  \DocInput{brandeis-dissertation.dtx}
\end{document}
%<*gobble>
\fi
%</gobble>
%</driver>
%    \end{macrocode}
%
% \section{Class Code}
%
%    \begin{macrocode}
%<*class>
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{brandeis-dissertation}%
  [2013/10/21 v2.0 Brandeis dissertation settings]
%    \end{macrocode}
%  We declare the various options along with flags for them.
%    \begin{macrocode}
\newif\ifbd@blankclear
\DeclareOption{blankcleared}{\bd@blankcleartrue}
\DeclareOption{numbercleared}{\bd@blankclearfalse}
\newif\ifbd@minmar
\DeclareOption{minmargins}{\bd@minmartrue}
\DeclareOption{15margins}{\bd@minmarfalse}
%    \end{macrocode}
% \changes{v1.0}{2004/10/25}{Dropped the margin changing options for \package{geometry}}
%
% \begin{macro}{\bd@book@size}
% \begin{macro}{\bd@book@side}
% \begin{macro}{\bd@book@final}
% Finally, we shadow a few of the options given by
% \package{book}. Since \package{book} uses the unstarred
% "\ProcessOptions", we cannot pass mutually exclusive options like
% "twoside" and "oneside" to \package{book} as the one declared latest
% in \package{book} will always take precedence.  We therefore store
% the choice in flags.  
%
% GSAS recommend a 12pt font size, but allow font sizes down to 10pt.  We
% therefore include the smaller font sizes, but change them so
% \cmd{\small} and \cmd{\footnotesize} do not reduce the font size.
%    \begin{macrocode}
\newif\ifbd@nochange@small@ftnt
\DeclareOption{12pt}{\def\bd@book@size{12pt}%
  \bd@nochange@small@ftntfalse}
\DeclareOption{11pt}{\def\bd@book@size{11pt}%
  \bd@nochange@small@ftnttrue}
\DeclareOption{10pt}{\def\bd@book@size{10}%
  \bd@nochange@small@ftnttrue}
\DeclareOption{oneside}{\def\bd@book@side{oneside}}
\DeclareOption{twoside}{\def\bd@book@side{twoside}}
\DeclareOption{draft}{\def\bd@book@final{draft}}
\DeclareOption{final}{\def\bd@book@final{final}}
\DeclareOption{openright}{\def\bd@book@openrght{openright}}
\DeclareOption{openany}{\def\bd@book@openrght{openany}}
%    \end{macrocode}
%  The "leqno", "fleqno", and the "openbib" does not have any
%  excluding option.
%    \begin{macrocode}
\DeclareOption{leqno}{\PassOptionsToClass{book}{\currentoption}}
\DeclareOption{fleqno}{\PassOptionsToClass{book}{\currentoption}}
\DeclareOption{openbib}{\PassOptionsToClass{book}{\currentoption}}
\DeclareOption{openbib}{\def\bd@book@openbib{openbib}}
%    \end{macrocode}
% \end{macro}^^A \bd@book@final
% \end{macro}^^A \bd@book@side
% \end{macro}^^A \bd@book@size
%
% We process the options and we can then load the book class with the
% the default options of 12pt font and letter paper.
%    \begin{macrocode}
\ExecuteOptions{12pt,openright,final,oneside,%
   minmargins,copyright,nolot,lof}
\ProcessOptions*
\LoadClass[letterpaper,\bd@book@size,\bd@book@side,%
   \bd@book@final,\bd@book@openrght]{book}
%    \end{macrocode}
%  
% After loading the \package{book} class, fonts have been set up.  If
% needed for font sizes 10pt and 11pt, we now make \cmd{\small} and
% \cmd{\footnotesize} the same as the normal font size.
%    \begin{macrocode}
\ifbd@nochange@small@ftnt
  \let\small\normalsize
  \let\footnotesize\normalsize
\fi
%    \end{macrocode}
%
% \begin{macro}{\bd@cleardoublepageblank}
% \begin{macro}{\bd@cleardoublepage@save}
%   The \cmd{\clearblank} is an alternative to
%   \cmd{\cleardoublepage} that leaves the  facing left-hand page (if
%   any)   completely blank, i.e., without a page number.   We do so
%   by temporarily changing the pagestyle to "empty".
%    \begin{macrocode}
\let\bd@cleardoublepage@save\cleardoublepage
\newcommand{\bd@cleardoublepageblank}{%
  \clearpage
  \thispagestyle{empty}%
  \bd@cleardoublepage@save}
\ifbd@blankclear
  \AtBeginDocument{\let\cleardoublepage\bd@cleardoublepageblank}
\fi
%    \end{macrocode}
% \end{macro}^^A \bd@cleardoublepage@save
% \end{macro}^^A \bd@cleardoublepageblank
%
% \subsection{Spacing}
%
%  From the Brandeis web page: ``Double-space all textual material and
%  all preliminary pages.''. Switching between single and double
%  spacing can be painful, but the package \package{setspace} takes
%  out most of the sting.
%    \begin{macrocode}
\RequirePackage[doublespacing]{setspace}
%    \end{macrocode}
%
%  From the Brandeis web page: ``Notes, bibliographic references, and
%  long quotations may be single-spaced.''.  
%
% \begin{environment}{thebibliography}
% \begin{environment}{theindex}
% \begin{environment}{quotation}
% \begin{macro}{\bd@thebibliography}
% \begin{macro}{\bd@endthebibliography}
% \begin{macro}{\bd@theindex}
% \begin{macro}{\bd@endtheindex}
% \begin{macro}{\bd@quotation}
% \begin{macro}{\bd@endquotation}
%    \package{setspace} is smart enough to single-space footnotes for
%    you.  We adapt
%    the bibliography, index, and "quotation" environment\footnote{From the
%    \LaTeX-book: ``The "quotation" environment is used for quotations
%    of more than one paragraph''} to produce single-spaced output:
%    \begin{macrocode}
\let\bd@thebibliography\thebibliography
\let\bd@endthebibliography\endthebibliography
\renewenvironment{thebibliography}%
    {\begin{singlespace}\bd@thebibliography}%
  {\bd@endthebibliography\end{singlespace}}
\let\bd@theindex\theindex
\let\bd@endtheindex\endtheindex
\renewenvironment{theindex}{%
    \addcontentsline{toc}{chapter}%
      {\protect\numberline{}\indexname}%
    \bd@theindex\begin{singlespace}\small}%
  {\end{singlespace}\bd@endtheindex}
\let\bd@quotation\quotation
\let\bd@endquotation\endquotation
\renewenvironment{quotation}%
    {\begin{singlespace}\bd@quotation}%
  {\bd@endquotation\end{singlespace}}
%    \end{macrocode}
% \end{macro}^^A \bd@endquotation
% \end{macro}^^A \bd@quotation
% \end{macro}^^A \bd@endtheindex
% \end{macro}^^A \bd@theindex
% \end{macro}^^A \bd@endthebibliography
% \end{macro}^^A \bd@thebibliography
% \end{environment}^^A quotation
% \end{environment}^^A theindex
% \end{environment}^^A thebibliography
%
% Finally, we also decrease the line spacing smaller in math displays
% as displays otherwise look odd.
%    \begin{macrocode}
\everydisplay\expandafter{%
  \the\everydisplay
  \def\baselinestretch{1.2}\selectfont}
%    \end{macrocode}
% Finally, we adjust to skip amounts to reflect the increased line spacing.
%    \begin{macrocode}
\smallskipamount=2pt plus 1.5pt minus 1.5pt
\smallskipamount=4pt plus 3pt minus 3pt
\bigskipamount=8pt plus 6pt minus 6pt
%    \end{macrocode}
% \section{Margins}
%
% We simplify matters by using the \package{geometry}. The GSAS
% guidelines calls for letter paper ($8 \times 11.5$ inch) and the
% margins given in the table on p.~\pageref{tbl:margins}.
% Furthermore, the guidelines call for the top margin of the first
% page of each chapter to be at least 2in.  The latter is more than
% provided for by the \package{book} class which hard codes a 50pt
% vertical space on top of the chapter heading.
%    \begin{macrocode}
\RequirePackage[letterpaper]{geometry}
\ifbd@minmar
  \geometry{left=1in, top=1in, right=1in, bottom=1in,
    marginparwidth=.5in}
\else
  \geometry{margin=1.5in,marginparwidth=1in}
\fi
%    \end{macrocode}
% define the brandeisheadings page style
% \begin{macro}{\ps@brandeisheadings}
%    \begin{macrocode}
\if@twoside
  \def\ps@brandeisheadings{%
      \def\@evenfoot{\hfil\thepage\hfil}%
      \def\@oddfoot{\hfil\thepage\hfil}%
      \def\@evenhead{\relax}%
      \def\@oddhead{\relax}%
 %     \def\@evenhead{\hfil{\slhape\leftmark}\hfil}%
   %   \def\@oddhead{\hfil{\slshape\rightmark}\hfil}%
      \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter. \ %
          \fi
        \fi
        ##1}}{}}%
    \def\sectionmark##1{%
      \markright {\MakeUppercase{%
        \ifnum \c@secnumdepth >\z@
          \thesection. \ %
        \fi
        ##1}}}}
\else
  \def\ps@brandeisheadings{%
 
          \def\@oddfoot{\hfil\thepage\hfil}%
    \def\@oddhead{\hfil{\slshape\rightmark}\hfil}%
    \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markright {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter. \ %
          \fi
        \fi
        ##1}}}}
\fi
% \end{macro}{\ps@brandeisheadings}
%    \end{macrocode}
% \begin{macro}{\bd@ps@plain@saved}
% \begin{macro}{\bd@ps@empty@saved}
% \begin{macro}{\bd@ps@headings@saved}
% \begin{macro}{\bd@ps@myheadings@saved}
% \begin{macro}{\bd@ps@brandeisheadings@saved}
%   To get the margin calculations right, we let the page style commands
%   change the constraints while we are in the preamble:
%    \begin{macrocode}
\let\bd@ps@plain@saved\ps@plain
\let\bd@ps@empty@saved\ps@empty
\let\bd@ps@headings@saved\ps@headings
\let\bd@ps@myheadings@saved\ps@myheadings
\let\bd@ps@brandeisheadings@saved\ps@brandeisheadings
\def\ps@plain{\geometry{includehead=false,includefoot}%
  \bd@ps@plain@saved}
\def\ps@pempty{\geometry{includehead=false,includefoot=false}%
  \bd@ps@empty@saved}
\def\ps@headings{\geometry{includehead,includefoot=false}%
  \bd@ps@headings@saved}
\def\ps@myheadings{\geometry{includehead,includefoot=false}%
  \bd@ps@myheadings@saved}
\def\ps@brandeisheadings{\geometry{includehead,includefoot}%
  \bd@ps@brandeisheadings@saved}
\AtBeginDocument{%
  \let\ps@plain\bd@ps@plain@saved
  \let\ps@empty\bd@ps@empty@saved
  \let\ps@headings\bd@ps@headings@saved
  \let\ps@myheadings\bd@ps@myheadings@saved
  \let\ps@brandeisheadings\bd@ps@brandeisheadings@saved
  \let\bd@ps@plain\@undefined
  \let\bd@ps@empty\@undefined
  \let\bd@ps@headings\@undefined
  \let\bd@ps@myheadings\@undefined
  \let\bd@ps@brandeisheadings\@undefined}  
%    \end{macrocode}
% \end{macro}^^A \bd@ps@brandeisheadings@saved
% \end{macro}^^A \bd@ps@myheadings@saved
% \end{macro}^^A \bd@ps@headings@saved
% \end{macro}^^A \bd@ps@empty@saved
% \end{macro}^^A \bd@ps@plain@saved
%
% We choose the default page style to be brandeisheadings:
%    \begin{macrocode}
\pagestyle{brandeisheadings}
%    \end{macrocode}
%
% \section{Front Matter}
%
% \begin{macro}{\thesisfront}
%   \cmd{\thesisfront}\oarg{options} produces the front page based on
%   the parameters set in the preamble.  \meta{options} is a
%   comma-separated list of options as described on
%   p.~\pageref{p:thesisfront-options}. 
%
%   We first process the options.  Each valid option is defined below
%   as a macro \cs{bd@tf@\meta{option}} that is to be executed for the
%   option.
%    \begin{macrocode}
\newcommand{\thesisfront}[1][]{%
  \@for\bd@option:=#1\do{%
     \@ifundefined{bd@tf@\bd@option}{%
       \@latex@error{\@backslashchar thesisfront: option `\bd@option'
       unknown}%
       {The option you have specified is unknown.  Check the spelling 
and \MessageBreak consult the documentation for the\MessageBreak 
brandeis-dissertation class.}}%
     {\@nameuse{bd@tf@\bd@option}}}% 
%    \end{macrocode}
%  We mark that this is the front matter.
%    \begin{macrocode}
  \frontmatter
%    \end{macrocode}
%  The pages from the title page and until the acknowledgments should
%  be counted, but not numbered.  We start a group so we can
%  change the page style without worries.
%    \begin{macrocode}
  \bgroup
  \pagestyle{empty}
  \thesistitlepage\cleardoublepage
%    \end{macrocode}
%  When submitting online, the signature page only mentions the
%  committee's names, otherwise we need signature lines.
%    \begin{macrocode}
  \if@bd@onlinesubmission{\signaturepage}{\signaturepage*}%
  \cleardoublepage
  \if@bd@crpage{\copyrightpage{\@author}{\@graduationyear}%
      \cleardoublepage}%
  \ifx\@dedication\@empty\else
     \dedicationpage{\@dedication}%
     \cleardoublepage
  \fi
  \cleardoublepage
  \egroup
  \bd@optpage*{Acknowledgments}{\@acknowledgments}%  
  \cleardoublepage
  \bd@abstract{\@thesisabstract}%
  \cleardoublepage
  \bd@optpage{Preface}{\@preface}%
  \cleardoublepage
  \tableofcontents
  \cleardoublepage
  \if@bd@lot{\listoftables\cleardoublepage}%
  \if@bd@lof{\listoffigures\cleardoublepage}%
  \mainmatter}
%    \end{macrocode}
% \end{macro}^^A \thesisfront
%
% We then define the various options:
% \begin{macro}{\if@bd@onlinesubmission}
% \begin{macro}{\bd@tf@onlinesubmission}
% \begin{macro}{\bd@tf@papersubmission}
%   \cmd{\if@bd@onlinesubmission} is the flag for whether we prepare
%   for online or paper submission.  The corresponding options are
%   "onlinesubmission" and "papersubmission"
%    \begin{macrocode}
\let\if@bd@onlinesubmission\@firstoftwo
\newcommand{\bd@tf@onlinesubmission}{%
  \let\if@bd@onlinesubmission\@firstoftwo}
\newcommand{\bd@tf@papersubmission}{%
  \let\if@bd@onlinesubmission\@secondoftwo}
%    \end{macrocode}
% \end{macro}^^A \bd@tf@papersubmission
% \end{macro}^^A \bd@tf@onlinesubmission
% \end{macro}^^A \if@bd@onlinesubmission
%
% \begin{macro}{\if@bd@crpage}
% \begin{macro}{\bd@tf@copyrightpage}
% \begin{macro}{\bd@tf@nocopyrightpage}
%   \cmd{\if@bd@crpage} is the flag for whether we include a copyright
%   page.  The corresponding options are
%   "copyrightpage" and "nocopyrightpage".
%    \begin{macrocode}
\let\if@bd@crpage\@iden
\newcommand{\bd@tf@copyrightpage}{\let\if@bd@crpage\@iden}
\newcommand{\bd@tf@nocopyrightpage}{\let\if@bd@crpage\@gobble}
%    \end{macrocode}
% \end{macro}^^A \bd@tf@nocopyrightpage
% \end{macro}^^A \bd@tf@copyrightpage
% \end{macro}^^A \if@bd@crpage
%
% \begin{macro}{\if@bd@lot}
% \begin{macro}{\bd@tf@lot}
% \begin{macro}{\bd@tf@nolot}
%   \cmd{\if@bd@lot} is the flag for whether we include a list of
%   tables.  The corresponding options are
%   "lot" and "nolot".
%    \begin{macrocode}
\let\if@bd@lot\@gobble
\newcommand{\bd@tf@lot}{\let\if@bd@lot\@iden}
\newcommand{\bd@tf@nolot}{\let\if@bd@lot\@gobble}
%    \end{macrocode}
% \end{macro}^^A \bd@tf@nolot
% \end{macro}^^A \bd@tf@lot
% \end{macro}^^A \if@bd@lot
%
% \begin{macro}{\if@bd@lof}
% \begin{macro}{\bd@tf@lof}
% \begin{macro}{\bd@tf@nolof}
%   \cmd{\if@bd@lof} is the flag for whether we include a list of
%   figures.  The corresponding options are
%   "lof" and "nolof".
%    \begin{macrocode}
\let\if@bd@lof\@gobble
\newcommand{\bd@tf@lof}{\let\if@bd@lof\@iden}
\newcommand{\bd@tf@nolof}{\let\if@bd@lof\@gobble}
%    \end{macrocode}
% \end{macro}^^A \bd@tf@nolof
% \end{macro}^^A \bd@tf@lof
% \end{macro}^^A \if@bd@lof
%
% \begin{macro}{\tableofcontents}
% \begin{macro}{\listoftables}
% \begin{macro}{\listoffigures}
%   We adopt \cmd{\tableofcontents}, \cmd{\listoftables}, and
%   \cmd{\listoffigures} to typeset the table of contents, list of tables,
%   and list of figures single-spaced.  We only include chapters sand
%   sections in the table of contents as in the example in the
%   dissertation examples.  
%    \begin{macrocode}
\setcounter{tocdepth}{1}
\let\bd@org@tableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
  \begin{singlespace}
    \bd@org@tableofcontents
  \end{singlespace}}
\let\bd@org@listoftables\listoftables
\renewcommand{\listoftables}{%
  \begin{singlespace}
    \bd@org@listoftables
 \end{singlespace}}
\let\bd@org@listoffigures\listoffigures
\renewcommand{\listoffigures}{%
  \begin{singlespace}
    \bd@org@listoffigures
  \end{singlespace}}
%    \end{macrocode}
% \end{macro}^^A \listoffigures
% \end{macro}^^A \listoftables
%   \changes{07/01/2004}{1.0}{PMN: added Table of Contents to Table of Contents.}
% \end{macro}^^A \tableofcontents
%
% \begin{macro}{\mainmatter}
%   The dissertation guidelines does not call for a blank page between
%   front matter and main matter.  We therefore adopt the
%   \textsf{book}'s definition accordingly.
%    \begin{macrocode}
\renewcommand\mainmatter{%
  \clearpage
  \@mainmattertrue
  \pagenumbering{arabic}}
%    \end{macrocode}
% \end{macro}^^A \mainmatter
% 
% \begin{macro}{\acknowledgments}
% \begin{macro}{\@acknowledgments}
% \begin{macro}{\advisor}
% \begin{macro}{\@advisor}
% \begin{macro}{\dean}
% \begin{macro}{\@dean}
% \begin{macro}{\dedication}
% \begin{macro}{\@dedication}
% \begin{macro}{\department}
% \begin{macro}{\@department}
% \begin{macro}{\graduationmonth}
% \begin{macro}{\@graduationmonth}
% \begin{macro}{\graduationyear}
% \begin{macro}{\@graduationyear}
% \begin{macro}{\othercopyright}
% \begin{macro}{\@othercopyright}
% \begin{macro}{\preface}
% \begin{macro}{\@preface}
% \begin{macro}{\thesisabstract}
% \begin{macro}{\@thesisabstract}
%    We define the commands for the formal parameters of the
%    dissertation.  For each \meta{parameter}, the command
%    \cs{\meta{parameter}} records \meta{parameter} by storing it in 
%    \cs{@\meta{parameter}}.
%    \begin{macrocode}
\gdef\@acknowledgments{}
\gdef\@advisor{}
\gdef\@dean{}
\gdef\@dedication{}
\gdef\@department{}     
\gdef\@graduationmonth{May}
\xdef\@graduationyear{\the\year}
\gdef\@othercopyright{}
\gdef\@preface{}
\gdef\@thesisabstract{}
\newcommand{\acknowledgments}[1]{\gdef\@acknowledgments{#1}}
\newcommand{\advisor}[1]{\gdef\@advisor{#1}}
\newcommand{\dean}[1]{\gdef\@dean{#1}}
\newcommand{\dedication}[1]{\gdef\@dedication{#1}}
\newcommand{\department}[1]{\gdef\@department{#1}}
\newcommand{\graduationmonth}[1]{\gdef\@graduationmonth{#1}}
\newcommand{\graduationyear}[1]{\gdef\@graduationyear{#1}}
\newcommand{\othercopyright}[1]{\gdef\@othercopyright{#1}}
\newcommand{\preface}[1]{\gdef\@preface{#1}}
\newcommand{\thesisabstract}[1]{\gdef\@thesisabstract{#1}}
%    \end{macrocode}
% \end{macro}^^A \@thesisabstract
% \end{macro}^^A \thesisabstract
% \end{macro}^^A \@preface
% \end{macro}^^A \preface
% \end{macro}^^A \@othercopyright
% \end{macro}^^A \othercopyright
% \end{macro}^^A \@graduationyear
% \end{macro}^^A \graduationyear
% \end{macro}^^A \@graduationmonth
% \end{macro}^^A \graduationmonth
% \end{macro}^^A \@department
% \end{macro}^^A \department
% \end{macro}^^A \@dedication
% \end{macro}^^A \dedication
% \end{macro}^^A \@dean
% \end{macro}^^A \dean
% \end{macro}^^A \@advisor
% \end{macro}^^A \advisor
% \end{macro}^^A \@acknowledgments
% \end{macro}^^A \acknowledgments
%
% \begin{macro}{\reader}
% \begin{macro}{\@committee}
%   The \mcmd{\reader}\marg{reader} adds \meta{reader} as a reader to
%   the committee.  This is done by collection the readers in
%   \cmd{\@committee} enclosed by \cmd{\do}.
%    \begin{macrocode}
\newcommand{\reader}[1]{%
  \expandafter\gdef
    \expandafter\@committee
       \expandafter{\@committee\do{#1}}}
\gdef\@committee{}
%    \end{macrocode}
% \end{macro}^^A \@committee
% \end{macro}^^A \reader   
%
% \section{Title Page}
%
% \begin{macro}{\thesistitlepage}
%   \mcmd{\thesistitlepage} typesets the title page of the
%   dissertation on a page without page number.
%    \begin{macrocode}
\newcommand{\thesistitlepage}{
  \thispagestyle{empty}%
  \begin{center}
    \vspace*{.25in}%
    {\Huge \bf\baselineskip=.8\baselineskip \@title\\}
    \vspace*{.5in}%
    A Dissertation\\
    \vspace*{.25in}%
    Presented to\\
    The Faculty of the Graduate School of Arts and Sciences\\
    Brandeis University\\
    \@department\\
    \@advisor, Advisor\\
    \vspace*{.5in}
    In Partial Fulfillment\\
    of the Requirements for the Degree\\
    Doctor of Philosophy\\
    \vspace*{.5in}
    by\\
    \@author\\        
    \@graduationmonth, \@graduationyear\\   
  \end{center}%
  \clearpage}
%    \end{macrocode}
% \end{macro}^^A \thesistitlepage
%
% \section{Copyright Page}
%
% \begin{macro}{\copyrightpage}
%   \mcmd{\copyrightpage}\marg{name}\marg{year} produces the thesis
%   copyright page on a page with the page number omitted.
%    \begin{macrocode}
\newcommand{\copyrightpage}[2]{%
  \thispagestyle{empty}%
  \begin{center}
    \vspace*{2.5in}
     \copyright Copyright by \\
    \vspace*{.05in}
    #1 \\
    \vspace*{.05in}
    #2 
  \end{center}
  \vspace{0pt}\vfill%
  \begin{singlespace}
  \begin{raggedright}
    \small
    \@othercopyright
  \end{raggedright}
  \end{singlespace}
  \clearpage}
%    \end{macrocode}
%   \changes{07/01/2004}{v0.1}{Added \cmd{\othercopyright}.}
% \end{macro}^^A \copyrightpage
% 
% \begin{macro}{\dedicationpage}
%   \mcmd{\dedicationpage}\marg{dedication} produces a dedication page
%   on a page with the page number omitted. 
%    \begin{macrocode}
\newcommand{\dedicationpage}[1]{%
  \thispagestyle{empty}%
  \vspace*{2.5in}%
  \begin{center}%
    #1  
  \end{center}%
  \clearpage}
%    \end{macrocode}
% \end{macro}^^A \dedicationpage
% 
% \section{Abstract}
%
% \begin{environment}{abstract}
%    "abstract" is the environment for typesetting the abstract of the
%    dissertation.
%    \begin{macrocode}
\newenvironment{abstract}{%
  \addcontentsline{toc}{chapter}{Abstract}
  \begin{singlespace}
    \thispagestyle{plain}
    \begin{center}
      {\Huge\bf Abstract\\}%
      \vspace*{.2in}%
      {\large\bf  \@title \\}%
      \vspace*{.1in}%
      \noindent
      A dissertation presented to the Faculty of \\
      the Graduate School of Arts and Sciences of \\
      Brandeis University, Waltham, Massachusetts \\
      \vspace*{0.1in}
      by \@author
    \end{center}
    \end{singlespace}%
    \begin{doublespace}
    \noindent}%
  {\end{doublespace}%
  \clearpage}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\bd@abstract}
%   \mcmd{\bd@abstract}\marg{abstract} uses \meta{abstract} as the
%   abstract of the dissertation.
%    \begin{macrocode}
\newcommand{\bd@abstract}[1]{%
 \begin{abstract}#1\end{abstract}}
%    \end{macrocode}
% \end{macro}^^A \bd@abstract
%
% \section{Signature Page}
%
% \begin{macro}{\signaturepage}
% \begin{macro}{\bd@sig@page}
% \begin{macro}{\if@bd@sig@lines}
%   \mcmd{\signaturepage}\ostar produces the signature page.  
%
%   The starred version produces the one to be signed on the day of
%   the defense while the unstarred version produces the one to appear
%   in the printed version.  The choice is recorded by
%   \cmd{\if@bd@sig@lines}. 
%   \begin{macrocode}
\let\if@bd@sig@lines\@secondoftwo
\newcommand{\signaturepage}{%
  \@ifstar{\let\if@bd@sig@lines\@firstoftwo\bd@sig@page}%
    {\let\if@bd@sig@lines\@secondoftwo\bd@sig@page}}
\newcommand{\bd@sig@page}{%
%    \end{macrocode}
%  \label{p:sigpage-comm-sign-length}We first find the widest entry
%  for a committee member; this is the length of the signature lines for
%  the committee.
%    \begin{macrocode}
    \bd@upd@signline@lngth{\@advisor, Chair}
    \let\do\bd@upd@signline@lngth\@committee
%    \end{macrocode}
%  We remove page numbering and typeset the introduction text.
%    \begin{macrocode}
    \thispagestyle{empty}%
    \begin{flushleft}%
      \vspace*{.15in}%
      This dissertation, directed and approved by \@author's
      committee, has been accepted and approved by the Graduate
      Faculty of Brandeis University in partial fulfillment of the
      requirements for the degree of:
      \vspace*{0.25in}%
      \begin{flushright}%
        \centerline{\bfseries DOCTOR OF PHILOSOPHY}%
        \par
        \parbox{3.6in}{%
          \vspace{.8in}%
          \if@bd@sig@lines{\bd@signline{2.9in}}{}%
          \@dean, Dean of Arts and Sciences}%
      \end{flushright}%
      \vspace*{0.4in}%
%    \end{macrocode}
%  The preamble stores the list of committee members in
%  \cmd{\@committee} with each reader 
%  enclosed in \cmd{\do}\{\meta{reader}\}.  We list the committee
%  (with their possible signature lines) by setting \cmd{\do} be
%  \cmd{\bd@sig@page@item}.
%    \begin{macrocode}
      Dissertation Committee:
      \par
      \bd@sig@page@item{\@advisor, Chair}%
      {\let\do\bd@sig@page@item\@committee}%
    \end{flushleft}
    \clearpage}
%    \end{macrocode}
% \end{macro}^^A \if@bd@sig@lines
% \end{macro}^^A \bd@sig@page
% \end{macro}^^A \signaturepage
%
% \begin{macro}{\bd@sig@page@item}
%   \mcmd{\bd@sig@page@item}\marg{member} typesets \meta{member} as a
%   committee member.  It uses \cmd{\if@bd@sig@lines} to decide
%   whether to add signature lines.
%    \begin{macrocode}
\newcommand{\bd@sig@page@item}[1]{%
  \if@bd@sig@lines{%
     \penalty10000\vskip.6in minus 1in% 
     \bd@signline{\bd@comm@signline@lngth}}%
   {\par}%
  #1}
%    \end{macrocode}
% \end{macro}^^A \bd@sig@page@item 
%
% \subsection{Signature Line}
% 
% The following macros manages signature lines.  We start with
% \cmd{\bd@signline} to typeset a signature line.
% \begin{macro}{\bd@signline}
%   \mcmd{\bd@signline}\marg{witdh} produces a line of width \meta{width} for signatures.
%    \begin{macrocode}
\newcommand{\bd@signline}[1]{%
  \rule[.5\baselineskip]{#1}{0.4pt}\hskip-#1\relax\ignorespaces}
%    \end{macrocode}
% \end{macro}^^A \bd@signline
%
% \begin{macro}{\bd@comm@signline@lngth}
% \begin{macro}{\bd@upd@signline@lngth}
%   To get the same length on the signature lines for the committee,
%   we process the committee (see \cmd{\signaturepage} on
%   p.~\pageref{p:sigpage-comm-sign-length} 
%    \begin{macrocode}
\newlength{\bd@comm@signline@lngth}
\setlength{\bd@comm@signline@lngth}{2.5in}
\newcommand{\bd@upd@signline@lngth}[1]{%
  {\setbox0=\hbox{#1}%
  \ifdim \wd0>\bd@comm@signline@lngth
    \global\bd@comm@signline@lngth=\wd0
  \fi}}
%    \end{macrocode}
% \end{macro}^^A \bd@upd@signline@lngth
% \end{macro}^^A bd@comm@signline@lngth
%
% \begin{environment}{optionalpage*}
% \begin{environment}{optionalpage}
%   These environments are used for optional pages: dedication,
%   acknowledgments, preface.  They take \meta{title} as their single
%   argument. 
%
%   The unstarred version adds an entry to
%   the table of contents. 
%    \begin{macrocode}
\newenvironment{optionalpage}[1]{%
  \chapter{#1}}%      
  {\clearpage}
\newenvironment{optionalpage*}[1]{%
  \chapter*{#1}}%      
  {\clearpage}
%    \end{macrocode}
%   We do not use \cmd{\chapter}\ostar as
%   this has a large space on the top of the page.
%   The output will be double-spaced, but you can easily change that.  
% \end{environment}^^A optionalpage
% \end{environment}^^A optionalpage*
%
% \section{Optional Pages}
% \begin{macro}{\bd@optpage}
% \begin{macro}{\bd@optpage@i}
%   \mcmd{\bd@optpage}\ostar\textbf{\cs{\meta{command}}}\marg{title} 
%   typesets an optional page titled \meta{title} with contents of
%   \cs{\meta{command}} provided that the expansion of \cs{\meta{command}}
%   is not-empty.
%    \begin{macrocode}
\newcommand{\bd@optpage}{%
  \@ifstar{\bd@optpage@i{optionalpage*}}{\bd@optpage@i{optionalpage}}}
%    \end{macrocode}
%   We test for the optional star to decide on the environment to
%   use.  Then \cmd{\bd@optpage@i} does the actual typesetting.
%    \begin{macrocode}
\newcommand{\bd@optpage@i}[3]{%
  \ifx\@empty#3
     \expandafter\@gobble
  \else
     \expandafter\@iden
  \fi
  {\begin{#1}{#2}#3\end{#1}}}
%    \end{macrocode}
% \end{macro}^^A \bd@optpage@i
% \end{macro}^^A \bd@optpage
%
%^^A  \section{Obsolete \package{book} Commands}
%^^A    Various features of the \package{book} class conflict with the
%^^A    commands in this class and we disable them
%    \begin{macrocode}
%</class>
%    \end{macrocode}
% \Finale \sloppy \PrintChanges
% 
% \endinput
% ^^A LocalWords:  minmargins papersubmission

