From 26f04f139d8bbc76c3eba01309f25d6bfc7c8ff2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 9 May 2021 20:49:49 +0000 Subject: msu-thesis (9may21) git-svn-id: svn://tug.org/texlive/trunk@59146 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/msu-thesis/README | 46 - Master/texmf-dist/doc/latex/msu-thesis/README.md | 56 + .../texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf | Bin 226815 -> 222407 bytes .../texmf-dist/doc/latex/msu-thesis/msu-thesis.tex | 24 +- .../msu-thesis/samples/MSU-thesis-template.tex | 6 +- .../msu-thesis/samples/MSU-thesis-testfile.pdf | Bin 135882 -> 199924 bytes .../msu-thesis/samples/MSU-thesis-testfile.tex | 6 +- .../doc/latex/msu-thesis/samples/unified.bst | 1550 -------------------- .../texmf-dist/tex/latex/msu-thesis/msu-thesis.cls | 87 +- 9 files changed, 137 insertions(+), 1638 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/msu-thesis/README create mode 100644 Master/texmf-dist/doc/latex/msu-thesis/README.md delete mode 100644 Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst diff --git a/Master/texmf-dist/doc/latex/msu-thesis/README b/Master/texmf-dist/doc/latex/msu-thesis/README deleted file mode 100644 index 33897dc31e6..00000000000 --- a/Master/texmf-dist/doc/latex/msu-thesis/README +++ /dev/null @@ -1,46 +0,0 @@ -MSU Thesis Class Version 2.8 2017/12/13 - -Copyright 2011,2012,2013,2014,2015,2016, 2017 by Alan Munn - -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 -/tex/latex/msu-thesis - -Put msu-thesis.tex, msu-thesis.pdf and the samples folder into -/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 - diff --git a/Master/texmf-dist/doc/latex/msu-thesis/README.md b/Master/texmf-dist/doc/latex/msu-thesis/README.md new file mode 100644 index 00000000000..725896b8774 --- /dev/null +++ b/Master/texmf-dist/doc/latex/msu-thesis/README.md @@ -0,0 +1,56 @@ +# MSU Thesis Class Version 2.9c 2021/05/07 + +Copyright 2011-2021 by Alan Munn + +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 + +`/tex/latex/msu-thesis` + +Put `msu-thesis.tex`, `msu-thesis.pdf` and the `samples` folder into + +`/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@msu.edu](mailto:amunn@msu.edu) or use the [GitHub repository bug tracker](https://github.com/amunn/msu-thesis/issues). + diff --git a/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf b/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf index b3fc5781210..ade9bd139cd 100644 Binary files a/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf and b/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.pdf differ diff --git a/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex b/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex index e995df49daf..0b0b57ddf5a 100644 --- a/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex +++ b/Master/texmf-dist/doc/latex/msu-thesis/msu-thesis.tex @@ -2,15 +2,14 @@ \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@msu.edu}{amunn@msu.edu}}} \date{Version \msuversion\\\msudate} \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 @@ In addition to any options passed to the \pkg{memoir} class (e.g. |oldfontcomman 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 @@ before the contents lists and |\microtypesetup{protrusion=true}| afterwards. Sc \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 @@ Despite there being no explicit formatting requirements for Chapter headings (ot \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@msu.edu}{amunn@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@msu.edu}{amunn@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. diff --git a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex index c0ef1706b73..926c2a50934 100644 --- a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex +++ b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-template.tex @@ -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. % diff --git a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf index 994c15adc0e..7e4e651ae88 100644 Binary files a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf and b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.pdf differ diff --git a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex index fe74407b75d..b6c8f12d8dd 100644 --- a/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex +++ b/Master/texmf-dist/doc/latex/msu-thesis/samples/MSU-thesis-testfile.tex @@ -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} diff --git a/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst b/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst deleted file mode 100644 index 80d9add02d7..00000000000 --- a/Master/texmf-dist/doc/latex/msu-thesis/samples/unified.bst +++ /dev/null @@ -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} diff --git a/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls b/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls index d49a2ced1e8..f9c1c273f72 100644 --- a/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls +++ b/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls @@ -1,6 +1,6 @@ % MSU Thesis Class % -% Copyright 2009,2010,2011,2012,2013,2014,2015,2016,2017 by Alan Munn +% Copyright 2009,2010,2011,2012,2013,2014,2015,2016,2017,2020 by Alan Munn % % 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 % -\def\msu@version{2.8} -\def\msu@date{2017/12/13} +\def\msu@version{2.9c} +\def\msu@date{2021/05/07} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{msu-thesis}[\msu@date\space Michigan State University Thesis Class version \msu@version] \newif\ifmsu@dissertation\msu@dissertationtrue % added v2.7 boolean for \msu@thesistype @@ -174,12 +188,15 @@ \DeclareOption{boldtoc}{\msu@stupidtoctrue\msu@plaintocfalse\msu@mixedtocfalse} \DeclareOption{plaintoc}{\msu@plaintoctrue\msu@stupidtocfalse\msu@mixedtocfalse} \DeclareOption{mixedtoc}{\msu@mixedtoctrue\msu@stupidtocfalse\msu@plaintocfalse} -\ExecuteOptions{PhD} +\DeclareOption{12pt}{\def\msu@sizeoption{12pt}} % added v 2.9 +\DeclareOption{11pt}{\def\msu@sizeoption{11pt}} +\DeclareOption{10pt}{\def\msu@sizeoption{10pt}} +\ExecuteOptions{PhD,12pt} \DeclareOption*{ \PassOptionsToClass{\CurrentOption}{memoir} } \ProcessOptions\relax -\LoadClass[12pt,oneside,letterpaper]{memoir}[2008/05/27] +\LoadClass[\msu@sizeoption,oneside,letterpaper]{memoir}[2008/05/27] % Check for older versions of the latex kernel \ifx\e@alloc\@undefined \RequirePackage{etex} @@ -231,15 +248,15 @@ % breaks within the title. This has now been documented in the user docs. \newcommand*\msu@thesistype{\ifmsu@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@titleintro\msu@thesistype\\[\baselineskip]Submitted to\\Michigan State University\\in partial fulfillment of the requirements\\for the degree of\\[\baselineskip]\msu@fieldofstudy~\msu@fieldseparator~\msu@degree\\[\baselineskip]} +\predate{\vfill\begin{center}\msu@titleintro\msu@thesistype\\[\onelineskip]Submitted to\\Michigan State University\\in partial fulfillment of the requirements\\for the degree of\\[\onelineskip]\msu@fieldofstudy~\msu@fieldseparator~\msu@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@tableofcontents[1]{% \oldmem@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@tableofcontents{01}} + {\mem@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@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@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@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 -- cgit v1.2.3