summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/revtex/ltxfront.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-01 03:03:23 +0000
committerNorbert Preining <norbert@preining.info>2023-06-01 03:03:23 +0000
commita378d2379e220fa1022ae052bcd1aed6bf0d2c41 (patch)
treeea7474d9b63bd7343446152da818a0f51b4b4f26 /macros/latex/contrib/revtex/ltxfront.dtx
parent63f5147c70933ab652aa5c700beabb6685d1139a (diff)
CTAN sync 202306010303
Diffstat (limited to 'macros/latex/contrib/revtex/ltxfront.dtx')
-rw-r--r--macros/latex/contrib/revtex/ltxfront.dtx3763
1 files changed, 0 insertions, 3763 deletions
diff --git a/macros/latex/contrib/revtex/ltxfront.dtx b/macros/latex/contrib/revtex/ltxfront.dtx
deleted file mode 100644
index 86dc0f3f4f..0000000000
--- a/macros/latex/contrib/revtex/ltxfront.dtx
+++ /dev/null
@@ -1,3763 +0,0 @@
-% \iffalse meta-comment balanced on line 108
-% ltxfront.dtx: package to change page grid, MVL.
-% Copyright (c) 2009 Arthur Ogawa
-%
-% Disclaimer
-% This file is distributed WITHOUT ANY WARRANTY;
-% without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-% License
-% You may distribute this file under the conditions of the
-% LaTeX Project Public License 1.3c or later
-% (http://www.latex-project.org/lppl.txt).
-% ReadMe
-% For the documentation and more detailed instructions for
-% installation, typeset this document with \LaTeX.
-% Maintenance Status
-% This work has the LPPL maintenance status "maintained";
-% Current Maintainer of this work is Arthur Ogawa.
-%
-% This work consists of the main source file ltxfront.dtx
-% and the derived files
-% ltxfront.sty, ltxfront.pdf
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex ltxfront.dtx
-%
-% Documentation:
-% latex ltxfront.dtx; ...
-%
-% Programm calls to get the documentation (example):
-% pdflatex ltxfront.dtx
-% makeindex -s gind.ist ltxfront.idx
-% makeindex -s gglo.ist -o ltxfront.gls ltxfront.glo
-% pdflatex ltxfront.dtx
-% makeindex -s gind.ist ltxfront.idx
-% pdflatex ltxfront.dtx
-%
-% Installation:
-% TDS:doc/latex/revtex/
-% TDS:source/latex/revtex/
-% TDS:tex/latex/revtex/
-%
-% Thanks, Heiko!
-% This method of letting a single .dtx file serve as both
-% documentation (via latex) and installer (via tex) follows
-% the example of Heiko Oberdiek. Thanks!
-%<*ignore>
-\begingroup
- \def\x{LaTeX2e}%
-\expandafter\endgroup
-\ifcase
- 0\expandafter\ifx\csname processbatchFile\endcsname\relax\else1\fi\ifx\fmtname\x\else 1\fi
- \relax
-\else
- \csname fi\endcsname
-%</ignore>
-%<*install>
-%% This file will generate documentation and runtime files
-%% from ltxfront.dtx when run through LaTeX or TeX.
-\input docstrip
-\preamble
-
-This is a generated file;
-altering it directly is inadvisable;
-instead, modify the original source file.
-See the URL in the file README-LTXFRONT.tex.
-
-License
- You may distribute this file under the conditions of the
- LaTeX Project Public License 1.3c or later
- (http://www.latex-project.org/lppl.txt).
-
- This file is distributed WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE.
-
-\endpreamble
-\askforoverwritefalse
-\keepsilent
- \generate{%
- %{ignore}
-% \usedir{tex/latex/revtex}%
- \file{ltxfront.sty}{%
- \from{ltxfront.dtx}{package,options,kernel}%
- }%
- }%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* ltxfront.sty}
-\Msg{* into a directory searched by TeX;}
-\Msg{* in a TDS-compliant installation:}
-\Msg{* texmf/tex/macros/latex/revtex/.}
-\Msg{*}
-\Msg{* To produce the documentation,
- run ltxfront.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{ltxfront.dtx}
-%
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "ltxfront.dtx",
-%%% version = "4.2e",
-%%% date = "2020/10/03",
-%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% commissioned by the American Physical Society.
-%%% ",
-%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa,
-%%% distributed under the terms of the
-%%% LaTeX Project Public License 1.3c, see
-%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
-%%% ",
-%%% address = "Arthur Ogawa,
-%%% USA",
-%%% telephone = "",
-%%% FAX = "",
-%%% email = "mailto colon arthur_ogawa at sbcglobal.net",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "latex, page grid, main vertical list",
-%%% supported = "yes",
-%%% abstract = "package to change page grid, MVL",
-%%% }
-%</package>
-% \fi
-%
-% \iffalse ltxdoc klootch
-% The following references the \file{README-LTXFRONT} file,
-% which contains basic information about this package.
-% The contents of this file are generated when
-% you typeset the programmer's documentation.
-% Search on "{filecontents*}{README-LTXFRONT.tex}" to locate it.
-% \fi\input{README-LTXFRONT}%
-%
-% \subsection{Bill of Materials}
-%
-% Following is a list of the files in this distribution arranged
-% according to provenance.
-%
-% \subsubsection{Primary Source}%
-% One single file generates all.
-%\begin{verbatim}ltxfront.dtx\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{latex ltxfront.dtx}}%
-% Typesetting the source file under \LaTeX\
-% generates the readme and the documentation.
-%\begin{verbatim}README-LTXFRONT\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex ltxfront.dtx}}%
-% Typesetting the installer generates
-% the package files.
-%\begin{verbatim}ltxfront.sty\end{verbatim}
-%
-% \subsubsection{Documentation}%
-% The following are the online documentation:
-% \begin{verbatim}ltxfront.pdf\end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}ltxfront.aux ltxfront.idx ltxfront.ind ltxfront.log ltxfront.toc\end{verbatim}
-%
-% \section{Code common to all modules}%
-%
-% We want to require only one place in this file
-% where the version number is stated,
-% and we also want to ensure that the version
-% number is embedded into every generated file.
-%
-% Now we declare that
-% these files can only be used with \LaTeXe.
-% An appropriate message is displayed if
-% a different \TeX{} format is used.
-% \begin{macrocode}
-%<*doc|package>
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
-%</doc|package>
-% \end{macrocode}
-% As desired, the following modules all
-% take common version information:
-% \begin{macrocode}
-%<kernel&!package&!doc>\typeout{%
-%<*package|doc>
-\ProvidesFile{%
-%</package|doc>
-%<*kernel|package|doc>
-ltxfront%
-%</kernel|package|doc>
-%<*doc>
-.dtx%
-%</doc>
-%<package>.sty%
-%<*package|doc>
-}%
-%</package|doc>
-% \end{macrocode}
-%
-% The following line contains, for once and for all,
-% the version and date information.
-% By various means, this information is reproduced
-% consistently in all generated files and in the
-% typeset documentation.
-% \begin{macrocode}
-%<*doc|package|kernel>
-%<version>
- [2020/10/03 4.2e frontmatter package (AO,DPC,MD)]% \fileversion
-%</doc|package|kernel>
-%<kernel&!package&!doc>}%
-% \end{macrocode}
-%
-%
-% \section{The doc module \texttt{doc}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{README-LTXFRONT} and sample document as needed.
-%
-% Because the only uncommented-out lines of code at the beginning of
-% this file constitute the \file{doc} module itself,
-% we can simply typeset the \file{.dtx} file directly,
-% and there is thus rarely any need to
-% generate the ``doc'' {\sc docstrip} module.
-% Module delimiters are nonetheless required so that
-% this code does not find its way into the other modules.
-%
-% The \enve{document} command concludes the typesetting run.
-%
-% \begin{macrocode}
-%<*doc>
-% \end{macrocode}
-%
-% \subsection{The Preamble}
-% The programmers documentation is formatted
-% with the \classname{ltxdoc} class with local customizations,
-% and with the usual code line indexing.
-% \begin{macrocode}
-\documentclass{ltxdoc}
-\RequirePackage{ltxdocext}%
-\let\url\undefined
-\RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}%
-%\expandafter\ifx\csname package@font\endcsname\@undefined\else
-% \expandafter\RequirePackage\expandafter{\csname package@font\endcsname}%
-%\fi
-\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist ltxfront
-\RecordChanges % makeindex -s gglo.ist -o ltxfront.gls ltxfront.glo
-% \end{macrocode}
-%
-% \subsubsection{Docstrip and info directives}
-% We use so many {\sc docstrip} modules that we set the
-% \texttt{StandardModuleDepth} counter to 1.
-% \begin{macrocode}
-\setcounter{StandardModuleDepth}{1}
-% \end{macrocode}
-% The following command retrieves the date and version information
-% from this file.
-% \begin{macrocode}
-\expandafter\GetFileInfo\expandafter{\jobname.dtx}%
-% \end{macrocode}
-%
-% \subsection{The ``Read Me'' File}
-% As promised above, here is the contents of the
-% ``Read Me'' file. That file serves a double purpose,
-% since it also constitutes the beginining of the
-% programmer's documentation. What better thing, after
-% all, to have appear at the beginning of the
-% typeset documentation?
-%
-% A good discussion of how to write a ReadMe file can be found in
-% Engst, Tonya, ``Writing a ReadMe File? Read This''
-% \emph{MacTech} October 1998, p. 58.
-%
-% Note the appearance of the
-% \cmd\StopEventually\ command, which marks the
-% dividing line between the user documentation
-% and the programmer documentation.
-%
-% The usual user will not be asked to
-% do a full build, not to speak
-% of the bootstrap.
-% Instructions for carrying these processes
-% begin the programmer's manual.
-%
-% \begin{macrocode}
-\begin{filecontents*}{README-LTXFRONT.tex}
-\title{%
- A \LaTeX\ Package for\\the frontmatter and title page%
- \thanks{%
- This file has version number \fileversion,
- last revised \filedate.%
- }%
- \thanks{%
- Version \fileversion\ \copyright\ 2019 American Physical Society
- }%
-}%
-
-\author{%
- Arthur Ogawa%
- \thanks{\texttt{mailto:arthur\_ogawa at sbcglobal.net}}%
-}%
-%\iffalse
-% For version number and date,
-% search on "\fileversion" in the .dtx file,
-% or see the end of the README-LTXFRONT file.
-%\fi
-\maketitle
-
-This file embodies the \classname{ltxfront} package,
-the implementation and its user documentation.
-
-The distribution point for this work is
-\url{https://journals.aps.org/revtex},
-which contains fully unpacked, prebuilt runtime files and documentation.
-
-The \classname{ltxfront} package was commissioned by the American Physical Society
-and is distributed under the terms of the \LaTeX\ Project Public License 1.3c,
-the same license under which all the portions of \LaTeX\ itself is distributed.
-Please see \url{http://ctan.tug.org/macros/latex/base/lppl.txt} for details.
-
-To use this document class, you must have a working
-\TeX\ installation equipped with \LaTeXe\
-and possibly pdftex and Adobe Acrobat Reader or equivalent.
-
-To install, retrieve the distribution,
-unpack it into a directory on the target computer,
-and move the file \file{ltxfront.sty}
-into a location in your filesystem where it will be found by \LaTeX.
-
-To use, read the user documentation \file{ltxfront.pdf}.
-
-\tableofcontents
-
-\section{Processing Instructions}
-
-The package file \file{ltxfront.sty}
-is generated from this file, \file{ltxfront.dtx},
-using the {\sc docstrip} facility of \LaTeX
-via |tex ltxfront.dtx|.
-The typeset documentation that you are now reading is generated from
-the same file by typesetting it with \LaTeX\ or pdftex
-via |latex ltxfront.dtx| or |pdflatex ltxfront.dtx|.
-
-\subsection{Build Instructions}
-
-You may bootstrap this suite of files solely from \file{ltxfront.dtx}.
-Prepare by installing \LaTeXe\ (and either tex or pdftex) on your computer,
-then carry out the following steps:
-\begin{enumerate}
-
-\item
-Within an otherwise empty directory,
-typeset \file{ltxfront.dtx} with \TeX\ or pdftex,
-thereby generating the package file \file{ltxfront.sty}.
-
-\item
-Next typeset \file{ltxfront.dtx} with \LaTeX\ or pdflatex;
-you will obtain the typeset documentation you are now reading,
-along with
-the sample document \file{ltxfront-test.tex}
-and the file \file{README-LTXFRONT}.
-
-Note: you will have to run \LaTeX, then
-\file{makeindex} \texttt{-s gind.ist ltxfront.idx}, then
-\file{makeindex} \texttt{-s gglo.ist -o ltxfront.gls ltxfront.glo}, then
-\LaTeX\ again in order to obtain a valid index and table of contents.
-\item
-Now typeset \file{ltxfront.dtx} with \TeX (not \LaTeX),
-thereby generating the package file \file{ltxfront.sty}.
-\item
-Install the following files into indicated locations within your
-TDS-compliant \texttt{texmf} tree (you may need root access):
-\begin{itemize}
-\item
-\file{$TEXMF/}\file{tex/}\file{latex/}\file{revtex/}\classname{ltxfront.sty}
-\item
-\file{$TEXMF/}\file{source/}\file{latex/}\file{revtex/}\classname{ltxfront.dtx}
-\item
-\file{$TEXMF/}\file{doc/}\file{latex/}\file{revtex/}\classname{ltxfront.pdf}
-\end{itemize}
-where \file{$TEXMF/} stands for \file{texmf-local/}, or some other \texttt{texmf} tree
-in your installation.
-\item
-Run \texttt{mktexlsr} on \file{$TEXMF/} (you may need root access).
-\item
-Build and installation are now complete;
-now put a \cmd\usepackage\texttt{\{ltxfront\}} in your document preamble!
-\end{enumerate}
-
-\subsection{Change Log}
-\changes{4.0b}{1999/06/20}{Change handling of \cs{@author} to prevent parsing problems. (Helps in error recovery when syntax errors exist)}
-\changes{4.0b}{1999/06/20}{Gathered all code for the abstract environment together and abstracted out the formatting details for journals to override.}
-\changes{4.0b}{1999/06/20}{Separate option now controls production}
-\changes{4.0b}{1999/06/20}{Set \cs{footnote} to \LaTeX\ standard version for this scope.}
-\changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-\changes{4.0d}{1998/01/31}{\cs{comma@space}}
-\changes{4.0d}{1998/01/31}{change name from \cs{tempaffiliation}}
-\changes{4.0d}{1998/01/31}{hookify}
-\changes{4.0d}{1998/01/31}{If empty \cs{abstractname} omit spacing}
-\changes{4.0d}{1998/01/31}{PACS boxed to width of abstract}
-\changes{4.0e}{2000/09/20}{Keywords on same footing as PACS}
-\changes{4.0e}{2000/09/20}{Warn if no production}
-\changes{4.0f}{2001/02/13}{Actually append \cs{AU@grp} to \cs{@AAClist}.}
-\changes{4.0g}{1998/06/10}{multiple preprint commands}
-\changes{4.0h}{1998/06/25}{Changes to support groups of affiliations}
-\changes{4.0h}{1998/06/25}{new hook}
-\changes{4.0l}{1998/09/01}{add optional argument handling back}
-\changes{4.0l}{1998/09/01}{Changes to add collaboration processing, which now means doing comma/and processing on each sublist}
-\changes{4.0l}{1998/09/01}{macro added}
-\changes{4.1a}{2008-06-30}{(AO, 443) create an entry in the PDF bookmarks for the abstract via the toc}
-\changes{4.1a}{2008-07-01}{(AO, 496) remove default prependation to \cs{email}.}
-\changes{4.1a}{2008-07-01}{(AO, 496) remove default prependation to \cs{homepage}.}
-\changes{4.1a}{2008/06/16}{removed code that had been commented out}
-\changes{4.1b}{2008/06/29}{(AO, 455) provide a \texttt{description} environment for the abstract}
-\changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-\changes{4.1b}{2008/08/02}{Change csname \cs{AFS@opr} to \cs{AFG@opr}}
-\changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-\changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-\changes{4.1b}{2008/08/02}{Use \cs{@affil@def} for all access to \cs{@affil}}
-\changes{4.1b}{2008/08/02}{Use \cs{frontmatter@init} as the vehicle for all initialization}
-\changes{4.1b}{2008/08/04}{(AO, 443) PDF Bookmark for title page}%
-\changes{4.1b}{2008/08/04}{Provide facility \cs{affil@cutoff}: if there is only one affiliation on the title page, no superscript}%
-\changes{4.1c}{2008/08/04}{Hyperref compatibility: take \cs{maketitle} back.}
-\changes{4.1c}{2008/08/04}{Parametrize the production after the address}%
-\changes{4.1c}{2008/08/04}{Produce PACS, keywords only if specified}%
-\changes{4.1d}{2008/10/17}{(AO, 410) compare \cs{@tempa} to \cs{blankaffiliation}.}%
-\changes{4.1f}{2009/07/07}{(AO, 515) Use \cs{set@footnotefont}, which is defined in ltxutil}
-\changes{4.1g}{2009/10/05}{(AO, 535) Robustify \cs{footnote} while \cs{class@warn} is expanding its argument}
-\changes{4.1g}{2009/10/05}{(AO, 539) Robustify \cs{class@warn} against TOC processing}%
-\changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-\changes{4.1i}{2009/10/23}{(AO, 540) Rationalize code that appends to \cs{AF@grp}}
-\changes{4.1i}{2009/10/23}{(AO, 540) Optimize boolean logic }
-\changes{4.1i}{2009/10/23}{(AO, 544) Class options runinaddress and unsortedaddress stopped working}
-\changes{4.1m}{2009/11/20}{(AO, 563) \cs{collaboration} to work with both \texttt{groupedaddress} and \texttt{superscriptaddress}}
-\changes{4.1m}{2009/11/20}{(AO, 563) More complete runtime diagnostics via \cs{frontmatterverbose@sw}}
-\changes{4.1m}{2009/11/20}{(AO, 563) Let \cs{@collaboration@gobble} parse all three arguments of \cs{CO@opr}}
-\changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-\changes{4.1n}{2009/11/30}{(AO, 567) Handle punctuation for \classoption{superscriptaddress} style authors' extra information, such as \cs{email}}
-\changes{4.1n}{2009/12/03}{(AO) remove http:// from \cs{href} call}
-\changes{4.1n}{2010/01/02}{(AO, 571) Interface \cs{set@footnotewidth} for determining the set width of footnotes}%
-\changes{4.1n}{2010/01/02}{(AO, 571) allow split after last line of footnote}%
-\changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-\changes{4.2a}{2018/12/12}{(MD) Updated name of README file and use standard fonts when typesetting}%
-
-\end{filecontents*}
-% \end{macrocode}
-%
-% \subsection{A Gnuly Created Sample Document}
-%
-% \begin{macrocode}
-\begin{filecontents*}{ltxfront-test.tex}
-\documentclass{article}% use any combination of titlepage, twocolumn
-\usepackage[]{ltxfront}% use inactive to turn off features
-\begin{document}
-
-\title{Gnu Veldt Cuisine}
-
-\author{G. Picking}
-\thanks{Supported by a grant from the GSF.}
-\affiliation{Acme Kitchen Products}
-
-\author{R. Dillo}
-\thanks{On leave during 1985.}
-\affiliation{Cordon Puce School}
-
-\date{24 July 1984}%
-\revised{5 January 1985}%
-
-\maketitle
-
-\section{Introduction}%
-We reproduce most features of \LaTeX\ manual, Figure C.4, p. 183.
-\end{document}
-\end{filecontents*}
-% \end{macrocode}
-%
-% \subsection{The Document Body}
-%
-% Here is the document body, containing only a
-% \cmd\DocInput\ directive---referring to this very file.
-% This very cute self-reference is a common \classname{ltxdoc} idiom.
-% \begin{macrocode}
-\begin{document}%
-\expandafter\DocInput\expandafter{\jobname.dtx}%
-% ^^A\PrintChanges
-\end{document}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</doc>
-% \end{macrocode}
-%
-% \section{Using this package}
-% Once this package is installed on your filesystem, you can employ it in
-% adding functionality to \LaTeX\ by invoking it in your document or document class.
-%
-% \subsection{Invoking the package}
-% In your document, you can simply call it up in your preamble:
-% \begin{verbatim}
-%\documentclass{book}%
-%\usepackage{ltxfront}%
-%\begin{document}
-%<your document here>
-%\end{document}\end{verbatim}
-% However, the preferred way is to invoke this package from within your
-% customized document class:
-% \begin{verbatim}
-%\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
-%\ProvidesClass{myclass}%
-%\RequirePackage{ltxfront}%
-%\LoadClass{book}%
-%<class customization commands>
-%\endinput\end{verbatim}
-%
-% Once loaded, the package gives you acccess to certain procedures,
-% usually to be invoked by a \LaTeX\ command or environment.
-%
-% \section{Frontmatter commands}
-%
-% A document using this package will use commands like \cmd\title, \cmd\author, \cmd\thanks,
-% the \texttt{abstract} environment
-% and \cmd\maketitle.
-% These are part of \LaTeX's standard document classes.
-% But this package supplements \LaTeX\ syntax with additional commands, such as
-% \cmd\affiliation, \cmd\collaboration, \cmd\email, \cmd\homepage, and others.
-%
-% Furthermore, you can have multiple \cmd\author, \cmd\affiliation, and \cmd\collaboration\ commands,
-% each with their own set of \cmd\email, \cmd\homepage, etc. commands.
-%
-% \section{The Front Matter}\label{sec:front}
-%
-% This section describes the macros
-% this package provides for formatting the front matter of an
-% article. The behavior and usage of these macros can be quite
-% different from those provided in \LaTeXe.
-%
-% \subsection{Setting the title}
-%
-% The title of the manuscript is simply specified by using the
-% \cmd\title\arg{title} macro. A \verb+\\+ may be used to put a line
-% break in a long title.
-% The \cmd\title\ commnd takes an optional argument, which you will use to
-% give an abbreviated title for use in the running header.
-%
-% \subsection{Specifying a date}%
-%
-% The \cmd\date\marg{date} command outputs the date on the manuscript.
-% Using \cmd\today\ will cause \LaTeX{} to insert the
-% current date whenever the file is run:
-% \begin{verbatim}\date{\today}\end{verbatim}
-%
-% \subsection{Specifying authors and affiliations}
-%
-% Commands specifying author and affilliation have been improved to save
-% labor for authors and in production. Authors and affiliations are
-% arranged into groupings called, appropriately enough, \emph{author
-% groups}. Each author group is a set of authors who share the same set
-% of affiliations. Author names are specified with the \cmd\author\
-% macro while affiliations (or addresses) are specified with the
-% \cmd\affiliation\ macro. Author groups are specified by sequences of
-% \cmd\author\ macros followed by \cmd\affiliation\ macros. An
-% \cmd\affiliation\ macro applies to all previously specified
-% \cmd\author\ macros which don't already have an affiliation supplied.
-%
-% For example, if Bugs Bunny and Roger Rabbit are both at Looney Tune
-% Studios, while Mickey Mouse is at Disney World, the markup would be:
-% \begin{verbatim}
-% \author{Bugs Bunny}
-% \author{Roger Rabbit}
-% \affiliation{Looney Tune Studios}
-% \author{Mickey Mouse}
-% \affiliation{Disney World}\end{verbatim}
-% The default is to display this as
-% \begin{center}
-% Bugs Bunny and Roger Rabbit\\
-% \emph{Looney Tune Studios}\\
-% Mickey Mouse\\
-% \emph{Disney World}\\
-% \end{center}
-% This layout style for displaying authors and their affiliations is
-% chosen by selecting the class option
-% \classoption{groupedaddress}. This option is the default for all APS
-% journal styles, so it does not need to be specified explicitly.
-% The other major way of displaying this
-% information is to use superscripts on the authors and
-% affiliations. This can be accomplished by selecting the class option
-% \classoption{superscriptaddress}. To achieve the display
-% \begin{center}
-% Bugs Bunny,$^{1}$ Roger Rabbit,$^{1,2}$ and Mickey Mouse$^{2}$\\
-% \emph{$^{1}$Looney Tune Studios}\\
-% \emph{$^{2}$Disney World}\\
-% \end{center}
-% one would use the markup
-% \begin{verbatim}
-% \author{Bugs Bunny}
-% \affiliation{Looney Tune Studios}
-% \author{Roger Rabbit}
-% \affiliation{Looney Tune Studios}
-% \affiliation{Disney World}
-% \author{Mickey Mouse}
-% \affiliation{Disney World}\end{verbatim}
-%
-% Note that this package takes care of any commas and \emph{and}'s that join
-% the author names together and font selection, as well as any
-% superscript numbering. Only the author names and affiliations should
-% be given within their respective macros.
-%
-% There is a third class option, \classoption{unsortedaddress}, for
-% controlling author/affiliation display. The default
-% \classoption{groupedaddress} will actually sort authors into the
-% approriate author groups if one chooses to specify an affiliation for
-% each author. The markup:
-% \begin{verbatim}
-% \author{Bugs Bunny}
-% \affiliation{Looney Tune Studios}
-% \author{Mickey Mouse}
-% \affiliation{Disney World}
-% \author{Roger Rabbit}
-% \affiliation{Looney Tune Studios}\end{verbatim}
-% will result in the same display as for the first case given
-% above even though Roger Rabbit is specified after Mickey Mouse. To
-% avoid Roger Rabbit being moved into the same author group as Bugs
-% Bunny, use the
-% \classoption{unsortedaddress} option instead. In general, it is safest
-% to list authors in the order they should appear and specify
-% affiliations for multiple authors rather than one at a time. This will
-% afford the most independence for choosing the display option. Finally,
-% it should be mentioned that the affiliations for the
-% \classoption{superscriptaddress} are presented and numbered
-% in the order that they are encountered. This means that the order
-% will usually follow the order of the authors. An alternative ordering
-% can be forced by including a list of \cmd\affiliation\ commands before
-% the first \cmd{\author} in the desired order. Then use the exact same
-% text for each affilation when specifying them for each author.
-%
-% If an author doesn't have an affiliation, the \cmd\noaffiliation\
-% macro may be used in the place of an \cmd\affiliation\ macro.
-%
-%
-% \subsubsection{Collaborations}
-%
-% A collaboration name can be specified with the \cmd\collaboration\
-% command. This is very similar to the \cmd\author\ command.
-% It should appear at the end of an author group.
-% The collaboration name will appear centered in parentheses.
-% You may have multiple author groups, each with its own \cmd\collaboration.
-% Because collaborations don't normally have affiliations, one needs to follow the
-% \cmd\collaboration\ with \cmd\noaffiliation.
-%
-% \subsubsection{Footnotes for authors, collaborations, affiliations or title}\label{sec:footau}
-%
-% Often one wants to specify additional information associated with an
-% author, collaboration, or affiliation such an e-mail address, an
-% alternate affiliation, or some other ancillary information.
-% This package introduces several new macros just for this purpose. They
-% are:
-% \begin{itemize}
-% \item\cmd\email\oarg{optional text}\arg{e-mail address}
-% \item\cmd\homepage\oarg{optional text}\arg{URL}
-% \item\cmd\altaffiliation\oarg{optional text}\arg{affiliation}
-% \item\cmd\thanks\arg{miscellaneous text}
-% \end{itemize}
-% In the first three, the \emph{optional text} will be prepended before the
-% actual information specified in the required argument. \cmd\email\ and
-% \cmd\homepage\ each have a default text for their optional arguments
-% (`Electronic address:' and `URL:' respectively). The \cmd\thanks\
-% macro should only be used if one of the other three do not apply. Any
-% author name can have multiple instances of these four commands.
-% Note that unlike the
-% \cmd\affiliation\ macro, these macros only apply to the \cmd\author\
-% that directly precedes it. Any \cmd\affiliation\ \emph{must} follow
-% the other author-specific macros. A typical usage might be as follows:
-% \begin{verbatim}
-% \author{Bugs Bunny}
-% \email[E-mail me at: ]{bugs@looney.com}
-% \homepage[Visit: ]{http://looney.com/}
-% \altaffiliation[Permanent address: ]
-% {Warner Brothers}
-% \affiliation{Looney Tunes}\end{verbatim}
-% This would result in the footnote ``E-mail me at: \texttt{bugs@looney.com},
-% Visit: \texttt{http://looney.com/}, Permanent address: Warner
-% Brothers'' being attached to Bugs Bunny. Note that:
-% \begin{itemize}
-% \item Only an e-mail address, URL, or affiliation should go in the
-% required argument in the curly braces.
-% \item The font is automatically taken care of.
-% \item An explicit space is needed at the end of the optional text if one is
-% desired in the output.
-% \item Use the optional arguments to provide customized
-% text only if there is a good reason to.
-% \end{itemize}
-%
-% The \cmd\collaboration\ , \cmd\affiliation, or even \cmd\title\ can
-% also have footnotes attached via these commands. If any ancillary data
-% (\cmd\thanks, \cmd\email, \cmd\homepage, or
-% \cmd\altaffiliation) are given in the wrong context (e.g., before any
-% \cmd\title, \cmd\author, \cmd\collaboration, or \cmd\affiliation\
-% command has been given), then a warning is given in the \TeX\ log, and
-% the command is ignored.
-%
-% Duplicate sets of ancillary data are merged, giving rise to a single
-% shared footnote. However, this only applies if the ancillary data are
-% identical: even the order of the commands specifying the data must be
-% identical. Thus, for example, two authors can share a single footnote
-% indicating a group e-mail address.
-%
-% Duplicate \cmd\affiliation\ commands may be given in the course of the
-% front matter, without the danger of producing extraneous affiliations
-% on the title page. However, ancillary data should be specified for
-% only the first instance of any particular institution's
-% \cmd\affiliation\ command; a later instance with different ancillary
-% data will result in a warning in the \TeX\ log.
-%
-% It is preferable to arrange authors into
-% sets. Within each set all the authors share the same group of
-% affiliations. For each author, give the \cmd\author\ (and appropriate
-% ancillary data), then follow this author group with the needed group
-% of \cmd\affiliation\ commands.
-%
-% If affiliations have been listed before the first
-% \cmd\author\ macro to ensure a particular ordering, be sure
-% that any later \cmd\affiliation\ command for the given institution is
-% an exact copy of the first, and also ensure that no ancillary data is
-% given in these later instances.
-%
-%
-% A journal may determine the placement of these
-% ancillary information footnotes. One journal may put all
-% such footnotes at the start of the bibliography while another
-% journal may display them on the first page, as a footnote. One can override a
-% journal style's default behavior by specifying explicitly the class
-% option
-% \classoption{bibnotes} (puts the footnotes at the start of the
-% bibliography) or \classoption{nobibnotes} (puts them on the first page).
-%
-% \subsubsection{Specifying first names and surnames}
-%
-% Many authors have names in which either the surname appears first
-% or in which the surname is made up of more than one name. To ensure
-% that such names are accurately captured for indexing and other
-% purposes, the \cmd\surname\ macro should be used to indicate which portion
-% of a name is the surname. Similarly, there is a \cmd\firstname\ macro
-% as well, although usage of \cmd\surname\ should be sufficient. If an
-% author's surname is a single name and written last, it is not
-% necessary to use these macros. These macros do nothing but indicate
-% how a name should be indexed. Here are some examples;
-% \begin{verbatim}
-% \author{Andrew \surname{Lloyd Weber}}
-% \author{\surname{Mao} Tse-Tung}\end{verbatim}
-%
-% \subsection{The abstract}
-% An abstract for a paper is specified by using the \env{abstract}
-% environment:
-% \begin{verbatim}
-% \begin{abstract}
-% Text of abstract
-% \end{abstract}\end{verbatim}
-% Note that with this package, the abstract must be specified before the
-% \cmd\maketitle\ command, and there is no need to embed it in an explicit
-% minipage environment.
-%
-% \subsection{PACS codes}
-% Some authors are asked to supply suggested PACS codes with their
-% submissions. The \cmd\pacs\ macro is provided as a way to do this:
-% \begin{verbatim}\pacs{23.23.+x, 56.65.Dy}\end{verbatim}
-% The actual display of the PACS numbers below the abstract is
-% controlled by two class options: \classoption{showpacs} and
-% \classoption{noshowpacs}. In particular, this is now independent of
-% the \classoption{preprint} option. \classoption{showpacs} must be
-% explicitly included in the class options to display the PACS codes.
-%
-% \subsection{Keywords}
-% A \cmd\keywords\ macro may also be used to indicate keywords for the
-% article.
-% \begin{verbatim}\keywords{nuclear form; yrast level}\end{verbatim}
-% This will be displayed below the abstract and PACS (if supplied). Like
-% PACS codes, the actual display of the the keywords is controlled by
-% two classoptions: \classoption{showkeys} and
-% \classoption{noshowkeys}. An explicit \classoption{showkeys} must be
-% included in the \cmd\documentclass\ line to display the keywords.
-%
-% \subsection{Institutional report numbers}
-% Institutional report numbers can be specified using the \cmd\preprint\
-% macro. These will be displayed in the upper lefthand corner of the
-% first page. Multiple \cmd\preprint\ macros may be supplied (space is
-% limited though, so only three or less may actually fit).
-%
-% \subsection{maketitle}
-% After specifying the title, authors, affiliations, abstract, PACS
-% codes, and report numbers, the final step for formatting the front
-% matter of the manuscript is to issue the \cmd\maketitle\ command:
-% \begin{verbatim}\maketitle\end{verbatim}
-% This command must follow all of the macros listed above.
-% The macro will format the front matter in accordance with the various
-% class options that were specified in the
-% \cmd\documentclass\ line (either implicitly through defaults or
-% explicitly).
-%
-%
-% \section{Compatability with \LaTeX's Required Packages}
-% Certain packages, usually ones written by members of the
-% \LaTeX\ Project itself, have been designated ``required'' and
-% are distributed as part of standard \LaTeX.
-% These packages have been placed in a priviledged position
-% vis \'a vis the \LaTeX\ kernel in that they override the definitions of certain kernel macros.
-%
-% The \classname{ltxfront} package will be incompatible with any package that
-% redefines any of the kernel macros that \classname{ltxfront} patches---if that
-% package is loaded \emph{after} \classname{ltxfront}.
-%
-% Hereinafter follows some notes on specific \LaTeX\ packages.
-%
-%\StopEventually{}
-%
-% \section{Implementation of package}
-%
-% \subsection{Beginning of the \file{package} {\sc docstrip} module}
-% \begin{macrocode}
-%<*package>
-\def\package@name{ltxfront}%
-\expandafter\PackageInfo\expandafter{\package@name}{%
- Title page macros for \protect\LaTeXe,
- by A. Ogawa (arthur_ogawa at sbcglobal.net)%
-}%
-% \end{macrocode}
-%
-% \subsection{Prerequisites}%
-%
-% This package requires the use of the \classname{ltxutil} package.
-% \begin{macrocode}
-\let\class@name\package@name
-\RequirePackage{ltxutil}%
-%</package>
-% \end{macrocode}
-% End of the preliminary portion of the package code.
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \subsection{Options}%
-% Package options are treated in this portion of the dtx file.
-% This portion is guarded by the \texttt{options} \classname{docstrip} code so that it can be
-% merged into a larger package gracefully.
-% \begin{macrocode}
-%<*options>
-% \end{macrocode}
-%
-% Package option turns on diagnostics that trace its operation.
-% \cmd\frontmatterverbose@sw\ is set false by default: we do not elect to monitor
-% the workings of these procedures.
-% \begin{macrocode}
-\DeclareOption{frontmatterverbose}{\@booleantrue\frontmatterverbose@sw}%
-\@booleanfalse\frontmatterverbose@sw
-% \end{macrocode}
-%
-% Package option inactivates its syntax, for testing purposes.
-% \begin{macrocode}
-\DeclareOption{inactive}{\@booleanfalse\frontmatter@syntax@sw}%
-\@booleantrue\frontmatter@syntax@sw
-% \end{macrocode}
-%
-% \begin{macro}{\runinaddress@sw}
-% The flag \cmd\runinaddress@sw\ signifies that author addresses are to be set on the same
-% line with the author.
-%
-% The \classoption{runinaddress} option is the only one that sets \cmd\runinaddress@sw\ to true.
-%
-% FIXME: this option pertains to cases where \cmd\groupauthors@sw\ is true, but is independant of \cmd\@affils@sw.
-% So, it should be possible to assert both \classoption{runinaddress} and \classoption{unsortedaddress} as well as
-% each separately.
-% \begin{macrocode}
-\@booleanfalse\runinaddress@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affils@sw}
-% If \cmd\@affils@sw\ is false, an address is never recognised as ``new''
-% and is therefore always entered into the affiliation list,
-% stopping groups of authors at the same address being consolidated
-% into the same list:
-% the address will be printed the same number of times it is entered.
-%
-% The \classoption{unsortedaddress} option is the only one that sets \cmd\@affils@sw\ to false.
-% \begin{macrocode}
-\@booleantrue\@affils@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\groupauthors@sw}
-% The flag \cmd\groupauthors@sw\ signifies that authors are to be grouped,
-% affecting the meaning of \cmd\@author@present.
-%
-% Clients will want to set \cmd\groupauthors@sw\ true if they want grouped addresses
-% or either of the following variants:
-% for unsorted addresses: set \cmd\@affils@sw\ false;
-% for run-in addresses, set \cmd\runinaddress@sw\ true.
-% \begin{macrocode}
-\@booleanfalse\groupauthors@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{groupedaddress}
-% If we take the \classoption{groupedaddress} option as the default, then we can look upon
-% the \classoption{superscriptaddress} option as simply turning \cmd\groupauthors@sw\ to \cmd\false@sw.
-%
-% \classoption{groupedaddress}, the default in APS journals, groups authors above a common address.
-% \begin{macrocode}
-\DeclareOption{groupedaddress}{\clo@groupedaddress}%
-\def\clo@groupedaddress{%
- \@booleantrue\groupauthors@sw
- \@booleantrue\@affils@sw
- \@booleanfalse\runinaddress@sw
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{unsortedaddress}
-% \classoption{unsortedaddress} is similar to \classoption{groupedaddress},
-% but turns off \cmd\@affils@sw,
-% with the result that each address that is entered will be printed.
-% \begin{macrocode}
-\DeclareOption{unsortedaddress}{\clo@unsortedaddress}%
-\def\clo@unsortedaddress{%
- \@booleantrue\groupauthors@sw
- \@booleanfalse\@affils@sw
- \@booleanfalse\runinaddress@sw
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{runinaddress}
-%
-% \classoption{runinaddress} is similar to \classoption{groupedaddress},
-% with the addition of the Boolean \cmd\runinaddress@sw,
-% which causes the authors associated with a particular address group
-% to be formatted in a paragraph instead of on separate lines.
-% \begin{macrocode}
-\DeclareOption{runinaddress}{\clo@runinaddress}%
-\def\clo@runinaddress{%
- \@booleantrue\groupauthors@sw
- \@booleantrue\@affils@sw
- \@booleantrue\runinaddress@sw
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{superscriptaddress}
-% \classoption{superscriptaddress} presents author affiliations
-% as superscripts. Authors with like affiliations share the same
-% superscript.
-%
-% FIXME: if \cmd\groupauthors@sw\ is false, would not \cmd\@affils@sw\ be a don't care?
-% \begin{macrocode}
-\DeclareOption{superscriptaddress}{\clo@superscriptaddress}%
-\def\clo@superscriptaddress{%
- \@booleanfalse\groupauthors@sw
- \@booleantrue\@affils@sw
- \@booleanfalse\runinaddress@sw
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</options>
-% \end{macrocode}
-%
-% \subsection{Process package options}%
-% \begin{macrocode}
-%<*package>
-\DeclareOption*{\OptionNotUsed}%
-\ProcessOptions*
-%</package>
-% \end{macrocode}
-%
-% \section{Kernel of Front Matter}
-% Here begins the kernel of the \classname{frontmatter} package.
-% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% This package implements a new syntax for the title page of an article.
-%
-% Special acknowledgment: this package uses concepts pioneered
-% and first realized by William Baxter (mailto:web at superscript.com)
-% in his SuperScript line of commercial typesetting tools, and
-% which are used here with his permission.
-%
-% These macros were first coded by David P. Carlisle for the American Physical
-% society in the late 1990s as part of the development of REV\TeX4.
-% That development work was taken over by Arthur Ogawa, who is the author of
-% this package.
-%
-% \subsection{Initialization}%
-%
-% \begin{macro}{\frontmatter@init}
-% The \cmd\frontmatter@init\ procedure sets up all the registers for
-% processing the title page.
-% At present, this is done once, at \cmd\class@documenthook\ time.
-% If multiple title pages are to be processed within a job,
-% the initialization must be done for each.
-% \begin{macrocode}
-\appdef\class@documenthook{\frontmatter@init}%
-\let\frontmatter@init\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{The title command}%
-%
-% \begin{macro}{\title}
-% \begin{macro}{\do@title}
-% The author uses \cmd\title\ to specify the title. As in the AMS
-% classes, \cmd\title\ has an optional argument specifying a short form
-% for use in running heads.
-%
-% Once the \cmd\title\ is given, you can specify any combination of
-% \cmd\thanks, \cmd\email, \cmd\homepage, and \cmd\altaffiliation\ commands,
-% applying to the title of the document.
-%
-% Compatibility note: as with all of the standard \LaTeX\ commands that we override,
-% we make here a private definition and later switch it in if so required.
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-% \begin{macrocode}
-\newcommand\frontmatter@title[2][]{%
- \def\@title{#2}%
- \def\@shorttitle{#1}%
- \let\@AF@join\@title@join
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@title}
-% \begin{macro}{\@shorttitle}
-% The arguments to \cmd\title\ are saved in these internal
-% macros, which are set up to produce a warning if \cmd\title\ has not
-% been used before \cmd\maketitle.
-% \changes{4.1b}{2008/08/02}{Use \cs{frontmatter@init} as the vehicle for all initialization}
-%
-% Extensibility note: by using \cmd\frontmatter@init\ as the initialization procedure,
-% we open the possibility of more than one title page per document.
-% \begin{macrocode}
-\appdef\frontmatter@init{%
- \def\@title{\class@warn{No title}}%
- \let\@shorttitle\@empty
- \let\@title@aux\@title@aux@cleared
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@title@join}
-% \begin{macro}{\@title@join@}
-% \begin{macro}{\@title@aux@cleared}
-%
-% \begin{macrocode}
-\def\@title@join{\expandafter\@title@join@\@title@aux}%
-\def\@title@join@#1#2{%
- \def\@title@aux{{\@join{\@separator}{#1}{#2}}}%
-}%
-\def\@title@aux@cleared{{}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{The author, affiliation, and related commands}%
-%
-% \begin{macro}{\c@affil}
-% \begin{macro}{\c@collab}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-%
-% \cmd\c@affil\ stores the affiliation numbers used for the superscript marks.
-% The \cmd\newcounter\ command defines \cmd\theaffil, which we never use:
-% this counter is evaluated solely via \cmd\the.
-%
-% \cmd\c@collab\ stores the collaboration numbers.
-% The \cmd\newcounter\ command defines \cmd\thecollab.
-% As with \cmd\c@affil, we never use \cmd\thecollab; only \cmd\the\ \cmd\c@collab.
-%
-% Each counter must be cleared before frontmatter can be processed.
-% \begin{macrocode}
-\newcounter{affil}%
-\newcounter{collab}%
-\appdef\frontmatter@init{%
- \c@affil\z@
- \c@collab\z@
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Commands for author or collaboration}%
-%
-% \begin{macro}{\author}
-% Each author is given in a \emph{separate} \cmd\author\ command.
-% This is similar to the AMS classes, but the AMS also try to support
-% the \classname{article} class's \cmd\and\ command for putting multiple
-% authors in one \cmd\author\ command.
-% This package, however, does not support the \cmd\and\ command.
-%
-% When the \cmd\author\ command is encountered,
-% the previous author, author group, affiliation, and affiliation group are at an end.
-% This procedure moves the previous author to the author group (\cmd\move@AU),
-% moves the previous affiliation to the affiliation group (\cmd\move@AF),
-% and terminates the previous author/affiliation group (\cmd\move@AUAF) as the case may require.
-%
-% Compatibility note: as with all of the standard \LaTeX\ commands that we override,
-% we make here a private definition and later switch it in if so required.
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-% \begin{macrocode}
-\newcommand\frontmatter@author{% implicit #1
- \@author@def{}% implicit #2
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\collaboration}
-% Specify the collaboration (given after a group of authors).
-%
-% This procedure does exactly what \cmd\author\ does, and sets
-% a flag signifying that the \cmd\collaboration\ command was given.
-%
-% Note: earlier versions attempted to ignore the collaboration command if it was considered inappropriate.
-% We must not do this, however, because it throws the state machine out of kilter.
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% \begin{macrocode}
-\def\collaboration{% implicit #1
- \@author@def{\@booleantrue\collaboration@sw}% implicit #2
-}%
-\appdef\frontmatter@init{%
- \@booleanfalse\collaboration@sw
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@author@init}
-% \begin{macro}{\@author@cleared}
-% \begin{macro}{\@authorclear@sw}
-% \begin{macro}{\@author@def}
-% \begin{macro}{\@author@join@}
-% \begin{macro}{\@author@join}
-% \changes{4.0b}{1999/06/20}{Change handling of \cs{@author} to prevent parsing problems. (Helps in error recovery when syntax errors exist)}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% \changes{4.1b}{2008/08/02}{Use \cs{frontmatter@init} as the vehicle for all initialization}
-%
-% Here are all the access procedures for the author data structure.
-%
-% We define a flag value for \cmd\@author (private),
-% a procedure \cmd\@author@gobble\ to read author data without any effect,
-% a procedure for setting \cmd\@author\ to the flag value (\cmd\@author@init),
-% a Boolean to test against the flag value (\cmd\@authorclear@sw),
-% and a procedure to add new ancillary data to the author.
-%
-% Note that expanding the functionality of the \cmd\collaboration\ command entailed changing
-% the data structures, because now all authors must remember the collaboration they belong to.
-% This change affects procedures \cmd\@author@cleared\ and \cmd\@author@gobble.
-% \begin{macrocode}
-\def\@author@cleared{{}{}{}}%
-\def\@author@gobble#1#2#3{}%
-\def\@author@init{%
- \let\@author\@author@cleared
- \@booleanfalse\collaboration@sw
-}%
-\def\@authorclear@sw{\@ifx{\@author\@author@cleared}}%
-\appdef\frontmatter@init{%
- \@author@init
-}%
-% \end{macrocode}
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \begin{macrocode}
-\def\@author@def#1#2{%
- \frontmatterverbose@sw{\typeout{\string\author\space\string\collaboration}}{}%
- \move@AU\move@AF\move@AUAF
- \let\@AF@join\@author@join
- #1%
- \def\@author{{#2}{}}%
-}%
-\def\@author@join@#1#2#3{%
- \def\@author{{#1}{\@join{\@separator}{#2}{#3}}}%
-}%
-\def\@author@join{\expandafter\@author@join@\@author}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\move@AU}
-% \begin{macro}{\add@AUCO@grp}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% The \cmd\move@AU\ procedure moves the most recent author to the current author group \cmd\AU@grp,
-% or the most recent collaboration to the collaboration group \cmd\CO@grp.
-% If we recently did a \cmd\@author@init, this is a no-op.
-%
-% To accommodate the expanded syntax of \cmd\collaboration, we add a new field to
-% those associated with an author (collaborator), namely the value of the
-% collaboration counter.
-% \begin{macrocode}
-\def\move@AU{%
- \@authorclear@sw{}{%
- \collaboration@sw{%
- \advance\c@collab\@ne
- \@argswap{\CO@grp\CO@opr}%
- }{%
- \@argswap{\AU@grp\AU@opr}%
- }%
- {%
- \expandafter\@argswap@val
- \expandafter{\@author}%
- {\expandafter\@argswap@val\expandafter{\the\c@collab}{\add@AUCO@grp}}%
- }%
- }%
- \@author@init
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% The procedure \cmd\add@AUCO@grp\ adds to the specified group \#3 using the
-% given intercollated operator \#4, with arguments \{\#1\} and \#2,
-% where the first argument is the collaboration number,
-% the second is the author name, and the third the joined attributes of the author.
-% For example, \cmd\move@AU\ could finally execute:
-% \cmd\appdef\ \cmd\AU@grp\ \{\cmd\AU@opr\{1\}\{A. Author\}\{\}\}.
-% \begin{macrocode}
-\def\add@AUCO@grp#1#2#3#4{%
- \appdef#3{#4{#1}#2}%
- \frontmatterverbose@sw{\say#3}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@author@finish}
-% We define a procedure to terminate author/affiliation parsing just before the title block is formatted.
-% We detect the case where an author group is not followed by an affiliation group.
-% \changes{4.0f}{2001/02/13}{Actually append \cs{AU@grp} to \cs{@AAClist}.}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% \changes{4.1b}{2008/08/02}{Use \cs{@affil@def} for all access to \cs{@affil}}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% \changes{4.1g}{2009/10/05}{(AO, 535) Robustify \cs{footnote} while \cs{class@warn} is expanding its argument}
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \changes{4.1m}{2009/11/20}{(AO, 563) \cs{collaboration} to work with both \texttt{groupedaddress} and \texttt{superscriptaddress}}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-%
-% We first finish off any author- or affiliation groups in progress.
-% Next, we detect the case where there is an author group or a collaboration group in progress, but no affiliation group.
-% If so, we emit a diagnositic message and act as if a \cmd\noaffiliation\ command had been given.
-% In any case, we finish off any author/affiliation pair that may remain.
-% Formatting of the title block may now proceed.
-% \begin{macrocode}
-\def\@author@finish{%
- \frontmatterverbose@sw{\typeout{\string\@author@finish}}{}%
- \move@AU\move@AF
- \@ifx{\AU@grp\@empty}{%
- \@ifx{\CO@grp\@empty}%
- }{%
- \false@sw
- }%
- {}{%
- \@ifx{\AF@grp\@empty}{%
- \begingroup
- \let\href\@secondoftwo
- \let\AU@opr\@secondofthree
- \let\CO@opr\@secondofthree
- \let\footnote\@gobble
- \@ifx{\CO@grp\@empty}{%
- \class@warn{Assuming \string\noaffiliation\space for authors}%
- \frontmatterverbose@sw{\say\AU@grp}%
- }{%
- \class@warn{Assuming \string\noaffiliation\space for collaboration}%
- \frontmatterverbose@sw{\say\CO@grp}{}%
- }%
- \endgroup
- \@affil@none\move@AF
- }{}%
- }%
- \move@AUAF
-}%
-\def\@secondofthree#1#2#3{#2}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@join}
-% The procedure \cmd\@join\ inserts
-% a separator between two tokens, or, if the first token is
-% nil, elides both that token and the separator.
-% \begin{macrocode}
-\def\@join#1#2#3{%
- \@if@empty{#2}{#3}{#2#1#3}%
-}%
-\def\@separator{;\space}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\surname}
-% \begin{macro}{\firstname}
-% No-op to allow better post-processing of the file.
-% \begin{macrocode}
-\let\surname\@firstofone
-\let\firstname\@firstofone
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\and}
-% The original \LaTeX\ idea of using one \cmd\author\ command to capture
-% all authors and their address just doesn't work with multiple authors
-% possibly sharing addresses, so in this class disable \cmd\and.
-% \begin{macrocode}
-\newcommand\frontmatter@and{\class@err{\protect\and\space is not supported}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Commands for affiliation}%
-%
-% \begin{macro}{\affiliation}
-% \changes{4.1b}{2008/08/02}{Use \cs{@affil@def} for all access to \cs{@affil}}
-% After each group of authors with the same address,
-% give that address in \cmd\affiliation.
-% If later in the list you have an author
-% with the address of an earlier author, repeat the \cmd\affiliation\
-% command: the system will detect the equivalence and (if using the \classoption{superscriptaddress} option)
-% only print the affiliation once, reusing the superscript marker.
-%
-% When the \cmd\affiliation\ command is encountered, the current author and author group (if any) are at an end.
-% Also, the current affiliation is at an end.
-%
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% FIXME: changes to catcode required elsewhere now?
-% \begin{macrocode}
-\def\cat@comma@active{\catcode`\,\active}%
-{\cat@comma@active\gdef,{\active@comma}}%
-\def\active@comma{,\penalty-300\relax}%
-\newcommand\affiliation{%
- \frontmatterverbose@sw{\typeout{\string\affiliation}}{}%
- \move@AU\move@AF
- \begingroup
- \cat@comma@active
- \@affiliation
-}%
-\def\@affiliation#1{%
- \endgroup
- \let\@AF@join\@affil@join
- \@affil@def{#1}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\noaffiliation}
-% \changes{4.1b}{2008/08/02}{Use \cs{@affil@def} for all access to \cs{@affil}}
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-% User-level command \cmd\noaffiliation\ signifies that the current group of authors, or the current collaboration, has \emph{no} affiliation.
-%
-% This is implemented by acting as if the \cmd\affiliation\ command has been given, and using a
-% flag value of \{\cmd\relax\}, which adds an element to the affiliation group of this author,
-% albeit a nil one (\cmd\AFF@opr\ \{\cmd\relax\} \{\}).
-%
-% Note that this procedure does substantially the same as \cmd\@author@finish. (the latter, If it does not bail out altogether, differs chiefly in providing diagnostics).
-% \begin{macrocode}
-\newcommand\frontmatter@noaffiliation{%
- \frontmatterverbose@sw{\typeout{\string\noaffiliation}}{}%
- \move@AU\move@AF
-% \end{macrocode}
-% In \cmd\@author@finish, there is code testing if an effective
-% \cmd\noaffiliation\ should be executed now. Here, we do so in any case.
-% \begin{macrocode}
- \@affil@none\move@AF
- \move@AUAF
-}%
-\def\blankaffiliation{{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affil@cleared}
-% \begin{macro}{\@affil@nil}
-% \begin{macro}{\@affil@init}
-% \begin{macro}{\@affil@none}
-% \begin{macro}{\@affilclear@sw}
-% \begin{macro}{\@affil@def}
-% \begin{macro}{\@affil@join@}
-% \begin{macro}{\@affil@join}
-% \changes{4.1b}{2008/08/02}{Use \cs{@affil@def} for all access to \cs{@affil}}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-%
-% Here are all the access procedures for the affiliation data structure.
-% Note the similarity to those of the \cmd\@author\ data structure.
-%
-% We define a flag value for \cmd\@affil\ (private),
-% a procedure for setting \cmd\@affil\ to the flag value (\cmd\@affil@init),
-% a Boolean to test against the flag value (\cmd\@affilclear@sw),
-% a procedure \cmd\@affil@def\ to load a value into the structure,
-% and a procedure to add new ancillary data to the affiliation.
-% \begin{macrocode}
-\def\@affil@cleared{{{}}{}}%
-\def\@affil@nil{{\relax}{}}%
-\appdef\frontmatter@init{%
- \@affil@init
-}%
-\def\@affil@none{%
- \let\@affil\@affil@nil
-}%
-\def\@affil@init{%
- \let\@affil\@affil@cleared
-}%
-\def\@affilclear@sw{\@ifx{\@affil\@affil@cleared}}%
-\def\@affil@def#1{%
- \def\@affil{{#1}{}}%
-}%
-\def\@affil@join@#1#2#3{%
- \def\@affil{{#1}{\@join{\@separator}{#2}{#3}}}%
-}%
-\def\@affil@join{\expandafter\@affil@join@\@affil}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\move@AF}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% \changes{4.1i}{2009/10/23}{(AO, 540) Rationalize code that appends to \cs{AF@grp}}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-% Move the most recent affiliation to the affiliation group.
-% If we recently did a \cmd\@affil@init, this is a no-op.
-%
-% Set the \cmd\temp@sw\ to false, then execute the affiliation list (\cmd\@AFF@list)
-% with the intercollated operator set to \cmd\@affil@match\
-% and with \cmd\@tempa\ holding the first component of \cmd\@affil, the current affiliation, which is to be matched.
-%
-% If the current affiliation has been seen before, then by side effect
-% \cmd\temp@sw\ will be set to true,
-% \cmd\@tempc\ will be set to the matching affiliation number,
-% and \cmd\@tempd\ will be set to the affiliation's ancillary data.
-% The Boolean \cmd\@affils@sw\ being false prevents this test from ever returning a ``true'' result.
-%
-% This procedure uses \cmd\@tempa\ and sets \cmd\@tempc, \cmd\@tempd, and \cmd\temp@sw.
-% \begin{macrocode}
-\def\move@AF{%
- \@affilclear@sw{}{%
- \@booleanfalse\temp@sw
- \let\@tempd\@empty
- \@affils@sw{%
- \expandafter\@affil@addr@def\expandafter\@tempa\@affil
- \def\AFF@opr{\@affil@match\@tempa}%
- \@AFF@list
- }{}\temp@sw
-% \end{macrocode}
-% True clause: This affiliation has been seen before.
-% If ancillary data for the affiliation have been given, but are not identical to those seen before, give a warning.
-% \begin{macrocode}
- {%
- \expandafter\@affil@aux@def\expandafter\@tempb\@affil
- \@ifx{\@tempb\@empty}{}{%
- \@ifx{\@tempb\@tempd}{}{%
- \class@warn{%
- Ancillary information for \@tempa\space must not be different!
- Please put all of it on the first instance%
- }%
- }%
- }%
- }%
-% \end{macrocode}
-% False clause: This affiliation is a new one:
-% increment the affiliation counter to get a unique affiliation ID
-% and append the new ID, collaboration number, address, and auxiliary information
-% to the list \cmd\@AFF@list.
-%
-% Note that, with the expanded syntax of \cmd\collaboration, we need to label each address with
-% its associated collaboration.
-%
-% Note also that the \cmd\noaffiliation\ case is handled by recognizing the flag value \cmd\@affil@nil.
-% \begin{macrocode}
- {%
- \@ifx{\@affil\@affil@nil}{%
- \def\@tempc{0}%
- \@argswap@val{0}%
- }{%
- \advance\c@affil\@ne
- \expandafter\def\expandafter\@tempc\expandafter{\the\c@affil}%
- \expandafter\@argswap@val\expandafter{\the\c@affil}%
- }%
- {%
- \expandafter\@argswap@val\expandafter{\the\c@collab}{%
- \expandafter\@argswap@val\expandafter{\@affil}{%
- \add@list@val@val@val\@AFF@list\AFF@opr
- }%
- }%
- }%
- }%
-% \end{macrocode}
-% In either case, append this affiliation number to the \cmd\AF@grp, the affiliation group of the current author group.
-% (It will later be considered for the \cmd\@AFG@list.)
-% Then assign the flag value to \cmd\@affil\ that signifies it has been cleared.
-% \changes{4.1i}{2009/10/18}{(AO, 540) Rationalize code that appends to \cs{AF@grp}}
-% \begin{macrocode}
- \appdef@eval\AF@grp\@tempc
- \frontmatterverbose@sw{\say\AF@grp}{}%
- \@affil@init
- }%
-}%
-\def\@affil@addr@def#1#2#3{%
- \def#1{#2}%
-}%
-\def\@affil@aux@def#1#2#3{%
- \def#1{#3}%
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% Procedure \cmd\add@list@val@val@val\ appends to the given list \#1 using the given intercollated operator \#2,
-% with arguments \#5 (affiliation ID) and \#4 (collaboration ID) delimited by braces, and \#3 bare.
-% In the end, \cmd\move@AF\ may execute something like
-% \cmd\appdef\ \cmd\@AFF@list\ \cmd\AFF@opr\ \{1\} \{3\} \{My Institution\} \{thanks\}.
-% \begin{macrocode}
-\def\add@list@val@val@val#1#2#3#4#5{%
- \appdef#1{#2{#5}{#4}#3}%
- \frontmatterverbose@sw{\say#1}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affil@match}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% The procedure \cmd\@affil@match\ is the definition for \cmd\AFF@opr,
-% the intercollated operator for \cmd\@AFF@list,
-% when adding a new affiliation: it seeks a match with any earlier affiliation.
-% When the affiliation list is executed, this procedure tests each entry against
-% the `new' affiliation (which has been stored in \cmd\@tempa) and its associated
-% collaboration number (in \cmd\@tempb).
-%
-% If \cmd\groupauthors@sw\ is true, then we require the collaboration ID to match,
-% otherwise there is no such requirement,
-% as is appropriate for the \classoption{superscriptaddress} class option.
-%
-% Uses \cmd\temp@sw, \cmd\@tempc, and \cmd\@tempd\ to communicate back:
-% if it returns \cmd\temp@sw\ true, a match was found.
-% Then
-% \cmd\@tempc\ will be the affiliation ID of the matching entry
-% and \cmd\@tempd\ will be the auxiliary information of the matching entry.
-% \begin{macrocode}
-\def\@affil@match#1#2#3#4#5{%
- \temp@sw{}{%
- \def\@tempifx{#4}%
- \@ifx{\@tempifx#1}{%
- \groupauthors@sw{%
- \@ifnum{#3=\c@collab}{%
- \true@sw
- }{%
- \false@sw
- }%
- }{%
- \true@sw
- }%
- }{%
- \false@sw
- }%
- {%
- \@booleantrue\temp@sw
- \def\@tempc{#2}%
- \def\@tempd{#5}%
- }{%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\move@AUAF}
-% \changes{4.0h}{1998/06/25}{Changes to support groups of affiliations}
-% \changes{4.1b}{2008/08/02}{(AO, 486) \cs{collaboration} to work with \texttt{groupedaddress}}
-% \changes{4.1b}{2008/08/02}{Change csname \cs{AFS@opr} to \cs{AFG@opr}}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% Append \cmd\AF@grp, \cmd\AU@grp, and \cmd\CO@grp\ to \cmd\@AAC@list,
-% append \cmd\CO@grp\ to \cmd\@AFG@list,
-% and merge any new \cmd\AF@grp\ to \cmd\@AFG@list.
-%
-% The entire procedure is predicated on something non-trivial to move.
-%
-% If both author group \cmd\AU@grp\ and affiliation group \cmd\AF@grp\ are nil, bail out.
-%
-% No, try that again:
-%
-% If we have seen any affiliations (\cmd\AF@grp\ is not nil),
-% then it is time to move the current affiliation group and author group to \cmd\@AAC@list.
-% If not, we are picking up authors into an author group, and we should bail out.
-%
-% To extend this scheme to the new \cmd\collaboration\ abilities, we must append an affiliation \cmd\AF@opr\ to \cmd\@AAC@list\
-% also in the case where there was no affiliation specified (e.g., \cmd\noaffiliation). This affiliation will be a nil affiliation:
-% \cmd\AF@opr\verb+{{0}}+.
-%
-%FIXME: only one of \cmd\CO@grp\ or \cmd\AU@grp\ is non-empty at this point,
-% but this code does not appear to recognize this fact!
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \begin{macrocode}
-\def\move@AUAF{%
- \frontmatterverbose@sw{\say\AU@grp\say\AF@grp\say\CO@grp}{}%
- \@ifx{\AF@grp\@empty}{%
- \@ifx{\@empty\CO@grp}{%
-% \end{macrocode}
-% Both \cmd\AF@grp\ and \cmd\CO@grp\ are empty: nothing to do. But what if \cmd\AU@grp\ is not empty?
-% \begin{macrocode}
- }{%
-% \end{macrocode}
-% Append the nil \cmd\AF@opr\ to \cmd\@AAC@list.
-% \begin{macrocode}
- \appdef \@AAC@list{\AF@opr{{0}}}%
-% \end{macrocode}
-% Append the collaboration group to the \cmd\@AAC@list; no intercollated operator need be added,
-% because we already have \cmd\CO@opr.
-% \begin{macrocode}
- \appdef@e \@AAC@list{\CO@grp}%
- \appdef@e \@AFG@list{\CO@grp}%
- \let\CO@grp\@empty
- }%
- }{%
-% \end{macrocode}
-% Append current affiliation group (expansion of \cmd\AF@grp)
-% to the author/affiliation list (\cmd\@AAC@list),
-% using \cmd\AF@opr\ as the intercollated operator;
-% also append the current authors (\cmd\AU@grp).
-% \begin{macrocode}
- \appdef \@AAC@list{\AF@opr}%
- \appdef@eval\@AAC@list{\AF@grp}%
- \appdef@e \@AAC@list{\AU@grp}%
-% \end{macrocode}
-% Determine if either \cmd\AU@grp\ or \cmd\CO@grp\ is non-empty.
-% \begin{macrocode}
- \@ifx{\@empty\AU@grp}{%
- \@ifx{\@empty\CO@grp}%
- }{%
- \false@sw
- }%
-% \end{macrocode}
-% At this point, there is a Boolean in \TeX's scanner;
-% it will parse the following two brace-delimited sequences and select one of them.
-% \begin{macrocode}
- {%
-% \end{macrocode}
-% This branch is executed if and only if both \cmd\AU@grp\ and \cmd\CO@grp\ are empty.
-% \begin{macrocode}
- }{%
-% \end{macrocode}
-% There was either a \cmd\author\ or a \cmd\collaboration\ command.
-% Append the current affiliation group to \cmd\@AFG@list,
-% (only if it is not already there)
-% using \cmd\AFG@opr\ as the intercollated operator.
-%
-% Note that \cmd\@AFG@list\ is a list of \emph{unique} affiliation \emph{groups},
-% and building it entails an \(N^2\) computation.
-% \begin{macrocode}
- \@booleanfalse\temp@sw
- \def\AFG@opr{\x@match\AF@grp}%
- \let\CO@opr\@author@gobble
- \@AFG@list
- \temp@sw{}{%
- \appdef \@AFG@list{\AFG@opr}%
- \appdef@eval\@AFG@list{\AF@grp}%
- }%
-% \end{macrocode}
-% If the collaboration \cmd\CO@grp\ is not empty, we append it to the \cmd\@AFG@list\ and to the \cmd\@AAC@list.
-% \changes{4.1m}{2009/11/20}{(AO, 563) \cs{collaboration} to work with both \texttt{groupedaddress} and \texttt{superscriptaddress}}
-% \begin{macrocode}
- \@ifx{\@empty\CO@grp}{}{%
- \appdef@e \@AAC@list{\CO@grp}%
- \appdef@e \@AFG@list{\CO@grp}%
- \let\CO@grp\@empty
- }%
- }%
-% \end{macrocode}
-% Finally, null out the macros holding the author group \cmd\AU@grp, affiliation group \cmd\AF@grp, and collaboration group \cmd\CO@grp.
-% \begin{macrocode}
- \let\CO@grp\@empty
- \let\AU@grp\@empty
- \let\AF@grp\@empty
- }%
- \frontmatterverbose@sw{\say\@AAC@list\say\@AFG@list}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\AU@grp}
-% \begin{macro}{\AF@grp}
-% \begin{macro}{\@AAC@list}
-% \begin{macro}{\@AFG@list}
-% \begin{macro}{\@AFF@list}
-%
-% The control sequence name \cmd\AU@grp\ accumulates
-% consecutive \cmd\author\ entries (with \cmd\AU@opr\ as the intercollated operator)
-% and \cmd\collaboration\ entries (with \cmd\CO@opr\ as the intercollated operator).
-% Ultimately, its contents are appended to the author/affiliation list \cmd\@AAC@list\
-% and to the list of affiliation groups, \cmd\@AFG@list.
-% It must be initialized to \cmd\@empty.
-%
-% Note on \cmd\AU@opr\ and \cmd\CO@opr: it is essential to treat these two operators to the greatest extent possible on an equal footing.
-% Therefore we invariably assign values to the pair of them within the same procedure.
-%
-% The macro \cmd\AF@grp\ accumulates affiliation IDs into an affiliation group.
-% It must be empty at the beginning of the frontmatter.
-%
-% The \cmd\@AAC@list\ macro accumulates
-% authors (using \cmd\AU@opr\ as the intercollated operator),
-% collaborations (using \cmd\CO@opr\ as the intercollated operator),
-% and
-% affiliations (using \cmd\AF@opr\ as the intercollated operator).
-%
-% It must be empty at the beginning of the frontmatter.
-%
-% The macro \cmd\@AFG@list\ accumulates
-% affiliation groups, with \cmd\AFG@opr\ as the intercollated operator,
-% and collaborations, with no intercollated operator.
-% This token list is employed when and only when \classoption{groupedaddress} is in effect.
-%
-% The macro \cmd\@AFF@list\ accumulates the list of affiliations
-% with \cmd\AFF@opr\ as the intercollated operator.
-% It must be empty at the beginning of the frontmatter.
-%
-% Each \cmd\affiliation\ command in the document contributes
-% to this list, as long as the argument of that instance of the command
-% is ``new''.
-%
-% Each entry in this list consists of the \cmd\AFF@opr\ intercollated operator
-% followed by three brace-delimited tokens, representing, in order:
-% \begin{enumerate}
-% \item
-% the affiliation's unique ID, a number increasing monotonically for
-% each new entry,
-% \item
-% the optional argument of the \cmd\affiliation\ command,
-% the footnote to the affiliation, and
-% \item
-% the text of the affiliation.
-% \end{enumerate}
-%
-% At various junctures in the code, the control sequence name
-% \cmd\AFF@opr\ assumes the meaning of
-% \cmd\@affil@group, \cmd\affil@script,
-% or is defined to expand to \cmd\@affil@match\cmd\@tempa,
-% and the list \cmd\@AFF@list\ is expanded.
-%
-% For each of these lists, here is the syntax of an element and the usage of the associated operator:
-% \begin{verbatim}
-%\@AFF@list \AFF@opr{<affiliation ID>}{<collaboration ID>}{<address>}{<auxiliary info>} \frontmatter@author@produce@script \affils@present@group
-%\@AFG@list \AFG@opr{{<affiliation ID>}..{<affiliation ID>}} \frontmatter@author@produce@group
-%\@AAC@list \AF@opr{{<affiliation ID>}..{<affiliation ID>}} (\AU@opr|\CO@opr){<collaboration ID>}{<author>}{<auxilliary info>} \frontmatter@author@produce@script \frontmatter@author@produce@group \affils@present@group
-%
-%\AFF@opr \@affil@match\@tempa \@affil@script \@affil@group
-%\AFG@opr \affils@present@group \x@match\AF@grp
-%\AF@opr \@gobble \@affilID@def \@affilID@count\AF@temp\@tempcnta \@affilID@match\AF@temp
-%\AU@opr \@secondofthree \@author@count\@tempcnta \@author@present \@author@gobble \@author@count#2 \@author@present
-%\CO@opr \@secondofthree \@collaboration@count\AU@temp\@tempcnta \@collaboration@present\AU@temp \@collaboration@present\AU@temp \@collaboration@gobble
-%
-%\CO@opr\@author@cleared
-% \end{verbatim}
-% \begin{macrocode}
-\appdef\frontmatter@init{%
- \let\AU@grp\@empty
- \let\CO@grp\@empty
- \let\AF@grp\@empty
- \let\@AAC@list\@empty
- \let\@AFG@list\@empty
- \let\@AFF@list\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@AF@join}
-% The \cmd\csname\ \cmd\@AF@join\ is a procedure used within
-% \cmd\email, \cmd\homepage, \cmd\thanks, and \cmd\altaffiliation.
-% When such a command appears after an \cmd\author, \cmd\collaboration, or \cmd\affiliation
-% command, the \cmd\@AF@join\ procedure appends the argument given to the appropriate
-% macro.
-% Its default is to give an error message, since these commands are legal only within
-% the particular context mentioned.
-% \begin{macrocode}
-\appdef\frontmatter@init{%
- \let\@AF@join\@AF@join@error
-}%
-\def\@AF@join@error#1{%
- \class@warn{%
- \string\email, \string\homepage, \string\thanks, or \string\altaffiliation\space
- appears in wrong context.
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Commands for auxiliary information}%
-%
-% \begin{macro}{\email}
-% Just tacks the email address on to the current author or affiliation.
-% \changes{4.1a}{2008-07-01}{(AO, 496) remove default prependation to \cs{email}.}
-% \begin{macrocode}
-\def\sanitize@url{%
- \@makeother\%%
- \@makeother\~%
- \@makeother\_%
-}%
-\newcommand*\email[1][]{\begingroup\sanitize@url\@email{#1}}%
-\def\@email#1#2{%
- \endgroup
- \@AF@join{#1\href{mailto:#2}{#2}}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\homepage}
-% Just tacks the URL on to the current author or affiliation.
-% Note: group opened in \cmd\homepage\ is closed in \cmd\@homepage.
-% \changes{4.1a}{2008-07-01}{(AO, 496) remove default prependation to \cs{homepage}.}
-% \changes{4.1n}{2009/12/03}{(AO) remove http:// from \cs{href} call}
-% \begin{macrocode}
-\newcommand*\homepage[1][]{\begingroup\sanitize@url\@homepage{#1}}%
-\def\@homepage#1#2{%
- \endgroup
- \@AF@join{#1\href{#2}{#2}}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\href}
-% The document may load a package that defines either of these commands;
-% if not, we give a default meaning.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \providecommand\href[1]{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\thanks}
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-%
-% The operative version of \cmd\thanks\ appends an item to \cmd\@author, or \cmd\@affil's auxiliary data.
-% \begin{macrocode}
-\def\frontmatter@thanks{% implicit #1
- \@AF@join
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\altaffiliation}
-% \changes{4.0d}{1998/01/31}{change name from \cs{tempaffiliation}}
-% \changes{4.0l}{1998/09/01}{add optional argument handling back}
-% Implemented more or less like \cmd\thanks\ but shares the affiliation
-% counter.
-% Optional argument may be used to give explanatory text eg
-% `currently staying at'
-% This will be placed before the address, if used in a footnote.
-% \begin{macrocode}
-\newcommand*\altaffiliation[2][]{%
- \@AF@join{#1#2}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Procedures for author, collaboration, and affiliation}%
-%
-% Macros that list off, say, authors, and which require punctuation, like ``A, B, and C'', will use
-% \cmd\set@listcomma@list, \cmd\set@listcomma@count, \cmd\@listand, and \cmd\@listcomma.
-% These macros use the \cmd\@tempcnta\ register to keep track of how many items remain to be listed off.
-%
-% At present, \cmd\@author@present\ will decrement that counter.
-%
-% \begin{macro}{\set@listcomma@list}
-% \begin{macro}{\set@listcomma@count}
-% \changes{4.0l}{1998/09/01}{macro added}
-% Pop the author count for this collaboration.
-%
-% Note: by side effect, it assigns \cmd\@listcomma:
-% for a list of length two, suppress comma addition.
-% \begin{macrocode}
-\def\set@listcomma@list#1{%
- \expandafter\@reset@ac\expandafter#1#1{0}\@reset@ac{%
- \let\@listcomma\relax
- }{%
- \let\@listcomma\@listcomma@comma
- }%
-}%
-\def\set@listcomma@count#1{%
- \@ifnum{#1=\tw@}{%
- \let\@listcomma\relax
- }{%
- \let\@listcomma\@listcomma@comma
- }%
-}%
-% \end{macrocode}
-% Does the actual pop operation, then generates a Boolean which selects one of the two assignments for \cmd\@listcomma.
-%
-% Note: this procedure sets \cmd\@tempcnta\ to reflect the number of items to list off.
-% \begin{macrocode}
-\def\@reset@ac#1#2#3\@reset@ac{%
- \def#1{#3}%
- \@tempcnta#2\relax
- \@ifnum{#2=\tw@}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\listand}
-% Might need extending with penalties etc.
-%
-% Note: this procedure expects \cmd\@tempcnta\ to reflect the current number of items remaining to list off.
-% \begin{macrocode}
-\def\@listand{\@ifnum{\@tempcnta=\tw@}{\andname\space}{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@listcomma}
-% This definition, with \cmd\@ne\ puts a comma before and.
-%
-% David Carlisle says: In UK English (at least) would have \cmd\tw@\ here,
-% which would then implement the convention of indicating conjunction with comma or ``and'', but not both.
-%
-% Note: this procedure expects \cmd\@tempcnta\ to reflect the current number of items remaining to list off.
-% \begin{macrocode}
-\def\@listcomma@comma{\@ifnum{\@tempcnta>\@ne}{,}{}}%
-\def\@listcomma@comma@UK{\@ifnum{\@tempcnta>\tw@}{,}{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@collaboration@gobble}
-% This command will be the synonym of \cmd\CO@grp\ during the expansion of \cmd\@AAC@list,
-% within \cmd\affils@present@group execution (in a \classoption{groupedaddress} situation).
-%
-% \changes{4.1m}{2009/11/20}{(AO, 563) Let \cs{@collaboration@gobble} parse all three arguments of \cs{CO@opr}}
-% \begin{macrocode}
-\def\@collaboration@gobble#1#2#3{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\doauthor}
-% \changes{4.1b}{2008/08/04}{Provide facility \cs{affil@cutoff}: if there is only one affiliation on the title page, no superscript}%
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle punctuation for \classoption{superscriptaddress} style authors' extra information, such as \cs{email}}
-% Main control over how authors are typeset.
-%
-% |#1| is loaded by \cmd\author
-%
-% |#2| is loaded by \cmd\email, \cmd\homepage, \cmd\altaffiliation, or \cmd\thanks
-%
-% |#3| is the superscript affiliation, if at all used.
-%
-% First, the author name is formatted, followed by a comma,
-% then come any marks relating to affiliation (if present),
-% then come the homepage URL and email address, if any, with
-% appropriate punctuation.
-%
-% Here, as in \cmd\@affil@script, the parameter \cmd\affil@cutoff\
-% controls whether the argument \#3 is produced as a superscript label
-% connecting this author with its affiliation. (If there is only one
-% affiliation on the title page, it makes sense to remove the superscript.)
-%
-% Note that argument \#3 must effectively execute either
-% \cmd\aftergroup\cmd\true@sw\ or \cmd\aftergroup\cmd\false@sw\ (exactly once!).
-% In the case of \classoption{superscriptaddress}, this is done when
-% \cmd\@author@present@script\ invokes \cmd\doauthor\ with its third argument containing
-% \cmd\@affil@present@script.
-% Otherwise (e.g., \classoption{groupedaddress}), \cmd\doauthor\ is invoked by
-% \cmd\@author@present@group\ with its third argument containing \cmd\@affil@present@group.
-% \begin{macrocode}
-\def\doauthor#1#2#3{%
- \ignorespaces#1\unskip\@listcomma
- \begingroup
- #3%
-% \end{macrocode}
-% At this point, we must have queued up a Boolean (either \cmd\true@sw\ or \cmd\false@sw).
-% \begin{macrocode}
- \@if@empty{#2}{\endgroup{}{}}{\endgroup{\comma@space}{}\frontmatter@footnote{#2}}%
- \space \@listand
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\x@match}
-% Procedure \cmd\x@match\ is used as an alias \cmd\AFG@opr,
-% probing the list of affiliation groups
-% and setting a Boolean if a match is found to \#1 (usually the current affiliation group).
-%
-% Procedure \cmd\y@match\ is used as an alias to \cmd\@TBN@opr,
-% probing the list of unique title block footnotes for a match to the footnote text:
-% when the first match is found it sets a Boolean,
-% defining \cmd\@tempb\ to the number of that footnote.
-% \begin{macrocode}
-\def\x@match#1#2{%
- \temp@sw{}{%
- \def\@tempifx{#2}%
- \@ifx{\@tempifx#1}{%
- \@booleantrue\temp@sw
- }{%
- }%
- }%
-}%
-\def\y@match#1#2#3{%
- \temp@sw{}{%
- \def\@tempifx{#3}%
- \@ifx{\@tempifx#1}{%
- \@booleantrue\temp@sw
- \def\@tempb{#2}%
- }{%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@footnote}
-% Used when typesetting a title block footnote.
-% (Item 290: merge duplicates.)
-%
-% Maintains a list of frontmatter footnotes along with associated device.
-% Uniquifies each footnote by traversing the list and looking for a match to the footnote text.
-% If found, define \cmd\@tempb\ to the corresponding footnote device, and typeset it with \cmd\@footnotemark.
-% If never found, manually increment footnote counter,
-% determine the corresponding footnote device, and
-% add footnote text and device to the list of frontmatter footnotes.
-%
-% The list \cmd\@FMN@list\ is processed later in the title block production.
-%
-% Note that this method of making footnotes runs afoul of \classname{hyperref}'s patches of the \LaTeX\ kernel.
-% Therefore, we avoid trouble by refraining from using \cmd\@footnotemark\ and by creating our own hypertext links.
-% \begin{macrocode}
-\def\frontmatter@footnote#1{%
- \begingroup
- \@booleanfalse\temp@sw
- \def\@tempa{#1}%
- \let\@tempb\@empty
- \def\@TBN@opr{\y@match\@tempa}%
- \@FMN@list
-% \end{macrocode}
-% By side effect, \cmd\@tempb\ holds the value of the footnote counter if
-% This note has been seen before. Otherwise \cmd\temp@sw\ is false.
-% \begin{macrocode}
- \temp@sw{%
- \expandafter\frontmatter@footnotemark
- \expandafter{\@tempb}%
- }{%
-% \end{macrocode}
-% Execute \cmd\frontmatter@foot@mark, feeding it the value of the current footnote counter.
-% This call requires two levels of pre-expansion to accomplish, the first to expand \cmd\csname, the second to evaluate \cmd\the.
-% \begin{macrocode}
- \stepcounter\@mpfn
- \expandafter\expandafter
- \expandafter\frontmatter@foot@mark
- \expandafter\expandafter
- \expandafter{%
- \expandafter \the\csname c@\@mpfn\endcsname
- }{#1}%
- }%
- \endgroup
-}%
-% \end{macrocode}
-% Procedure \cmd\frontmatter@foot@mark\ lays down the footnote device (mark) and takes care of the footnote text.
-% The latter merely involves queueing that text (along with its associated device) into \cmd\@FMN@list.
-% \begin{macrocode}
-\def\frontmatter@foot@mark#1#2{%
- \frontmatter@footnotemark{#1}%
- \g@addto@macro\@FMN@list{\@TBN@opr{#1}{#2}}%
-}%
-\appdef\frontmatter@init{%
- \global\let\@FMN@list\@empty
-}%
-% \end{macrocode}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
-\def\frontmatter@footnotemark#1{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
- \begingroup
- \hyper@linkstart {link}{frontmatter.#1}%
- \csname c@\@mpfn\endcsname#1\relax
- \def\@thefnmark{\frontmatter@thefootnote}%
- \@makefnmark
- \hyper@linkend
- \endgroup
- \ifhmode\spacefactor\@x@sf\fi
- \relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{The keywords command}%
-% \begin{macro}{\keywords}
-% \begin{macro}{\@keywords}
-% Usual game, save text in a macro for processing by \cmd\maketitle.
-% \begin{macrocode}
-\def\keywords#1{%
- \aftermaketitle@chk{\keywords}%
- \gdef\@keywords{#1}%
-}%
-\appdef\frontmatter@init{%
- \let\@keywords\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{The \cs{date} command and related commands}%
-% \begin{macro}{\date}
-% \begin{macro}{\received}
-% \begin{macro}{\revised}
-% \begin{macro}{\accepted}
-% \begin{macro}{\published}
-% \begin{macro}{\@date}
-% \begin{macro}{\@received}
-% \begin{macro}{\@revised}
-% \begin{macro}{\@accepted}
-% \begin{macro}{\@published}
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-% Use the \cmd\date\ command to specify the document date,
-% the \cmd\received\ command to specify the date received,
-% \cmd\revised\ for date revised,
-% \cmd\accepted\ for date accepted, and
-% \cmd\published\ for date published.
-% Normally only \cmd\date\ to be used by author,
-% the remainder used only by editors.
-%
-% DPC: As for \cmd\keywords, but this time don't flag a warning if there is no
-% revision date specified.
-%
-% In each case the user-level command defines the value of a
-% macro which buffers the data entered by the user.
-% For instance, \cmd\received\ causes \cmd\@received\ to
-% acquire a value.
-% The optional argument allows the user to override the
-% text that will be typeset along with the date;
-% the default value of that text is itself
-% a localized macro.
-% \begin{macrocode}
-\newcommand*\frontmatter@date[2][\Dated@name]{\def\@date{#1#2}}%
-\def\@date{}%
-\newcommand*\received[2][\Received@name]{\def\@received{#1#2}}%
-\def\@received{}%
-\newcommand*\revised[2][\Revised@name]{\def\@revised{#1#2}}%
-\def\@revised{}%
-\newcommand*\accepted[2][\Accepted@name]{\def\@accepted{#1#2}}%
-\def\@accepted{}%
-\newcommand*\published[2][\Published@name]{\def\@published{#1#2}}%
-\def\@published{}%
-% \end{macrocode}
-%
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{The pacs command}%
-% PACS, the Physics and Astronomy Classification Scheme.
-% \begin{macro}{\pacs}
-% \begin{macro}{\@pacs}
-% As for \cmd\keywords\
-% \begin{macrocode}
-\def\pacs#1{%
- \aftermaketitle@chk{\pacs}%
- \gdef\@pacs{#1}%
-}%
-\appdef\frontmatter@init{%
- \let\@pacs\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{The \cs{preprint} command}
-%
-% \changes{4.0g}{1998/06/10}{multiple preprint commands}
-% \begin{macrocode}
-\def\preprint#1{\gappdef\@preprint{\preprint{#1}}}%
-\appdef\frontmatter@init{%
- \let\@preprint\@empty
-}%
-% \end{macrocode}
-%
-% \subsection{The \env{abstract} environment}%
-%
-% \changes{4.0b}{1999/06/20}{Gathered all code for the abstract environment together and abstracted out the formatting details for journals to override.}
-%
-% \begin{macro}{\absbox}
-%
-% \begin{macrocode}
-\newbox\absbox
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{environment}{abstract}
-% Abstract, as in AMS classes, must be specified \emph{before}
-% \cmd\maketitle. It just saves everything up in \cmd\absbox.
-% \changes{4.0d}{1998/01/31}{If empty \cs{abstractname} omit spacing}
-% \changes{4.0d}{1998/01/31}{hookify}
-% Note that the specifics of how the abstract is to be
-% formatted are set by \cmd\frontmatter@abstractwidth,
-% \cmd\frontmatter@abstractheading, and \cmd\frontmatter@abstractfont.
-%
-% Here we wish to set the abstract into type but save it away in a box, much like
-% the \cmd\minipage\ command does.
-%
-% Note that the \cmd\endabstract\ portion of the environment
-% begins with code that mostly duplicates \cmd\endminipage, but without the \cmd\@iiiparbox.
-% At the end, we simply transfer the contents of the \cmd\minipage\
-% into a box of our own.
-%
-% However, we also have to end the gratuitous
-% paragraph begun by \cmd\minipage.
-% We ensure that no trace of that paragraph is left,
-% by absorbing the \cmd\parindent\ box.
-% Doing so destroys the paragraph entirely, except
-% for the \cmd\parskip\ glue, and that morsel is pruned, because we are at the top
-% of a page.
-%
-% This mechanism is vulnerable, however, because anything placed into the horizontal list
-% after the \cmd\parindent\ box will confound it.
-% And that is exactly what happens under Mik\TeX:
-% There seems to be an extension to the \TeX\ standard operating here which inserts a \cmd\special \ at the beginning of every paragraph.
-% (The mechnism is \emph{not} based on \cmd\everypar.)
-%
-% To accomodate this state of affairs,
-% we have a new mechanism that offers an even more complete rewrite of \env{minipage}.
-%
-% Note that an entry is made in the toc for the abstract; this has the side effect
-% of creating a PDF bookmark for this element if the \classname{hyperref} package is in effect.
-% \changes{4.1a}{2008-06-30}{(AO, 443) create an entry in the PDF bookmarks for the abstract via the toc}
-% \begin{macrocode}
-\def\toclevel@abstract{1}%
-\def\addcontents@abstract{%
- \phantomsection
- \expandafter\def\csname Parent0\endcsname{section*.2}%
- \expandafter\@argswap@val\expandafter{\abstractname}{\addcontentsline{toc}{abstract}}%
-}%
-\newenvironment{frontmatter@abstract}{%
- \aftermaketitle@chk{\begin{abstract}}%
- \global\setbox\absbox\vbox\bgroup
- \color@begingroup
- \columnwidth\textwidth
- \hsize\columnwidth
- \@parboxrestore
-% \end{macrocode}
-% The following line switches footnotes to the \texttt{mpfoootnote} series.
-% This action should rather be taken by \cmd\frontmatter@abstractfont, which can be customized.
-% There is also an interaction with \cmd\mini@note.
-% \begin{macrocode}
- \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
- \let\@footnotetext\frontmatter@footnotetext
- \minipagefootnote@init
- \let\set@listindent\set@listindent@
- \let\@listdepth\@mplistdepth \@mplistdepth\z@
- \let@environment{description}{frontmatter@description}%
- \@minipagerestore
- \@setminipage
- \frontmatter@abstractheading
- \frontmatter@abstractfont
- \let\footnote\mini@note
- \expandafter\everypar\expandafter{\the\everypar\addcontents@abstract\everypar{}}%
-}{%
- \par
- \unskip
- \minipagefootnote@here
- \@minipagefalse %% added 24 May 89
- \color@endgroup
- \egroup
-}%
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\frontmatter@footnotetext}
-% We reimplement \cmd\@mpfootnotetext\ under a new name (so as not to be overridden by the \classname{hyperref} package)
-% and extend it to accomodate hyperrefs.
-%
-% Note that this procedure is very like \classname{ltxutil}'s \cmd\mp@footnotetext, except that it
-% uses \cmd\frontmatter@makefntext\ instead of \cmd\@makefntext.
-%
-% \changes{4.1f}{2009/07/07}{(AO, 515) Use \cs{set@footnotefont}, which is defined in ltxutil}
-% \changes{4.1n}{2010/01/02}{(AO, 571) allow split after last line of footnote}%
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
-\long\def\frontmatter@footnotetext#1{%
- \minipagefootnote@pick
- \set@footnotefont
- \set@footnotewidth
- \@parboxrestore
- \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}%
- \color@begingroup
- \frontmatter@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox\vadjust{\vskip\z@skip}%
- }%
- \color@endgroup
- \minipagefootnote@drop
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ltx@no@footwarn}
-%
-% \begin{macrocode}
-\def\ltx@no@footnote{%
- \let\ltx@xfootnote\ltx@no@xfootnote\let\ltx@yfootnote\ltx@no@yfootnote
- \let\ltx@xfootmark\ltx@no@xfootmark\let\ltx@yfootmark\ltx@no@yfootmark
- \let\ltx@xfoottext\ltx@no@xfoottext\let\ltx@yfoottext\ltx@no@yfoottext
-}%
-\def\ltx@no@xfootnote[#1]#2{\ltx@no@footwarn\footnote}%
-\def\ltx@no@yfootnote#1{\ltx@no@footwarn\footnote}%
-\def\ltx@no@xfootmark[#1]{\ltx@no@footwarn\footnotemark}%
-\def\ltx@no@yfootmark{\ltx@no@footwarn\footnotemark}%
-\def\ltx@no@xfoottext[#1]#2{\ltx@no@footwarn\footnotetext}%
-\def\ltx@no@yfoottext#1{\ltx@no@footwarn\footnotetext}%
-\def\ltx@no@footwarn#1{%
- \class@warn{%
- The \string#1\space command is not legal on the title page;
- using \string\thanks\space instead might suit you: consult the manual for details%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractheading}
-% The default abstract head; journals will override this procedure.
-% \begin{macrocode}
-\def\frontmatter@abstractheading{%
- \begingroup
- \centering\large
- \abstractname
- \par
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractfont}
-% The default type specification for the body of the abstract.
-% Journals will override this setting.
-% \begin{macrocode}
-\def\frontmatter@abstractfont{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{frontmatter@description}
-% \changes{4.1b}{2008/06/29}{(AO, 455) provide a \texttt{description} environment for the abstract}
-% Within the abstract, the description environment is defined as follows:
-% \begin{macrocode}
-\newenvironment{frontmatter@description}{%
- \list{}{%
- \leftmargin\z@
- \labelwidth\z@
-% \end{macrocode}
-% \begin{verbatim}
-% \itemindent-\leftmargin
-% \end{verbatim}
-% \begin{macrocode}
- \itemindent\z@
- \let\makelabel\frontmatter@descriptionlabel
- }%
-}{%
- \endlist
-}%
-\def\frontmatter@descriptionlabel#1{%
- \hspace\labelsep
- \normalfont\bfseries
- #1:%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractwidth}
-% The default setting is the full text width;
-% journals can override this setting.
-% \begin{macrocode}
-\def\frontmatter@abstractwidth{\textwidth}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstract@produce}
-% This procedure determines how the abstract is incorporated
-% into the title block. We split this out in anticipation
-% of the need to lift the limitation that the abstract not break over pages.
-%
-% If we are in preprint style, we provide an easy pagebreak point immediately above the abstract.
-% This means that the abstract will either fit entirely on the same page as the title block,
-% or it will start a page of its own (which may itself break onto a subsequent page if necessary).
-% \begin{macrocode}
-\def\frontmatter@abstract@produce{%
- \par
- \preprintsty@sw{%
- \do@output@MVL{%
- \vskip\frontmatter@preabstractspace
- \vskip200\p@\@plus1fil
- \penalty-200\relax
- \vskip-200\p@\@plus-1fil
- }%
- }{%
- \addvspace{\frontmatter@preabstractspace}%
- }%
- \begingroup
- \dimen@\baselineskip
- \setbox\z@\vtop{\unvcopy\absbox}%
- \advance\dimen@-\ht\z@\advance\dimen@-\prevdepth
- \@ifdim{\dimen@>\z@}{\vskip\dimen@}{}%
- \endgroup
- \begingroup
- \prep@absbox
- \unvbox\absbox
- \post@absbox
- \endgroup
- \@ifx{\@empty\mini@notes}{}{\mini@notes\par}%
- \addvspace\frontmatter@postabstractspace
-}%
-\appdef\frontmatter@init{\let\mini@notes\@empty}%
-\let\prep@absbox\@empty
-\let\post@absbox\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@preabstractspace}
-% \begin{macro}{\frontmatter@postabstractspace}
-% Space above and space below abstract in title block
-% \begin{macrocode}
-\def\frontmatter@preabstractspace{.5\baselineskip}
-\def\frontmatter@postabstractspace{.5\baselineskip}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \subsection{Formatting the title block}%
-%
-% \begin{environment}{titlepage}
-% This is \LaTeXe's \classname{article} class version,
-% with modifications.
-% \changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-% \begin{macrocode}
-\newenvironment{frontmatter@titlepage}{%
- \twocolumn@sw{\onecolumngrid}{\newpage}%
- \thispagestyle{titlepage}%
- \setcounter{page}\@ne
-}{%
- \twocolumn@sw{\twocolumngrid}{\newpage}%
- \twoside@sw{}{%
- \setcounter{page}\@ne
- }%
-}%
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\maketitle}
-% \changes{4.0d}{1998/01/31}{hookify}
-% Put it all together to format the title block.
-%
-% Gotcha!
-% If you expand \cmd\csname undefined\cmd\endcsname, you change the meaning of \cmd\undefined\ from
-% ``Undefined'' to \cmd\relax.
-% Watchout!
-% \begin{macrocode}
-\def\frontmatter@maketitle{%
- \@author@finish
- \title@column\titleblock@produce
- \suppressfloats[t]%
-% \end{macrocode}
-% Now save some memory.
-% \begin{macrocode}
- \let\and\relax
- \let\affiliation\@gobble
- \let\author\@gobble
- \let\@AAC@list\@empty
- \let\@AFF@list\@empty
- \let\@AFG@list\@empty
- \let\@AF@join\@AF@join@error
- \let\email\@gobble
- \let\@address\@empty
- \let\maketitle\relax
- \let\thanks\@gobble
- \let\abstract\@undefined\let\endabstract\@undefined
- \titlepage@sw{%
- \vfil
- \clearpage
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\maketitle@Hy}
-% \changes{4.1c}{2008/08/04}{Hyperref compatibility: take \cs{maketitle} back.}
-% We provide the means to take back the definition of \cmd\maketitle\ from \classname{hyperref}:
-% we do not need its help in providing hypertext services in the title page.
-% \begin{macrocode}
-\def\maketitle@Hy{%
- \let\Hy@saved@footnotemark\@footnotemark
- \let\Hy@saved@footnotetext\@footnotetext
- \let\@footnotemark\H@@footnotemark
- \let\@footnotetext\H@@footnotetext
- \@ifnextchar[%]
- \Hy@maketitle@optarg
- {%
- \HyOrg@maketitle
- \Hy@maketitle@end
- }%
-}%
-\appdef\class@documenthook{%
- \@ifx{\maketitle\maketitle@Hy}{%
- \class@info{Taking \string\maketitle\space back from hyperref}%
- \let\maketitle\frontmatter@maketitle
- }{%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\titleblock@produce}
-% This procedure produces the title block.
-%
-% It effectively executes inside a group
-% and always returns us to vertical mode.
-%
-% Note: we assume that it is OK to set the footnote counter to zero at this point.
-% Is this a safe assumption?
-% \begin{macrocode}
-\def\titleblock@produce{%
- \begingroup
-% \end{macrocode}
-% \changes{4.0b}{1999/06/20}{Set \cs{footnote} to \LaTeX\ standard version for this scope.}
-% First, we restore the footnote mechanism to its default state,
-% then we customize the way the footnote mark is produced and how it is formatted.
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
- \ltx@footnote@pop
-% \end{macrocode}
-% The following three lines establish an independent footnote counter for use in the title block.
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
- \def\@mpfn{mpfootnote}%
- \def\thempfn{\thempfootnote}%
- \c@mpfootnote\z@
- \let\@makefnmark\frontmatter@makefnmark
- \frontmatter@setup
- \thispagestyle{titlepage}\label{FirstPage}%
-% \end{macrocode}
-% Produce the title:
-% \begin{macrocode}
- \frontmatter@title@produce
-% \end{macrocode}
-% Produce the author list:
-% \begin{macrocode}
- \groupauthors@sw{%
- \frontmatter@author@produce@group
- }{%
- \frontmatter@author@produce@script
- }%
-% \end{macrocode}
-% Produce the dates:
-% \begin{macrocode}
- \frontmatter@RRAPformat{%
- \expandafter\produce@RRAP\expandafter{\@date}%
- \expandafter\produce@RRAP\expandafter{\@received}%
- \expandafter\produce@RRAP\expandafter{\@revised}%
- \expandafter\produce@RRAP\expandafter{\@accepted}%
- \expandafter\produce@RRAP\expandafter{\@published}%
- }%
-% \end{macrocode}
-% Produce the abstract, PACS, and keywords, and end any paragraph.
-% \changes{4.1c}{2008/08/04}{Produce PACS, keywords only if specified}%
-% \begin{macrocode}
- \frontmatter@abstract@produce
- \@ifx@empty\@pacs{}{%
- \@pacs@produce\@pacs
- }%
- \@ifx@empty\@keywords{}{%
- \@keywords@produce\@keywords
- }%
- \par
- \frontmatter@finalspace
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@title@produce}
-% The default formatting procedure for the article title.
-% This procedure should take care of the vertical space below the title.
-%
-% Clients may override this procedure, but it is more likely that they will
-% use the hooks \cmd\frontmatter@title@above, \cmd\frontmatter@title@format, and \cmd\frontmatter@title@below.
-% \changes{4.1b}{2008/08/04}{(AO, 443) PDF Bookmark for title page}%
-% \begin{macrocode}
-\def\toclevel@title{0}%
-\def\frontmatter@title@produce{%
- \begingroup
- \frontmatter@title@above
- \frontmatter@title@format
- \@title
- \unskip
- \phantomsection\expandafter\@argswap@val\expandafter{\@title}{\addcontentsline{toc}{title}}%
- \@ifx{\@title@aux\@title@aux@cleared}{}{%
- \expandafter\frontmatter@footnote\expandafter{\@title@aux}%
- }%
- \par
- \frontmatter@title@below
- \endgroup
-}%
-\appdef\let@mark{\let\\\relax}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@title@above}
-% \begin{macro}{\frontmatter@title@format}
-% \begin{macro}{\frontmatter@title@below}
-% The default values for formatting specifications for the article title.
-%
-% The procedure \cmd\frontmatter@title@above\ should take care of the vertical space above the title;
-% \cmd\frontmatter@title@below\ below.
-% The procedure \cmd\frontmatter@title@format\ should invoke any font switches, etc.
-% that may apply to the title.
-%
-% Journals will override this procedure.
-% \begin{macrocode}
-\def\frontmatter@title@above{}%
-\def\frontmatter@title@format{}%
-\def\frontmatter@title@below{\addvspace{\baselineskip}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Authors and affiliations in superscriptaddress style}
-%
-% \begin{macro}{\frontmatter@author@produce@script}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% \cmd\frontmatter@author@produce@script\ is an alias for \cmd\frontmatter@author@produce,
-% the procedure that formats the author/affiliation list.
-%
-% In this case, the authors affiliations are being superscripted
-% (class option \classoption{superscriptaddress}).
-%
-% This procedure must ensure that any paragraph that it starts gets ended finally.
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \changes{4.1m}{2009/11/20}{(AO, 563) More complete runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \begin{macrocode}
-\def\frontmatter@author@produce@script{%
- \begingroup
- \let\@author@present\@author@present@script
- \frontmatterverbose@sw{\typeout{\string\frontmatter@author@produce@script:}\say\@AAC@list\say\@AFF@list\say\@AFG@list}{}%
-% \end{macrocode}
-% \changes{4.0l}{1998/09/01}{Changes to add collaboration processing, which now means doing comma/and processing on each sublist}
-% When the author/affiliation list \cmd\@AAC@list\ is executed,
-% \cmd\@tempcnt\ counts each author,
-% and
-% \cmd\@tempa\ stores a list of author indices for the current collaboration.
-%
-% Note: this procedure uses \cmd\AU@temp\ to hold a list of author counts for each collaboration.
-% Note: also uses \cmd\@tempcnta\ to communicate between procedures.
-% This usage ot \cmd\@tempcnta\ is OK, because the expansion of \cmd\@AAC@list\ will trigger only the execution of
-% our own procedures.
-% \begin{macrocode}
- \let\AU@temp\@empty
- \@tempcnta\z@
-% \end{macrocode}
-%
-% We wish to know how many authors are in each collaboration, for the purposes of \cmd\listcomma\ and \cmd\listand.
-%
-% Here we assign values for the intercollated operators appearing within \cmd\@AAC@list,
-% then execute that macro, registering the authors in each collaboration.
-% Afterwards, clean up by emulating an empty collaboration.
-%
-% The result, stored in \cmd\AU@temp, is a list of brace-delmited tokens, each a number
-% representing the number of authors in that collaboration.
-% \begin{macrocode}
- \let\AF@opr \@gobble
- \def\AU@opr{\@author@count\@tempcnta}%
- \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}%
- \@AAC@list
- \expandafter\CO@opr\@author@cleared
-% \end{macrocode}
-% Next, present the authors and their affiliations, with the collaborations interleaved.
-%
-% We assign values for the intercollated operators appearing within \cmd\@AAC@list.
-% Next, assign \cmd\@listcomma\ based on the number of authors in the first collaboration.
-% Then expand \cmd\@AAC@list.
-%
-% Upon completion, there will be two space tokens following the last author because of \cmd\listand\ processing;
-% remove them, then end the last paragraph.
-%
-% FIXME: this juncture would be a good time to effectively eliminate
-% the unused affiliations in \cmd\@AFF@list.
-% \begin{macrocode}
- \begingroup
- \frontmatter@authorformat
- \let\AF@opr \@affilID@def
- \let\AU@opr \@author@present
- \def\CO@opr{\@collaboration@present\AU@temp}%
- \set@listcomma@list\AU@temp
- \@AAC@list
- \unskip\unskip
- \par
- \endgroup
-% \end{macrocode}
-% We now list out the affiliations in the order they appeared.
-% \begin{macrocode}
- \begingroup
- \frontmatter@above@affiliation@script
- \let\AFF@opr \@affil@script
- \@AFF@list
- \frontmatter@footnote@produce
- \par
- \endgroup
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@author@count}
-% This version of \cmd\AU@opr\ counts the number of authors it processes.
-% \begin{macrocode}
-\def\@author@count#1{%
- \advance#1\@ne
- \@author@gobble
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@collaboration@present}
-% Format a collaboration.
-% Note that we immediately end the paragraph thus begun, because we only support
-% \classoption{superscriptaddress}-style processing.
-%
-% Note also that the execution of the production procedures takes place inside of a group;
-% for reasons of protective programming.
-%
-% Bug note: originally, the number of authors in each collaboration was stored in \cmd\@tempa,
-% but this exposed us to procedures in our production that modified the meaning of \cmd\@tempa.
-%
-% The last action done in this procedure is to assign \cmd\@listcomma\ based on the number of authors in the next collaboration.
-% \begin{macrocode}
-\def\@collaboration@present#1#2#3#4{%
- \par
- \begingroup
- \frontmatter@collaboration@above
- \@affilID@def{}%
- \@tempcnta\z@
- \@author@present{}{(\ignorespaces#3\unskip)}{#4}%
- \par
- \endgroup
- \set@listcomma@list#1%
-}%
-\def\frontmatter@collaboration@above{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@collaboration@count}
-% Simply register each author in this collaboration.
-% Note: \#1 is a \cmd\csname\ to hold the value, \#2 is the \cmd\count\ register holding the count of interest.
-% \begin{macrocode}
-\def\@collaboration@count#1#2{%
- \appdef@eval#1{\the#2}#2\z@
- \@author@gobble
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affilID@def}
-%
-% The \cmd\@affilID@def\ procedure, an alias of \cmd\AF@opr\ used during \cmd\frontmatter@author@produce@script\ processing,
-% memorizes the affiliation in \cmd\@affilID@temp.
-% \begin{macrocode}
-\def\@affilID@def{\def\@affilID@temp}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affilID@temp}
-%
-% The macro \cmd\@affilID@temp\ is used to communicate between
-% \cmd\doauthor\ and instances of \cmd\AF@opr\ within the author list.
-% \begin{macrocode}
-\let\@affilID@temp\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\affils@present@script}
-% An alias of \cmd\AFG@opr, this procedure is applied to elements in \cmd\@AFG@list.
-% It builds \cmd\@AFU@list, a list of unique affiliations found within affiliation groups.
-%
-% \changes{4.1a}{2008/06/16}{removed code that had been commented out}
-% \begin{verbatim}
-%\def\affils@present@script#1{%
-% \get@affil#1{}%
-%}%
-%\def\get@affil#1{%
-% \def\@tempa{#1}%
-% \@ifx{\@empty\@tempa}{}{%
-% \@booleanfalse\temp@sw
-% \def\AF@opr{\x@match\@tempa}%
-% \@AFU@list
-% \temp@sw{}{%
-% \appdef\@AFU@list{\AF@opr{#1}}%
-% }%
-% \get@affil
-% }%
-%}%
-% \end{verbatim}
-% \end{macro}
-%
-% \begin{macro}{\affil@present@script}
-% An alias of \cmd\AF@opr, this procedure is applied to \cmd\@AFU@list\ when formatting the affiliations
-% under \classoption{superscriptaddress}.
-% It in turn applies \cmd\affil@script\ to \cmd\@AFF@list, thereby formatting the affiliation
-% associated with this affiliation index.
-%
-% Note: it traverses the \cmd\@AFF@list\ for each entry in the \cmd\@AFU@list, thereby making this
-% portion of code execute in $N^{2}$ time.
-% \changes{4.1a}{2008/06/16}{removed code that had been commented out}
-% \begin{verbatim}
-%\def\affil@present@script#1{%
-% \def\@tempa{#1}%
-% \begingroup
-% \frontmatter@affiliationfont
-% \let\AFF@opr \affil@script
-% \@AFF@list
-% \endgroup
-%}%
-% \end{verbatim}
-% \end{macro}
-%
-% \begin{macro}{\affil@script}
-% Alias of \cmd\AFF@opr, this procedure is applied to \cmd\@AFF@list\ when formatting the affiliations
-% under \classoption{superscriptaddress}.
-% It rejects all entries not matching the affiliation index held in \cmd\@tempa.
-% \begin{macrocode}
-\def\affil@script#1#2#3{%
- \def\@tempifx{#1}\@ifx{\@tempifx\@tempa}{%
- \@if@empty{#2}{}{%
- \par
- \begingroup
- \def\@thefnmark{#1}\@makefnmark\ignorespaces
- #2%
- \@if@empty{#3}{}{\frontmatter@footnote{#3}}%
- \par
- \endgroup
- }%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affil@script}
-% Alias of \cmd\AFF@opr:
-% The affiliations are being formatted in the case
-% where affiliations are being superscripted:
-% make a list out of the affiliations with the numbers printed.
-% Society-specific code can change the formatting
-% by overriding the definition of \cmd\frontmatter@affiliationfont.
-%
-% A client may choose to set \cmd\affil@cutoff\ to either \cmd\@ne\ (the default)
-% or \cmd\tw@. The latter setting will enforce a rule to the effect that
-% if a single affiliation appears on the title page,
-% then no affiliation superscript at all is produced.
-%
-% |#1|---Affiliation ID: a number; zero signifies a \cmd\noaffiliation.
-%
-% |#2|---Collaboration ID
-%
-% |#3|---Affiliation address
-%
-% |#4|---Auxiliary info
-% \begin{macrocode}
-\def\@affil@script#1#2#3#4{%
-% \end{macrocode}
-% If the affiliation is the \cmd\noaffiliation, then we do nothing.
-% \begin{macrocode}
- \@ifnum{#1=\z@}{}{%
- \par
- \begingroup
- \frontmatter@affiliationfont
- \@ifnum{\c@affil<\affil@cutoff}{}{%
- \def\@thefnmark{#1}\@makefnmark
- }%
- \ignorespaces#3%
- \@if@empty{#4}{}{\frontmatter@footnote{#4}}%
- \par
- \endgroup
- }%
-}%
-\let\affil@cutoff\@ne
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@author@present@script}
-% \changes{4.0h}{1998/06/25}{Changes to support groups of affiliations}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle \cs{noaffiliation} case}
-% This version of \cmd\AU@opr\ applies to the \classoption{superscriptaddress} class option.
-% Need to add commas between groups
-% of address numbers, which are passed in the macro \cmd\@affilID@temp\ in the form
-% |{3}{4}{7}| if this set of authors is related to addresses, 3, 4 and 7.
-% \begin{macrocode}
-\def\@author@present@script#1#2#3{%
- \begingroup
- \gdef\comma@space{\textsuperscript{,\,}}%
- \doauthor{#2}{#3}{\@affil@present@script}%
- \endgroup
- \advance\@tempcnta\m@ne
-}%
-\def\@affilcomma#1#2{%
- \@ifx{\z@#1}{%
- \@ifx{\relax#2}{}{%
- \@affilcomma{#2}%
- }%
- }{%
- #1%
- \@ifx{\relax#2}{}{%
- \@ifx{\z@#2}{%
- \@affilcomma
- }{%
- ,\,\@affilcomma{#2}%
- }%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affil@present@script}
-% \begin{macro}{\@affil@present@script@}
-% \changes{4.1n}{2009/11/30}{(AO, 567) Handle punctuation for \classoption{superscriptaddress} style authors' extra information, such as \cs{email}}
-% The \cmd\@affil@present@script\ procedure presents the reference to the affiliations in the case of superscript addresses.
-%
-% The affiliations are presented to \cmd\@affil@present@script@ as a list of brace-delimited tokens, each containing the affiliation ID (a number).
-% The list is terminated by the token \cmd\relax.
-% The macro recurses (via tail recursion) until the terminating token is encountered.
-% Note that an affiliation ID of zero signifies a \cmd\noaffiliation:
-% references to the \cmd\noaffiliation\ are passed over.
-%
-% Upon termination, the affiliations, if any, are produced via \cmd\textsuperscript\ and the appropriate boolean is queued via \cmd\aftergroup.
-% The boolean signifies that a non-trivial affiliation was produced, so that the proper punctuation can be produced.
-% The group in question is that opened and closed by the \cmd\doauthor\ procedure.
-%
-% This procedure uses \cmd\@tempa\ as a scratch register.
-% \begin{macrocode}
-\def\@affil@present@script{%
- \let\@tempa\@empty
- \expandafter\@affil@present@script@\@affilID@temp\relax
-}%
-\def\@affil@present@script@#1{%
- \@ifx{\relax#1}{%
- \@ifx{\@tempa\@empty}{%
- \aftergroup\false@sw
- }{%
- \textsuperscript{\expandafter\@affilcomma\@tempa\relax\relax}%
- \aftergroup\true@sw
- }%
- }{%
- \@ifnum{#1=\z@}{}{\appdef\@tempa{{#1}}}%
- \@affil@present@script@
- }%
-}%
-\@provide\@author@parskip{\z@skip}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Authors and affiliations in groupedaddress style}
-%
-% \begin{macro}{\frontmatter@author@produce@group}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% Alias for \cmd\frontmatter@author@produce when \classoption{groupedaddress} is in effect,
-% the procedure that formats the author/affiliation list.
-%
-% In this case, the authors are being grouped above their shared addresses.
-% How it works: the \cmd\@AFG@list, a list of all unique affiliation groups, is expanded.
-% For each such group, all authors belonging to that group are formatted above the affiliation group.
-% Collaborations are silently passed over.
-%
-% This procedure must ensure that any paragraph that it starts gets ended finally.
-% \changes{4.1i}{2009/10/18}{(AO, 540) More runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \changes{4.1m}{2009/11/20}{(AO, 563) More complete runtime diagnostics via \cs{frontmatterverbose@sw}}
-% \begin{macrocode}
-\def\frontmatter@author@produce@group{%
- \begingroup
- \let\@author@present\@author@present@group
- \frontmatter@authorformat
- \frontmatterverbose@sw{\typeout{\string\frontmatter@author@produce@group:}\say\@AAC@list\say\@AFF@list\say\@AFG@list}{}%
- \let\AU@temp\@empty
- \set@listcomma@list\AU@temp
- \def\CO@opr{\@collaboration@present\AU@temp}%
- \let\AFG@opr \affils@present@group
- \let\@listcomma\relax
- \@AFG@list
- \frontmatter@footnote@produce
- \par
- \endgroup
- \frontmatter@authorbelow
-}%
-\@provide\frontmatter@authorbelow{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\affils@present@group}
-% \changes{4.1b}{2008/08/02}{Provide for diagnostics via \cs{frontmatterverbose@sw}}
-% Alias of \cmd\AFG@opr, this procedure is used on every element of
-% \cmd\@AFG@list, the list of unique affiliation groups,
-% when formatting the author/affiliation block:
-% It presents all authors sharing this affiliation group.
-%
-% This procedure is called via the procedure
-% \cmd\frontmatter@author@produce@group, an alias for \cmd\frontmatter@author@produce,
-%
-% Its use pertains to the class options
-% \classoption{groupedaddress}, \classoption{unsortedaddress}, and \classoption{runinaddress}
-% (that is, \cmd\groupauthors@sw\ is true).
-%
-% For each invocation, the entire \cmd\@AAC@list\ is run through (twice),
-% making this process execute in $N^{2}$ time. (Is this really true?)
-% \begin{macrocode}
-\def\affils@present@group#1{%
-% \end{macrocode}
-% Count (using \cmd\@tempcnta) the authors in the author list whose affiliation group
-% matches the argument |#1|.
-%
-% Note that \cmd\AF@temp\ is used as a storage register for the argument
-% of the procedure, for purposes of comparison using \cmd\ifx.
-%
-% Note: here we use \cmd\@tempcnta\ to accumulate the number of authors in the current affiliation set.
-%
-% QUERY: do the value of \cmd\AF@temp\ and \cmd\AF@opr\ need to persist?
-%
-% QUERY: what value does \cmd\AU@opr\ have at this point?
-% ANSWER: the \cmd\@affilID@count\ and \cmd\@affilID@match\ procedures
-% assign meanings to \cmd\AU@opr\ and \cmd\CO@opr\ dynamically.
-% We initialize the two operators to \cmd\@undefined\ so as to catch the
-% pathological cases.
-% \begin{macrocode}
- \begingroup
- \def\AF@temp{#1}%
- \@tempcnta\z@
- \let\AU@opr \@undefined
- \let\CO@opr \@undefined
- \def\AF@opr{\@affilID@count\AF@temp\@tempcnta}%
- \@AAC@list
-% \end{macrocode}
-%
-% If there are no authors using this affiliation group, skip it.
-% \begin{macrocode}
- \@ifnum{\@tempcnta=\z@}{}{%
-% \end{macrocode}
-%
-% DPC: If we have a list of length two, need to locally zap a comma.
-% \begin{macrocode}
- \begingroup
- \frontmatter@above@affilgroup
- \set@listcomma@count\@tempcnta
-% \end{macrocode}
-% Run through the author list, presenting (with \cmd\@author@present)
-% those authors whose affiliation matched the given one.
-% \begin{macrocode}
- \let\AU@opr \@undefined
- \let\CO@opr \@undefined
- \def\AF@opr{\@affilID@match\AF@temp}%
- \@AAC@list
- \endgroup
-% \end{macrocode}
-% Now that the authors have all been presented, present the affiliations, grouped.
-%
-% Note: \cmd\@tempcnta\ is the number of affiliations for this set of authors.
-% \begin{macrocode}
- \begingroup
- \par
- \frontmatter@above@affiliation
- \frontmatter@affiliationfont
- \let\\\frontmatter@addressnewline
- \@tempcnta\z@
- \@tfor\AF@temp:=#1\do{%
- \expandafter\@ifx\expandafter{\expandafter\z@\AF@temp}{}{%
- \advance\@tempcnta\@ne
- }%
- }%
- \@ifnum{\@tempcnta=\tw@}{%
- \let\@listcomma\relax
- }{}%
- \def@after@address
- \runinaddress@sw{%
- }{%
- \tightenlines@sw{}{%
-% \end{macrocode}
-% The following line determines the space between affilations in grouped mode
-% \begin{macrocode}
- \parskip\z@
- }%
- \appdef\after@address\par
- }%
- \let\AFF@opr \@affil@group
- \do@affil@fromgroup\@AFF@list#1\relax
- \endgroup
-% \end{macrocode}
-% End of branch handling authors.
-% \begin{macrocode}
- }%
-% \end{macrocode}
-%
-% \begin{macrocode}
- \par
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\def@after@address}
-% \begin{macro}{\def@after@address@empty}
-% \changes{4.1c}{2008/08/04}{Parametrize the production after the address}%
-%
-% Each of these procedures assigns a meaning to \cmd\after@address, the first
-% a useful default, the second a nil.
-% A society or journal substyle may define it according to its own requirements.
-% \begin{macrocode}
-\def\def@after@address{\def\after@address{\@listcomma\ \@listand}}%
-\def\def@after@address@empty{\let\after@address\@empty}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@affilID@count}
-% \begin{macro}{\@affilID@match}
-%
-% The control sequence name \cmd\AF@opr\ is placed in the
-% author/affiliation list (\cmd\@AAC@list) for each (new) affiliation, with that affiliation as its argument.
-%
-% The control sequence name \cmd\AF@opr\ is an alias of a procedure
-% to count the number of authors at a given affiliation (\cmd\@affilID@count)
-% or to present the given authors (\cmd\@affilID@match).
-% These two procedures are executed when formatting under the \classoption{groupedaddress} class option.
-% \begin{macrocode}
-\def\@affilID@count#1#2#3{%
- \def\@tempifx{#3}%
- \@ifx{\@tempifx#1}{%
- \def\AU@opr{\@author@count#2}%
- }{%
- \let\AU@opr \@author@gobble
- }%
- \let\CO@opr \@collaboration@gobble
-}%
-\def\@affilID@match#1#2{%
- \def\@tempifx{#2}%
- \@ifx{\@tempifx#1}{%
- \let\AU@opr \@author@present
- }{%
- \let\AU@opr \@author@gobble
- }%
- \let\CO@opr \@collaboration@gobble
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\do@affil@fromgroup}
-% Executes iteratively:
-% selects the next address ID to print,
-% and then re-execute the list of addresses to print the text of that address.
-%
-% Note: an argument of \cmd\relax\ breaks out of this iteration,
-% while an argument of \cmd\z@\ (\cmd\noaffiliation) is a no-op.
-%
-% Note: we have created an $N^{2}$ computing process.
-% FIXME: can use hashing instead, you know.
-% \begin{macrocode}
-\def\do@affil@fromgroup#1#2{%
- \@ifx{\relax#2}{}{%
- \count@#2\relax
- \@ifnum{\z@=\count@}{}{#1}%
- \do@affil@fromgroup#1%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@affil@group}
-% The alias of \cmd\AFF@opr\ when the list \cmd\@AFF@list\
-% is executed by \cmd\do@affil@fromgroup\ (\classoption{groupedaddress}):
-% Print the address if its number matches \cmd\count@\ (value set by \cmd\do@affil@fromgroup).
-%
-% Note that we detect a \cmd\noaffiliation\ here by the affiliation address being
-% the same as the expansion of \cmd\blankaffiliation.
-%
-% \changes{4.1d}{2008/10/17}{(AO, 410) compare \cs{@tempa} to \cs{blankaffiliation}.}%
-%
-% I made a mistake when coding the comparison to \cmd\blankaffiliation:
-% it originally read \cmd\@ifx\{\#3\cmd\blankaffiliation\}.
-% This is obviously wrong once you think twice.
-% \begin{macrocode}
-\def\@affil@group#1#2#3#4{%
- \@ifnum{#1=\count@}{%
- \def\@tempa{#3}%
- \@ifx{\@tempa\blankaffiliation}{}{%
- #3%
- \@if@empty{#4}{}{%
- \frontmatter@footnote{#4}%
- }%
- \after@address
- }%
- \advance\@tempcnta\m@ne
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@author@present@group}
-% \begin{macro}{\@affil@present@group}
-% \changes{4.0d}{1998/01/31}{\cs{comma@space}}
-% This version of \cmd\AU@opr\ applies to the \classoption{groupedaddress} class option and its ilk.
-% Traverse the list calling the \cmd\doauthor\ hook on each author.
-%
-% The third argument of \cmd\doauthor\ fulfills the requirement that it
-% queue up a boolean via \cmd\aftergroup.
-% \begin{macrocode}
-\def\@author@present@group#1#2#3{%
- \gdef\comma@space{\gdef\comma@space{\textsuperscript{,\,}}}%
- \doauthor{#2}{#3}{\@affil@present@group}%
- \advance\@tempcnta\m@ne
-}%
-\def\@affil@present@group{%
- \aftergroup\false@sw
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\@pacs@produce}
-% PACS, keywords and dates.
-% \changes{4.0d}{1998/01/31}{PACS boxed to width of abstract}
-% \changes{4.0b}{1999/06/20}{Separate option now controls production}
-% \changes{4.0e}{2000/09/20}{Warn if no production}
-% \begin{macrocode}
-\def\@pacs@produce#1{%
- \showPACS@sw{%
- \begingroup
- \frontmatter@PACS@format
- \@pacs@name#1\par
- \endgroup
- }{%
- \@if@empty{#1}{}{%
- \class@warn{\PACS@warn}%
- }%
- }%
-}%
-\def\PACS@warn{If you want your PACS to appear in your output, use document class option showpacs}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@keywords@produce}
-% \changes{4.0e}{2000/09/20}{Keywords on same footing as PACS}
-% \begin{macrocode}
-\def\@keywords@produce#1{%
- \showKEYS@sw{%
- \begingroup
- \frontmatter@keys@format
- \@keys@name#1\par
- \endgroup
- }{%
- \@if@empty{#1}{}{%
- \class@warn{If you want your keywords to appear in your output, use document class option showkeys}%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@footnote@produce@footnote}
-% \begin{macro}{\frontmatter@footnote@produce@endnote}
-% Produce any footnotes to appear at the bottom of the title page.
-%
-% If frontmatter footnotes have been redirected to the bibliography, this will be a no-op.
-% ref.: \cmd\present@bibnote.
-% \begin{macrocode}
-\def\frontmatter@footnote@produce@footnote{%
- \let\@TBN@opr\present@FM@footnote
- \@FMN@list
- \global\let\@FMN@list\@empty
-}%
-% \end{macrocode}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
-\def\present@FM@footnote#1#2{%
- \begingroup
- \csname c@\@mpfn\endcsname#1\relax
- \def\@thefnmark{\frontmatter@thefootnote}%
- \frontmatter@footnotetext{#2}%
- \endgroup
-}%
-\def\frontmatter@footnote@produce@endnote{%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \section{Package defaults}
-%
-% \begin{macro}{\title@column}
-% \begin{macro}{\preprintsty@sw}
-% \begin{macro}{\collaboration@sw}
-% \begin{macro}{\frontmatter@footnote@produce}
-% \begin{macro}{\do@output@MVL}
-% \begin{macro}{\comma@space}
-% We give meanings to the Booleans and other macros that a client document class would
-% set on our behalf.
-% \begin{macrocode}
-\appdef\frontmatter@init{%
- \@ifxundefined\title@column {\let\title@column\@empty}{}%
- \@ifxundefined\preprintsty@sw {\@booleanfalse\preprintsty@sw}{}%
- \@ifxundefined\frontmatter@footnote@produce{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote}{}%
- \@ifxundefined\do@output@MVL {\let\do@output@MVL\@firstofone}{}%
- \@ifxundefined\comma@space {\let\comma@space\@empty}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@thefootnote}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% In the title block, the footnote symbol (used for alternate affiliation and sundry)
-% is a \cmd\@fnsymbol\ or a lowercase letter, as selected by a boolean.
-% The society or journal may override this definition.
-% \begin{macrocode}
-\def\frontmatter@thefootnote{%
- \altaffilletter@sw{\@alph}{\@fnsymbol}{\csname c@\@mpfn\endcsname}%
-}%
-\@ifx{\altaffilletter@sw\@undefined}{\@booleantrue\altaffilletter@sw}{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@makefnmark}
-% The default procedure for setting the footnote mark within the frontmatter.
-% A client may override this procedure.
-% \begin{macrocode}
-\def\frontmatter@makefnmark{%
- \@textsuperscript{%
- \normalfont\@thefnmark
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@makefntext}
-% This procedure is used when setting footnotes within the title block.
-%
-% Note that we are \classname{hyperref} friendly: we invoke \cmd\Hy@raisedlink\
-% so that this footnote becomes a hypertext anchor. If \classname{hyperref} is
-% not loaded, then \classname{ltxutil} has our act covered via some stubs.
-%
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
-\long\def\frontmatter@makefntext#1{%
- \parindent 1em
- \noindent
- \Hy@raisedlink{\hyper@anchorstart{frontmatter.\expandafter\the\csname c@\@mpfn\endcsname}\hyper@anchorend}%
- \@makefnmark
- #1%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@setup}
-% The default type specification for the title page.
-% Clients will override this definition.
-% \begin{macrocode}
-\def\frontmatter@setup{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@RRAPformat}
-% \begin{macro}{\punct@RRAP}
-% \begin{macro}{\produce@RRAP}
-% The procedure \cmd\frontmatter@RRAPformat\ is the formatting procedure
-% for the ``Received, Revised, etc.'' block on the title page.
-% The macro \cmd\punct@RRAP\ produces the punctuation between the entries.
-% Clients will override these two definitions.
-%
-% The procedure \cmd\produce@RRAP\ is fairly general, and should be used by most
-% journal substyles.
-%
-% The procedure \cmd\frontmatter@RRAP@format\ will be overridden by the journal.
-% \begin{macrocode}
-\def\frontmatter@RRAPformat#1{%
- \removelastskip
- \begingroup
- \frontmatter@RRAP@format
- #1\par
- \endgroup
-}%
-\def\punct@RRAP{; }%
-\def\produce@RRAP#1{%
- \@if@empty{#1}{}{%
- \@ifvmode{\leavevmode}{\unskip\punct@RRAP\ignorespaces}%
- #1%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@authorformat}
-% The default type specification for the author list.
-% Clients will override this definition.
-% For one alternative, see the \classname{revtex4} document class.
-% \begin{macrocode}
-\def\frontmatter@authorformat{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affilgroup}
-% The default amount of space above an affiliation group
-% (in a \cmd\affils@present@group\ production).
-% Clients will override this definition.
-% \begin{macrocode}
-\def\frontmatter@above@affilgroup{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affiliation}
-% \begin{macro}{\frontmatter@above@affiliation@script}
-% The \cmd\frontmatter@above@affiliation\ is the amount of space above affiliations in the \classoption{groupedaddress}
-% style, and \cmd\frontmatter@above@affiliation@script\ is that for \classoption{superscriptaddress}.
-% Clients will override this definition.
-% For one alternative, see the \classname{revtex4} document class.
-% \begin{macrocode}
-\def\frontmatter@above@affiliation{}%
-\def\frontmatter@above@affiliation@script{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@affiliationfont}
-% The default type specification for the affiliation.
-% Clients will override this definition.
-% For one alternative, see the \classname{revtex4} document class, where
-% several alternative definitions are made.
-% \begin{macrocode}
-\def\frontmatter@affiliationfont{\itshape\selectfont}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@RRAP@format}
-% The default type specification for the dates.
-% Clients will override this definition.
-% \begin{macrocode}
-\def\frontmatter@RRAP@format{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@PACS@format}
-% Specify the formatting of the title page PACS statement.
-%
-% Journals will override.
-% \begin{macrocode}
-\def\frontmatter@PACS@format{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@keys@format}
-% Specify the formatting of the title page keywords statement.
-%
-% Journals will override.
-% \begin{macrocode}
-\def\frontmatter@keys@format{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@finalspace}
-%
-% \begin{macrocode}
-\def\frontmatter@finalspace{\addvspace{18\p@}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@addressnewline}
-% \changes{4.0h}{1998/06/25}{new hook}
-% The definition of \cmd\\\ for address handling. Default puts all the `lines'
-% on a run-in line, separated by comma and space.
-% DPC: was \newline space between lines of addresss.
-% \begin{macrocode}
-\def\frontmatter@addressnewline{%
- \@ifhmode{\skip@\lastskip\unskip\unpenalty\break\hskip\skip@}{}%
- % was: \vskip-.5ex
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\frontmatter@preabstractspace}
-% \begin{macro}{\frontmatter@postabstractspace}
-% Space above and space below abstract in title block
-% \begin{macrocode}
-\def\frontmatter@preabstractspace{5.5\p@}
-\def\frontmatter@postabstractspace{6.5\p@}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\aftermaketitle@chk}
-% Error-checking code.
-% \begin{macrocode}
-\def\aftermaketitle@chk#1{%
- \@ifx{\maketitle\relax}{%
- \class@err{\protect#1 must be used before \protect\maketitle}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ps@titlepage}
-% Default page style for title page.
-% Journals will override this procedure.
-% \begin{macrocode}
-\def\ps@titlepage{\ps@empty}%
-% \end{macrocode}
-% \end{macro}
-%
-%FIXME: there is a limitation to the default meaning of
-% \cmd\@startpage: the label ``FirstPage'' is only
-% defined if the document has a \cmd\maketitle\ command.
-%
-% \begin{macrocode}
-\def\volumeyear#1{\gdef\@volumeyear{#1}}%
-\def\@volumeyear{}%
-\def\volumenumber#1{\gdef\@volumenumber{#1}}%
-\def\@volumenumber{}%
-\def\issuenumber#1{\gdef\@issuenumber{#1}}%
-\def\@issuenumber{}%
-\def\eid#1{\gdef\@eid{#1}}%
-\def\@eid{}%
-%
-\def\startpage#1{\gdef\@startpage{#1}\c@page#1\relax}%
-\def\@startpage{\pageref{FirstPage}}%
-\def\endpage#1{\gdef\@endpage{#1}}%
-\def\@endpage{\pageref{LastPage}}%
-% \end{macrocode}
-%
-%
-% \subsection{Printing out the ``list-of'' elements}%
-%
-% FIXME: The \cmd\appendix@toc\ procedure should change the meaning
-% of \cmd\l@section\ so that the \cmd\section s can be appropriately formatted,
-% reflecting their status as appendices.
-%
-% \begin{macrocode}
-\def\print@toc#1{%
- \begingroup
- \expandafter\section
- \expandafter*%
- \expandafter{%
- \csname#1name\endcsname
- }%
- \let\appendix\appendix@toc
- \@starttoc{#1}%
- \endgroup
-}%
-\def\appendix@toc{}%
-% \end{macrocode}
-%
-% \begin{macro}{\Dated@name}
-% \begin{macro}{\Received@name}
-% \begin{macro}{\Revised@name}
-% \begin{macro}{\Accepted@name}
-% \begin{macro}{\Published@name}
-% These strings are used in the \cmd\date, et al. commands.
-% \begin{macrocode}
-\def\Dated@name{Dated }%
-\def\Received@name{Received }%
-\def\Revised@name{Revised }%
-\def\Accepted@name{Accepted }%
-\def\Published@name{Published }%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \changes{4.1g}{2009/10/05}{(AO, 539) Robustify \cs{class@warn} against TOC processing}%
-% Two commands require robustifying against harsh treatment when TOC entries are written out.
-% Note that \cmd\class@warn\ is not user-level markup, but crops up when
-% the \cmd\title\ command is missing from the document.
-% \begin{macrocode}
-\appdef\robustify@contents{%
- \let\thanks\@gobble\let\class@warn\@gobble
- \def\begin{\string\begin}\def\end{\string\end}%
-}%
-% \end{macrocode}
-%
-% \subsection{Syntax switch}%
-% \changes{4.1b}{2008/08/02}{Make the syntax of this package switch optional}%
-%
-% Shall we take over the syntax of \LaTeX?
-% By default, Yes, unless the Boolean below has already been defined.
-% In the package version, this is controlled by an option;
-% in the kernel version, the Boolean remains undefined.
-%
-% \cmd\maketitle\ presents a complication. If this code will execute under
-% \classname{ltxgrid}, then its version of the procedure will do fine.
-%
-% As a package, under \classname{article}, things are different.
-% In this case, what should be done depends upon \cmd\if@titlepage.
-% If true, then just execute \cmd\maketitle\ as it stands.
-% If false, then the \classname{article} class has defined its wrapper
-% procedure, and we should take over the meaning of \cmd\@maketitle\ instead.
-%
-% Here is a list of the commands defined by this package that potentially override
-% those of standard \LaTeX:
-% \cmd\frontmatter@title,
-% \cmd\frontmatter@author,
-% \cmd\frontmatter@and,
-% \cmd\frontmatter@thanks,
-% \cmd\frontmatter@date,
-% \env{frontmatter@abstract},
-% \env{frontmatter@titlepage},
-% \cmd\frontmatter@maketitle.
-%
-% The following code will perform that override, given the appropriate state of the Boolean.
-% \begin{macrocode}
-\@ifxundefined\frontmatter@syntax@sw{\@booleantrue\frontmatter@syntax@sw}{}%
-\frontmatter@syntax@sw{%
- \let\title \frontmatter@title
- \let\author \frontmatter@author
- \let\date \frontmatter@date
- \@ifxundefined\@maketitle{%
- \let\maketitle \frontmatter@maketitle
- \@booleantrue \titlepage@sw
- }{%
- \let\@maketitle \frontmatter@maketitle
- \prepdef\maketitle\@author@finish
- }%
- \let\noaffiliation \frontmatter@noaffiliation
- \let\thanks@latex \thanks
- \let\thanks \frontmatter@thanks
- \let\and@latex \and
- \let\and \frontmatter@and
- \let@environment{titlepage}{frontmatter@titlepage}%
- \let@environment{abstract}{frontmatter@abstract}%
-}{%
- \let\noaffiliation\@empty
-}%
-% \end{macrocode}
-%
-% \subsection{End of the \file{ltxfront} kernel}
-% The kernel portion of the \classname{ltxfront} package is complete.
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% \subsection{Remainder of the \classname{ltxfront} package}
-%
-% Include any code here that ought to be incorporated into the package,
-% but should not be part of the kernel.
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-% Define formatting as like as possible to the article class.
-% Comands that prepare for \cmd\maketitle: \cmd\author, \cmd\title, \cmd\date.
-%
-% Argument of the above three may contain \cmd\\ and \cmd\thanks; argument of \cmd\author may contain \cmd\and.
-% The \cmd\\ may still work fine; \cmd\and\ will be ignored (warning);
-% \cmd\thanks\ even though it should not reside in the argument, will work.
-%
-% An explicit \cmd\footnote should be treated as if it were \cmd\thanks.
-%
-% \begin{verbatim}
-% \@maketitle: \frontmatter@footnote@produce
-% \end{verbatim}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-%
-% \begin{macrocode}
-\def\thanks@latex#1{%
- \footnotemark
- \expandafter\expandafter
- \expandafter\gappdef
- \expandafter\expandafter
- \expandafter\@thanks
- \expandafter\expandafter
- \expandafter{%
- \expandafter\expandafter
- \expandafter\footnotetext
- \expandafter\expandafter
- \expandafter[%
- \expandafter\the\csname c@\@mpfn\endcsname]{#1}}%
-}%
-\@booleanfalse\altaffilletter@sw
-\@if@sw\if@titlepage\fi{\@booleantrue}{\@booleanfalse}\titlepage@sw
-\def\frontmatter@title@above{\newpage\null\vskip2em\relax}%
-\def\frontmatter@title@format{\centering\LARGE\let\thanks\thanks@latex}%
-\def\frontmatter@title@below{\vskip1.5em\relax}%
-\def\frontmatter@authorformat{\centering\large\advance\baselineskip\p@\parskip11.5\p@\let\thanks\thanks@latex\let\and\and@space}%
-\def\frontmatter@authorbelow{\vskip 1em\relax}%
-\def\frontmatter@above@affiliation{}%
-\def\frontmatter@above@affiliation@script{}%
-\def\frontmatter@affiliationfont{\centering\itshape}%
-\def\frontmatter@RRAP@format{\centering\large}%
-\def\frontmatter@preabstractspace{1.5em}%
-% \end{macrocode}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \begin{macrocode}
-\long\def\frontmatter@footnotetext{%
- \expandafter\expandafter
- \expandafter\footnotetext
- \expandafter\expandafter
- \expandafter[%
- \expandafter\the\csname c@\@mpfn\endcsname]%
-}%
-\def\and@space{\\}%
-\def\andname{and}%
-% \end{macrocode}
-% Implement the feature of the article class whereby there is a default \cmd\@date, left over
-% from the \LaTeX\ kernel.
-% This package does not have a default date. The user must put in an explicit command, like
-% \cmd\date\arg{\cmd\today}, which will retore \LaTeX's default behavior.
-%
-% What if the abstract environment falls after the \cmd\maketitle\ command?
-% The environment will be undefined; the user will have to deal with this.
-% \begin{macrocode}
-% \end{macrocode}
-% End of the package.
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-% \Finale
-% %Here ends the programmer's documentation.
-% \endinput
-%
-\endinput
-%%EOF