%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% GATECH-THESIS.CLS (v1.7)
%% Copyright (c) 2002 by Charles S. Wilson. All rights reserved.
%% See licensing information, below.
%%
%% Last Update: V1.8 (2 July 2010) by Mitchel T. Keller
%%
%% Heritage:
%%   UT-THESIS.CLS (v1.8)
%%     -- by Francois Pitt (1999 Dec 10)
%%     -- as modified by Aichen Low, 2000 Jan 14
%%   GTthesis.sty
%%     -- as adapated from suthesis.sty by Ahmed Gheith
%%     -- and modified by Joonwon Lee, Eilin Tien Lin, Wei Lui
%%     -- and as modified by Kalyan Perumalla, 1999 Nov 18
%%   gt-thesissty.sty
%%     -- by Aichen Low, 2000 Jan 17
%%
%% All of these sources were combined to produce a single, unified
%% class file for Georgia Tech PhD Theses.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\gtthesisversion}{1.8}% current version number
\newcommand{\gtthesisupdated}{2010/07/02}% date of last change(s)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This program is free software; you can redistribute it and/or
%% modify it under the terms of the GNU General Public License
%% as published by the Free Software Foundation; either version 2
%% of the License, or (at your option) any later version.
%%
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%% GNU General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with this program; if not, write to the Free Software
%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
%%
%% See the COPYING file for license information.
%%
%% Note that the files contained within ThesisProposal.tar.gz have
%% their own licence.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  REVISION HISTORY:
%%
%%  v1.8: 2010-Jul-02 Mitchel T. Keller
%%      * Change font used in Table of Contents for volumes (parts).
%%      * Add support for abstract page meeting UMI requirements.
%%      * Fix bug that prevented hyperref and overpic packages from
%%        working together properly.
%%  v1.7: 2006-Jan-24  Mitchel T. Keller
%%      * Remove double spacing of thesis title as per July 2005
%%        manual.
%%      * Reduce font size of thesis title, chapter titles, author,
%%        and volume titles.
%%      * Update approval page to comply with electronic submission
%%        requirements (no signature line, all committee members'
%%        affiliations listed, approval date printed on page).
%%  v1.6: 2003-Apr-14  Charles S. Wilson
%%      * caption labels: OGS requires (e.g.) 'Figure 2:' to be in
%%        same font as rest of caption (bold ok, changing font not ok)
%%      * make vita double-spaced
%%      * fixed a bug in Signature page when no Committee Chair.  Thanks
%%        Arnaud Cottet for reporting it.
%%      * Changed one-and-a-half spacing to better match the description
%%        in The LaTeX Companion (use 1.25, not 1.33).
%%  v1.5: 2002-Aug-17  Charles S. Wilson
%%      * COMPLIANCE: new documentation
%%      * caption labels: make them prettier
%%      * Change gatech-thesis-gloss.sty to handle real glossaries;
%%      * NEW: gatech-thesis-losa.sty now handles the List of Symbols
%%  v1.4: 2002-Aug-03  Charles S. Wilson
%%      * Better handling of equation, table, and figure numbering
%%        (added David Carlisle's \@removefromreset macro, and use
%%        that instead of the previous kludge.)
%%      * Corrected problem with two-sided printing: the even-numbered
%%        (left hand) page between the end of \preliminary and the
%%        beginning of the first chapter was not printed.  This really
%%        messed up duplex printers.  FIXED.
%%      * Corrected problem when vita (or whatever the last section
%%        before \end{postliminary}) was \included instead of \inputted.
%%      * Signature page no longer prints empty lines for non-existent
%%        committee members.  Also, uses two columns if more than 4
%%        members, per the Graduate Office Guidelines.  AND we no longer
%%        print its page number
%%      * Now uses (requires) the calc package, which is part of the
%%        standard latex installation.
%%      * Automatically center the dedication (but see the new functions
%%        \dedicationtop and \dedicationbottom
%%      * Correctly doublespace the title on both titlepage and signaturepage
%%      * page numbering defaults to a centered footer, as per the new
%%        Graduate Office guidelines
%%      * Added proper handling for multiple volumes in a single thesis
%%      * Added support for the add-on styles ``gatech-thesis-gloss.sty''
%%        and ``gatech-thesis-index.sty''.
%%  v1.3: 2002-Jan-13  Charles S. Wilson
%%      * Renamed to gatech-thesis at request of the CTAN folks.
%%  v1.2: 2001-May-01  Charles S. Wilson
%%      * Minor tweaks to conform to latest GSO requirements
%%  v1.1: 2001-Apr-29  Charles S. Wilson
%%      * Fixup to work nicely with pdflatex and hyperref
%%  v1.0: 2001-Jan-24  Charles S. Wilson
%%      * Initial release: merged UT-THESIS.STY with GTthesis.sty
%%        and gt-thesissty.sty.
%%
%%  KNOWN BUGS:
%%
%%   - FIXED: (sortof) [On ``dedication'' and ``acknowledgements''
%%     causing an error when they both appear on the same page.]
%%     GT style doesn't allow these to appear on the same page,
%%     so \begin{dedication}...\end{dedication} will ALWAYS
%%     appear on its own page.  Ditto acknowledgements.
%%
%%   - I didn't fix this; GATECH-THESIS.CLS has inherited this bug
%%     from UT-THESIS.CLS: [On missing page headers for float pages.]
%%     ``teTex'' under Linux fails in precisely the same way as does
%%     ``MikTeX'', so there's something clearly wrong somewhere, but
%%     I don't know where.  It only fails on odd-numbered pages (if
%%     you remove enough text so that the page floats back to an
%%     even-numbered page, the page header is correct)!
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% The following notice and changelog is included to satisfy the
%% distribution requirements explained below, but much of it no
%% longer applies.  GATECH-THESIS.CLS has been changed in major ways
%% from UT-THESIS.CLS...
%%
%% OLD:
%% OLD:  This file is distributed in the hope that it will be useful but
%% OLD:  without any warranty (without even the implied warranty of
%% OLD:  fitness for a particular purpose).  For a description of this
%% OLD:  file's purpose, and instructions on its use, see below.
%% OLD:
%% OLD:  Feel free to copy and redistribute this file, as long as this
%% OLD:  copyright notice remains intact.  You may also modify the file
%% OLD:  to suit your particular needs, as long as you indicate your
%% OLD:  changes below (and inform the original author of your changes:
%% OLD:  he's always curious to know what people think of his work).
%% OLD:
%% OLD:  Send all bugs, questions, comments, suggestions, etc. to the
%% OLD:  author, at <[email protected]>.
%% OLD:
%% OLD:  KNOWN BUGS: (reported by Robert Bernecky)
%% OLD:
%% OLD:   - [On missing page headers for float pages.]
%% OLD:     ``teTex'' under Linux fails in precisely the same way as does
%% OLD:     ``MikTeX'', so there's something clearly wrong somewhere, but
%% OLD:     I don't know where.  It only fails on odd-numbered pages (if
%% OLD:     you remove enough text so that the page floats back to an
%% OLD:     even-numbered page, the page header is correct)!
%% OLD:   - [On ``dedication'' and ``acknowledgements'' causing an error when
%% OLD:      they both appear on the same page.]
%% OLD:     ``teTeX'' and ``MikTeX'' both fail the same way on this one, with
%% OLD:     ``LaTeX error: Something's wrong--perhaps a missing \item.
%% OLD:     Adding a \newpage between the two environments ``fixes'' the
%% OLD:     problem.  Unsure what causes this, but it could be a bug
%% OLD:     common to all x86 platforms...
%% OLD:
%% OLD:  REVISION HISTORY:
%% OLD:
%% OLD:  v1.8: 1999/12/10 (Francois Pitt)
%% OLD:      - Fixed circular definition problem with \currenttextsize
%% OLD:        that caused TeX to run out of input stack memory.
%% OLD:  v1.7: 1999/06/02,1999/05/20,1999/05/13 (Francois Pitt)
%% OLD:      - Minor change to the format of the date printed on every
%% OLD:        page with the ``draft'' option.
%% OLD:      - Minor cosmetic change to the word ``DRAFT'' printed on the
%% OLD:        corners of every page with the ``draft'' option.
%% OLD:      - Made ``draft'' mode doublespaced by default (it just makes
%% OLD:        more sense for actual drafts; suggested by Eric Joanis).
%% OLD:      - Changed \currenttextsize from a ``\newcommand'' to a ``\let''.
%% OLD:      - Added ``known bugs'' above.
%% OLD:  v1.6: 1999/03/06 (Francois Pitt)
%% OLD:      - Minor change: replaced ``\ifx\empty#1\else...\fi'' with
%% OLD:        ``\ifx\empty#1\empty\else...\fi'' (the former works only
%% OLD:        by accident while the latter is logically correct).
%% OLD:  v1.5: 1999/02/17 (Francois Pitt)
%% OLD:      - Fixed missing page numbers and headers by removing
%% OLD:        redefinition of \cleardoublepage (reported by Robert
%% OLD:        Bernecky 1999/02/04 and Nedialko Nedialkov 1999/02/12).
%% OLD:      - Added \clearemptydoublepage and \clearplaindoublepage
%% OLD:        commands.
%% OLD:      - Removed redefinitions of \tableofcontents, \listoftables,
%% OLD:        and \listoffigures because they already call \clearpage
%% OLD:        or \cleardoublepage by default.
%% OLD:      - Removed ``\setcounter{tocdepth}{2}'' from the page layout
%% OLD:        section (moved to ``ut-thesis.tex'' where it belongs).
%% OLD:      - Added \ignore command to comment out parts of a file.
%% OLD:      - Put version macros at the top of the file.
%% OLD:      - Changed order of revision comments.
%% OLD:  v1.4: 1998/11/05 (Francois Pitt)
%% OLD:      - Fixed ``abstract'' environment so that it is really put on a
%% OLD:        separate page, and changed ``\newpage\endgroup'' at the end
%% OLD:        to ``\par\endgroup\newpage'', which is more logical.
%% OLD:      - Changed ``acknowledgements'' environment so that it is *not*
%% OLD:        put on a separate page, allowing users to add other text
%% OLD:        on that page (e.g., ``dedication'' described next).
%% OLD:      - Added ``dedication'' environment based on ``acknowledgements''
%% OLD:        (suggested by Robert Bernecky 98/11/04).
%% OLD:      - Changed page layout so that it is defined in terms of the
%% OLD:        physical page size instead of being hard-coded for letter
%% OLD:        paper (8.5" x 11").
%% OLD:  v1.3: 1998/11/01 (Francois Pitt)
%% OLD:      - Fixed ``thebibliography'' so page headers are generated in
%% OLD:        the same style as for the rest of the thesis.
%% OLD:      - Swapped \endgroup and \newpage in definition of ``abstract''
%% OLD:        and ``acknowledgements'' environments, to fix problem with
%% OLD:        adjusted line spacing in ``abstract''.
%% OLD:      - Renamed ``\currentsize'' to ``\currenttextsize''.
%% OLD:      - Added \cleardoublepage at the end of preliminary sections,
%% OLD:        so that page 1 of main text is on right-hand side.
%% OLD:  v1.2: 1998/10/20 (Francois Pitt)
%% OLD:      - Changed ``spacenotes'' option to ``spacednotes'' to have more
%% OLD:        consistently named options.
%% OLD:      - Fixed spacing between main text and footnotes.
%% OLD:      - Fixed ``singlespaced'' environment, which didn't seem to
%% OLD:        work at all (reported by Nedialko Nedialkov 98/10/12):
%% OLD:        Actually, created a ``newspacing'' environment, which takes
%% OLD:        a parameter, and based ``singlespaced'', ``oneandahalfspaced'',
%% OLD:        and ``doublespaced'' environments on ``newspacing''.
%% OLD:  v1.1: 1998/10/01 (Francois Pitt)
%% OLD:      - Fixed bug that caused footnotes to make following tables
%% OLD:        single-spaced (reported by Philip Edmonds 98/09/30).
%% OLD:      - Made spacing of marginal notes and footnotes the same.
%% OLD:      - Added option to control line spacing of notes.
%% OLD:      - Added options to control the size of margins.
%% OLD:      - Changed names of temporary macros used in redefinitions
%% OLD:        to avoid conflicts with existing names.
%% OLD:  v1.0: 1998/09/29 (Francois Pitt)
%% OLD:      - Initial version.
%% OLD:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  LaTeX2e class file for formatting documents according to the
%%  Graduate Studies' guidelines for theses at the Georgia Institute
%%  of Technology.
%%
%%  USAGE:  \documentclass{gatech-thesis}
%%          \documentclass[...options...]{gatech-thesis}
%%
%%  The default settings produce a final copy, ready for submission
%%  (11pt font, single-sided, double-spaced, normal margins,
%%  with single-spaced notes).
%%
%%  OPTIONS:
%%
%%   - Any standard option for the LaTeX2e ``report'' class, including
%%     ``10pt'', ``11pt'', ``12pt'', ``oneside'', ``twoside'', etc.
%%
%%   - ``singlespaced'', ``oneandahalfspaced'', or ``doublespaced'':  Set
%%     the entire document's default line spacing, except for notes,
%%     which are single-spaced by default.
%%
%%   - ``spacednotes'':  Let the line spacing of notes be determined
%%     by the line spacing of the main document, instead of being
%%     forced single-spaced.
%%
%%   - ``narrowmargins'', ``normalmargins'', ``widemargins'',
%%     ``extrawidemargins'' or ``oldmargins'':  Set the size of
%%     the margins, as follows:
%%      . ``normal'': 1 1/2" on left, 1" on top, right and bottom
%%        headers & footers 1/4" from body;
%%        - This is the Georgia Tech standard
%%      . ``narrow'': 1 1/4" on the left, 3/4" on all other sides,
%%        headers & footers 1/4" from body;
%%      . ``wide'': 1 1/4" on all sides, headers & footers 3/4" from
%%        body;
%%      . ``extrawide'': 1 1/2" on all sides, headers & footers 3/4"
%%        from body.
%%      . ``oldmargins'': 1 1/2" on left and top, 1" on right and bottom
%%        headers & footers 1/2 from body;
%%        adds 2"" extra space from top of page, on the first
%%        page of a chapter or appendix.
%%        - This is the OLD Georgia Tech standard
%%     (If you have more than just a few marginal notes, it is
%%     recommended that you use ``wide'' or ``extrawide'' margins.)
%%     Use ``normalmargins'' (the default) for the approved GT format.
%%
%%   - ``draft'':  Produce a draft copy (10pt font, double-sided,
%%     double-spaced, normal margins, with the word "DRAFT" printed
%%     at all four corners of every page, and current date printed in
%%     a running footer).
%%
%%   - ``hyperref'': Indicates that the document will \usepackage{hyperref}.
%%     This is a kludge, but I didn't want to explicitly *require*
%%     hyperref, so we must indicate to gatech-thesis.cls whether it should
%%     define certain hyperref commands as dummies.  ALWAYS use this
%%     option if you use the hyperref package.  NEVER use this option if
%%     you do not also use the hyperref package.
%%
%%  Note that these options can be used to override the default or
%%  draft document settings, so that it is possible, for example,
%%  to create a double-sided final copy, or a 1 1/2-spaced draft
%%  copy with wide margins, etc.  Also note that when producing
%%  double-sided documents, new chapters and preliminary sections
%%  will always start on a right-hand page under the default
%%  settings (inserting a blank page if needed), but not if the
%%  ``draft'' option was used.  (This can be overriden by using the
%%  ``openany'' or ``openright'' options.  To achieve this effect for
%%  individual sections or chapters, use the \cleardoublepage
%%  command.)  Note that the blank page inserted in these cases will
%%  still contain the header and page number that is present on all
%%  pages.  For ``empty'' or ``plain'' pages, explicitly use one of the
%%  commands \clearemptydoublepage (totally blank inserted pages),
%%  \clearplaindoublepage (blank except for page number at bottom), or
%%  \cleartcplainfdoublepage (blank except for page number at Top
%%  Corner (hence, TCplain).  You can also explicitly use
%%  \cleargtthesisdoublepage (but I don't know why you would, since this
%%  only makes sense if the current pagestyle is already gtthesis, and
%%  if that is the case then you're better off just using \cleardoublepage.
%%
%%  NEW ENVIRONMENTS and COMMANDS:
%%   in some cases, there will be two commands with identical
%%   effect.  These are usually because one is needed to maintain
%%   compatibility with documents that expect the old macros from
%%   GTthesis.sty.
%%
%%   * \title{...}:  (preamble only; REQUIRED)
%%
%%   * \author{...}:  (preamble only; REQUIRED)
%%     Specify the name of the author.
%%
%%   * \department{...}:    (preamble only; REQUIRED)
%%   * \dept{...}:          compatibility synonym
%%     Specify the name of the graduate department.
%%
%%   * \major{...}:  (preamble only; REQUIRED if \listmajortrue is set)
%%
%%   * \degree{...}:  (preamble only; REQUIRED)
%%     Specify the name of the degree (e.g., "Doctor of Philosophy").
%%
%%   * \gradyear{...}:      (preamble only; REQUIRED)
%%   * \copyrightyear{...}: compatibility synonym
%%     Specify the year of graduation (defaults to current year).
%%
%%   * \principaladvisor{...}:  (preamble only; OPTIONAL)
%%     (or \principaladviser{...}, if you prefer advisor spelled with an e)
%%
%%   * \committeechair{...}: (preamble only; OPTIONAL)
%%
%%   * \firstreader{...}:    (preamble only; OPTIONAL)
%%   * \secondreader{...}:   (preamble only; OPTIONAL)
%%   * \thirdreader{...}:    (preamble only; OPTIONAL)
%%   * \fourthreader{...}:   (preamble only; OPTIONAL)
%%   * \fifthreader{...}:    (preamble only; OPTIONAL)
%%   * \sixthreader{...}:    (preamble only; OPTIONAL)
%%
%%   * \submitdate{month year in which submitted}
%%     date is LaTeX'd if not specified
%%   * \approveddate{month, day, and year on which the last committee
%%      member signs the thesis form} (preamble only; REQUIRED)
%%
%%   * \titlepagetrue or \titlepagefalse
%%     - produce or don't produce a title page (TRUE by default)
%%
%%   * \signaturepagetrue or \signaturepagefalse
%%     - produce or don't produce a signature page (TRUE by default)
%%
%%   * \copyrighttrue or \copyrightfalse
%%     - place or don't place a copyright notice on the title page (FALSE by default)
%%
%%   * \figurespagetrue or \figurespagefalse
%%     - produce or don't produce a List of Figures page (TRUE by default)
%%
%%   * \tablespagetrue or \tablespagefalse
%%     - produce or don't produce a List of Tables page (TRUE by default)
%%
%%   * \contentspagetrue or \contentspagefalse
%%     - produce or don't produce a Table of Contents page (TRUE by default)
%%
%%   * \bibpagetrue or \bibpagefalse
%%     - produce or don't produce a Bibliography page (TRUE by default)
%%
%%   * \thesisproposaltrue or \thesisproposalfalse
%%     - indicate "Thesis Proposal" or "Thesis" on the title page (FALSE by default)
%%
%%   * \dedicationheadingtrue or \dedicationheadingfalse
%%     - display ``DEDICATION'' heading on the dedication page (FALSE by default)
%%
%%   * \dedicationtop and \dedicationbottom
%%     - The Graduate Office Guidelines say that the dedication should be centered
%%       on the page.  By default, this is done -- but IMO it looks ugly.  The
%%       vertical spacing above and below your text is proided by these two
%%       macros; redefined them if you want to do something different.  E.g.
%%       this looks nice:
%%         \renewcommand{\dedicationtop}{\vspace*{\stretch{1}}
%%         \renewcommand{\dedicationbottom{\vspace*{\stretch{3}}
%%       which places the dedication about 1/4 of the way down the page.
%%
%%   * \strictmarginstrue or \strictmarginsfalse
%%     - if true, then obey the margin rules EVEN on the title and signature
%%       page. Default TRUE and REQUIRED by Graduate Studies Office, but
%%       not very appealing.  (under ``oldmargins'' an extra 50p spacing is
%%       added so that the title page looks like the chapter headings
%%       In any case, \strictmarginsfalse looks better for personal copies
%%       but \strictmarginstrue is necessary for official ones.
%%
%%   * \multivolumetrue or \multivolumefalse
%%     - if true, indicates that the thesis will span multiple volumes.
%%       triggers automatic generation of the first volume title page
%%       (in addition to the ``entire work'' title page), but it's up
%%       to you to place the ``part{}'' commands in the appropriate
%%       locations for volume 2, volume 3, etc.
%%
%%   * \listmajortrue or \listmajorfalse
%%     - If true, puts ``In Partial Fulfillment...[degree] in
%%       [major]'' on the title page and then puts the department down
%%       with Georgia Institute of Technology at the bottom of the
%%       page. If false, puts ``In Partial Fulfillment...[degree] in
%%       the [department]'' on the title page.
%%
%%   * \dissertationtrue or \dissertationfalse
%%     - If true, uses the word ``Dissertation'' on the title page. If
%%       false, uses ``thesis''.
%%
%%   * \bibfiles{...}
%%    Set the list of bibfiles to use when generating a bibliography
%%
%%   - \linespacing{...}:  (preamble only)
%%   - \spacing{...}:      compatibility synonym
%%     Set the interline spacing directly, overriding document
%%     defaults and options; note that in order to get the correct
%%     appearance, the argument to \linespacing must be equal to
%%     1/3 + 2/3 times the desired line spacing (for example,
%%        single-spaced = \linespacing{1},
%%         1 1/2-spaced = \linespacing{1.25}, and
%%        double-spaced = \linespacing{1.66}).
%%
%%   - ignore{...}:
%%   - comment{...}:     compatibility synonym
%%     Ignore the part of the file between { and } (can include
%%     paragraph breaks); useful for commenting out large blocks.
%%
%%   - \clearemptydoublepage, \clearplaindoublepage,
%%     \cleartcplaindoublepage, \cleargtthesisdoublepage
%%     Same as \cleardoublepage except that it sets the pagestyle of
%%     any inserted blank page to ``empty'' ``plain'' ``tcplain'' or
%%     ``gtthesis'' respectively.
%%
%%   - \begin{preliminary}...\end{preliminary}:
%%     Delimit head matter (title page, abstract, table of contents,
%%     lists of tables and figures, etc.): set the page style and
%%     numbering for the preliminary sections and reset them for the
%%     main document.
%%    + Alternatively, at the appropriate spots call the synonums
%%      \beforepreface and \afterpreface.  These ``synonyms'' do
%%      the same setup tasks as \begin{preliminary} and \end{preliminary},
%%      but they don't create an ``environment.  The use of these
%%      synonyms is NOT recommended for new documents and are provided
%%      only for backward compatibility.
%%
%%      - \beforepreface:
%%        Sets pagestyle and generates titlepage (via \maketitle)
%%        and signature page (via \makesignature) if indicated.
%%        DON'T call directly in new documents.  Use \begin{preliminary}
%%        instead.
%%
%%      - \afterpreface:
%%        Sets pagestyle back to normal, restarts page numbering
%%        DON'T call directly in new documents.  Use \end{preliminary}
%%        instead.
%%
%%      - \maketitle:
%%        Generate the title page from the information supplied
%%        in the preamble.  Called automatically by \begin{preliminary}
%%        or \beforepreface.
%%
%%      - \makesignature:
%%        Generate a signature page from information supplied
%%        in the preamble.  Called automatically by \begin{preliminary}
%%        or \beforepreface.
%%
%%      - \begin{dedication}...\end{dedication}:
%%        Generate a dedication section, if needed.
%%
%%      - \begin{acknowledgements}...\end{acknowledgements}:
%%        Generate an acknowledgements section, if needed.
%%
%%      - \begin{abstract}...\end{abstract}:
%%        Generate the abstract page.
%%
%%      - \begin{summary}...\end{summary}:
%%        Generate a summary page (same as abstract, but different
%%        heading)
%%
%%      - \begin{preface}...\end{preface}:
%%        Generate a preface section, if needed.
%%
%%      - \prefacesection{other-title}{...text...}
%%        Used to specify frontmatter sections that do not have
%%        custom environments defined for them above.
%%
%%      - \contents
%%        Prints table of contents, list of figures, and list of
%%        tables as indicated by \contentspagetrue, \figurespagetrue,
%%        and \tablespagetrue
%%
%%      - Modifying the look of the Table of Contents:
%%
%%        + \labelchaptersintableofcontents
%%          inserts an entry into the TOC that says ``CHAPTERS'' just
%%          before Chapter 1.
%%
%%        + \labelappendicesintableofcontents
%%          inserts an entry into the TOC that says ``APPENDICES'' just
%%          before Appendix A.
%%
%%        + \settocstring
%%          change the name used for the Table of Contents (def: 'Table of Contents')
%%
%%        + \setlofstring
%%          change the name used for the List of Figures (def: 'List of Figures')
%%
%%        + \setlotstring
%%          change the name used for the List of Tables (def: 'List of Tables')
%%
%%        + \setchaptertocdepth
%%          set the default for how ``deep'' to number within chapters
%%          in the table of contents.
%%
%%        + \setappendixtocdepth
%%          set the default for how ``deep'' to number within appendices
%%          (chapter{}'s after the \appendix command) in the table of
%%          contents
%%
%%        + \settocdepth
%%          temporarily change how "deep" to number in the table of
%%          contents for current chapter/section.  For example, you
%%          usually include \section{}'s in the TOC (\setchaptertocdepth{1})
%%          but in chapter 5 you want to include subsection as well:
%%          \chapter{This is Chapter 5}\settocdepth{2}.  In cahapter 6 the
%%          default depth of 1 is reasserted.
%%
%%         You should never need to call \setcounter{tocdepth}{..} directly.
%%         0 = chapter only
%%         1 = chapter + sections
%%         2 = chapter, section, subsection
%%         3 = chapter, section, subsection, subsubsection
%%
%%     OLD recommended structure (GTthesis.sty) for frontmatter:
%%     \begin{document}
%%        \beforepreface
%%            \prefacesection{Dedication}dedication text...
%%            \prefacesection{Preface}preface text...
%%            \prefacesection{Acknowledgements}acknowledgement text...
%%            \contents  % print table of contents, figures and tables here.
%%            \prefacesection{Summary}summary text
%%        \afterpreface
%%
%%     NEW recommended structure for frontmatter:
%%     \begin{document}
%%       \begin{preliminary}
%%         \begin{dedication}...\end{dedication}
%%         \begin{preface}...\end{preface}
%%         \begin{acknowledgements}...\end{acknowledgements}
%%         \contents
%%         \begin{summary}...\end{summary}
%%       \end{preliminary}
%%
%%    The old method still works, but the new method is preferred
%%    for new documents.
%%
%%   - \begin{longquote}...\end{longquote}:
%%     Single-spaced version of the ``quote'' environment.
%%
%%   - \begin{longquotation}...\end{longquotation}:
%%     Single-spaced version of the ``quotation'' environment.
%%
%%   - \begin{singlespaced}...\end{singlespaced}:
%%     Format single-spaced paragraphs.
%%
%%   - \begin{oneandahalfspaced}...\end{oneandahalfspaced}:
%%     Format 1 1/2-spaced paragraphs.
%%
%%   - \begin{doublespaced}...\end{doublespaced}:
%%     Format double-spaced paragraphs.
%%
%%   - \begin{newspacing}{<n>}...\end{newspacing}:
%%     Format paragraphs with an interline spacing of ``n''.
%%
%%  (Note that the last four environments can be used to change the
%%  default line spacing of any enclosed text, including figures,
%%  tables, abstract or acknowledgement pages, table of contents,
%%  etc.)
%%
%%   - \appendix: a global mode switch (just like the report class).
%%     changes the way ``chapter'' headings and TOC entries are
%%     generated.
%%       \chapter{last chapter titled}...
%%       \appendix
%%       \chapter{first appendix title}...
%%
%%   - \begin{postliminary}...\end{postliminary}:
%%     Delimit end matter (bibliography, vita, etc).
%%    + Alternatively, call the synonyms
%%      \beforepostface and \afterpostface instead.  These
%%      synonyms are provided for backward compatibility with
%%      GTthesis.sty; their use is not recommended for new documents.
%%
%%      - \beforepostface:
%%        Not recommended for new documents. Use \begin{postliminary}
%%        instead
%%
%%      - \afterpreface:
%%        Not recommended for new documents. Use \end{postliminary}
%%        instead
%%
%%      - \begin{vita}...\end{vita}:
%%        Generate a vita page
%%
%%      - \references:
%%        Generate bibliography if indicated by bibliographytrue
%%        NOTE: you must set \bibpagetrue AND \bibfiles{file1,file2,...}
%%        in the preample, AND you must set \bibliographystyle{...} just
%%        after \begin{document}.  Otherwise \references won't work.
%%
%%      - \postfacesection{other-title}{...text...}
%%        Used to specify endsections that do not have
%%        custom environments defined for them above.
%%
%%     OLD recommended structure (GTthesis.sty) for endmatter:
%%     \beforepostface
%%       \postfacesection{Vita}vita text...
%%     \afterpostface
%%
%%     NEW recommended structure for frontmatter:
%%     \begin{postliminary}
%%       \references
%%       \begin{vita}...\end{vita}
%%     \end{postliminary}
%%
%%    The old method still works, but the new method is preferred
%%    for new documents.
%%
%%    - Modifying the look of the document
%%
%%      + \setbodypagestyle{x}, where x = plain, empty, headings,
%%        myheadings, gtthesis, or tcplain.  plain is the default).
%%      + \setfrontpagestyle{x} - set pagestyle for frontmatter
%%      + \setbackpagestyle{x}   - set pagestyle for endmatter
%%
%%        - The Graduate Studies Office approved pagestyle is
%%          plain for the body, as well frontmatter and endmatter
%%          (However, pages are numbered with roman numberals in
%%          the frontmatter and automatically switch to arabic
%%          numbers in the body and endmatter, as required by GSO.
%%          Don't try to change the pagenumbering style).  However:
%%        - gtthesis adds a running header on each page identifying
%%          the Chapter (and Section for twopage layouts).  This
%%          is a nice touch IMO for the body and endmatter, but
%%          use it ONLY for personal copies.
%%        - note that you also need to add \pagestyle{gtthesis}
%%          if you use \setbodypagestyle{gtthesis}.
%%
%%      + Chapter headings and the TOC use ROMAN numerals, but
%%        the running headers at the top of each page use ARABIC
%%        numbers for the Chapter number.  Thus, there are two
%%        separate formats that are used.
%%
%%        - \thegtchapter is used for ROMAN chapter numbers
%%        - \thechapter is used for ARABIC chapter numbers
%%
%%        If you wish all chapter headings to use ROMAN, then just
%%        redefine \thechapter in your document:
%%          \renewcommand{\thechapter}{\thegtchapter}
%%        Do the reverse for all ARABIC chapter numbers:
%%          \renewcommand{\thegtchapter}{\thechapter}
%%
%%  This archive provides two different examples of use -- the
%%  companion file ``gatech-thesis.tex'' contains a skeleton
%%  illustrating the use of this class.   In addition, the jules-verne*
%%  companion files contain a more lengthy, multi-file example.
%%  Finally, a much abbreviated version of gatech-thesis.txt
%%  appears directly below, in this file.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  Example of use:
%%    \documentclass[11pt,twopage,oneandahalfspaced,normalmargins]{gatech-thesis}
%%
%%    (Then, use the following commands for various thesis elements, as follows)
%%
%%    \title{How to Write Theses\\
%%           With Two Line Titles}
%%    \author{John Henry Candidate}
%%    \bibfiles{litserch,oodb}
%%    \principaladviser{John Parker}
%%    \committeechair{Jack Sprat}
%%    \firstreader{John Green}
%%    \secondreader{John BigBooty\\(Another Department)}
%%    \thirdreader{...}
%%    \fourthreader{...}
%%    \department{School of Electrical and Computer Engineering}
%%    \degree{Doctor of Philosophy}
%%    \copyrightyear{2001}
%%    \thesisproposalfalse
%%    \contentspagetrue
%%    \figurespagetrue
%%    \tablespagefalse
%%    \bibpagetrue
%%    \titlepagetrue
%%    \dedicationheadingfalse
%%    \signaturepagetrue
%%    \submitdate{January 2001}
%%
%%    \begin{document}
%%       \bibliographystyle{gatech-thesis}
%%       \begin{preliminary}
%%          \begin{preface}
%%            This thesis tells you all you need to know about...
%%           \end{preface}
%%           \contents  % print table of contents, figures and tables here.
%%           \begin{acknowledgements}
%%              I would like to thank...
%%           \end{acknowledgements}
%%       \end{preliminary}
%%       \chapter{Introduction}
%%             ...
%%       \chapter{Conclusions}
%%             ...
%%       \appendix
%%       \chapter{A Long Proof}
%%             ...
%%       \begin{postliminary}
%%          \references
%%          \postfacesection{Index}{%
%%             ... generate an index here
%%          }
%%          \begin{vita}
%%             ... was born in ...
%%          \end{vita}
%%       \end{postliminary}
%%    \end{document}
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%        IDENTIFICATION        %%%%%%%%%%%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{gatech-thesis}
       [\gtthesisupdated\space\gtthesisversion\space(Mitchel T. Keller)]%
\RequirePackage{calc}% part of LaTeX tools bundle
%\RequirePackage{lastpage}

\def\gtthesis@checkVersion#1{\edef\reserved@a{#1}%
 \ifx \gatechthesis@version \reserved@a
   \expandafter\@gobble
 \else
   \expandafter\@firstofone
 \fi}
\xdef\gatechthesis@version{\gtthesisversion}

%%%%%%%%%%%%         INITIAL CODE         %%%%%%%%%%%%

%% To comment out parts of a file.
%
\newcommand{\ignore}[1]{}
\newcommand{\comment}[1]{}

%% Switch for testing draft mode (toggled by ``draft'' option).
%
\newif\if@draft
\@draftfalse % initially false by default

%% Switch for testing current page style.
%
\newif\if@tcpage
% no default value (set by \pagestyle)
% indicates that page numbers are in the upper corners

%% Switch for testing line spacing of notes.
%
\newif\if@singlespacednotes
\@singlespacednotestrue % initially true by default

%% Switch for testing the hyperref option
%
\newif\if@hyperref
\@hyperreffalse % initially false by default

%% Macro for testing the size of margins.
%
\newcommand{\@marginsize}{}

%% Because of the draft option, and to allow users to override
%% defaults, we don't want to be passing conflicting options back to
%% the report class, so we define our own temporary toggles holding
%% the most recent setting for each of four basic options: point size,
%% number of page sides, whether new chapters open on right-hand pages
%% or on any page, and line spacing.  These toggles will be set from
%% the corresponding options below.
%
\newcommand{\@thesisptsz}{}
\newcommand{\@thesisside}{}
\newcommand{\@thesisopen}{}
\newcommand{\@thesislnsp}{}


%%%%%%%%%%%%      OPTION DECLARATION      %%%%%%%%%%%%

%% ``draft'' option: change default document settings.
%
\DeclareOption{draft}{\@drafttrue
  \typeout{Gatech-Thesis Class Option: ``draft''}
  \ExecuteOptions{10pt,twoside,openany,doublespaced,normalmargins}
  \PassOptionsToClass{draft}{report}
  %% Macros for printing "DRAFT" at the corners of a page.
  \newcommand{\tlDRAFT}%
    {\raisebox{ 3ex}[0pt][0pt]{\llap{\sffamily\scriptsize DRAFT\ \ }}}
  \newcommand{\trDRAFT}%
    {\raisebox{ 3ex}[0pt][0pt]{\rlap{\sffamily\scriptsize \ \ DRAFT}}}
  \newcommand{\blDRAFT}%
    {\raisebox{-3ex}[0pt][0pt]{\llap{\sffamily\scriptsize DRAFT\ \ }}}
  \newcommand{\brDRAFT}%
    {\raisebox{-3ex}[0pt][0pt]{\rlap{\sffamily\scriptsize \ \ DRAFT}}}
}%DeclareOption{draft}

%% ``spacednotes'' option: make notes share the line spacing of the rest
%% of the document.
%
\DeclareOption{spacednotes}{\@singlespacednotesfalse}

%% Margin options: change the size of margins.
%% choose normalmargins option for Georgia Tech thesis format
%
\DeclareOption{narrowmargins}{\renewcommand{\@marginsize}{0}}
\DeclareOption{normalmargins}{\renewcommand{\@marginsize}{1}}
\DeclareOption{widemargins}{\renewcommand{\@marginsize}{2}}
\DeclareOption{extrawidemargins}{\renewcommand{\@marginsize}{3}}
\DeclareOption{oldmargins}{\renewcommand{\@marginsize}{4}}

%% Point Size options: change current setting.
%
\DeclareOption{10pt}{\renewcommand{\@thesisptsz}{10pt}}
\DeclareOption{11pt}{\renewcommand{\@thesisptsz}{11pt}}
\DeclareOption{12pt}{\renewcommand{\@thesisptsz}{12pt}}

%% Number of Page Sides options: change current setting.
%
\DeclareOption{twoside}{\renewcommand{\@thesisside}{twoside}}
\DeclareOption{oneside}{\renewcommand{\@thesisside}{oneside}}

%% New Chapter Openings options: change current setting.
%
\DeclareOption{openany}{\renewcommand{\@thesisopen}{openany}}
\DeclareOption{openright}{\renewcommand{\@thesisopen}{openright}}

%% Line Spacing options: change current setting.
%
\DeclareOption{singlespaced}{\renewcommand{\@thesislnsp}{1}}
\DeclareOption{oneandahalfspaced}{\renewcommand{\@thesislnsp}{1.25}}
\DeclareOption{doublespaced}{\renewcommand{\@thesislnsp}{1.66}}

%% STUPID HACK for hyperref, \@chapter, and \MakeUppercase
%
\newcommand{\Makeuppercase}[1]{\MakeUppercase{#1}}
\DeclareOption{hyperref}{%
 \@hyperreftrue
%  \renewcommand{\Makeuppercase}[1]{%
%    \ifHy@pdfstring#1\else\MakeUppercase{#1}\fi}
}

%% All other options are passed to the base class directly.
%
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}


%%%%%%%%%%%%       OPTION EXECUTION       %%%%%%%%%%%%

%% Default settings.
%
\ExecuteOptions{11pt,letterpaper,oneside,%
openright,doublespaced,normalmargins,final}
%
%% Process options.
%
\ProcessOptions


%%%%%%%%%%%%       PACKAGE  LOADING       %%%%%%%%%%%%

%% Load base class using current setting for basic options.
%
\LoadClass[\@thesisptsz,\@thesisside,\@thesisopen]{report}


%% From lastpage package. Used to generate abstract.
%% Lastpage is written by Jeff Goldberg ([email protected])
%% It is relased under the GPL (version 2)

\def\lastpage@putlabel{\addtocounter{page}{-1}%
  \immediate\write\@auxout{\string
  \newlabel{LastPage}{{}{\thepage}{}{}{}}}%
  \addtocounter{page}{1}}


%%%%%%%%%%%%          MAIN  CODE          %%%%%%%%%%%%

\if@hyperref
\else
 \newcommand{\phantomsection}{}% helps with hyperref.  \phantomsection
%                                 is provided by pdflatex, but not latex.
 \newcommand{\texorpdfstring}[2]{#1}%
 \def\pdfbookmark[#1]#2#3{}%
\fi

%%%%%%    Line Spacing
%
%% \linespacing is used to define the default line spacing.
%% for the entire document. If the argument is less than
%% 1.25 (for 1.5-spaced) a warning message is displayed
%% when not in draft mode.
%%
%% Don't use this command for temporary, localized changes.
%% Instead, use the ``spacing environments'':
%%    \begin{singlespace}      ...\end{singlespaced}
%%    \begin{oneandahalfspaced}...\end{oneandahalfspaced}
%%    \begin{doublespaed}      ...\end{doublespaced}
%%    \begin{longquote}        ...\end{longquote}
%%    \begin{longquotation}    ...\end{longquotation}
%%    \begin{newspacing}{x.xx} ...\end{newspacing}
%
\newcommand{\linespacing}[1]{%
 \gdef\@spacing{#1}
 \newlinestretch{#1}\if@draft\else\ifdim #1pt < 1.25pt\typeout
  {Gatech-Thesis Class Warning: line spacing less than 1 1/2}\fi\fi
}
%
%% \spacing is a clone of \linespacing, retained for backwards
%% compatibility with GTthesis.sty
%
\newcommand{\spacing}[1]{%
 \gdef\@spacing{#1}
 \newlinestretch{#1}\if@draft\else\ifdim #1pt < 1.25pt\typeout
 {Gatech-Thesis Class Warning: line spacing less than 1 1/2}\fi\fi
}
\def\@spacing{1.66}

%
%% ``longquote'' and ``longquotation'' produce single-spaced quotes, while
%% ``newspacing'' encloses paragraphs with a different line spacing,
%% such as ``singlespaced'', ``oneandahalfspaced'', or ``doublespaced''.
%
\newenvironment{longquote}%
 {\begin{quote}\newlinestretch{1}}{\end{quote}}
\newenvironment{longquotation}%
 {\begin{quotation}\newlinestretch{1}}{\end{quotation}}
\newenvironment{singlespaced}%
 {\begin{newspacing}{1}}{\end{newspacing}}
\newenvironment{oneandahalfspaced}%
 {\begin{newspacing}{1.25}}{\end{newspacing}}
\newenvironment{doublespaced}%
 {\begin{newspacing}{1.66}}{\end{newspacing}}
\newenvironment{newspacing}[1]%
 {\par\begingroup\newlinestretch{#1}}%
 {\par\vskip\parskip\vskip\baselineskip\endgroup
  \vskip-\parskip\vskip-\baselineskip}

%
%% To change the actual line spacing.
%
\newcommand{\newlinestretch}[1]%
 {\renewcommand{\baselinestretch}{#1}\currenttextsize}

%
%% To keep track of the current text size.
%
\let\currenttextsize=\normalsize
%
%% Redefine size-changing commands to update \currenttextsize.
%
\let\tmp@tiny=\tiny
\renewcommand{\tiny}%
 {\let\currenttextsize=\tmp@tiny\tmp@tiny}
\let\tmp@scriptsize=\scriptsize
\renewcommand{\scriptsize}%
 {\let\currenttextsize=\tmp@scriptsize\tmp@scriptsize}
\let\tmp@footnotesize=\footnotesize
\renewcommand{\footnotesize}%
 {\let\currenttextsize=\tmp@footnotesize\tmp@footnotesize}
\let\tmp@small=\small
\renewcommand{\small}%
 {\let\currenttextsize=\tmp@small\tmp@small}
\let\tmp@normalsize=\normalsize
\renewcommand{\normalsize}%
 {\let\currenttextsize=\tmp@normalsize\tmp@normalsize}
\let\tmp@large=\large
\renewcommand{\large}%
 {\let\currenttextsize=\tmp@large\tmp@large}
\let\tmp@Large=\Large
\renewcommand{\Large}%
 {\let\currenttextsize=\tmp@Large\tmp@Large}
\let\tmp@LARGE=\LARGE
\renewcommand{\LARGE}%
 {\let\currenttextsize=\tmp@LARGE\tmp@LARGE}
\let\tmp@huge=\huge
\renewcommand{\huge}%
 {\let\currenttextsize=\tmp@huge\tmp@huge}
\let\tmp@Huge=\Huge
\renewcommand{\Huge}%
 {\let\currenttextsize=\tmp@Huge\tmp@Huge}
%
%% Make notes single-spaced if ``spacednotes'' option was not given.
%% Note that this does _not_ change the spacing of figures or tables.
%
\if@singlespacednotes
%% Make footnotes single-spaced.
\let\tmp@@footnotetext=\@footnotetext
\renewcommand{\@footnotetext}[1]%
 {{\newlinestretch{1}\tmp@@footnotetext{#1}}}
%% Make footnotes inside a minipage single-spaced.
\let\tmp@@mpfootnotetext=\@mpfootnotetext
\renewcommand{\@mpfootnotetext}[1]%
 {{\newlinestretch{1}\tmp@@mpfootnotetext{#1}}}
%% Make marginal notes single-spaced.
\let\tmp@@marginparreset=\@marginparreset
\renewcommand{\@marginparreset}%
 {\newlinestretch{1}\tmp@@marginparreset}
\fi%@singlespacednotes
%
%%%%%%    New formatting environments and commands.
%
%% \begin{preliminary} sets the pagestyle and pagenumbering
%% (roman numeral format ) for the preliminary sections;
%% It also calls \beforepreface to create the title page
%% and signature page if indicated by \titlepagetrue and/or
%% \signaturepageture.
%%
%% \end{preliminary} resets the pagenumbering. To start page
%% numbering in arabic format, use \pagestyle{plain} and
%% \pagenumbering{arabic} after the preliminary environment block
%
\newenvironment{preliminary}%
 {
   \newlinestretch{1.0}%
   \pagenumbering{roman}%
   \pagestyle{\front@pagestyle}%
   \iftitlepage%
     \maketitle%
   \fi%
   \ifmultivolume%
     \part{}%
   \fi%
   \ifsignaturepage%
     \makesignature%
   \fi%
   \newlinestretch{\@spacing}%
 }%
 {%
   \if@draft%
   \else%
     \if@twoside%
       \if@openright%
         \cleardoublepage%
       \fi%
     \fi%
   \fi%
   \newpage%
   \pagenumbering{arabic}%
   \pagestyle{\body@pagestyle}%
   \newlinestretch{\@spacing}%
 }%

%%%%%%    Front Matter Parameters
%
%% The following commands set the respective field values so we
%% can generate the title page, signature page, and abstract
%% page automatically
%
\renewcommand{\author}[1]%
 {\ifx\empty#1\empty\else\gdef\@author{#1}\fi}
\renewcommand{\title}[1]%
 {\ifx\empty#1\empty\else\gdef\@title{#1}\fi}

\newcommand{\degree}[1]%
 {\ifx\empty#1\empty\else\gdef\@degree{#1}\fi}
%
%% Is this a thesis, or a thesis proposal ?
%
\newif\ifthesisproposal
\thesisproposalfalse % default to thesis, not thesis proposal

%
%% Is this a thesis or a dissertation?
%
\newif\ifdissertation
\dissertationfalse % default to thesis

%
%% Do we list the major in the ``Partial Fulfillment'' block or the department?
%
\newif\iflistmajor
\listmajorfalse % default to listing the department

\newcommand{\major}[1]%
  {\ifx\empty#1\empty\else\gdef\@major{#1}\fi}

%
%% \department and \dept are synonymous
%
\newcommand{\department}[1]%
 {\ifx\empty#1\empty\else\gdef\@department{#1}\gdef\@dept{#1}\fi}
\newcommand{\dept}[1]%
 {\ifx\empty#1\empty\else\gdef\@department{#1}\gdef\@dept{#1}\fi}
%
%% date stuff
%% \gradyear and \copyrightyear are synonymmous
%
\newcommand{\gradyear}[1]%
 {\ifx\empty#1\empty\else\gdef\@gradyear{#1}\gdef\@copyrightyear{#1}\fi}
\newcommand{\copyrightyear}[1]%
 {\ifx\empty#1\empty\else\gdef\@gradyear{#1}\gdef\@copyrightyear{#1}\fi}
\newcommand{\submitdate}[1]%
 {\ifx\empty#1\empty\else\gdef\@submitdate{#1}\fi}
\newcommand{\approveddate}[1]%
 {\ifx\empty#1\empty\else\gdef\@approveddate{#1}\fi}
%
%% use \principaladviser{} or \principaladvisor{}.  Choice also
%% sets the default spelling of ``advisor/adviser''.
%
\def\advis@r{Advisor} % default spelling

% Define \principaladvisor{} to take two optional arguments after the
% name. Thus, the usage is
%    \principaladvisor{Advisor Name}[Advisor Unit][Advisor Institution]
% Advisor Unit defaults to \@department and Advisor Institution
% defaults to Georgia Institute of Technology.
\newcommand{\principaladvisor}[1]{%
 \@ifnextchar[{\principaladvisor@i{#1}}{\principaladvisor@i{#1}[\@department]}%]
}
\def\principaladvisor@i#1[#2]{%
 \@ifnextchar[{\principaladvisor@ii{#1}[#2]}{\principaladvisor@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\principaladvisor@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\def\@advisorforabstract{#1}%
   \rightappenditem#1\to\@principaladvisor%
   \rightappenditem#2\to\@principaladvisor%
   \rightappenditem#3\to\@principaladvisor%
   \fi
}

% Define \principaladviser{} to take two optional arguments after the
% name. Thus, the usage is
%    \principaladviser{Adviser Name}[Adviser Unit][Adviser Institution]
% Adviser Unit defaults to \@department and Adviser Institution
% defaults to Georgia Institute of Technology.
\newcommand{\principaladviser}[1]{%
 \@ifnextchar[{\principaladviser@i{#1}}{\principaladviser@i{#1}[\@department]}%]
}
\def\principaladviser@i#1[#2]{%
 \@ifnextchar[{\principaladviser@ii{#1}[#2]}{\principaladviser@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\principaladviser@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\def\@advisorforabstract{#1}%
   \rightappenditem#1\to\@principaladvisor%
   \rightappenditem#2\to\@principaladvisor%
   \rightappenditem#3\to\@principaladvisor%
   \gdef\advis@r{Adviser}%
   \fi
}

%
%% Committee Chair
%
% Define \committeechair{} to take two optional arguments after the
% name. Thus, the usage is
%    \committeechair{Name}[Unit][Institution]
% Unit defaults to \@department and Institution defaults to Georgia
% Institute of Technology.
\newcommand{\committeechair}[1]{%
 \@ifnextchar[{\committeechair@i{#1}}{\committeechair@i{#1}[\@department]}%]
}
\def\committeechair@i#1[#2]{%
 \@ifnextchar[{\committeechair@ii{#1}[#2]}{\committeechair@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\committeechair@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@committeechair%
   \rightappenditem#2\to\@committeechair%
   \rightappenditem#3\to\@committeechair%
   \fi
}

%
%% readers
%
% Define \{first|second|third|fourth|fifth|sixth}reader{} to take two
% optional arguments after the name. Thus, the usage is
%    \*reader{Reader Name}[Reader Unit][Reader Institution]
% Reader Unit defaults to \@department and Reader Institution
% defaults to Georgia Institute of Technology.
\newcommand{\firstreader}[1]{%
 \@ifnextchar[{\firstreader@i{#1}}{\firstreader@i{#1}[\@department]}%]
}
\def\firstreader@i#1[#2]{%
 \@ifnextchar[{\firstreader@ii{#1}[#2]}{\firstreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\firstreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@firstreader%
   \rightappenditem#2\to\@firstreader%
   \rightappenditem#3\to\@firstreader%
   \fi
}

\newcommand{\secondreader}[1]{%
 \@ifnextchar[{\secondreader@i{#1}}{\secondreader@i{#1}[\@department]}%]
}
\def\secondreader@i#1[#2]{%
 \@ifnextchar[{\secondreader@ii{#1}[#2]}{\secondreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\secondreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@secondreader%
   \rightappenditem#2\to\@secondreader%
   \rightappenditem#3\to\@secondreader%
   \fi
}

\newcommand{\thirdreader}[1]{%
 \@ifnextchar[{\thirdreader@i{#1}}{\thirdreader@i{#1}[\@department]}%]
}
\def\thirdreader@i#1[#2]{%
 \@ifnextchar[{\thirdreader@ii{#1}[#2]}{\thirdreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\thirdreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@thirdreader%
   \rightappenditem#2\to\@thirdreader%
   \rightappenditem#3\to\@thirdreader%
   \fi
}

\newcommand{\fourthreader}[1]{%
 \@ifnextchar[{\fourthreader@i{#1}}{\fourthreader@i{#1}[\@department]}%]
}
\def\fourthreader@i#1[#2]{%
 \@ifnextchar[{\fourthreader@ii{#1}[#2]}{\fourthreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\fourthreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@fourthreader%
   \rightappenditem#2\to\@fourthreader%
   \rightappenditem#3\to\@fourthreader%
   \fi
}

\newcommand{\fifthreader}[1]{%
 \@ifnextchar[{\fifthreader@i{#1}}{\fifthreader@i{#1}[\@department]}%]
}
\def\fifthreader@i#1[#2]{%
 \@ifnextchar[{\fifthreader@ii{#1}[#2]}{\fifthreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\fifthreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@fifthreader%
   \rightappenditem#2\to\@fifthreader%
   \rightappenditem#3\to\@fifthreader%
   \fi
}

\newcommand{\sixthreader}[1]{%
 \@ifnextchar[{\sixthreader@i{#1}}{\sixthreader@i{#1}[\@department]}%]
}
\def\sixthreader@i#1[#2]{%
 \@ifnextchar[{\sixthreader@ii{#1}[#2]}{\sixthreader@ii{#1}[#2][Georgia Institute of Technology]}%]
}
\def\sixthreader@ii#1[#2][#3]{%
\ifx\empty#1\empty\else\rightappenditem#1\to\@sixthreader%
   \rightappenditem#2\to\@sixthreader%
   \rightappenditem#3\to\@sixthreader%
   \fi
}

%
%% bibliography databases
%
\newcommand{\bibfiles}[1]%
 {\ifx\empty#1\empty\else\gdef\@bibfiles{#1}\fi}

%
%% default values of private functions
%
\def\@title{}
\def\@author{}
\def\@bibfiles{}
\def\@principaladvisor{}
\def\@committeechair{}
\def\@firstreader{}
\def\@secondreader{}
\def\@thirdreader{}
\def\@fourthreader{}
\def\@fifthreader{}
\def\@sixthreader{}
\def\@submitdate{\ifcase\the\month\or
 January\or February\or March\or April\or May\or June\or
 July\or August\or September\or October\or November\or December\fi
 \space \number\the\year}
\def\@copyrightyear{\number\the\year}
\def\@bibfiles{}

%% Switch for printing copyright notice on titlepage
%
\newif\ifcopyright
\copyrightfalse % initially false by default

%% Switch for generating a title page
%
\newif\iftitlepage
\titlepagetrue % initially true by default

%% Switch for generating a signature page
%
\newif\ifsignaturepage
\signaturepagetrue % initially true by default

%% Switch for generating a list of figures
%
\newif\iffigurespage
\figurespagetrue % initially true by default

%% Switch for generating a list of tables
%
\newif\iftablespage
\tablespagetrue % initially true by default

%% Switch for generating a table of contents
%
\newif\ifcontentspage
\contentspagetrue % initially true by default

%% Switch for generating a bibliography
%
\newif\ifbibpage
\bibpagetrue % initially true by default

%% Switch to indicate whether chapters are \input{}'ed or
%% \include{}'ed.  Not currently used.
%
\newif\ifusinginclude
\usingincludefalse % initially false by default -- document uses \input{}

%% Switch for relaxing the strict margin requirements
%% on the title page and signature page.  Default is to
%% rigidly adhere to the standard (but that's ugly)
%
\newif\ifstrictmargins
\strictmarginstrue % initially true by default

%% Switch for printing DEDICATION across the top of the dedication page
%
\newif\ifdedicationheading
\dedicationheadingfalse % initially false by default

%% Switch for indicating that the thesis has multiple volumes
%
\newif\ifmultivolume
\multivolumefalse % initially false by default

%%%%%%    Front Matter Commands and Environments
%%
%% \beforepreface
%%   --- create title, signature page
%%   --- redefined the \maketitle command here, but
%%       don't call it directly.  Use \beforepreface.
%%
%%   \begin{dedication}...\end{dedication}
%%   \begin{preface}...\end{preface}
%%   \begin{acknowledgements}...\end{acknowlegments}
%%   \prefacesection{other-title}
%%     --- followed by section text
%%   \contents
%%     --- prints table of contents, figures, and tables
%%   \begin{abstract}...\end{abstract}  or use
%%   \begin{summary}...\end{summary}
%% \afterpreface

\newcommand{\title@top}{%
% make sure that linestretch is already set to 1, and all
% grouping/sectioning commands have already been begun.
 \ifstrictmargins
   \ifnum \@marginsize = 4 % oldmargins
     \vspace*{50\p@}%
   \fi
   \begin{center}%
       {\large\bfseries\MakeUppercase{\expandafter{\@title}}}\\%%%% TITLE FONT SIZE!!!!
   \end{center}%
 \else%
   \begin{center}
%     \vspace*{\stretch{1}}
     \vspace*{1in}
       {\large\bfseries\MakeUppercase{\expandafter{\@title}}}%%%%% TITLE FONT SIZE AGAIN
   \end{center}%
 \fi%
}

\newcommand{\title@text}{
 \begin{center}
   \ifthesisproposal
      A Thesis Proposal\\
      Presented to\\
      The Academic Faculty\\
   \else
      A \ifdissertation Dissertation\else Thesis\fi\\
      Presented to\\
      The Academic Faculty\\
   \fi
   \ \\
   by\\
   \ \\
   {\@author}\\
   \vspace*{1.1in}
   In Partial Fulfillment \\
   of the Requirements for the Degree \\
   {\@degree} in
   \iflistmajor
      \\ {\@major}\\
      \vfill
      {\@department}\\
   \else
      the\\ {\@department}\\
      \vfill
   \fi
      Georgia Institute of Technology\\
   {\@submitdate}%
   \ifcopyright
     \\ \vspace*{.3in}% one line + 0.3in
     Copyright \copyright\ {\@copyrightyear} by {\@author}
   \fi
 \end{center}
}

\newcommand{\make@parttitle}[1]{%if argument is present, it's the part title
 \begingroup
   \newlinestretch{1}%
   \phantomsection%
   \title@top
   \ifstrictmargins
     \vspace*{0.5in}
     \begin{center}
       \begin{doublespaced}{\large\bfseries%
         \expandafter{\Makeuppercase{\partname}\space\Makeuppercase{\thepart}}\\
         \ifx\@empty#1\@empty\else%
           \expandafter{#1}\\
         \fi%
       }\end{doublespaced}
       \ \\
       by\\
       \ \\
       {\@author}\\
     \end{center}%
     \vfill
   \else%
     \vspace*{0.5in}
     \begin{center}
       \begin{doublespaced}{\Huge\bfseries%
         \expandafter{\Makeuppercase{\partname}\space\Makeuppercase{\thepart}}\\
         \ifx\@empty#1\@empty\else%
           \expandafter{#1}\\
         \fi%
       }\end{doublespaced}
       \vspace*{1.35in}
       \ \\
       by\\
       \ \\
       {\Large\bfseries{\@author}}\\
     \end{center}%
     \vfill
   \fi%
 \endgroup%
}%makeparttitle

\renewcommand{\maketitle}{%
 %\interlinepenalty \@M
 \normalfont
 \begingroup
   \newlinestretch{1}%
   \begin{titlepage}%
     \phantomsection%
     \pdfbookmark[0]{Titlepage}{title}%
     \title@top%
     \ifstrictmargins%
       \vfill
       \title@text% contains a \vfill between \degree and \department
     \else%
       \vfill%\vspace*{1.35in}
       \title@text% contains a \vfill between \degree and \department
       \vspace*{.2in}%
     \fi%
     \setcounter{page}{1}%
   \end{titlepage}% this has a \newpage
 \endgroup%
 \setcounter{page}{2}%
}%maketitle


%
%% Change \begin{abstract}...\end{abstract} to follow guidelines
%% and put the abstract on a separate page (checking @openright).
%
\renewenvironment{abstract}{%
 \typeout{*****************      Abstract     ******************}
 \if@openright\cleardoublepage\else\clearpage\fi
 \addtocounter{page}{-1}
 \phantomsection%
%  \addcontentsline{toc}{chapter}%
%    {\texorpdfstring{\Makeuppercase{Abstract}}{Abstract}}
 \thispagestyle{empty}%
  \begin{singlespaced}%
   \begin{center}%
       \@title\\%
       \ \\%
       \@author\\%
       \ \\%
       \pageref{LastPage} Pages\\%
      \ \\%
       Directed by \@advisorforabstract%
   \end{center}%
   \end{singlespaced}%
 \begingroup%
   \hspace*{2.5em}%
   %% Adjust the line spacing: if it was less than 1 1/2,
   %% increase it to 1 1/2; if it was between 1 1/2 and 2,
   %% increase it to 2; otherwise, leave it as is.
   \ifdim \baselinestretch pt < 1.25pt \newlinestretch{1.25}\else%
   \ifdim \baselinestretch pt < 1.66pt \newlinestretch{1.66}\fi\fi%
}{\par\endgroup}%abstract
%
%% \begin{summary}...\end{summary} formats a
%% summary section (identical to an abstract section,
%% except that the title is ``SUMMARY'')
%
\newenvironment{summary}{%
 \typeout{*****************       Summary     ******************}
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{Summary}}{Summary}}
 \chapter*{\MakeUppercase{Summary}}
 \vskip 0.5in
 \begingroup
   \hspace*{2.5em}
   %% Adjust the line spacing: if it was less than 1 1/2,
   %% increase it to 1 1/2; if it was between 1 1/2 and 2,
   %% increase it to 2; otherwise, leave it as is.
   \ifdim \baselinestretch pt < 1.25pt \newlinestretch{1.25}\else
   \ifdim \baselinestretch pt < 1.66pt \newlinestretch{1.66}\fi\fi
}{\par\endgroup}%summary
%
%% \begin{dedication}...\end{dedication} formats a
%% dedication section
%
\newcommand{\dedicationtop}{\vspace*{\stretch{1}}}
\newcommand{\dedicationbottom}{\bigskip\bigskip\vspace*{\stretch{1}}}
\newenvironment{dedication}{%
 \typeout{*****************    Dedication    ******************}
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{Dedication}}{Dedication}}
 \ifdedicationheading
   \chapter*{\MakeUppercase{Dedication}}
 \else
   \chapter*{}
 \fi
 \vskip 0.5in
 \begingroup
 \begin{itshape}\dedicationtop
}{\dedicationbottom\end{itshape}\par\endgroup}%dedication
%
%% \begin{acknowledgements}...\end{acknowledgements} formats an
%% acknowledgements section
%
\newenvironment{acknowledgements}{%
 \typeout{***************** Acknowledgements ******************}
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{Acknowledgements}}{Acknowledgements}}
 \chapter*{\MakeUppercase{Acknowledgements}}
 \vskip 0.5in
 \begingroup
}{\par\endgroup}%Acknowledgements
%
%% \begin{preface}...\end{preface} formats an
%% preface section
%
\newenvironment{preface}{%
 \typeout{*****************      Preface     ******************}
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{Preface}}{Preface}}
 \chapter*{\MakeUppercase{Preface}}
 \vskip 0.5in
 \begingroup
}{\par\endgroup}%preface

%
%% stuff to generate a signature page
%
\newlength{\signature@width}
\setlength{\signature@width}{3.3in}
\let\signature@body\signature@bodyonecol
\newcounter{signatures}
\newcounter{cnt@Lsig}
\newcounter{cnt@Rsig}
\def\R@signatures{}
\def\L@signatures{}

% Fun stuff from the TeXbook
\toksdef\ta=0 \toksdef\tb=2 % token list registers for temp use
\long\def\leftappenditem#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}%
 \edef#2{\the\ta\the\tb}}
\long\def\rightappenditem#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}%
 \edef#2{\the\tb\the\ta}}
\def\concatenate#1=#2&#3{\ta=\expandafter{#2}\tb=\expandafter{#3}%
 \edef#1{\the\ta\the\tb}}
\def\GTlop#1\to#2{\expandafter\GTlopoff#1\GTlopoff#1#2}
\long\def\GTlopoff\\#1#2\GTlopoff#3#4{\def#4{#1}\def#3{#2}}

\newcommand{\dosiglist}[2]{%
 \GTlop#1\to\@@sig \@@sig
 \GTlop#1\to\@@sig \@@sig
 \GTlop#1\to\@@sig \@@sig
 % we know that cnt@Lsig is at least 3, maybe 4. 5 is right out.
 \ifnum \value{#2} = 4
   \GTlop#1\to\@@sig \@@sig
 \fi
}

\newcommand{\signature}[1]{%
 \ifx\empty#1{}\empty%
 \else%
   \parbox[t]{\signature@width}{%
%      \rule{\signature@width}{.01in}\\
     \GTlop#1\to\signame%
     \GTlop#1\to\sigdept%
     \GTlop#1\to\siginst%
     \parbox[t]{\signature@width}{\begin{raggedright}\signame \hfill\\
       \sigdept\hfill\\
       \emph{\siginst}\end{raggedright}\hfill}\\
     \vspace{12pt}%
   }
 \fi%
}

\newcommand{\signature@bodyonecol}{%
 \begin{flushright}
   \parbox{\signature@width}{\begin{flushleft}Approved by:\\ \end{flushleft}}\\
%    \vspace*{0.3in}
   \ifx\empty\@committeechair{}\empty%
   \else%
       \signature{\@committeechair}%
   \fi%
   \ifx\empty\@principaladvisor{}\empty%
   \else%
     \signature{\@principaladvisor}%
   \fi%
   \signature\@firstreader
   \signature\@secondreader
   \signature\@thirdreader
   \signature\@fourthreader
   \signature\@fifthreader
   \signature\@sixthreader
   \vspace{.5in}
   %\makebox[\signature@width]{Date Approved by Chairman \hrulefill}\\
   \parbox{\signature@width}{\begin{flushleft}Date Approved: \@approveddate\end{flushleft}}\\
 \end{flushright}
}

\newcommand{\signature@bodytwocol}{%
 \begin{flushleft}
   Approved by:\\
 \vspace*{12pt}
 \GTlop\L@signatures\to\@@sigLone%
 \GTlop\L@signatures\to\@@sigLtwo%
 \GTlop\L@signatures\to\@@sigLthree%
 \ifnum\value{cnt@Lsig}=4
    \GTlop\L@signatures\to\@@sigLfour
    \else\def\@@sigLfour{}
 \fi

 \GTlop\R@signatures\to\@@sigRone%
 \GTlop\R@signatures\to\@@sigRtwo%
 \ifnum\value{cnt@Rsig}=2
    \def\@@sigRthree{Date Approved: \@approveddate}
    \def\@@sigRfour{}
  \fi
 \ifnum\value{cnt@Rsig}=3
     \GTlop\R@signatures\to\@@sigRthree%
     \def\@@sigRfour{Date Approved: \@approveddate}
 \fi
 \ifnum\value{cnt@Rsig}=4
     \GTlop\R@signatures\to\@@sigRthree%
     \GTlop\R@signatures\to\@@sigRfour%
 \fi

 \begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}ll}
   \@@sigLone & \@@sigRone\\%
   \@@sigLtwo & \@@sigRtwo\\%
   \@@sigLthree & \@@sigRthree\\%
   \@@sigLfour & \@@sigRfour\\
    \ifnum\value{cnt@Rsig}=4
       \space &%
       Date Approved: \@approveddate
    \fi
 \end{tabular*}
 \end{flushleft}
}

\def\add@Lsig#1{
 \ifx#1\@empty\relax\else%
   \rightappenditem#1\to\L@signatures
   \addtocounter{cnt@Lsig}{1}%
 \fi
}
\def\add@Rsig#1{%
 \ifx\@empty#1\relax\else
   \rightappenditem#1\to\R@signatures
   \addtocounter{cnt@Rsig}{1}%
 \fi
}
\newcommand{\makesignature}{%
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \pdfbookmark[0]{Signatures}{signatures}%
 % do not addtocontents (although it is in bookmarklist)
 \ifx\@empty\@committeechair\relax\else
   \addtocounter{signatures}{1}%
       \GTlop\@committeechair\to\z%
       \leftappenditem{\z, \mbox{Committee Chair}}\to\@committeechair%
   \add@Lsig{\signature{\@committeechair}}
 \fi
 \ifx\@empty\@principaladvisor\relax\else
   \addtocounter{signatures}{1}%
     \GTlop\@principaladvisor\to\a%
     \leftappenditem{\a, \advis@r}\to\@principaladvisor%
   \add@Lsig{\signature{\@principaladvisor}}
 \fi
 \ifx\@empty\@firstreader\relax\else
   \addtocounter{signatures}{1}%
   \add@Lsig{\signature\@firstreader}
 \fi
% The first three will ALWAYS be in the left column, but now we must compute
% the total number of sigs before doing anything else.
 \ifx\@empty\@secondreader\relax\else\addtocounter{signatures}{1}\fi
 \ifx\@empty\@thirdreader\relax\else\addtocounter{signatures}{1}\fi
 \ifx\@empty\@fourthreader\relax\else\addtocounter{signatures}{1}\fi
 \ifx\@empty\@fifthreader\relax\else\addtocounter{signatures}{1}\fi
 \ifx\@empty\@sixthreader\relax\else\addtocounter{signatures}{1}\fi
 \typeout{SIGNATURES: \arabic{signatures}}
 \ifnum \value{signatures} < 5 % fuggeddaboutit.  Only one column
   \let\signature@body\signature@bodyonecol
   \setlength{\signature@width}{0.52\textwidth}
 \else
   \let\signature@body\signature@bodytwocol
   \setlength{\signature@width}{0.46\textwidth}
   \newcounter{halfsig}
   \setcounter{halfsig}{\value{signatures} - (\value{signatures} / 2)}
   \typeout{LEFTCNT: \arabic{cnt@Lsig}  HALF: \arabic{halfsig}}
   \ifnum \value{cnt@Lsig} < \value{halfsig}
     \add@Lsig{\signature\@secondreader}
     \ifnum \value{cnt@Lsig} < \value{halfsig}
       \ifx\@empty\@thirdreader\relax\else\add@Lsig{\signature\@thirdreader}\fi % can't ever have more than this in left column
       \ifx\@empty\@fourthreader\relax\else\add@Rsig{\signature\@fourthreader}\fi
       \ifx\@empty\@fifthreader\relax\else\add@Rsig{\signature\@fifthreader}\fi
       \ifx\@empty\@sixthreader\relax\else\add@Rsig{\signature\@sixthreader}\fi
     \else
       \ifx\@empty\@thirdreader\relax\else\add@Rsig{\signature\@thirdreader}\fi
       \ifx\@empty\@fourthreader\relax\else\add@Rsig{\signature\@fourthreader}\fi
       \ifx\@empty\@fifthreader\relax\else\add@Rsig{\signature\@fifthreader}\fi
       \ifx\@empty\@sixthreader\relax\else\add@Rsig{\signature\@sixthreader}\fi
     \fi
   \else
     \ifx\@empty\@secondreader\relax\else\add@Rsig{\signature\@secondreader}\fi
     \ifx\@empty\@thirdreader\relax\else\add@Rsig{\signature\@thirdreader}\fi
     \ifx\@empty\@fourthreader\relax\else\add@Rsig{\signature\@fourthreader}\fi
     \ifx\@empty\@fifthreader\relax\else\add@Rsig{\signature\@fifthreader}\fi
     \ifx\@empty\@sixthreader\relax\else\add@Rsig{\signature\@sixthreader}\fi
   \fi
 \fi
 \title@top
 \vfill
 \begin{center}
   \signature@body
   \ifstrictmargins\relax\else
     \vspace{.2in}
     \mbox{}
   \fi
 \end{center}
 \thispagestyle{empty}
}
%
%% beforepreface
%
\newcommand{\beforepreface}{%
 \newlinestretch{1.0}%
 \pagenumbering{roman}%
 \pagestyle{\front@pagestyle}%
 \iftitlepage%
   \maketitle%
 \fi%
 \ifmultivolume%
   \part{}%
 \fi%
 \ifsignaturepage%
   \makesignature%
 \fi%
 \newlinestretch{\@spacing}%
}
%
%% \prefacesection is here for backward compatibility with
%% the GT-thesis.sty package, and to add preface sections
%% that are not already defined.  For Abstract, Preface,
%% Dedication, and Acknowlegements sections, use the
%% appropriate environments: \begin{abstract}...\end{abstract}
%% etc.
%
\newcommand{\prefacesection}[1]{%
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{#1}}{#1}}
 \newlinestretch{\@spacing}
 \chapter*{\MakeUppercase{#1}}
 \vskip 0.5in
}
\newcommand{\afterpreface}{%
 \if@draft%
 \else%
   \if@twoside%
     \if@openright%
       \cleardoublepage%
     \fi%
   \fi%
 \fi%
 \newpage%
 \pagenumbering{arabic}%
 \pagestyle{\body@pagestyle}%
 \newlinestretch{\@spacing}%
}

% dummy commands to prevent recursion errors...
\newcommand{\gtcontentsname}{}
\newcommand{\toccontentlinestring}{}
\newcommand{\tocpdfbookmarkstring}{}
\newcommand{\gtlistfigurename}{}
\newcommand{\lofcontentlinestring}{}
\newcommand{\lofpdfbookmarkstring}{}
\newcommand{\gtlisttablename}{}
\newcommand{\lotcontentlinestring}{}
\newcommand{\lotpdfbookmarkstring}{}

\newcommand{\settocstring}[1]{%
 \renewcommand{\gtcontentsname}{#1}
 \renewcommand{\contentsname}{\Makeuppercase{#1}}
 \renewcommand{\toccontentlinestring}{%
   \texorpdfstring{\Makeuppercase{#1}}{#1}
 }
 \renewcommand{\tocpdfbookmarkstring}{#1}
}
\newcommand{\setlofstring}[1]{%
 \renewcommand{\gtlistfigurename}{#1}
 \renewcommand{\listfigurename}{\Makeuppercase{#1}}
 \renewcommand{\lofcontentlinestring}{%
   \texorpdfstring{\Makeuppercase{#1}}{#1}
 }
 \renewcommand{\lofpdfbookmarkstring}{#1}
}
\newcommand{\setlotstring}[1]{%
 \renewcommand{\gtlisttablename}{#1}
 \renewcommand{\listtablename}{\Makeuppercase{#1}}
 \renewcommand{\lotcontentlinestring}{%
   \texorpdfstring{\Makeuppercase{#1}}{#1}
 }
 \renewcommand{\lotpdfbookmarkstring}{#1}
}
\settocstring{Table of Contents}
\setlofstring{List of Figures}
\setlotstring{List of Tables}

%
%% All this junk is for handling the spacing in the TOC, LOF, and LOT.
%
\newlength{\gt@tocentryskip@value}
\newlength{\gt@beforepartskip@value}
\newlength{\gt@beforechapskip@value}
\newlength{\gt@beforesecskip@value}
\newlength{\gt@beforesubsecskip@value}
\newlength{\gt@beforesubsubsecskip@value}
\newlength{\gt@beforeparaskip@value}
\newlength{\gt@beforesubparaskip@value}
\newlength{\gt@beforefigskip@value}
\newlength{\gt@beforetableskip@value}

\def\set@gttocskip#1{%
 \setlength{\gt@tocentryskip@value}{#1}
 % set base lengths
 \setlength{\gt@beforepartskip@value}{2\gt@tocentryskip@value}
 \setlength{\gt@beforechapskip@value}{1.5\gt@tocentryskip@value}
 \setlength{\gt@beforesecskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforesubsecskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforesubsubsecskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforeparaskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforesubparaskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforefigskip@value}{\gt@tocentryskip@value}
 \setlength{\gt@beforetableskip@value}{\gt@tocentryskip@value}
 % add glue
 \addtolength{\gt@beforepartskip@value}{\z@ \@plus\p@}
 \addtolength{\gt@beforechapskip@value}{\z@ \@plus\p@}
 \addtolength{\gt@beforesecskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforesubsecskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforesubsubsecskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforeparaskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforesubparaskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforefigskip@value}{\z@ \@plus.2\p@}
 \addtolength{\gt@beforetableskip@value}{\z@ \@plus.2\p@}
}
\set@gttocskip{10pt}

% gobble the pagenumber
\newcommand*{\l@part@pagenumfont}[1]{}
% note: we don't do the fancy volume title centering here, because
% we use {part} for the \labelchaptersintableofcontents stuff.  And
% that is NOT centered.
\renewcommand*{\l@part}[2]{%
 \ifnum \c@tocdepth >-2\relax
   \addpenalty{-\@highpenalty}%
   \addvspace{\gt@beforepartskip@value}%
   \setlength\@tempdima{3em}%
   \begingroup
     \parindent \z@ \rightskip \@pnumwidth
     \parfillskip -\@pnumwidth
     \interlinepenalty\@M
     {\leavevmode #1\hfil \hb@xt@\@pnumwidth{\hss \l@part@pagenumfont{#2}}}\par
      \nobreak
        \global\@nobreaktrue
        \everypar{\global\@nobreakfalse\everypar{}}%
   \endgroup
 \fi}
\newcommand*{\gt@dottedtocline}[5]{%
 \ifnum #1>\c@tocdepth \else
   \addvspace{\gt@@toclineskip}
   {\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}%
 \fi}
\renewcommand*\l@chapter[2]{%
 \ifnum \c@tocdepth >\m@ne
   \addpenalty{-\@highpenalty}%
   \addvspace{\gt@beforechapskip@value}%
   \setlength\@tempdima{2em}% was 1.5em, but that's too small.  Add 0.5em to all others
   \begingroup
     \parindent \z@ \rightskip \@pnumwidth
     \parfillskip -\@pnumwidth
     \leavevmode \bfseries
     \advance\leftskip\@tempdima
     \hskip -\leftskip
     #1\nobreak\normalfont\normalcolor
     \leaders\hbox{$\m@th
       \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
       mu$}\hfill
     \nobreak
     \hb@xt@\@pnumwidth{\hss\bfseries #2}
     \par
     \penalty\@highpenalty
   \endgroup
 \fi}
\renewcommand*\l@section{%
 \let\gt@@toclineskip=\gt@beforesecskip@value
 \gt@dottedtocline{1}{2.0em}{2.3em}}
\renewcommand*\l@subsection{%
 \let\gt@@toclineskip=\gt@beforesubsecskip@value
 \gt@dottedtocline{2}{4.3em}{3.2em}}
\renewcommand*\l@subsubsection{%
 \let\gt@@toclineskip=\gt@beforesubsubsecskip@value
 \gt@dottedtocline{3}{7.5em}{4.1em}}
\renewcommand*\l@paragraph{%
 \let\gt@@toclineskip=\gt@beforeparaskip@value
 \gt@dottedtocline{4}{10.5em}{5em}}
\renewcommand*\l@subparagraph{%
 \let\gt@@toclineskip=\gt@beforesubparaskip@value
 \gt@dottedtocline{5}{12.5em}{6em}}
\renewcommand*\l@figure{%
 \let\gt@@toclineskip=\gt@beforefigskip@value
 \gt@dottedtocline{1}{1.5em}{2.3em}}% this is indented 1.5em so that
                                    % if you wish, you can a 'Figure' header
                                    % centered above the numbers using \addtocontents
\renewcommand*\l@table{%
 \let\gt@@toclineskip=\gt@beforetableskip@value
 \gt@dottedtocline{1}{1.5em}{2.3em}}% ditto

\newlength{\gt@tmpa}
\newcommand{\do@figurespage}{%
 \iffigurespage
   \if@openright\cleardoublepage\else\clearpage\fi
   % must clear page here, so that phantomsection\addcontentsline is on the correct page
   \phantomsection%
   \addcontentsline{toc}{chapter}{\lofcontentlinestring}
   \settoheight{\gt@tmpa}{A}
   \set@gttocskip{\gt@tmpa}
   {\newlinestretch{1}
    \listoffigures
   }
    \newpage
 \fi
}
\newcommand{\do@tablespage}{%
 \iftablespage
   \if@openright\cleardoublepage\else\clearpage\fi
   % must clear page here, so that phantomsection\addcontentsline is on the correct page
   \phantomsection%
   \addcontentsline{toc}{chapter}{\lotcontentlinestring}
   \settoheight{\gt@tmpa}{A}
   \set@gttocskip{\gt@tmpa}
   {\newlinestretch{1}
    \listoftables
   }
   \newpage
 \fi
}
\newcommand{\do@contentspage}{%
 \ifcontentspage
   \if@openright\cleardoublepage\else\clearpage\fi
   % must clear page here, so that phantomsection\addcontentsline is on the correct page
   \phantomsection%
   \pdfbookmark[0]{\tocpdfbookmarkstring}{toc}%
   \settoheight{\gt@tmpa}{A}
   \set@gttocskip{\gt@tmpa}
    {\newlinestretch{1}
    \tableofcontents
    }
   \newpage
 \fi
}
\newcommand{\do@losapage}{}
\newcommand{\do@glossarypage}{}
\newcommand{\do@indexpage}{}

\newcommand{\contents}{%
 \newpage
 \newlinestretch{\@spacing}
 \do@contentspage
 \do@tablespage
 \do@figurespage
 \do@losapage
 \do@glossarypage
}

%%%%%%    Main Matter Commands and Environments
%%
%% redefine chapter headings style
%% redefine appendix headings style
%% redefine section headings style
%% number figures and tables sequentially throughout, rather
%%   than restarting for each chapter.  Ditto equations.
%% redefine macro for floats (incl. figures and tables)
%%   so that single spacing is used
%% define a "gtindent" command for paragraph indents:
%%   blank line + six space first line indentation
%% settocdepth - use this to change how "deep" to number
%%   in the table of contents for different sections; e.g.
%%   subsubsections for chapters, then switch to chapter-only
%%   for appendices.

% This package uses David Carlisle's \@removefromreset command as
% specified in the remreset package available from CTAN as
% macros/latex/contrib/supported/carlisle/remreset.sty
% It is \provided here as a convenience to the user, and with
% David Carlisle's permission.  remreset.sty is licensed under
% the LPPL; David has explicitly given permission to include
% it here, under the GPL.
% START OF DAVID CARLISLE'S CODE
\newcommand{\@removefromreset}[2]{{%
 \expandafter\let\csname c@#1\endcsname\@removefromreset
 \def\@elt##1{%
   \expandafter\ifx\csname c@##1\endcsname\@removefromreset
   \else
     \noexpand\@elt{##1}%
   \fi}%
 \expandafter\xdef\csname cl@#2\endcsname{%
   \csname cl@#2\endcsname}}}
% END OF DAVID CARLISLE'S CODE
%%%%% See http://www.tex.ac.uk/cgi-bin/texfaq2html?label=running-nos

%
%% Figures and tables are to be numbered sequentially throughout the
%% thesis, rather than within chapters; for style consistency, do
%% equations the same.
%
\@removefromreset{figure}{chapter}
\@removefromreset{table}{chapter}
\@removefromreset{equation}{chapter}
\def\thefigure{\@arabic\c@figure}
\def\thetable{\@arabic\c@table}
\def\theequation{\arabic{equation}}

%
%% Redefine the macro used for floats (including figures and tables)
%% so that single spacing is used.
%% (Note \def\figure{\@float{figure}set single spacing} doesn't work
%%  because figure has an optional argument)
%%
%% This code was copied directly from latex.ltx, but with the
%% \newlinespacing{} macro added to it.
%
\def\@xfloat #1[#2]{%
 \@nodocument
 \def \@captype {#1}%
  \def \@fps {#2}%
  \@onelevel@sanitize \@fps
  \def \reserved@b {!}%
  \ifx \reserved@b \@fps
    \@fpsadddefault
  \else
    \ifx \@fps \@empty
      \@fpsadddefault
    \fi
  \fi
  \ifhmode
    \@bsphack
    \@floatpenalty -\@Mii
  \else
    \@floatpenalty-\@Miii
  \fi
 \ifinner
    \@parmoderr\@floatpenalty\z@
 \else
   \@next\@currbox\@freelist
     {%
      \@tempcnta \sixt@@n
      \expandafter \@tfor \expandafter \reserved@a
        \expandafter :\expandafter =\@fps
        \do
         {%
          \if \reserved@a h%
            \ifodd \@tempcnta
            \else
              \advance \@tempcnta \@ne
            \fi
          \fi
          \if \reserved@a t%
            \@setfpsbit \tw@
          \fi
          \if \reserved@a b%
            \@setfpsbit 4%
          \fi
          \if \reserved@a p%
            \@setfpsbit 8%
          \fi
          \if \reserved@a !%
            \ifnum \@tempcnta>15
              \advance\@tempcnta -\sixt@@n\relax
            \fi
          \fi
          }%
      \@tempcntb \csname ftype@\@captype \endcsname
      \multiply \@tempcntb \@xxxii
      \advance \@tempcnta \@tempcntb
      \global \count\@currbox \@tempcnta
      }%
   \@fltovf
 \fi
 \global \setbox\@currbox
   \color@vbox
     \normalcolor
     \vbox \bgroup
       \newlinestretch{1.0}
       \hsize\columnwidth
       \@parboxrestore
       \@floatboxreset
}

% Redefine the macro used for caption labels, for a (slightly)
% fancier format.  Feel free to use the caption2 package instead...
\long\def\@makecaption#1#2{%
 \vskip\abovecaptionskip
 \sbox\@tempboxa{\textbf{#1: }#2}%
 \ifdim \wd\@tempboxa >\hsize
   \textsf{\textbf{#1: }}#2\par
 \else
   \global \@minipagefalse
   \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
 \fi
 \vskip\belowcaptionskip}

% Redefine the macro used for footnotes to use single spacing
\long\def\@footnotetext#1{%
 \insert\footins{%
   \newlinestretch{1.0}%
   \footnotesize%
   \interlinepenalty\interfootnotelinepenalty%
   \splittopskip\footnotesep%
   \splitmaxdepth \dp\strutbox \floatingpenalty \@MM%
   \hsize\columnwidth \@parboxrestore%
   \edef\@currentlabel{%
     \csname p@footnote\endcsname\@thefnmark%
   }%
   \@makefntext%
   {\rule{\z@}{\footnotesep}\ignorespaces%
     #1\strut}%
 }%
}

%
%% Paragraph indents (6 spaces)
%% inserts a blank line and then indents the paragraph by 6 spaces
%
\newcommand{\gtindent}{\par \hspace{0.25in}}

%
%% Chapter headings - centered, all caps, chapter number - roman numeral
%
%
%% Use \labelchaptersintableofcontents to insert an entry into the toc
%% that says ``CHAPTERS'' just before Chapter 1.
%  Use \labelappendicesintableofcontents to insert an entry into the toc
%% that says ``APPENDICES'' just before Appendix A.
%
\let\orig@contentsline=\contentsline
\newcommand{\labelchaptersintableofcontents}[1][CHAPTERS]{%
 \addtocontents{toc}{\protect\orig@contentsline{part}{#1}{}}
}
\newcommand{\labelappendicesintableofcontents}[1][APPENDICES]{%
 \addtocontents{toc}{\protect\orig@contentsline{part}{#1}{}}%
}

\renewcommand{\chaptername}{CHAPTER}
\renewcommand{\appendixname}{APPENDIX}
\renewcommand{\thepart}{\@Roman\c@part}
\renewcommand{\partname}{Volume}

%
%% \thegtchapter is used so that we can have ROMAN numbers in the
%% chapter headings at the beginning of each chapter, but use
%% \thechapter for ARABIC numbers in the running heads on each
%% page within the chapter.
%%
%% You can Change this behavior by redefining \thegtchapter
%% within your document:
%% \renewcommand{\thegtchapter}{\thechapter}
%
\newcommand{\thegtchapter}{\@Roman\c@chapter}
\def\chapapp@tocdepth{\expandafter\chapter@tocdepth}
%
%% The following two def's provide the Indirection needed to work
%% with hyperref package, since hyperref redefines @chapter and
%% @schapter
%
\def\chapapp@chapter{\chap@chapter}
\def\chapapp@schapter{\chap@schapter}
%
%% Make @chapter and @schapter wrappers for (chap@chapter or app@chapter)
%% and (chap@schapter or app@schapter).  This indirection is necessary to
%% work well with the hyperref package.
%
\def\my@empty{}
\def\@chapter[#1]#2{%
 \def\my@temp{#1}%
 \ifx\my@temp\my@empty
   \chapapp@chapter{#2}
 \else
   \chapapp@chapter[#1]{#2}
 \fi
}
\def\@schapter#1{%
 \chapapp@schapter{#1}
}
%
%% The actual guts of the chapter heading routines
%
\renewcommand{\chapter}{%
 \if@openright\cleardoublepage\else\clearpage\fi
 \if@tcpage% DO NOT use the \front@pagestyle macro here.
   {\thispagestyle{tcplain}}
 \else
   {\thispagestyle{plain}}%report.cls temporarily resets pagestyle to plain. Do the same.
 \fi
 \settocdepth{\chapapp@tocdepth}
 \global\@topnum\z@
 \@afterindentfalse
 \secdef\@chapter\@schapter
}
\def\chap@chapter[#1]#2{%
 \ifnum \c@secnumdepth >\m@ne
   \refstepcounter{chapter}%
   \typeout{\@chapapp\space\thegtchapter.}%
   \addcontentsline{toc}{chapter}%
     {\texorpdfstring%
       {\protect\numberline{\thegtchapter}\Makeuppercase{#1}}%
       {Chapter \thechapter\space\textemdash\space#1}}%
 \else
   \addcontentsline{toc}{chapter}%
     {\texorpdfstring{\Makeuppercase{#1}}{#1}}%
 \fi
 \chaptermark{#1}%
 \if@twocolumn
   \@topnewpage[\@makechapterhead{#2}]%
 \else
   \@makechapterhead{#2}%
   \@afterheading
 \fi
}
\def\@makechapterhead#1{%
 \ifnum \@marginsize = 4 % oldmargins
   \vspace*{50\p@}%
 \fi
 { \parindent \z@ \raggedright \normalfont
   \ifnum \c@secnumdepth >\m@ne
     \centering \large \bfseries \@chapapp\space \thegtchapter
     \par\nobreak
     \vskip 30\p@
   \fi
   \interlinepenalty\@M
   \centering \large \bfseries \MakeUppercase{#1}\par\nobreak
   \vskip 30\p@
 }
}
\def\chap@schapter#1{%
 \if@twocolumn
   \@topnewpage[\@makeschapterhead{#1}]%
 \else
   \@makeschapterhead{#1}%
   \@afterheading
 \fi
}
\def\@makeschapterhead#1{%
 \ifnum \@marginsize = 4 % oldmargins
   \vspace*{50\p@}%
 \fi
 { \parindent \z@ \raggedright \normalfont
   \interlinepenalty\@M
   \centering \large \bfseries #1\par\nobreak
   \vskip 30\p@
 }
}
%
%% Support for multi-volume thesis.
%%
%% in the premable, set \multivolumetrue and then
%% use the \part{} commannd where you want volume 2
%% to begin, etc.  Do not give names to your volumes (that is,
%% use ``\part{}'' and not ``\part{Some title}''), because
%% the Graduate Office Guidelines do not allow separate
%% titles for each volume.
%
% we temporarily set the pagenumber to a big negative number, for
% two reasons: 1) so that it doesn't duplicate the other page numbers,
% because the volume title pages are unnumbered and uncounted.  We
% can't merely allow the autoincrement of pagenum and then addtocounter{page}{-1},
% because then both pages would have the same number. 2) it's a BIG negative
% number because we allow it to increment as each \part is declared, so that
% the volume title pages don't duplicate each others pagenums.
\newcounter{part@savepagenum}
\newcounter{part@pagenum}
\setcounter{part@pagenum}{-101} % can't have more than 50 parts,
% but this number must be odd, or twopage dvi's are messed up.
\renewcommand{\part}{%
 \if@openright\cleardoublepage\else\clearpage\fi
 \thispagestyle{empty}%
 \phantomsection%
 \setcounter{part@savepagenum}{\value{page}}
 \setcounter{page}{\value{part@pagenum}}
 \if@twocolumn
   \onecolumn
   \@tempswatrue
 \else
   \@tempswafalse
 \fi
 \secdef\@part\@spart}

\def\@part[#1]#2{%
 \ifnum \c@secnumdepth >-2\relax
   \refstepcounter{part}
   \typeout{\partname\space\thepart.}%
   \addcontentsline{toc}{part}%
     {\texorpdfstring%
       {\noindent\protect\makebox[\@tocrmarg]{}%
         {\protect\makebox[\textwidth - \@tocrmarg - \@tocrmarg]% dadgum \hfill doesn't work without mbox...
         {\hfill\Makeuppercase{\partname}\space\protect{\thepart}\hspace{1em}\Makeuppercase{#1}\hfill}}}%
       {Volume \thepart}}%
 \else
   \addcontentsline{toc}{part}%
   {\texorpdfstring%
     {\Makeuppercase{#1}}%
     {#1}}%
 \fi
 \markboth{}{}
 {\interlinepenalty \@M
    \normalfont
    \ifnum \c@secnumdepth >-2\relax
      \make@parttitle{#1}
    \else
      \make@parttitle{}
    \fi}
    \@endpart}
\def\@spart#1{%
   {\interlinepenalty \@M
    \normalfont
    \make@parttitle{}}
   \@endpart}
\def\@endpart{%
 \vfill\newpage\addtocounter{part@pagenum}{1}%don't count this page
 \if@twoside
   \if@openright
     \null
     \thispagestyle{empty}%
     \newpage\addtocounter{part@pagenum}{1}%if we need to add another page, don't count it either
   \fi
 \fi
 \if@tempswa
   \twocolumn
 \fi
 \setcounter{page}{\value{part@savepagenum}}
}
%
%% Section
%% Heading 1: Large, bold, and italic, at left margin
%% Heading 2: Bold, at left margin
%% Heading 3: Italic, indented 0.25in from left margin
%
\renewcommand{\section}{%
 \@startsection{section}{1}{\z@}%
 {-3.25ex \@plus -1ex \@minus -.2ex}%
 {1.5ex \@plus.2ex}%
 {\newlinestretch{1}\normalfont\large\bfseries\itshape}
}
\renewcommand{\subsection}{%
 \@startsection{subsection}{2}{\z@}%
 {-3.25ex\@plus -1ex \@minus -.2ex}%
 {1.5ex \@plus .2ex}%
 {\newlinestretch{1}\normalfont\normalsize\bfseries}
}
\renewcommand{\subsubsection}{%
 \@startsection{subsubsection}{3}{0.25in}%
 {-3.25ex\@plus -1ex \@minus -.2ex}%
 {1.5ex \@plus .2ex}%
 {\newlinestretch{1}\normalfont\normalsize\itshape}
}

\renewcommand{\appendix}{%
 \if@openright
   \cleardoublepage
 \else
   \clearpage
 \fi
 \renewcommand{\@chapapp}{\appendixname}
 \thispagestyle{plain}%    Do NOT use the \back@pagestyle macro here
 \settocdepth{\appendix@tocdepth}
 \setcounter{chapter}{0}%
 \setcounter{section}{0}%
 \def\thechapter{\@Alph\c@chapter}
 \def\chapapp@tocdepth{\expandafter\appendix@tocdepth}
 \def\chapapp@chapter{\app@chapter}
 \def\chapapp@schapter{\app@schapter}
 \renewcommand{\thesection}{\thechapter.\@arabic\c@section}
}
\def\app@chapter[#1]#2{%
 \ifnum \c@secnumdepth >\m@ne
   \refstepcounter{chapter}%
   \typeout{\@chapapp\space\thechapter.}%
   \addcontentsline{toc}{chapter}%
   {\texorpdfstring%
     {\@chapapp\space\protect\numberline{\thechapter}\space---\space\Makeuppercase{#1}}%
     {Appendix\space\thechapter\space\textemdash\space#1}}%must specify "---" explicitly here
 \else
   \addcontentsline{toc}{chapter}{\Makeuppercase{#1}}%
 \fi
 \chaptermark{#1}%
 \if@twocolumn
   \@topnewpage[\@makeapphead{#2}]%
 \else
   \@makeapphead{#2}%
   \@afterheading
 \fi
}
\def\@makeapphead#1{%
 \ifnum \@marginsize = 4 % oldmargins
   \vspace*{50\p@}%
 \fi
 { \parindent \z@ \raggedright \normalfont
   \centering \large \bfseries \appendixname\space \thechapter
   \par\nobreak
   \vskip 30\p@
   \interlinepenalty\@M
   \centering \large \bfseries \MakeUppercase{#1}\par\nobreak
   \vskip 35\p@
 }
}
\def\app@schapter#1{%
 \if@twocolumn
   \@topnewpage[\@makesapphead{#1}]%
 \else
   \@makesapphead{#1}%
   \@afterheading
 \fi
}
\def\@makesapphead#1{%
 \ifnum \@marginsize = 4 % oldmargins
   \vspace*{50\p@}%
 \fi
 { \parindent \z@ \raggedright \normalfont
   \interlinepenalty\@M
   \centering \large \bfseries #1\par\nobreak
   \vskip 30\p@
 }
}
%% end of \appendix environment definitions

%% \settocdepth - use this to change how "deep" to number
%%   in the table of contents for different sections; e.g.
%%   subsubsections for chapters, then switch to chapter-only
%%   for appendices.
%% tocdepth is reset to the value in \setchaptertocdepth
%%   at each \chapter{}, or to the value in \setappendixtocdepth
%%   at each \chapter{} after the \appendix command.  So, if
%%   you want to change the defaults, use \setchaptertocdepth and
%%   \setappendixtocdepth.  To temporarily change depth for the
%%   current section, use a different function: \settocdepth[x].
%%   You should never need to call \setcounter{tocdepth}{..}
%%   directly.
%%
%% 0 = chapter only
%% 1 = chapter + sections
%% 2 = chapter, section, subsection
%% 3 = chapter, section, subsection, subsubsection
%
\newcommand{\settocdepth}[1]{%
 \addtocontents{toc}{\protect\setcounter{tocdepth}{#1}}
}
\newcommand{\setappendixtocdepth}[1]{%
 \def\appendix@tocdepth{#1}
}
\newcommand{\setchaptertocdepth}[1]{%
 \def\chapter@tocdepth{#1}
}

%%%%%%    Back Matter Commands and Environments
%%
%% \beforepostface
%%   \thebibliography redefined so it matches GT's requirements
%%   \begin{vita}...\end{vita}
%%   \postfacesection{other-title}
%%     --- followed by section text
%% \afterpostface
%% \references
%%   --- creates the bibliography
%% \begin{postliminary}...\end{postliminary}
%%   --- preferred to \beforepostface and \afterpostface

%
%%%%%%    New formatting environments and commands.
%
%% \begin{postliminary} sets the pagestyle for the
%% postliminary sections.
%%
%% \end{postliminary} resets the pagestyle and
%% performs any other cleanup.
%
\newenvironment{postliminary}%
 {\pagestyle{\back@pagestyle}}%
 {\settocdepth{\chapter@tocdepth}%
  \pagestyle{\body@pagestyle}}

%
%% \begin{vita}...\end{vita} formats a
%% vita section
%
\newenvironment{vita}{%
 \typeout{*****************        Vita       ******************}
 \newlinestretch{\@spacing}
 \if@openright\cleardoublepage\else\clearpage\fi
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{Vita}}{Vita}}
 \chapter*{\MakeUppercase{Vita}}
 \@mkboth{\scshape\MakeUppercase{Vita}}%
         {\scshape\MakeUppercase{Vita}}%
 \vskip 0.5in
 \begingroup
}{\par\endgroup}%Vita

\newcommand{\beforepostface}{%
 \pagestyle{\back@pagestyle}
}%

%
%% \postfacesection is here for backward compatibility with
%% the GT-thesis.sty package, and to add postface sections
%% that are not already defined.  (Appendices are not postface
%% material).  Currently, the only predefined postface section
%% is Vita.  Use \begin{vita}...\end{vita}.  (``Index'' is a
%% postface section, but: it is defined in the add-on style
%% gatech-thesis-index.sty, and it doesn't use \postfacesection.)
%
\newcommand{\postfacesection}[1]{%
 \newlinestretch{\@spacing}
 \if@openright\cleardoublepage\else\clearpage\fi
 % must clear page here, so that phantomsection\addcontentsline is on the correct page
 \phantomsection%
 \addcontentsline{toc}{chapter}%
   {\texorpdfstring{\Makeuppercase{#1}}{#1}}
 \chapter*{\MakeUppercase{#1}}
 \@mkboth{\scshape\MakeUppercase{#1}}%
         {\scshape\MakeUppercase{#1}}%
 \pagestyle{\back@pagestyle}
 \vskip 0.5in
}
\newcommand{\afterpostface}{
  \settocdepth{\chapter@tocdepth}%
  \pagestyle{\body@pagestyle}
}
\newcommand{\refname}{References}
\newcommand{\references}{%
 \ifbibpage
   \typeout{*****************     References    ******************}
   \newlinestretch{1.0}
   \if@openright\cleardoublepage\else\clearpage\fi
   % must clear page here, so that phantomsection\addcontentsline is on the correct page
   \phantomsection%
   \addcontentsline{toc}{chapter}%
     {\texorpdfstring{\Makeuppercase{\refname}}{\refname}}
%    \bibliographystyle{gatech-thesis}
   \bibliography{\@bibfiles}
 \fi
}

%%%%%%%%%   BIBLIOGRAPHY %%%%%%%%%%%%%%%%%
%%
%% redefine ``thebibliography'' environment so that title conforms to Georgia
%% Tech format (all caps, center of page)
%%
\renewenvironment{thebibliography}[1]{
 { \chapter*{\MakeUppercase{\refname}}
   \@mkboth{\scshape\MakeUppercase\refname}%
           {\scshape\MakeUppercase\refname}%
   \pagestyle{\body@pagestyle}% REFERENCES uses BODY pagestyle, not endmatter.
   \vskip 0.5in
 }
 \list{\@biblabel{\@arabic\c@enumiv}}%
 { \settowidth\labelwidth{\@biblabel{#1}}%
     \leftmargin\labelwidth
     \advance\leftmargin\labelsep
     \@openbib@code
     \usecounter{enumiv}%
     \let\p@enumiv\@empty
     \renewcommand\theenumiv{\@arabic\c@enumiv}
 }%
 \sloppy
 \clubpenalty4000
 \@clubpenalty \clubpenalty
 \widowpenalty4000%
 \sfcode`\.\@m}
 {\def\@noitemerr
    {\@latex@warning{Empty ``thebibliography'' environment}
 \pagestyle{\back@pagestyle}
 }%
 \endlist
}

%
%% Variations of \cleardoublepage that explicitly set the pagestyle
%% of any inserted blank page.
%
\newcommand{\clearemptydoublepage}%
 {{\pagestyle{empty}\cleardoublepage}}
\newcommand{\clearplaindoublepage}%
 {{\pagestyle{plain}\cleardoublepage}}
\newcommand{\cleartcplaindoublepage}%
 {{\pagestyle{tcplain}\cleardoublepage}}
\newcommand{\cleargtthesisdoublepage}%
 {{\pagestyle{gtthesis}\cleardoublepage}}

\newcommand{\setfrontpagestyle}[1]{%
 \gdef\front@pagestyle{#1}
}
\newcommand{\setbodypagestyle}[1]{%
 \gdef\body@pagestyle{#1}
}
\newcommand{\setbackpagestyle}[1]{%
 \gdef\back@pagestyle{#1}
}

%%%%%%    Page Styles
%
%% Redefine all four standard page styles (empty, plain, headings,
%% myheadings), based on the definitions in ``report'', so that they
%% conform to the GSO guidelines (and include draft information if
%% applicable).
%%
%% Also, define a new pagestyle ``tcplain'' which is just like ``plain'',
%% but puts page numbers in header (left/right 2page, or right 1page)
%% instead of at the bottom of the page.
%%
%% Then, define a new pagestyle ``gtthesis''. I like this one better
%% but the Graduate Studies Office doesn't. :-(
%
\renewcommand{\ps@empty}{
 \@tcpagefalse
 \let\@mkboth\@gobbletwo
 \def\@oddfoot{
   \if@draft
     \blDRAFT\hfil
     {\slshape\small\today}\hfil\brDRAFT
   \fi
 }%
 \let\@evenfoot\@oddfoot
 \def\@oddhead{
   \if@draft
     \tlDRAFT\hfil
     {\slshape\small\today}\hfil\trDRAFT
   \fi
 }%
 \let\@evenhead\@oddhead
}%ps@empty

%
%% Pagestyle ``plain''.
%
\renewcommand{\ps@plain}{%
 \@tcpagefalse%
 \let\@mkboth\@gobbletwo%
 \def\@oddfoot{%
   \if@draft\blDRAFT\fi%
   \hfil\thepage\hfil%
   \if@draft\brDRAFT\fi%
 }%
 \let\@evenfoot\@oddfoot%
 \def\@oddhead{%
   \if@draft%
     \tlDRAFT\hfil%
     {\slshape\small\today}\hfil\trDRAFT%
   \fi%
 }%
 \let\@evenhead\@oddhead%
}%ps@plain

%
%% Pagestyle ``headings''.
%
\if@twoside % if two-sided printing
 \renewcommand{\ps@headings}{%
   \@tcpagefalse%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \let\@evenfoot\@oddfoot%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     {\slshape\rightmark}\hfil%
     \thepage%
     \if@draft\trDRAFT\fi%
   }%
   \def\@evenhead{%
     \if@draft\tlDRAFT\fi%
     \thepage\hfil%
     {\slshape\leftmark}%
     \if@draft\trDRAFT\fi%
   }%
   \def\chaptermark##1{%
     \markboth
     {\MakeUppercase{%
       \ifnum\c@secnumdepth >\m@ne%
         \@chapapp\ \thechapter. \ %
       \fi ##1}%
     }{}%
   }%
   \def\sectionmark##1{%
     \markright%
     {\MakeUppercase{%
       \ifnum\c@secnumdepth >\z@%
         \thesection. \ %
       \fi ##1}%
     }%
   }%
 }%ps@headings
\else % if one-sided printing
 \renewcommand{\ps@headings}{%
   \@tcpagefalse%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     {\slshape\rightmark}\hfil%
     \thepage%
     \if@draft\trDRAFT\fi%
   }%
   \def\chaptermark##1{%
     \markright%
     {\MakeUppercase{%
       \ifnum\c@secnumdepth >\m@ne%
         \@chapapp\ \thechapter. \ %
       \fi ##1}%
     }%
   }%
 }%ps@headings
\fi % @twoside

%
%% Pagestyle ``myheadings''.
%
\renewcommand{\ps@myheadings}{%
 \@tcpagefalse%
 \let\@mkboth\@gobbletwo%
 \def\@oddfoot{%
   \if@draft%
     \blDRAFT\hfil%
     {\slshape\small\today}\hfil\brDRAFT%
   \fi%
  }%
  \let\@evenfoot\@oddfoot%
  \def\@oddhead{%
    \if@draft\tlDRAFT\fi%
    {\slshape\rightmark}\hfil%
    \thepage%
    \if@draft\trDRAFT\fi%
  }%
  \def\@evenhead{%
    \if@draft\tlDRAFT\fi%
    \thepage\hfil%
    {\slshape\leftmark}%
    \if@draft\trDRAFT\fi%
  }%
  \let\chaptermark\@gobble\let\sectionmark\@gobble%
}%ps@myheadings

%
%% Pagestyle ``gtthesis'' (based on ``headings'').
%
\if@twoside % if two-sided printing
 \newcommand{\ps@gtthesis}{%
   \@tcpagetrue%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \let\@evenfoot\@oddfoot%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     {\slshape\rightmark}\hfil%
     \thepage%
     \if@draft\trDRAFT\fi%
   }%
   \def\@evenhead{%
     \if@draft\tlDRAFT\fi%
     \thepage\hfil%
     {\slshape\leftmark}%
     \if@draft\trDRAFT\fi%
   }%
   \def\chaptermark##1{%
     \markboth%
     {\textsc{%
       \ifnum\c@secnumdepth >\m@ne%
         \@chapapp\ \thechapter. \ %
       \fi ##1}%
     }{}%
   }%
   \def\sectionmark##1{%
     \markright%
     {\textsc{%
       \ifnum\c@secnumdepth >\z@%
         \thesection. \ %
       \fi ##1}%
     }
   }%
 }%ps@gtthesis
\else % if one-sided printing
 \newcommand{\ps@gtthesis}{%
   \@tcpagetrue%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     {\slshape\rightmark}\hfil%
     \thepage%
     \if@draft\trDRAFT\fi%
   }%
   \def\chaptermark##1{%
     \markright%
     {\textsc{%
       \ifnum\c@secnumdepth >\m@ne%
         \@chapapp\ \thechapter. \ %
       \fi ##1}%
     }
   }%
 }%ps@gtthesis
\fi % @twoside

%
%% Pagestyle ``tcplain'' (based on ``plain'').
%
\if@twoside % if two-sided printing
 \newcommand{\ps@tcplain}{%
   \@tcpagetrue%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \let\@evenfoot\@oddfoot%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     \hfil\thepage%
     \if@draft\trDRAFT\fi%
   }%
   \def\@evenhead{%
     \if@draft\tlDRAFT\fi%
     \thepage\hfil%
     \if@draft\trDRAFT\fi%
   }%
 }%ps@tcplain
\else % if one-sided printing
 \newcommand{\ps@tcplain}{%
   \@tcpagetrue%
   \let\@mkboth\markboth%
   \def\@oddfoot{%
     \if@draft%
       \blDRAFT\hfil%
       {\slshape\small\today}\hfil\brDRAFT%
     \fi%
   }%
   \def\@oddhead{%
     \if@draft\tlDRAFT\fi%
     \hfil\thepage%
     \if@draft\trDRAFT\fi%
   }%
 }%ps@tcplain
\fi % @twoside


%%%%%%    Document Layout
%
%% Default line spacing: use current setting from options.
%
\linespacing{\@thesislnsp}
%
%% Page layout (see The LaTeX Companion pp.84-86).
%
%% By default, TeX puts the ``reference point'' one inch down and to
%% the right of the top-left corner of the page.  This moves it back
%% to the top-left corner (making the rest of the layout easier to
%% define).
%
\setlength{\voffset}{-1in}
\setlength{\hoffset}{-1in}
%
%% Instead of hard-coding the page layout for letter paper
%% (8.5" x 11"), we will base it on \paperheight and \paperwidth,
%% so that it works with options that change the paper size.
%
\setlength{\textheight}{\paperheight}
\setlength{\textwidth}{\paperwidth}
%
%% Now, set the margin-dependent values.
%
\ifcase\@marginsize % set narrow margins: 1 1/4" left, 3/4" others
%
\addtolength{\textheight}{-1.5in}
\setlength{\topmargin}{.5in}
\setlength{\headsep}{.25in}
\setlength{\footskip}{.25in}
\addtolength{\textwidth}{-2in}
\setlength{\oddsidemargin}{1.25in}
\setlength{\evensidemargin}{.75in}
\setlength{\marginparwidth}{.5in}
\setlength{\marginparsep}{.125in}
%
\or % set normal margins: 1.5 " left, 1" others (modified 01/27/01)
%
\addtolength{\textheight}{-2in}
\setlength{\topmargin}{0.5in}
\setlength{\headsep}{0.5in}   % reduced by headheight, below
\setlength{\footskip}{0.5in}
\addtolength{\textwidth}{-2.5in}
\setlength{\oddsidemargin}{1.5in}
\setlength{\evensidemargin}{1in}
\setlength{\marginparwidth}{.75in}
\setlength{\marginparsep}{.125in}
%
\or % set wide margins: 1.5" left, 1" others, 2"" top (modified 01/14/00)
%
\addtolength{\textheight}{-3in}
\setlength{\topmargin}{1in}
\setlength{\headsep}{.5in} % reduced by headheight, below
\setlength{\footskip}{0.5in}
\addtolength{\textwidth}{-2.5in}
\setlength{\oddsidemargin}{1.5in}
\setlength{\evensidemargin}{1in}
\setlength{\marginparwidth}{.75in}
\setlength{\marginparsep}{.125in}
%
\or % set extra wide margins: 1 1/2"" all around
%
\addtolength{\textheight}{-3in}
\setlength{\topmargin}{1in}
\setlength{\headsep}{.5in}
\setlength{\footskip}{.5in}
\addtolength{\textwidth}{-3in}
\setlength{\oddsidemargin}{1.5in}
\setlength{\evensidemargin}{1.5in}
\setlength{\marginparwidth}{1in}
\setlength{\marginparsep}{.25in}
%
\or % use oldmargin (OLD GT): 1.5" left and top, 1" others (modified 01/27/01)
%
\addtolength{\textheight}{-2.5in}
\setlength{\topmargin}{0.75in}
\setlength{\headsep}{0.75in}   % reduced by headheight, below
\setlength{\footskip}{0.5in}
\addtolength{\textwidth}{-2.5in}
\setlength{\oddsidemargin}{1.5in}
\setlength{\evensidemargin}{1in}
\setlength{\marginparwidth}{.75in}
\setlength{\marginparsep}{.125in}
%
\fi%@marginsize
%
%% Adjust \headsep to include height of running head.
%
\addtolength{\headsep}{-\headheight}
%
%% Adjust the vertical spacing between the main text and the notes,
%% and between successive notes if they are not single-spaced.
%
\setlength{\skip\footins}{.75\baselineskip}
\if@singlespacednotes
\else
 \let\oldtextsize=\currenttextsize
 \footnotesize
 \setlength{\marginparpush}{\baselineskip}
 \setlength{\footnotesep}{\baselineskip}
 \oldtextsize
\fi % @singlespacednotes
%
%% \flushbottom looks silly with lots of extra space between paragraphs
%% better to put the "extra" space at the bottom of the page!
%
\raggedbottom
%
%% Default page style.
%
\pagestyle{plain}
\setfrontpagestyle{plain}
\setbodypagestyle{plain}
\setbackpagestyle{plain}

%
%% Number subsubsections
%
\setcounter{secnumdepth}{3}

%
%% Show subsubsections in table of contents
%% tocdepth is reset to the value in \setchaptertocdepth
%%   at each \chapter{}, or to the value in \setappendixtocdepth
%%   at each \chapter{} after the \appendix command.  So, if
%%   you want to change the defaults, use \setchaptertocdepth and
%%   \setappendixtocdepth.  To temporarily change depth for the
%%   current section, use a different function: \settocdepth[x].
%%   You should never need to call \setcounter{tocdepth}{..}
%%   directly.
%%
%% 0 = chapter only
%% 1 = chapter + sections
%% 2 = chapter, section, subsection
%% 3 = chapter, section, subsection, subsubsection
%
\setcounter{tocdepth}{3} % we call setcounter{tocdepth}{} directly here
                        % but user .tex files should not do this.
% We must insure that the last \setcounter command in the .toc
% file is NON-ZERO, or the listoffigures and listoftables become
% empty.  Bad news. Unfortunately, that means we must do some
% raw TeXing here...
%   You would think the \end{postliminary} code would fix this, and it
% does -- but only if you don't \include your vita.  \input{vita}
% works great because the \end{postliminary} code causes
% \setcounter{tocdepth}{NONZERO} to be written.  But, if you
% \include{vita} (or whatever the LAST section before \end{postliminary}
% is) and the \setcounter command from \end{postliminary} does NOT get
% written to the .aux file.  Fooey.  This is our workaround.
%   BUT, do NOT remove the one from \end{postliminary}.  When
% \input{vita}, THAT one gets used, and not this one!  Clearly,
% a LaTeX bug.
\AtEndDocument{%
 \immediate\write\@auxout%
 {\string\@writefile{toc}{\string\setcounter{tocdepth}{3}}}
 \clearpage\lastpage@putlabel}%

\setchaptertocdepth{2}
\setappendixtocdepth{0}

%% Disallow page breaks at hyphens (this will give some underfull vbox's,
%% so an alternative is to use \brokenpenalty=100 and manually search
%% for and fix such page breaks)
%
\brokenpenalty=10000
\InputIfFileExists{gatech-thesis-patch.sty}{}{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  End of GATECH-THESIS.CLS
%%
%%  license information is in the COPYING file.  The copyright notice
%%  therein applies to the license itself, not to this file: the GNU
%%  PUBLIC LICENSE is copyrighted by the Free Software Foundation.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%