diff options
Diffstat (limited to 'macros/latex/contrib/revtex/source/ltxfront.dtx')
-rw-r--r-- | macros/latex/contrib/revtex/source/ltxfront.dtx | 3763 |
1 files changed, 0 insertions, 3763 deletions
diff --git a/macros/latex/contrib/revtex/source/ltxfront.dtx b/macros/latex/contrib/revtex/source/ltxfront.dtx deleted file mode 100644 index e1b3582184..0000000000 --- a/macros/latex/contrib/revtex/source/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.2f", -%%% date = "2022/06/05", -%%% 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> - [2022/06/05 4.2f 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 |