summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nddiss
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/nddiss')
-rw-r--r--macros/latex/contrib/nddiss/LICENSE416
-rw-r--r--macros/latex/contrib/nddiss/README.md59
-rw-r--r--macros/latex/contrib/nddiss/ltxdoc.cfg5
-rw-r--r--macros/latex/contrib/nddiss/nddiss2e.bst1437
-rw-r--r--macros/latex/contrib/nddiss/nddiss2e.dtx2416
-rw-r--r--macros/latex/contrib/nddiss/nddiss2e.ins73
-rw-r--r--macros/latex/contrib/nddiss/nddiss2e.pdfbin0 -> 377077 bytes
-rwxr-xr-xmacros/latex/contrib/nddiss/process.sh19
8 files changed, 4425 insertions, 0 deletions
diff --git a/macros/latex/contrib/nddiss/LICENSE b/macros/latex/contrib/nddiss/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/nddiss/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/nddiss/README.md b/macros/latex/contrib/nddiss/README.md
new file mode 100644
index 0000000000..dcdafe24ae
--- /dev/null
+++ b/macros/latex/contrib/nddiss/README.md
@@ -0,0 +1,59 @@
+nddiss
+======
+
+`nddiss` is a LaTeX package providing a document class for formatting doctoral
+dissertations submitted to the University of Notre Dame's Graduate School.
+
+Copies of this package can be found in many places:
+
+ * CTAN: https://ctan.org/pkg/nddiss
+ * GitHub: https://github.com/ndlib/nddiss
+ * Notre Dame Graduate School website: http://graduateschool.nd.edu/resources-for-current-students/dt/dt-resources/
+
+Please send any improvements, suggestions, or bug reports to
+
+ * Shari Hill Sweet, shill2@nd.edu
+ * Don Brower, dbrower@nd.edu
+
+
+# Usage
+
+Easiest way to begin is to start with either the file `example/example.tex` or the template `template.tex`.
+The [manual](nddiss2e.pdf) has a lot more information.
+
+The [example](example) directory contains a sample thesis demonstrating the usage of this package.
+
+[comment]: # (The files are the same as in the `sample_ndthesis.tar.gz` distribution by Jeff Squyeres)
+[comment]: # (and D. A. Peterson, but modified for the nddiss2e class.)
+
+
+# Installation
+
+The easiest way to install this package is to copy the `nddiss2e.cls` and
+`nddiss2e.bst` files into the same directory as your LaTeX source file.
+
+Beware! If seems `nddiss2e` is already installed on your machine, it is
+probably an outdated version from 2005. Please use the current version.
+
+
+# This Repository
+
+The `Makefile` contains all the logic to process the master source file, `nddiss2e.dtx`.
+The `nddiss2e.cls`, `nddiss2e.pdf`, and `template.tex` files are generated from the `dtx` file.
+Run `make` to regenerate everything.
+These derivatives are checked into the repo to make it easier for people to access and download them.
+
+
+# Authors
+
+The original version, created by Sameer Vijay, follows the Spring 2004 formatting guidelines.
+Later, Megan Patnott updated it to follow the Spring 2013 guidelines.
+
+This is based off of the style file created by D. A. Peterson, Jeff Squyeres, and others.
+
+
+# License
+
+This file may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.2 of this license or (at your option)
+any later version. The latest version of this license can be found at http://www.latex-project.org/lppl.txt.
diff --git a/macros/latex/contrib/nddiss/ltxdoc.cfg b/macros/latex/contrib/nddiss/ltxdoc.cfg
new file mode 100644
index 0000000000..645e2be6b6
--- /dev/null
+++ b/macros/latex/contrib/nddiss/ltxdoc.cfg
@@ -0,0 +1,5 @@
+\PassOptionsToClass{letterpaper}{article}
+\AtEndOfPackage{\RequirePackage{hyperref}}
+
+%% To create a pdf using dvipdfm, uncomment the next line.
+%%\PassOptionsToPackage{dvipdfm=true,bookmarks=true}{hyperref}
diff --git a/macros/latex/contrib/nddiss/nddiss2e.bst b/macros/latex/contrib/nddiss/nddiss2e.bst
new file mode 100644
index 0000000000..394616b625
--- /dev/null
+++ b/macros/latex/contrib/nddiss/nddiss2e.bst
@@ -0,0 +1,1437 @@
+%%
+%% File: `nddiss2e.bst'
+%% A modification of `abbrvnat.bst' for use with nddiss2e class file.
+%% Modified by Sameer Vijay
+%%
+%% File: `abbrvnat.bst'
+%% A modification of `abbrv.bst' for use with natbib package
+%%
+%% Copyright 1993-2005 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{natbst.mbs}[2005/01/07 1.8 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", editors" * }
+ { ", editor" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pages" pages n.dashify tie.or.space.connect }
+ { "page" pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \citep{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ 'skip$
+ if$
+ ", \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ format.url output
+ new.block
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+
+MACRO {ibmsj} {"IBM Syst.~J."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+
+MACRO {scp} {"Sci. Comput. Programming"}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Gr."}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+
+MACRO {tcs} {"Theoretical Comput. Sci."}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/macros/latex/contrib/nddiss/nddiss2e.dtx b/macros/latex/contrib/nddiss/nddiss2e.dtx
new file mode 100644
index 0000000000..6d1ec98b05
--- /dev/null
+++ b/macros/latex/contrib/nddiss/nddiss2e.dtx
@@ -0,0 +1,2416 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2004-2005 by Sameer Vijay
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.2 of this license or (at your option) any later
+% version. The latest version of this license is in
+%
+% http://www.latex-project.org/lppl.txt
+%
+%
+% \fi
+%
+%
+% \CheckSum{1478}
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \changes{v0.98}{2004/04/15}{Initial {\em beta} version}
+% \renewcommand{\generalname}{Release}
+% \changes{v1.0}{2004/06/15}{First release}
+% \renewcommand{\generalname}{General}
+% \changes{v1.1}{2005/04/14}{Minor changes and clean-up}
+% \changes{v2.0}{2005/05/14}{Some bugfixes, cleaned some of documentation}
+% \changes{v2.1}{2005/06/14}{More bugfixes, changes in documentation}
+% \renewcommand{\generalname}{Release}
+% \changes{v3.0}{2005/07/27}{Major revamp and clean-up of the code, added
+% \texttt{numrefs} and \texttt{textrefs} to allow different kinds of citation
+% styles, added some more macros and modified others,
+% changed the titlepage a bit, completed source documentation}
+% \changes{v3.2013$\beta$}{2013/1/14}{Initial release of updates in order to comply with
+% the Graduate School's current formatting regulations and to take advantage
+% of some LaTeX package updates. Should be functional, and has been approved
+% by the Dissertation/Thesis editors, but has not undergone wide-scale testing. - Megan Patnott}
+% \changes{v3.2013}{2013/4/20}{Some bug fixes, minor changes in documentation, and addition of support for parts. - MP}
+% \changes{v3.2016}{2016/10/16}{Fix natbib/showkeys ordering bug}
+% \changes{v3.2017.1}{2017/05/09}{Display (CONTINUED) on multipage long table captions}
+% \changes{v3.2017.2}{2017/08/23}{Add LuaLaTeX support. Allow non-capitalized titles.}
+% \renewcommand{\generalname}{Update}
+%
+% \iffalse (Don't show this in the doc).
+% \begin{macrocode}
+%<*driver>
+\ProvidesFile{nddiss2e.dtx}
+\documentclass{ltxdoc}
+\setcounter{secnumdepth}{2}
+\setcounter{tocdepth}{2}
+\DeclareRobustCommand{\nddiss}{%
+ \textsf{{\scshape nd}diss}\kern-0.03em%
+ 2$_\mathsf{\textstyle\varepsilon}$}
+\providecommand{\dissfileversion}{3.2017.2}
+\providecommand{\dissfiledate}{2017-05-09}
+\DisableCrossrefs
+\CodelineNumbered
+\RecordChanges
+\begin{document}
+ \DocInput{nddiss2e.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \title{The \nddiss\/ class\thanks{Version~\dissfileversion,%
+% dated~\dissfiledate.}}
+%
+% \date{\dissfiledate}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \nddiss\space class can be used to typeset dissertations submitted
+% to the University of Notre Dame's Graduate School. This class conforms with
+% the Graduate School guidelines as of Spring 2013 for the layout of the Ph.D.
+% dissertations and Master's theses.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+% \label{sec:intro}
+% The \LaTeXe\space document class \nddiss\ is suitable for producing dissertations
+% and theses conforming to the Spring 2013
+% guidelines of the Graduate School at the University of Notre Dame.
+% The package is extends the standard \LaTeX\/ \textsf{book} class.
+%
+% The latest version of this class and related documentation can be found
+% in a few places:
+% \begin{itemize}
+% \item On CTAN: \url{https://ctan.org/pkg/nddiss}
+% \item On GitHub: \url{https://github.com/ndlib/nddiss}
+% \item On the University of Notre Dame's Graduate School website: \url{http://graduateschool.nd.edu/}
+% \end{itemize}
+%
+% \subsection{Disclaimer}
+% \label{sec:disclaimer}
+% While this class does as much formatting as it can, there are a few formatting items that
+% you, the user, must do manually (see Section \ref{sec:author}).
+% Please keep in mind that only \emph{you} are responsible for the
+% correct formatting of your dissertation/thesis.
+% Should you have questions, please consult the official formatting guide or email \url{dteditor@nd.edu}.
+%
+% \subsection{Dependencies and Limitations}
+% \label{sec:deps}
+% This classfile depends on many other packages to be installed.
+% All of these required packages are available through MiKTeX and TeXLive, and
+% chances are good they are already installed by your TeX distribution.
+% Refer to section \ref{sec:features} for a list of the essential packages.
+%
+% The document class has only been tested with a small subset of available packages.
+% There are numerous packages you may want to use for your work, but they may have
+% to be modified accordingly.
+% Things lacking include support for the \textsf{subfigure}
+% and \textsf{subcaption} package and proper formatting of the captions in such an environment.
+% Formatting of the captions could be much easier with the
+% \textsf{caption}\footnote{\textsf{caption} package by Axel Sommerfeldt v3.0b[2004/05/16]
+% and higher} in general, and is a thing-to-do for future versions. Permitting use of the
+% \textsf{subfigure} and \textsf{subcaption} packages would also be a good thing to do
+% if an update is ever made for reaosns other than resolving conflicts caused by changing
+% Graduate School regulations. If you want to use a \textsf{subfigure} environment and don't
+% need the caption capabilities of the \textsf{subcaption} package, adding the following
+% code to your preamble may allow you to do this and still have your captions formatted
+% according to the Graduate School's rules.
+% \begin{verbatim}
+% \usepackage{subcaption}
+% \makeatletter
+% \renewcommand\LT@makecaption[3]{%
+% \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+% \vskip\abovetableskip%
+% \centering\normalspacing
+% #1{#2 }\\[\single@skip]
+% {#3}\par
+% \endgraf\vskip\belowtableskip}%
+% \hss}}}
+% \makeatother
+% \end{verbatim}
+%
+% \subsection{History}
+%
+% The \nddiss\ package is an extensive rewrite by Sameer Vijay of an earlier \textsf{NDthesis} class
+% for formatting dissertations.
+% Megan Patnott updated \nddiss\ to the 2013 Graduate School Formatting guidelines.
+% The \textsf{NDThesis} class was by D. A. Peterson.
+%
+% \section{Quick Start}
+%
+% This section provides a template you can use to get started.
+% The distribution comes with a more detailed file, |template.tex|, that is similar, but more detailed.
+%
+% \begin{verbatim}
+% \documentclass[numrefs,final]{nddiss2e}
+%
+% \begin{document}
+%
+% \frontmatter
+%
+% \title{Title in Title Caps}
+% \author{Your Name}
+% \work{Dissertation}
+% \degaward{Doctor of Philosophy}
+% \advisor{}
+% \department{}
+% \maketitle
+% \makepublicdomain % There is also a copyright option
+%
+% \begin{abstract}
+% Abstract here
+% \end{abstract}
+%
+% % dedication is optional
+% \begin{dedication}
+% For Someone
+% \end{dedication}
+%
+% \tableofcontents
+% \listoffigures
+% \listoftables
+%
+% % list of symbols is optional
+% \begin{symbols}
+% \sym{a}{definition of a}
+% \end{symbol}
+%
+% % preface is optional
+% \begin{preface}
+% Preface here
+% \end{preface}
+%
+% \begin{acknowledge}
+% Thanks to everyone
+% \end{acknowledge}
+%
+% \mainmatter
+%
+% \chapter{A New Dawn} % Chapter 1
+% All the text ...
+%
+% \appendix
+% \chapter{Additional Data} % Appendix A
+%
+% \backmatter
+% \bibliographystyle{nddiss2e}
+% \bibliography{bibdatabase}
+%
+% \end{document}
+% \end{verbatim}
+%
+%
+% \section{Usage}
+%
+% Invoke the \nddiss\space document class by adding |\documentclass|\oarg{options}|{nddiss2e}|
+% at the beginning of your \LaTeX\space source file.
+% For most people the options |\documentclass[draft]{nddiss2e}| is good enough for the initial revisions.
+% If you want your figures to display, use |\documentclass[review]{nddiss2e}|.
+%
+% Use the option |\documentclass[final]{nddiss2e}| for your formatting check submission,
+% and |\documentclass[final,noinfo]{nddiss2e}| for the final submitted version.
+%
+% If you have two advisors, add the option |twoadvisors| here, and then use |\secondadvisor{}|
+% later on the title page to give the name of the second advisor.
+%
+% By default, all documents produced using this class
+% are formatted as one-sided, doublespaced, letter-sized pages, per the Graduate School requirements.
+% In theory, the class file's specifications should override your system's defaults.
+% If, however, you are getting A4 paper, try adding |\pdfpagewidth{8.5in}| and
+% |\pdfpageheight{11in}| immediately after the |\documentclass| in your file.
+%
+% \subsection{Options}
+% \label{subsec:options}
+%
+% \DescribeMacro{draft}
+% \DescribeMacro{review}
+% \DescribeMacro{final}
+% Exactly \emph{one} of these options must be used.
+% The |draft| and |review| options enable faster processing of the document and
+% also include annotations to help write and edit it.
+%
+% The |draft| option enables a fast processing and preliminary document
+% showing the labels for citations, tables, figures etc. and a black solid rule
+% highlighting the horizontal overflows. Additionally, figures are replaced
+% with placement boxes showing where the included figure would be placed. Such
+% a document would be the one you would prepare for revising your text during
+% writing stages.
+%
+% The |review| option makes it possible to prepare a document that is
+% one step closer to the final version.
+% Almost all the formatting of the final version is present,
+% but the labels and keys as in the |draft| option are also displayed.
+% A document prepared with the |review| option would be the one to
+% personally check for proper formatting and possibly giving to your advisor if
+% she wished to suggest corrections.
+%
+% The |final| option produces the document to be submitted to the Graduate School for
+% formatting checks and as the final version.
+%
+% \DescribeMacro{twoadvisors}
+% The |twoadvisors| option will produce a title page with space for two advisors.
+% Use the |\secondadvisor| macro command
+% (discussed in Section \ref{subsec:titlepage}) on the title page to give the
+% name of the second advisor.
+%
+% \DescribeMacro{noinfo}
+% The |noinfo| option disables the information page produced
+% when the |review| or |final| style options are used. It is
+% recommended that you only use this option when making the final
+% submission to the Graduate School.
+%
+% \DescribeMacro{numrefs}
+% \DescribeMacro{textrefs}
+% These options determine how citations are displayed in the text.
+% The default style is |numrefs|.
+% The |numrefs| option produces a numbered citation sytle by using \textsf{natbib}
+% and the ``nddiss2e'' or ``nddiss2enoarticletitles'' citation style
+% file\footnote{|nddiss2e.bst| is a slight modificiation of |abbrvnat.bst|
+% in the \textsf{natbib} package; |nddiss2enoarticletitles.bst| is
+% essentially the same as |nddiss2e|, but does not display the titles of
+% journal articles, as this is the standard in some fields}.
+% The |textrefs| option changes the citation style to be similar to
+% ``author-date'' style with the same files.
+%
+% \DescribeMacro{sort}
+% \DescribeMacro{compress}
+% \DescribeMacro{sort\&compress}
+% At most one of these options should be selected. The |sort| option will cause
+% both numerical and ``author-date'' style references to be sorted in the order
+% that they appear in the bibliography when multiple references are cited. The
+% |compress| option compresses numerical citations, e.g. it turns [1,2,3] into
+% [1-3], and does nothing to ``author-date'' style references. The
+% |sort&compress| option first sorts and then compresses numerical references, and
+% only sorts ``author-date'' style references.
+%
+% Since the same set of packages and
+% style files result in differing citation formats,
+% refer to the documentation for |natnotes.dvi| in your |TEXMF| tree,
+% to be aware of the
+% various ways in which you can make a citation in your text.
+%
+% \DescribeMacro{10pt}
+% \DescribeMacro{11pt}
+% \DescribeMacro{12pt}
+% These options adjust the font size of the body text.
+% The choice is only applicable when the |draft| option is used, and defaults
+% to |10pt|.
+% When |review| or |final| is used, this option is ignored and |12pt| is used.
+%
+% \DescribeMacro{twoside}
+% The |twoside| option causes the class file to prepare a document meant
+% to be printed double-sided.
+% This option is strictly for if you want to prepare a two-sided document for
+% your own use. The only difference from the one-sided document is in the page
+% layout.
+% Do NOT use this option when preparing to submit it to the Graduate School.
+%
+% \DescribeMacro{nocenter}
+% The |nocenter| option allows non-centered chapter titles.
+% Do NOT turn in your document this way to the Graduate School!
+%
+% \DescribeMacro{openbib}
+% The |openbib| option formats your bibliography in the following manner: \\
+% \qquad Author \\
+% \qquad \qquad Article/book title \\
+% \qquad \qquad Other information \\
+% \qquad \qquad Website, if applicable \\
+% Usually you would not need to use this option since the default layout of the
+% |bibliography| is acceptable.
+%
+% \section{Arrangement of Contents}
+%
+% A dissertation or a thesis document contains the following parts,
+% in the order listed. Only those marked as optional may be omitted.
+%
+% \begin{enumerate}
+% \item Title Page
+% \item Copyright page
+% \item Abstract \emph{(optional for Master's thesis)}
+% \item Dedication \emph{(optional)}
+% \item Table of Contents
+% \item List of Figures
+% \item List of Tables
+% \item List of Symbols \emph{(optional)}
+% \item Preface \emph{(optional)}
+% \item Acknowledgments \emph{(optional)}
+% \item Text
+% \item Appendix (or Appendices) \emph{(optional)}
+% \item Bibliography (or References, or Works cited)
+% \end{enumerate}
+%
+% The macros and environments described below ease the formatting of these
+% parts.
+%
+% \subsection{Title Page}
+% \label{subsec:titlepage}
+%
+% \DescribeMacro{\maketitle}
+% The title page is generated by |\maketitle| with no arguments.
+% This macro has been modified for providing a title page in the correct format.
+%
+% You can set information to display on the title page by using the following
+% commands before invoking |\maketitle|.
+% \begin{itemize}
+% \item \DescribeMacro{\title\{\}} The title of the document, using the
+% |\title| macro. You may use linebreaks within the title,
+% protected via |\protect\\| and the title may be up to four
+% lines long.
+% \item \DescribeMacro{\author\{\}} Give your name in full and exactly as
+% registered with the Graduate School, using the
+% |\author| macro, e.g. |\author{Gary Graham Gordon-Graeme}|).
+% \item \DescribeMacro{\work\{\}} Whether the document is a
+% \emph{Thesis} or a \emph{Dissertation} as the argument of the
+% |\work| macro, e.g. |\work{Dissertation}|).
+% \item \DescribeMacro{\degaward\{\}} Specify the degree you're aiming for
+% with the |\degaward| macro. Should be one of
+% |\degaward{Doctor of Philosophy}| (without the ``in \emph{subject}'' or
+% |\degaward{Master of Science\\in\\Engineering}|.
+% \item \DescribeMacro{\advisor\{\}} Give the name of your advisor with
+% the |\advisor| macro.
+% \item \DescribeMacro{\secondadvisor\{\}} Give the name of your second advisor,
+% if any, with the |\secondadvisor| macro. You also need to pass in the
+% |twoadvisors| option in the |\documentclass| declaration.
+% \item \DescribeMacro{\department\{\}} Give the name of your department with the
+% |\department| macro, e.g. |\department{Gnulogical Engineering}|).
+% \item \DescribeMacro{\degdate\{\}} The month and year of the defense of the
+% thesis with the |\degdate| e.g. |\degdate{June 2004}|). If you forget to
+% declare this, the current month/year will be used.
+% \end{itemize}
+%
+% \subsection{Copyright Page}
+% \DescribeMacro{\makecopyright}
+% \DescribeMacro{\copyrightholder\{\}}
+% \DescribeMacro{\copyrightyear\{\}}
+% The |\makecopyright| macro should be invoked after |\maketitle| to
+% produce a copyright page.
+% Prior to calling |\makecopyright|, you may specify a different name
+% for the copyright holder (the default is the name given through the
+% |\author| macro) and for the copyright year (the default being the
+% current year). Do this with the |\copyrightholder|\marg{name}
+% and |\copyrightyear|\marg{year} macros.
+%
+% \DescribeMacro{\makepublicdomain}
+% Alternatively, you can use
+% |\makepublicdomain| to produce a page with the message ``This document
+% is in the public domain.'' Note that the absence of the copyright page
+% does \emph{not} place your dissertaion in the public domain, you must
+% declare it as such explicitly.
+%
+% \subsection{Abstract Page(s)}
+% \DescribeEnv{abstract}
+% The abstract text should be placed between
+% |\begin{abstract}| and |\end{abstract}|.
+% If the abstract is longer than one page, the environment will place
+% the author's name in the top-right header.
+%
+% \DescribeMacro{\abstractname\{\}}
+% You may use |\abstractname|\marg{text} to change the abstract caption
+% to |text|.
+% Default name: |Abstract|.
+% You probably don't need to change it.
+%
+% \subsection{Dedication}
+% \DescribeEnv{dedication}
+% The dedication is optional.
+% If you want one, use the \textsf{dedication} envrionment.
+% The format of dedication is essentially free.
+% This environment will center the text of your dedication vertically on the page.
+%
+% \DescribeMacro{\dedicationame\{\}}
+% You may use |\dedicationname|\marg{text} to change the title for the
+% dedication page. Default name: |\mbox{}| i.e.\/ an empty title.
+% You probably don't need to change it.
+%
+% \subsection{Table of Contents; Lists of Figures and Tables}
+% \DescribeMacro{\tableofcontents}
+% \DescribeMacro{\listoffigures}
+% \DescribeMacro{\listoftables}
+% Use the macros |\tableofcontents|,|\listoffigures| and |\listoftables|,
+% \emph{in this order}, to produce the required table of contents and lists of
+% figures and tables.
+%
+% \DescribeMacro{\contentsname\{\}}
+% \DescribeMacro{\listfigurename\{\}}
+% \DescribeMacro{\listtablename\{\}}
+% You may use |\contentsname|, |\listfigurename| and |\listtablename|
+% to change the titles for these sections.
+% By default they are |CONTENTS|, |FIGURES|, and |TABLES|.
+% You probably don't need to change them.
+%
+% \subsection{List of Symbols}
+% \DescribeEnv{symbols}
+% The list of symbols is optional.
+% Use the \textsf{symbols} envrionment to format a list of
+% symbols/abbreviations used in your work.
+% The envrionment takes an optional argument specifying the desired format, e.g.
+% |\begin{symbols}[cl]| for first column centered and the next column
+% aligned left. By default, the first column will be right aligned and
+% the second column will be left aligned. You may use any of the standard
+% |tabular| column alignment options.
+%
+% \DescribeMacro{\sym\{\}\{\}}
+% The command |\sym|\marg{symbol}\marg{definition} may make the task of
+% entering the symbols and their meanings in the \textsf{symbols}
+% environment easier. |\sym| takes two arguments: the first, a math
+% ``object'' and the second, the plain text describing the
+% symbol. Since the first argument is in math mode, any plain text
+% needs to be wrapped with |\mathrm{..}|
+% Likewise, any math symbol in the second argument needs to placed in
+% |$..$|. Example: |\sym{\beta_\mathrm{norm}}{Definition for $\beta$}|
+%
+% \DescribeMacro{\symbolsname\{\}}
+% You may use |\symbolsname{}| to change the title of the symbols section.
+% Default name: |SYMBOLS|.
+%
+% \subsection{Preface}
+% \DescribeEnv{preface}
+% The \textsf{preface} environment is provided for formatting the preface to your work.
+%
+% \DescribeMacro{\prefacename\{\}}
+% You may use |\prefacename| to change the name of this section.
+% Default name: |PREFACE|.
+%
+% \subsection{Acknowledgments}
+% \DescribeEnv{acknowledgments}
+% The environment \textsf{acknowledgments} is used to format the
+% acknowledgment \emph{chapter}.
+%
+%
+% \DescribeMacro{\acknowledgename\{\}}
+% You may use |\acknowledgename| to change the name of this section.
+% Default name: |Acknowledgments|.
+%
+% \subsection{Text}
+% \DescribeMacro{\mainmatter}
+% Use the macro |\mainmatter| to mark the beginning of your text.
+% You can then use |\part|, |\chapter|, |\section|, |\subsection|, and |\subsubsection|
+% commands, as you would with the \textsf{book} class.
+% Text is formatted in |\normalspacing| i.e. double-spacing.
+% The pages are numbered in |plain| pagestyle such that the page numbers
+% are centered in the bottom. The |chapter| titles can be multi-line,
+% and if so are formatted doubly spaced.
+%
+% \DescribeMacro{\unnumchapter\{\}}
+% Use the macro |\unnumchapter| to create to create unnumbered chapters that
+% appear in the Table of Contents.
+%
+% \subsection{Appendix}
+% \DescribeMacro{\appendix}
+% Use the command |\appendix| after the last normal chapter to signal
+% that all following chapters are to be appendices.
+% This use is the same as in the \textsf{book} class.
+% To begin an appendix, use the |\chapter|\marg{title} macro.
+%
+% \subsection{Backmatter}
+% \DescribeMacro{\backmatter}
+% The |\backmatter| macro separates the bibliography, index
+% and glossary from the main matter and any appendices.
+%
+% \subsection{Bibliography} \DescribeMacro{\bibliography}
+% If you are using \BibTeX\/ (and why would you not want to use \BibTeX?),
+% use the |\bibliography|\marg{bibfile} macro to generate the
+% bibliography. You should refer to \BibTeX\/ manual for details about making a |.bib| file
+% and format for the entries.
+%
+% For citing references in the text, the package \textsf{natbib} is
+% included with either the settings \texttt{numbers,sort\&compress} (|numrefs| option) or
+% \texttt{authoryear,sort} (|textrefs| option). The package \textsf{natbib} is a
+% fantastic package that has numerous macros for \emph{citing} in different ways.
+%
+% \textbf{Warning:} The packages \textsf{cite} and \textsf{citation} are
+% NOT compatible
+% with the \textsf{natbib} package, and will cause errors if used.
+%
+% \DescribeEnv{thebibliography}
+% If you are not using \BibTeX\/ make your own bibliography by using the
+% \textsf{thebibliography} environment. In this case, you would have
+% to write the reference entries in the right format in your |.tex| source
+% file itself. If you are using the |textrefs| option, you'll need to
+% consult the \textsf{natbib} manual to ensure that you enter your entries in
+% the format required by the package.
+%
+% \DescribeMacro{\bibname\{\}}
+% You may use |\bibname|\marg{newbibname} to change the name of this section.
+% Default name: |Bibliography|.
+%
+% \subsection{Chapter-wise Bibliography}
+% By default the bibliography appears at the end of your work and contains
+% all the references from the entire entity.
+% If you need to have a separate bibliography for each chapter,
+% you can do it in the following way.
+% First, load the package \textsf{chapterbib} without any options
+% in the preamble of your main source file and
+% redefine the commands |\bibname| and |\bibsection| as shown below.
+% \begin{verbatim}
+% %% Main source file %%
+% \documentclass[...]{nddiss2e}
+% \usepackage{chapterbib}
+% \renewcommand{\bibname}{Cited works}
+% \renewcommand{\bibsection}{\section{\bibname}}
+% ...
+% \begin{document}
+% \include{chptr1}
+% ...
+% \include{appndx}
+% \end{document}
+% \end{verbatim}
+%
+% To process the bibliography for each chapter individually, the chapters or sections
+% must be separated into different files and \emph{include}
+% them in the main file, as shown above. Each such |\include|d file must contain
+% its own |\bibliographystyle{nddiss2e}| and |\bibliography{...}| command at
+% an appropriate position. There should not be any bibliographic commands in
+% the main source file.
+%
+% After compiling the main tex file once (with |latex| or
+% |pdflatex|), the |.aux| files needed by |bibtex| will have been created
+% and you can then run |bibtex| on each of the separate source files to obtain a |.bbl|
+% for each file. The remaining steps are the same as for a normal |.tex| file.
+%
+% You can find more details of this in the \textsf{natbib} manual.
+%
+% \section{Note For Authors}
+% \label{sec:author}
+% The dissertation author must make sure that the
+% following conditions are met in order to generate a dissertation
+% acceptable by the Graduate School:
+%
+% \begin{itemize}
+% \item The List of Figures must be \emph{before} the List of Tables, i.e. the
+% macro command |\listoffigures| comes before |\listoftables| in the
+% frontmatter.
+% \item Table captions must be \emph{above} the corresponding table,
+% In case of the \textsf{table} environment, this can be achieved by
+% putting |\caption| before you include the table (e.g. in a \textsf{
+% tabular} environment).
+% \item Figure captions should be \emph{below} the corresponding figure.
+% In the \textsf{figure} environment, the |\caption| goes after
+% the |\includegraphics| macro command.
+% \item The bibliography is the last section/chapter of the thesis---unless
+% you are using the \emph{chapter-wise} bibliography.
+% \end{itemize}
+%
+% \subsection{Tips and Suggestions}
+% \label{subsec:tips}
+% \begin{itemize}
+% \item It is \emph{strongly} recommended that you compile your document with
+% pdf\LaTeX. Compiling to dvi or postscript first may result in ``fuzzy'' fonts
+% when viewing the document on your screen. Additionally, the benefits
+% of |hyperref| and |pdflscape| are only available if you compile using
+% pdf\LaTeX.
+% \item Use the |\toprule|, |\midrule| and |\bottomrule| macro commands (from the
+% \textsf{booktabs} package) in tables for generating the appropriate
+% horizontal rules. Refrain from using vertical rules to separate columns in tables
+% as much as possible.
+% \item Use the \textsf{longtable} environment for handling very long
+% tabular materials. Example:
+% \begin{verbatim}
+% \begin{longtable}{lc}
+% \caption[]{LONG TABLE CAPTION \label{tab:longtable} }
+% \toprule
+% Heading 1 & Heading 2 \\
+% \midrule
+% \endfirsthead
+% \caption[]{ } \\ % doesn't matter what text is in the continued caption.
+% \midrule
+% Heading 1 & Heading 2 \\
+% \midrule
+% \endhead
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% % Now the tabular material %
+% Long & Table etc. \\
+% \end{longtable}
+% \end{verbatim}
+% \item If a figure or table is very wide and will not fit on a page,
+% use the \textsf{landscape} environment (from the included
+% \textsf{lscape} package) to format them in \emph{landscape}
+% mode. They will automatically appear on a separate page. If you
+% use pdf\LaTeX\/ to compile your document, then the included
+% \textsf{pdflscape} package will flip this page on the screen
+% for easier reading.
+% \item The \textsf{sidewaystable} environment (from the included
+% \textsf{rotating} package) is incompatible with the current
+% class and should be avoided.
+% \item Usually the width of the figure and table captions is 90\% of the textwidth
+% (i.e. |0.9\textwidth|). If needed, the width can be changed on a case-by-case
+% basis by doing one of the following:
+% \begin{itemize}
+% \item Use a \textsf{minipage} environment of appropriate width and enclose
+% your tabular or figure float inside it, or
+% \item set the |\capwidth| inside the \textsf{table} or the \textsf{figure}
+% environment, and |\LTcapwidth| \emph{outside} the \textsf{
+% longtable} environment, e.g.,\\[\baselineskip]
+% \begin{minipage}{0.5\textwidth}
+% \begin{verbatim}
+% \begin{table}[H]
+% \setlength{\capwidth}{0.8\textwidth}
+% \centering
+% \caption{TABLE CAP\label{tab:this}}
+% \begin{tabular}{lc}
+% ...
+% \end{tabular}
+% \end{table}
+% \end{verbatim}
+% \end{minipage}
+% \begin{minipage}{0.5\textwidth}
+% \begin{verbatim}
+% \setlength{\LTcapwidth}{6in}
+% \begin{longtable}{lccc}
+% ...
+% \end{\longtable}
+% \end{verbatim}
+% \end{minipage}
+% \end{itemize}
+% \item Use the \textsf{tabularx} environment for the actual formatting
+% of the tables (within the \textsf{table} environment). It differs
+% slightly from \textsf{tabular} environment and you should refer to
+% their documentation in the |TEXMF| tree for more information.
+% \item If you've used a \textsf{longtable} environment in your document,
+% it might be necessary to compile the document multiple times so as to
+% get proper alignment of columns. This is documented in the
+% \textsf{longtable} manual.
+% \item If you wish to use |\footnotes| in the \textsf{longtable} environment,
+% please read its documentation. There are some handicaps present.
+% \item To cite a website in your bibliography\footnote{More info at
+% \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL}}, use the
+% following format in your |.bib| file:
+% \begin{verbatim}
+% @Misc{fairley2000,
+% author = "N. Fairley",
+% title = "Casa{XPS} {VAMAS} processing software",
+% howpublished = "Website",
+% note = "\url{http://www.casaxps.com}",
+% }
+% \end{verbatim} When processed with the |nddiss2e.bst| citation style file
+% this gives:\newline
+% 111. N. Fairley. CasaXPS VAMAS processing software. Website.
+% \url{http://www.casaxps.com}.\newline
+% \end{itemize}
+%
+% \subsection{You Found Errors?}
+% Errors in a \LaTeX\/ document are to be expected.
+% If you have a problem that is that seems to be more than a typo or
+% unbalanced brace, it is possible that there is a conflict between
+% the packages you have included and those that \nddiss\/ uses.
+% If you find yourself in that situtation, there is a mailing list
+% for handling support issues with \nddiss\/.
+% Look through the archive, and if there are no answers, please
+% send an email to \url{ND-LATEX-USERS@listserv.nd.edu} (registration required).
+% The more effort you spend in isolating the problem or in troubleshooting
+% will make it more likely that others can reproduce the problem and help
+% you solve it.
+% Also if you have a problem that you then solve, please also email the list.
+% Your doing so will help the next person to have that problem, and will
+% also make the maintainers aware of it, so future versions of the class file
+% can be better.
+%
+% \section{Other Packages Used}
+% \label{sec:features}
+%
+% A number of packages are required by default and must be present in your
+% \TeX\space search path (if you use a package manager such as MiKTeX or
+% TeXLive, it will take care of this for you). As far as possible, these have
+% been tested for proper formatting style with the \nddiss\/ class file. The list
+% includes
+% \textsf{ifthen},
+% \textsf{exscale},
+% \textsf{ifpdf},
+% \textsf{ifluatex},
+% \textsf{ifxetex},
+% \textsf{xspace},
+% \textsf{longtable},
+% \textsf{indentfirst},
+% \textsf{tabularx},
+% \textsf{showkeys},
+% \textsf{enumerate},
+% \textsf{latexsym}.
+% \textsf{epsfig},
+% \textsf{color},
+% \textsf{graphicx},
+% \textsf{url},
+% \textsf{setspace}\footnote{v6.7[2000/12/01] or above},
+% \textsf{amsmath},
+% \textsf{float},
+% \textsf{lscape},
+% \textsf{rotating},
+% \textsf{booktabs}, and
+% \textsf{natbib}\footnote{v8.31[2009/07/16] or above}.
+% Sameer urges you to read the documentation of these packages available in
+% the |TEXMF| tree, if you think you might use their features
+% or want to tweak some advanced options. Of these packages,
+% \textsf{ifpdf},
+% \textsf{longtable},
+% \textsf{natbib},
+% \textsf{booktabs},
+% \textsf{rotating},
+% \textsf{url}, and
+% \textsf{setspace}
+% are not part of the \LaTeX\space required distribution, so you may need
+% to download them. They are all available through both MiKTeX and TeXLive;
+% note that \textsf{ifpdf} is part of the
+% \textsf{oberdiek} bundle, which is what you need to download to get
+% that package if it is not already installed on your system.
+%
+% Other packages may or may not be appropriate for use with the
+% \nddiss\space class when producing copies to be submitted to the
+% Graduate School. Please be careful when using packages that change the
+% default fonts, or the page layout.
+%
+% In general, the official guidelines of the Graduate School are
+% followed to the maximum extent possible. This includes proper
+% formatting of the title page and the abstract page (from the
+% \textsf{ndthesis} package), numbering of the pages in the \textit{frontmatter},
+% generation of properly formatted table of contents, list
+% of figures etc., as well as bibliography at the end.
+% Per the guide, the number of different fonts and font sizes used is kept to
+% a minimum. The contents, all lists and the bibliography are
+% single-spaced but the inter-line spacing for the rest of the document
+% is double.
+%
+% \subsection{Generating PDF document}
+% \label{subsec:pdfdoc}
+%
+% The \nddiss\space class also allows production of pdf documents with
+% pdf\LaTeX\space. As of Spring 2013, this is the preferred method of
+% compilation. In this case, the \textsf{hyperref} and \textsf{pdflscape}
+% packages are also required. The \textsf{hyperref} package ensures
+% that the generated pdf document contains internal as well as external
+% links for citations and bookmarks. A document produced by this method
+% also contains embedded fonts (\textit{press quality} pdf) and is suitable
+% for electronic submission to the library and for microfilm archiving.
+% Although the most appropriate options for \textsf{hyperref} are
+% passed on, for advanced features refer to its documentation. The
+% \textsf{pdflscape} package flips pages with landscape orientation in the
+% pdf file for easier reading, but the location of the page numbers does not change.
+%
+% Figures must be in pdf, jpeg, png, or gif format, and not in encapsualted
+% postscript (eps). An easy way to convert \textit{eps} files to \textit{pdf}
+% files is to use the utility |epstopdf| or |eps2pdf|, which should be
+% available on your unix-like distribution already (should you have one). It is also
+% possible to convert your eps files to pdfs using an online conversion tool.
+% Searching for ``eps to pdf'' brought up several free options in Fall 2012.
+%
+%
+%
+% \StopEventually{%
+% \footnotesize
+% \PrintChanges
+% }
+%
+% \clearpage
+% \section{The Implementation}
+% Following is our attempt at documenting the source of the
+% \nddiss\space class file for the \TeX\space hackers.
+%
+% \small\mbox{}\\
+% \iffalse (Don't show this in the doc).
+%<*class>
+% \fi
+% At the start, we define the base version of \LaTeXe\space needed and
+% the label information for the \nddiss\space class.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesClass{nddiss2e}
+% \end{macrocode}
+% \iffalse
+%</class>
+% \fi
+% \iffalse (Don't show this in the doc).
+% \begin{macrocode}
+%<template>\ProvidesFile{template.tex}
+% \end{macrocode}
+% \fi
+% \begin{macrocode}
+ [2016/10/16 v3.2016%
+% \end{macrocode}
+% \iffalse
+%<*class>
+% \fi
+% \begin{macrocode}
+ Notre Dame Dissertation document class]
+%
+% \end{macrocode}
+% \begin{macro}{\dissfileversion}
+% \begin{macro}{\dissfiledate}
+% The |\dissfileversion| and |\dissfiledate| macros contain the version and the date
+% of the release.
+% \begin{macrocode}
+\providecommand{\dissfileversion}{3.2017.2}
+\providecommand{\dissfiledate}{2017/05/09}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \iffalse
+%</class>
+% \fi
+% \iffalse (Don't show this in the doc).
+% \begin{macrocode}
+%<template> Template file for NDdiss2e class]
+% \end{macrocode}
+% \fi
+% \iffalse
+%<*class>
+% \fi
+% New boolean variables for the options used in \nddiss\ class are
+% set here with default values.
+% \begin{macrocode}
+\newif\ifdiss@draft \diss@drafttrue
+\newif\ifdiss@review \diss@reviewfalse
+\newif\ifdiss@final \diss@finalfalse
+\newif\ifinfo@page \info@pagetrue
+\newif\ifadvisors@two \advisors@twofalse
+\newif\ifdiss@dedication \diss@dedicationfalse
+\newif\ifnum@refs \num@refstrue
+\newif\ifcentered@chaptitle \centered@chaptitletrue
+\newif\if@ltfirstcaption
+%
+% \end{macrocode}
+% \begin{macro}{draft}
+% \begin{macro}{review}
+% \begin{macro}{final}
+% Exactly one of these options must be present in order to get a proper document. These
+% options set appropriate boolean variables (flags) and pass some common
+% options to the parent {\sffamily book} class.
+% \begin{macrocode}
+\DeclareOption{draft}{
+ \setlength\overfullrule{5pt}
+ \typeout{DRAFT MODE}\typeout{}\info@pagefalse%
+ \diss@drafttrue\diss@reviewfalse\diss@finalfalse
+ \PassOptionsToClass{letterpaper,oneside,draft}{book} }
+%
+\DeclareOption{review}{
+ \typeout{REVIEW MODE}\typeout{}\info@pagetrue%
+ \diss@draftfalse\diss@reviewtrue\diss@finalfalse
+ \PassOptionsToClass{12pt,letterpaper,oneside,final}{book} }
+%
+\DeclareOption{final}{
+ \setlength\overfullrule{0pt}
+ \typeout{FINAL MODE}\typeout{}\info@pagetrue%
+ \diss@draftfalse\diss@reviewfalse\diss@finaltrue
+ \PassOptionsToClass{12pt,letterpaper,oneside,final}{book} }
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{numrefs}
+% \begin{macro}{textrefs}
+% The options |numrefs| or |textrefs| select the appropriate citation style i.e.\/
+% ``numbered'' or ``textual'', respectively. By
+% choosing |textrefs|, one can get ``author-date'' style of citation in the
+% text. The default is |numrefs|.
+% \begin{macrocode}
+\DeclareOption{numrefs}{
+ \typeout{NUMBERED REFERENCES}\num@refstrue}
+\DeclareOption{textrefs}{
+ \typeout{TEXTUAL REFERENCES}\num@refsfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% The option |nocenter| allows non-centered chapter titles.
+% \begin{macrocode}
+\DeclareOption{nocenter}{\centered@chaptitlefalse}
+%
+% \end{macrocode}
+% The |openbib| option is useful
+% in creating indented bibliography.
+% Usually you would not need to use this option since the default layout of the
+% |bibliography| is very much acceptable.
+% \begin{macrocode}
+\DeclareOption{openbib}{%
+ \PassOptionsToPackage{openbib}{natbib}
+}
+%
+% \end{macrocode}
+% The |sort| option is passed to natbib, and causes multiple citations to be
+% listed in the sequence they appear in the bibliography.
+% \begin{macrocode}
+\DeclareOption{sort}{%
+ \PassOptionsToPackage{sort}{natbib}
+}
+%
+% \end{macrocode}
+% The |compress| option is passed to natbib, and causes numerical citations to
+% be compressed so that, e.g. 1,2,3 becomes 1-3. Does not also sort.
+% \begin{macrocode}
+\DeclareOption{compress}{%
+ \PassOptionsToPackage{compress}{natbib}
+}
+%
+% \end{macrocode}
+% The |sort&compress| option sorts numerical citations, and then compresses them.
+% \begin{macrocode}
+\DeclareOption{sort&compress}{%
+ \PassOptionsToPackage{sort&compress}{natbib}
+}
+%
+% \end{macrocode}
+% The other options are declared in the following lines.
+% \begin{macro}{twoadvisors}
+% The |twoadvisors|
+% option sets the flag for modifying the layout of the title page.
+% \begin{macrocode}
+\DeclareOption{twoadvisors}{\typeout{TWO ADVISORS}\typeout{}%
+ \advisors@twotrue}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{10pt}
+% \begin{macro}{11pt}
+% \begin{macro}{12pt}
+% The options |10pt|, |11pt| or |12pt| are passed on to the {\sffamily book}
+% class if appropriate, depending on whether the |\diss@draft| flag is set true.
+% \begin{macrocode}
+\DeclareOption{10pt}{%
+ \ifdiss@draft%
+ \PassOptionsToClass{10pt}{book}%
+ \else%
+ \OptionNotUsed%
+ \ClassWarningNoLine{nddiss2e}%
+ {Font size 10pt not allowed; using 12pt}%
+ \fi%
+}
+\DeclareOption{11pt}{%
+ \ifdiss@draft%
+ \PassOptionsToClass{11pt}{book}%
+ \else%
+ \OptionNotUsed%
+ \ClassWarningNoLine{nddiss2e}%
+ {Font size 11pt not allowed; using 12pt}%
+ \fi
+}
+\DeclareOption{12pt}{%
+ \PassOptionsToClass{12pt}{book}%
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{noinfo}{\info@pagefalse}
+%
+% \end{macrocode}
+% The |twoside| option is for when you want to prepare a two-sided
+% document for your own use. The only difference from the one-sided document
+% is in the page layout. This option is passed on to the parent {\sffamily
+% book} class.
+% \begin{macrocode}
+\DeclareOption{twoside}{\typeout{TWO SIDED DOCUMENT}%
+ \PassOptionsToClass{twoside}{book} }%
+%
+% \end{macrocode}
+% All options other than those defined above are ignored and
+% a warning is printed
+% on the screen during compile-time. After processing all the options, the
+% \textsf{book} class is loaded with the specified options.
+% \begin{macrocode}
+\DeclareOption*{\ClassWarning{nddiss2e}%
+ {UnknownOption `\CurrentOption'} }%
+\ProcessOptions\relax
+\LoadClass{book}
+%
+% \end{macrocode}
+% At this stage, the packages \textsf{ifthen}, \textsf{exscale},
+% \textsf{etoolbox} \textsf{ifpdf}, \textsf{ifluatex},
+% \textsf{ifxetex}, \textsf{longtable}, \textsf{xspace}, \textsf{
+% indentfirst}, \textsf{tabularx}, \textsf{enumerate} and \textsf{
+% latexsym} are loaded. It is important to load these in a specific
+% order so as not to cause conflicts in definitions of certain macros.
+% \begin{macrocode}
+\RequirePackage{ifthen,exscale,etoolbox}
+\RequirePackage{ifpdf,ifluatex,ifxetex}
+\ifboolexpr{bool{pdf} or bool{xetex} or bool{luatex}}{}{%
+ \ClassError{nddiss2e}{%
+ PDF Output is required to support the PDF/A format.
+ }{DVI output is not supported. Use pdflatex to generate the dissertation.}
+}
+\RequirePackage[a-2b]{pdfx}
+\RequirePackage{longtable}
+\RequirePackage{threeparttable}
+\RequirePackage[flushleft]{threeparttablex}
+\RequirePackage{xspace}
+\RequirePackage{indentfirst}
+\RequirePackage{tabularx}
+\RequirePackage{enumerate}
+\RequirePackage{latexsym}
+\RequirePackage{textcase}
+%
+% \end{macrocode}
+% If the |\diss@final| is set false (when using |draft| or |review| option) then
+% the {\sffamily showkeys} package is also loaded.
+% \begin{macrocode}
+% \ifdiss@final\relax\else\RequirePackage{showkeys}\fi
+%
+% \end{macrocode}
+% Depending in whether you are using pdf\LaTeX\space or plain \LaTeX\space,
+% \textsf{epsfig}, \textsf{color} and \textsf{graphicx} are loaded
+% with respective options.
+% \begin{macrocode}
+\ifboolexpr{bool{pdf} or bool{xetex} or bool{luatex}}{%
+ \RequirePackage{epsfig}
+ \RequirePackage{color}
+ \RequirePackage{graphicx}
+ \AtBeginDocument{
+ \pdfadjustspacing=1
+ }
+}{%
+ \RequirePackage[dvips]{epsfig}
+ \RequirePackage[dvips]{color}
+ \RequirePackage[dvips]{graphicx}
+}
+%
+% \end{macrocode}
+% Now the \textsf{natbib} package is loaded
+% with its options, appropriate to |numrefs| or |textrefs| class option. If |numrefs| is
+% specified, then \textsf{natbib} is read-in with its options for
+% ``numbered'' references and sorted \& compressed (eg. |[3-6,8-10]|).
+% In this case, the default delimiter is square brackets and the
+% default seperator is a comma. For the |textrefs| option, the
+% \textsf{natbib} package is read-in so as to sort the references in an
+% ``author-date'' style of citations.
+% The default delimiter and seperator, in this case, are round brackets and
+% colon, respectively.
+%
+% \begin{macrocode}
+\ifnum@refs
+ \RequirePackage[numbers]{natbib}
+\else
+ \RequirePackage[authoryear]{natbib}
+\fi
+% \end{macrocode}
+% Additionally, the packages \textsf{amsmath}, \textsf{float}, \textsf{booktabs},
+% \textsf{rotating}, \textsf{url} and \textsf{setspace} are loaded
+% when (pdf)\LaTeX\space processes |\begin{document}|. Again, the
+% order of these packages is important. Additionaly when using
+% pdf\LaTeX\space, the package \textsf{hyperref} (for
+% internal/external links in the document) is also loaded. The options
+% for this package have been tested to produce a document which can be
+% printed on laser printers without any problems because of colored
+% link boxes. Megan added required package pdflscape, which is part
+% of the oberdiek bundle in MiKTeX and TeXLive. Using this package
+% will flip landscape pages on the screen so that it's easier to read.
+% \begin{macrocode}
+\AtBeginDocument{
+\RequirePackage{amsmath}
+\RequirePackage{float}
+\RequirePackage{booktabs}
+\RequirePackage{rotating}
+\RequirePackage{url}
+\RequirePackage[doublespacing]{setspace}[2000/12/01]
+\ifboolexpr{bool{pdf} or bool{xetex} or bool{luatex}}{%
+ \ifluatex
+ \RequirePackage[luatex]{pdflscape}
+ \else
+ \ifxetex
+ \RequirePackage[xetex]{pdflscape}
+ \else
+ \ifpdf
+ \RequirePackage{pdflscape}
+ \fi
+ \fi
+ \fi
+ % cannot use RequirePackage since pdfx also includes hyperref
+ \hypersetup{
+ plainpages=false,
+ pdfpagelabels,
+ bookmarks=true,%
+ bookmarksnumbered=true,%
+ linktocpage=true,%
+ breaklinks=true,%
+ bookmarkstype=toc,%
+ colorlinks=false,%
+ pdfpagemode=UseOutlines}
+}{}
+}
+\RequirePackage{metalogo}
+%
+% \end{macrocode}
+% Set the |\pagestyle| for the document to |plain| here
+% and define default spacing.
+% \begin{macrocode}
+\AtBeginDocument{
+\pagestyle{plain}
+\normalspacing
+\typeout{Pagestyle and spacing normal}
+}
+%
+% \end{macrocode}
+% Here, define some spacing macros for page layout and doublespacing.
+% \begin{macrocode}
+\newcommand{\normalspacing}{\doublespacing}
+\newcommand\single@baselinestretch{0.979}
+\newcommand\double@baselinestretch{1.625}
+\newlength{\usedtextsize}
+\setlength{\usedtextsize}{\f@size pt}
+\newlength{\single@skip}
+\setlength{\single@skip}{\single@baselinestretch \usedtextsize}
+\newlength{\double@skip}
+\setlength{\double@skip}{\double@baselinestretch \usedtextsize}
+\setlength{\footnotesep}{\double@skip}
+%
+% \end{macrocode}
+% Define new lengths for some variables for a proper layout of normal pages,
+% pages with text and figures and pages with only floats. Note that although
+% the geometry package is usually easier, when Megan tried to switch to that
+% she discovered that something ends up overwriting it and, although the
+% the showframe option showed that the margins were setting correctly, the text
+% didn't look like they were. So these length values are set to what geometry
+% said they should be to get a 1.5 in left margin and 1 in margins on all other
+% sides (we'll use vspace commands later to get the 2 in top margin on pages
+% where that's needed).
+% \begin{macrocode}
+\setlength{\hoffset}{0pt}
+\setlength{\voffset}{0pt}
+\setlength{\topmargin}{-32pt}
+\setlength{\headsep}{20pt}
+\setlength{\marginparwidth}{47pt}
+\setlength{\marginparsep}{7pt}
+\setlength{\textheight}{648pt}
+\setlength{\textwidth}{432pt}
+\setlength{\oddsidemargin}{36pt}
+\setlength{\evensidemargin}{36pt}
+\setlength{\footskip}{30pt}
+%
+\setlength{\floatsep}{30pt}
+\setlength{\intextsep}{50pt}
+%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}%
+ \cleardoublepage}}
+%
+% \end{macrocode}
+% \begin{macro}{\nddiss} Define the macro |\nddiss| that is the logo
+% used in the titlepage and the stamp in the dissertation document.
+% \begin{macrocode}
+\DeclareRobustCommand{\nddiss}{%
+ \textsf{{\scshape nd}diss}\kern-0.03em%
+ 2$_\mathsf{\textstyle\varepsilon}$}
+%
+% \end{macrocode}
+% \begin{macro}{\work}
+% \begin{macro}{\degaward}
+% \begin{macro}{\advisor}
+% \begin{macro}{\secondadvisor}
+% \begin{macro}{\department}
+% \begin{macro}{\degdate}
+% \iffalse (does not appear in documentation)
+% In 2005 the Graduate School wanted us to list our degrees after our names.
+% In 2013 they no longer want this, so Megan removed the macro.
+% Here's the code for it, in case they change their minds again:
+% \begin{macro}{\degprior} (goes with the other \begin{macro}s above)
+% \newcommand{\degprior}[1]{\def\@degprior{#1}} (goes with other newcommands below)
+% \fi
+% Here define new macros for use in the dissertation title page.
+% \begin{macrocode}
+\renewcommand{\title}[1]{\def\@title{#1}}
+\newcommand{\work}[1]{\def\@work{#1}}
+\newcommand{\degaward}[1]{\def\@degaward{#1}}
+\newcommand{\advisor}[1]{\def\@advisor{#1}}
+\ifadvisors@two
+ \newcommand{\secondadvisor}[1]{\def\@secondadvisor{#1}}
+\fi
+\newcommand{\department}[1]{\def\@department{#1}}
+\newcommand{\degdate}[1]{\def\@degdate{#1}}
+ \degdate{\ifcase\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\year}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% As a default, these macros have an empty arguement. Only the |\degdate| macro
+% takes on the current month-year combination in the absence of any assignation.
+%^^A Removed 9-18-12: \degprior{}
+% \begin{macrocode}
+% Defaults are empty except the \degdate
+ \title{}
+ \author{}
+ \work{}
+ \degaward{}
+ \advisor{}
+ \ifadvisors@two \secondadvisor{} \fi
+ \department{}
+%
+% \end{macrocode}
+% \begin{macro}{\@infopage}
+% Define |\@infopage| macro that will create a page which contains
+% important information about the document and the version of \nddiss\space
+% used etc.\ for the end-user and the proofreader along with a standard
+% disclaimer and
+% details of where to find documentation for the \nddiss\space class
+% file. This information can be suppressed by specifying the ``|noinfo|''
+% option while invoking the \nddiss\space class.
+% \begin{macrocode}
+\DeclareRobustCommand{\@infopage}{
+ \thispagestyle{empty}
+ \null\vspace*{\single@skip}
+ \begin{center}
+ This \@work\space \\ entitled \\ \MakeTextUppercase{\@title} \\
+ typeset with \nddiss\ v%
+ \dissfileversion\ (\dissfiledate) %
+ on \today\space for\\
+ \@author\\
+ \end{center}
+
+ \normalfont\normalsize\singlespacing
+
+ \noindent This \LaTeXe\space classfile conforms to the
+ University of Notre Dame style guidelines as of Fall
+ 2012. However it is still possible to generate a
+ non-conformant document if the instructions in the class
+ file documentation are not followed!
+
+ \begin{center}
+ \begin{minipage}{0.75\textwidth}
+ \noindent Be sure to refer to the published Graduate
+ School guidelines at \url{http://graduateschool.nd.edu}
+ as well. Those guidelines override everything mentioned
+ about formatting in the documentation for
+ this \nddiss\space class file.
+ \end{minipage}
+ \end{center}
+
+ \noindent\itshape This page can be disabled by
+ specifying the ``{\upshape\ttfamily noinfo}'' option to the class invocation.
+ \upshape
+(i.e.,{\ttfamily{\textbackslash}documentclass[\ldots,noinfo]\{nddiss2e\}}
+)
+ \begin{center}
+ {\bfseries\large\singlespacing This page is \slshape NOT
+ \upshape part of the dissertation/thesis. It should be disabled before
+ making final, formal submission, but should be included in the version
+ submitted for format check.}
+ \end{center}
+ \normalsize\normalfont
+ \nddiss\ documentation can be found at these locations:
+ \begin{center}
+ \url{http://graduateschool.nd.edu} \\
+ \url{https://ctan.org/pkg/nddiss}
+ \end{center}
+
+\vfill
+\normalfont\normalsize\normalspacing\eject}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\maketitle}
+% Redefine the macro |\maketitle| to produce the information page as well as
+% the actual title page of the dissertation.
+% \begin{macrocode}
+\renewcommand{\maketitle}{
+ \ifinfo@page\@infopage\else\relax\fi%
+ \clearemptydoublepage
+ \normalfont\normalsize\normalspacing
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{titlepage}
+% The structuring begins with checking the proper macros for
+% obtaining correct formatting for the title page. If any of those are
+% not defined, an error is issued and processing stopped. Most of the code for
+% this was taken from the earlier {\sffamily ndthesis} class and hence, the
+% documentation is also picked from there.
+% \begin{macrocode}
+ \begin{titlepage}%
+\ifthenelse{\equal{\@work}{}}{\ClassError{nddiss2e}%
+ {The \protect\work\space macro is undefined.\MessageBreak
+ The title page may be incorrectly formatted.}%
+ {Specify \protect\work\space as Dissertation or Thesis}}{\relax}
+\ifthenelse{\equal{\@degaward}{}}{\ClassError{nddiss2e}%
+ {The \protect\degaward\space macro is undefined.\MessageBreak
+ The title page may be incorrectly formatted.}%
+ {Specify \protect\degaward\space. It defines the awarded degree%
+ (Ph.D., M.S., etc.)}}{\relax}
+\ifthenelse{\equal{\@advisor}{}}{\ClassError{nddiss2e}%
+ {The \protect\advisor\space macro is undefined.\MessageBreak
+ The title page may be incorrectly formatted.}%
+ {Spepcify \protect\advisor\space It is who signs your walking papers!}}{\relax}
+\ifthenelse{\equal{\@department}{}}{\ClassError{nddiss2e}%
+ {The \protect\department\space macro is undefined.\MessageBreak
+ The title page may be incorrectly formatted.}%
+ {Specify which \protect\department\space is awarding your degree?}}{\relax}
+\ifadvisors@two
+ \ifthenelse{\equal{\@secondadvisor}{}}{\ClassError{nddiss2e}%
+ {The \protect\secondadvisor\space macro is undefined.\MessageBreak
+ The title page may be incorrectly formatted.}%
+ {Use \protect\secondadvisor\space for your second advisor}}{\relax}
+\fi
+%
+% \end{macrocode}
+% \end{macro}
+% Now set up some skip registers to
+% hold the inter-data spacing. The initial values will create a two-inch top margin
+% for the title page, provided the title is only one line long. |\skip1| is the primary
+% internal spacing command; |\skip2| is the spacing between the student's name and the
+% line for the first adviser to sign if there are two advisers and |\skip3| is the
+% spacing between the student's name and the line for the adviser to sign if there is
+% only one adviser; |\skip4| controls the top margin. We'll account for titles longer
+% than one line in a bit \ldots
+% \begin{macrocode}
+\skip1=2.1\double@skip
+\skip2=1.7\double@skip
+\skip3=2.7\double@skip
+\skip4=36pt
+%
+% \end{macrocode}
+% If the author has two advisors, we need to do a little tweaking to the
+% internal spacing.
+% \begin{macrocode}
+ \ifadvisors@two
+ \skip1=1.6\double@skip
+ \else\relax
+ \fi
+% \end{macrocode}
+% The 2012 formatting guidelines require the title to be 2'' from the top of page.
+% If it's more than one line long, we need to adjust the internal spacing:
+% \begin{macrocode}
+ \setbox0=\vbox{\MakeTextUppercase{\@title}}
+ \ifdim \ht0 > 3\double@skip
+ \advance \skip1 -.75\double@skip
+ \else
+ \ifdim \ht0 > 2\double@skip
+ \advance\skip1 -.5\double@skip
+ \else
+ \ifdim \ht0 > \double@skip
+ \advance\skip1 -.25\double@skip
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% Our default assumes a one-line \textsf{degree} field such as
+% \begin{center}
+% Doctor of Philosophy
+% \end{center}
+% but we check to see if it is two or three lines long.
+% If so, we need to remove those extra lines from the internal spacing.
+% \begin{macrocode}
+ \setbox1=\vbox{\@degaward}
+ \ifdim \ht1 > 2\double@skip
+ \advance\skip1 -.5\double@skip
+ \else
+ \ifdim \ht1 > \double@skip
+ \advance \skip1 -.25\double@skip
+ \else
+ \relax
+ \fi
+ \fi
+% \end{macrocode}
+% If we have two advisers, a three or four line title, and a
+% three line degree field or two advisers, a four line title, and
+% a two line degree field, then we need to remove some spacing between
+% the name and the first adviser and from the top margin,
+% and give that space to the internal spacing.
+% \begin{macrocode}
+ \ifadvisors@two
+ \ifdim \ht0 > 3\double@skip
+ \ifdim \ht1 > \double@skip
+ \advance \skip4 -.675\double@skip
+ \advance \skip2 -.4\double@skip
+ \advance \skip1 .25\double@skip
+ \else \relax
+ \fi
+ \else
+ \ifdim \ht0 > 2\double@skip
+ \ifdim \ht1 > 2\double@skip
+ \advance \skip2 -.4\double@skip
+ \advance \skip1 .1\double@skip
+ \else \relax
+ \fi
+ \else \relax
+ \fi
+ \fi
+ \else \relax
+ \fi
+% \end{macrocode}
+% Finally we start putting the text in place \ldots centered, of course.
+% \begin{macrocode}
+ \null\vspace*{\skip4}
+ \begin{center}%
+ \MakeTextUppercase{\@title} \par%
+ \vskip\skip1%
+%
+% \end{macrocode}
+% Now skip the required vertical space, declare that this is for the
+% University of Notre Dame, and list what degree has been earned.
+% \begin{macrocode}
+ A \@work \par%
+ \vskip\skip1%
+ Submitted to the Graduate School \\
+ of the University of Notre Dame \\
+ in Partial Fulfillment of the Requirements \\
+ for the Degree of \par
+ \vskip\skip1%
+ \@degaward%
+ \vskip\skip1%
+ by \\%
+%
+% \end{macrocode}
+% Now format the author's name.
+% \begin{macrocode}
+ \@author
+%
+% \end{macrocode}
+% Now skip the proper space and place the signature line for the advisor
+% with his/her name typeset below it. This is accomplished by essentially
+% centering a box that is twice as long as the required length of the
+% signature line and placing the line in only the right-hand side.
+% \begin{macrocode}
+ \ifadvisors@two
+ \vskip\skip2
+ \hspace*{2.75in}\underline{\hspace{2.75in}}\\%
+ \hspace*{2.75in}\@advisor, Co-Director\\
+ \else
+ \vskip\skip3
+ \hspace*{2.75in}\underline{\hspace{2.75in}}\\%
+ \hspace*{2.75in}\@advisor, Director\\
+ \fi%
+%
+% \end{macrocode}
+% If there is a second advisor, place that line here now.
+% \begin{macrocode}
+\ifadvisors@two %
+ \vskip\double@skip%
+ \hspace*{2.75in}\underline{\hspace{2.75in}}\\%
+ \hspace*{2.75in}\@secondadvisor, Co-Director\\
+\fi
+%
+% \end{macrocode}
+% We end with the department and date; the internal spacing is chosen so
+% that these are at the page bottom.
+% \begin{macrocode}
+ \vskip\skip1%
+ Graduate Program in \@department \\%
+ Notre Dame, Indiana \\
+ \@degdate
+ \end{center}
+ \end{titlepage}%
+}
+%
+% \end{macrocode}
+% \begin{environment}{copyrightpage}
+% The environment |copyrightpage| defines
+% the defaults for proper formatting the copyright page (if opted).
+% \begin{macrocode}
+\newenvironment{copyrightpage}{%
+ \clearemptydoublepage
+ \typeout{Copyright page}
+ \pagestyle{empty}
+ \null\vfil
+ \begin{center}\normalspacing}%
+{ \end{center}\vfil\null \clearpage }
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\copyrightholder}
+% \begin{macro}{\copyrightyear}
+% Define a few macros for defining the copyright holder and the year
+% desired. By default, they are taken as the current year and the |author|
+% of the dissertation.
+% \begin{macrocode}
+\newcommand{\@copyrightyear}{\the\year}
+\newcommand{\@copyrightholder}{\@author}
+\newcommand{\@copyrightlicense}{All Rights Reserved}
+\newcommand{\copyrightyear}[1]{\renewcommand{\@copyrightyear}{#1}}
+\newcommand{\copyrightholder}[1]{\renewcommand{\@copyrightholder}{#1}}
+\newcommand{\copyrightlicense}[1]{\renewcommand{\@copyrightlicense}{#1}}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\makecopyright}
+% Finally, the |\makecopyright| macro creates the
+% copyright page as per defined in the |copyrightpage| environment.
+% \begin{macrocode}
+\newcommand{\makecopyright}{%
+ \ifdiss@final
+ \begin{copyrightpage}
+ \normalfont\normalsize
+ \copyright\space Copyright by \\
+ \@copyrightholder \\
+ \@copyrightyear\\
+ \@copyrightlicense \\[10mm]
+ \end{copyrightpage}
+ \fi
+}%
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makepublicdomain}
+% Or, if chosen, |\makepublicdomain| macro
+% creates a copyright page (using earlier |copyrightpage| environment) that
+% puts the document in public domain.
+% \begin{macrocode}
+\newcommand{\makepublicdomain}{%
+ \ifdiss@final
+ \begin{copyrightpage}
+ This document is in the public domain.
+ \end{copyrightpage}
+ \fi
+}%
+%
+% \end{macrocode}
+% \end{macro}
+% Define some new name macros and redefine other name macros as below. These
+% are the names of the respective sections in your dissertation document. If
+% there's a need to change any name, you must use a similar command in the
+% preamble of your document.
+% \begin{macrocode}
+\providecommand{\abstractname}{Abstract}
+\providecommand{\dedicationname}{\mbox{}}
+\providecommand{\prefacename}{Preface}
+\providecommand{\acknowledgename}{Acknowledgments}
+\providecommand{\symbolsname}{Symbols}
+\renewcommand{\tablename}{Table}
+\renewcommand{\figurename}{Figure}
+\renewcommand{\partname}{Part}
+\renewcommand{\chaptername}{Chapter}
+\renewcommand{\appendixname}{Appendix}
+\renewcommand{\contentsname}{Contents}
+\renewcommand{\listfigurename}{Figures}
+\renewcommand{\listtablename}{Tables}
+\renewcommand{\bibname}{Bibliography}
+\renewcommand{\indexname}{Index}
+%
+% \end{macrocode}
+% \begin{environment}{abstract}
+% This environment is adapted
+% from the \textsf{report} class since
+% the \textsf{book} class does not have one. Additionally, we add
+% a |\pdfbookmark| for the abstract in the pdf document.
+% \begin{macrocode}
+\newenvironment{abstract}{%
+ \ifboolexpr{bool{pdf} or bool{xetex} or bool{luatex}}{%
+ \pdfbookmark[0]{\abstractname}{abstract}%abstract.0
+ }{}
+ \typeout{Abstract page(s)}
+ \renewcommand{\@oddfoot}{\@empty}
+ \renewcommand{\@evenfoot}{\@empty}
+% \end{macrocode}
+% If the abstract extends to a second page,
+% place the author's name in top right corner of that page. Make
+% sure it's upright, as required by the University and that this appears
+% at $0.75''$ from the top.
+% \begin{macrocode}
+ \let\@evenhead\@oddhead
+ \renewcommand{\@oddhead}{\hfil{\upshape\@author}}
+ \titlepage
+ \null
+ \begin{center}
+ \vspace*{36pt}
+ {\normalsize\mdseries \normalspacing
+ \MakeTextUppercase{\@title} \\[3.5ex]
+ \normalsize\abstractname \\ by \\ \@author\space}%
+ \@endparpenalty \@M
+ \end{center}\par}%
+{\par\vfil\null\endtitlepage}
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{dedication}
+% The \textsf{dedication} environment is similar to
+% the \textsf{abstract} environment. This page is numbered 2 and the
+% subsequent pages are numbered accordingly. A pdfbookmark is
+% not created because of a reported issue that Adobe products have with
+% pdfbookmarks containing an |\mbox|.
+% \begin{macrocode}
+\newenvironment{dedication}{%
+ \global\diss@dedicationtrue
+ \typeout{Dedication page}
+ \chapter*{\dedicationname}%
+ \thispagestyle{plain}
+ \setcounter{page}{2}
+ \null\centering}
+{\par\null\clearpage}%
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\tableofcontents} The |\tableofcontents| macro is redefined to
+% begin at page 2 if the dedication environment does not exist. It is
+% single-spaced.
+% \begin{macrocode}
+\renewcommand\tableofcontents{%
+ \ifdiss@dedication\relax\else\setcounter{page}{2}\fi
+ \chapter*{\contentsname}%
+ \ifboolexpr{bool{pdf} or bool{xetex} or bool{luatex}}{%
+ \pdfbookmark[0]{\contentsname}{contents}%contents.0
+ }{}
+ \singlespacing
+ \@starttoc{toc}%
+ \normalspacing
+ }
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\listoffigures}
+% \begin{macro}{\listoftables}
+% These macros are modified to add the
+% |\listfigurename| and |\listoftables|
+% to the Table of Contents. Both of these are also single spaced. The
+% inter-entry spacing is changed by adding a |\vskip| after each entry. This is
+% done in the |figure| and |table| environments later.
+% \begin{macrocode}
+\renewcommand\listoffigures{%
+ \chapter*{\listfigurename}%
+ \addcontentsline{toc}{chapter}{\listfigurename}%
+ \typeout{List of figures - \listfigurename}
+ \singlespacing
+ \@starttoc{lof}%
+ \normalspacing
+}
+%
+\renewcommand\listoftables{%
+ \chapter*{\listtablename}%
+ \addcontentsline{toc}{chapter}{\listtablename}%
+ \typeout{List of tables - \listtablename}
+ \singlespacing
+ \@starttoc{lot}%
+ \normalspacing
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{environment}{preface}
+% \begin{environment}{acknowledgement}
+% These environments are similar to the \textsf{dedication} environment. They are
+% defined as |\chapter*{}| so they are not numbered and not added to Table of
+% Contents and so, add that manually by using |\addcontentsline|.
+% \begin{macrocode}
+\newenvironment{preface}{%
+ \typeout{Preface page}
+ \chapter*{\prefacename}
+ \addcontentsline{toc}{chapter}{\prefacename}%
+}%
+{\par\null\clearpage}%
+%
+\newenvironment{acknowledge}{%
+ \typeout{Acknowledgment page}
+ \chapter*{\acknowledgename}
+ \addcontentsline{toc}{chapter}{\acknowledgename}%
+}%
+{\par\null\clearpage}%
+%
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \begin{macro}{\unnumchapter}
+% Allows the user to create unnumbered chapters that appear in the TOC.
+% \begin{macrocode}
+\newcommand\unnumchapter[1]{%
+ \chapter*{#1}%
+ \addcontentsline{toc}{chapter}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{symbols}
+% \begin{macro}{\sym}
+% Define \textsf{symbols} environment which lays out it as a |\chapter*| and
+% adds |\symbolsname| to the TOC. The environment is actually a horizontally
+% centered \textsf{longtable} environment. To aid entry of a \emph{symbol} and
+% its definition, |\sym| macro command is also defined.
+% \begin{macrocode}
+\newcommand{\sym}[2]{\ensuremath{#1} & #2 \\}
+\newenvironment{symbols}[1][rl]{%
+ \typeout{Symbols page}
+ \chapter*{\symbolsname}%
+ \addcontentsline{toc}{chapter}{\symbolsname}%
+ \begin{center}\begin{longtable}{#1}}%
+{\end{longtable}\end{center}\par\null}
+%
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+% Modify chapter definition in |\@chapter| to put the word
+% ``Chapter'' (|\@chapapp|) in the Table of Contents.
+% That is, now the TOC will contain
+% ``Chapter 1: First chapter'' rather than
+% ``1. First chapter.''
+% The rest of the format code is essentially the same as
+% that in the \textsf{book} class.
+% \begin{macrocode}
+\def\@chapter[#1]#2{
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\MakeTextUppercase{\@chapapp\space\thechapter.}}%
+ \addcontentsline{toc}{chapter}%
+ {{\@chapapp\ \thechapter: #1}}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@makechapterhead{\MakeTextUppercase{#2}}%
+ \@afterheading }%
+%
+% \end{macrocode}
+% Modify part definition in |\@part| and |\@spart| to keep the font
+% size for part headings |\normalsize| and |\mdseries|. It is otherwise
+% the same as in the \textsf{book} class.
+% \begin{macrocode}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \normalsize\mdseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \normalsize\mdseries \MakeTextUppercase{#2}\par}%
+ \@endpart}
+\def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \normalsize\mdseries #1\par}%
+ \@endpart}
+%
+% \end{macrocode}
+% Now format section headings to conform to the official guidelines.
+% \begin{macro}{\@makechapterhead}
+% First, modify the chapter heading label to be normalsize'd
+% and centered. Instead of the bold-faced heading label,
+% also make it |\mdseries|.
+% If we are in the |\mainmatter|, we add ``CHAPTER''
+% and chapter number before actually putting the chapter name otherwise only the
+% ``chapter name'' is put. Note that chapter/section headings must all be
+% double-spaced.
+% \begin{macrocode}
+\renewcommand{\@makechapterhead}[1]{%
+ \vspace*{30pt}%
+ {\parindent \z@ \raggedright
+ \ifnum \c@secnumdepth >\m@ne
+ \normalfont\normalsize%
+ \if@mainmatter
+ \ifcentered@chaptitle\center\else\relax\fi%
+ \MakeTextUppercase{\@chapapp{} \thechapter}\par\nobreak
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \ifcentered@chaptitle\center\else\relax\fi%
+ \mdseries{#1}\par\nobreak
+ \vskip 30\p@
+ }}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@makeschapterhead}
+% Make the TOC, LOF, LOT and other |\chapter*| headings in normal size,
+% and |\mdseries| by modifying the macro |\@makeschapterhead|. Although these
+% heading labels usually fit in a single-line, we copy the formatting for
+% the chapter heading label (single-spacing) and make the spacing double again
+% for the text.
+% \begin{macrocode}
+\renewcommand{\@makeschapterhead}[1]{%
+ \vspace*{30pt}%
+ {\parindent \z@ \raggedright
+ \normalfont\normalsize%
+ \interlinepenalty\@M
+ \ifcentered@chaptitle\center\else\relax\fi
+ \mdseries{\MakeTextUppercase{#1}}\par\nobreak
+ \vskip 30\p@
+ }}
+%
+% \end{macrocode}
+% \end{macro}
+% Now, set the section labels to |\mdseries| rather than bold-faced. We also
+% make sure that these are set in normal spacing, font and size.
+% This is done for each
+% of |\section|, |\subsection|, |\subsubsection|, |\subsubsubsection|,
+% |\paragraph| and |\subparagraph|.
+% \begin{macrocode}
+\renewcommand\section{\suppressfloats[t]%
+ \@startsection {section}{1}{\z@}%
+ {-4.2ex \@plus -1ex \@minus -.2ex}%
+ {1.8ex \@plus.2ex}%
+ {\normalfont\normalsize\mdseries} }
+\renewcommand\subsection{\suppressfloats[t]%
+ \@startsection{subsection}{2}{\z@}%
+ {-3.9ex\@plus -1ex \@minus -.2ex}%
+ {1.2ex \@plus .2ex}%
+ {\normalfont\normalsize\mdseries} }
+\renewcommand\subsubsection{\suppressfloats[t]%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-3.9ex\@plus -1ex \@minus -.2ex}%
+ {1.2ex \@plus .2ex}%
+ {\normalfont\normalsize\mdseries} }
+\renewcommand\paragraph{%
+ \@startsection{paragraph}{4}{\z@}%
+ {3.9ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\mdseries} }
+\renewcommand\subparagraph{%
+ \@startsection{subparagraph}{5}{\parindent}%
+ {3.9ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\mdseries} }
+%
+% \end{macrocode}
+% \begin{macro}{\l@part}
+% Modify the macro |\l@part| that formats part titles in the
+% contents-like files (|.toc|, |.lof| and |.lot|) by adding a |\@dottedtocline|
+% macro. The indent width is set to 1.5em - to line up a continued line with
+% the section number below it. We also leave less space between each part
+% and the last section entry than the default and don't change the font.
+% \begin{macrocode}
+\renewcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty{-\@highpenalty}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ {\leavevmode
+ \@dottedtocline{1}{0pt}{\@tempdima}{#1}{#2}
+ }\par
+ \nobreak
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \endgroup
+ \fi}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@chapter}
+% Modify the macro |\l@chapter| that formats chapter titles in the
+% contents-like files (|.toc|, |.lof| and |.lot|) by adding a |\@dottedtocline|
+% macro. The indent width is set to 1.5em - to line up a continued line with
+% the section number below it. We also leave less space between each chapter
+% and the last section entry than the default.
+% \begin{macrocode}
+\renewcommand*{\l@chapter}[2]{%
+ \addpenalty{-\@highpenalty}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup \leavevmode
+ \@dottedtocline{1}{0pt}{\@tempdima}{#1}{#2}
+ \par
+ \penalty\@highpenalty
+ \endgroup
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thesubsubsection}
+% We increase the number of section-depth by 1 and force subsubsection entry in the TOC
+% by increasing the |\tocdepth|. In addition, the label number of
+% |\subsubsection| is defined to be similar to that for |\subsection| i.\/e.\/
+% all arabic numerals.
+% \begin{macrocode}
+\addtocounter{secnumdepth}{1}
+\addtocounter{tocdepth}{1}
+\renewcommand{\thesubsubsection}{%
+ \thesubsection.\arabic{subsubsection}}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{quote}
+% Redefine the |quote| environment to be single-spaced instead of being same
+% as the rest of the text.
+% \begin{macrocode}
+\renewenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \singlespacing
+ \item\relax}
+ {\endlist}
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{itemize}
+% Redefine the |itemize| environment so that each item is
+% single-spaced, but with a line of space between each item.
+% \begin{macrocode}
+\let\realitemize\itemize
+\let\endrealitemize\enditemize
+\renewenvironment{itemize}
+ {\realitemize
+ \singlespacing}
+ {\endrealitemize
+ \doublespacing}
+% \end{macrocode}
+% \end{environment}{itemize}
+% \begin{environment}{enumerate}
+% Redefine the |enumerate| environment so that each item is
+% single-spaced, but with a line of space between each item.
+% Note we need the optional argument in order to be compatible
+% with the |enumerate| package
+% \begin{macrocode}
+\let\realenumerate\enumerate
+\let\endrealenumerate\endenumerate
+\renewenvironment{enumerate}[1][1.]
+ {\realenumerate[#1]
+ \singlespacing}
+ {\endrealenumerate
+ \doublespacing}
+% \end{macrocode}
+% \end{environment}{enumerate}
+% \begin{environment}{description}
+% Redefine the |description| environment so that each item is
+% single-spaced, but with a line of space between each item.
+% \begin{macrocode}
+\let\realdescription\description
+\let\endrealdescription\enddescription
+\renewenvironment{description}
+ {\realdescription
+ \singlespacing}
+ {\endrealdescription
+ \doublespacing}
+% \end{macrocode}
+% \end{environment}{description}
+% Set some lengths that are used in the |table| and the |figure|
+% environments. Note that we set the caption width (|\capwidth|)
+% to be 90\% of the |\textwidth|.
+% \begin{macrocode}
+\setlength\abovecaptionskip{20\p@}
+\newlength\capwidth
+\setlength{\capwidth}{0.90\textwidth}
+\newlength\abovetableskip
+\newlength\belowtableskip
+\newlength\abovefigureskip
+\newlength\belowfigureskip
+\setlength\abovetableskip\belowcaptionskip
+\setlength\belowtableskip\abovecaptionskip
+\setlength\abovefigureskip\abovecaptionskip
+\setlength\belowfigureskip\belowcaptionskip
+%
+% \end{macrocode}
+% \begin{environment}{figure}
+% For the |figure| environment, first some skip lengths are set, then
+% use |\@makefigurecaption| to
+% format the captions instead of the default |\@makecaption|, since the
+% layout is different for |figure| and the |table| environment. Further
+% add a |\vskip| to each entry in |.lof| file so that the
+% inter-caption spacing seems double-spaced.
+% \begin{macrocode}
+\renewenvironment{figure}{%
+ \setlength{\abovecaptionskip}{\abovefigureskip}
+ \setlength{\belowcaptionskip}{\belowfigureskip}
+ \let\@makecaption\@makefigurecaption
+ \@float{figure}}%
+ {%
+ \addtocontents{lof}{ {\vskip 0.4em} }%
+ \end@float%
+}
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\@makefigurecaption}
+% The |\@makefigurecaption| is defined to format the caption in a parbox with
+% width equal to |\capwidth| and is formatted in
+% single-spacing. The interline-spacing is then changed to double after
+% the caption.
+% \begin{macrocode}
+\long\def\@makefigurecaption#1#2{%
+ \vskip\abovecaptionskip
+ \begin{center}
+ \parbox{\capwidth}{
+ \centering\singlespacing
+ {#1}. {#2}%\par
+ \vskip\belowcaptionskip\normalspacing }%
+ \end{center}
+}%
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{table}
+% After setting the above and below skip lengths,
+% the |table| environment is set to be
+% single spaced. However, to obtain double-spacing between the entries,
+% redefine the |\arraystretch| to be equivalent to the
+% |\double@baselinestretch|. This way, while there are double-spaced entries,
+% the entry itself is single-spaced. Similar to that in
+% |\@makefigurecaption|, a |\vskip| is added to each entry in the |.lot| file.
+% \begin{macrocode}
+\renewenvironment{table}[1][tbp]{%
+ \setlength{\abovecaptionskip}{\abovetableskip}
+ \setlength{\belowcaptionskip}{\belowtableskip}
+ \renewcommand{\arraystretch}{\double@baselinestretch}
+ \let\scaption\caption%
+ \renewcommand*{\caption}[2][]{%
+ \ifthenelse{\equal{##1}{}}{%
+ \def\shortcaption{##2}%
+ }{%
+ \def\shortcaption{##1}%
+ }%
+ \scaption[\shortcaption]{\MakeTextUppercase{##2}}%
+ }%
+ \let\@makecaption\@maketablecaption
+ \@float{table}[#1]%
+ \singlespacing%
+ }%
+ {%
+ \addtocontents{lot}{ {\vskip 0.4em} }%
+ \end@float%
+}
+%
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\@maketablecaption}
+% The |\@maketablecaption| is defined similarly to |\@makefigurecaption|
+% to have the table label and caption in
+% separate lines and with normal-spacing (double-spaced).
+% \begin{macrocode}
+\long\def\@maketablecaption#1#2{
+ \vskip\abovecaptionskip
+ \begin{center}
+ \makebox[\linewidth]{
+ \parbox{\capwidth}{
+ \centering\normalspacing
+ \MakeTextUppercase{#1}\\[\single@skip]
+ {#2}%\par
+ \vskip\belowcaptionskip }%
+ }%
+ \end{center}
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\longtable}
+% Similar to the |table| environment,
+% the |longtable| environment is made singly-spaced but the |\arraystretch| is
+% made equal to double the |baselinestretch|.
+% \begin{macrocode}
+\renewcommand\longtable{%
+ \singlespacing
+ \renewcommand{\arraystretch}{\double@baselinestretch}
+ \begingroup
+ \@ltfirstcaptiontrue
+ \@ifnextchar[\LT@array{\LT@array[x]}}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\endlongtable}
+% This bit is taken from |longtable.sty|. In order to obtain double-spacing
+% in the list of tables, a |\vskip| of 0.4em is added to |.lot| file.
+% \begin{macrocode}
+\renewcommand\endlongtable{%
+ \crcr
+ \noalign{%
+ \let\LT@entry\LT@entry@chop
+ \xdef\LT@save@row{\LT@save@row}}%
+ \LT@echunk
+ \LT@start
+ \unvbox\z@
+ \LT@get@widths
+ \if@filesw
+ {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
+ \gdef\expandafter\noexpand
+ \csname LT@\romannumeral\c@LT@tables\endcsname
+ {\LT@save@row}}}%
+ \fi
+ \ifx\LT@save@row\LT@@save@row
+ \else
+ \LT@warn{Column \@width s have changed\MessageBreak
+ in table \thetable}%
+ \LT@final@warn
+ \fi
+ \endgraf\penalty -\LT@end@pen
+ \addtocontents{lot}{ {\vskip 0.4em} }%
+ \endgroup
+ \global\@mparbottom\z@
+ \pagegoal\vsize
+ \endgraf\penalty\z@\addvspace\LTpost
+ \ifvoid\footins\else\insert\footins{}\fi
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LT@makecaption}
+% For the |longtable| environment, the |\LTcapwidth| is set equal to
+% |\capwidth|. In order to obtain consistent table captions, the command
+% |\LT@makecaption| is modified in a similar manner as |\maketablecaption|.
+% \begin{macrocode}
+\setlength{\LTcapwidth}{\capwidth}
+\renewcommand\LT@makecaption[3]{%
+ \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+ \vskip\abovetableskip%
+ \centering\normalspacing
+ \if@ltfirstcaption
+ #1{\MakeTextUppercase{#2} }\\[\single@skip]
+ \MakeTextUppercase{#3}\par
+ \else%
+ #1{\MakeTextUppercase{#2 (continued)} }\par
+ \fi
+ \global\@ltfirstcaptionfalse
+ \endgraf\vskip\belowtableskip}%
+ \hss}}}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\timenow}
+% This macro is used in making the |\draftheader| and |\reviewheader| below. It
+% outputs time in |HH:MM| format.
+% \begin{macrocode}
+\newcommand\timenow{%
+ \@tempcnta=\time \divide\@tempcnta by 60 \number\@tempcnta:\multiply
+ \@tempcnta by 60 \@tempcntb=\time \advance\@tempcntb by -\@tempcnta
+ \ifnum\@tempcntb <10 0\number\@tempcntb\else\number\@tempcntb\fi}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\diss@header}
+% This header is used in the dissertation document when the |draft| or |review|
+% option is used. These headers serve as a note for the date and time of the
+% document compilation.
+% \begin{macrocode}
+\newcommand{\diss@header}{%
+ \ifdiss@review Review \else Draft \fi document [\today\/ at \timenow\/]
+ }%
+%
+% \end{macrocode}
+% \end{macro}
+% The header prepared above is put in the document by modifiying the \emph{plain}
+% and \emph{empty} pagestyles except when the |final| option is chosen.
+% \begin{macrocode}
+\ifdiss@final
+ \renewcommand{\ps@plain}{
+ \renewcommand{\@oddhead}{\@empty}
+ \renewcommand{\@oddfoot}{\hfil\thepage\hfil}
+ \let\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot
+ }%
+\else
+ \renewcommand{\ps@plain}{
+ \renewcommand{\@oddhead}{\framebox[\textwidth]{
+ \centering\footnotesize\tt\diss@header}}%
+ \renewcommand{\@oddfoot}{\hfil\textrm{\thepage}\hfil}
+ \let\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot
+ }%
+ \renewcommand{\ps@empty}{
+ \renewcommand{\@oddhead}{\framebox[\textwidth]{
+ \centering\footnotesize\tt\diss@header}}%
+ \renewcommand{\@oddfoot}{\@empty}
+ \let\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot
+ }%
+\fi
+%
+% \end{macrocode}
+% \begin{macro}{\bibsection}
+% By redefining |\bibsection| macro, add the |\bibname| to the table of
+% contents and as a chapter heading for the bibliography.
+% \begin{macrocode}
+\renewcommand{\bibsection}{
+ \chapter*{\bibname}%
+ \addcontentsline{toc}{chapter}{\bibname}%
+}%
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bibfont}
+% Changed the |\bibfont| macro to obtain single-spacing within each
+% bibliographic entry. Between different entries, it is still |\normalspacing|.
+% In addition, when the |numrefs| option is selected, the |\@biblabel| is redefined
+% to number the bibliographic entries as |1. xxxx| instead of the default
+% |[1] xxxx|.
+% \begin{macrocode}
+\renewcommand{\bibfont}{\singlespacing}
+\ifnum@refs
+ \renewcommand{\@biblabel}[1]{\hfill#1.\hfill}
+\fi
+%
+% \end{macrocode}
+% \end{macro}
+% Lastly, after the bibliography in the final document,
+% add a framed box which contains a blurb about
+% the typesetting program and \nddiss\space version used for preparing the
+% dissertation document.
+% \begin{macrocode}
+\ifdiss@final
+\AtEndDocument{
+ \vfill
+ \centering\singlespacing
+ \framebox[0.85\textwidth]{
+ \begin{minipage}{0.80\textwidth}\footnotesize%
+ \centering \itshape This document was prepared \& typeset with
+ \upshape
+ \ifluatex
+ \LuaLaTeX
+ \else\ifxetex
+ \XeLaTeX
+ \else\ifpdf
+ pdf\LaTeX
+ \else
+ \LaTeXe
+ \fi\fi\fi
+ \itshape , and
+ formatted with \upshape\nddiss\xspace\itshape classfile
+ (v\dissfileversion [\dissfiledate])
+ \end{minipage} }
+ \clearpage}
+\else\relax\fi
+%
+% \endinput
+% End of file `nddiss2e.cls'.
+% \end{macrocode}
+%%
+% \iffalse
+%</class>
+% \fi
+%
+% \iffalse
+%<*template>
+\documentclass[draft]{nddiss2e}
+ % One of the options draft, review, final must be chosen.
+ % One of the options textrefs or numrefs should be chosen
+ % to specify if you want numerical or ``author-date''
+ % style citations.
+ % Other available options are:
+ % 10pt/11pt/12pt (available with draft only)
+ % twoadvisors
+ % noinfo (should be used when you compile the final time
+ % for formal submission)
+ % sort (sorts multiple citations in the order that they're
+ % listed in the bibliography)
+ % compress (compresses numerical citations, e.g. [1,2,3]
+ % becomes [1-3]; has no effect when used with
+ % the textrefs option)
+ % sort&compress (sorts and compresses numerical citations;
+ % is identical to sort when used with textrefs)
+\begin{document}
+
+\frontmatter % All the items before Chapter 1 go in ``frontmatter''
+
+\title{ Title of Work } % Title
+
+\author{ Jane Doe } % Author's name
+\work{ Dissertation } % ``Dissertation'' or ``Thesis''
+\degaward{ Doctor of Philosophy } % Degree you're aiming for.
+ % Should be one of the following options:
+ % ``Doctor of Philosophy'' (do NOT include ``in Subject'')
+ % ``Master of Science \\ in \\ Subject''
+\advisor{ John Public } % Advisor's name
+ % \secondadvisor{ } % Second advisor, if used option ``twoadvisors''
+\department{ } % Name of the department
+
+\maketitle % The title page is created now
+
+ % You must use either the \makecopyright option or the \makepublicdomain option.
+ % \copyrightholder{ } % If you're not the copyright holder
+ % \copyrightyear{ } % If the copyright is not for the current year
+ % \makecopyright % If not making your work public domain
+ % uncomment out \makecopyright
+ % \makepublicdomain % Uncomment this to make your work public domain
+
+ % Including an abstract is optional for a master's thesis, and required for a
+ % doctoral dissertation.
+ % \begin{abstract}
+ % \end{abstract}
+ % % Either place the text between begin/end, or
+ % \include{abstract} % put it in a file to be included
+
+ % Including a dedication is optional.
+ % \renewcommand{\dedicationname}{\mbox{}} % Replace \mbox{} if you want
+ % something else.
+ % \begin{dedication}
+ % \end{dedication}
+ % % Use one of the two choices to add dedication text
+ % \include{dedication}
+
+\tableofcontents
+\listoffigures
+\listoftables
+
+ % Including a list of symbols is optional.
+ %% \renewcommand{\symbolsname}{newsymname} % Replace ``newsymname'' with
+ % the name you want, and uncomment
+ % \begin{symbols}
+ % \end{symbols}
+ % % Use one of the two choices to add symbols text
+ % \include{symbols}
+
+ % Including a preface is optional.
+ %% \renewcommand{\prefacename}{ } % If you want another Preface name, add
+ % something else, and uncomment.
+ % \begin{preface}
+ % \end{preface}
+ % % Use one of the two choices to add preface text
+ % \include{preface}
+
+ % Including an acknowledgements section may or may not be optional. It's hard to
+ % tell from the information available in Spring 2013.
+ %% \renewcommand{\acknowledgename}{ } % If you want another Acknowledgement name
+ % add something else, and uncomment
+ % \begin{acknowledge}
+ % \end{acknowledge}
+ % % Use one of the two choices to add acknowledge text
+ % \include{acknowledgement}
+
+\mainmatter
+ % Place the text body here.
+ % \include{chapter-one}
+ % Begin each chapter with \chapter{Title}.
+
+% Appendices are optional.
+\appendix
+
+ % If you have appendices, add them here.
+ % Begin each one with \chapter{TITLE} as before. The \appendix command takes
+ % care of renaming chapter headings and creates a new page in the Table of
+ % Contents for them.
+ % \include{appendix-one}
+
+\backmatter % Place for bibliography and index
+
+% If you are using BibTeX to manage your citations:
+% Use the ``nddiss2e'' bibliography style, unless your field does not
+% include the titles of journal articles in bibliography entires.
+% If you do not want the titles of journal articles to appear, use the
+% ``nddiss2enoarticletitles'' bibliography style.
+
+\bibliographystyle{nddiss2e}
+ \bibliography{ } % input the bib-database file name
+
+% If you are not using BibTeX to manage your citations, use
+% \begin{thebibliography}{number}
+% \end{thebilbiography}
+% as usual. Note that if you choose this route, formatting the bibliography
+% is your responsibility.
+
+\end{document}
+
+%</template>
+% \fi
+%%
+% \Finale
+\endinput
+%% End of file : nddiss2e.dtx
diff --git a/macros/latex/contrib/nddiss/nddiss2e.ins b/macros/latex/contrib/nddiss/nddiss2e.ins
new file mode 100644
index 0000000000..5376e72ddc
--- /dev/null
+++ b/macros/latex/contrib/nddiss/nddiss2e.ins
@@ -0,0 +1,73 @@
+%%
+%% Copyright (C) 2004-2005 by Sameer Vijay
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.2 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%%
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/nddiss2e}
+
+\preamble
+
+This is a generated file.
+
+ Copyright (C) 2004-2005 Sameer Vijay
+
+ This file may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either
+ version 1.2 of this license or (at your option) any later
+ version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+
+
+==============================================================
+
+Notre Dame's Dissertation document class by Sameer Vijay
+that adheres to the University of Notre Dame guidelines
+published in Spring 2004.
+
+Please send any improvements/suggestions to :
+ Shari Hill, Graduate Reviewer.
+ shill2@nd.edu
+
+For documentation on how to use nddiss2e class, process the
+file nddiss2e.dtx through LaTeX.
+
+==============================================================
+
+\endpreamble
+%
+
+\askforoverwritefalse
+
+\generate{%
+ \file{nddiss2e.cls}{\from{nddiss2e.dtx}{class}}%
+ \file{template.tex}{\from{nddiss2e.dtx}{template}}%
+}%
+
+\obeyspaces
+\Msg{****************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation of the nddiss2e package, you have *}
+\Msg{* to move the following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* nddiss2e.cls *}
+\Msg{* *}
+\Msg{* To produce the documentation, run the file ``nddiss2e.dtx'' *}
+\Msg{* through LaTeX atleast 3 times. *}
+\Msg{* (i.e. (pdf)latex nddiss2e.dtx) *}
+\Msg{* *}
+\Msg{* You may use `template.tex' as a guide for the structure of *}
+\Msg{* your document. *}
+\Msg{* *}
+\Msg{****************************************************************}
+
+\endbatchfile
+
+%% End of the file : nddiss2e.ins
diff --git a/macros/latex/contrib/nddiss/nddiss2e.pdf b/macros/latex/contrib/nddiss/nddiss2e.pdf
new file mode 100644
index 0000000000..990e9c0c1c
--- /dev/null
+++ b/macros/latex/contrib/nddiss/nddiss2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/nddiss/process.sh b/macros/latex/contrib/nddiss/process.sh
new file mode 100755
index 0000000000..61bfd2af61
--- /dev/null
+++ b/macros/latex/contrib/nddiss/process.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+filen=nddiss2e
+echo $filen
+latex ${filen}.ins
+latex ${filen}.dtx
+latex ${filen}.dtx
+makeindex -s gglo.ist -o ${filen}.gls ${filen}.glo
+makeindex -s gind.ist -o ${filen}.ind ${filen}.idx
+latex ${filen}.dtx
+pdflatex ${filen}.dtx
+rm -fr ${filen}.aux
+rm -fr ${filen}.glo
+rm -fr ${filen}.gls
+rm -fr ${filen}.idx
+rm -fr ${filen}.ilg
+rm -fr ${filen}.ind
+#rm -fr ${filen}.log
+rm -fr ${filen}.out
+rm -fr ${filen}.toc