texlive[59146] Master/texmf-dist: msu-thesis (9may21)

commits+karl at tug.org commits+karl at tug.org
Sun May 9 22:49:49 CEST 2021


Revision: 59146
          http://tug.org/svn/texlive?view=revision&revision=59146
Author:   karl
Date:     2021-05-09 22:49:49 +0200 (Sun, 09 May 2021)
Log Message:
-----------
msu-thesis (9may21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf
    trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex
    trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex
    trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf
    trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex
    trunk/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/msu-thesis/README.md

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/msu-thesis/README
    trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst

Deleted: trunk/Master/texmf-dist/doc/latex/msu-thesis/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/README	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/README	2021-05-09 20:49:49 UTC (rev 59146)
@@ -1,46 +0,0 @@
-MSU Thesis Class Version 2.8 2017/12/13
-
-Copyright 2011,2012,2013,2014,2015,2016, 2017 by Alan Munn <amunn at msu.edu>
-
-This is a class file for producing dissertations and theses according to
-the Michigan State University Graduate School Guidelines for Electronic
-Submission of Master's Theses and Dissertations (October 2017).
-
-The class is based on the memoir document class, and thefore inherits
-all of the functionality of that class.
-
-Installation:
-
-The msu-thesis class is part of both TeXLive and MikTeX, so you should either already have it or should be able to install it with your package manager.
-
-If you wish to install it locally, follow the directions below:
-
-Put msu-thesis.cls 
-<local texmf>/tex/latex/msu-thesis
-
-Put msu-thesis.tex, msu-thesis.pdf and the samples folder into
-<local texmf>/doc/latex/msu-thesis
-
-The samples folder contains a thesis test-file and
-a template.
-
-This package may be distributed and/or modified under the conditions of
-the LaTeX Project Public License, either version 1.3 of this license or
-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 package has the LPPL maintenance status `maintained'.
-
-The Current Maintainer of this package is Alan Munn.
-
-This package consists of the following source file:
-msu-thesis.cls,
-Documentation files:
-msu-thesis.tex and msu-thesis.pdf;
-A template file: MSU-thesis-template.tex;
-A test file, test bibliography, and the Unified Linguistics Stylesheet bst file: MSU-thesis-testfile.tex, MSU-theis-testfile.bib, unified.bst
-
-
-Use at your own risk! Report bugs/problems/questions to <amunn at msu.edu>
-

Added: trunk/Master/texmf-dist/doc/latex/msu-thesis/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/README.md	2021-05-09 20:49:49 UTC (rev 59146)
@@ -0,0 +1,56 @@
+# MSU Thesis Class Version 2.9c 2021/05/07
+
+Copyright 2011-2021 by Alan Munn <amunn at msu.edu>
+
+This is a class file for producing dissertations and theses according to
+the Michigan State University Graduate School Guidelines for Electronic
+Submission of Master's Theses and Dissertations (March 2020).
+
+The class is based on the memoir document class, and thefore inherits
+all of the functionality of that class.
+
+## Installation:
+
+The msu-thesis class is part of both TeXLive and MikTeX, so you should either already have it or should be able to install it with your package manager.
+
+If you wish to install it locally, follow the directions below:
+
+Put `msu-thesis.cls`  into 
+
+`<local texmf>/tex/latex/msu-thesis`
+
+Put `msu-thesis.tex`, `msu-thesis.pdf` and the `samples` folder into
+
+`<local texmf>/doc/latex/msu-thesis`
+
+The samples folder contains a thesis test-file and
+a template.
+
+This package may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license or
+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 package has the LPPL maintenance status "maintained".
+
+The Current Maintainer of this package is Alan Munn.
+
+This package consists of the following source file:
+ - `msu-thesis.cls`
+ 
+Documentation files:
+ - `msu-thesis.tex` 
+ - `msu-thesis.pdf`
+
+A template file: 
+ - `MSU-thesis-template.tex`
+ 
+A test file and a test bibliography:
+
+ `MSU-thesis-testfile.tex`
+ `MSU-theis-testfile.bib`
+
+
+Use at your own risk! Report bugs/problems/questions to [amunn at msu.edu](mailto:amunn at msu.edu) or use the [GitHub repository bug tracker](https://github.com/amunn/msu-thesis/issues).
+


Property changes on: trunk/Master/texmf-dist/doc/latex/msu-thesis/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex	2021-05-09 20:49:49 UTC (rev 59146)
@@ -2,8 +2,8 @@
 
 \documentclass[11pt]{article}
 
-\def\msuversion{2.8}
-\def\msudate{2017/12/13}
+\def\msuversion{2.9c}
+\def\msudate{2021/05/07}
 \title{\textbf{Using the MSU Thesis Class}}
 \author{\textbf{Alan Munn}\\Department of Linguistics and Languages\\\texttt{\href{mailto:amunn at msu.edu}{amunn at msu.edu}}}
 \date{Version \msuversion\\\msudate}
@@ -10,7 +10,6 @@
 \usepackage[T1]{fontenc}
 \usepackage[lmargin=.75in,rmargin=.75in,tmargin=1in,bmargin=1in]{geometry}
 \usepackage{titling}
-\usepackage[utf8]{inputenc}
 \usepackage{array, booktabs, multicol, fancyhdr, xspace,tabularx}
 \usepackage{enumitem}
 \usepackage{fancyvrb,listings,url}
@@ -69,13 +68,13 @@
 \thispagestyle{empty}
 \renewcommand{\abstractname}{\sffamily Abstract}
 
-\abstract{\noindent\begin{quote} This is a class file for MSU theses and dissertations.  It is based on the \pkg{memoir} class, and therefore supports all of the functionality of that class.  It should generate a document which meets all the basic formatting requirements laid out by the \href{https://grad.msu.edu/etd/formatting-guide}{Formatting Guide For Submission of Master’s Theses and Doctoral Dissertations} (October 2017) produced by the Graduate School, including requirements for margins, titlepage, page numbering, section titles, sub- and superscript sizes etc.\end{quote}}
+\abstract{\noindent\begin{quote} This is a class file for MSU theses and dissertations.  It is based on the \pkg{memoir} class, and therefore supports all of the functionality of that class.  It should generate a document which meets all the basic formatting requirements laid out by the \href{https://grad.msu.edu/etd/formatting-guide}{Formatting Guide For Submission of Master’s Theses and Doctoral Dissertations} (March 2020) produced by the Graduate School, including requirements for margins, titlepage, page numbering, section titles, sub- and superscript sizes etc.\end{quote}}
 \section{Introduction}
 Formatting a dissertation according to a University's thesis requirements is not always a simple task in \LaTeX, especially since the requirements are generally aimed at MSWord users.  Furthermore, most of the work of formatting a document is supposed to be done by the document class itself, and not by the individual user.  Fortunately, Michigan State University's thesis requirements are actually sane, and fairly straightforward.  The present class file is designed to further make the process easier for \LaTeX\ users, by doing all the heavy lifting for you, so that you can focus on the content and not the formatting.
 \section{Background}
 The MSU Thesis Class is based on the \pkg{memoir} document class.  The \pkg{memoir} class is an extensive class that incorporates the functionality of many other packages into it. The class is extensively documented, and the documentation (\pkg{memman.pdf}) should be available with any \TeX\ distribution.  I strongly recommend that you familiarize yourself with \pkg{memoir} as you use the present class.
-\section{Package Options}
-In addition to any options passed to the \pkg{memoir} class (e.g. |oldfontcommands|; see Section \ref{sec:fonts}), the \pkg{msu-thesis} takes three options: one to specify the type of degree, (see Table~\ref{degrees}), one to enable landscape page numbering and one to make small adjustments to  Table of Contents.  If no degree option is specified, a Ph.D. dissertation is assumed.
+\section{Class Options}
+In addition to any options passed to the \pkg{memoir} class (e.g. |oldfontcommands|; see Section \ref{sec:fonts}, font size), the \pkg{msu-thesis} takes three options: one to specify the type of degree, (see Table~\ref{degrees}), one to enable landscape page numbering, and one to make small adjustments to  Table of Contents.  If no degree option is specified, a Ph.D. dissertation is assumed.
 \begin{table}
 \centering
 \begin{tabularx}{.8\textwidth}{>{\ttfamily}lX}
@@ -106,11 +105,14 @@
 The Formatting Guide requires that any lansdscape pages be numbered in landscape mode (i.e. along the long edge of the page) rather than in portrait mode, and rotated in the final PDF. The |[lscape]| option enables this. The option loads both the \pkg{pdflscape} package and \pkg{tikz}, and is implemented as a class option so that you are not required to load those packages if they are not needed.
 \subsection{The contents options}
 In 2013 I received reports that the thesis office now requires all elements in the Table of Contents to have the same formatting as they are in the main document, which means that all section, subsection, and subsubsection headings need to be bold.  Since this looks very ugly, I have created two options to turn it off, the |[plaintoc]| option (which makes all ToC entries plain) and |[mixedtoc]| option (which makes Chapters bold and other elements plain). I suspect that the thesis office checkers don't notice this all the time so if you want to have a prettier table of contents and are willing to have that format be corrected, you can use these options to turn off the MSWord inspired ugliness of an entirely bold Table of Contents. I've made |[plaintoc]| the default.  If you are forced by the thesis office to have an entirely bold ToC, use the |[boldtoc]| option.
+\subsection{Font size options}\label{fontsize}
+As of v2.9, the class now supports |10pt|, |11pt| and |12pt| font sizes. The default is |12pt|. If you are using a small font like Times New Roman or equivalent, you should stick to the default. If you are using a larger font like Computer Modern, |11pt| is probably fine. Use |10pt| at your own peril, as I suspect the Thesis Office will not accept it!
 
 \section{User commands}
-In addition to all the user functionality defined by \pkg{memoir}, the \pkg{msu-thesis} class defines five new titling commands. 
+In addition to all the user functionality defined by \pkg{memoir}, the \pkg{msu-thesis} class defines seven new titling commands. 
 \begin{quote}
 \begin{description}
+\item[\texttt{\bs maketitlepage}] Makes the main title page for the thesis.
 \item[\texttt{\bs fieldofstudy\{\}}] Takes one argument corresponding to your field of study.
 \item[\texttt{\bs dedication\{\}}] Takes one argument (should be short), your dedication.
 \item[\texttt{\{publicabstract\}}] Environment for the public abstract (unnumbered, uncounted).
@@ -224,7 +226,7 @@
 \end{quote}
 
 \subsection{Public abstract}
-If your thesis requires a public abstract, it should go immediately before the regular abstract. Use the |{publicabstract}| environment for this.
+If your thesis requires a public abstract, it should go immediately before the regular abstract. Use the |{publicabstract}| environment for this. Please note that you \emph{must} have an abstract even if you also have a public abstract.
 \subsection{Landscape figures and tables}
 If you have large figures and tables that must be rotated, you should use the |[lscape]| class option.  This enables a pagestyle |lscape| and places the page numbers correctly on the long edge of the page. The option loads the \pkg{pdflscape} package which provides a |landscape| environment to place the landscape figure in. Before the landscape environment, you need to issue a |\clearpage| command and change the pagestyle to |lscape|, and afterwards, change it back to |plain|. Schematically, then, any landscape pages should be created in the following way.  
 
@@ -302,14 +304,16 @@
 \item Remember to use the |appendices| environment instead of |\appendix| if you have more than one appendix.
 \item Remember to add the |\makebibliographypage| command before your bibliography.
 \end{itemize}
+\subsection{Master’s Theses}
+Master’s theses are sometimes relatively short, and you may think that you can just have |\section| commands with no chapters. This will \emph{not} work. The class is designed to use chapters (and as far as I can tell, the Graduate School also expects chapters).
 
 \section{Bugs and redistribution}
 \subsection{Current version}
-The latest copy of \pkg{msu-thesis} will always be available on  \href{https://ctan.org/pkg/msu-thesis?lang=en}{CTAN}. If you use MiKTeX, or a current year TeX Live then their respective package managers will update or install the latest version. If you are using a Linux-based distribution, or your TeXLive distribution is not the most recent year, you may need to install the latest copy in your local |texmf| directory. If you want others to use the class, \textsc{please} point them to CTAN, so that they can get an up-to-date version with all accompanying documentation and examples rather than passing along your copy. Please report \textsc{any} problems you have with the class to me \href{mailto:amunn at msu.edu}{amunn at msu.edu}, as this will aid in making things easier for those who follow you. The Graduate School rarely announces changes it makes to the formatting requirements, so your problem reports are extremely helpful for keeping the class in compliance with the latest standards.
+The latest copy of \pkg{msu-thesis} will always be available on  \href{https://ctan.org/pkg/msu-thesis?lang=en}{CTAN}. If you use MiKTeX, or a current year TeX Live then their respective package managers will update or install the latest version. If you are using Overleaf, you may or may not have the most recent version, since Overleaf is usually about one year behind in it’s TeX distribution.  If you are using a Linux-based distribution, or your TeXLive distribution is not the most recent year, you may need to install the latest copy in your local |texmf| directory. If you want others to use the class, \textsc{please} point them to CTAN, or tell them to use an up-to-date TeX distribution so that they can use an up-to-date version with all accompanying documentation and examples rather than passing along your copy. Please report \textsc{any} problems you have with the class to me \href{mailto:amunn at msu.edu}{amunn at msu.edu}, as this will aid in making things easier for those who follow you. If you prefer, you may also report issues using GitHub: \href{https://github.com/amunn/msu-thesis}{github.com/amunn/msu-thesis}.  The Graduate School rarely announces changes it makes to the formatting requirements, so your problem reports are extremely helpful for keeping the class in compliance with the latest standards.
 \subsection{Archiving your thesis for the future}
 Since the current version of the \pkg{msu-thesis} class satisfies the Graduate School requirements at any one time, as these requirements change, you may find that if you need to recompile your thesis after you have graduated that the formatting changes. To avoid this, I would recommend saving an archived version of the \pkg{msu-thesis.cls} file in the same folder as your thesis file.  You only need to do this once you have completely finished your thesis however; there's no need to do it during the writing process. 
 \subsection{Version history}
-Previous versions of \pkg{msu-thesis} (versions 1.0--1.4b) were created for non-electronic submission and should not be used. Versions 1.5--1.6 (the first electronic submission versions) contained a |\makeabstract| command and a separate |msuabstract| environment. These have been removed as of version 1.7.  Users who are upgrading from earlier versions to version 1.7 do not need to change these commands however but their use will trigger a warning.) Version 2.0 implemented landscape pages; version 2.1 added support for \pkg{hyperref}. Versions 2.2--2.5 mainly accommodated to the ever changing whims of the MSU Graduate School. Version 2.6 fixed some appendix bugs introduced by the previous whim accommodation. Version 2.7 fixed various small spacing issues, fixed a bug which prevented a new chapter page to be a landscape page, added support for the \pkg{apacite} package, and updated degree options. Version 2.8 fixed some spacing and capitalization issues and added support for the the public abstract.
+Previous versions of \pkg{msu-thesis} (versions 1.0--1.4b) were created for non-electronic submission and should not be used. Versions 1.5--1.6 (the first electronic submission versions) contained a |\makeabstract| command and a separate |msuabstract| environment. These have been removed as of version 1.7.  Users who are upgrading from earlier versions to version 1.7 do not need to change these commands however but their use will trigger a warning.) Version 2.0 implemented landscape pages; version 2.1 added support for \pkg{hyperref}. Versions 2.2--2.5 mainly accommodated to the ever changing whims of the MSU Graduate School. Version 2.6 fixed some appendix bugs introduced by the previous whim accommodation. Version 2.7 fixed various small spacing issues, fixed a bug which prevented a new chapter page to be a landscape page, added support for the \pkg{apacite} package, and updated degree options. Version 2.8 fixed some spacing and capitalization issues and added support for the the public abstract. Version 2.9 removed subscript/superscript size restrictions, added font size options and made small spacing changes to appease the thesis office.
 \section{Acknowledgements}
 Thanks to Lars Madsen, Ulrike Fischer and Peter Wilson for help with setting up parts of the memoir code for versions 1.0--1.4 (now eliminated due to changed requirements). Thanks to Wolfgang Sternefeld for supplying the \pkg{linguex} spacing fix code, Leo Liu for the landscape page numbering code, which greatly simplified my original version, and Florent Chervet for the hyperref code. Thanks also to the following students who have reported problems over the years: Irina Agafonova, Ali Al-jiboory, Dmitriy Bryndin, Greg Christian, Kyle Crayne, Matt Husband, Changkuk Jung, Adam Liter, William Muir, Adam Soliman, Alicia Parrish, Neil ver Planck, Michael Wojcik, Eremey Valetov, Matthew Vincent and Yisu Zhou. A special thank you to Non Thongprong who graciously provided a copy of his entire thesis which allowed me to debug some especially subtle spacing inconsistencies.
 

Modified: trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex	2021-05-09 20:49:49 UTC (rev 59146)
@@ -1,5 +1,5 @@
 % This is a template for use with the MSU Thesis class
-% Vesion 2.8 2017/12/13
+% Vesion 2.9c 2021/05/07
 %
 % Class options: 
 %[PhD]	Doctor of Philosophy (default) 
@@ -31,6 +31,8 @@
 % for a horrendous looking, but possibly required table of contents, use the [boldtoc] option
 %
 % If you have large tables/figures that need to be in landscape mode, add the [lscape] option
+%
+% The class accepts 12pt, 11pt or 10pt font size options. For Times New Roman use 12pt (default).
 
 % This is standard fontenc/inputenc for pdflatex
 % If you use LuaLaTeX or XeLaTeX you should replace this with the fontspec package
@@ -48,7 +50,7 @@
 \title{The syntax and semantics of phonology}
 \author{Joe Linguist}
 \fieldofstudy{Linguistics} % This should be in sentence case
-\date{2017}
+\date{2021}
 
 % If you want a dedication page, specify the text of the dedication here and uncomment the next command.
 %

Modified: trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex	2021-05-09 20:49:49 UTC (rev 59146)
@@ -1,5 +1,5 @@
 % !TEX TS-program = pdflatexmk
-% v2.8 Testfile
+% v2.9c Testfile
 \listfiles
 
 \documentclass[lscape]{msu-thesis}
@@ -11,7 +11,7 @@
 \usepackage{amsmath}
 %
 \usepackage[]{natbib}
-\bibliographystyle{unified}
+\bibliographystyle{apalike}
 
 
 % If you need newlines in your title, you must use \protect\\
@@ -19,7 +19,7 @@
 \author{Joe Linguist}
 \fieldofstudy{Linguistics}
 \dedication{This thesis is dedicated to someone.}
-\date{2017}
+\date{2021}
 \usepackage{listings}
 \lstset{language=TeX,basicstyle={\ttfamily}}
 \usepackage{lipsum}

Deleted: trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst
===================================================================
--- trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst	2021-05-09 20:49:49 UTC (rev 59146)
@@ -1,1550 +0,0 @@
-%%% This is unified.bst, made by Bridget Samuels. It is based on sp.bst (v1.9+)
-%%% coded by Kai von Fintel as the house style for bibliographies in the journal
-%%% Semantics and Pragmatics. The style is based on a style generated 
-%%% with custom-bib/merlin.mbs, a system for customizing bibliographic styles
-%%% created by Patrick W Daly. There have been some hand-coded adjustments to that
-%%% style to get the style closer to the Unified Style Sheet for Linguistics Journals.
-%%%
-%%% Version 1.2 [6 Mar 2010] Improved handling of multiple non-numerical year items by the same author. Should now output, e.g., "To appear(a)"
-%%% Version 1.1 [2 Feb 2010] Added comma before vol.
-%%% Version 1.0 [22 Aug 2009] Changes from sp.bst include conforming to the Unified
-%%% Style Sheet format for PhD & MA theses and citing URLs for online materials (use 
-%%% misc or unpublished as the category).
-%%
-
-ENTRY
-  { address
-    author
-    booktitle
-    chapter
-    doi
-    edition
-    editor
-    eid
-    howpublished
-    institution
-    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 {add.blank}
-{  " " * before.all 'output.state :=
-}
-
-FUNCTION {add.colon}
-{  ": " * before.all 'output.state :=
-}
-
-FUNCTION {add.comma}
-{  ", " * before.all 'output.state :=
-}
-
-
-FUNCTION {date.block}
-{
-  new.block
-}
-
-FUNCTION {not}
-{   { #0 }
-    { #1 }
-  if$
-}
-FUNCTION {and}
-{   'skip$
-    { pop$ #0 }
-  if$
-}
-FUNCTION {or}
-{   { pop$ #1 }
-    'skip$
-  if$
-}
-FUNCTION {new.block.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.block
-  if$
-}
-FUNCTION {field.or.null}
-{ duplicate$ empty$
-    { pop$ "" }
-    'skip$
-  if$
-}
-FUNCTION {emphasize}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "\emph{" swap$ * "}" * }
-  if$
-}
-FUNCTION {tie.or.space.prefix}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$
-}
-
-FUNCTION {capitalize}
-{ "u" change.case$ "t" change.case$ }
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
-
-FUNCTION {bbl.and}
-{ "\&"}
-
-FUNCTION {bbl.etal}
-{ "et~al." }
-
-FUNCTION {bbl.editors}
-{ "eds." }
-
-FUNCTION {bbl.editor}
-{ "ed." }
-
-FUNCTION {bbl.edby}
-{ "edited by" }
-
-FUNCTION {bbl.edition}
-{ "edn." }
-
-FUNCTION {bbl.volume}
-{ "vol." }
-
-FUNCTION {bbl.of}
-{ "of" }
-
-FUNCTION {bbl.number}
-{ "no." }
-
-FUNCTION {bbl.nr}
-{ "no." }
-
-FUNCTION {bbl.in}
-{ "in" }
-
-FUNCTION {bbl.pages}
-{ "" }
-
-FUNCTION {bbl.page}
-{ "" }
-
-FUNCTION {bbl.chapter}
-{ "chap." }
-
-FUNCTION {bbl.techrep}
-{ "Tech. Rep." }
-
-FUNCTION {bbl.mthesis}
-{ "MA thesis" }
-
-FUNCTION {bbl.phdthesis}
-{ "dissertation" }
-
-FUNCTION {bbl.first}
-{ "1st" }
-
-FUNCTION {bbl.second}
-{ "2nd" }
-
-FUNCTION {bbl.third}
-{ "3rd" }
-
-FUNCTION {bbl.fourth}
-{ "4th" }
-
-FUNCTION {bbl.fifth}
-{ "5th" }
-
-FUNCTION {bbl.st}
-{ "st" }
-
-FUNCTION {bbl.nd}
-{ "nd" }
-
-FUNCTION {bbl.rd}
-{ "rd" }
-
-FUNCTION {bbl.th}
-{ "th" }
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"Jun."}
-
-MACRO {jul} {"Jul."}
-
-MACRO {aug} {"Aug."}
-
-MACRO {sep} {"Sep."}
-
-MACRO {oct} {"Oct."}
-
-MACRO {nov} {"Nov."}
-
-MACRO {dec} {"Dec."}
-
-FUNCTION {eng.ord}
-{ duplicate$ "1" swap$ *
-  #-2 #1 substring$ "1" =
-     { bbl.th * }
-     { duplicate$ #-1 #1 substring$
-       duplicate$ "1" =
-         { pop$ bbl.st * }
-         { duplicate$ "2" =
-             { pop$ bbl.nd * }
-             { "3" =
-                 { bbl.rd * }
-                 { bbl.th * }
-               if$
-             }
-           if$
-          }
-       if$
-     }
-   if$
-}
-
-FUNCTION {bibinfo.check}
-{ swap$
-  duplicate$ missing$
-    {
-      pop$ pop$
-      ""
-    }
-    { duplicate$ empty$
-        {
-          swap$ pop$
-        }
-        { swap$
-          pop$
-        }
-      if$
-    }
-  if$
-}
-FUNCTION {bibinfo.warn}
-{ swap$
-  duplicate$ missing$
-    {
-      swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
-      ""
-    }
-    { duplicate$ empty$
-        {
-          swap$ "empty " swap$ * " in " * cite$ * warning$
-        }
-        { swap$
-          pop$
-        }
-      if$
-    }
-  if$
-}
-FUNCTION {format.url}
-{ url empty$
-    { "" }
-    { "\urlprefix\url{" url * "}" * }
-  if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-
-STRINGS  { bibinfo}
-
-FUNCTION {format.names}
-{ 'bibinfo :=
-  duplicate$ empty$ 'skip$ {
-  's :=
-  "" 't :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      duplicate$ #1 >
-        { "{ff~}{vv~}{ll}{, jj}" }
-        { "{vv~}{ll}{, ff}{, jj}" }
-      if$
-      format.name$
-      bibinfo bibinfo.check
-      't :=
-      nameptr #1 >
-        {
-          namesleft #1 >
-            { ", " * t * }
-            {
-              s nameptr "{ll}" format.name$ duplicate$ "others" =
-                { 't := }
-                { pop$ }
-              if$
-              t "others" =
-                {
-                  " " * bbl.etal *
-                }
-                {
-                  bbl.and
-                  space.word * t *
-                }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-  } if$
-}
-FUNCTION {format.names.ed}
-{
-  'bibinfo :=
-  duplicate$ empty$ 'skip$ {
-  's :=
-  "" 't :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{ff~}{vv~}{ll}{, jj}"
-      format.name$
-      bibinfo bibinfo.check
-      't :=
-      nameptr #1 >
-        {
-          namesleft #1 >
-            { ", " * t * }
-            {
-              s nameptr "{ll}" format.name$ duplicate$ "others" =
-                { 't := }
-                { pop$ }
-              if$
-              t "others" =
-                {
-
-                  " " * bbl.etal *
-                }
-                {
-                  bbl.and
-                  space.word * t *
-                }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-  } if$
-}
-FUNCTION {format.key}
-{ empty$
-    { key field.or.null }
-    { "" }
-  if$
-}
-
-FUNCTION {format.authors}
-{ author "author" format.names
-}
-FUNCTION {get.bbl.editor}
-{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
-
-FUNCTION {format.editors}
-{ editor "editor" format.names duplicate$ empty$ 'skip$
-    {
-      " " *
-      get.bbl.editor
-   "(" swap$ * ")" *
-      *
-    }
-  if$
-}
-FUNCTION {format.doi}
-{ doi "doi" bibinfo.check
-  duplicate$ empty$ 'skip$
-    {
-      new.block
-      "\doi{" swap$ * "}" *
-    }
-  if$
-}
-FUNCTION {format.note}
-{
- note empty$
-    { "" }
-    { note #1 #1 substring$
-      duplicate$ "{" =
-        'skip$
-        { output.state mid.sentence =
-          { "l" }
-          { "u" }
-        if$
-        change.case$
-        }
-      if$
-      note #2 global.max$ substring$ * "note" bibinfo.check
-    }
-  if$
-}
-
-FUNCTION {format.title}
-{ title
-  duplicate$ empty$ 'skip$
-    { "t" change.case$ }
-  if$
-  "title" bibinfo.check
-}
-FUNCTION {format.full.names}
-{'s :=
- "" 't :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}" format.name$
-      't :=
-      nameptr #1 >
-        {
-          namesleft #1 >
-            { ", " * t * }
-            {
-              s nameptr "{ll}" format.name$ duplicate$ "others" =
-                { 't := }
-                { pop$ }
-              if$
-              t "others" =
-                {
-                  " " * bbl.etal *
-                }
-                {
-                  bbl.and
-                  space.word * t *
-                }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {author.editor.key.full}
-{ author empty$
-    { editor empty$
-        { key empty$
-            { cite$ #1 #3 substring$ }
-            'key
-          if$
-        }
-        { editor format.full.names }
-      if$
-    }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {author.key.full}
-{ author empty$
-    { key empty$
-         { cite$ #1 #3 substring$ }
-          'key
-      if$
-    }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {editor.key.full}
-{ editor empty$
-    { key empty$
-         { cite$ #1 #3 substring$ }
-          'key
-      if$
-    }
-    { editor format.full.names }
-  if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.key.full
-    { type$ "proceedings" =
-        'editor.key.full
-        'author.key.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 {word.in}
-{ bbl.in capitalize
-  " " * }
-
-FUNCTION {format.date}
-{ year "year" bibinfo.check duplicate$ empty$
-    {
-      "empty year in " cite$ * "; set to ????" * warning$
-       pop$ "????"
-    }
-    'skip$
-  if$
-  extra.label *
-  before.all 'output.state :=
-  after.sentence 'output.state :=
-}
-FUNCTION {format.btitle}
-{ title "title" bibinfo.check
-  duplicate$ empty$ 'skip$
-    {
-      "t" change.case$
-      emphasize
-    }
-  if$
-}
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-FUNCTION {format.bvolume}
-{ volume empty$
-    { "" }
-    { add.comma bbl.volume volume tie.or.space.prefix
-      "volume" bibinfo.check * *
-    }
-  if$
-}
-FUNCTION {format.number.series}
-    { number empty$
-        { series field.or.null }
-        { series empty$
-            { number "number" bibinfo.check }
-            { add.blank "(" *
-              series "series" bibinfo.check *
-              number tie.or.space.prefix "number" bibinfo.check * 
-              ")" *
-            }
-          if$
-        }
-      if$
-    }
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
-
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-FUNCTION {convert.edition}
-{ extract.num "l" change.case$ 's :=
-  s "first" = s "1" = or
-    { bbl.first 't := }
-    { s "second" = s "2" = or
-        { bbl.second 't := }
-        { s "third" = s "3" = or
-            { bbl.third 't := }
-            { s "fourth" = s "4" = or
-                { bbl.fourth 't := }
-                { s "fifth" = s "5" = or
-                    { bbl.fifth 't := }
-                    { s #1 #1 substring$ is.num
-                        { s eng.ord 't := }
-                        { edition 't := }
-                      if$
-                    }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-  t
-}
-
-FUNCTION {format.edition}
-{ edition duplicate$ empty$ 'skip$
-    {
-      convert.edition
-      output.state mid.sentence =
-        { "l" }
-        { "t" }
-      if$ change.case$
-      "edition" bibinfo.check
-      " " * bbl.edition *
-    }
-  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 duplicate$ empty$ 'skip$
-    { duplicate$ multi.page.check
-        {
-          n.dashify
-        }
-        {
-        }
-      if$
-      "pages" bibinfo.check
-    }
-  if$
-}
-FUNCTION {format.journal.pages}
-{ pages duplicate$ empty$ 'pop$
-    { swap$ duplicate$ empty$
-        { pop$ pop$ format.pages }
-        {
-          ". " *
-          swap$
-          n.dashify
-          "pages" bibinfo.check
-          *
-        }
-      if$
-    }
-  if$
-}
-FUNCTION {format.journal.eid}
-{ eid "eid" bibinfo.check
-  duplicate$ empty$ 'pop$
-    { swap$ duplicate$ empty$ 'skip$
-      {
-          ". " *
-      }
-      if$
-      swap$ *
-    }
-  if$
-}
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
-  duplicate$ empty$ 'skip$
-    {
-      "volume" bibinfo.check
-    }
-  if$
-  number "number" bibinfo.check duplicate$ empty$ 'skip$
-    {
-      swap$ duplicate$ empty$
-        { "there's a number but no volume in " cite$ * warning$ }
-        'skip$
-      if$
-      swap$
-      "(" swap$ * ")" *
-    }
-  if$ *
-  eid empty$
-    { format.journal.pages }
-    { format.journal.eid }
-  if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
-    'format.pages
-    { type empty$
-        { bbl.chapter }
-        { type "l" change.case$
-          "type" bibinfo.check
-        }
-      if$
-      chapter tie.or.space.prefix
-      "chapter" bibinfo.check
-      * *
-      pages empty$
-        'skip$
-        { ", " * format.pages * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.booktitle}
-{
-  booktitle "booktitle" bibinfo.check
-  "t" change.case$
-  emphasize
-}
-FUNCTION {format.in.ed.booktitle}
-{ format.booktitle duplicate$ empty$ 'skip$
-    {
-      editor "editor" format.names.ed duplicate$ empty$ 'pop$
-        {
-          " " *
-          get.bbl.editor
-          "(" swap$ * "), " *
-          * swap$
-          * }
-      if$
-      word.in swap$ *
-    }
-  if$
-}
-FUNCTION {format.thesis.type}
-{ type duplicate$ empty$
-    'pop$
-    { swap$ pop$
-      "t" change.case$ "type" bibinfo.check
-    }
-  if$
-}
-FUNCTION {format.tr.number}
-{ number "number" bibinfo.check
-  type duplicate$ empty$
-    { pop$ bbl.techrep }
-    'skip$
-  if$
-  "type" bibinfo.check
-  swap$ duplicate$ empty$
-    { pop$ "t" change.case$ }
-    { tie.or.space.prefix * * }
-  if$
-}
-FUNCTION {format.article.crossref}
-{
-  word.in
-  " \cite{" * crossref * "}" *
-}
-FUNCTION {format.book.crossref}
-{ volume duplicate$ empty$
-    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
-      pop$ word.in
-    }
-    { bbl.volume
-      capitalize
-      swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
-    }
-  if$
-  " \cite{" * crossref * "}" *
-}
-FUNCTION {format.incoll.inproc.crossref}
-{
-  word.in
-  " \cite{" * crossref * "}" *
-}
-FUNCTION {format.org.or.pub}
-{ 't :=
-  ""
-  address empty$ t empty$ and
-    'skip$
-    {
-      address "address" bibinfo.check *
-      t empty$
-        'skip$
-        { address empty$
-            'skip$
-            { ": " * }
-          if$
-          t *
-        }
-      if$
-    }
-  if$
-}
-FUNCTION {format.publisher.address}
-{ publisher "publisher" bibinfo.warn format.org.or.pub
-}
-
-FUNCTION {format.organization.address}
-{ organization "organization" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {article}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    {
-      journal
-      "journal" bibinfo.check
-      emphasize
-      "journal" output.check
-      add.blank
-      format.vol.num.pages output
-    }
-    { format.article.crossref output.nonnull
-      format.pages output
-    }
-  if$
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.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$
-  format.date "year" output.check
-  date.block
-  format.btitle "title" output.check
-  crossref missing$
-    { format.bvolume output
-      format.number.series output
-      new.block
-      new.sentence
-      format.publisher.address output
-    }
-    {
-      new.block
-      format.book.crossref output.nonnull
-    }
-  if$
-  format.edition output
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-FUNCTION {booklet}
-{ output.bibitem
-  format.authors output
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title "title" output.check
-  new.block
-  howpublished "howpublished" bibinfo.check output
-  address "address" bibinfo.check output
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.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$
-  format.date "year" output.check
-  date.block
-  format.btitle "title" output.check
-  crossref missing$
-    {
-      format.bvolume output
-      format.chapter.pages "chapter and pages" output.check
-      new.block
-      new.sentence
-      format.number.series output
-      format.publisher.address output
-    }
-    {
-      format.chapter.pages "chapter and pages" output.check
-      new.block
-      format.book.crossref output.nonnull
-    }
-  if$
-  format.edition output
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.bvolume output
-      format.number.series output
-      add.comma
-      format.chapter.pages output
-      new.sentence
-      format.publisher.address output
-      format.edition output
-    }
-    { format.incoll.inproc.crossref output.nonnull
-      format.chapter.pages output
-    }
-  if$
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-FUNCTION {inproceedings}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.bvolume output
-      format.number.series output
-      add.comma
-      format.pages output
-      new.sentence
-      publisher empty$
-        { format.organization.address output }
-        { organization "organization" bibinfo.check output
-          format.publisher.address output
-        }
-      if$
-    }
-    { format.incoll.inproc.crossref output.nonnull
-      format.pages output
-    }
-  if$
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-FUNCTION {conference} { inproceedings }
-FUNCTION {manual}
-{ output.bibitem
-  format.authors output
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.btitle "title" output.check
-  organization address new.block.checkb
-  organization "organization" bibinfo.check output
-  address "address" bibinfo.check output
-  format.edition output
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.btitle
-  "title" output.check
-  new.block
-  address "address" bibinfo.check output
-  school "school" bibinfo.warn output
-  bbl.mthesis format.thesis.type output.nonnull
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
-  format.authors output
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title output
-  new.block
-  howpublished "howpublished" bibinfo.check output
-  format.doi output
-  new.block
-  format.note output
-  new.block
-  format.url output
-  fin.entry
-}
-FUNCTION {phdthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.btitle
-  "title" output.check
-  new.block
-  address "address" bibinfo.check output
-  add.colon
-  school "school" bibinfo.warn output
-  bbl.phdthesis format.thesis.type output.nonnull
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
-  format.editors output
-  editor format.key output
-  format.date "year" output.check
-  date.block
-  format.btitle "title" output.check
-  format.bvolume output
-  new.sentence
-  format.number.series output
-  publisher empty$
-    { format.organization.address output }
-    { organization "organization" bibinfo.check output
-      format.publisher.address output
-    }
-  if$
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {techreport}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title
-  "title" output.check
-  new.block
-  format.tr.number output.nonnull
-  institution "institution" bibinfo.warn output
-  address "address" bibinfo.check output
-  format.doi output
-  new.block
-  format.url output
-  new.block
-  format.note output
-  fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
-  format.authors "author" output.check
-  author format.key output
-  format.date "year" output.check
-  date.block
-  format.title "title" output.check
-  format.doi output
-  new.block
-  format.note "note" output.check
-  new.block
-  format.url output
-  fin.entry
-}
-
-FUNCTION {default.type} { misc }
-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 :=
-  "" 't :=
-  s #1 "{vv~}{ll}" format.name$
-  s num.names$ duplicate$
-  #2 >
-    { pop$
-      " " * bbl.etal *
-    }
-    { #2 <
-        'skip$
-        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-            {
-              " " * bbl.etal *
-            }
-            { bbl.and space.word * 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 {editor.key.label}
-{ editor empty$
-    { key empty$
-        { cite$ #1 #3 substring$ }
-        'key
-      if$
-    }
-    { editor format.lab.names }
-  if$
-}
-
-FUNCTION {calc.short.authors}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.key.label
-    { type$ "proceedings" =
-        'editor.key.label
-        'author.key.label
-      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
-      "{ll{ }}{  ff{ }}{  jj{ }}"
-      format.name$ 't :=
-      nameptr #1 >
-        {
-          "   "  *
-          namesleft #1 = t "others" = and
-            { "zzzzz" * }
-            { 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 {editor.sort}
-{ editor empty$
-    { key empty$
-        { "to sort, need editor or key in " cite$ * warning$
-          ""
-        }
-        { key sortify }
-      if$
-    }
-    { editor sort.format.names }
-  if$
-}
-FUNCTION {presort}
-{ calc.label
-  label sortify
-  "    "
-  *
-  type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.sort
-    { type$ "proceedings" =
-        'editor.sort
-        'author.sort
-      if$
-    }
-  if$
-  #1 entry.max$ substring$
-  'sort.label :=
-  sort.label
-  *
-  "    "
-  *
-  title field.or.null
-  sort.format.title
-  *
-  #1 entry.max$ substring$
-  'sort.key$ :=
-}
-
-ITERATE {presort}
-SORT
-STRINGS { last.label next.extra }
-INTEGERS { last.extra.num number.label }
-FUNCTION {initialize.extra.label.stuff}
-{ #0 int.to.chr$ 'last.label :=
-  "" 'next.extra :=
-  #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$
-  { year field.or.null #-1 #1 substring$ chr.to.int$ #65 <
-     { "{\natexlab{" swap$ * "}}" * }
-     { "{(\natexlab{" swap$ * "})}" * }
-   if$ }
-  if$
-  'extra.label :=
-  label extra.label * 'label :=
-}
-EXECUTE {initialize.extra.label.stuff}
-ITERATE {forward.pass}
-REVERSE {reverse.pass}
-FUNCTION {bib.sort.order}
-{ sort.label
-  "    "
-  *
-  year field.or.null sortify
-  *
-  "    "
-  *
-  title field.or.null
-  sort.format.title
-  *
-  #1 entry.max$ substring$
-  '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]{#1}"
-  write$ newline$
-  "\providecommand{\urlprefix}{}"
-  write$ newline$
-  "\expandafter\ifx\csname urlstyle\endcsname\relax"
-  write$ newline$
-  "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
-  write$ newline$
-  "  \providecommand{\doi}{doi:\discretionary{}{}{}\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}

Modified: trunk/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls	2021-05-09 15:04:51 UTC (rev 59145)
+++ trunk/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls	2021-05-09 20:49:49 UTC (rev 59146)
@@ -1,6 +1,6 @@
 % MSU Thesis Class
 %
-% Copyright 2009,2010,2011,2012,2013,2014,2015,2016,2017 by Alan Munn <amunn at msu.edu>
+% Copyright 2009,2010,2011,2012,2013,2014,2015,2016,2017,2020 by Alan Munn <amunn at msu.edu>
 %
 % This is a class file for producing dissertations and theses according to the 
 % Michigan State University Graduate School Guidelines
@@ -136,12 +136,26 @@
 %                         should be the same as \abstractname. For the moment it is.  Updated documentation to 
 %						  include section about microtype and contents lists.
 %						  Changed \droptitle (again)
-%						  Fixed capitalization problem with Appendices     
-% Use at your own risk! 
+%						  Fixed capitalization problem with Appendices
+%
+% Version 2.9 2020/12/12 Removed super/subscript/footnote restrictions
+%						     Added document fontsize options.
+%							 Changed use of \baselineskip to \onelineskip so that idiocy of the 
+%							 thesis office can be accommodated. If complaints about the spacing 
+%							 of “double space” arise, redefine \onelineskip to be the fontsize rather
+%							 than the leading.
+%
+% Version 2.9a 2020/12/14 Fixed abstract title spacing after complaints about “double space”.
+% Version 2.9b 2021/02/26 Fixed epigraph fontsize
+% Version 2.9c 2021/05/07 Made \tableofcontents behave like \tableofcontents*
+%						  Added warning when public abstract is used.
+%						  Minor changes to the documentation
+%						  Removed unified.bst from distribution; replaced with apalike in the test file.
+%
 % Report bugs/problems/questions to <amunn at msu.edu>
 %
-\def\msu at version{2.8}
-\def\msu at date{2017/12/13}
+\def\msu at version{2.9c}
+\def\msu at date{2021/05/07}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{msu-thesis}[\msu at date\space  Michigan State University Thesis Class version \msu at version]
 \newif\ifmsu at dissertation\msu at dissertationtrue % added v2.7 boolean for \msu at thesistype
@@ -174,12 +188,15 @@
 \DeclareOption{boldtoc}{\msu at stupidtoctrue\msu at plaintocfalse\msu at mixedtocfalse}
 \DeclareOption{plaintoc}{\msu at plaintoctrue\msu at stupidtocfalse\msu at mixedtocfalse}
 \DeclareOption{mixedtoc}{\msu at mixedtoctrue\msu at stupidtocfalse\msu at plaintocfalse}
-\ExecuteOptions{PhD}
+\DeclareOption{12pt}{\def\msu at sizeoption{12pt}} % added v 2.9
+\DeclareOption{11pt}{\def\msu at sizeoption{11pt}}
+\DeclareOption{10pt}{\def\msu at sizeoption{10pt}}
+\ExecuteOptions{PhD,12pt}
 \DeclareOption*{ 
 \PassOptionsToClass{\CurrentOption}{memoir} 
 }
 \ProcessOptions\relax
-\LoadClass[12pt,oneside,letterpaper]{memoir}[2008/05/27]
+\LoadClass[\msu at sizeoption,oneside,letterpaper]{memoir}[2008/05/27]
 % Check for older versions of the latex kernel
 \ifx\e at alloc\@undefined
    \RequirePackage{etex}
@@ -231,15 +248,15 @@
 % breaks within the title.  This has now been documented in the user docs.
 \newcommand*\msu at thesistype{\ifmsu at dissertation{DISSERTATION}\else{THESIS}\fi}
 \pretitle{\begin{center}\MakeUppercase}
-\posttitle{\\[\baselineskip]\end{center}}
-\preauthor{\begin{center}By\\[\baselineskip]}
+\posttitle{\\[\onelineskip]\end{center}}
+\preauthor{\begin{center}By\\[\onelineskip]}
 \postauthor{\end{center}}
-\predate{\vfill\begin{center}\msu at titleintro\msu at thesistype\\[\baselineskip]Submitted to\\Michigan State University\\in partial fulfillment of the requirements\\for the degree of\\[\baselineskip]\msu at fieldofstudy~\msu at fieldseparator~\msu at degree\\[\baselineskip]}
+\predate{\vfill\begin{center}\msu at titleintro\msu at thesistype\\[\onelineskip]Submitted to\\Michigan State University\\in partial fulfillment of the requirements\\for the degree of\\[\onelineskip]\msu at fieldofstudy~\msu at fieldseparator~\msu at degree\\[\onelineskip]}
 
 % set up the chapter titles
 \chapterstyle{thatcher}
-\setlength{\beforechapskip}{0pt}
-\setlength{\afterchapskip}{2\baselineskip} % changed 2017/05/03 because of thesis office complaints
+\setlength{\beforechapskip}{-1sp}% changed 2020/12/17 Need negative value to suppress indentation
+\setlength{\afterchapskip}{2\onelineskip} % changed 2017/05/03 because of thesis office complaints
 \renewcommand*{\chapnamefont}{\centering\bfseries}
 \renewcommand*{\chapnumfont}{\bfseries}
 \renewcommand*{\chaptitlefont}{\SingleSpacing\bfseries}
@@ -255,7 +272,7 @@
 
 
 % set up the section styles
-\setbeforesecskip{0pt}
+\setbeforesecskip{-1sp}
 \setsecheadstyle{\normalfont\SingleSpacing\large\bfseries}
 \setsubsecheadstyle{\normalfont\SingleSpacing\bfseries}
 \setsubsubsecheadstyle{\normalfont\SingleSpacing\bfseries}
@@ -359,27 +376,36 @@
 \renewcommand\mem at tableofcontents[1]{%
    \oldmem at tableofcontents{#1}%
    \setlength{\cftbeforechapterskip}{0.0em \@plus\p@}
-	\setlength{\cftparskip}{\baselineskip}
+	\setlength{\cftparskip}{\onelineskip}
 	\pagestyle{plain}
 }
+% This allows users to use either \tableofcontents or \tableofcontents* with the same effect
+% Code from https://tex.stackexchange.com/a/165968/2693
+% Allows users to not read the docs
+\renewcommand{\tableofcontents}{%
+  \@ifstar{\mem at tableofcontents{01}}
+          {\mem at tableofcontents{01}}%
+}
 
 % set up footnotes
-\footmarkstyle{\normalsize\textsuperscript{#1}} % reset size so that mark is right size
-\setlength{\footmarkwidth}{1.8em} 
-\setlength{\footmarksep}{-1.8em} 
-\setlength{\footparindent}{1em} 
-\renewcommand{\foottextfont}{\normalsize} % footnotes will be 12pt
+% Most of this removed v2.9
+%\footmarkstyle{\normalsize\textsuperscript{#1}} % reset size so that mark is right size
+%\setlength{\footmarkwidth}{1.8em} 
+%\setlength{\footmarksep}{-1.8em} 
+%\setlength{\footparindent}{1em} 
+%\renewcommand{\foottextfont}{\normalsize} % footnotes will be 12pt
 \feetbelowfloat % footnotes will appear below bottom floats
 
 % set up abstract and public abstract
 \renewenvironment{abstract}{%
+   \setlength{\afterchapskip}{\onelineskip} % changed 2020/12/14 again removed manual spacing from 2016
    \chapter*{\abstractname}
    \thispagestyle{empty}
-   \plainbreak{-.5} % changed 2016/06/08 after complaints
+%   \plainbreak{-.5} % changed 2016/06/08 after complaints
     \begin{center}
     	\MakeUppercase{\thetitle}\plainbreak{1}By\plainbreak{1}\theauthor
  	\end{center}
-	\plainbreak{-.5} % changed 2016/06/08 after complaints
+%	\plainbreak{-.5} % changed 2016/06/08 after complaints
     \DoubleSpacing
    }{\par}
 %
@@ -392,14 +418,16 @@
 \newcounter{msu at pubabspages}
 \newcommand{\publicabstractname}{\abstractname}
 \newenvironment{publicabstract}{%
+   \ClassWarning{msu-thesis}{You have provided a public abstract. Please make sure you ALSO have a regular abstract!}
    \setcounter{msu at pubabspages}{\value{page}}
+   \setlength{\afterchapskip}{\onelineskip} % changed 2020/12/14 again removed manual spacing from 2016
    \chapter*{\publicabstractname}
    \thispagestyle{empty}
-   \plainbreak{-.5} % changed 2016/06/08 after complaints
+%   \plainbreak{-.5} % changed 2016/06/08 after complaints
     \begin{center}
     	\MakeUppercase{\thetitle}\plainbreak{1}By\plainbreak{1}\theauthor
  	\end{center}
-	\plainbreak{-.5} % changed 2016/06/08 after complaints
+%	\plainbreak{-.5} % changed 2016/06/08 after complaints
     \DoubleSpacing
    }{\clearpage\setcounter{page}{\value{msu at pubabspages}}}
 
@@ -531,12 +559,17 @@
 \@ifpackageloaded{apacite}{\@tocbibfalse}{} % added 6/22/17
 %\topskip=0pt % setting this because the Grad School doesn’t know how to measure -changed back 6/15/17
 \checkandfixthelayout
+
+% Set epigraph fonts to \normalsize
+\renewcommand{\epigraphsize}{\normalsize} % added 2/26/21 
+
 %
 % set up subscript sizes so that 10 pt is the smallest
 % (MSU Requirement)
-\DeclareMathSizes{12}{12}{10}{10}
-\DeclareMathSizes{10.95}{10.95}{10}{10}
-\DeclareMathSizes{10}{10}{10}{10}
+% Removed v2.9
+%\DeclareMathSizes{12}{12}{10}{10}
+%\DeclareMathSizes{10.95}{10.95}{10}{10}
+%\DeclareMathSizes{10}{10}{10}{10}
 %
 % check for hyperref
 % The hyperref code allows hyperref to be used. It is not guaranteed to 
@@ -555,4 +588,4 @@
 % if no hyperref
 {\relax}
 }
-\endinput
\ No newline at end of file
+\endinput



More information about the tex-live-commits mailing list.