summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/revtex/source
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-03 03:01:14 +0000
committerNorbert Preining <norbert@preining.info>2023-06-03 03:01:14 +0000
commit644a486a866b7bcbf8fccb37cf6f88a36897deb0 (patch)
treeb8593330c0b54d298644dacf70e3b79918acf6b2 /macros/latex/contrib/revtex/source
parentde88ff1738cd9e29da5d2ce94b53d9035d9be6a4 (diff)
CTAN sync 202306030301
Diffstat (limited to 'macros/latex/contrib/revtex/source')
-rw-r--r--macros/latex/contrib/revtex/source/aip4-2.dtx4233
-rw-r--r--macros/latex/contrib/revtex/source/ltxdocext.dtx1259
-rw-r--r--macros/latex/contrib/revtex/source/ltxfront.dtx3763
-rw-r--r--macros/latex/contrib/revtex/source/ltxgrid.dtx6849
-rw-r--r--macros/latex/contrib/revtex/source/ltxutil.dtx4461
-rw-r--r--macros/latex/contrib/revtex/source/revtex-bst.dtx3873
-rw-r--r--macros/latex/contrib/revtex/source/revtex4-2.dtx8384
7 files changed, 0 insertions, 32822 deletions
diff --git a/macros/latex/contrib/revtex/source/aip4-2.dtx b/macros/latex/contrib/revtex/source/aip4-2.dtx
deleted file mode 100644
index af7c9d8a67..0000000000
--- a/macros/latex/contrib/revtex/source/aip4-2.dtx
+++ /dev/null
@@ -1,4233 +0,0 @@
-% \iffalse meta-comment
-% aip4-2.dtx: package to change page grid, MVL.
-% Copyright (c) 2019 American Institute of Physics
-% mailto:tex@aip.org
-%
-% 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
-% changes for version 4.2d--4.2f by Phelype Oleinik.
-%
-% Version (4.2f)
-% Modified by Aptara
-%
-% This work consists of the main source file aip4-2.dtx
-% and the derived files
-% aip.rtx, aip.pdf, aip.ins, aip.drv.
-% Distribution:
-% CTAN:macros/latex/contrib/aip/
-%
-% Unpacking:
-% tex aip4-2.dtx
-%
-% Documentation:
-% latex aip4-2.dtx; ...
-%
-% Programm calls to get the documentation (example):
-% pdflatex aip4-2.dtx
-% makeindex -s gind.ist aip
-% makeindex -s gglo.ist -o aip.gls aip.glo
-% pdflatex aip4-2.dtx
-% makeindex -s gind.ist aip
-% pdflatex aip4-2.dtx
-%
-% Installation:
-% TDS:bibtex/bst/aip/
-% TDS:doc/latex/aip/
-% TDS:source/latex/aip/
-% TDS:tex/latex/aip/
-%
-% 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 aip4-2.dtx when run through LaTeX or TeX.
-%% This file requires docstrip version 2.4 or higher available from
-%% ftp://ctan.tug.org/tex-archive/macros/latex/unpacked/docstrip.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-AIP.
-
-Copyright (c) 2019--2022 American Institute of Physics.
-mailto:tex@aip.org
-
-Maintained by Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net)
-under contract to American Institute of Physics
-
-Version (4.2c)
-Modified by Aptara
-under contract to American Institute of Physics
-
-Version (4.2d--4.2f)
-Modified by Phelype Oleinik for the American Physical Society (mailto:phelype.oleinik at latex-project.org)
-
-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}
-% \file{aip.ins}{\from{aip4-2.dtx}{install}}%
-% \file{aip.drv}{\from{aip4-2.dtx}{driver}}%
-% \usedir{tex/latex/aip}%
- \file{aip4-2.rtx}{\from{aip4-2.dtx}{package}}%
- \file{aapm4-2.rtx}{\from{aip4-2.dtx}{aapm}}%
- \file{sor4-2.rtx}{\from{aip4-2.dtx}{sor}}%
- }%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* aip.rtx}
-\Msg{* into a directory searched by TeX;}
-\Msg{* in a TDS-compliant installation:}
-\Msg{* texmf/tex/macros/latex/aip/.}
-\Msg{*}
-\Msg{* To produce the documentation,
- run aip4-2.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{aip4-2.dtx}
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
-%
-% \StopEventually{}
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "aip4-2.dtx",
-%%% version = "4.2f",
-%%% date = "2022/06/05",
-%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% Phelype Oleinik (mailto:phelype.oleinik at latex-project.org),
-%%% commissioned by the American Institute of Physics.
-%%% ",
-%%% copyright = "Copyright (C) 2019--2022 American Institute of Physics,
-%%% distributed under the terms of the
-%%% LaTeX Project Public License 1.3c, see
-%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
-%%% ",
-%%% address = "AIP Journal Program
-%%% American Institute of Physics,
-%%% Suite 1NO1, 2 Huntington Quadrangle,
-%%% Melville, NY 11747 USA",
-%%% telephone = "",
-%%% FAX = "",
-%%% email = "mailto colon tex at aip.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "latex, page grid, main vertical list",
-%%% supported = "yes",
-%%% abstract = "aip substyle for REVTeX",
-%%% }
-%</package>
-% \fi
-%
-% \iffalse ltxdoc klootch
-% The following references the \file{README-AIP} 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-AIP}" to locate it.
-% \fi\input{README-AIP}%
-%
-% \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}
-%aip4-2.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{latex aip4-2.dtx}}%
-% Typesetting the source file under \LaTeX\
-% generates the readme and the installer.
-%\begin{verbatim}
-%README aip.ins
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex aip4-2.dtx}}%
-% Typesetting the installer generates
-% the package files.
-%\begin{verbatim}
-%aip.rtx
-%\end{verbatim}
-%
-% \subsubsection{Documentation}%
-% The following are the online documentation:
-% \begin{verbatim}
-%aip.pdf
-% \end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}
-%aip.aux aip.idx aip.ind aip.log aip.toc
-% \end{verbatim}
-%
-% \section{Code common to all modules}%
-%
-% The following may look a bit klootchy, but 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}
-%<*driver|package|aapm|sor>
-\NeedsTeXFormat{LaTeX2e}[1996/12/01]%
-%</driver|package|aapm|sor>
-% \end{macrocode}
-% As desired, the following modules all
-% take common version information:
-% \begin{macrocode}
-%<package>\ProvidesFile{aip4-2.rtx}%
-%<aapm>\ProvidesFile{aapm4-2.rtx}%
-%<sor>\ProvidesFile{sor4-2.rtx}%
-%<*driver>
-\expandafter\ProvidesFile\expandafter{\jobname.dtx}%
-%</driver>
-% \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}
-%<*driver|package>
-%<version>
- [2022/06/05 4.2f AIP substyle for REVTeX]% \fileversion
-%</driver|package>
-% \end{macrocode}
-%
-%
-% \section{The driver module \texttt{driver}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{.ins} installer and \file{README-AIP} as required.
-%
-% Because the only uncommented-out lines of code at the beginning of
-% this file constitute the \file{driver} module itself,
-% we can simply typeset the \file{.dtx} file directly,
-% and there is thus rarely any need to
-% generate the ``driver'' {\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}
-%<*driver>
-% \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}%
-\gdef\lquote{`}\gdef\rquote{'}%
-\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist aip
-\RecordChanges % makeindex -s gglo.ist -o aip.gls aip.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.
-%
-%\changes{4.1b}{2008/08/06}{Beta candidate b}
-% \begin{macrocode}
-\begin{filecontents*}{README-AIP}
-\title{%
- The \classname{aip} substyle for REV\TeX%
- \protect\thanks{%
- \fileversion\ \copyright 2009 American Institute of Physics
- % For version number and date,
- % search on "\fileversion" in the .dtx file,
- % or see the end of the README file.
- }%
-}%
-
-\author{%
-Arthur Ogawa\thanks{mailto:arthur\_ogawa at sbcglobal.net}%
-}%
-\date{Version \fileversion, dated \filedate}%
-\maketitle
-
-This file embodies the implementation of the
-AIP journal substyles for APS's \revtex\ 4.2 document class
-for electronic submissions to AIP journals.
-
-The distribution point for this work is
-\url{http://publishing.aip.org/authors/preparing-your-manuscript}.
-The archive contains ready-to-Install files, documentation, and full source.
-
-This package is also distributed via CTAN:
-\url{http://www.ctan.org/pub/tex-archive/macros/latex/contrib/aip}, and as a ready-to-install image as
-\url{http://www.ctan.org/pub/tex-archive/install/macros/latex/contrib/aip.tds.zip}.
-
-The \classname{aip} package was commissioned by the American Institute of Physics
-and is distributed under the terms of the \LaTeX\ Project Public License,
-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{aip.rtx}
-into a location in your filesystem where it will be found by \LaTeX.
-
-To use, read the user documentation \file{auguide.pdf}.
-
-\tableofcontents
-
-\section{Overview}%
-\revtex\ is a \LaTeXe\ document class, somewhat like a hybrid of
-the standard \LaTeX\ \classname{book} and \classname{article} classes.
-
-This document class implements the AIP society and journal substyles:
-the journals represent a set of mutually exclusive class options that, in this case, allow the
-document class to address multiple journals within the AIP family.
-This society is obtained with class option \classoption{aip}.
-
-\section{Processing Instructions}
-
-The package file \file{aip.rtx}
-is generated from this file, \file{aip4-2.dtx},
-using the {\sc docstrip} facility of \LaTeX
-via |tex aip4-2.dtx|.
-The typeset documentation that you are now reading is generated from
-the same file by typesetting it with \LaTeX\ or pdftex
-via |latex aip4-2.dtx| or |pdflatex aip4-2.dtx|.
-
-\subsection{Build Instructions}
-
-You may bootstrap this suite of files solely from \file{aip4-2.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{aip4-2.dtx} with \LaTeX\ or pdflatex;
-you will obtain the typeset documentation you are now reading,
-along with
-the installer \file{aip.ins},
-and the file \file{README-AIP}.
-
-Note: you will have to run \LaTeX\ twice, then \file{makeindex}, then
-\LaTeX\ again in order to obtain a valid index and table of contents.
-\item
-Now typeset \file{aip4-2.dtx} with \TeX (not \LaTeX),
-thereby generating the package file \file{aip.rtx}.
-\item
-Install \classname{aip.rtx}
-by moving it to a location
-in your filesystem where it will be found by \LaTeX,
-like \file{tex/latex/aip}.
-\item
-Install \classname{aip.pdf}
-by moving it to
-\file{doc/latex/aip}.
-\item
-Using the \file{.dbj} information herein,
-generate the needed \file{.bst} files and install them in
-\file{bibtex/bst/aip}.
-\end{enumerate}
-\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}%
-\newcommand\revtex{REV\TeX}%
-\expandafter\DocInput\expandafter{\jobname.dtx}%
-% ^^A\PrintChanges
-\end{document}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</driver>
-% \end{macrocode}
-%
-% \section{AIP: A set of journal-specifc extensions to \revtex}
-%
-% To create a journal substyle, you create
-% a \file{.rtx} file, in our case \file{aip.rtx}.
-% Within that file, you override procedures and parameter assignments as you see fit.
-% Ideally they will be generally applicable to all of that society's
-% journals (see the file \file{aps.rtx} for a realization of this scheme).
-% Also within that file, you include a
-% section of code for each journal, that for JMP looks like:
-% \begin{verbatim}
-% \@ifx{\@journal\journal@jmp}{%
-% <code specific to the JMP>
-% }{}%
-% \end{verbatim}
-%
-% \section{The \classoption{aip} class option: the \texttt{aip} module}
-% The file \file{aip.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@society\ has the value \classoption{aip}.
-%
-% Here, code specific to AIP journals appears.
-%
-% We first give some text entities (amounting to journal abbreviations),
-% then some AIP-specific initialisations,
-% then code for particular AIP journals.
-% In the latter case, the choice is
-% keyed off the macro \cmd\@journal.
-%
-% Note on \cmd\AtEndOfClass:
-% this file, like all journal substyles, is read in at \cmd\AtEndOfClass\ time,
-% so you should not use this command in this file.
-% Note for \LaTeX\ developers: It would be an improvement in \LaTeX\ to
-% \cmd\let\cmd\AtEndOfClass\ to something like \cmd\@firstofone.
-% This change would be effected in \cmd\@onefilewithoptions.
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \subsection{Defend Against Forseeable Errors}%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX society AIP selected}%
-% \end{macrocode}
-%
-% \subsection{Substyle Options}%
-%
-% Here are the class options relating to the AIP:
-% \begin{macrocode}
-\DeclareOption{jcp}{\change@journal{jcp}}%
-\DeclareOption{pop}{\change@journal{pop}}%
-\DeclareOption{rsi}{\change@journal{rsi}}%
-\DeclareOption{jap}{\change@journal{jap}}%
-\DeclareOption{apl}{\change@journal{apl}}%
-\DeclareOption{apm}{\change@journal{apm}}%
-\DeclareOption{cha}{\change@journal{cha}}%
-\DeclareOption{pof}{\change@journal{pof}}%
-\DeclareOption{bmf}{\change@journal{bmf}}%
-\DeclareOption{rse}{\change@journal{rse}}%
-\DeclareOption{jmp}{\change@journal{jmp}}%
-\DeclareOption{adv}{\change@journal{adv}}%
-\DeclareOption{sd}{\change@journal{sd}}%
-\DeclareOption{jor}{\change@journal{jor}}%
-\DeclareOption{cp}{\change@journal{cp}}%
-% \end{macrocode}
-%
-% \subsection{Abbreviations}%
-% \changes{4.1p}{2010/02/24}{(AO, 584) Per MD, remove trailing space character from each journal abbreviation: it had caused an extraneous space in the .bbl}
-% The following macros constitute typing shortcuts for
-% certain journal names.
-% \begin{macrocode}
-\def\adv{AIP Advances}%
-\def\ao{Appl.\ Opt.}%
-\def\ap{Appl.\ Phys.}%
-\def\apl{Appl.\ Phys.\ Lett.}%
-\def\apm{Appl.\ Phys.\ Lett.\ Mater.}%
-\def\apj{Astrophys.\ J.}%
-\def\bell{Bell Syst.\ Tech.\ J.}%
-\def\bmf{Biomicrofluidics}%
-\def\cha{Chaos}%
-\def\jqe{IEEE J.\ Quantum Electron.}%
-\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.}%
-\def\aprop{IEEE Trans.\ Antennas Propag.}%
-\def\mtt{IEEE Trans.\ Microwave Theory Tech.}%
-\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.}%
-\def\jcp{J.\ Chem.\ Phys.}%
-\def\jap{J.\ Appl.\ Phys.}%
-\def\jmp{J.\ Math.\ Phys.}%
-\def\jmo{J.\ Mod.\ Opt.}%
-\def\josa{J.\ Opt.\ Soc.\ Am.}%
-\def\josaa{J.\ Opt.\ Soc.\ Am.\ A}%
-\def\josab{J.\ Opt.\ Soc.\ Am.\ B}%
-\def\jpp{J.\ Phys.\ (Paris)}%
-\def\jpr{J.\ Phys.\ Chem.\ Ref.\ Data}%
-\def\ltp{Low.\ Temp.\ Phys.}%
-\def\nat{Nature (London)}%
-\def\oc{Opt.\ Commun.}%
-\def\ol{Opt.\ Lett.}%
-\def\pl{Phys.\ Lett.}%
-\def\pop{Phys.\ Plasmas}%
-\def\pof{Phys.\ Fluids}%
-\def\pra{Phys.\ Rev.\ A}%
-\def\prb{Phys.\ Rev.\ B}%
-\def\prc{Phys.\ Rev.\ C}%
-\def\prd{Phys.\ Rev.\ D}%
-\def\pre{Phys.\ Rev.\ E}%
-\def\prl{Phys.\ Rev.\ Lett.}%
-\def\rmp{Rev.\ Mod.\ Phys.}%
-\def\rsi{Rev.\ Sci.\ Instrum.}%
-\def\rse{J.\ Renewable Sustainable Energy}%
-\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}%
-\def\sjqe{Sov.\ J.\ Quantum Electron.}%
-\def\vr{Vision Res.}%
-\def\sd{Structural\ Dynamics}%
-\def\jor{J.\ Rheol.}%
-\def\cp{AIP\ Conference\ Proceedings}%
-% \end{macrocode}
-%
-% Option allowing for ``numerical author-year'' bibliography.
-% \begin{macrocode}
-\DeclareOption{author-numerical}{%
- \@booleantrue\authoryear@sw
- \@booleantrue\authornum@sw
-}%
-% \end{macrocode}
-%
-% Optionally allow article title in bibliography entries.
-% A new switch is defined here: \cmd\aip@jtitx@sw\ signifies that
-% the numbered style bibliography is to be prepared without article titles in @ARTICLE entries.
-% Otherwise, such titles are incorporated if present in the \file{.bib} entry.
-% By default, exclude the article titles.
-% \begin{macrocode}
-\DeclareOption{article-title}{%
- \@booleanfalse\aip@jtitx@sw
-}%
-\@booleantrue \aip@jtitx@sw
-% \end{macrocode}
-%
-% Establish default options for this society.
-%
-% \begin{macrocode}
-\@booleanfalse\authoryear@sw
-\@booleanfalse\authornum@sw
-\@booleanfalse\onecolumn@sw
-\@booleanfalse\newonecolumn@sw
-% \end{macrocode}
-%
-% \begin{macro}{\@bibdataout@init}
-% \begin{macro}{\@bibdataout@aip}
-% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
-% Procedure \cmd\@bibdataout@aip\ has the job of writing the control record into the
-% job's \cmd\jobname\filename{.bib} file, where it will adjust the options to \filename{.bst} processing.
-% It is installed into the initialization procedure \cmd\@bibdataout@init, and its meaning
-% is set by the society (AIP) and journal.
-%
-% \begin{macrocode}
-\appdef\@bibdataout@rev{\@bibdataout@aip}%
-\def\@bibdataout@aip{%
- \immediate\write\@bibdataout{%
-% \end{macrocode}
-% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
-% \begin{macrocode}
- @CONTROL{%
- aip41Control%
-% \end{macrocode}
-% Say whether we want long bibliography style (the default), or the abbreviated style.
-% \begin{macrocode}
- \longbibliography@sw{\true@sw}{\aip@jtitx@sw{\false@sw}{\true@sw}}%
- {%
- ,pages="1",title="0"%
- }{%
- ,pages="0",title=""%
- }%
- }%
- }%
-% \end{macrocode}
-% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
-% \begin{macrocode}
- \if@filesw
- \immediate\write\@auxout{\string\citation{aip41Control}}%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% For AIP, the preprint style \classoption{preprint} is the default.
-% \begin{macrocode}
-\@booleantrue\preprintsty@sw
-% \end{macrocode}
-%
-% \begin{macro}{\showPACS@sw}
-% \begin{macro}{\showKEYS@sw}
-% If \cmd\showPACS@sw\ is true, print the PACS information in the title block,
-% otherwise not.
-% Similarly for \cmd\showKEYS@sw\ and the keywords.
-% \begin{macrocode}
-\@booleantrue\showPACS@sw
-\@booleantrue\showKEYS@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\refname}
-%
-% In reprint style only, we eliminate the head above the bibliography.
-% \begin{macrocode}
-% TeXSupport
-\let\old@refname\refname
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\@empty
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{AIP Setup}%
-% Here we define the default procedures for AIP journals.
-% Individual AIP journals may override these definitions.
-%
-% \subsubsection{Running header and footer}%
-%
-% Page style for all AIP journals.
-% We assert our own page style only if nobody else has done so.
-% Users wishing to customize their documents will be able to invoke a \cmd\pagestyle\
-% command anywhere in the preamble.
-%FIXME: \cmd\preprintsty@sw\ is defined?
-% \begin{macrocode}
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \ps@preprint
- }{%
- \ps@article
- }%
-}%
-% \end{macrocode}
-%
-% The spc says: ``Running title must be provided on title page'',
-% and that journal classes 1b and 2 have no running title.
-% \begin{macrocode}
-\def\ps@preprint{%
- \def\@oddhead{\@runningtitle\hfil}%
- \def\@evenhead{\@runningtitle\hfil}%
- \def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
- \def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil\@runningtitle}%
- \def\@oddhead{\let\\\heading@cr\@runningtitle\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\@runningtitle{\@shorttitle}%
-% \end{macrocode}
-%
-% \subsubsection{Title block}%
-%
-% The specifics of the title block.
-% Apply to all AIP journals; individual journals may override these settings.
-%
-% \begin{macro}{\titlepage}
-% \begin{macrocode}
-\renewenvironment{titlepage}{%
- \let\wastwocol@sw\twocolumn@sw
- \onecolumngrid
- \newpage
- \thispagestyle{titlepage}%
- \c@page\z@% article sets this to one not zero???
-}{%
- \wastwocol@sw{\twocolumngrid}{\newpage}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@fnsymbol}
-% On the title page, footnotes are lettered with right parenthesis: ``a)''.
-% \begin{macrocode}
-\let\@fnsymbol@latex\@fnsymbol
-\let\@fnsymbol\@alph
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\adjust@abstractwidth}
-% This procedure is used by many titlepage elements to indent on the left by a particular
-% amount. The author list uses \cmd\frontmatter@authorformat\ to accomplish the same.
-% \begin{macrocode}
-\def\adjust@abstractwidth{%
- \parindent1em\relax
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@afterheading\@afterindentfalse
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractheading}
-% AIP Journals all set the abstract head the same way, with no head.
-% \begin{macrocode}
-\def\frontmatter@abstractheading{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractfont}
-% All AIP journals set the abstract body the same way.
-% \begin{macrocode}
-\def\frontmatter@abstractfont{%
-%\small
- \adjust@abstractwidth
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% All AIP journal preprints use separate titlepage and full-width abstract.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \@booleantrue\titlepage@sw
-% \def\frontmatter@affiliationfont{\it}%
- \let\section\section@preprintsty
-% \let\@hangfrom@section\@hangfrom@section@preprintsty
- \let\subsection\subsection@preprintsty
- \let\subsubsection\subsubsection@preprintsty
- }{}%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\frontmatter@authorformat}
-% All AIP journals set the author list the same.
-% The leading is 11.5 points, and
-% there is 11.5 points of extra space above the first author line
-% (which amounts to the same thing as 11.5 points extra below the title)
-% for a total of 23 points base-to-base.
-%
-% \begin{macrocode}
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-\def\frontmatter@authorformat{%
- \frontmatter@@indent
- \sffamily
-%\advance\baselineskip\p@
-%\parskip11.5\p@\relax
-}%
-\renewcommand*\email[1][Electronic mail: ]{\begingroup\sanitize@url\@email{#1}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affilgroup}
-% The default amount of space above affiliation.
-% \begin{macrocode}
-\def\frontmatter@above@affilgroup{%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affiliation}
-% \begin{macro}{\frontmatter@above@affiliation@script}
-% The default amount of space above affiliation.
-% \begin{macrocode}
-\def\frontmatter@above@affiliation@script{%
- \frontmatter@@indent
-%\addvspace{3.5\p@}%
-}%
-\def\frontmatter@above@affiliation{%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@affiliationfont}
-% All AIP journals set the affiliation the same.
-% Like the author, but in italic.
-% \begin{macrocode}
-\def\frontmatter@affiliationfont{%
- \frontmatter@@indent
- \preprintsty@sw{}{\small}%
- \it
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@collaboration@above}
-% \begin{macrocode}
-\def\frontmatter@collaboration@above{%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% Set up the default AIP style for title block authors and affiliations.
-%
-% \begin{macro}{\frontmatter@setup}
-% All AIP journals set the title page using the same font and size.
-% However, justification varies for the title block elements, so
-% we assert none here.
-% \begin{macrocode}
-\def\frontmatter@setup{%
- \normalfont
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@title@above}
-% \begin{macro}{\frontmatter@title@format}
-% \begin{macro}{\frontmatter@title@below}
-% All AIP journals set the article title 12 point Times Roman, bold, flush left.
-%
-% \begin{macrocode}
-\def\frontmatter@title@above{\addvspace{6\p@}}%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\Large}%
- \sffamily
- \bfseries
- \raggedright
- \parskip\z@skip
-}%
-\def\frontmatter@title@below{\addvspace{3\p@}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@makefnmark}
-% All AIP journals share this procedure for setting the titlepage footnote text:
-% superior lowercase letter, with right parenthesis.
-% \begin{macrocode}
-\def\@author@parskip{3\p@}%
-\@booleantrue\altaffilletter@sw
-\def\frontmatter@makefnmark{%
- \@textsuperscript{%
- \normalfont\@thefnmark%(
- )%
- }%
-}%
-\def\frontmatter@authorbelow{%
- \addvspace{3\p@}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\affil@cutoff}
-% We override \cmd\affil@cutoff\ to enforce the rule that,
-% if a single affiliation appears on the title page, then
-% no affiliation superscript at all is produced.
-% \begin{macrocode}
-\let\affil@cutoff\tw@
-% \end{macrocode}
-% De awa.
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@RRAP@format}
-% All AIP journals use the same format for the ``Received, Revised, etc.'' block on the title page.
-%
-% Change note: 11.5 points b-b from author/affiliation down to date.
-% \begin{macrocode}
-\def\frontmatter@RRAP@format{%
- \addvspace{5\p@}%
- \small
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
-% \preprintsty@sw{}{\parskip.5ex\relax}%
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\punct@RRAP{;\egroup\ \hbox\bgroup}%
-\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@PACS@format}
-%
-% \begin{macrocode}
-\def\frontmatter@PACS@format{%
- \addvspace{11\p@}%
-% \footnotesize
- \adjust@abstractwidth
- \parskip\z@skip
- \samepage
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@keys@format}
-%
-% \begin{macrocode}
-\def\frontmatter@keys@format{%
-% \footnotesize
- \adjust@abstractwidth
- \samepage
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ps@titlepage}
-% Title page style. Currently empty except for preprint header,
-% which consists of all the \cmd\preprint\ arguments,
-% stacked flush right at the right margin.
-% \begin{macrocode}
-\def\ps@titlepage{%
- \def\@oddhead{%
- \@runningtitle
- \hfill
- \produce@preprints\@preprint
- }%
- \let\@evenhead\@oddhead
- \def\@oddfoot{%
- \hb@xt@\z@{\byrevtex\hss}%
- \hfil
- \preprintsty@sw{\thepage}{}%
- \quad\checkindate
- \hfil
- }%
- \let\@evenfoot\@oddfoot
-}%
-\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX and AIP}{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\produce@preprints}
-% \begin{macrocode}
-\def\produce@preprints#1{%
- \preprint@sw{%
- \vtop to \z@{%
- \def\baselinestretch{1}%
- \small
- \let\preprint\preprint@count
- \count@\z@#1\@ifnum{\count@>\tw@}{%
- \hbox{%
- \let\preprint\preprint@hlist
- #1\setbox\z@\lastbox
- }%
- }{%
- \let\preprint\preprint@cr
- \halign{\hfil##\cr#1\crcr}%
- \par
- \vss
- }%
- }%
- }{}%
-}%
-\def\preprint@cr#1{#1\cr}%
-\def\preprint@count#1{\advance\count@\@ne}%
-\def\preprint@hlist#1{#1\hbox{, }}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Lead-in paragraph}%
-%
-% The \env{Lead-in paragraph} environment formats the AIP ``lead paragraph''.
-% To avoid introducing new syntax, we take over the \env{quotation} environment
-% until the first \cmd\section\ (or other sectioning command) appears.
-%
-% \begin{macrocode}
-\newenvironment{Lead@inParagraph}{%
- \par
- \bfseries
- \@afterheading\@afterindentfalse
-}{%
- \par
- \hb@xt@\hsize{\hfil\leaders\hrule\hfil\leaders\hrule\hfil\hfil}%
-}%
-% \end{macrocode}
-% At the beginning of the document temporarily change the meaning of
-% the \env{quotation} environment, restoring it once the first sectioning
-% command is given.
-% \begin{macrocode}
-\appdef\frontmatter@init{%
- \let@environment{quotation@ltx}{quotation}%
- \let@environment{quotation}{Lead@inParagraph}%
-}%
-\appdef\@startsection@hook{%
- \let@environment{quotation}{quotation@ltx}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{Stacked Heads}%
-% All AIP journals put a period (.), followed by quad space, after the section number.
-% Also, no hanging section number.
-% \begin{macrocode}
-\def\@seccntformat#1{\csname the#1\endcsname.\quad}%
-\def\@hang@from#1#2#3{#1#2#3}%
-% \end{macrocode}
-%
-% Note that in the following, we wish to set the section head uppercase, so we use
-% David Carlisle's \cmd\MakeTextUppercase. However, because this procedure effectively
-% parses its argument (looking for things to \emph{not} translate), it has to be invoked
-% in such a way that the argument of the \cmd\section\ command is passed to it as its
-% own argument.
-%
-% To accomplish this, we use the \cmd\@hangfrom@\ hook, which was developed for this
-% purpose.
-%
-% \begin{macrocode}
-\def\section{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
-% \end{macrocode}
-%
-% See, e.g., BMF\_044101\_1 (1) or BMF\_044103\_1 (1)
-% \begin{macrocode}
-\def\subsection{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-% \end{macrocode}
-%
-% See, e.g., BMF\_044104\_1 (1), JMP\_123520\_1 (48),
-% \begin{macrocode}
-\def\subsubsection{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \itshape
- \raggedright
- }%
-}%
-% \end{macrocode}
-%
-% \subsubsection{Runin Heads}%
-% \begin{macrocode}
-\def\paragraph{%
- \@startsection
- {paragraph}%
- {4}%
- {\parindent}%
- {\z@}%
- {-1em}%
- {\normalfont\normalsize\itshape}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subparagraph{%
- \@startsection
- {subparagraph}%
- {5}%
- {\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\section@preprintsty}
-% \begin{macro}{\subsection@preprintsty}
-% \begin{macro}{\subsubsection@preprintsty}
-% Here are the formatting procedures specific to the preprint style;
-% the only difference is that the heads are flush left instead of centered.
-%
-% \begin{macrocode}
-\def\section@preprintsty{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-%\def\@hangfrom@section@preprintsty#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\subsection@preprintsty{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\subsubsection@preprintsty{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
-% \small
- \itshape\bfseries
- \raggedright
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% For examples of
-% \env{theorem}, \env{proposition}, \env{lemma}, \env{remark}, \env{corollary}, \env{example},
-% and \env{proof} (with optional title),
-% using independent numbering for each class,
-% and with numbered and roman lists therein,
-% see JMP\_122901\_1 (48).
-%
-% For theorems, etc, numbered by section, (and with theorems in the appendix)
-% but equations numbered throughout,
-% see JMP\_123301\_1 (48).
-%
-% For a (roman) list in text, theorem, and proof,
-% see JMP\_123514\_1 (48).
-%
-% For numbered list in text,
-% and equations numbered by section,
-% see JMP\_123518\_1 (48).
-%
-% All AIP journals use frontmatter footnotes by default.
-% \begin{macrocode}
-\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
-% \end{macrocode}
-%
-%
-% \subsubsection{Table of Contents}%
-% The toc will itself make an entry in the toc,
-% but we temporarily turn off toc formatting for the duration.
-% \begin{macrocode}
-\def\@pnumwidth{1.55em}
-\def\@tocrmarg {2.55em}
-\def\@dotsep{2}
-\def\ltxu@dotsep{4.5pt}
-\setcounter{tocdepth}{3}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tableofcontents{%
- \addtocontents{toc}{\string\tocdepth@munge}%
- \print@toc{toc}%
- \addtocontents{toc}{\string\tocdepth@restore}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tocdepth@munge{%
- \let\l@section@saved\l@section
- \let\l@section\@gobble@tw@
-}%
-\def\@gobble@tw@#1#2{}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tocdepth@restore{%
- \let\l@section\l@section@saved
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\l@part#1#2{\addpenalty{\@secpenalty}%
- \begingroup
- \set@tocdim@pagenum{#2}%
-% \@tempdima 3em %
- \parindent \z@
- \rightskip\tocleft@pagenum plus 1fil\relax
- \skip@\parfillskip\parfillskip\z@
- \addvspace{2.25em plus\p@}%
- \large \bf %
- \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@
- \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip
- \par
- \nobreak %
- \endgroup
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\l@section}
-% Determine which TOC elements are automatically indented.
-% \begin{macrocode}
-\def\tocleft@{\z@}%
-\def\tocdim@min{5\p@}%
-\def\l@section{%
- \l@@sections{}{section}% Implicit #3#4
-}%
-\def\l@f@section{%
- \addpenalty{\@secpenalty}%
- \addvspace{1.0em plus\p@}%
- \bf
-}%
-\def\l@subsection{%
- \l@@sections{section}{subsection}% Implicit #3#4
-}%
-\def\l@subsubsection{%
- \l@@sections{subsection}{subsubsection}% Implicit #3#4
-}%
-\def\l@paragraph#1#2{}%
-\def\l@subparagraph#1#2{}%
-% \end{macrocode}
-% \end{macro}
-%
-% Activate the auto TOC processing.
-% \begin{macrocode}
-\let\toc@pre\toc@pre@auto
-\let\toc@post\toc@post@auto
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\listoffigures{\print@toc{lof}}%
-\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\listoftables{\print@toc{lot}}%
-\let\l@table\l@figure
-% \end{macrocode}
-%
-% \subsubsection{Default column bottom}%
-% All AIP journal styles have flush bottoms.
-%
-% \begin{macrocode}
-\@booleanfalse\raggedcolumn@sw
-% \end{macrocode}
-%
-%
-% \subsubsection{Table alignment style}%
-%
-% \begin{macro}{\tableft@skip@float}
-% \begin{macro}{\tabmid@skip@float}
-% \begin{macro}{\tabright@skip@float}
-% \begin{macro}{\array@row@pre@float}
-% \begin{macro}{\array@row@pst@float}
-% All AIP publications have the same table specification:
-% Scotch rules above and below, centered in column.
-% \begin{macrocode}
-\def\tableft@skip@float{\z@ plus\hsize}%
-\def\tabmid@skip@float{\@flushglue}%
-\def\tabright@skip@float{\z@ plus\hsize}%
-\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}%
-\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Footnote formatting}%
-% We customize the formatting of footnotes for all AIP journals.
-% \begin{macro}{\@makefntext}
-% \begin{macrocode}
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
- \noindent
- \nobreak\hskip-\leftskip
- \hb@xt@\leftskip{%
- \hss\@makefnmark\ %
- }%
- #1%
- \par
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Appendix}%
-% \begin{macro}{\appendix}
-% \begin{macro}{\@hangfrom@appendix}
-% \begin{macro}{\@hangfroms@appendix}
-% \begin{macro}{\@appendixcntformat}
-% \begin{macrocode}
-\prepdef\appendix{%
- \par
- \let\@hangfrom@section\@hangfrom@appendix
-%\let\@hangfroms@section\@hangfroms@appendix
- \let\@sectioncntformat\@appendixcntformat
-}%
-\def\@hangfrom@appendix#1#2#3{%
- #1%
- \@if@empty{#2}{%
- #3%
- }{%
- #2\@if@empty{#3}{}{:\ #3}%
- }%
-}%
-\def\@hangfroms@appendix#1#2{%
- #1#2%
-}%
-\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Bibliography}%
-%
-% Customize the \revtex\ for the AIP society.
-% this task requires three components:
-% the \BibTeX\ \file{aipnum.bst} and \file{aipauth.bst} style files,
-% customizing code for \file{natbib}, and
-% customizations of the \env{thebibliography} environment.
-%
-% \begin{macro}{\@bibstyle}
-% Define the argument of the \cmd\bibliographystyle\ command.
-% The user must have installed a \file{.bst} file of the corresponding name.
-% This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file.
-%
-% The default bibliography style for the AIP journal substyles are \file{aipnum.bst} and \file{aipauth.bst}.
-% To generate them, use \classname{custom-bib} version 4.21 or later.
-% Run the \file{.bst} generator, \file{makebst.tex}, and
-% accept all defaults, with the following exceptions:
-%
-% \begin{enumerate}
-% \item
-% ORDERING OF REFERENCES: c: seq-no (references in order of Citation);
-% \item
-% AUTHOR NAMES: i: nm-init,ed-au (Initials + surname);
-% \item
-% NUMBER OF AUTHORS: l: max 12, min 12 (there will be three prompts total);
-% \item
-% TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: u: nmft,nmft-def (User defined author font);
-% \item
-% FONT FOR FIRST NAMES: u: fnm-def (First names in user defined font);
-% \item
-% EDITOR NAMES IN INCOLLECTION ETC: a: nmfted (Editors incollection like authors);
-% \item
-% DATE FORMAT: p: yr-par (Date in parentheses);
-% \item
-% SUPPRESS MONTH: x: xmth (Date is year only);
-% \item
-% TITLE OF ARTICLE: i: tit-it (Title italic)
-% \item
-% ARTICLE TITLE PRESENT: x: jtit-x (No article title);
-% \item
-% JOURNAL NAME FONT: r: jttl-rm (Journal title normal);
-% \item
-% TECHNICAL REPORT TITLE: b: trtit-b (Tech. report title like books);
-% \item
-% JOURNAL VOLUME: b: vol-bf (Volume bold);
-% \item
-% VOLUME PUNCTUATION: c: volp-com (Volume with comma);
-% \item
-% PAGE NUMBERS: f: jpg-1 (Only start page number);
-% \item
-% JOURNAL NAME PUNCTUATION: x: jnm-x (Space after journal);
-% \item
-% PUBLISHER IN PARENTHESES: d: pub-date (Publisher and date in parentheses);
-% \item
-% PUBLISHER POSITION: p: pre-pub (Publisher before chapter, pages);
-% \item
-% ISBN NUMBER: isbn: (Include ISBN for books, booklets)
-% \item
-% ISSN NUMBER: issn: (Include ISSN for periodicals)
-% \item
-% EDITOR IN COLLECTIONS: b: edby (Booktitle, edited by \dots);
-% \item
-% PUNCTUATION BETWEEN SECTIONS (BLOCKS): c: blk-com (Comma between blocks);
-% \item
-% ABBREVIATE WORD `PAGES': a: pp (`Page' abbreviated);
-% \item
-% ABBREVIATE WORD `EDITORS': a: ed (`Editor' abbreviated);
-% \item
-% OTHER ABBREVIATIONS: a: abr (Abbreviations);
-% \item
-% ABBREVIATION FOR `EDITION': a: ednx (`Edition' abbreviated as `ed');
-% \item
-% EDITION NUMBERS: n: ord (Numerical editions);
-% \item
-% STORED JOURNAL NAMES: a: jabr (Abbreviated journal names);
-% \item
-% FONT OF `ET AL': i: etal-it (Italic et al);
-% \item
-% ADDITIONAL REVTeX DATA FIELDS: r: revdata, eprint, url, url-blk (Include REVTeX data fields collaboration, eid, eprint, numpages, url)
-% \item
-% NEW FONT SELECTION SCHEME: n: nfss (NFSS);
-% \item
-% ADDITIONAL REVTeX DATA FIELDS: y: revdata (additional data fields);
-% \item
-% REFERENCE COMPONENT TAGS: y: reference component tags;
-% \item
-% URL ADDRESS: n: URL as note;
-% \end{enumerate}
-%
-% A file \file{aipnum.dbj} file equivalent to the following should result:
-% \begin{verbatim}
-%\input docstrip
-%\preamble
-%----------------------------------------
-%*** REVTeX-compatible aipnum4-1.bst 2009-10-08 ***
-%\endpreamble
-%\postamble
-%End of customized bst file
-%\endpostamble
-%\keepsilent
-%\askforoverwritefalse
-%\def\MBopts{\from{merlin.mbs}{%
-% head,\MBopta}
-%\from{physjour.mbs}{\MBopta}
-%\from{geojour.mbs}{\MBopta}
-%\from{photjour.mbs}{\MBopta}
-%\from{merlin.mbs}{tail,\MBopta}}
-%\def\MBopta{%
-% lang,%: Use language field to switch hyphenation patterns for title
-% pres,pres-bf,%: Presentation, speaker bold face
-% seq-no,%: Citation order (unsorted, like unsrt.bst)
-% vonx,%: Sort without von part (de la Maire after Mahone)
-% nm-init,ed-au,%: Initials + surname (J. F. Smith)
-% nmft,nmft-def,%: User defined author font (\bibnamefont)
-% fnm-def,%: First names in user defined font (\bibfnamefont)
-% nmfted,%: Editors incollection like authors font
-% nmand-rm,%: `And' in normal font (JONES and JAMES)
-% lab,lab-def,%: User defined citation font (\citenamefont)
-% and-rm,%: Cited `and' in normal font
-% yr-par,%: Date in parentheses as (May 1993)
-% date-nil-x,%: If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
-% tit-qq,%: Title and punctuation in double quotes (``Title,'' ..)
-% inproceedings-chapter,%: produce pages after chapter, just as in InBook
-% jtit-x,%: Title is ignored
-% inproceedings-chapter,%: produce pages after chapter just as in InBook
-% article-booktitle,%: format booktitle
-% article-series,%: article can has series
-% jttl-rm,%: Journal name normal font
-% journal-address,%: Include address field (in parentheses) along with journal name
-% book-bt,%: Field `booktitle', or if absent field `title', is book title
-% thesis-title-o,%: Title is optional: no warning issued if empty
-% techreport-institution-par,%: format tech report institution like book publisher
-% vol-bf,%: Volume bold as {\bf vol}(num)
-% vnum-x,%: Journal vol, without number as 34
-% volp-com,%: Volume with comma as vol(num), ppp
-% jpg-1,%: Only start page number
-% book-editor-booktitle,%: Book permits empty author, produces title before editor in this case
-% inbook-editor-booktitle,%: Allow using both title/booktitle, both author/editor
-% bookaddress,%: Italic booktitle followed by bookaddress in roman
-% num-xser,%: Allows number without series and suppresses word "number"
-% number-cap,%: Capitalize word `number' as: "Number 123"
-% chapter-cap,%: Capitalize word `chapter' as: `Chapter 42'
-% series-number,%: Series number as: `Springer Lecture Notes No. 125'
-% numser-booktitle,%: After book title and conference address, and before editors
-% ser-vol,%: Series, vol. 23
-% ser-rm,%: format series roman , even when used with volume
-% volume-cap,%: Capitalize word `volume', as: `Volume 7 in Lecture Series'
-% ser-ed,%: Series and volume after booktitle and before editors
-% jnm-x,%: Space after journal name
-% pg-bk,book-chapter-pages,%: As chapter and page: chapter 42, page 345
-% pub-date,%: Publisher with address and date in parentheses (Oxford, 1994)
-% ay-empty-pub-parens-x,%: eliminate parentheses altogether if nothing inside
-% pre-pub,%: Publisher before volume, chapter, pages
-% pre-edn,%: Edition before publisher
-% pre-pub,pre-edn,%: Edition, publisher, volume, chapter, pages
-% isbn,%: Include ISBN for books, booklets, etc.
-% issn,%: Include ISSN for periodicals
-% doi-link,doi,%: Doi forms a link to the publication, anchored to the volume or title
-% edby,%: In booktitle, edited by .. (where .. is names)
-% blk-com,%: Comma between blocks
-% fin-endbibitem,%: Command at end instead of period
-% pp,%: `Page' abbreviated as p. or pp.
-% ed,%: `Editor' abbreviated as ed. or eds.
-% abr,%: Abbreviations of such words
-% ednx,%: `Edition' abbreviated as `ed'
-% ord,%: Numerical editions as 1st, 2nd, 3rd, etc
-% jabr,%: Abbreviated journal names
-% etal-it,%: Italic et al
-% revdata,eprint,url,url-blk,translation,%: Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
-% SLACcitation,%: Produce SLACcitation field
-% numpages-x,%: Do not include numpages field
-% url,url-prefix-x,%: URL without prefix (default: `URL ')
-% bibinfo,%: Reference component tags like \bibinfo in the content of \bibitem
-% bibfield,%: Element tags like \bibfield in the content of \bibitem
-% nfss,%: Use LaTeX commands which may not work with Plain TeX
-%,{%
-% }}
-%\generate{\file{aipnum4-1.bst}{\MBopts}}
-%\endbatchfile
-% \end{verbatim}
-%
-% Between the two files \file{aipnum.dbj} and \file{aipauth.dbj},
-% the differences are limited:
-% \file{aipnum.dbj} has two lines lacking in \file{aipauth.dbj}:
-% \begin{verbatim}
-% seq-no,%: Citation order (unsorted, like unsrt.bst)
-% nm-init,ed-au,%: Initials + surname (J. F. Smith)
-% \end{verbatim}
-% thus, the ``numbered citation'' bibliography is sorted by citation order, and
-% the names are give first inital, then last name.
-%
-% Likewise, \file{aipauth.dbj} has one line lacking in \file{aipnum.dbj}:
-% \begin{verbatim}
-% nm-rev,%: Surname + comma + initials (Smith, J. F.)
-% \end{verbatim}
-% Thus, the ``author-year'' bibliography is sorted by author name, and
-% names are given last name first, followed by initials.
-%
-% We ensure that the journal substyle has the first word
-% in the matter by installing the (default) AIP code
-% later on (see Section~\ref{sec:aip-defaults}).
-% \end{macro}
-%
-% \begin{macro}{\pre@bibdata}
-%
-% Set up to write endnotes to a .bib file; its data will be incorporated into the bibliography.
-% \begin{macrocode}
- \def\pre@bibdata{\jobname\bibdata@app}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bibsection}
-% We define the sectioning command to use when starting the bibliography
-% (we use \cmd\refname).
-% \begin{macrocode}
-\def\refname{References}%
-\def\rtx@bibsection{%
- \@ifx@empty\refname{%
- \par\vspace{6\p@ plus 6\p@}%
- }{%
-% \end{macrocode}
-% The following line has been commented out:
-% \begin{verbatim}
-% \let\@hangfroms@section\@hang@froms
-% \end{verbatim}
-% \begin{macrocode}
- \expandafter\section\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bibpreamble}
-% \begin{macro}{\bibsep}
-% \begin{macro}{\newblock}
-% \begin{macrocode}
-\let\bibpreamble\@empty
-\appdef\setup@hook{%
- \bibsep\z@\relax
-}%
-\def\newblock{\ }%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bibfont}
-% We define the font switch that applies to the body of the bibliography.
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \def\bibfont{%
- \preprintsty@sw{}{\footnotesize}%
- \@clubpenalty\clubpenalty
- \labelsep\z@
- }%
-}%
-\let\place@bibnumber\place@bibnumber@sup
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Index}%
-% \begin{macrocode}
-\newenvironment{theindex}{%
- \columnseprule \z@
- \columnsep 35\p@
- \c@secnumdepth-\maxdimen
- \onecolumngrid@push
- \section{\indexname}%
- \thispagestyle{plain}%
- \parindent\z@
- \parskip\z@ plus.3\p@\relax
- \let\item\@idxitem
- \onecolumngrid@pop
-}{%
-}%
-%
-\def\@idxitem{\par\hangindent 40\p@}
-%
-\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
-%
-\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
-%
-\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
-% \end{macrocode}
-%
-%
-% \subsubsection{Typesize Processing}%
-% The formatting specification for the preprint option is:
-% Times Roman 12 pt, double spacing, with 1-inch margins on letter paper.
-% Paragraphs indented ``five spaces''.
-% Display math on standard indent, with equation number flush right in parenthesis, with subequations roman.
-%
-% That for reprint option is to format similar to the printed journal; with most journals
-% set (approximately analyzed) 10-point, 2-column grid, letter paper.
-% \begin{macrocode}
-\expandafter\def\csname rtx@aip10pt\endcsname{%
- \let\@currname@class\@currname
- \def\@currname{aps10pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 10pt}%
- \aipreprint
-}%
-\expandafter\def\csname rtx@aip11pt\endcsname{\csname rtx@aip12pt\endcsname}%
-\expandafter\def\csname rtx@aip12pt\endcsname{%
- \let\@currname@class\@currname
- \def\@currname{aps12pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 12pt}%
- \aippreprint
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\today}
-% Procedure \cmd\today\ is used in the article class, but not in
-% this document class.
-% \begin{macrocode}
-\def\today{%
- \number\day\space
- \ifcase\month
- \or January\or February\or March\or April\or May\or June%
- \or July\or August\or September\or October\or November\or December%
- \fi\space
- \number\year
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{A. Running Title}
-% User-provided running title \cmd\@shorttitle\ to be set.
-%
-% \subsection{B. Equation numbering, figure and table numbering}
-% Equations can be numbered throughout, or by section, with appendix equations prepended by the appendix label.
-% Figures and tables are numbered throughout.
-%
-%
-% \subsection{C. Title}
-% Title page may break above abstract, within author list.
-% Title notes are signified by superior letter followed by right parenthesis.
-%
-% \subsection{D. Author footnote}
-% Set short line above these footnotes.
-%
-% \subsection{E. Author}
-% Class option \classoption{superscriptaddress} is standard.
-% \begin{macrocode}
- \clo@superscriptaddress
-% \end{macrocode}
-%
-% \subsection{F. Affiliations}
-% Set italic.
-%
-% \subsection{G. Received date}
-%
-%
-% \subsection{H. Abstract}
-% Single paragraph, no indent.
-%
-% \subsection{J. Lead Paragraph}
-% Set boldface, flush left before main text, single paragraph.
-% Separated from text by a short centered rule.
-%
-% \subsection{K. Headings}
-% Use labels: ROMAN, LETTER, arabic, letter.
-% Set ALLCAPS, boldface; Initial cap, boldface; Initial cap, bold-italic; Initial cap, italic.
-%
-% Theorem, proof title followed by colon. Follow author.
-%
-% \subsection{L. Text Footnotes}
-% Not permitted; use endnotes.
-%
-% \subsection{M. Citations and Bibliography}
-% Numerical \filename{aipnum.bst}, author-year \filename{aipauth.bst}, and numbered author-year \filename{aipnumauth.bst} are the available choices.
-% Numerical is standard, with all styles permitted in journal classes 3a and 4b.
-%
-%
-% \subsection{N. References}
-%
-% Article Title usage:
-%
-% Article title required in all journals with "unpublished", "to be published", "in press" and "submitted" refs.
-%
-% Exceptions:
-%
-% Journal classes 1a,1b,2,4a:
-%
-% Article title not allowed in published references, except in the case of "in press" or submitted" (see sample references below).
-%
-% Journal class 3a:
-%
-% Article title allowed but not required in author-year references (use must be consistent within a single manuscript).
-%
-% Journal class 3b:
-%
-% Article title required in all journal references and report references.
-%
-% Journal class 4b:
-%
-% Article title allowed in journal references in author-year mode.
-%
-% \subsection{O. Examples of Numerical References}
-%
-%
-% \subsection{P. References in Author-year mode}
-%
-%
-% \subsection{Q. Numbered Author-year References}
-%
-%
-% \subsection{R. Tables}
-% Placed within text (floated), labeled with Roman numeral.
-%
-% Table caption placed above table, followed by space,
-% two double lines, space, table column headings, space,
-% single line, table contents, two double lines.
-%
-% Footnotes labeled with superior lower-case letter, set below table contents.
-%
-% \subsection{S. Figures}
-% Placed within text (floated), labeled with arabic numbers.
-%
-% Caption set below figure. A citation to be set inline, not superscripted.
-%
-% \subsection{Society defaults}%
-%
-% After this society file is read in, we will process the
-% \cmd\@journal- and \cmd\@pointsize-specific code.
-% Here we define the defaults.
-%
-% We select \textbf{Chaos} as the default journal substyle, because it is
-% the most permissive in terms of bibliography and citation style,
-% and it is formatted in two column in the reprint style.
-%
-% \begin{macrocode}
-\def\@journal@default{cha}%
-\def\@pointsize@default{12}%
-% \end{macrocode}
-%
-% \subsection{Journal-Specific Code}%
-%
-% For AIP journals, we supply code specific to JCP, POP, RSI, JAP, APL, CHA, POF, BMF, RSE, JMP.
-%
-% \subsubsection{\classoption{jcp}}%
-%A member of the journal class 1a.
-% \begin{macrocode}
-\def\rtx@aipjcp{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 1a uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
-% \end{macrocode}
-%
-% End of \classoption{jcp} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{pop}}%
-%A member of the journal class 1a.
-% \begin{macrocode}
-\def\rtx@aippop{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 1a uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
-% \end{macrocode}
-%
-% End of \classoption{pop} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{rsi}}%
-%A member of the journal class 1a.
-% \begin{macrocode}
-\def\rtx@aiprsi{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 1a uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
-% \end{macrocode}
-%
-% End of \classoption{rsi} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{jap}}%
-%Sole member of the journal class 1b.
-%
-% No running title.
-% \begin{macrocode}
-\def\rtx@aipjap{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 1b uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
- \let\@runningtitle\@empty
-% \end{macrocode}
-%
-% End of \classoption{jap} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{apl}}%
-%Sole member of the journal class 2.
-%
-% No running title.
-% \begin{macrocode}
-\def\rtx@aipapl{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 2 uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
- \let\@runningtitle\@empty
-% \end{macrocode}
-%
-% End of \classoption{apl} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{apm}}%
-%
-% \begin{macrocode}
-\def\rtx@aipapm{%
- \typeout{Using journal substyle \@journal.}%
- \@booleanfalse\authoryear@sw
- \let\@runningtitle\@empty
-}%
-% \end{macrocode}
-%
-%
-% \subsubsection{\classoption{cha}}%
-%Sole member of the journal class 3a.
-% \begin{macrocode}
-\def\rtx@aipcha{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Article titles are allowed.
-% \begin{macrocode}
- \@booleanfalse\aip@jtitx@sw
-% \end{macrocode}
-%
-% End of \classoption{cha} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{pof}}%
-%Sole member of the journal class 3b.
-% \begin{macrocode}
-\def\rtx@aippof{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 3b uses the (superscript) numerical citation style by default.
-% Article titles are required, so we include them if available,
-% but if absent, we can do no more than make a warning in the \file{.blg}.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
- \@booleanfalse\aip@jtitx@sw
-% \end{macrocode}
-%
-% End of \classoption{pof} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{bmf}}%
-% A member of the journal class 4a,
-% the Biomicrofluidics journal is single column.
-% \begin{macrocode}
-\def\rtx@aipbmf{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 4a uses the (superscript) numerical citation style by default.
-% Journal is formatted in a single column.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
-% \end{macrocode}
-%
-% End of \classoption{bmf} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-%
-% \subsubsection{\classoption{sd}}%
-% \begin{macrocode}
-\def\rtx@aipsd{%
- \typeout{Using journal substyle \@journal.}%
- \@booleanfalse\authoryear@sw
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{cp}}%
-% \begin{macrocode}
-\def\rtx@aipcp{%
- \typeout{Using journal substyle \@journal.}%
- \@booleanfalse\authoryear@sw%
-% \@booleantrue\authoryear@sw
- \@booleanfalse\twocolumn@sw%
-% \@booleantrue\longbibliography@sw%
-% \@booleanfalse\aip@jtitx@sw
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{jor}}%
-% \begin{macrocode}
-\def\rtx@aipjor{%
- \typeout{Using journal substyle \@journal.}%
- \@booleantrue\authoryear@sw%
- \@booleantrue\twoside@sw\@mparswitchfalse%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{rse}}%
-%A member of the journal class 4a.
-% \begin{macrocode}
-\def\rtx@aiprse{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Journal class 4a uses the (superscript) numerical citation style by default.
-% \begin{macrocode}
- \@booleanfalse\authoryear@sw
-% \end{macrocode}
-%
-% End of \classoption{rse} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{jmp}}%
-% Sole member of the journal class 4b, Journal of Mathematical Physics is single column.
-% For an example of \env{itemize}, see JMP\_122901\_1 (48).
-% \begin{macrocode}
-\def\rtx@aipjmp{%
- \typeout{Using journal substyle \@journal.}%
-% \end{macrocode}
-% Article titles are allowed.
-% Journal is formatted in a single column.
-% \begin{macrocode}
- \@booleanfalse\aip@jtitx@sw
- \@booleanfalse\twocolumn@sw
- \@booleantrue\onecolumn@sw
-% \end{macrocode}
-%
-% End of \classoption{jmp} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-%
-% \subsubsection{\classoption{adv}}%
-% \begin{macrocode}
-\def\rtx@aipadv{%
- \typeout{Using journal substyle \@journal.}%
- \@booleanfalse\authoryear@sw
- \let\@runningtitle\@empty
-}%
-% \end{macrocode}
-%
-%
-% \subsection{Establish AIP Defaults\label{sec:aip-defaults}}
-%
-% \begin{macro}{\footinbib@sw}
-% All AIP journals invoke the \classoption{footinbib} option.
-% \begin{macrocode}
-\@booleantrue\footinbib@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\place@bibnumber}
-% \begin{macro}{\@bibstyle}
-% \begin{macro}{\bibpunct}
-% We install code that will
-% govern the style in which \cmd\cite\ commands are
-% formatted,
-% select the presentation for \cmd\bibitem s
-% and control the \BibTeX\ processing.
-%
-% Note that a journal substyle may override these settings.
-% Likewise, document preamble may itself invoke \cmd\bibpunct\ or \cmd\bibliographystyle,
-% thereby overriding these settings and those of the journal substyle.
-%
-% The numbered citations of \file{aipnum} and \file{aipauthnum}
-% are compatible with \classoption{footinbib} and
-% the compression and coalescing features of \classname{natbib},
-% while \file{aipauth}'s author-year citations are not.
-% Therefore, we de-select such options if we are selecting author-year citations.
-%
-% Note on \classname{natbib} presets:
-% \file{aipnum} and \file{aipauthnum} uses the Chicago \cmd\bibpunct\ style;
-% while \file{aipauth} uses that of Nature.
-%
-% Note on \cmd\NAT@mcite: if not using numerical citations, we set \cmd\NAT@mcite\
-% to a lower value, to turn off the mcite semantics of \classname{natbib}.
-% \begin{macrocode}
-\let\old@place@bibnumber\place@bibnumber
-\let\place@bibnumber\place@bibnumber@sup
-\appdef\setup@hook{%
- \authoryear@sw{%
- \aip@jtitx@sw{%
- \def\@bibstyle{aipauth\substyle@post}%
- }{%
- \def\@bibstyle{aipauth\substyle@post}%
- }%
- \authornum@sw{%
- \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
- \let\onlinecite\rev@citealpnum
- }{%
- \bibhang10\p@
- \bibpunct{(%)
- }{%(
- )}{; }{a}{,}{,}%
- \@booleanfalse\footinbib@sw
- \let\NAT@mcite\@ne
- \let\NAT@sort\z@
- \def\NAT@cmprs{\z@}%
- \let\NAT@def@citea\rtx@def@citea
- \let\NAT@def@citea@close\rtx@def@citea@close
- }%
- }{%
- \aip@jtitx@sw{%
- \def\@bibstyle{aipnum\substyle@post}%
- }{%
- \def\@bibstyle{aipnum\substyle@post}%
- }%
- \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
- \let\onlinecite\rev@citealpnum
- }%
-}%
-\def\make@footnote@endnote{%
- \footinbib@sw{%
- \authoryear@sw{\authornum@sw{\false@sw}{\true@sw}}{\false@sw}%
- {}{%
- \ltx@footnote@push
- \def\thempfn{Note\thefootnote}%
- \let\ltx@footmark\rev@citemark
- \let\ltx@foottext\rev@endtext
- \appdef\class@enddocumenthook{\auto@bib}%
- \let\printendnotes\relax
- }%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\aipreprint}%
-% We want to override \filename{aps10pt.rtx}.
-% \begin{macrocode}
-\def\aipreprint{%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\aippreprint}%
-% We want to override \filename{aps12pt.rtx}.
-% \begin{macrocode}
-\def\aippreprint{%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Fixing the bug for single author/affiliation}%
-% In case of single author/affiliation no need to produce the affiliation number after the author name.
-%
-% \begin{macrocode}
-%%
-\xdef\t@talAU{0}% TeXSupport
-\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}{}%
- \let\AU@temp\@empty
- \@tempcnta\z@
- \let\AF@opr \@gobble
- \def\AU@opr{\@author@count\@tempcnta}%
- \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}%
- \@AAC@list%
- \xdef\t@talAU{\the\@tempcnta}% TeXSupport
- \expandafter\CO@opr\@author@cleared
- \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
- \begingroup
- \frontmatter@above@affiliation@script
- \let\AFF@opr \@affil@script
- \@AFF@list
- \frontmatter@footnote@produce
- \par
- \endgroup
- \endgroup
-}%
-\def\doauthor#1#2#3{% TeXSupport
- \ignorespaces#1\unskip\@listcomma
- \begingroup
- \ifnum\t@talAU=1\else\ifnum\c@affil=\@ne\relax\else#3\fi\fi% TeXSupport
- \@if@empty{#2}{\endgroup{}{}}{\endgroup{\ifnum\t@talAU=1\else\ifnum\c@affil=\@ne\relax\else\comma@space\fi\fi}{}\frontmatter@footnote{#2}}% TeXSupport
- \space \@listand
-}%
-%%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{Page restriction for APL (removed)}}%
-%
-% This macro was installed to calculate page-lenght for APL articles.
-%% Appended by Ms. Sehar Tahir (Aptara) for American Institute of Physics.
-%% To impose page restrictions for APL journal at MSP stage.
-%
-% \begin{macrocode}
-%%
-%% HISTORY
-%% Revised page restriction to 4 pages: 05/10/2011
-%% Tweaked the page over length message: 31/10/2011
-%% Removed unused page restriction code: 30/09/2020
-%%
-\DeclareOption{no-pagerestrict}{%
- \class@warn{Deprecated pagerestrict code. Option 'no-pagerestrict' was ignored.}}%
-% \end{macrocode}
-% End of \classoption{apl} pagerestriction code.
-%
-% \subsubsection{Style updates for \texttt{jmp} and \texttt{rse}}%
-%
-% JMP, BMF and RSE journal's to be as one column at Reprint stage
-%
-%\begin{macrocode}
-%%
-%% JMP, BMF and RSE journal's to be as one column at Reprint stage
-%%
-\appdef\rtx@require@packages{%
-\def\jnl@rse{rse}%
-\def\jnl@jmp{jmp}%
-\preprintsty@sw{}%
- {%\ifx\@journal\jnl@jmp%
- \onecolumn@sw{%
- \typeout{AIP Info: \@journal\space journal style Single column, 2013/07/30}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -17pt
- \headheight 12pt
- \headsep 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
- \textheight=53.5pc
- \textwidth 33pc
- \columnsep 10pt
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
-}{}%
-% \fi% Curly brace
-}
-% \end{macrocode}
-%
-% \subsubsection{Style updates for \texttt{bmf} and addition of new substyle \texttt{sd}}%
-%
-% BMF journal to match with final layout (textheight and other page setup dimensions).
-% Addition of new journal SD: Structural Dynamics.
-%
-% \begin{macrocode}
-%% BMF journal to match with final layout (textheight)
-%% Addition of new journals SD: Structural Dynamics
-%
-\def\jnl@bmf{bmf}%
-\def\jnl@sd{sd}%
-\preprintsty@sw{}%
- {%\ifx\@journal\jnl@bmf%
- \newonecolumn@sw{%
- \typeout{AIP Info: \@journal\space journal style Single column, 2011/08/11}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -17pt
- \headheight 12pt
- \headsep 25pt% 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
-% \textheight=53.5pc
- \textheight=54.5pc%
- \textwidth 33pc
- \columnsep 10pt
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
-\def\adjust@abstractwidth{%
- \parindent1em\relax
-% \advance\leftskip.5in\relax
- \advance\leftskip2.5pc\relax
- \advance\rightskip2.5pc\relax
- \@totalleftmargin\leftskip
- \@afterheading\@afterindentfalse
-}%
-% \fi
-}{}%
-}
-% \end{macrocode}
-%
-% \subsubsection{Addition of new substyle \texttt{jor}}%
-%
-% Addition of new journal JOR: Journal of Rheology.
-%
-% \begin{macrocode}
-%%
-%% Journal of Rheology (jor)
-%%
-\def\jnl@jor{jor}%
-\preprintsty@sw{}%
- {\ifx\@journal\jnl@jor%
- \typeout{AIP Info: \@journal\space journal style Single column, 2013/10/24}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -17pt
- \headheight 12pt
- \headsep 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
- \textheight=53.5pc
- \textwidth 33pc
- \columnsep 10pt
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\Large}%
- \sffamily%
- \bfseries%
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%\raggedright%
- \parskip\z@skip%
-}%
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%\raggedright
-%\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-%\def\frontmatter@authorformat{%
-% \frontmatter@@indent
-% \sffamily
-%}%
-\def\frontmatter@RRAP@format{%
- \addvspace{5\p@}%
- \small
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%%\raggedright
-%%\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\frontmatter@abstractfont{}%
-\def\frontmatter@abstractwidth{\textwidth}
-\def\abstractname{Synopsis}
-\def\frontmatter@abstractheading{%
- \begingroup
- \centering\large
- {\bfseries\abstractname}
- \par\vskip.25\baselineskip
- \endgroup
-}%
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\old@refname%\@empty
- }%
-}%
-%
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\sffamily\thepage\quad\checkindate\hfil\@runningtitle\hfil}%
- \def\@oddhead{\let\\\heading@cr\hfil\sffamily\@runningtitle\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\@make@capt@title#1#2{%
- \@ifx@empty\float@link{\@firstofone}{\expandafter\href\expandafter{\float@link}}%
- {{\bfseries#1}}\@caption@fignum@sep#2%
-}%
-\def\@caption@fignum@sep{{\bfseries.} }%
- \fi}
-% \end{macrocode}
-%
-% \subsubsection{Addition of new substyle \texttt{cp}}%
-%
-% Addition of new journal AIP-CP: AIP Conference Proceedings.
-%
-% \begin{macrocode}
-%%
-%% AIP Conference Proceedings
-%%
-\def\jnl@cp{cp}%
-\preprintsty@sw{}%
- {\ifx\@journal\jnl@cp%
- \typeout{AIP Info: \@journal\space journal style Single column, 2013/10/30}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 0pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 0pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -29.5pt
- \headheight 12pt
- \headsep 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
- \textheight=53.5pc
- \textwidth 39pc
- \columnsep 10pt
-%%
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
-%%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\LARGE}% \Large
-%\sffamily%
- \bfseries%
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%\raggedright%
- \parskip\z@skip%
-}%
-%%
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%\raggedright
-%\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-%%
-\def\frontmatter@RRAP@format{%
- \addvspace{5\p@}%
- \small
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%%\raggedright
-%%\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\frontmatter@abstractfont{\small}%
-\def\frontmatter@abstractwidth{\textwidth}
-\def\@keys@name{{\small\bfseries Keywords:} }%
-\def\@pacs@name{{\small\bfseries PACS:} }%
-\def\abstractname{Abstract.}
-%%
-\def\frontmatter@abstractheading{%
- \begingroup
-% \centering\large
- \small%
- {\bfseries\abstractname}
-% \par\vskip.25\baselineskip
- \endgroup
-}%
-%%
-\def\adjust@abstractwidth{%
- \parindent1em\relax
-% \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@afterheading\@afterindentfalse
- \small%
-}%
-%%
-\def\frontmatter@PACS@format{%
-% \addvspace{11\p@}%
- \adjust@abstractwidth
-% \parskip\z@skip
- \samepage
-}%
-\def\frontmatter@keys@format{%
- \addvspace{11\p@}%
- \adjust@abstractwidth
- \parskip\z@skip
- \samepage
-}%
-%%
-\def\frontmatter@authorformat{%
- \frontmatter@@indent
- \Large%
-% \sffamily
- \vskip.5\baselineskip%
-}%
-%%
-%%
-\def\titleblock@produce{%
- \begingroup
- \ltx@footnote@pop
- \def\@mpfn{mpfootnote}%
- \def\thempfn{\thempfootnote}%
- \c@mpfootnote\z@
- \let\@makefnmark\frontmatter@makefnmark
- \frontmatter@setup
- \thispagestyle{titlepage}\label{FirstPage}%
- \frontmatter@title@produce
- \groupauthors@sw{%
- \frontmatter@author@produce@group
- }{%
- \frontmatter@author@produce@script
- }%
- \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}%
- }%
- \frontmatter@abstract@produce
- \@ifx@empty\@keywords{}{%
- \@keywords@produce\@keywords
- }%
- \@ifx@empty\@pacs{}{%
- \@pacs@produce\@pacs
- }%
- \par
- \frontmatter@finalspace
- \endgroup
-}%
-%%
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\old@refname%\@empty
- }%
-}%
-%%
-\def\ps@article{%
-% \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
-% \def\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
- \def\@evenhead{}%
- \def\@oddhead{}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\markboth
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-%%
-\def\@make@capt@title#1#2{%
- \@ifx@empty\float@link{\@firstofone}{\expandafter\href\expandafter{\float@link}}%
- {{\bfseries#1}}\@caption@fignum@sep#2%
-}%
-\def\@caption@fignum@sep{{\bfseries.} }%
-\setcounter{secnumdepth}{0}
-\def\section{\@startsection{section}{1}{\z@}{-0.8cm \@plus-1ex \@minus -.2ex}{0.5cm}{\normalfont\large\bfseries\centering}}% \sffamily\small
-\def\subsection{\@startsection{subsection}{2}{\z@}{-.8cm \@plus-1ex \@minus -.2ex}{.5cm}{\normalfont\large\bfseries\centering}}% \sffamily\small
-\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-.8cm \@plus-1ex \@minus -.2ex}{.5cm}{\normalfont\large\bfseries\itshape\centering}}% \sffamily\small
-%
-\def\BIBsection{\@startsection{section}{1}{\z@}{-0.8cm \@plus-1ex \@minus -.2ex}{0.5cm}{\normalfont\large\bfseries\centering}}% \sffamily\small
-\def\figurename{FIGURE}
-%%
-\newcommand\rtx@myciteonline[3]{%
- \ifNAT@swa
- \leavevmode
- \unskip
-% \textsuperscript{\normalfont#1}% TeXSupport
- \space[{\normalfont#1}]%
- \if*#3*\else\ (#3)\fi
- \else
- #1%
- \fi
- \endgroup
-}%
-%%
-\appdef\setup@hook{%
- \authoryear@sw{}{%
- \def\NAT@cmprs{\z@}
-% \let\rtx@citesuper\rtx@mycitesuper%
- \let\NAT@citesuper\rtx@myciteonline%\rtx@citesuper
- \let\place@bibnumber\old@place@bibnumber
- \gdef\place@bibnumber@online#1{{#1}.\hskip5pt}%
- \let\place@bibnumber\place@bibnumber@online
- \def\NAT@spacechar{}%
- \def\NAT@conj{and\ }%
- \bibpunct{}{}{, }{s}{}{\textsuperscript{,}}% TeXSupport
- }%
-}%
-%%
- \def\rtx@mybibsection{%
- \@ifx@empty\refname{%
- \par\vspace{6\p@ plus 6\p@}%
- }{%
- \expandafter\BIBsection\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
-}%
-\let\bibsection\rtx@mybibsection%
- \fi}
-%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{pof}}%
-% This macro modifies the reprint output of POF journal to single column.
-% \begin{macrocode}
-%% POF journal to be one column at Reprint stage
-%%
-%% HISTORY
-%% Further corrected the text area and margins to closely match Print output: 23/04/2012
-\def\jnl@pof{pof}%
-\preprintsty@sw{}%
- {\ifx\@journal\jnl@pof%
- \typeout{AIP Info: \@journal\space journal style Single column, 2011/08/11}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -17pt
- \headheight 12pt
- \headsep 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
- \textheight=53.5pc
- \textwidth 33pc
- \columnsep 10pt
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
- \fi}
-}%
-% \end{macrocode}
-% End of \classoption{pof} code.
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-%
-%
-% \section{AAPM: The Socity Journals Style (\texttt{mph} substyle)}
-%
-% The file \file{aapm.rtx} is read in by the \classname{revtex4} document class
-% for applying the journal specific changes. User should use \texttt{[aapm,mph]}
-% for applying the required updates.
-%
-%
-% \begin{macrocode}
-%<*aapm>
-% \end{macrocode}
-%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX society AAPM selected}%
-\DeclareOption{mph}{\change@journal{mph}}%
-%%
-\@booleantrue\longbibliography@sw
-\@booleanfalse\authoryear@sw
-\def\@bibstyle{aapmrev\substyle@post}%
-\appdef\@bibdataout@rev{\@bibdataout@aapm}%
-\def\@bibdataout@aapm{%
- \immediate\write\@bibdataout{%
- @CONTROL{%
- aapm41Control%
- \longbibliography@sw{%
- ,pages="1",title="0"%
- }{%
- ,pages="0",title=""%
- }%
- }%
- }%
- \if@filesw
- \immediate\write\@auxout{\string\citation{aapm41Control}}%
- \fi
-}%
-\appdef\setup@hook{%
- \lengthcheck@sw{%
- \RequirePackage{times}%
- \frenchspacing%
- }{}%
-}
-\@booleantrue\preprintsty@sw
-\@booleantrue\showPACS@sw
-\@booleantrue\showKEYS@sw
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\@empty
- }%
-}%
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \ps@preprint
- }{%
- \ps@article
- }%
-}%
-\def\ps@preprint{%
- \def\@oddhead{\@runningtitle\hfil}%
- \def\@evenhead{\@runningtitle\hfil}%
- \def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
- \def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil\@runningtitle}%
- \def\@oddhead{\let\\\heading@cr\@runningtitle\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\@runningtitle{\@shorttitle}%
-\renewenvironment{titlepage}{%
- \let\wastwocol@sw\twocolumn@sw
- \onecolumngrid
- \newpage
- \thispagestyle{titlepage}%
- \c@page\z@% article sets this to one not zero???
-}{%
- \wastwocol@sw{\twocolumngrid}{\newpage}%
-}%
-\let\@fnsymbol@latex\@fnsymbol
-\let\@fnsymbol\@alph
-\def\adjust@abstractwidth{%
- \parindent1em\relax
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \preprintsty@sw{}{\rightskip.14\hsize\relax}
- \@afterheading\@afterindentfalse
-}%
-\def\frontmatter@abstractheading{}%
-\def\frontmatter@abstractfont{%
- \adjust@abstractwidth
-}%
-\def\frontmatter@postabstractspace{1\baselineskip}
-\def\frontmatter@finalspace{\addvspace{28\p@}}
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \@booleantrue\titlepage@sw
- \let\section\section@preprintsty
- \let\subsection\subsection@preprintsty
- \let\subsubsection\subsubsection@preprintsty
- }{}%
-}%
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \preprintsty@sw{\@flushglue\z@ plus.3\hsize\relax}%
- {\@flushglue.14\hsize\relax}
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-\def\frontmatter@authorformat{%
- \frontmatter@@indent
- \sffamily
-}%
-\renewcommand*\email[1][Electronic mail: ]{\begingroup\sanitize@url\@email{#1}}%
-\def\frontmatter@above@affilgroup{\par\addvspace{6\p@}%
-}%
-\def\frontmatter@above@affiliation@script{%
- \frontmatter@@indent
-}%
-\def\frontmatter@above@affiliation{%
-}%
-\def\frontmatter@affiliationfont{%
- \frontmatter@@indent
- \preprintsty@sw{}{\small}%
- \it
-}%
-\def\frontmatter@collaboration@above{%
-}%
-\def\frontmatter@setup{%
- \normalfont
-}%
-\def\frontmatter@title@above{\addvspace{6\p@}}%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\Large}%
- \sffamily
- \bfseries
- \raggedright
- \parskip\z@skip
-}%
-\def\frontmatter@title@below{\addvspace{7.5\p@}}%
-\def\@author@parskip{3\p@}%
-\@booleanfalse\altaffilletter@sw
-\def\frontmatter@makefnmark{%
- \@textsuperscript{%
- \normalfont\@thefnmark%(
- )%
- }%
-}%
-\def\frontmatter@authorbelow{%
-\addvspace{3\p@}%
-}%
-\let\affil@cutoff\tw@
-\def\frontmatter@RRAP@format{%
- \addvspace{2\p@}%
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \preprintsty@sw{}{\advance\rightskip.14\hsize\relax}
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\punct@RRAP{;\egroup\ \hbox\bgroup}%
-\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}%
-\def\frontmatter@PACS@format{%
- \addvspace{11\p@}%
- \adjust@abstractwidth
- \parskip\z@skip
- \samepage
-}%
-\def\frontmatter@keys@format{%
- \adjust@abstractwidth
- \samepage
-}%
-\def\ps@titlepage{%
- \def\@oddhead{%
- \@runningtitle
- \hfill
- \produce@preprints\@preprint
- }%
- \let\@evenhead\@oddhead
- \def\@oddfoot{%
- \hb@xt@\z@{\byrevtex\hss}%
- \hfil
- \preprintsty@sw{\thepage}{}%
- \quad\checkindate
- \hfil
- }%
- \let\@evenfoot\@oddfoot
-}%
-\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX and AAPM}{}}%
-\def\produce@preprints#1{%
- \preprint@sw{%
- \vtop to \z@{%
- \def\baselinestretch{1}%
- \small
- \let\preprint\preprint@count
- \count@\z@#1\@ifnum{\count@>\tw@}{%
- \hbox{%
- \let\preprint\preprint@hlist
- #1\setbox\z@\lastbox
- }%
- }{%
- \let\preprint\preprint@cr
- \halign{\hfil##\cr#1\crcr}%
- \par
- \vss
- }%
- }%
- }{}%
-}%
-\def\preprint@cr#1{#1\cr}%
-\def\preprint@count#1{\advance\count@\@ne}%
-\def\preprint@hlist#1{#1\hbox{, }}%
-\newenvironment{Lead@inParagraph}{%
- \par
- \bfseries
- \@afterheading\@afterindentfalse
-}{%
- \par
- \hb@xt@\hsize{\hfil\leaders\hrule\hfil\leaders\hrule\hfil\hfil}%
-}%
-\appdef\frontmatter@init{%
- \let@environment{quotation@ltx}{quotation}%
- \let@environment{quotation}{Lead@inParagraph}%
-}%
-\appdef\@startsection@hook{%
- \let@environment{quotation}{quotation@ltx}%
-}%
-\def\secnums@rtx{%
- \@ifxundefined\thepart{%
- \def\thepart {\Roman{part}}%
- }{}%
- \@ifxundefined\thesection{%
- \def\thesection {\Roman{section}}%
- \def\p@section {}%
- }{}%
- \@ifxundefined\thesubsection{%
- \def\thesubsection {\thesection.\Alph{subsection}}%
- \def\p@subsection {}%
- }{}%
- \@ifxundefined\thesubsubsection{%
- \def\thesubsubsection {\thesubsection.\arabic{subsubsection}}%
- \def\p@subsubsection {}%
- }{}%
- \@ifxundefined\theparagraph{%
- \def\theparagraph {\thesubsubsection.\alph{paragraph}}%
- \def\p@paragraph {}%
- }{}%
- \@ifxundefined\thesubparagraph{%
- \def\thesubparagraph {\theparagraph.\arabic{subparagraph}}%
- \def\p@subparagraph {}%
- }{}%
-}%
-\def\@seccntformat#1{\csname the#1\endcsname.\hskip0.5em\relax}%
-\def\@hang@from#1#2#3{#1#2#3}%
-\def\section{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {1.5\baselineskip \@plus1ex \@minus .2ex}%
- {.5\baselineskip}%
- {%
- \normalfont
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
-\def\subsection{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {1.5\baselineskip \@plus1ex \@minus .2ex}%
- {.5\baselineskip}%
- {%
- \normalfont
- \fontsize{9.5}{12}
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-\def\subsubsection{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {1.5\baselineskip \@plus1ex \@minus .2ex}%
- {.5\baselineskip}%
- {%
- \normalfont
- \fontsize{9.5}{12}
- \sffamily
- \bfseries
- \itshape
- \raggedright
- }%
-}%
-\def\paragraph{%
- \@startsection
- {paragraph}%
- {4}%
- {\parindent}%
- {\z@}%
- {-1em}%
- {\normalfont\normalsize\itshape}%
-}%
-\def\subparagraph{%
- \@startsection
- {subparagraph}%
- {5}%
- {\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}%
-}%
-\def\section@preprintsty{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-\def\subsection@preprintsty{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-\def\subsubsection@preprintsty{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \itshape\bfseries
- \raggedright
- }%
-}%
-\let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote
-\def\@pnumwidth{1.55em}
-\def\@tocrmarg {2.55em}
-\def\@dotsep{2}
-\def\ltxu@dotsep{4.5pt}
-\setcounter{tocdepth}{3}
-\def\tableofcontents{%
- \addtocontents{toc}{\string\tocdepth@munge}%
- \print@toc{toc}%
- \addtocontents{toc}{\string\tocdepth@restore}%
-}%
-\def\tocdepth@munge{%
- \let\l@section@saved\l@section
- \let\l@section\@gobble@tw@
-}%
-\def\@gobble@tw@#1#2{}%
-\def\tocdepth@restore{%
- \let\l@section\l@section@saved
-}%
-\def\l@part#1#2{\addpenalty{\@secpenalty}%
- \begingroup
- \set@tocdim@pagenum{#2}%
- \parindent \z@
- \rightskip\tocleft@pagenum plus 1fil\relax
- \skip@\parfillskip\parfillskip\z@
- \addvspace{2.25em plus\p@}%
- \large \bf %
- \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@
- \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip
- \par
- \nobreak %
- \endgroup
-}%
-\def\tocleft@{\z@}%
-\def\tocdim@min{5\p@}%
-\def\l@section{%
- \l@@sections{}{section}% Implicit #3#4
-}%
-\def\l@f@section{%
- \addpenalty{\@secpenalty}%
- \addvspace{1.0em plus\p@}%
- \bf
-}%
-\def\l@subsection{%
- \l@@sections{section}{subsection}% Implicit #3#4
-}%
-\def\l@subsubsection{%
- \l@@sections{subsection}{subsubsection}% Implicit #3#4
-}%
-\def\l@paragraph#1#2{}%
-\def\l@subparagraph#1#2{}%
-\let\toc@pre\toc@pre@auto
-\let\toc@post\toc@post@auto
-\def\listoffigures{\print@toc{lof}}%
-\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
-\def\listoftables{\print@toc{lot}}%
-\let\l@table\l@figure
-\def\figurename{\textsc{Fig.}}
-\def\tablename{\textsc{Table}}
-\long\def\@makecaption#1#2{%
- \par
- \vskip\abovecaptionskip
- \begingroup
- \preprintsty@sw{\small}{\footnotesize}\rmfamily
- \sbox\@tempboxa{%
- \let\\\heading@cr
- \@make@capt@title{#1}{#2}%
- }%
- \@ifdim{\wd\@tempboxa >\hsize}{%
- \begingroup
- \samepage
- \flushing
- \let\footnote\@footnotemark@gobble
- \@make@capt@title{#1}{#2}\par
- \endgroup
- }{%
- \global \@minipagefalse
- \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}%
- }%
- \endgroup
- \vskip\belowcaptionskip
-}%
-\def\@caption@fignum@sep{\nobreak\hskip.5em plus.2em\ignorespaces}%
-\@booleanfalse\raggedcolumn@sw
-\def\table@hook{\preprintsty@sw{\small}{\footnotesize}}%
-\def\tableft@skip@float{\z@ plus\hsize}%
-\def\tabmid@skip@float{\@flushglue}%
-\def\tabright@skip@float{\z@ plus\hsize}%
-\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}%
-\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}%
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
- \noindent
- \nobreak\hskip-\leftskip
- \hb@xt@\leftskip{%
- \hss\@makefnmark\ %
- }%
- #1%
- \par
-}%
-\prepdef\appendix{%
- \par
- \let\@hangfrom@section\@hangfrom@appendix
- \let\@sectioncntformat\@appendixcntformat
-}%
-\def\@hangfrom@appendix#1#2#3{%
- #1%
- \@if@empty{#2}{%
- #3%
- }{%
- #2\@if@empty{#3}{}{:\ #3}%
- }%
-}%
-\def\@hangfroms@appendix#1#2{%
- #1#2%
-}%
-\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}%
- \def\pre@bibdata{\jobname\bibdata@app}%
-\def\refname{References}%
-\def\rtx@bibsection{%
- \@ifx@empty\refname{%
- \par\vspace{6\p@ plus 6\p@}%
- }{%
- \expandafter\section\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
-}%
-\let\bibpreamble\@empty
-\appdef\setup@hook{%
- \bibsep\z@\relax
-}%
-\def\newblock{\ }%
-\appdef\setup@hook{%
- \def\bibfont{%
- \preprintsty@sw{}{\footnotesize}%
- \@clubpenalty\clubpenalty
- \labelsep\z@
- }%
-}%
-\let\place@bibnumber\place@bibnumber@sup
-\newenvironment{theindex}{%
- \columnseprule \z@
- \columnsep 35\p@
- \c@secnumdepth-\maxdimen
- \onecolumngrid@push
- \section{\indexname}%
- \thispagestyle{plain}%
- \parindent\z@
- \parskip\z@ plus.3\p@\relax
- \let\item\@idxitem
- \onecolumngrid@pop
-}{%
-}%
-\def\@idxitem{\par\hangindent 40\p@}
-\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
-\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
-\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
-\expandafter\def\csname rtx@aapm10pt\endcsname{%
- \let\@currname@class\@currname
- \def\@currname{aps10pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 10pt}%
- \aapmreprint
-}%
-\expandafter\def\csname rtx@aapm11pt\endcsname{\csname rtx@aapm12pt\endcsname}%
-\expandafter\def\csname rtx@aapm12pt\endcsname{%
- \let\@currname@class\@currname
- \def\@currname{aps12pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 12pt}%
- \aapmpreprint
-}%
-\def\today{%
- \number\day\space
- \ifcase\month
- \or January\or February\or March\or April\or May\or June%
- \or July\or August\or September\or October\or November\or December%
- \fi\space
- \number\year
-}%
-\@booleantrue\groupauthors@sw
-\@booleanfalse\@affils@sw
-\@booleantrue\runinaddress@sw
-\def\@journal@default{mph}%
-\def\@pointsize@default{12}%
- \appdef\setup@hook{%
- \preprintsty@sw{}{%
- \def\normalsize{%
- \@setfontsize\normalsize\@xpt{12}%
- \abovedisplayskip 6\p@ plus2\p@ minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
- }%
- \def\small{%
- \@setfontsize\small\@ixpt{11}%
- \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ \@plus2\p@
- \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
- \def\@listi{%
- \leftmargin\leftmargini
- \topsep 4\p@ \@plus2\p@ \@minus2\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep
- }%
- }%
- \def\Large{%
- \@setfontsize\Large\@xivpt{16pt}%
- }%
- \def\@listI{%
- \leftmargin\leftmargini
- \parsep 4\p@ plus2\p@ minus\p@
- \topsep 8\p@ plus2\p@ minus4\p@
- \itemsep\z@
- }%
- \textheight = 694.0\p@
- }%
- }%
-\def\rtx@aapmmph{%
- \typeout{Using journal substyle \@journal.}%
- \@booleanfalse\authoryear@sw%
- \input{fleqn.clo}%
- \PassOptionsToPackage{fleqn}{amsmath}%
- \AtBeginDocument{\mathindent12pt\relax}%
-}%
-\appdef\setup@hook{%
- \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
- \let\onlinecite\rev@citealpnum
-}%
-\@booleantrue\footinbib@sw
-\let\place@bibnumber\place@bibnumber@sup
-\appdef\setup@hook{%
- \footinbib@sw{}{%
- \class@warn{Citations are superscript numbers: footnotes must be endnotes; changing to that configuration}%
- \@booleantrue\footinbib@sw
- }%
-}%
-\def\present@bibnote#1#2{%
- \item[%
- \textsuperscript{%
- \normalfont%
- \Hy@raisedlink{\hyper@anchorstart{frontmatter.#1}\hyper@anchorend}%
- \begingroup%
- \csname c@\@mpfn\endcsname#1\relax%
- \frontmatter@thefootnote%
- )\endgroup%
- }%
- ]#2\par%
-}%
-\def\make@footnote@endnote{%
- \footinbib@sw{%
- \ltx@footnote@push
- \def\thempfn{Note\thefootnote}%
- \let\ltx@footmark\rev@citemark
- \let\ltx@foottext\rev@endtext
- \appdef\class@enddocumenthook{\auto@bib}%
- \let\printendnotes\relax
- }{}%
-}%
-\def\aapmreprint{%
-}%
-\def\aapmpreprint{%
-}%
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</aapm>
-% \end{macrocode}
-%
-%
-%
-% \section{SOR: The Socity Journals Style (\texttt{jor} substyle)}
-%
-% The file \file{sor.rtx} is read in by the \classname{revtex4} document class
-% for applying the journal specific changes. User should use \texttt{[sor,jor]}
-% for applying the required updates.
-%
-%
-% \begin{macrocode}
-%<*sor>
-% \end{macrocode}
-%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX society AIP selected}%
-%%
-\DeclareOption{jor}{\change@journal{jor}}%
-\def\adv{AIP Advances}%
-\def\ao{Appl.\ Opt.}%
-\def\ap{Appl.\ Phys.}%
-\def\apl{Appl.\ Phys.\ Lett.}%
-\def\apm{Appl.\ Phys.\ Lett.\ Mater.}%
-\def\apj{Astrophys.\ J.}%
-\def\bell{Bell Syst.\ Tech.\ J.}%
-\def\bmf{Biomicrofluidics}%
-\def\cha{Chaos}%
-\def\jqe{IEEE J.\ Quantum Electron.}%
-\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.}%
-\def\aprop{IEEE Trans.\ Antennas Propag.}%
-\def\mtt{IEEE Trans.\ Microwave Theory Tech.}%
-\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.}%
-\def\jcp{J.\ Chem.\ Phys.}%
-\def\jap{J.\Appl.\Phys.}%
-\def\jmp{j.\Math.\Phys.}%
-\def\jmo{J.\ Mod.\ Opt.}%
-\def\josa{J.\ Opt.\ Soc.\ Am.}%
-\def\josaa{J.\ Opt.\ Soc.\ Am.\ A}%
-\def\josab{J.\ Opt.\ Soc.\ Am.\ B}%
-\def\jpp{J.\ Phys.\ (Paris)}%
-\def\jpr{j.\Phys.\Chem.\Ref.\Data}%
-\def\ltp{Low.\Temp.\Phys.}%
-\def\nat{Nature (London)}%
-\def\oc{Opt.\ Commun.}%
-\def\ol{Opt.\ Lett.}%
-\def\pl{Phys.\ Lett.}%
-\def\pop{Phys.\Plasmas}%
-\def\pof{Phys.\Fluids}%
-\def\pra{Phys.\ Rev.\ A}%
-\def\prb{Phys.\ Rev.\ B}%
-\def\prc{Phys.\ Rev.\ C}%
-\def\prd{Phys.\ Rev.\ D}%
-\def\pre{Phys.\ Rev.\ E}%
-\def\prl{Phys.\ Rev.\ Lett.}%
-\def\rmp{Rev.\ Mod.\ Phys.}%
-\def\rsi{Rev.\Sci.\Instrum.}%
-\def\rse{J. \Renewable Sustainable Energy}%
-\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}%
-\def\sjqe{Sov.\ J.\ Quantum Electron.}%
-\def\vr{Vision Res.}%
-\def\sd{Structural Dynamics}%
-\def\jor{J.\ Rheol.}%
-\def\cp{AIP\ Conference\ Proceedings}%
-%%
-\DeclareOption{author-numerical}{%
- \@booleantrue\authoryear@sw
- \@booleantrue\authornum@sw
-}%
-\DeclareOption{article-title}{%
- \@booleanfalse\sor@jtitx@sw
-}%
-\@booleantrue \sor@jtitx@sw
-\@booleanfalse\authoryear@sw
-\@booleanfalse\authornum@sw
-\@booleanfalse\onecolumn@sw
-\@booleanfalse\newonecolumn@sw
-\appdef\@bibdataout@rev{\@bibdataout@sor}%
-\def\@bibdataout@sor{%
- \immediate\write\@bibdataout{%
- @CONTROL{%
- sor41Control%% TeXSupport: aip
- \longbibliography@sw{\true@sw}{\sor@jtitx@sw{\false@sw}{\true@sw}}%
- {%
- ,pages="1",title="0"%
- }{%
- ,pages="0",title=""%
- }%
- }%
- }%
- \if@filesw
- \immediate\write\@auxout{\string\citation{sor41Control}}%% TeXSupport: aip
- \fi
-}%
-\@booleantrue\preprintsty@sw
-\@booleantrue\showPACS@sw
-\@booleantrue\showKEYS@sw
-%% TeXSupport
-\let\old@refname\refname
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\@empty
- }%
-}%
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \ps@preprint
- }{%
- \ps@article
- }%
-}%
-\def\ps@preprint{%
- \def\@oddhead{\@runningtitle\hfil}%
- \def\@evenhead{\@runningtitle\hfil}%
- \def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
- \def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil\@runningtitle}%
- \def\@oddhead{\let\\\heading@cr\@runningtitle\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\@runningtitle{\@shorttitle}%
-\renewenvironment{titlepage}{%
- \let\wastwocol@sw\twocolumn@sw
- \onecolumngrid
- \newpage
- \thispagestyle{titlepage}%
- \c@page\z@% article sets this to one not zero???
-}{%
- \wastwocol@sw{\twocolumngrid}{\newpage}%
-}%
-\let\@fnsymbol@latex\@fnsymbol
-\let\@fnsymbol\@alph
-\def\adjust@abstractwidth{%
- \parindent1em\relax
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@afterheading\@afterindentfalse
-}%
-\def\frontmatter@abstractheading{}%
-\def\frontmatter@abstractfont{%
- \adjust@abstractwidth
-}%
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \@booleantrue\titlepage@sw
- \let\section\section@preprintsty
- \let\subsection\subsection@preprintsty
- \let\subsubsection\subsubsection@preprintsty
- }{}%
-}%
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-\def\frontmatter@authorformat{%
- \frontmatter@@indent
- \sffamily
-}%
-\renewcommand*\email[1][Electronic mail: ]{\begingroup\sanitize@url\@email{#1}}%
-\def\frontmatter@above@affilgroup{%
-}%
-\def\frontmatter@above@affiliation@script{%
- \frontmatter@@indent
-}%
-\def\frontmatter@above@affiliation{%
-}%
-\def\frontmatter@affiliationfont{%
- \frontmatter@@indent
- \preprintsty@sw{}{\small}%
- \it
-}%
-\def\frontmatter@collaboration@above{%
-}%
-\def\frontmatter@setup{%
- \normalfont
-}%
-\def\frontmatter@title@above{\addvspace{6\p@}}%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\Large}%
- \sffamily
- \bfseries
- \raggedright
- \parskip\z@skip
-}%
-\def\frontmatter@title@below{\addvspace{3\p@}}%
-\def\@author@parskip{3\p@}%
-\@booleantrue\altaffilletter@sw
-\def\frontmatter@makefnmark{%
- \@textsuperscript{%
- \normalfont\@thefnmark%(
- )%
- }%
-}%
-\def\frontmatter@authorbelow{%
-\addvspace{3\p@}%
-}%
-\let\affil@cutoff\tw@
-\def\frontmatter@RRAP@format{%
- \addvspace{5\p@}%
- \small
- \raggedright
- \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\punct@RRAP{;\egroup\ \hbox\bgroup}%
-\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}%
-\def\frontmatter@PACS@format{%
- \addvspace{11\p@}%
- \adjust@abstractwidth
- \parskip\z@skip
- \samepage
-}%
-\def\frontmatter@keys@format{%
- \adjust@abstractwidth
- \samepage
-}%
-\def\ps@titlepage{%
- \def\@oddhead{%
- \@runningtitle
- \hfill
- \produce@preprints\@preprint
- }%
- \let\@evenhead\@oddhead
- \def\@oddfoot{%
- \hb@xt@\z@{\byrevtex\hss}%
- \hfil
- \preprintsty@sw{\thepage}{}%
- \quad\checkindate
- \hfil
- }%
- \let\@evenfoot\@oddfoot
-}%
-\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX and AIP}{}}%
-\def\produce@preprints#1{%
- \preprint@sw{%
- \vtop to \z@{%
- \def\baselinestretch{1}%
- \small
- \let\preprint\preprint@count
- \count@\z@#1\@ifnum{\count@>\tw@}{%
- \hbox{%
- \let\preprint\preprint@hlist
- #1\setbox\z@\lastbox
- }%
- }{%
- \let\preprint\preprint@cr
- \halign{\hfil##\cr#1\crcr}%
- \par
- \vss
- }%
- }%
- }{}%
-}%
-\def\preprint@cr#1{#1\cr}%
-\def\preprint@count#1{\advance\count@\@ne}%
-\def\preprint@hlist#1{#1\hbox{, }}%
-\newenvironment{Lead@inParagraph}{%
- \par
- \bfseries
- \@afterheading\@afterindentfalse
-}{%
- \par
- \hb@xt@\hsize{\hfil\leaders\hrule\hfil\leaders\hrule\hfil\hfil}%
-}%
-\appdef\frontmatter@init{%
- \let@environment{quotation@ltx}{quotation}%
- \let@environment{quotation}{Lead@inParagraph}%
-}%
-\appdef\@startsection@hook{%
- \let@environment{quotation}{quotation@ltx}%
-}%
-\def\@seccntformat#1{\csname the#1\endcsname.\quad}%
-\def\@hang@from#1#2#3{#1#2#3}%
-\def\section{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
-\def\subsection{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \raggedright
- }%
-}%
-\def\subsubsection{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \small
- \sffamily
- \bfseries
- \itshape
- \raggedright
- }%
-}%
-\def\paragraph{%
- \@startsection
- {paragraph}%
- {4}%
- {\parindent}%
- {\z@}%
- {-1em}%
- {\normalfont\normalsize\itshape}%
-}%
-\def\subparagraph{%
- \@startsection
- {subparagraph}%
- {5}%
- {\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}%
-}%
-\def\section@preprintsty{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-\def\subsection@preprintsty{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \bfseries
- \raggedright
- }%
-}%
-\def\subsubsection@preprintsty{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont
- \itshape\bfseries
- \raggedright
- }%
-}%
-\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
-\def\@pnumwidth{1.55em}
-\def\@tocrmarg {2.55em}
-\def\@dotsep{2}
-\def\ltxu@dotsep{4.5pt}
-\setcounter{tocdepth}{3}
-\def\tableofcontents{%
- \addtocontents{toc}{\string\tocdepth@munge}%
- \print@toc{toc}%
- \addtocontents{toc}{\string\tocdepth@restore}%
-}%
-\def\tocdepth@munge{%
- \let\l@section@saved\l@section
- \let\l@section\@gobble@tw@
-}%
-\def\@gobble@tw@#1#2{}%
-\def\tocdepth@restore{%
- \let\l@section\l@section@saved
-}%
-\def\l@part#1#2{\addpenalty{\@secpenalty}%
- \begingroup
- \set@tocdim@pagenum{#2}%
- \parindent \z@
- \rightskip\tocleft@pagenum plus 1fil\relax
- \skip@\parfillskip\parfillskip\z@
- \addvspace{2.25em plus\p@}%
- \large \bf %
- \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@
- \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip
- \par
- \nobreak %
- \endgroup
-}%
-\def\tocleft@{\z@}%
-\def\tocdim@min{5\p@}%
-\def\l@section{%
- \l@@sections{}{section}% Implicit #3#4
-}%
-\def\l@f@section{%
- \addpenalty{\@secpenalty}%
- \addvspace{1.0em plus\p@}%
- \bf
-}%
-\def\l@subsection{%
- \l@@sections{section}{subsection}% Implicit #3#4
-}%
-\def\l@subsubsection{%
- \l@@sections{subsection}{subsubsection}% Implicit #3#4
-}%
-\def\l@paragraph#1#2{}%
-\def\l@subparagraph#1#2{}%
-\let\toc@pre\toc@pre@auto
-\let\toc@post\toc@post@auto
-\def\listoffigures{\print@toc{lof}}%
-\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
-\def\listoftables{\print@toc{lot}}%
-\let\l@table\l@figure
-\@booleanfalse\raggedcolumn@sw
-\def\tableft@skip@float{\z@ plus\hsize}%
-\def\tabmid@skip@float{\@flushglue}%
-\def\tabright@skip@float{\z@ plus\hsize}%
-\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}%
-\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}%
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
- \noindent
- \nobreak\hskip-\leftskip
- \hb@xt@\leftskip{%
- \hss\@makefnmark\ %
- }%
- #1%
- \par
-}%
-\prepdef\appendix{%
- \par
- \let\@hangfrom@section\@hangfrom@appendix
- \let\@sectioncntformat\@appendixcntformat
-}%
-\def\@hangfrom@appendix#1#2#3{%
- #1%
- \@if@empty{#2}{%
- #3%
- }{%
- #2\@if@empty{#3}{}{:\ #3}%
- }%
-}%
-\def\@hangfroms@appendix#1#2{%
- #1#2%
-}%
-\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}%
- \def\pre@bibdata{\jobname\bibdata@app}%
-\def\refname{References}%
-\def\rtx@bibsection{%
- \@ifx@empty\refname{%
- \par\vspace{6\p@ plus 6\p@}%
- }{%
- \expandafter\section\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
-}%
-\let\bibpreamble\@empty
-\appdef\setup@hook{%
- \bibsep\z@\relax
-}%
-\def\newblock{\ }%
-\appdef\setup@hook{%
- \def\bibfont{%
- \preprintsty@sw{}{\footnotesize}%
- \@clubpenalty\clubpenalty
- \labelsep\z@
- }%
-}%
-\let\place@bibnumber\place@bibnumber@sup
-\newenvironment{theindex}{%
- \columnseprule \z@
- \columnsep 35\p@
- \c@secnumdepth-\maxdimen
- \onecolumngrid@push
- \section{\indexname}%
- \thispagestyle{plain}%
- \parindent\z@
- \parskip\z@ plus.3\p@\relax
- \let\item\@idxitem
- \onecolumngrid@pop
-}{%
-}%
-\def\@idxitem{\par\hangindent 40\p@}
-\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
-\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
-\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
-\expandafter\def\csname rtx@sor10pt\endcsname{%% TeXSupport: aip
- \let\@currname@class\@currname
- \def\@currname{aps10pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 10pt}%
- \sorreprint
-}%
-\expandafter\def\csname rtx@sor11pt\endcsname{\csname rtx@sor12pt\endcsname}%
-\expandafter\def\csname rtx@sor12pt\endcsname{%
- \let\@currname@class\@currname
- \def\@currname{aps12pt\substyle@post}%
- \class@info{Reading file \@currname.\substyle@ext}%
- \input{\@currname.\substyle@ext}%
- \let\@currname\@currname@class
- \class@info{Overriding 12pt}%
- \sorpreprint
-}%
-\def\today{%
- \number\day\space
- \ifcase\month
- \or January\or February\or March\or April\or May\or June%
- \or July\or August\or September\or October\or November\or December%
- \fi\space
- \number\year
-}%
- \clo@superscriptaddress
-\def\@journal@default{cha}%
-\def\@pointsize@default{12}%
-\@booleanfalse\pagerestrict@sw%
-%%
-\def\rtx@sorjor{%
- \typeout{Using journal substyle \@journal.}%
- \@booleantrue\authoryear@sw%
- \@booleantrue\twoside@sw\@mparswitchfalse%
-}%
-%%
-\@booleantrue\footinbib@sw
-\let\old@place@bibnumber\place@bibnumber
-\let\place@bibnumber\place@bibnumber@sup
-\appdef\setup@hook{%
- \authoryear@sw{%
- \sor@jtitx@sw{%
- \def\@bibstyle{aipauth\substyle@post}%
- }{%
- \def\@bibstyle{aipauth\substyle@post}%
- }%
- \authornum@sw{%
- \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
- \let\onlinecite\rev@citealpnum
- }{%
- \bibhang10\p@
- \bibpunct{(%)
- }{%(
- )}{; }{a}{,}{,}%
- \@booleanfalse\footinbib@sw
- \let\NAT@mcite\@ne
- \let\NAT@sort\z@
- \def\NAT@cmprs{\z@}%
- \let\NAT@def@citea\rtx@def@citea
- \let\NAT@def@citea@close\rtx@def@citea@close
- }%
- }{%
- \sor@jtitx@sw{%
- \def\@bibstyle{sornum\substyle@post}%
- }{%
- \def\@bibstyle{sornum\substyle@post}%
- }%
- \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
- \let\onlinecite\rev@citealpnum
- }%
-}%
-\def\make@footnote@endnote{%
- \footinbib@sw{%
- \authoryear@sw{\authornum@sw{\false@sw}{\true@sw}}{\false@sw}%
- {}{%
- \ltx@footnote@push
- \def\thempfn{Note\thefootnote}%
- \let\ltx@footmark\rev@citemark
- \let\ltx@foottext\rev@endtext
- \appdef\class@enddocumenthook{\auto@bib}%
- \let\printendnotes\relax
- }%
- }{}%
-}%
-\def\sorreprint{%
-}%
-\def\sorpreprint{%
-}%
-%%
-\xdef\t@talAU{0}% TeXSupport
-\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}{}%
- \let\AU@temp\@empty
- \@tempcnta\z@
- \let\AF@opr \@gobble
- \def\AU@opr{\@author@count\@tempcnta}%
- \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}%
- \@AAC@list%
- \xdef\t@talAU{\the\@tempcnta}% TeXSupport
- \expandafter\CO@opr\@author@cleared
- \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
- \begingroup
- \frontmatter@above@affiliation@script
- \let\AFF@opr \@affil@script
- \@AFF@list
- \frontmatter@footnote@produce
- \par
- \endgroup
- \endgroup
-}%
-\def\doauthor#1#2#3{% TeXSupport
- \ignorespaces#1\unskip\@listcomma
- \begingroup
- \ifnum\t@talAU=1\else\ifnum\c@affil=\@ne\relax\else#3\fi\fi% TeXSupport
- \@if@empty{#2}{\endgroup{}{}}{\endgroup{\ifnum\t@talAU=1\else\ifnum\c@affil=\@ne\relax\else\comma@space\fi\fi}{}\frontmatter@footnote{#2}}% TeXSupport
- \space \@listand
-}%
-%%
-\appdef\rtx@require@packages{%
-%%
-%%
-%% Journal of Rheology (jor)
-%%
-\def\jnl@jor{jor}%
-\preprintsty@sw{}%
- {\ifx\@journal\jnl@jor%
- \typeout{SOR Info: \@journal\space journal style Single column, 2013/10/24}%
- \@booleanfalse\twocolumn@sw%
- \appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 28pt%
- \evensidemargin 28pt%
- \marginparwidth 30pt%
- }{%
- \oddsidemargin 28pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
- }%
- \marginparsep 10pt
- \topmargin -17pt
- \headheight 12pt
- \headsep 25pt
- \topskip 10pt
- \splittopskip\topskip
- \footskip 30pt
- \textheight=53.5pc
- \textwidth 33pc
- \columnsep 10pt
- \def\title@column#1{%
- \minipagefootnote@init
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
- \ltx@no@footnote
- #1%
- \endgroup
- \minipagefootnote@foot
- }%
-\def\frontmatter@title@format{%
- \preprintsty@sw{}{\Large}%
- \sffamily%
- \bfseries%
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%% \raggedright%
- \parskip\z@skip%
-}%
-\def\frontmatter@@indent{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%% \raggedright
-%% \advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \@flushglue\skip@
-}%
-%% \def\frontmatter@authorformat{%
-%% \frontmatter@@indent
-%% \sffamily
-%% }%
-\def\frontmatter@RRAP@format{%
- \addvspace{5\p@}%
- \small
- \leftskip0pt plus1fill%
- \rightskip0pt plus1fill%
- \parindent\z@%
-%%\raggedright
-%%\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
- \everypar{%
- \hbox\bgroup(\@gobble@leavemode@uppercase%)
- }%
- \def\par{%
- \@ifvmode{}{%(
- \unskip)\egroup\@@par
- }%
- }%
-}%
-\def\frontmatter@abstractfont{}%
-\def\frontmatter@abstractwidth{\textwidth}
-\def\abstractname{Synopsis}
-\def\frontmatter@abstractheading{%
- \begingroup
- \centering\large
- {\bfseries\abstractname}
- \par\vskip.25\baselineskip
- \endgroup
-}%
-\appdef\setup@hook{%
- \preprintsty@sw{}{%
- \let\refname\old@refname%\@empty
- }%
-}%
-%
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\sffamily\thepage\quad\checkindate\hfil\@runningtitle\hfil}%
- \def\@oddhead{\let\\\heading@cr\hfil\sffamily\@runningtitle\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\@make@capt@title#1#2{%
- \@ifx@empty\float@link{\@firstofone}{\expandafter\href\expandafter{\float@link}}%
- {{\bfseries#1}}\@caption@fignum@sep#2%
-}%
-\def\@caption@fignum@sep{{\bfseries.} }%
-%%
- \fi%
-}
-}%
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</sor>
-% \end{macrocode}
-%
-%
-%
-%
-% \Finale
-% %Here ends the programmer's documentation.
-% \endinput
-%
-\endinput
diff --git a/macros/latex/contrib/revtex/source/ltxdocext.dtx b/macros/latex/contrib/revtex/source/ltxdocext.dtx
deleted file mode 100644
index d3d8b772f5..0000000000
--- a/macros/latex/contrib/revtex/source/ltxdocext.dtx
+++ /dev/null
@@ -1,1259 +0,0 @@
-% \iffalse meta-comment balanced on line 108
-% ltxdocext.dtx: package to extend the ltxdoc class of standard LaTeX
-% Copyright (c) 2008 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 ltxdocext.dtx
-% and the derived files
-% ltxdocext.sty, ltxdocext.pdf, ltxdocext.ins, ltxdocext.drv.
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex ltxdocext.dtx
-%
-% Documentation:
-% latex ltxdocext.dtx; ...
-%
-% Program calls to get the documentation (example):
-% pdflatex ltxdocext.dtx
-% makeindex -s gind.ist ltxdocext.idx
-% makeindex -s gglo.ist -o ltxdocext.gls ltxdocext.glo
-% pdflatex ltxdocext.dtx
-% makeindex -s gind.ist ltxdocext.idx
-% pdflatex ltxdocext.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>
-\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.
-
-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{ltxdocext.sty}{%
- \from{ltxdocext.dtx}{package,kernel}%
- }%
- % \file{acrofont.sty}{\from{ltxdocext.dtx}{fonts}}%
- }%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* ltxdocext.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 ltxdocext.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{ltxdocext.dtx}
-%
-% \iffalse ltxdoc klootch
-%<*ltxdocext>
-%%% @LaTeX-file{
-%%% filename = "ltxdocext.dtx",
-%%% version = "1.0a",
-%%% date = "2018/12/26",
-%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% commissioned by the American Physical Society.
-%%% ",
-%%% copyright = "Copyright (C) 1999, 2008 Arthur Ogawa,
-%%% distributed under the terms of the
-%%% LaTeX Project Public License, 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, ltxdoc",
-%%% supported = "yes",
-%%% abstract = "extensions to the ltxdoc class",
-%%% }
-%</ltxdocext>
-% \fi
-%
-% \iffalse ltxdoc klootch
-% The following references the \file{README-LTXDOCEXT} 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-LTXDOCEXT}" to locate it.
-% \fi\input{README-LTXDOCEXT}%
-%
-% \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}
-%ltxdocext.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{latex ltxdocext.dtx}}%
-% Typesetting the source file under pdflatex
-% generates the readme and the documentation.
-%\begin{verbatim}
-%README ltxdocext.pdf
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex ltxdocext.ins}}%
-% Typesetting this file with \TeX\ generates
-% the package file.
-%\begin{verbatim}
-%ltxdocext.sty acrofont.sty
-%\end{verbatim}
-%
-% \subsubsection{Documentation}%
-% The following are the online documentation:
-% \begin{verbatim}
-%ltxdocext.pdf
-% \end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}
-%ltxdocext.aux ltxdocext.idx ltxdocext.ind ltxdocext.log ltxdocext.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}
-%<*driver|package|fonts>
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
-%</driver|package|fonts>
-% \end{macrocode}
-% As desired, the following modules all
-% take common version information:
-% \begin{macrocode}
-%<package>\ProvidesFile{ltxdocext.sty}%
-%<fonts>\ProvidesFile{acrofont.sty}%
-%<*driver>
-\expandafter\ProvidesFile\expandafter{\jobname.dtx}%
-%</driver>
-% \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}
-%<version>
- [2018/12/26 1.0a ltxdoc extensions package]% \fileversion
-% \end{macrocode}
-%
-%
-% \section{The driver module \texttt{doc}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{README-LTXDOCEXT} as required.
-%
-% 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}
-%<*driver>
-% \end{macrocode}
-%
-% \subsection{The Preamble}
-% The programmers documentation is formatted
-% with the \classname{ltxdoc} document class, with local customizations,
-% and with the usual code line indexing.
-% \begin{macrocode}
-\documentclass[draft]{ltxdoc}
-\RequirePackage{ltxdocext}%
-\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 ltxdocext
-\RecordChanges % makeindex -s gglo.ist -o ltxdocext.gls ltxdocext.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-LTXDOCEXT}
-\title{%
- Extensions to the \classname{ltxdoc} class%
- \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 file.
-%\fi
-
-\maketitle
-
-This file embodies the \classname{ltxdocext} package,
-the implementation and its user documentation.
-
-The distribution point for this work is
-\url{journals.aps.org/revtex},
-which contains prebuilt runtime files, documentation, and full source,
-ready to add to a TDS-compliant \TeX\ installation.
-
-The \classname{ltxdocext} package was commissioned by the American Physical Society
-and is distributed under the terms of the \LaTeX\ Project Public License,
-the same license under which all the portions of \LaTeX\ itself are 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 files \file{ltxdocext.sty} and \file{acrofont.sty}
-into a location in your filesystem where they will be found by \LaTeX.
-
-If you will be using the \classname{acrofont} package, you must
-also install the virtual fonts
-\file{zpsynocmrv}, \file{zptmnocmr},
-\file{zptmnocmrm}, and \file{zpzcnocmry}.
-The corresponding \file{.tfm}, \file{.vf}, and \file{.vpl}
-files are part of this distribution.
-
-To use, read the user documentation \file{ltxdocext.pdf}.
-The \file{.dtx} file, \file{ltxdocext.dtx}, constitutes
-in itself an instance of use of the \classname{ltxdocext}
-package and the \classname{acrofont} package.
-
-\tableofcontents
-
-\section{Processing Instructions}
-
-The package files \file{ltxdocext.sty} and \file{acrofont.sty}
-are generated from this file, \file{ltxdocext.dtx},
-using the {\sc docstrip} facility of \LaTeX
-via |tex ltxdocext.dtx| (Note: do \emph{not} use \LaTeX\ for this step).
-The typeset documentation that you are now reading is generated from
-the same file by typesetting it with \LaTeX\ or pdftex
-via |latex ltxdocext.dtx| or |pdflatex ltxdocext.dtx|.
-
-\subsection{Build Instructions}
-
-You may bootstrap this suite of files solely from \file{ltxdocext.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{ltxdocext.dtx} with \TeX\ or pdftex;
-thereby generating the package file \file{ltxdocext.sty},
-and the package file \file{acrofont.sty}.
-Make sure that {\sc docstrip} receives permission
-to overwrite existing versions of these packages.
-\item
-Now
-typeset \file{ltxdocext.dtx} with \LaTeX\ or pdflatex;
-you will obtain the typeset documentation you are now reading,
-along with
-the file \file{README}.
-
-Note: you will have to run \LaTeX, then
-\file{makeindex} \texttt{-s gind.ist ltxdocext.idx}, then
-\file{makeindex} \texttt{-s gglo.ist -o ltxdocext.gls ltxdocext.glo}, then
-\LaTeX\ again in order to obtain a valid index and table of contents.
-\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{ltxdocext.sty} and
-\file{$TEXMF/}\file{tex/}\file{latex/}\file{revtex/}\classname{acrofont.sty}
-\item
-\file{$TEXMF/}\file{source/}\file{latex/}\file{revtex/}\classname{ltxdocext.dtx}
-\item
-\file{$TEXMF/}\file{doc/}\file{latex/}\file{revtex/}\classname{ltxdocext.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{\{ltxutil\}} in your document preamble!
-\end{enumerate}
-
-\subsection{Change Log}
-\changes{1.0a}{2018/12/12}{(MD) Updated name of README file and use standard fonts when typesetting}%
-
-
-\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}%
-\PrintChanges
-\end{document}
-%</driver>
-% \end{macrocode}
-%
-% \section{Using the \classname{ltxdoc} and \classname{acrofont} packages}%
-% These packages are an adjunct to the
-% standard \LaTeX\ \classname{ltxdoc} class and may be
-% simply invoked as follows:
-%\begin{verbatim}
-%\documentclass[draft]{ltxdoc}
-%\RequirePackage{ltxdocext}%
-%\RequirePackage{acrofont}%
-%\CodelineIndex\EnableCrossrefs
-%\end{verbatim}
-%
-% Your document should simply cleave to the standards of the
-% \classname{ltxdoc} class, with extensions and alterations as noted.
-%
-% \subsection{Extensions to the \classname{ltxdoc} class}%
-%
-% \subsubsection{Extensions to the \env{verbatim} environment and \cs{verb} command}%
-%
-% The delimiters \verb$<<$ and \verb$>>$ within the scope of the verbatim environment
-% or within the argument of the \cmd\verb\ command produce
-% italics surrounded by angle brackets.
-% This typographic convention usually indicates
-% \emph{metalanguage}, i.e., a placeholder.
-%
-% To obtain the angle bracket character per se,
-% double the character, viz., ``\verb$the delimiter \verb+<<<<+$''.
-%
-% \subsubsection{The -\texttt{matter} Commands Work}
-% The sectioning commands \cmd\frontmatter, \cmd\mainmatter, and \cmd\backmatter
-% of the standard \LaTeX\ \classname{book} class are operative in the
-% \classname{ltxdoc} class.
-%
-% \subsubsection{The \cs{GetFileInfo} command}\label{sec:GetFileInfo}
-% You can use the \cmd\GetFileInfo\ command to extract
-% the date, version, and file info of a file which has registered itself
-% via the \cmd\ProvidesFile\ or \cmd\ProvidesClass\ command
-% (employing the optional argument thereto).
-%
-% For instance, if your document contains the following:
-%\begin{verbatim}
-%\RequirePackage{ltxdocext}%
-%\GetFileInfo{ltxdocext.sty}%
-%\end{verbatim}
-% then the following control sequence names will have
-% a value corresponding to that package's \cmd\ProvidesFile\
-% command:
-% \cmd\filedate: the file's date,
-% \cmd\fileversion: the file's version, and
-% \cmd\fileinfo: the file's info.
-%
-% \subsubsection{Self-Indexing Commands}%
-% Certain commands automatically produce an index entry
-% (or several related entries) according to the meaning.
-%
-% \begin{unnumtable}
-% \begin{tabular}{ll}
-% meta-text &\cmd\marg\arg{text}\\
-% command &\cmd\cmd\cmd\csname\\
-% environment name &\cmd\env\arg{name}\\
-% \cmd\begin\verb`{foo}`&\cmd\envb\arg{foo}\\
-% \cmd\end\verb`{foo}` &\cmd\enve\arg{foo}\\
-% argument &\cmd\arg\arg{name}\\
-% optional &\cmd\oarg\arg{name}\\
-% filename &\cmd\file\arg{name}\\
-% url &\cmd\url\arg{name}\\
-% document class &\cmd\classname\arg{name}\\
-% document substyle &\cmd\substyle\arg{name}\\
-% class option &\cmd\classoption\arg{name}
-% \end{tabular}
-% \end{unnumtable}
-%
-% \subsubsection{Unnumbered Tables}%
-%
-% When your documentation requires the use of an unnumbered table,
-% use the \env{unnumtable} environment:
-% \begin{verbatim}
-%\begin{unnumtable}
-%\begin{tabular}{ll}
-%<table rows>
-%\end{tabular}
-%\end{unnumtable}
-% \end{verbatim}
-%
-% \subsubsection{Structuring Tables}%
-% The commands \cmd\toprule, \cmd\colrule, and \cmd\botrule
-% allow you to mark the beginning of the column heads
-% the beginning of the table body, and the end of
-% the table body, respectively.
-% In context,
-% \begin{verbatim}
-%\begin{tabular}{ll}
-%\toprule
-%<table head rows>
-%\colrule
-%<table rows>
-%\botrule
-%\end{tabular}
-% \end{verbatim}
-%
-% \subsubsection{A Sectioning Command Below \cs{subsection}}%
-% The \cmd\subsubsection\ command is defined.
-%
-%
-% \subsection{Alterations to the \classname{ltxdoc} class}%
-% The following involve no new markup, but they
-% do change the appearance of your formatted documentation:
-% \begin{enumerate}
-% \item
-% Using the \classname{acrofont} package causes your
-% document to be formatted using the standard
-% Acrobat fonts to the greatest extent possible.
-% This means that for most documents, Computer Modern
-% is not used at all.
-% Math that unavoidable must use CM still exists, however.
-% \item
-% An index will be produced at the end of the document
-% without your needing to explicitly mark it up, and
-% it will have an entry in the TOC.
-% \item
-% The \env{quote} environment has a slightly smaller left margin.
-% \item
-% Array columns are set tight by default.
-% \item
-% A host of \cmd\DoNotIndex\ directives are invoked.
-% I intend this list to grow to encompass
-% even more commands. Send me your suggestions.
-% \end{enumerate}
-%
-%
-%
-%\StopEventually{}
-%
-% \section{Extensions to the ltxdoc class}
-% The \file{package} {\sc docstrip} module comprises the
-% package \classname{ltxdocext.sty}, which provides extensions
-% to the standard \LaTeX\ \classname{ltxdoc} class.
-%
-% \subsection{Beginning of the \file{package} {\sc docstrip} module}
-% This portion of code is only present in the \LaTeX\ package (\texttt{.sty} file),
-% not in the kernel portion.
-% \begin{macrocode}
-%<*package>
-\def\class@name{ltxdocext}%
-\expandafter\PackageInfo\expandafter{\class@name}{%
- An extension to the \protect\LaTeXe\space ltxdoc class
- by A. Ogawa (arthur\_ogawa sbcglobal.net)%
-}%
-%</package>
-% \end{macrocode}
-%
-% \subsection{Beginning of the \file{kernel} {\sc docstrip} module}
-%
-% The bulk of the code is the kernel portion; a brief tail of \file{package} code then follows.
-% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% \subsection{Incorporate \classname{ltxguide.cls} extensions}
-%
-% Code extracted from \classname{ltxguide.cls}, by Alan Jeffrey.
-% ``This code stolen from \classname{ltxguide.cls}:
-% Some hacks with verbatim... NB: this would be better done with the
-% verbatim package, but this document has to run on any \LaTeX
-% installation.''
-% \begin{macrocode}
-\RequirePackage{verbatim}%
-\let\o@verbatim\verbatim
-\def\verbatim{%
- \ifhmode\unskip\par\fi
-% \nopagebreak % Overridden by list penalty
- \ifx\@currsize\normalsize
- \small
- \fi
- \o@verbatim
-}%
-% \end{macrocode}
-%
-% Here we extend the font-setting command to include making \texttt{<>} active
-% (i.e., adjusting the input encoding).
-% \begin{macrocode}
-\renewcommand \verbatim@font {%
- \normalfont \ttfamily
- \catcode`\<=\active
- \catcode`\>=\active
-}%
-% \end{macrocode}
-%
-% Make \verb$|...|$ a synonym for \cmd\verb\verb$|...|$.
-% \begin{macrocode}
-\RequirePackage{shortvrb}
-\AtBeginDocument{%
- \MakeShortVerb{\|}%
-}%
-% \end{macrocode}
-%
-% Make active bracket characters produce italics surrounded by angle brackets
-% (used in \env{verbatim} and \cmd\verb).
-% \verb|<<| produces a less-than, and \verb|>>| produces a greater-than.
-% \begin{macrocode}
-\begingroup
- \catcode`\<=\active
- \catcode`\>=\active
- \gdef<{\@ifnextchar<\@lt\@meta}
- \gdef>{\@ifnextchar>\@gt\@gtr@err}
- \gdef\@meta#1>{\marg{#1}}
- \gdef\@lt<{\char`\<}
- \gdef\@gt>{\char`\>}
-\endgroup
-\def\@gtr@err{%
- \ClassError{ltxguide}{%
- Isolated \protect>%
- }{%
- In this document class, \protect<...\protect>
- is used to indicate a parameter.\MessageBreak
- I've just found a \protect> on its own.
- Perhaps you meant to type \protect>\protect>?
- }%
-}
-\def\verbatim@nolig@list{\do\`\do\,\do\'\do\-}
-% \end{macrocode}
-% End of code stolen from \file{ltxguide.cls}. Thanks, Alan.
-%
-% Add functionality from doc.dtx:
-% (code stolen from doc.dtx):
-% \begin{macrocode}
-\def\GetFileInfo#1{%
- \def\filename{#1}%
- \def\@tempb##1 ##2 ##3\relax##4\relax{%
- \def\filedate{##1}%
- \def\fileversion{##2}%
- \def\fileinfo{##3}}%
- \edef\@tempa{\csname ver@#1\endcsname}%
- \expandafter\@tempb\@tempa\relax? ? \relax\relax}
-% \end{macrocode}
-% (end of code stolen from doc.dtx. Thanks FMi.)
-%
-% Various forms of self-indexing commands:
-% \begin{macrocode}
-\DeclareRobustCommand{\marg}[1]{%
- \meta{#1}%
- \index{#1=\string\meta{#1} placeholder}\index{placeholder>#1=\string\meta{#1}}%
-}%
-\DeclareRobustCommand\meta[1]{%
- \mbox{\LANGLE\itshape#1\/\RANGLE}%
-}%
-\def\LANGLE{$\langle$}%
-\def\RANGLE{$\rangle$}%
-\DeclareRobustCommand{\arg}[1]{%
- {\ttfamily\string{}\meta{#1}{\ttfamily\string}}%
- \index{#1=\string\ttt{#1}, argument}\index{argument>#1=\string\ttt{#1}}%
-}%
-\let\oarg\undefined
-\DeclareRobustCommand{\oarg}[1]{%
- {\ttfamily[%]
- }\meta{#1}{\ttfamily%[
- ]}%
- \index{#1=\string\ttt{#1}, optional argument}%
- \index{argument, optional>#1=\string\ttt{#1}}%
-}%
-\DeclareRobustCommand\cmd{\begingroup\makeatletter\@cmd}%
-\long\def\@cmd#1{%
- \endgroup
- \cs{\expandafter\cmd@to@cs\string#1}%
- \expandafter\cmd@to@index\string#1\@nil
-}%
-\def\cmd@to@cs#1#2{\char\number`#2\relax}%
-\def\cmd@to@index#1#2\@nil{%
- \index{#2=\string\cmd#1#2}%\index{command>#2=\string\cmd#1#2}%
-}%
-\DeclareRobustCommand\cs[1]{{\ttfamily\char`\\#1}}%
-\def\scmd#1{%
- \cs{\expandafter\cmd@to@cs\string#1}%
- \expandafter\scmd@to@index\string#1\@nil
-}%
-\def\scmd@to@index#1#2\@nil#3{%
- \index{\string$#3=\string\cmd#1#2---#3}%
-%\index{command>\string$#3=\string\cmd#1#2---#3}%
-}%
-\DeclareRobustCommand\env{\name@idx{environment}}%
-\DeclareRobustCommand\envb[1]{%
- {\ttfamily\string\begin\string{}\env{#1}{\ttfamily\string}}%
-}%
-\DeclareRobustCommand\enve[1]{{\ttfamily\string\end\string{}\env{#1}{\ttfamily\string}}}%
-\DeclareRobustCommand{\file}{\begingroup\@sanitize\@file}%
-\long\def\@file#1{\endgroup
- {\ttfamily#1}%
- \index{#1=\string\ttt{#1}}\index{file>#1=\string\ttt{#1}}%
-}%
-\DeclareRobustCommand\substyle{\name@idx{document substyle}}%
-\DeclareRobustCommand\classoption{\name@idx{document class option}}%
-\DeclareRobustCommand\classname{\name@idx{document class}}%
-\def\name@idx#1#2{%
- {\ttfamily#2}%
- \index{#2\space#1=\string\ttt{#2}\space#1}\index{#1>#2=\string\ttt{#2}}%
-}%
-\DeclareRobustCommand\url@ltxdocext{\begingroup\catcode`\/\active\catcode`\.\active\catcode`\:\active\@url}%
-\AtBeginDocument{%
- \ifx\url\undefined\let\url\url@ltxdocext\fi
-}%
-\def\@url#1{%
- \url@break{\ttfamily#1}%
- \url@char\edef\@tempa{#1=\string\url{#1}}%
- \expandafter\index\expandafter{\@tempa}%
- \expandafter\index\expandafter{\expandafter u\expandafter r\expandafter l\expandafter >\@tempa}%
- \endgroup
-}%
-{\catcode`\:\active\aftergroup\def\aftergroup:}{\active@colon}%
-\def\colon@break{\colon@char\allowbreak}%
-\def\colon@char{:}%
-{\catcode`\/\active\aftergroup\def\aftergroup/}{\active@slash}%
-\def\slash@break{\slash@char\allowbreak}%
-\def\slash@char{/}%
-{\catcode`\.\active\aftergroup\def\aftergroup.}{\active@dot}%
-\def\dot@break{\dot@char\allowbreak}%
-\def\dot@char{.}%
-\def\url@break{\let\active@slash\slash@break\let\active@dot\dot@break\let\active@colon\colon@break}%
-\def\url@char{\let\active@slash\slash@char\let\active@dot\dot@char\let\active@colon\colon@char}%
-% \end{macrocode}
-%
-% \subsection{Changes to the base class of the ltxdoc class}
-% Modify \env{theindex} environment so that it produces a TOC entry
-% \begin{macrocode}
-\renewenvironment{theindex}
- {\if@twocolumn
- \@restonecolfalse
- \else
- \@restonecoltrue
- \fi
- \columnseprule \z@
- \columnsep 35\p@
-\def\see##1##2{\textit{See} ##1}%
-\def\seealso##1##2{\textit{See also} ##1}%
-\long\def\cmd##1{\cs{\expandafter\cmd@to@cs\string##1}}%
-\def\@url##1{\url@break\ttt{##1}\endgroup}%
-\def\ttt{\begingroup\@sanitize\ttfamily\@ttt}%
-\def\@ttt##1{##1\endgroup}%
-\mathchardef\save@secnumdepth\c@secnumdepth
-\c@secnumdepth\m@ne
- \twocolumn[\section{\indexname}]%
-% \@mkboth{\MakeUppercase\indexname}%
-% {\MakeUppercase\indexname}%
-\c@secnumdepth\save@secnumdepth
- \thispagestyle{plain}\parindent\z@
- \parskip\z@ \@plus .3\p@\relax
- \let\item\@idxitem}
- {\if@restonecol\onecolumn\else\clearpage\fi}
-\renewenvironment{quote}
- {\list{}{%
- \leftmargin1em\relax
- \rightmargin\leftmargin
- }%
- \item\relax}
- {\endlist}
-% \end{macrocode}
-%
-% \subsection{Extensions to the base class of \classname{ltxdoc.cls}}
-%
-% Matter commands from \classname{book.cls}
-% \begin{macrocode}
-\newif\if@mainmatter
-\newif\if@openright
-\@openrighttrue
-\DeclareRobustCommand\frontmatter{%
- \cleartorecto
- \@mainmatterfalse
- \pagenumbering{roman}%
-}%
-\DeclareRobustCommand\mainmatter{%
- \cleartorecto
- \@mainmattertrue
- \pagenumbering{arabic}%
-}%
-\DeclareRobustCommand\backmatter{%
- \if@openright
- \cleartorecto
- \else
- \clearpage
- \fi
- \@mainmatterfalse
-}%
-\ifx\undefined\cleartorecto
- \def\cleartorecto{\cleardoublepage}%
-\fi
-% \end{macrocode}
-%
-% Unnumbered tables
-%
-% \begin{environment}{unnumtable}
-% An unnumbered table does not float.
-% \begin{macrocode}
-\def\@to{to}%
-\newenvironment{unnumtable}{%
- \par
- \addpenalty\predisplaypenalty
- \addvspace\abovedisplayskip
- \hbox\@to\hsize\bgroup\hfil\ignorespaces
- \let\@Hline\@empty
-}{%
- \unskip\hfil\egroup
- \penalty\postdisplaypenalty
- \vskip\belowdisplayskip
- \aftergroup\ignorespaces
- \@endpetrue
-}%
-% \end{macrocode}
-% \end{environment}
-%
-% Emulate \cmd\toprule\ and friends
-% \begin{macrocode}
-\providecommand\toprule{\hline\hline}%
-\providecommand\colrule{\\\hline}%
-\providecommand\botrule{\\\hline\hline}%
-% \end{macrocode}
-%
-% Define sectioning command below \cmd\subsubsection.
-% \begin{macrocode}
-\DeclareRobustCommand\subsubsubsection{%
- \@startsection{subsubsection}{4}%
- {\z@}{-15\p@\@plus-5\p@\@minus-2\p@}%
- {5\p@}{\normalfont\normalsize\itshape}%
-}%
-% \end{macrocode}
-%
-% \subsection{In lieu of \file{ltxdoc.cfg}}
-% We don't want everything to appear in the index
-% \begin{macrocode}
-\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
-\DoNotIndex{\@badmath,\@centercr,\@cite}
-\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
-\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
-\DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint}
-\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
-\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
-\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
-\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
-\DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
-\DoNotIndex{\bullet}
-\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
-\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
-\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
-\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
-\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
-\DoNotIndex{\fbox}
-\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
-\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
-\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
-\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
-\DoNotIndex{\input}
-\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
-\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
-\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
-\DoNotIndex{\NeedsTeXFormat,\newdimen}
-\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
-\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
-\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
-\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
-\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
-\DoNotIndex{\refstepcounter,\relax,\renewcommand}
-\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
-\DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
-\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
-\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
-\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
-\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
-\DoNotIndex{\wd,\xiipt,\year,\z@}
-\DoNotIndex{\next}
-% \end{macrocode}
-%
-% Direct \classname{ltxdoc} to produce an index.
-% \begin{macrocode}
-\AtEndDocument{\PrintIndex\PrintChanges}%
-% \end{macrocode}
-%
-% \subsection{Extension to \LaTeX's \env{filecontents} Environment}
-% We want to
-% coax the version number into \env{filecontents}-generated files.
-% Note that we expect \cmd\fileversion\ and \cmd\filedate\ to
-% hold the needed information. For this to be the case,
-% your document should execute the \cmd\GetFileInfo\ command
-% (as documented in section~\ref{sec:GetFileInfo}) before
-% any instances of \env{filecontents}.
-% \begin{macrocode}
-\makeatletter
-\def\endfilecontents{%
- \immediate\write\reserved@c{%
- \string\iffalse\space ltxdoc klootch^^J%
- \ifx\undefined\fileversion\else
- \ifx\undefined\filedate\else
- This file has version number \fileversion, last revised \filedate.%
- \fi\fi
- \string\fi
- }%
- \immediate\closeout\reserved@c
- \def\T##1##2##3{%
- \ifx##1\@undefined\else
- \@latex@warning@no@line{##2 has been converted to Blank ##3e}%
- \fi
- }%
- \T\L{Form Feed}{Lin}%
- \T\I{Tab}{Spac}%
- \immediate\write\@unused{}%
-}%
-\expandafter\let\csname endfilecontents*\endcsname\endfilecontents
-\makeatother
-% \end{macrocode}
-%
-% Alter formatting in arrays; set them tight.
-% \begin{macrocode}
-\setlength\arraycolsep{0pt}%
-% \end{macrocode}
-%
-% \subsection{End of the \file{kernel} {\sc docstrip} module}
-%
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% \subsection{Tail of the \file{package} {\sc docstrip} module}
-% Here is the remainder of the package code.
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-% Currently, there is little.
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-%
-% \section{Font Package for Acrobat Compatability}%
-% The package \classname{acrofont}
-% substitutes Acrobat-standard fonts for Computer Modern where possible,
-% even in math mode.
-% Documents typeset with this package in effect will require as little
-% downloaded font data as possible, but will not be exemplars of
-% fine math typesetting.
-%
-% \subsection{Beginning of the \file{fonts} {\sc docstrip} module}
-% The document class module comprises this and the next
-% four sections.
-% \begin{macro}{\class@base}
-% We define in exactly one spot the base class.
-% Typically that class will be one of \classname{book},
-% \classname{article}, or \classname{report}.
-% The base class effectively defines the use and the markup scheme
-% of the class of documents to be handled by this class.
-%
-% This class is a variant of the standard \LaTeX\ book class:
-% \url{ftp://ctan.tug.org/tex-archive/macros/latex/unpacked}.
-% \begin{macrocode}
-%<*fonts>
-\def\class@name{ltxdocext}%
-\expandafter\ClassInfo\expandafter{\class@name}{%
- Written for \protect\LaTeXe\space
- by A. Ogawa (arthur_ogawa at sbcglobal.net)%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Variants on psfonts packages}%
-% The following uses \file{times.sty} from \url{/packages/psnfss/psfonts.dtx}
-% \begin{macrocode}
-\RequirePackage{times}%
-% \end{macrocode}
-%
-% The following uses \file{mathptm.sty} from \url{/packages/psnfss/psfonts.dtx}
-% \begin{macrocode}
-\RequirePackage{mathptm}%
-% \end{macrocode}
-%
-% The following is a customization of \file{ot1ptmcm.fd}.
-% The virtual font referred to here \file{zptmnocmr} is
-% a variant of Sebastian Rahtz's \file{zptmcmr}, but with
-% even more glyphs moved from CM to Acrobat-standard fonts.
-% \begin{macrocode}
-\DeclareFontFamily{OT1}{ptmcm}{}
-\DeclareFontShape{OT1}{ptmcm}{m}{n}{
- <-> zptmnocmr
-}{}
-\DeclareFontShape{OT1}{ptmcm}{l}{n}{<->ssub * ptmnocm/m/n}{}
-% \end{macrocode}
-%
-% The following is a customization of \file{omlptmcm.fd}
-% The virtual font referred to here \file{zptmnocmrm} is
-% a variant of Sebastian Rahtz's \file{zptmcmrm}, but with
-% even more glyphs moved from CM to Acrobat-standard fonts.
-% \begin{macrocode}
-\DeclareFontFamily{OML}{ptmcm}{\skewchar \font =127}
-\DeclareFontShape{OML}{ptmcm}{m}{it}{
- <-> zptmnocmrm
-}{}
-\DeclareFontShape{OML}{ptmcm}{l}{it}{<->ssub * ptmcm/m/it}{}
-\DeclareFontShape{OML}{ptmcm}{m}{sl}{<->ssub * ptmcm/m/it}{}
-\DeclareFontShape{OML}{ptmcm}{l}{sl}{<->ssub * ptmcm/m/sl}{}
-% \end{macrocode}
-%
-% The following is a customization of \file{omspzccm.fd}
-% The virtual font referred to here \file{zpzcnocmry} is
-% a variant of Sebastian Rahtz's \file{zpzccmry}, but with
-% even more glyphs moved from CM to Acrobat-standard fonts.
-% \begin{macrocode}
-\DeclareFontFamily{OMS}{pzccm}{}
-\DeclareFontShape{OMS}{pzccm}{m}{n}{
- <-> zpzcnocmry
-}{}% cmsy10 Symbol Zapf Chancery Medium-Italic Times-Roman
-\DeclareFontShape{OMS}{pzccm}{l}{n}{<->ssub * pzccm/m/n}{}
-% \end{macrocode}
-%
-% The following is a customization of \file{omxpsycm.fd}
-% The virtual font referred to here \file{zpsynocmrv} is
-% a variant of Sebastian Rahtz's \file{zpsycmrv}, but with
-% even more glyphs moved from CM to Acrobat-standard fonts.
-% \begin{macrocode}
-\DeclareFontFamily{OMX}{psycm}{}
-\DeclareFontShape{OMX}{psycm}{m}{n}{
- <-> zpsynocmrv
-}{}
-\DeclareFontShape{OMX}{psycm}{l}{n}{<->ssub * psycm/m/n}{}
-%
-\DeclareFontEncoding{8r}{}{}% from file: 8renc.def
-\DeclareFontFamily{8r}{cmr}{\hyphenchar\font45 }% from file: 8rcmr.fd
-\DeclareFontShape{8r}{cmr}{m}{n}{
- <-> cmr10
-}{}
-% \end{macrocode}
-%
-% \subsection{Font definition files}%
-%
-% The following forces \LaTeX\ to do now what it would do anyway:
-% load the `font definition' information for the fonts that we
-% use. In this way, we prepare for faster processing through
-% the \cmd\dump\ of a preformatted macro package that will not
-% need to read in any packages or font definitions from disk.
-% \begin{macrocode}
-\input{8rphv.fd}%
-\input{8rptm.fd}%
-\input{ot1phv.fd}%
-\input{ot1ptm.fd}%
-\input{t1ptm.fd}%
-% \end{macrocode}
-%
-% \subsection{More math substitutions}%
-%
-% The following definitions arrange to get certain glyphs from the
-% text font instead of out of math pi fonts.
-% In particular, the copyright and registered symbols
-% are single glyphs instead of composites involving
-% the big circle from the \file{cmsy} font.
-% \begin{macrocode}
- \def\eightRChar#1{{\def\encodingdefault{8r}\fontencoding\encodingdefault\selectfont\char"#1}}%
- \def\LANGLE{$<$}%{\eightRChar{8B}}%
- \def\RANGLE{$>$}%{\eightRChar{9B}}%
-%\def\ASTER{\eightRChar{2A}}%
-%\def\DAGGER{\eightRChar{86}}%
-%\def\DDAGGER{\eightRChar{87}}%
- \def\BULLET{\eightRChar{95}}%
-%\def\SECTION{\eightRChar{A7}}%
-%\def\PARAGRAPH{\eightRChar{B6}}%
- \def\VERTBAR{\eightRChar{7C}}%
- \def\COPYRIGHT{\eightRChar{A9}}%
- \def\REGISTERED{\eightRChar{AE}}%
-% \end{macrocode}
-%
-% \begin{macrocode}
- \def\textbar{\VERTBAR}%
- \def\textbullet{\BULLET}%
- \def\textcopyright{\COPYRIGHT}%
- \def\textregistered{\REGISTERED}%
-% \end{macrocode}
-%
-% I have removed \cmd\ensuremath\ from the following definition, and
-% all commands like \cmd\mathsection have been converted to
-% e.g., \cmd\textsection.
-% \begin{macrocode}
-\def\@makefnmark{\@thefnmark}%
-\def\@fnsymbol#1{{\ifcase#1\or *\or \dagger\or \ddagger\or
- \textsection\or \textparagraph\or \|\or **\or \dagger\dagger
- \or \ddagger\ddagger \else\@ctrerr\fi}}
-% \end{macrocode}
-%
-% \subsection{End of the \file{fonts} {\sc docstrip} module}
-% Here ends the module.
-% \begin{macrocode}
-%</fonts>
-% \end{macrocode}
-%
-%
-% \section{Programming Conventions}%
-% In writing the above code, I cleave to certain conventions, noted
-% here.
-% My goal in explaining them is to encourage others maintaining this
-% body of code to consider following them as well.
-% The benefits are twofold:
-% Some of the coding conventions aim to avoid programming pitfalls;
-% following them reduces maintenance costs.
-% Others make the code easier to read; following these eases the
-% process of understanding how the code works.
-%
-% And, for my part, I prefer to read code of this type.
-%
-% \subsection{Whitespace Conventions}%
-% Exactly where code lines break and indent, and where additional
-% whitespace is inserted is explained here.
-% \begin{itemize}
-% \item
-% Each new macro definition or register assignment begins a new line.
-% Therefore, \cmd\def, \cmd\newcommand, and their ilk will start in column~1.
-% \item
-% Code is indented one space for each level of nesting within braces
-% \verb|{}|.
-% \item
-% Likewise, if possible, for \cmd\if\dots and matching \cmd\fi.
-% \item
-% However, the closing brace or \cmd\fi\ is outdented by one so that it
-% falls
-% at the same level of indentation as its matching brace or \cmd\if,
-% and it appears alone on its line.
-% \item
-% Use of the |tab| character is deprecated
-% (tabs are not standardized across all applications and operating
-% systems).
-% \item
-% Lines of code are limited to 72 characters.
-% I follow this convention mostly to ease the transmission of files
-% via email (a deprecated practice) and to accomodate people with
-% small monitors.
-% But \classname{ltxdoc} output looks better with the shorter lines, too.
-% \item
-% Extraneous whitespace in the replacement part of a macro definition
-% is avoided by using the comment character |%|.
-% In most cases, if falling at the end of a line of code,
-% a brace will be immediately followed by a comment character,
-% as will the macro parameter |#1| and any one-letter control sequence,
-% like |\\|.
-% \item
-% Extraneous whitespace in the package file is also avoided.
-% When \TeX\ reads in the .sty file, it will process \cmd\def s, and other commands,
-% but will not process blank spaces.
-% This practice is simply a discipline. You don't need to do this.
-% But sometimes \TeX\ has to read in a file while it is in horizontal mode,
-% at which point this practice is essential.
-% \end{itemize}
-% These conventions taken together are illustrated by the following:
-% \begin{verbatim}
-%\def\prepdef#1#2{%
-% \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
-% \toks@ii{#2}%
-% \edef#1{\the\toks@ii\the\toks@}%
-%}%
-% \end{verbatim}
-% In the above, the definition of \cmd\prepdef\ would not fit on a single
-% line,
-% and required breaking. The first and last lines have matching braces,
-% and are a the same level of indentation, with the last line containing
-% a single brace.
-%
-% Each of the three intervening lines has balanced braces and is
-% indented by one space. Each line that would otherwise end in a single
-% brace character is terminated by a comment character.
-%
-% Some coders rely on the fact that a space character seen by \TeX's
-% scanner while in vertical mode is a no-op.
-% Be that as it may, I eliminate them unless actually intentional.
-%
-% \subsection{Conventions For Procedures}%
-% Here are some of my preferences when writing procedures:
-% \begin{itemize}
-%
-% \item
-% I dislike defining a macro within another macro, especially when the
-% pattern part is non-nil.
-% You know, you are not saving much space in |mem| when you do this,
-% right?
-% You do save space in the hash table and the string pool, though.
-% On the other hand, we are not dealing with small \TeX\ engines
-% anymore; Team \LaTeX\ has made sure of this.
-%
-% \item
-% If two or more macros have very similar replacement parts, consider
-% layering.
-%
-% \item
-% Macros may perform parsing, may maintain tokens or registers, or may
-% set type (produce marks). I try to avoid combining the three functions
-% in a single macro.
-%
-% \item
-% When a procedure both does assignments and sets type, I try to have a
-% clean separations between the two activities. Try to avoid:
-% \begin{verbatim}
-% \vskip10pt
-% \parindent=0pt
-% \leavevmode
-% \end{verbatim}
-%
-% \item
-% The Boolean calculus (cf. \cmd\@ifx)
-% is very useful and produces code that executes nicely.
-% Using it also helps avoid your having to debug problems where
-% \cmd\if\dots\ and \cmd\fi\ are not properly balanced
-% (a nightmare, in case you have not already experienced it).
-%
-% \end{itemize}
-%
-% \subsection{Conventions For \LaTeX}%
-% Team \LaTeX\ make certain recommendations in \file{clsguide.tex}.
-% Ones that I particularly pay attention to are:
-% \begin{itemize}
-%
-% \item
-% For the sake of ``color safety'',
-% use \cmd\sbox\ rather than \cmd\setbox, \cmd\mbox\ rather than \cmd\hbox, and
-% \cmd\parbox\ or \env{minipage} rather than \cmd\vbox.
-%
-% \item
-% Use \cmd\newcommand\ and \cmd\newenvironment\ to declare user-level commands
-% and environments. Avoid the idiom \cmd\def\cmd\foo, \cmd\def\cmd\endfoo\ to define
-% an environment.
-% Ideally, all user-level markup could be extracted from the
-% document class by grepping on \cmd\newcommand\ and \cmd\newenvironment.
-%
-% \item
-% Prefer to use \cmd\setlength\ to assign registers.
-%
-% \end{itemize}
-% I cannot help but notice that much of the code of \LaTeX\ itself fails
-% to comply with many of the coding recommendations of Team \LaTeX.
-%
-% \Finale
-% \iffalse Here ends the programmer's documentation.\fi
-% \endinput
-%
-\endinput
-%%EOF
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
diff --git a/macros/latex/contrib/revtex/source/ltxgrid.dtx b/macros/latex/contrib/revtex/source/ltxgrid.dtx
deleted file mode 100644
index 1bd35cbd62..0000000000
--- a/macros/latex/contrib/revtex/source/ltxgrid.dtx
+++ /dev/null
@@ -1,6849 +0,0 @@
-% \iffalse meta-comment balanced on line 109
-% ltxgrid.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
-% changes for version 4.2d--4.2f by Phelype Oleinik.
-%
-% This work consists of the main source file ltxgrid.dtx
-% and the derived files
-% ltxgrid.sty, ltxgrid.pdf
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex ltxgrid.dtx
-%
-% Documentation:
-% latex ltxgrid.dtx; ...
-%
-% Programm calls to get the documentation (example):
-% pdflatex ltxgrid.dtx
-% makeindex -s gind.ist ltxgrid
-% makeindex -s gglo.ist -o ltxgrid.gls ltxgrid.glo
-% pdflatex ltxgrid.dtx
-% makeindex -s gind.ist ltxgrid.idx
-% pdflatex ltxgrid.dtx
-%
-% Installation:
-% TDS:doc/latex/revtex/
-% TDS:tex/latex/revtex/
-% TDS:source/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 ltxgrid.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-LTXGRID.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{ltxgrid.sty}{%
- \from{ltxgrid.dtx}{package,kernel}%
- }%
- }%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* ltxgrid.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 ltxgrid.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{ltxgrid.dtx}
-%
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "ltxgrid.dtx",
-%%% version = "4.2f",
-%%% date = "2022/06/05",
-%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% Phelype Oleinik (mailto:phelype.oleinik at latex-project.org),
-%%% 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-LTXGRID} 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-LTXGRID}" to locate it.
-% \fi\input{README-LTXGRID}%
-%
-% \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}
-%ltxgrid.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{latex ltxgrid.dtx}}%
-% Typesetting the source file under \LaTeX\
-% generates the readme and the installer.
-%\begin{verbatim}
-%README-LTXGRID ltxgrid.ins
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex ltxgrid.ins}}%
-% Typesetting the installer generates
-% the package files.
-%\begin{verbatim}
-%ltxgrid.sty
-%\end{verbatim}
-%
-% \subsubsection{Documentation}%
-% The following are the online documentation:
-% \begin{verbatim}
-%ltxgrid.pdf
-% \end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}
-%ltxgrid.aux ltxgrid.idx ltxgrid.ind ltxgrid.log ltxgrid.toc
-% \end{verbatim}
-%
-% \section{Code common to all modules}%
-%
-% The following may look a bit klootchy, but 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}
-%<*driver|package>
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
-%</driver|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>
-ltxgrid%
-%</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.
-% Give credit where due.
-% \begin{macrocode}
-%<*doc|package|kernel>
-%<version>
- [2022/06/05 4.2f page grid package (portions licensed from W. E. Baxter web at superscript.com)]% \fileversion
-%</doc|package|kernel>
-%<kernel&!package&!doc>}%
-% \end{macrocode}
-%
-%
-% \section{The driver module \texttt{doc}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{.ins} installer and \file{README-LTXGRID} as required.
-%
-% 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}
-%<*driver>
-% \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}%
-\RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}%
-%\ifx\package@font\@undefined\else
-% \expandafter\expandafter
-% \expandafter\RequirePackage
-% \expandafter\expandafter
-% \expandafter{%
-% \csname package@font\endcsname
-% }%
-%\fi
-\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist ltxgrid
-\RecordChanges % makeindex -s gglo.ist -o ltxgrid.gls ltxgrid.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-LTXGRID}
-\title{%
- A \LaTeX\ Package for changing the page grid and MVL%
- \thanks{%
- This file has version number \fileversion,
- last revised \filedate.%
- }%
- \thanks{%
- Version \fileversion\ \copyright\ 2019--2022 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-LTXGRID file.
-%\fi
-\maketitle
-
-This file embodies the \classname{ltxgrid} package,
-the implementation and its user documentation.
-
-The distribution point for this work is
-\url{journals.aps.org/revtex},
-which contains the REV\TeX\ package, and includes source and documentation for this package.
-
-The \classname{ltxgrid} 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,
-into a location in your filesystem where it will be found by \LaTeX;
-in a TDS-compliant installation this would be:
-\file{texmf/tex/macros/latex/revtex/.}
-
-To use, read the user documentation \file{src/ltxgrid.pdf}.
-
-\tableofcontents
-
-\section{Processing Instructions}
-
-The package file \file{ltxgrid.sty}
-is generated from this file, \file{ltxgrid.dtx},
-using the {\sc docstrip} facility of \LaTeX
-via |tex ltxgrid.dtx|.
-The typeset documentation that you are now reading is generated from
-this same file by typesetting it with \LaTeX\ or pdftex
-via |latex ltxgrid.dtx| or |pdflatex ltxgrid.dtx|.
-
-\subsection{Build Instructions}
-
-You may bootstrap this suite of files solely from \file{ltxgrid.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{ltxgrid.dtx} with \TeX\ or pdftex;
-thereby generating the package file \file{ltxgrid.sty}.
-
-\item
-Now typeset \file{ltxgrid.dtx} with \LaTeX\ or pdflatex;
-you will obtain the typeset documentation you are now reading,
-along with the file \file{README-LTXGRID}.
-
-Note: you will have to run \LaTeX\ twice, then \file{makeindex}, then
-\LaTeX\ again in order to obtain a valid index and table of contents.
-
-\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{ltxgrid.sty}
-\item
-\file{$TEXMF/}\file{source/}\file{latex/}\file{revtex/}\classname{ltxgrid.dtx}
-\item
-\file{$TEXMF/}\file{doc/}\file{latex/}\file{revtex/}\classname{ltxgrid.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 directory \file{$TEXMF/} (you may need root access).
-\item
-Build and installation are now complete;
-now put a \cmd\usepackage\texttt{\{ltxgrid\}} in your document preamble!
-(Note: \texttt{ltxgrid} requires package \texttt{ltxutil}.)
-\end{enumerate}
-
-\subsection{Change Log}
-\changes{4.0a}{2001/06/18}{Introduce \cs{marry@height} }
-\changes{4.0a}{2001/06/18}{Introduce \cs{set@marry@height} }
-\changes{4.0a}{2008/06/26 }{\cs{@yfloat}: de-fang \cs{set@footnotewidth} (see ltxutil.dtx): we have already done its job. }
-\changes{4.1a}{2008/06/29}{Change \cs{LT@array@new}: restore \cs{@tabularcr} and \cs{@xtabularcr}}
-\changes{4.1a}{2008/06/29}{Change \cs{LT@array@new}: set \cs{LT@LL@FM@cr} to \cs{@arraycr@array} instead of \cs{@arraycr}}
-\changes{4.1a}{2008/06/29}{Repair error in \cs{endlongtable@new} involving \cs{@ifx}: argument not delimited.}
-\changes{4.1b}{2008/08/04}{Get rid of the \cs{reserved@a} idiom}
-\changes{4.1b}{2008/08/04}{Turn off the \cs{set@footnotewidth} mechanism; a float `knows' its proper typesetting context}
-\changes{4.1b}{2008/08/04}{(AO, 452) Support length checking: show size of shipped out text.}
-\changes{4.1b}{2008/08/04}{(AO, 456) Compatibility with other packages that override the output routine, following suggestion by David Kastrup.}
-\changes{4.1b}{2008/08/04}{}
-\changes{4.1b}{2008/08/04}{Box \cs{footbox} changed to box \cs{footsofar}}
-\changes{4.1b}{2008/08/04}{Change \cs{@combinepage} to \cs{@combinepage} with argument}
-\changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-\changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-\changes{4.1b}{2008/08/04}{New procedure \cs{@iffpsbit} replaces \cs{@getfpsbit}}
-\changes{4.1b}{2008/08/04}{New procedure \cs{@output@combined@page}}
-\changes{4.1b}{2008/08/04}{New procedure for showing a box contents, \cs{trace@box}}
-\changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@head} headpatches \cs{@outputpage}}%
-\changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@tail} tailpatches \cs{@outputpage}}%
-\changes{4.1b}{2008/08/04}{Procedure \cs{balance@2} defined more transparently}%
-\changes{4.1b}{2008/08/04}{Tally the height of the float}
-\changes{4.1b}{2008/08/04}{Use \cs{document@inithook} instead of \cs{AtBeginDocument}}
-\changes{4.1b}{2008/08/04}{Use \cs{trace@box} instead of \cs{showbox}}
-\changes{4.1f}{2009/07/07}{(AO, 515) Prevent line numbering within a footnote}
-\changes{4.1f}{2009/07/10}{(AO, 518) Tally register overflow when locument is long}
-\changes{4.1f}{2009/07/14}{(AO, 519) \cs{footins} content must be preserved and reintegrated}
-\changes{4.1f}{2009/07/15}{(AO, 519) Preserve footnotes that are in \cs{footsofar} across a page grid change}
-\changes{4.1g}{2009/10/06}{(AO, 531) Fix package \classname{float} }
-\changes{4.1n}{2009/12/02}{Restore the \cs{lastbox} if it is not a footnote}
-\changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-\changes{4.1n}{2009/12/18}{(AO, 571) Deconstruct balanced footnotes when needed}
-\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) Footnotes, when columns are balanced or when they are composed with their column}%
-\changes{4.1n}{2010/01/02}{(AO, 571) Abandon \cs{recover@footins} in favor of \cs{recover@column}}%
-\changes{4.1n}{2010/01/02}{(AO, 571) Use procedures \cs{output@do@prep} and \cs{output@column@do} as dispatchers}
-\changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-\changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-\changes{4.1n}{2010/01/02}{(AO, 571) footnote rule is leaders, so that it may be removed by \cs{vsplit}; mechanism of \cs{kern} signals to indicate footnote height}%
-\changes{4.1o}{2010/02/02}{(AO, 576) Allow \classname{lscape} to act on \cs{@outputbox} at the right time}%
-\changes{4.1p}{2010/02/24}{(AO, 583) Provide setup code also for footnotes in a one-column document}%
-\changes{4.2a}{2018/12/12}{(MD) Updated name of README file and use standard fonts when typesetting}%
-\changes{4.2d}{2020/09/19}{(PHO) Adapt \cs{document} and \cs{enddocument} hooks to the 2020-10-01 \LaTeX{} release.}%
-\changes{4.2d}{2020/09/30}{(PHO) Correct \cs{@normalcr} patch for \LaTeX{} 2020-02-02 and later.}%
-\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}%
-\def\revtex{REV\TeX}%
-\expandafter\DocInput\expandafter{\jobname.dtx}%
-\end{document}
-%</driver>
-% \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{ltxgrid}%
-%\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}%
-%\LoadClass{book}%
-%\RequirePackage{ltxgrid}%
-%<class customization commands>
-%\endinput
-% \end{verbatim}
-%
-% Note that this package requires the features of the \classname{ltxutil} package,
-% available at
-% \url{publish.aps.org/revtex}.
-%
-% Once loaded, the package gives you acccess to certain procedures,
-% usually to be invoked by a \LaTeX\ command or environment, but not at the document level.
-%
-% \subsection{Changing the page grid}%
-% This package provides two procedures, \cmd\onecolumngrid, \cmd\twocolumngrid,
-% that change the page grid (it can be extended to more columns and to other page grids).
-%
-% They differ from standard \LaTeX's \cmd\onecolumn\ and \cmd\twocolumn\ commands in that
-% they do not force a page break. Also, upon leaving a multiple-column grid, the columns are balanced.
-% In other respects they work same.
-%
-% They differ from the grid-changing commands of Frank Mittelbach's \classname{multicol} package
-% in that they allow floats of all types (single- and double column floats, that is) and
-% preserve compatability with the \classname{longtable} package.
-%
-% These commands must be issued in vertical mode (conceivably via a \cmd\vadjust) such that
-% they are ultimately present in the MVL, where they can do their work.
-% Because they do not work in \LaTeX's left-right mode, they are unsuitable at the
-% document level.
-% Furthermore, packaging a grid command in a \cmd\vadjust, although possible, will probably
-% not acheive satisfactory page layout.
-%
-% Page grid commands are not intended to be issued unnecessarily: only the first of
-% two successive \cmd\onecolumngrid\ commands is effective; the second will be silently ignored.
-%
-% \DescribeMacro\onecolumngrid
-% You command \LaTeX\ to return to the one-column grid with the
-% \cmd\onecolumngrid\ command. If you are already in the one-column grid, this
-% is a no-op. The one-column grid is considered special of all page grids, in that
-% no portion of the page is held back (in \cmd\pagesofar); all items that might go
-% on the current page (with the exception of floats and footnotes) are on the MVL.
-%
-% \DescribeMacro\twocolumngrid
-% You command \LaTeX\ to return to the two-column grid with the
-% \cmd\twocolumngrid\ command. If you are already in the two-column grid, this
-% is a no-op.
-%
-% These two commands should be issued by a macro procedure that can ensure that
-% \TeX\ is in outer vertical mode.
-%
-% \subsection{Changing the MVL}%
-%
-% This package also provides commands to modify the main vertical list (MVL) in a safe way.
-% The scheme here is to structure, insofar possible, \TeX's MVL as follows:
-%\begin{quotation}
-%box or boxes\\
-%penalty\\
-%glue
-%\end{quotation}
-% This should be a familiar sequence. It is the prototype sequence for a vertical list,
-% and is followed when \TeX\ breaks paragraphs into lines, and when \TeX\ generates
-% a display math equation.
-%
-% If you (as a macro programmer) wish to modify the value of the penalty or glue item,
-% you can use one of the MVL-altering commands to do so. Certain operations are implemented
-% here; you can make up your own.
-%
-% Note that these commands must be issued in vertical mode, perhaps via a \cmd\vadjust\ or a \cmd\noalign.
-% They can work directly if you are in inner mode (say within a parbox or a minipage).
-%
-% \DescribeMacro\removestuff
-% You instruct \LaTeX\ to remove both the penalty and the glue item with this command.
-%
-% \DescribeMacro\addstuff
-% You issue the \cmd\addstuff\arg{penalty}\arg{glue} command to add a penalty, glue, or both.
-% If you do not wish to add one or the other, the corresponding argument should be nil.
-% Note that the effect of \cmd\addstuff\ is to stack the penalties and glue items.
-% Therefore, the lesser of the two penalties takes effect,
-% and the two glue items add together.
-%
-% \cmd\addstuff\ is limited because once applied, it cannot be applied again with correct results.
-%
-% \DescribeMacro\replacestuff
-% The \cmd\replacestuff\ command is syntactically the same as \cmd\addstuff, but works
-% differently: the existing penalty and glue are replaced or modified.
-%
-% The specified penalty is not inserted if the existing penalty is greater than 10000
-% (that is, in case of a \cmd\nobreak), otherwise, the lower (non-zero) of the two penalties is inserted.
-%
-% If the specified glue has a larger natural component than the existing glue, we replace the glue.
-% However, if the specified glue's natural component is negative, then the existing glue's natural component is
-% changed by that amount.
-%
-% \cmd\replacestuff\ can be applied mutiple times bceause it retains the list structure in the canonical form.
-%
-% Note that we treat two penalties specially (as does \TeX): a penalty of 10000 is considered
-% a garbage value, to be replaced if found. This is the signal value that \TeX\ inserts on
-% the MVL replacing the penalty that caused the page break (if the page break occurred at a penalty).
-% Also, a penalty of zero is indistinguishable from no penalty at all, so it will always
-% be replaced by the given value.
-%
-% Therefore, it is highly recommended to never set any of \TeX's penalty parameters to
-% zero (a value of, say, 1, is practically the same), nor should a skip parameter be set to zero
-% (instead, use, say, 1sp). Also, to prevent a pagebreak, do not use a penalty of 10000, use, say
-% 10001 instead.
-%
-% You can define your own construct that modifies the MVL:
-% Define a command, say, \cmd\myadjust, as follows:
-%\begin{verbatim}
-%\def\myadjust#1{\noexpand\do@main@vlist{\noexpand\@myadjust{#1}}\@tempa}%
-%\end{verbatim}
-% that is, \cmd\myadjust\ invokes \cmd\do@main@vlist, passing it the procedure name
-% \cmd\@myadjust\ along with the arguments thereof pre-expanded.
-% Next, define the procedure \cmd\@myadjust:
-%\begin{verbatim}
-%\def\@myadjust#1{<meddle with the MVL>}%
-%\end{verbatim}
-% when \cmd\@myadjust\ executes, you will be in the output routine (in inner vertical mode)
-% and the MVL will be that very vertical list.
-%
-%
-%
-%
-% \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.
-%
-% Compatability between \classname{ltxgrid} and these packages is complicated
-% by a number of factors. First is that \classname{ltxgrid} alters the meaning of some of the same
-% kernel macros as certain of the ``required'' packages.
-% Second is that fact that certain of the ``required'' packages of \LaTeX\ are incompatible with
-% each other.
-%
-% Examples of the first kind are the \classname{ftnright}, \classname{multicol}, and \classname{longtable}
-% packages.
-% The \classname{ltxgrid} package is not compatible with \classname{multicol},
-% but if you are using \classname{ltxgrid}, you do not need to use \classname{ftnright} or \classname{multicol}
-% anyway. The \classname{ltxgrid} package does however attempt to be compatible with \classname{longtable}.
-%
-% Among the ``required'' packages that are mutually incompatible are \classname{multicol} and \classname{longtable},
-% the incompatibility arising because both packages replace \LaTeX's output routine:
-% if one package is active, the other must not be so.
-% This state of affairs has remained essentially unchanged since the introduction of the two as \LaTeX2.09 packages in the late 1980s.
-%
-% The reason that \classname{ltxgrid} can remain compatible with \classname{longtable} is due to the
-% introduction of a more modern architecture, the ``output routine dispatcher'', which allows all macro packages access to the
-% safe processing environment of the output routine, on an equal footing.
-% The relevant portions of the \classname{longtable} package are reimplemented in \classname{ltxgrid}
-% to take advantage of this mechanism.
-%
-% Timing is critical:
-% the \classname{ltxgrid} package will be incompatible with any package that
-% redefines any of the kernel macros that \classname{ltxgrid} patches---if that
-% package is loaded \emph{after} \classname{ltxgrid}.
-%
-% Hereinafter follows some notes on specific \LaTeX\ packages.
-%
-% \subsection{ftnright}
-% Frank Mittelbach's \classname{ftnright} package effects a change to \LaTeX's
-% \cmd\twocolumn\ mode such that footnotes are set at the bottom of the right-hand
-% column instead of at the foot of each of the two columns.
-%
-% Note that it overwrites three \LaTeX\ kernel macros: \cmd\@outputdblcol, \cmd\@startcolumn, and \cmd\@makecolumn.
-% Fortunately none of the three are patched by \classname{ltxgrid}, so that compatability
-% is not excluded on this basis.
-%
-% At the same time, it changes the meaning of \cmd\footnotesize, the macro that is automatically
-% invoked when setting a document's footnote into type.
-% One might well argue that it is an error for the meaning of \cmd\footnotesize\ to be determined by
-% a package such as \classname{ftnright}, that indeed such a choice should be made in the
-% document class, or in a file such as \file{bk10.clo}.
-%
-% To avoid being tripped up by this misfeature in \classname{ftnright}, it is only necessary to
-% reassert our meaning for \cmd\footnotesize\ later on, after \classname{ftnright} has been loaded.
-%
-% Note that \classname{ftnright} inserts code that demands that \LaTeX's flag \cmd\if@twocolumn\
-% is true, that is, it will complain if deployed in a \cmd\onecolumn\ document.
-% It is therefore necessary for any other multicolumn package to assert that flag in order to
-% avoid this package's complaint. It is an interesting question exactly why this package has
-% this limitation. After all, a one-column page grid is just a degenerate case of the
-% two column.
-%
-% \subsection{longtable}
-% David Carlisle's \classname{longtable} package sets tables that can be so long as to break over pages.
-% According to its author, it uses the same override of \LaTeX's output routine as
-% Frank Mittelbach's \classname{multicol} package. By implication, then, it has a hard
-% incompatability with the latter.
-%
-% The \classname{longtable} package also performs a check of whether the document is in
-% \cmd\twocolumn\ mode, and declines to work if this is the case. It is not clear, however,
-% that there is any true incompatability present if so. It's just that David did not see any reason
-% anyone would want to set such long tables in a multicolumn document, hence the check.
-%
-% There does not appear to be any indication that \classname{longtable} would work less
-% well under \classname{ltxgrid} than under standard \LaTeX's \cmd\twocolumn\ mode.
-% Therefore, this \classname{ltxgrid} patches \classname{longtable} (if loaded) so as to provide
-% compatability. In the course of which, \classname{longtable} becomes more robust
-% (\classname{longtable} has mumerous bugs and incompatabilities of long standing,
-% some of which are repaired by \classname{ltxgrid}).
-%
-% One problem remains, namely that, if a \env{longtable} environment breaks over columns
-% and thereby inserts its special headers and footers at that break, and those columms are then
-% balanced (due to a return to the one-column page grid), then those inserted rows
-% will remain, and may no longer fall at the column break. This will, of course look
-% wrong.
-%
-% The only way to fix this problem is to avoid doing column balancing in the way
-% I have implemented here; such an enhancement to this package is possible.
-%
-% \subsection{multicol}
-% Frank Mittelbach's \classname{multicol} package provides a page grid with many columns,
-% albeit denies the placement of floats in individual columns.
-%
-% It establishes its own \cmd\output\ routine, which is the reason it runs afoul of
-% the \classname{longtable} package. On the other hand, \classname{ltxgrid} specifically
-% allows for the case where a package installs its own \cmd\output\ routine, so
-% there is no incompatability on that basis.
-%
-% Still, it is pointless to use \classname{multicol} if you are using \classname{ltxgrid},
-% since both packages provide multicolumn page layouts.
-% Therefore, \classname{multicol} is not supported by \classname{ltxgrid}.
-%
-% \subsection{ltxgrid}
-% It has been pointed out that one of the disadvantages of adopting the \classname{ltxgrid} package is that
-% it does alter the \LaTeX\ kernel.
-% Any package that itself alters the \LaTeX\ kernel may be incompatible with \classname{ltxgrid}, and new packages
-% (destined perhaps to become part of the successor to \LaTeXe) may break \classname{ltxgrid}.
-%
-% The consequence is that packages introduced in future, and future changes to \LaTeX\ may be incompatible
-% with \classname{ltxgrid}.
-% This is, of course, true.
-% The development plan for \classname{ltxgrid} is that when such packages and \LaTeX\ kernel changes come about,
-% the burden will be on \classname{ltxgrid} to change in a way that provides for continued compatability with
-% those packages and \LaTeX\ kernel changes.
-%
-%
-% \section{How \classname{ltxgrid} places footnotes}
-%
-% In conventional multicolumn layouts, a footnote will appear at the bottom of the column in which it is called out.
-% The \classname{ltxgrid} package implements this conventional layout choice by default.
-% However, other choices are possible (a la \classname{ftnright}, whose compatability with \classname{ltxgrid} has not been tested).
-%
-% One unusual feature of \classname{ltxgrid}'s default implementation must be mentioned, though,
-% namely the case in a two-column page grid, where a footnote is followed by a temporary change to the one-column page grid
-% (e.g., for a wide equation).
-% In such a case, the material above the wide material is split into two columns, and a footnote whose callout
-% appears in the right-hand column will nonetheless be set at the base of the left column.
-%
-% This arrangement was chosen because it ensures that the footnotes at the bottom of any page will appear in
-% numerical order. It can be argued that this choice is ``incorrect'', but be that as it may,
-% the \classname{ltxgrid} package does not foreclose on other arrangements for the footnotes.
-% The package can be adapted to accomodate any page design desired.
-%
-% \section{Limitations in \classname{ltxgrid}'s default column balancing method}%
-%
-% In a multicolumn page grid, when encountering a page that is not completely full,
-% it is customary to set the material in balanced columns (typically with the last column no longer than any of the others).
-% Such a case also crops up when temporarily interrupting the multicolumn grid to set material on the full width of the page:
-% the material on the page above the break is customarily set in balanced columns.
-%
-% An awkward case arises when we have already set one or more complete columns of type before encountering the need to
-% balance columns. In this subset of cases, the default in \classname{ltxgrid} is to
-% do an operation I call ``re-balancing'':
-% the material on the page so far is pasted back together into a single column, and new, balanced column breaks are
-% calculated.
-%
-% This scheme typically works fine, but it has a significant vulnerability:
-% any discardable items trimmed at the original column break are lost, never to be retrieved.
-% Consequently, after re-balancing, an element like, say, a section head can fail to have the correct amount of whitespace above.
-%
-% This problem is due to an unfortunate optimization in \TeX, wherein a certain class of nodes is trimmed from the
-% top of main vertical list upon returning from the output routine:
-% any penalty, glue, or leader node falls in to this class of discardable nodes,
-% and trimming proceeds until a non-discardable node (such as a box, or rule) is encountered.
-% It gets better: a third class of nodes is transparent to this trimming process;
-% they are neither discarded nor do they halt the process of trimming:
-% mark nodes and all whatsits fall into this class of transparent nodes;
-% they are quietly passed over during trimming.
-%
-% An alternative approach for \TeX\ to take would have been,
-% rather than discarding the node entirely, to simply \emph{mark} it as discarded.
-% (Implementors of extended \TeX, please note!)
-% Then, upon shipping out, such nodes would not make it into the DVI.
-% \TeX's optimization, driven by the small computer architectures current when it was developed,
-% does save mem, but at the cost of revisiting page breaks in a reliable way.
-%
-% FIXME: how to fix a column break in the above case? Widetext?
-%
-%\StopEventually{}
-%
-% \section{Implementation of package}
-%
-% 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. His thorough understanding
-% of \TeX's output routine underpins the entire \classname{ltxgrid}
-% package.
-%
-% \subsection{Beginning of the \file{ltxgrid} {\sc docstrip} module}
-% Requires the underpinnings of the \classname{ltxkrnext} package.
-% \begin{macrocode}
-%<*package>
-\def\package@name{ltxgrid}%
-\expandafter\PackageInfo\expandafter{\package@name}{%
- Page grid for \protect\LaTeXe,
- by A. Ogawa (arthur_ogawa at sbcglobal.net)%
-}%
-\RequirePackage{ltxutil}%
-%</package>
-% \end{macrocode}
-%
-% \subsection{Banner}%
-% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% \subsection{Sundry}%
-% Here are assorted macro definitions.
-% \begin{macro}{\lineloop}
-% \begin{macro}{\linefoot}
-% The (document-level) command \cmd\lineloop\ sets numbered lines until the
-% specified count is reached.
-% The command \cmd\linefoot\ sets a single, automatically numbered line, but with a footnote (with the specified label);
-% it automatically increments the line counter.
-% These commands are typically used to construct test documents.
-%
-% Because the counter is globally advanced and never reset, successive
-% calls to \cmd\lineloop\ should have an argument ever larger.
-% The formatted output will have each line labeled with its ordinal number.
-% \begin{macrocode}
-\newcounter{linecount}
-\def\loop@line#1#2{%
- \par
- \hb@xt@\hsize{%
- \global\advance#1\@ne
- \edef\@tempa{\@ifnum{100>#1}{0}{}\@ifnum{10>#1}{0}{}\number#1}%
- \@tempa\edef\@tempa{\special{line:\@tempa}}\@tempa
- \vrule depth2.5\p@#2\leaders\hrule\hfil
- }%
-}%
-\def\lineloop#1{%
- \loopwhile{\loop@line\c@linecount{}\@ifnum{#1>\c@linecount}}%
-}%
-\def\linefoot#1{%
- \loop@line\c@linecount{%
- \footnote{%
- #1\special{foot:#1}\vrule depth2.5\p@\leaders\hrule\hfill
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Mark Components}%
-%
-% Override LaTeX's mark macros to allow more components.
-%
-% We remain bound by the weakness of LaTeX's scheme in that
-% one cannot emulate the action of \TeX\ whereby
-% material with marks can be inserted in the middle of
-% a vertical list such that the marks are reliably calculated.
-% If we did that, \cmd\@themark\ would no longer be utilized.
-%
-% A more robust scheme involves placing all marks (component and value)
-% into a list (using global scoping, i.e., \cmd\gdef),
-% and using \cmd\@@mark to place an index on that list into the MVL.
-% Then, e.g., \cmd\@@botmark signifies the place where that list is to be cut,
-% and the \cmd\botmark\ of any component is
-% the value of the last element of the cut
-% list having the given component. The \cmd\firstmark\ and \cmd\topmark\
-% can likewise be defined relative to \cmd\@@firstmark\ and \cmd\@@topmark,
-% except in the latter case, we want the first following the cut instead of the last
-% preceding the cut.
-%
-% The limitation of this scheme is its demands upon \TeX's mem.
-% The list of marks would need to be trimmed back to, effectively,
-% \cmd\topmark\ at the beginning of every page.
-%
-% This approach is not yet part of the extended LaTeX kernel.
-%
-% \begin{macro}{\@@mark}
-% \begin{macro}{\@@topmark}
-% \begin{macro}{\@@firstmark}
-% \begin{macro}{\@@botmark}
-% \begin{macro}{\@@splitfirstmark}
-% \begin{macro}{\@@splitbotmark}
-% Remember primitives under a new set of names.
-% \begin{macrocode}
-\let\@@mark\mark
-\let\@@topmark\topmark
-\let\@@firstmark\firstmark
-\let\@@botmark\botmark
-\let\@@splitfirstmark\splitfirstmark
-\let\@@splitbotmark\splitbotmark
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Procedures that expose the component data structure}%
-% This portion of the code exposes the internal representation of
-% the mark components. If we wish to add more components, we will have to revise
-% these macro definitions:
-% \cmd\@themark,
-% \cmd\nul@mark,
-% \cmd\set@mark@netw@,
-% \cmd\set@marktw@,
-% \cmd\set@markthr@@,
-% \cmd\get@mark@@ne,
-% \cmd\get@mark@tw@,
-% \cmd\get@mark@thr@@,
-% \cmd\get@mark@f@ur.
-%
-% \begin{macro}{\@themark}
-%FIXME: is it safer to eliminate \cmd\@themark\ in favor of a message that evaluates \cmd\@@botmark?
-%
-% Note: these definitions expose the data structure of mark components.
-% \begin{macrocode}
-\def\@themark{{}{}{}{}}%
-\def\nul@mark{{}{}{}{}\@@nul}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\set@mark@netw@}
-% \begin{macro}{\set@marktw@}
-% \begin{macro}{\set@markthr@@}
-% These procedures insert the new value of a particular mark component into the given argument.
-% They expose the data structure of mark components.
-%
-% \begin{macrocode}
-\def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}%
-\def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}%
-\def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\get@mark@@ne}
-% \begin{macro}{\get@mark@tw@}
-% \begin{macro}{\get@mark@thr@@}
-% \begin{macro}{\get@mark@f@ur}
-% These procedures retreive the value of a particular mark component.
-% They expose the data structure of mark components.
-% \begin{macrocode}
-\def\get@mark@@ne#1#2#3#4#5\@@nul{#1}%
-\def\get@mark@tw@#1#2#3#4#5\@@nul{#2}%
-\def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}%
-\def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Procedures that do not expose the component data structure}%
-%
-% \begin{macro}{\mark@netw@}
-% \begin{macro}{\marktw@}
-% \begin{macro}{\markthr@@}
-% These procedures insert the new value of a particular mark component into \cmd\@themark,
-% then execute \cmd\do@mark.
-% They constitute the implementation layer for mark components one, two, and three.
-% An analogous procedure for component four could be defined; call it \cmd\markf@ur.
-%
-% \begin{macrocode}
-\def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}%
-\def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}%
-\def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\do@mark}
-% \begin{macro}{\do@@mark}
-% Access procedures \cmd\mark (AKA \cmd\@@mark).
-% The \cmd\do@mark\ procedure is used when a mark is being put down into the MVL;
-% \cmd\do@@mark\ when this happens in the output routine.
-% \begin{macrocode}
-\def\do@mark{\do@@mark\@themark\nobreak@mark}%
-\def\do@@mark#1{%
- \begingroup
- \let@mark
- \@@mark{#1}%
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\let@mark}
-% \begin{macro}{\nobreak@mark}%
-% The procedure that makes \cmd\csname s robust within a mark.
-% Use \cmd\appdef\ and \cmd\robust@\ to extend the list.
-% \begin{macrocode}
-\def\let@mark{%
- \let\protect\@unexpandable@protect
- \let\label\relax
- \let\index\relax
- \let\glossary\relax
-}%
-\def\nobreak@mark{%
- \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Using mark components}%
-%
-% These procedures use the component mark mechanism to implement
-% a mark component that remembers the current environment (used in page makeup)
-% and the the two mark components left over from the original \LaTeX.
-% The fourth component is presently unused.
-%
-% \begin{macro}{\mark@envir}
-% The third mark component's access procedures.
-% The \cmd\mark@envir\ and \cmd\bot@envir\ commands are a good model of how to write
-% access procedures for a new mark component.
-% \begin{macrocode}
-\def\mark@envir{\markthr@@}%
-\def\bot@envir{%
- \expandafter\expandafter
- \expandafter\get@mark@thr@@
- \expandafter\@@botmark
- \nul@mark
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\markboth}
-% \begin{macro}{\markright}
-% \begin{macro}{\leftmark}
-% \begin{macro}{\rightmark}
-% Set procedures for legacy components.
-% \begin{macrocode}
-\def\markboth{\mark@netw@}%
-\def\markright{\marktw@}%
-% \end{macrocode}
-%
-% Retrieval procedures for legacy mark components.
-% The procedure for retrieving the first component from \cmd\botmark\
-% and the second component from \cmd\firstmark have names in \LaTeX;
-% they are called, respectively, \cmd\leftmark\ and \cmd\rightmark.
-%
-% It is possible to retrieve the components of \cmd\topmark\
-% as well: use \cmd\saved@@topmark.
-% \begin{macrocode}
-\def\leftmark{%
- \expandafter\expandafter
- \expandafter\get@mark@@ne
- \expandafter\saved@@botmark
- \nul@mark
-}%
-\def\rightmark{%
- \expandafter\expandafter
- \expandafter\get@mark@tw@
- \expandafter\saved@@firstmark
- \nul@mark
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \subsection{Output Super-routine}%
-%
-% We want to change \LaTeX's output routine, but do not wish to remain vulnerable
-% to interference from such ``required'' packages as
-% \classname{multicol} (authored by Frank Mittelbach)
-% and \classname{longtable} (authored by David P. Carlisle), which
-% swap in their own output routines when the respective package is active.
-%
-% The better mechanism, used here, is due to William Baxter (web at superscript.com),
-% who has allowed his several ideas to be used in this package.
-%
-% In what follows, we effectively wrap up the old \LaTeX\ output routine inside
-% a new, more flexible ``super routine''. When the output routine is called,
-% the ``super routine'' acts as a dispatcher. If the old routine is needed, it is called.
-%
-% If a package attempts to substitute in their own output routine, they will effectively
-% be modifying a token register by the name of \cmd\output.
-% The primitive \cmd\output\ is now known by a different name, which should no longer be
-% necessary to use.
-%
-% Usage note: to make a visit to the output routine employing the dispatcher, enter
-% with a value of \cmd\outputpenalty\ that corresponds to a macro. Defining as follows:
-%\begin{verbatim}
-%\@namedef{output@10000}{<your code here>}%
-%\end{verbatim}
-% by convention, your output routine should void out \cmd\box\cmd\@cclv.
-%
-% In rewriting \LaTeX's output dispatcher
-% in a much simpler form, we also avoid the sin of multiple \cmd\shipout s
-% within a single visit to the output routine.
-%
-% Conceptually, we divide visits to the output routine into two classes.
-% The first involves natural page breaks
-% (at a \cmd\newpage\ or when \cmd\pagetotal $>$ \cmd\pagegoal)
-% and usually resulting in \cmd\box\cmd\@cclv\ either being shipped out or
-% salted away (e.g., each column in a multicolumn layout).
-% We might call this class the ``natural output routines''; the \cmd\outputpenalty\
-% will never be less than $-10000$.
-% Furthermore, we ensure that \cmd\holdinginserts\ is cleared when
-% calling such routines.
-%
-% The other class involves a forced visit to the output routine
-% via a large negative penalty ($< -10000$). They do not generally
-% result in a \cmd\shipout\ of \cmd\box\cmd\@cclv: they may be dead cycles.
-% We provide a mechanism (call it a ``one-off'' output routine) that allows
-% us to specify certain processing to be done when \TeX\ reaches
-% the current position on the page.
-%
-% One-off output routines themselves fall into two divisions, ones
-% that process \cmd\box\cmd\@cclv, and ones that work on the main vertical list (MVL).
-% The former are typified by changes to the page grid, perhaps
-% even column balancing.
-% The latter involve the insertion of penalties or glue and the processing of floats.
-%
-% The natural output routine is a single procedure. We have not introduced multiple
-% natural output routines based on the \cmd\outputpenalty\ because \TeX\ does not
-% support such a thing: \TeX\ sometimes lays down a penalty whose value is the sum
-% of other penalties. Because of this, we cannot depend on the value of \cmd\outputpenalty\
-% in such areas.
-%
-% We do introduce flexibility in the form of a mechanism for patching into the
-% natural output routine. Three hooks are offered, allowing a procedure
-% to prepare for the upcoming visit to the output routine,
-% access to \cmd\box\cmd\@cclv, and after doing \cmd\shipout\ (or otherwise
-% committing the material to the page).
-%
-% Environments, commands, and even packages can install their
-% own procedures into these hooks.
-% For instance, if the longtable package is loaded, it will install
-% its procedures, but those procedures will punt if the page break
-% being processed does not actually fall within a longtable environment.
-%
-% \begin{macro}{\primitive@output}
-% Here we remember the \TeX\ primitive \cmd\output\ and its value,
-% and then proceed to take over the \cmd\csname\ of \cmd\output,
-% making it a \cmd\toks\ register and installing the old value of
-% the output routine.
-% \begin{macrocode}
-\let\primitive@output\output
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\output@latex}
-% \begin{macro}{\output}
-% Grab the tokens in \cmd\the\cmd\output\ (but without the extra set of braces).
-% The value of \cmd\toks@\ must remain untouched until loaded into the appropriate token
-% register; this is done a few lines below.
-% \begin{macrocode}
-\long\def\@tempa#1\@@nil{#1}%
- \toks@
-\expandafter\expandafter
-\expandafter{%
-\expandafter \@tempa
- \the\primitive@output
- \@@nil
- }%
-\newtoks\output@latex
-\output@latex\expandafter{\the\toks@}%
-\let\output\output@latex
-% \end{macrocode}
-%
-% A comment on compatibility with other packages that co-opt the output routine.
-%
-% Somewhere on the LaTeX-L list, David Kastrup has urged macro writers to take over
-% the output routine in such a way that others can do likewise. How is this to be
-% accomplished?
-%
-% Consider what the \classname{lineno} package does when it loads.
-% \begin{enumerate}
-% \item
-% It does \cmd\let\ cmd\@tempa\ \cmd\output.
-% This has the effect of identifying \cmd\@tempa\ with the
-% \cmd\toks\ register we created above to hold the old output routine of \LaTeX.
-% Let us say that was \cmd\toks14.
-% \item
-% \classname{lineno} itself effectively does \cmd\newtoks\ \cmd\@LN@output,
-% which assigns that \cmd\csname\ to \cmd\toks 15.
-% \item
-% It loads \cmd\@LN@output\ with the contents of \cmd\@tempa
-% (that is, \cmd\toks14, our copy of \LaTeX's output routine).
-% \item
-% Then it loads \cmd\@tempa\ with its own desired procedure,
-% to be executed at \cmd\output\ time, thereby taking over what it thinks is the output routine,
-% but which is in reality the procedure \revtex\ executes when it wants to pass control
-% to \LaTeX's original output routine.
-% \item
-% It then does \cmd\let\ \cmd\output\ \cmd\@LN@output,
-% which now identifies \cmd\output\ with \cmd\toks15, the output routine of \classname{lineno}.
-% \item
-% When the \cmd\output\ routine is triggered,
-% the primitive output routine \cmd\primitive@output\ is executed, and if
-% appropriate, control is passed to \cmd\output@latex, which \revtex\ had loaded with the old
-% \LaTeX\ output routine, but which is presently loaded with that of \classname{lineno}.
-% \item
-% The output routine of \classname{lineno} is executed, and if appropriate control is passed
-% to \cmd\@LN@output, the old output routine of \LaTeX.
-% \item
-% Furthermore, the \cmd\csname\ \cmd\output\ now points to \cmd\@LN@output\ (\cmd\toks15).
-% This means that someone coming in after \classname{lineno} to take over the output routine
-% will actually get executed after that of \classname{lineno}, but before \LaTeX.
-% \end{enumerate}
-% As you can see, the process of taking over the output routine may continue until all of the
-% \cmd\toks\ registers have been allocated.
-% If, say, \classname{newpackage} would itself like to take over the output routine,
-% and if it uses the above set of steps, then when the output routine is triggered, the order
-% of execution is \revtex, then \classname{lineno}, then \classname{newpackage}, then \LaTeX.
-% Each new package inserts itself on front of \LaTeX.
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\dispatch@output}
-% \changes{4.1b}{2008/08/04}{(AO, 456) Compatibility with other packages that override the output routine, following suggestion by David Kastrup.}
-% We now install our own output routine in place of the original
-% output routine of \LaTeX, which is still available as \cmd\the\ \cmd\output.
-%
-% The output routine is simply the procedure \cmd\dispatch@output.
-% It either dispatches to a procedure based on a particular value of
-% \cmd\outputpenalty\ or it executes \cmd\the\cmd\output@latex\ tokens.
-% \begin{macrocode}
-\primitive@output{\dispatch@output}%
-\def\dispatch@output{%
- \let\par\@@par
-% \end{macrocode}
-% Try to interpret \cmd\outputpenalty\ as a dispatcher to a message handler,
-% its value is, e.g., \cmd\do@startpage@pen.
-% \begin{macrocode}
- \expandafter\let\expandafter\output@procedure\csname output@\the\outputpenalty\endcsname
-% \end{macrocode}
-% If we have failed to find a dispatcher, then settle for \cmd\output@latex.
-% \begin{macrocode}
- \@ifnotrelax\output@procedure{}{%
- \expandafter\def\expandafter\output@procedure\expandafter{\the\output@latex}%
- }%
-% \end{macrocode}
-% Now test if the dispatcher is the special case of \cmd\execute@message@pen, in which case execute the \cmd\@message@saved.
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
- \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\output@procedure}{%
- \let\output@procedure\@message@saved
- }{}%
- \ltxgrid@info@sw{\class@info{\string\dispatch@output}\say\output@procedure\saythe\holdinginserts}{}%
- \outputdebug@sw{\output@debug}{}%
- \output@procedure
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\set@output@procedure#1#2{%
- \count@\outputpenalty\advance\count@-#2%
- \expandafter\let\expandafter#1\csname output@\the\count@\endcsname
-}%
-% \end{macrocode}
-%
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% The following procedure is executed at the beginning of each visit to the output routine,
-% contingent on the level of diagnostics specified.
-% However, it bails out when the visit is part of a tight sequence of visits to the output routine.
-% \begin{macrocode}
-\def\output@debug{%
- \def\@tempa{\save@message}%
- \@ifx{\output@procedure\@tempa}{%
- \true@sw
- }{%
- \@ifnum{\outputpenalty=-\save@column@insert@pen}{%
- \@ifnum{\holdinginserts>\z@}%
- }{%
- \false@sw
- }%
- }%
- {}{\output@debug@}%
-}%
-\def\output@debug@{%
-%<ignore> \saythe\inputlineno
- \saythe\outputpenalty
- \saythe\interlinepenalty
- \saythe\brokenpenalty
- \saythe\clubpenalty
- \saythe\widowpenalty
- \saythe\displaywidowpenalty
- \saythe\predisplaypenalty
- \saythe\interdisplaylinepenalty
- \saythe\postdisplaypenalty
- \saythe\badness
- \say\thepagegrid
- \saythe\pagegrid@col
- \saythe\pagegrid@cur
-%<ignore> \say\bot@envir
- \saythe\insertpenalties
-%<ignore> \say\@@topmark
-%<ignore> \say\saved@@topmark
-%<ignore> \say\@@firstmark
-%<ignore> \say\saved@@firstmark
- \say\@@botmark
-%<ignore> \say\saved@@botmark
- \saythe\pagegoal
- \saythe\pagetotal
- \saythe{\badness\@cclv}%
- \say\@toplist
- \say\@botlist
- \say\@dbltoplist
- \say\@deferlist
- \trace@scroll{%
- \showbox\@cclv
- \showbox\@cclv@saved
- \showbox\pagesofar
-% \end{macrocode}
-% Klootch! The following line provides only for two-column page grid; if debugging more columns, you must
-% add more statements here.
-% \begin{macrocode}
- \showbox\csname col@1\endcsname
- \showbox\footsofar
- \showbox\footins
- \showbox\footins@saved
- \showlists
- }%
-}%
-\@ifxundefined{\outputdebug@sw}{%
- \@booleanfalse\outputdebug@sw
-}{}%
-\def\trace@scroll#1{\begingroup\showboxbreadth\maxdimen\showboxdepth\maxdimen\scrollmode#1\endgroup}%
-\def\trace@box#1{\trace@scroll{\showbox#1}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@outputpage}
-% \begin{macro}{\@outputpage@head}
-% \begin{macro}{\@outputpage@tail}
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@tail} tailpatches \cs{@outputpage}}%
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@head} headpatches \cs{@outputpage}}%
-% The procedure \cmd\@outputpage\ of standard \LaTeX\ is the sole place where a \cmd\shipout\ is carried out.
-% The procedures that build \cmd\@outputbox\ just before a page is shipped out by \cmd\@outputpage\ are:
-% \cmd\@makecolumn,
-% \cmd\@combinepage, and
-% \cmd\@combinedblfloats.
-%
-% We need to head- and tailpatch this procedure, so we perform here
-% the only modifications to that procedure that are essential.
-% Elsewhere, we will build up the meanings of \cmd\@outputpage@head\ and \cmd\@outputpage@tail.
-% \begin{macrocode}
-\prepdef\@outputpage{\@outputpage@head}%
-\let\@outputpage@head\@empty
-\appdef\@outputpage{\@outputpage@tail}%
-\let\@outputpage@tail\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\show@box@size}
-% \begin{macro}{\show@text@box@size}
-% \begin{macro}{\show@pagesofar@size}
-% \begin{macro}{\show@box@size@sw}
-% \begin{macro}{\total@text}
-% \changes{4.1b}{2008/08/04}{(AO, 452) Support length checking: show size of shipped out text.}
-% Procedure \cmd\show@box@size\ is a diagnostic for the sizes of boxes;
-% the boolean \cmd\show@box@size@sw\ turns it on and off.
-% \begin{macrocode}
-\def\show@box@size#1#2{%
- \show@box@size@sw{%
- \begingroup
- \setbox\z@\vbox{\unvcopy#2\hrule}%
- \class@info{Show box size: #1^^J%
- (\the\ht\z@\space X \the\wd\z@)
- \the\c@page\space\space\the\pagegrid@cur\space\the\pagegrid@col
- }%
- \endgroup
- }{}%
-}%
-% \end{macrocode}
-% Procedure \cmd\show@text@box@size\ tallies the size of the indicated column.
-% If \cmd\box\ \cmd\pagesofar\ is a factor, then its height has been memorized
-% in the depth of the tally box.
-%
-% \changes{4.1f}{2009/07/10}{(AO, 518) Tally register overflow when locument is long}
-% \begin{macrocode}
-\def\show@text@box@size{%
- \show@box@size{Text column}\@outputbox
- \tally@box@size@sw{%
- \@ifdim{\wd\@outputbox>\z@}{%
- \dimen@\ht\@outputbox\divide\dimen@\@twopowerfourteen
- \advance\dimen@-\dp\csname box@size@\the\pagegrid@col\endcsname
- \@ifdim{\dimen@>\z@}{%
- \advance\dimen@ \ht\csname box@size@\the\pagegrid@col\endcsname
- \global\ht\csname box@size@\the\pagegrid@col\endcsname\dimen@
- \show@box@size@sw{%
- \class@info{Column: \the\dimen@}%
- }{}%
- }{}%
- }{}%
- \global\dp\csname box@size@\the\pagegrid@col\endcsname\z@
- }{}%
-}%
-% \end{macrocode}
-% Take the height of \cmd\box\ \cmd\pagesofar\ into account.
-% \begin{macrocode}
-\def\show@pagesofar@size{%
- \show@box@size{Page so far}\pagesofar
- \dimen@\ht\pagesofar\divide\dimen@\@twopowerfourteen
- \global\dp\csname box@size@1\endcsname\dimen@
- \show@box@size@sw{%
- \class@info{Pagesofar: \the\dimen@}%
- }{}%
-}%
-\@booleanfalse\tally@box@size@sw
-\@booleanfalse\show@box@size@sw
-\expandafter\newbox\csname box@size@1\endcsname
-\expandafter\setbox\csname box@size@1\endcsname\hbox{}%
-\expandafter\newbox\csname box@size@2\endcsname
-\expandafter\setbox\csname box@size@2\endcsname\hbox{}%
-\def\total@text{%
- \@tempdima\the\ht\csname box@size@2\endcsname\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima
- \@tempdimb\the\ht\csname box@size@1\endcsname\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb
- \class@info{Total text: Column(\the\@tempcnta pt), Page(\the\@tempcntb pt)}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Further thoughts about inserts}
-%
-% The only safe way to deal with inserts is to either set \cmd\holdininserts\ or
-% to commit to using whatever insert comes your way: you cannot change your mind
-% once you see a non-void \cmd\box\cmd\footins, say.
-%
-% Therefore all output routine processing must proceed with \cmd\holdinginserts\ set
-% until you are sure of the material to be committed to the page. At that point, you
-% can clear \cmd\holdinginserts, spew \cmd\box\cmd\@cclv, put down the appropriate penalty,
-% and exit, with the knowledge that \TeX\ will re-find the same pagebreak, this time
-% visiting the output routine with everything, including inserts, in their proper
-% place.
-% This technique applies to split elements (screens, longtable, index) as well as to
-% manufactured pages (float pages and clearpage pages).
-%
-% Therefore, the output routine must not make assumptions about whether \cmd\holdinginserts\
-% should be cleared; instead this must be left to the one-off output routines or the natural output routine.
-%
-% If we are manufacturing pages (``float page processing''), and if \cmd\pagegoal\ is not equal to
-% \cmd\vsize, then inserts are at hand, and our criterion should take into account the insert
-% material, even though we cannot measure its height based on the size of \cmd\box\cmd\footins\
-% (because \cmd\holdinginserts\ is set, you see).
-%
-% It would be better to take the complement of \cmd\floatpagefraction\ and use that
-% as a standard for the looseness of the page. Since \cmd\pagegoal\ reflects the inserted material,
-% the criterion becomes the difference of the aggregate height of the floats and the \cmd\pagegoal\
-% versus this "page looseness" standard.
-%
-% As a check, consider what happens if we bail out: \cmd\@deferlist\ has never been touched, so it
-% requires no attention. Also, \cmd\holdinginserts\ has never been cleared, so inserts require
-% no attention. So we only have to ensure that marks are preserved, which is already taken
-% care of by the message handler mechanism.
-%
-% If we are doing ordinary page cutting, then the scheme would be to detect whether we are within
-% a screen (or longtable as may be), do the adjustment to the page height, and return, but this time
-% with \cmd\holdinginserts\ cleared. Upon reentering the output routine, we may or may not be within
-% the screen environment, but we are now sure to have a final page break, and we can commit this
-% material (by shipping out or by saving it out as a full column).
-%
-% In the above, the first of the two visits to the output routine is a dead cycle and requires
-% propagation of marks, but nothing else.
-%
-% \subsection{The difference between inserts and floats}
-%
-% While revisiting this package in 2008, I needed to clarify under what circumstances inserts
-% would be added to the \cmd\pagesofar. My conclusion is that I had been treating them
-% exactly the same as floats, but that was a mistake.
-%
-% Floats can be committed at the top of a column, in the middle, or at the bottom.
-% Footnotes (the only \cmd\insert\ that is used in \LaTeX) may only be committed at the bottom
-% of a column. So, it was necessary to provide two versions of \cmd\@combinepage, one
-% that committed \cmd\insert s, and the other that did not, the former used only when
-% a column of text was committed. Note that even after a column is committed, we could change our minds:
-% for instance if in multicolumn grid and we decide to balance the columns.
-%
-%
-% \subsection{The natural output routine}
-%
-% Here is the portion of the output routine that fields cases not handled by
-% the dispatcher.
-%
-% The default is to ship out a page and then look around for more material
-% that might constitute a ``float page''. However, because \cmd\holdinginserts\
-% is normally set, this output routine must first have a dead cycle and
-% come back again with \cmd\holdinginserts\ cleared.
-% Then, after shipping out, it puts down a message that
-% will manufacture zero or more float pages, finally terminating
-% with a procedure that commits floats to a new unfinished page.
-%
-% To accomodate special processing, we execute hooks whose name is based
-% on the value of the "envir" mark component. The default is "document",
-% ensured by an initial mark of that value; the associated procedures
-% are all nil. Any unknown envir value will "\cmd\relax\ out".
-%
-% The test made by \cmd\toggle@insert\ tells whether we are on our first visit to
-% the output routine (with \cmd\holdinginserts\ still positive), or our second
-% (with \cmd\holdinginserts\ zeroed). The output routine will toggle the setting.
-%
-% The commands \cmd\hold@insertions\ and \cmd\move@insertions\ respectively
-% clear and set \cmd\holdinginserts, so this procedure effectively
-% clears \cmd\holdinginserts\ just long enough to pick up the insertions.
-% Important: any output routine that clears \cmd\holdinginserts\
-% must guarentee that it is restored on the subsequent visit to the output routine.
-% Or, to put it another way, if an output routine detects that \cmd\holdinginserts\
-% is cleared, it should take it upon itself to restore it to a positive value before exiting.
-%
-% The branch with \cmd\holdinginserts\ set is executed first; the other
-% branch follows on practically immediately thereafter. In the first branch,
-% we simply execute the appropriate hook and then execute a dead cycle.
-%
-% In the branch with \cmd\holdinginserts\ cleared, the procedure
-% builds up the current column, which is now complete, with \cmd\@makecolumn, then
-% dispatches to the shipout routine associated with the current page grid, \cmd\output@column@.
-% At the end, it triggers the execution of an output routine to prepare the next column (or page).
-%
-% \subsection{Natural output routine}%
-%
-% \begin{macro}{\natural@output}
-% \begin{macro}{\output}
-% Here is the output routine that handles natural pagebreaks:
-% we now have page that needs to be shipped out or a portion of a page that is ready to be committed to the page grid.
-% Processing is of necessity divided into phases, \cmd\output@holding\ is executed upon first encountering the natural page-breaking point, while inserts are being held.
-% The second phase, \cmd\output@moving, is set in motion by the first: here the same material (in most cases) will be processed with \cmd\holdinginserts\ cleared,
-% and the insertions (e.g., footnotes) are split off into their assigned box registers.
-% \begin{macrocode}
-\def\natural@output{\toggle@insert{\output@holding}{\output@moving}}%
-\output@latex{\natural@output}%
-% \end{macrocode}
-%
-% In accordance with the scheme suggested by David Kastrup for allowing another output routine
-% to slip itself into ours, we use a token register called \cmd\output.
-% However, we reserve the ability to restore things if we so desire.
-% This we must do in the case of the \filename{lineno.sty} package, because its functionality
-% is best served by being integrated into our own dispatcher-based output routine.
-%
-% To restore our own output routine, we can repeat the above assignment,
-% \begin{verbatim}
-%\output@latex{\natural@output}%
-% \end{verbatim}
-% some time before the document begins.
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\output@holding}
-% \begin{macro}{\@if@exceed@pagegoal}
-% The procedure \cmd\output@holding\
-% is our first cycle through the output routine; \cmd\holdinginserts\ is still set.
-% We give the current environment a heads up
-% (it is through this means that \classname{longtable} sets its running header and footer),
-% then we execute a dead cycle, which should propagate marks.
-%
-% One corner case that can crop up is the presence of a single unbreakable chunk whose size is larger
-% than \cmd\vsize.
-% Doing a dead cycle under such circumstances will not find the same breakpoint as this time
-% (remember we threw in a \cmd\mark\ node).
-% Instead, we attempt to remove the excess height of the material, so we can continue to propagate marks.
-%
-% The corner case is at hand if the natural size of \cmd\box\cmd\@cclv\ exceeds \cmd\pagegoal\ and
-% the contents cannot be shrunk to fit.
-%
-% \changes{4.1b}{2008/08/04}{New procedure for showing a box contents, \cs{trace@box}}
-% \begin{macrocode}
-\def\output@holding{%
- \csname output@init@\bot@envir\endcsname
- \@if@exceed@pagegoal{\unvcopy\@cclv}{%
- \setbox\z@\vbox{\unvcopy\@cclv}%
- \outputdebug@sw{\trace@box\z@}{}%
- \dimen@\ht\@cclv\advance\dimen@-\ht\z@
- \dead@cycle@repair\dimen@
- }{%
- \dead@cycle
- }%
-}%
-\def\@if@exceed@pagegoal#1{%
- \begingroup
- \setbox\z@\vbox{#1}%
- \dimen@\ht\z@\advance\dimen@\dp\z@
- \outputdebug@sw{\saythe\dimen@}{}%
- \@ifdim{\dimen@>\pagegoal}{%
- \setbox\z@\vbox{\@@mark{}\unvbox\z@}%
- \splittopskip\topskip
- \splitmaxdepth\maxdepth
- \vbadness\@M
- \vfuzz\maxdimen
- \setbox\tw@\vsplit\z@ to\pagegoal
- \outputdebug@sw{\trace@scroll{\showbox\tw@\showbox\z@}}{}%
- \setbox\tw@\vbox{\unvbox\tw@}%
- \@ifdim{\ht\tw@=\z@}{%
- \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}%
- \aftergroup\true@sw
- }{%
- \aftergroup\false@sw
- }%
- }{%
- \aftergroup\false@sw
- }%
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\output@moving}
-% \begin{macro}{\@cclv@nontrivial@sw}
-% The procedure \cmd\output@moving\
-% is our second cycle through the output routine; \cmd\holdinginserts\ is now cleared,
-% and \cmd\insert s will have been split off into their respective box registers, like \cmd\footins.
-%
-% \begin{enumerate}
-% \item
-% Set the values of \cmd\topmark\ and \cmd\firstmark.
-% \item
-% If we got here because of a \cmd\clearpage\ command, remove the protection box that this mechanism has left on the MVL.
-% \item
-% If the contents of \cmd\box\cmd\@cclv\ are non-trivial, commit it to the current page (as a column) or ship it out, as the case may call for.
-% \item
-% If not, discard it (we are at the end of \cmd\clearpage\ processing).
-% \item
-% Set various values, including the available space for setting type on the next column (\cmd\@colroom).
-% \end{enumerate}
-%
-% The processing for a non-trivial \cmd\box\cmd\@cclv\ are:
-% \begin{enumerate}
-% \item
-% Execute the head procedure for the current environment.
-% \item
-% Make up a column and ship it out (or commit it to the current page) via a procedure keyed to the current page grid.
-% \item
-% Put down an interrupt for \cmd\do@startcolumn@pen: this will force a visit to the output routine for the
-% purpose of committing floats to the next column.
-% \item
-% Possibly put down an interrupt to continue \cmd\clearpage\ proccessing.
-% \item
-% Execute the tail procedure for the current environment.
-% \end{enumerate}
-%
-%
-% The processing for a trivial \cmd\box\cmd\@cclv\ are:
-% \begin{enumerate}
-% \item
-% Void out \cmd\box\cmd\@cclv\ and give appropriate warning messages and diagnostics.
-% \item
-% Put down the same interrupts as for the non-trivial case above.
-% \end{enumerate}
-%
-% This instance of \cmd\@makecolumn\ is followed by \cmd\output@column@,
-% that is, it builds a column for \cmd\shipout\ rather than for adding to \cmd\pagesofar.
-%
-% We need to handle cases where the \cmd\output@pre@, \cmd\output@column@, or \cmd\output@post@\
-% dispatchers come up \cmd\relax ed out: the default is to execute the corresponding
-% procedures from the \env{docuemnt} environment and the one-column grid respectively.
-%
-% One such case comes up with frequency: at the end of the document, where the \cmd\botmark\ is
-% now empty.
-% \changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \changes{4.1n}{2010/01/02}{(AO, 571) Use procedures \cs{output@do@prep} and \cs{output@column@do} as dispatchers}
-% \begin{macrocode}
-\def\output@moving{%
- \set@top@firstmark
- \@ifnum{\outputpenalty=\do@newpage@pen}{%
- \setbox\@cclv\vbox{%
- \unvbox\@cclv
- \remove@lastbox
- \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}%
- }%
- }{}%
- \@cclv@nontrivial@sw{%
- \expandafter\output@do@prep\csname output@prep@\bot@envir \endcsname
- \@makecolumn\true@sw
- \expandafter\output@column@do\csname output@column@\thepagegrid\endcsname
- \protect@penalty\do@startcolumn@pen
- \clearpage@sw{%
- \protect@penalty\do@endpage@pen
- }{}%
- \expandafter\let\expandafter\output@post@\csname output@post@\bot@envir \endcsname
- \outputdebug@sw{\say\output@post@}{}%
- \@ifx{\output@post@\relax}{\output@post@document}{\output@post@}%
- }{%
- \void@cclv
- }%
- \set@colht
- \global\@mparbottom\z@
- \global\@textfloatsheight\z@
-}%
-% \end{macrocode}
-% Procedure \cmd\output@do@prep\ dispatches to the proper procedure to prepare page.
-% \begin{macrocode}
-\def\output@do@prep#1{%
- \outputdebug@sw{\class@info{Prep: \string#1}}{}%
- \@ifx{#1\relax}{\output@prep@document}{#1}%
-}%
-% \end{macrocode}
-% Procedure \cmd\output@column@do\ dispatches to the proper procedure to output column or page.
-% \begin{macrocode}
-\def\output@column@do#1{%
- \outputdebug@sw{\class@info{Output column: \string#1}}{}%
- \@ifx{#1\relax}{\output@column@one}{#1}%
-}%
-\def\void@cclv{\begingroup\setbox\z@\box\@cclv\endgroup}%
-\def\remove@lastbox{\setbox\z@\lastbox}%
-% \end{macrocode}
-%
-% The procedure \cmd\@cclv@nontrivial@sw\ determines if this visit to \cmd\output@moving\
-% is a trivial one, which happens at the end of \cmd\clearpage\ processing and under some pathological circumstances.
-% It emits a Boolean, so it is syntactically like \cmd\true@sw, albeit does not execute solely via expansion.
-%
-% Note: the case where \cmd\box\cmd\@cclv\ is void comes up at the very beginning of the job, when
-% typesetting a (full-page-width) title block in a two-column layout.
-%
-% Note: the code that removes the last box and skip from the output is intended to detect the case
-% where the output has whatsit nodes followed by topskip and a protection box.
-% This is what happens under normal circumstances at the end of \cmd\clearpage\ processing.
-% \changes{4.1b}{2008/08/04}{New procedure for showing a box contents, \cs{trace@box}}
-% \begin{macrocode}
-\def\@cclv@nontrivial@sw{%
- \@ifx@empty\@toplist{%
- \@ifx@empty\@botlist{%
- \@ifvoid\footins{%
- \@ifvoid\@cclv{%
- \false@sw
- }{%
- \setbox\z@\vbox{\unvcopy\@cclv}%
- \@ifdim{\ht\z@=\topskip}{%
- \setbox\z@\vbox\bgroup
- \unvbox\z@
- \remove@lastbox
- \dimen@\lastskip\unskip
- \@ifdim{\ht\z@=\ht\@protection@box}{%
- \advance\dimen@\ht\z@
- \@ifdim{\dimen@=\topskip}{%
- \aftergroup\true@sw
- }{%
- \aftergroup\false@sw
- }%
- }{%
- \aftergroup\false@sw
- }%
-% \end{macrocode}
-% End of \cmd\box\cmd\z@.
-% \begin{macrocode}
- \egroup
- {%
-% \end{macrocode}
-% Normal for \clearpage
-% \begin{macrocode}
- \false@sw
- }{%
- \true@sw
- }%
- }{%
- \@ifdim{\ht\z@=\z@}{%
- \ltxgrid@info{Found trivial column. Discarding it}%
- \outputdebug@sw{\trace@box\@cclv}{}%
- \false@sw
- }{%
- \true@sw
- }%
- }%
- }%
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
-}%
-% \end{macrocode}
-%
-%
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\protect@penalty}
-% The procedure \cmd\protect@penalty\ is the utility procedure for invoking a
-% one-off output routine. Such a routine can expect to find the protection box
-% above it in \cmd\box\cmd\@cclv: it should remove that box.
-%
-% Note that \cmd\execute@message\ does the same thing as \cmd\protect@penalty, but
-% in a slightly different way.
-%
-% We create a specially formulated box that will be universally used when a protection box is needed.
-% In this way, we can always recognize when \cmd\box\cmd\@cclv\ is trivial:
-% it will consist of whatsits followed by \cmd\topskip\ glue and the \cmd\@protection@box.
-% \begin{macrocode}
-\def\protect@penalty#1{\protection@box\penalty-#1\relax}%
-\newbox\@protection@box
-\setbox\@protection@box\vbox to1986sp{\vfil}%
-\def\protection@box{\nointerlineskip\copy\@protection@box}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\dead@cycle}
-% \begin{macro}{\dead@cycle@repair}
-% The procedure \cmd\dead@cycle\ is defined separately as a utility which can be used by
-% any output processing routine to emulate what takes place in the standard output routine.
-%
-% Here, we have entered the output routine with \cmd\holdinginserts\ enabled, which means that we
-% are not yet ready to ship out material, because the \cmd\insert\ registers are being held.
-% We want to clear \cmd\holdinginserts\ and come back here with the same page break as before, whereupon
-% we may properly proceed with page makeup.
-%
-% To do this, we
-% propagate marks, then spew the contents of \cmd\box\cmd\@cclv\ followed by the
-% original output penalty that landed us here (but only if it is not 10000,
-% the flag value for a pagebreak not at a penalty).
-%
-% However, the natural output routine should do this only if \cmd\box\cmd\@cclv\ is nontrivial.
-% A pathological case exists wherein a box of height greater than \cmd\textheight\ would cause an infinite loop involving the output routine.
-% The procedure \cmd\dead@cycle@repair, attempts to catch this case and avoid the loop.
-%
-% The test of the height of \cmd\box\cmd\@cclv\ is not the correct one, because this test will run afoul in
-% the case where \cmd\box\cmd\@cclv\ contains nothing but an \cmd\insert\ node. What to do?
-%
-% It is possible that the pathological case can be detected by looking at \cmd\pagetotal. If that quantity is
-% zero, then \cmd\box\cmd\@cclv\ really is trivial.
-%
-% In the procedure \cmd\dead@cycle@repair, if \cmd\box\cmd\@cclv\ is nontrivial, we execute \cmd\dead@cycle,
-% otherwise it contains nothing but a mark, so we dispense with propagating marks
-% and we simply spew out \cmd\box\cmd\@cclv\ without an accompanying mark.
-% This has the effect of failing to propagate marks, but this problem is preferrable to the infinite loop,
-% which in principle could crash even a robust operating system by filling up the file system.
-%
-% If a document has such a large chunk, it should be fixed, so we give a message in the log.
-%
-% You ask, ``In what way does this infinite loop come about?'' Good question!
-%
-% The setup is a chunk in the MVL that is taller than \cmd\textheight.
-% (Yes, it's that simple.)
-% As soon as the previous page ships out, the MVL will contain a mark (propagated from the previous page) followed
-% by that large chunk (call it the `big bad box', albeit does not need to be a single box).
-% The next visit to the output routine will be a natural page break, but
-% \TeX\ will select the juncture between the mark and the big bad box as the least-cost page break.
-% Unless the test in \cmd\dead@cycle\ is done, the cycle is perpetuated when the macro
-% reinserts the mark.
-%
-% The crux matter is achieving, in a robust way, the goal of going from a \cmd\holdinginserts\ state to one
-% where the insertions are moving.
-%
-% \begin{macrocode}
-\def\dead@cycle@repair#1{%
- \expandafter\do@@mark
- \expandafter{%
- \@@botmark
- }%
- \unvbox\@cclv
- \nointerlineskip
- \vbox to#1{\vss}%
- \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
-}%
-\def\dead@cycle@repair@protected#1{%
- \expandafter\do@@mark
- \expandafter{%
- \@@botmark
- }%
- \begingroup
- \unvbox\@cclv
-% \end{macrocode}
-% Remove the protection box
-% \begin{macrocode}
- \remove@lastbox
- \nointerlineskip
- \advance#1-\ht\@protection@box
- \vbox to#1{\vss}%
- \protection@box % Reinsert protection box
- \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
- \endgroup
-}%
-\def\dead@cycle{%
- \expandafter\do@@mark
- \expandafter{%
- \@@botmark
- }%
- \unvbox\@cclv
- \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\output@init@document}
-% \begin{macro}{\output@prep@document}
-% \begin{macro}{\output@post@document}
-% The default processing simply provides for insertion of held-over footnotes.
-% At a natural page break, we are either at the bottom of a column or at the bottom
-% of a page. In either case, the \cmd\output@init@\ processing adjusts for the height
-% of the held-over footnotes and bails out.
-% Upon our return, at \cmd\output@prep@\ time, the page break will accomodate the material;
-% it is now actually inserted by concatenating it with the contents of \cmd\footins.
-% The default processing for \cmd\output@post@\ is nil.
-% \changes{4.1b}{2008/08/04}{Box \cs{footbox} changed to box \cs{footsofar}}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\output@init@document{%
- \ltxgrid@info@sw{\class@info{\string\output@init@document}}{}%
- \global\vsize\vsize
-}%
-% \end{macrocode}
-% QUERY: the following procedure is very like \cmd\combine@foot@inserts. Should it be the same?
-% Answer: no, the two differ: this procedure makes a local assignment of \cmd\footins;
-% the latter makes a global assignment of \cmd\footsofar.
-%
-% Note: In a multicolumn document, footnotes must \emph{not} be balanced at this point.
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\output@prep@document{%
- \ltxgrid@foot@info@sw{\class@info{\string\output@prep@document}\trace@scroll{\showbox\footins\showbox\footsofar}}{}%
- \@ifvoid\footsofar{%
- }{%
- \global\setbox\footins\vbox\bgroup
- \unvbox\footsofar
- \@ifvoid\footins{}{%
- \marry@baselines
- \unvbox\footins
- }%
- \egroup
- \ltxgrid@foot@info@sw{\trace@box\footins}{}%
- }%
-}%
-\def\output@post@document{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@opcol}
-% The standard \LaTeX\ procedure \cmd\@opcol\ is now completely obsoleted.
-% \begin{macrocode}
-\let\@opcol\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@makecolumn}
-% \changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-% The procedure \cmd\@makecolumn\ packages up a page along with all its insertions and floats.
-% Therefore it is essential that it be executed with \cmd\holdininserts\ cleared.
-%
-% Note that there is a corner case when in a multi-column grid, where the change back to
-% one-column grid occurs just after a complete page ships out. We want to detect when
-% \cmd\@cclv\ contains nothing but a \cmd\mark, but this is a \TeX\ impossibility.
-%
-% Note on \cmd\@kludgeins: we have removed this mechanism from \LaTeX, because the implementation
-% of \cmd\enlargethispage\ no longer requires it.
-% Here, for consistency sake, we remove \cmd\@makespecialcolbox.
-%
-% The argument of \cmd\@makecolumn\ is a Boolean and determines if we combine the footnote material
-% into the present column. If the procedure is building a column for shipping out, then we will
-% combine the footnote material, if not, we return with the \cmd\footins\ box unchanged.
-%
-% \changes{4.1f}{2009/07/14}{(AO, 519) \cs{footins} content must be preserved and reintegrated}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% \changes{4.1n}{2010/01/02}{(AO, 571) change calling sequence of \cs{combine@foot@inserts} to expose box registers}%
-% I changed the behavior of this procedure in the case where the argument is \cmd\false@sw:
-% send the unused footnote material to \cmd\footsofar.
-% \begin{macrocode}
-\def\@makecolumn#1{%
- \ltxgrid@foot@info@sw{\class@info{\string\@makecolumn\string#1}}{}%
- \setbox\@outputbox\vbox\bgroup
- \boxmaxdepth\@maxdepth
- \@tempdima\dp\@cclv
- \unvbox\@cclv
- \vskip-\@tempdima
- \egroup
- \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty
- \show@text@box@size
- \@combinefloats
- #1{%
- \@combineinserts\@outputbox\footins
- }{%
- \combine@foot@inserts\footsofar\footins
- }%
- \set@adj@colht\dimen@
- \count@\vbadness
- \vbadness\@M
- \setbox\@outputbox\vbox to\dimen@\bgroup
- \@texttop
- \dimen@\dp\@outputbox
- \unvbox\@outputbox
- \vskip-\dimen@
- \@textbottom
- \egroup
- \vbadness\count@
- \global\maxdepth\@maxdepth
-}%
-\let\@makespecialcolbox\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@combineinserts}
-% The procedure to add the specified insertions to the packaged-up page.
-% All other classes of insertions should also be dealt with at this time.
-%
-% Note that the second argument must be a \cmd\newinsert\ register: we access the \cmd\box\ along with the \cmd\skip.
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% \changes{4.1n}{2010/01/02}{(AO, 571) footnote rule is leaders, so that it may be removed by \cs{vsplit}; mechanism of \cs{kern} signals to indicate footnote height}%
-% \begin{macrocode}
-\def\@combineinserts#1#2{%
- \ltxgrid@foot@info@sw{\class@info{\string\@combineinserts\string#1\string#2}\trace@box#2}{}%
- \setbox#1\vbox\bgroup
- \unvbox#1%
- \@ifvoid{#2}{}{%
- \dimen@\ht#2\advance\dimen@\dp#2\advance\dimen@\skip#2%
- \show@box@size{Combining inserts}#2%
- \vskip\skip#2%
-% \end{macrocode}
-% The footnote rule is created as leaders, so that it may be removed automatically (via \cmd\vsplit)
-% in the event the footnote is recovered from this column.
-% Note that if \cmd\color@begingroup\ or \cmd\normalcolor\ produce marks, this technique will be confounded.
-% \begin{macrocode}
- \setbox\z@\vbox{\footnoterule}\dimen@i\ht\z@
- \color@begingroup
- \normalcolor
- \cleaders\box\z@\vskip\dimen@i\kern-\dimen@i
- \csname combine@insert@\the\pagegrid@col\endcsname#2%
- \color@endgroup
-% \end{macrocode}
-% The following tells \cmd\recover@column\ the size of the footnotes added here, including the skip glue above.
-% \begin{macrocode}
- \kern-\dimen@\kern\dimen@
- }%
- \egroup
- \ltxgrid@foot@info@sw{\trace@box#1}{}%
-}%
-% \end{macrocode}
-% We provide for a layer of abstraction for the laying down of footnotes at the bottom of this column or page.
-% \end{macro}
-%
-% \begin{macro}{\combine@insert@tw@}
-% \begin{macro}{\combine@insert@@ne}
-% \begin{macro}{\twocolumn@grid@setup}
-% \begin{macro}{\onecolumn@grid@setup}
-% \begin{macro}{\columngrid@setup}
-% \changes{4.1p}{2010/02/24}{(AO, 583) Provide setup code also for footnotes in a one-column document}%
-% The following two definitions cover the cases of a two-column document (with footnotes set on a single-column width),
-% and a one-column document.
-% However, the case of a two-column document with footnotes set on full text width is not covered.
-%
-% For a document in an overall two-column page grid, execute the commands
-% \cmd\twocolumn@grid@setup\ followed by \cmd\open@twocolumn;
-% if on the full page width (one-column grid), the command \cmd\onecolumn@grid@setup.
-%
-% The following is the way REVTeX does the initialization.
-% The procedure \cmd\select@column@grid\ is executed at \cmd\AtBeginDocument\ time;
-% the boolean \cmd\twocolumn@sw\ selects between the two alternatives.
-% \begin{verbatim}
-%\def\select@column@grid{%
-% \twocolumn@sw{%
-% \twocolumn@grid@setup
-% \open@twocolumn
-% }{%
-% \onecolumn@grid@setup
-% }%
-%}%
-%\appdef\class@documenthook{%
-% \select@column@grid
-%}%
-% \end{verbatim}
-%
-% \begin{macrocode}
-\def\combine@insert@tw@#1{%
- \compose@footnotes@two#1\@ifvbox{#1}{\unvbox}{\box}#1%
-}%
-\def\combine@insert@@ne#1{%
- \compose@footnotes@one#1\@ifvbox{#1}{\unvbox}{\box}#1%
-}%
-\def\twocolumn@grid@setup{%
- \expandafter\let\csname combine@insert@1\endcsname\combine@insert@tw@
- \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
-}%
-\def\onecolumn@grid@setup{%
- \expandafter\let\csname combine@insert@1\endcsname\combine@insert@@ne
- \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
-}%
-\let\columngrid@setup\onecolumn@grid@setup
-\columngrid@setup
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@floatplacement}
-% In standard \LaTeX, someone (DPC?) makes the assumption that \cmd\@fpmin\ can be assigned
-% locally. This is no longer true now that we ship no more than one page per visit to the output routine.
-% We apply a bandaid.
-% \begin{macrocode}
-\appdef\@floatplacement{%
- \global\@fpmin\@fpmin
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pagebreak@pen}
-% While we are in the way of registering certain penalty values,
-% let us register the smallest one that will force a visit to the output routine.
-% However, this penalty will not have an assciated macro: we wish to execute the
-% natural output routine instead.
-%
-% Note that this penalty is invoked by \cmd\clearpage\ and \cmd\newpage.
-% \begin{macrocode}
-\mathchardef\pagebreak@pen=\@M
-\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Float placement}%
-%
-% \begin{macro}{\do@startcolumn@pen}
-% The procedure \cmd\do@startcolumn@pen\ is executed as a one-off output routine
-% just after a page is shipped out (or, in a multicolumn page grid, a column is salted away).
-%
-% Its job is to either generate a ``float page'' (in reality a column) for shipping out,
-% or to commit deferred floats to the fresh column, concluding with a dead cycle.
-% In the former case, we accomodate split footnotes and other insertions (by comparing \cmd\vsize\ and \cmd\pagegoal):
-% the floats are spewed onto the page, whereupon \LaTeX's output routine will place the footnotes and ship out,
-% iterating the process once again.
-%
-% Note that when this procedure is invoked, \cmd\box\cmd\@cclv\ still has within it the protection box, so we
-% start by removing it. Note also that if there was a split insertion held over from the previous page, the
-% insert node will be present in \cmd\box\cmd\@cclv, \emph{prior to} the protection box. For this reason, we cannot
-% just throw away that box, as we might be tempted to do.
-%
-% FIXME: where else do we possibly inappropriately discard \cmd\box\cmd\@cclv?
-%
-% Note that, because a column or page page had previously just been completed,
-% we can assume that there is nothing of importance on the page,
-% and because no message is being passed, we can preserve marks in a simple way.
-%
-% A Note on terminology:
-% In a single-column page grid, you might expect that we would execute the procedure \cmd\do@startpage.
-% But this is not so.
-% \LaTeX\ has a confustion of long standing,
-% in which the procedures that handle full-page width floats in a two-column page grid all have in their names
-% the string `dbl', which erroneously suggests having something to do with ``double''. It does not:
-% when you see `dbl', think ``full page width''.
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \begin{macrocode}
-\mathchardef\do@startcolumn@pen=10005
-\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}%
-\def\do@startcolumn{%
- \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}%
- \clearpage@sw{\@clearfloatplacement}{\@floatplacement}%
- \set@colht
- \@booleanfalse\pfloat@avail@sw
- \begingroup
- \@colht\@colroom
- \@booleanfalse\float@avail@sw
- \@tryfcolumn\test@colfloat
- \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
- \endgroup
- \fcolmade@sw{%
- \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}%
-% \end{macrocode}
-% Now ask for a return visit, this time with insertions and all.
-% \begin{macrocode}
- \outputpenalty-\pagebreak@pen
- \dead@cycle
- }{%
- \begingroup
- \let\@elt\@scolelt
- \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
- \endgroup
- \clearpage@sw{%
- \outputpenalty\@M
- }{%
- \outputpenalty\do@newpage@pen
- }%
- \dead@cycle
- }%
- \check@deferlist@stuck\do@startcolumn
- \set@vsize
-}%
-\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}%
-\def\test@colfloat#1{%
- \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}%
- \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@addtonextcol}
-% We must adjust \cmd\@addtonextcol\ to take held-over inserts into account.
-% Now that all deferred floats are queued up together (in order), we must have a way of
-% differentiating them; this is done by the page grid-dependent procedure \cmd\@floatselect@sw@.
-% \begin{macrocode}
-\def\@addtonextcol{%
- \begingroup
- \@insertfalse
- \@setfloattypecounts
- \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
- \@ifnum{\@fpstype=8 }{}{%
- \@ifnum{\@fpstype=24 }{}{%
- \@flsettextmin
- \@reqcolroom \ht\@currbox
- \advance \@reqcolroom \@textmin
- \advance \@reqcolroom \vsize % take into account split insertions
- \advance \@reqcolroom -\pagegoal
- \@ifdim{\@colroom>\@reqcolroom}{%
- \@flsetnum \@colnum
- \@ifnum{\@colnum>\z@}{%
- \@bitor\@currtype\@deferlist
- \@if@sw\if@test\fi{}{%
- \@addtotoporbot
- }%
- }{}%
- }{}%
- }%
- }%
- }{}%
- \@if@sw\if@insert\fi{}{%
- \@cons\@deferlist\@currbox
- }%
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\do@startpage@pen}
-% \begin{macro}{\forcefloats@sw}
-% \begin{macro}{\@output@combined@page}
-% \begin{macro}{\@sdblcolelt}
-% \begin{macro}{\test@dblfloat}
-% \begin{macro}{\@if@notdblfloat}
-% Similar to \cmd\do@startcolumn,
-% the procedure \cmd\do@startpage\ starts up a new page (not column) in a multi-column page grid.
-% It is invoked after a page is shipped out in a multi-column page grid, and
-% it commits full-page-width floats to the fresh page, possibly resulting in a float page.
-% In implementation, it is similar to \cmd\do@startcolumn, except that
-% it commits effectively via \cmd\@addtodblcol\ instead of \cmd\@addtonextcol.
-% Note that this procedure will inevitably be followed by \cmd\do@startcolumn.
-%
-% Some details of the procedure:
-%
-% We begin by removing the protection box from \cmd\box\cmd\@cclv, then setting the values of the
-% float placement parameters appropriately, and resetting \cmd\@colht, \cmd\@colroom, and \cmd\vsize\ to base values.
-%
-% Next we attempt to compose a float page, a page consisting entirely of floats. If successful,
-% we ship out the float page and lay down an interrupt that will send us back here for another try.
-%
-% If no float page is formed, we attempt to commit full-page-width floats to the text page, and return with a dead cycle.
-% We are now ready to compose columns of text.
-%
-% Note that all floats (both column floats and full-page-width floats) move through a single queue.
-% To differentiate between the two, the width of the float is compared to \cmd\textwidth.
-% This comparison is encapsulated in the macro \cmd\@if@notdblfloat, which should be used whenever
-% such a determination must be made. This procedure returns a Boolean.
-%
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \begin{macrocode}
-\mathchardef\do@startpage@pen=10006
-\@namedef{output@-\the\do@startpage@pen}{\do@startpage}%
-\def\do@startpage{%
- \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}%
- \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}%
- \set@colht
- \@booleanfalse\pfloat@avail@sw
- \begingroup
- \@booleanfalse\float@avail@sw
- \@tryfcolumn\test@dblfloat
- \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
- \endgroup
- \fcolmade@sw{%
- \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}%
- \@output@combined@page
- }{%
- \begingroup
- \@booleanfalse\float@avail@sw
- \let\@elt\@sdblcolelt
- \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
- \endgroup
- \@ifdim{\@colht=\textheight}{% No luck...
- \pfloat@avail@sw{% ...but a float *was* available!
- \forcefloats@sw{%
- \ltxgrid@warn{Forced dequeueing of floats stalled}%
- }{%
- \ltxgrid@warn{Dequeueing of floats stalled}%
- }%
- }{}%
- }{}%
- \outputpenalty\@M
- \dead@cycle
- }%
- \check@deferlist@stuck\do@startpage
- \set@colht
-}%
-% \end{macrocode}
-%
-% Procedure \cmd\@output@combined@page\ is a utility that ships out a page consisting of the
-% result of \cmd\@combinepage\ and \cmd\@combinedblfloats, after which it prepares for
-% the process to repeat.
-%
-% It is coincidentally identical to what needs to happen with
-% a float page that has been built by \cmd\@tryfcolumn, in the multi-column page grid,
-% and also handles the case where a page needs to be shipped out when in multicolumn mode.
-% \changes{4.1b}{2008/08/04}{New procedure \cs{@output@combined@page}}
-% \changes{4.1b}{2008/08/04}{Change \cs{@combinepage} to \cs{@combinepage} with argument}
-% \begin{macrocode}
-\def\@output@combined@page{%
- \@combinepage\true@sw
- \@combinedblfloats
- \@outputpage
- \global\pagegrid@cur\@ne
- \protect@penalty\do@startpage@pen
-}%
-\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}%
-\def\test@dblfloat#1{%
- \@if@notdblfloat{#1}{\@testtrue}{}%
- \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
-}%
-\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}%
-\@booleanfalse\forcefloats@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@addtodblcol}
-%
-% The procedure \cmd\@addtodblcol\ is called into play at the beginning of each fresh page
-% and operates on each deferred float, in the hopes of placing one or more such floats
-% at the top of the current page.
-%
-% We alter the procedure of standard \LaTeX\ by putting failed floats into
-% \cmd\@deferlist\ instead of \cmd\@dbldeferlist. Having done so, we must have a means
-% of differentiating full-page-width floats from column-width floats.
-% We assume that the latter will always be narrower than \cmd\textwidth.
-%
-% In aid of detecting a stalled float flushing process, we set a Boolean if we encounter
-% a qualified full-page-width float here. Any that qualify but fail the rest of the tests
-% might still pass when reconsidered on an otherwise blank page.
-% \begin{macrocode}
-\def\@addtodblcol{%
- \begingroup
- \@if@notdblfloat{\@currbox}{%
- \false@sw
- }{%
- \@setfloattypecounts
- \@getfpsbit \tw@
- \@bitor \@currtype \@deferlist
- \@if@sw\if@test\fi{%
- \false@sw
- }{%
- \@ifodd\@tempcnta{%
- \aftergroup\@booleantrue\aftergroup\float@avail@sw
- \@flsetnum \@dbltopnum
- \@ifnum{\@dbltopnum>\z@}{%
- \@ifdim{\@dbltoproom>\ht\@currbox}{%
- \true@sw
- }{%
- \@ifnum{\@fpstype<\sixt@@n}{%
- \begingroup
- \advance \@dbltoproom \@textmin
- \@ifdim{\@dbltoproom>\ht\@currbox}{%
- \endgroup\true@sw
- }{%
- \endgroup\false@sw
- }%
- }{%
- \false@sw
- }%
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }%
- }%
- {%
- \@tempdima -\ht\@currbox
- \advance\@tempdima
- -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}%
- \global \advance \@dbltoproom \@tempdima
- \global \advance \@colht \@tempdima
- \global \advance \@dbltopnum \m@ne
- \@cons \@dbltoplist \@currbox
- }{%
- \@cons \@deferlist \@currbox
- }%
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tryfcolumn}
-% \begin{macro}{\@wtryfc}
-% \begin{macro}{\@xtryfc}
-% \begin{macro}{\@ztryfc}
-% Whenever a page is shipped out, \LaTeX\ automatically tries out a float column:
-% a page containing nothing but floats (and, as we have added here, split footnotes).
-%
-% The following four procedures employ certain macros to communicate between each other:
-%
-% \cmd\fcolmade@sw, a boolean, says whether we were successful in making a float column.
-%
-% \cmd\if@test, a \cmd\newif\ switch, says a float has failed some test.
-%
-% \cmd\@deferlist, is the input to the process, a list, of deferred floats.
-%
-% \cmd\@trylist, a list, stores the deferred floats to be tried out on the float column.
-%
-% \cmd\@failedlist, a list of floats that have failed the selection for the float column.
-%
-% \cmd\@flfail, a list of floats that have failed the second selection for the float column.
-%
-% \cmd\@flsucceed, a list, the floats that have been successfully placed on the float column.
-%
-% \cmd\@freelist, a list, receives any freed floats.
-%
-% \cmd\@colht, a dimen, the available space for the column, including column floats and insertions (footnotes).
-%
-% \cmd\@fpmin, a dimen, the required minimum height for the float column.
-%
-% \cmd\@outputbox, a box, the output of the process.
-%
-% \cmd\@fptop, \cmd\@fpsep, \cmd\@fpbot, glue, placed above, between, and below floats on the float column.
-%
-% \cmd\@currtype, a count, used temporarily for the float's bits.
-%
-% \cmd\@tempcnta, a count, used temporarily for the float's bits.
-%
-% In \cmd\@tryfcolumn, we alter the criterion for a float page, because if footnotes are present at this point
-% (presumably due to a split insertion) then \cmd\@fpmin is no longer the right threshold to apply.
-%
-% Note that we have changed \cmd\@tryfcolumn, \cmd\@xtryfc, and \cmd\@ztryfc\ syntactically so that the procedure
-% to test for the float's being a column float versus a full-page-width float is passed in as an
-% argument.
-%
-% \begin{macrocode}
-\def\@tryfcolumn#1{%
- \global\@booleanfalse\fcolmade@sw
- \@ifx@empty\@deferlist{}{%
- \global\let\@trylist\@deferlist
- \global\let\@failedlist\@empty
- \begingroup
- \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{%
- \advance\@fpmin-\dimen@
- }{}%
- \def\@elt{\@xtryfc#1}\@trylist
- \endgroup
- \fcolmade@sw{%
- \global\setbox\@outputbox\vbox{\vskip \@fptop}%
- \let \@elt \@wtryfc \@flsucceed
- \global\setbox\@outputbox\vbox{\unvbox\@outputbox
- \unskip \vskip \@fpbot
- }%
- \let \@elt \relax
- \xdef\@deferlist{\@failedlist\@flfail}%
- \xdef\@freelist{\@freelist\@flsucceed}%
- }{}%
- }%
-}%
-\def\@wtryfc #1{%
- \global\setbox\@outputbox\vbox{\unvbox\@outputbox
- \box #1\vskip\@fpsep
- }%
-}%
-\def\@xtryfc#1#2{%
- \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly!
- \@currtype \count #2%
- \divide\@currtype\@xxxii\multiply\@currtype\@xxxii
- \@bitor \@currtype \@failedlist
- \@testfp #2%
- #1#2%
- \@ifdim{\ht #2>\@colht }{\@testtrue}{}%
- \@if@sw\if@test\fi{%
- \@cons\@failedlist #2%
- }{%
- \begingroup
- \gdef\@flsucceed{\@elt #2}%
- \global\let\@flfail\@empty
- \@tempdima\ht #2%
- \def \@elt {\@ztryfc#1}\@trylist
- \@ifdim{\@tempdima >\@fpmin}{%
- \global\@booleantrue\fcolmade@sw
- }{%
- \@cons\@failedlist #2%
- }%
- \endgroup
- \fcolmade@sw{%
- \let \@elt \@gobble
- }{}%
- }%
-}%
-\def\@ztryfc #1#2{%
- \@tempcnta \count#2%
- \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii
- \@bitor \@tempcnta {\@failedlist \@flfail}%
- \@testfp #2%
- #1#2%
- \@tempdimb\@tempdima
- \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep
- \@ifdim{\@tempdimb >\@colht}{%
- \@testtrue
- }{}%
- \@if@sw\if@test\fi{%
- \@cons\@flfail #2%
- }{%
- \@cons\@flsucceed #2%
- \@tempdima\@tempdimb
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Clearing pages}%
-%
-% Clearing the page is an elaboration of ending the page: it entails flushing all floats.
-%
-% This package might make number of float flushing algorithms available,
-% a very simple one that does not try to produce excellent pages,
-% another that tries to make the best use of space,
-% and a more complex one that tries to balance columns.
-%
-% At the beginning of the page-clearing process, by definition all of the paragraph text involved is on the MVL and all floats have been encountered.
-% There may be material in \cmd\pagesofar, and (in a multi-column page grid) any number of columns of the page have been composed.
-% Also, there might be footnote material saved up in \cmd\footsofar.
-%
-% Because we did not want to perform multiple \cmd\shipout s per visit to the output routine,
-% our multi-column page makeup will not compose multiple columns per visit.
-% This implementation detail may not require alteration, but it is not a limitation that is truly necessary:
-% it is only multiple \cmd\shipout s per visit that must be avoided.
-%
-% The crux matter is how to continue with flushing floats even after the material in the MVL is exhausted.
-% At that point, we must, upon completion of the output routine,
-% insert into the MVL an interrupt that triggers the next step in the processing.
-%
-% Therefore, after processing a \cmd\do@startcolumn\ interrupt, we must somehow force the completion of that column.
-% This could be done by inserting a \cmd\do@newpage@pen\ interrupt.
-%
-% And after processing a \cmd\do@startpage@pen\ interrupt, that results in \cmd\@dbltopinsert s,
-% we must ensure that the multiple columns on the page get completed, so that the page itself finally gets shipped out.
-% This part will proceed automatically given that \cmd\do@startcolumn\ processing completes successfully.
-%
-% The process will not be complete until all deferred floats have been placed and shipped out, and all saved-up footnotes have been inserted.
-%
-% Full-page-width floats can get out of order of column floats. This problem can be remedied by holding them all in the same list.
-% We therefore stop using \cmd\@dbldeferlist\ entirely, and all of the procedures that formerly used it have been rewritten to
-% use \cmd\@deferlist\ instead. When traversing the list, we apply a selector on the given box that determines whether it is a column-width or page-width float.
-% This selector is different depending on the page grid.
-%
-% When the \cmd\@deferlist\ is processed (by any means), we have to take care of the case where a float of one category is passed over but we are looking for a float of the other category.
-% Here, we must terminate processing, to avoid disordering the floats. This we do by the usual means.
-%
-% The system has a Boolean that says we are clearing pages: \cmd\clearpage@sw; if it is true,
-% then at the tail of \cmd\do@startcolumn\ processing, we should put down a (\cmd\vfil?) \cmd\do@newpage@pen\ interrupt.
-% This is because the MVL is now empty, so we have to force the columns to complete.
-%
-% One potential very pathological case would be where there is one or more deferred floats that never successfully get placed:
-% placing floats has stalled, and we will ship out blank pages indefinitely. How to detect this case?
-%
-% First, \cmd\do@startpage\ will evidently be stalled if the following are all true:
-% a) \cmd\@tryfcolumn\ and \cmd\@sdblcolelt\ both fail,
-% b) there are deferred floats available for page placement, and
-% c) the \cmd\@colht=\cmd\textheight, that is, the full page height is available for placement of column floats.
-%
-% Second, \cmd\do@startcolumn\ will evidently be stalled if the following are all true:
-% a) tryfcolumn fails,
-% b) there are deferred floats available for column placement, and
-% a) the \cmd\@colroom=\cmd\textheight, that is, the full page height is available for placement of column floats.
-%
-%
-% \begin{macro}{\cleardoublepage}
-% \begin{macro}{\clearpage}
-% \begin{macro}{\newpage}
-% \begin{macro}{\newpage@prep}
-% The function of \cmd\clearpage\ is to end the current page with \cmd\newpage\ and then
-% ship out additional pages until (\footins) inserts and (deferred) floats are exhausted.
-%
-% The method involves setting the float placement parameters to completely permissive values
-% and kicking out the current page (using a non-discardable penalty).
-% A possibly short page will be shipped out, followed
-% by any number of float pages. However these float pages, because using permissive float placement,
-% will exhaust all inserts and deferred floats.
-%
-% Bug Note: in the code for \cmd\clearpage, the first penalty we output is an unprotected \cmd\pagebreak@pen.
-% I tried using a protected \cmd\do@newpage@pen, but that gave rise to a corner case where a blank page
-% was output.
-%
-% At present, the \cmd\clearpage\ procedure does the same as \cmd\newpage,
-% except that \cmd\clearpage@sw\ is turned on,
-% and the (discardable) \cmd\newpage\ is inevitably followed by the same procedures
-% that are executed if a page is shipped out.
-%
-% FIXME: it seems that better than \cmd\pagebreak@pen\ would be an unprotected penalty of a special value that would
-% entail output routine processing consisting of the following steps:
-% 3) \cmd\unvbox\cmd\@cclv,
-% 1) set \cmd\clearpage@sw\ to \cmd\true@sw,
-% 2) put down a protected \cmd\do@startcolumn@pen,
-% 4) take a dead cycle.
-%
-% The effect would be to liberalize float placement options for the current column as well as further columns that may be output as part of \cmd\clearpage\ processing.
-% Of course, it would still be necessary to set \cmd\clearpage@sw\ again via an interrupt.
-%
-% An optimization might be to clear \cmd\clearpage@sw\ as part of the same interrupt,
-% but that would actually not work properly, because it is necessary for \cmd\do@endpage\ to
-% possibly invoke further visits to the output routine before clearpage processing ceases.
-% \begin{macrocode}
-\def\newpage@prep{%
- \if@noskipsec
- \ifx \@nodocument\relax
- \leavevmode
- \global \@noskipsecfalse
- \fi
- \fi
- \if@inlabel
- \leavevmode
- \global \@inlabelfalse
- \fi
- \if@nobreak \@nobreakfalse \everypar{}\fi
- \par
-}%
-\def \newpage {%
- \newpage@prep
- \do@output@MVL{%
- \vfil
- \penalty-\pagebreak@pen
- }%
-}%
-\def\clearpage{%
- \newpage@prep
- \do@output@MVL{%
- \vfil
- \penalty-\pagebreak@pen
- \global\@booleantrue\clearpage@sw
- \protect@penalty\do@startcolumn@pen
- \protect@penalty\do@endpage@pen
- }%
- \do@output@MVL{%
- \global\@booleanfalse\clearpage@sw
- }%
-}%
-\def\cleardoublepage{%
- \clearpage
- \@if@sw\if@twoside\fi{%
- \@ifodd\c@page{}{%
- \null\clearpage
- }%
- }{}%
-}%
-\@booleanfalse\clearpage@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\do@endpage@pen}
-% The penalty \cmd\do@endpage@pen\ simply dispatches to the page grid procedure that forces an end page.
-% That procedure should test whether there is anything to ship out (say committed floats), then act accordingly.
-% Note that as part of this work, it should \cmd\unvbox\cmd\@cclv, which has been left boxed up so it can be
-% measured.
-% \begin{macrocode}
-\mathchardef\do@endpage@pen=10007
-\@namedef{output@-\the\do@endpage@pen}{\csname end@column@\thepagegrid\endcsname}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\do@newpage@pen}
-% The penalty \cmd\do@newpage@pen\ allows a ``non-discardable \cmd\newpage'' command:
-% a \cmd\newpage\ command that will not disappear at a pagebreak.
-% This visit to the output routine will not be dispatched to an interrupt,
-% rather the natural output routine will be executed, where it
-% will remove the protection box.
-%
-% Call this routine by executing \cmd\protect@penalty\cmd\do@newpage@pen.
-% \begin{macrocode}
-\mathchardef\do@newpage@pen=10001
-\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@clearfloatplacement}
-% The procedure \cmd\@clearfloatplacement\ sets the float placement parameters
-% to completely permissive values (except for \cmd\@fpmin). The standard values are:
-%
-% \begin{tabular}{ll}
-%\cmd\@topnum &\cmd\c@topnumber\\
-%\cmd\@toproom &\cmd\topfraction\cmd\@colht\\
-%\cmd\@botnum &\cmd\c@bottomnumber\\
-%\cmd\@botroom &\cmd\bottomfraction\cmd\@colht\\
-%\cmd\@colnum &\cmd\c@totalnumber\\
-%\cmd\@fpmin &\cmd\floatpagefraction\cmd\@colht\\
-%\cmd\@dbltopnum &\cmd\c@dbltopnumber\\
-%\cmd\@dbltoproom &\cmd\dbltopfraction\cmd\@colht\\
-%\cmd\@textmin &\cmd\@colht\cmd\advance\cmd\@textmin -\cmd\@dbltoproom\\
-%\cmd\@fpmin &\cmd\dblfloatpagefraction\cmd\textheight
-% \end{tabular}
-% \begin{macrocode}
-\def\@clearfloatplacement{%
- \global\@topnum \maxdimen
- \global\@toproom \maxdimen
- \global\@botnum \maxdimen
- \global\@botroom \maxdimen
- \global\@colnum \maxdimen
- \global\@dbltopnum \maxdimen
- \global\@dbltoproom \maxdimen
- \global\@textmin \z@
- \global\@fpmin \z@
- \let\@testfp\@gobble
- \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@doclearpage}
-% \begin{macro}{\@makefcolumn}
-% \begin{macro}{\@makecol}
-% The \cmd\@doclearpage\ procedure is now obsoleted, as is \cmd\@makefcolumn, which it invoked.
-% We also completely avoid using \cmd\@makecol\ (in favor of \cmd\@makecolumn).
-% \begin{macrocode}
-\let\@doclearpage\@undefined
-\let\@makefcolumn\@undefined
-\let\@makecol\@undefined
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\clr@top@firstmark}
-% \begin{macro}{\set@top@firstmark}
-% \begin{macro}{\@outputpage@tail}
-% We want accurate values of \cmd\topmark\ and \cmd\firstmark, but we must deal with
-% the fact that there are many different ways of contributing material
-% to the page. Only upon the first contribution to the page is the value of \cmd\topmark\
-% accurate. However, with \cmd\firstmark\ we must potentially examine each contribution
-% because the first mark on the page may happen to fall in the last piece of material contributed.
-%
-% To begin, we define the procedure that initializes the macros to appropriate flag values.
-% \begin{macrocode}
-\def\clr@top@firstmark{%
- \global\let\saved@@topmark\@undefined
- \global\let\saved@@firstmark\@empty
- \global\let\saved@@botmark\@empty
-}%
-\clr@top@firstmark
-% \end{macrocode}
-%
-% Note that the flag value for \cmd\saved@@topmark\ is \cmd\@undefined, just as one would
-% expect. But that for \cmd\saved@@firstmark\ and \cmd\saved@@botmark\ is \cmd\@empty.
-%
-% Next, we define procedure \cmd\set@top@firstmark; it will be exercised everywhere material is contributed,
-% capturing the mark values if appropriate.
-% \begin{macrocode}
-\def\set@top@firstmark{%
- \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}%
- \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}%
- \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}%
-}%
-% \end{macrocode}
-% When should \cmd\set@top@firstmark\ be called?
-% A good candidate for a universal procedure for handling contributed material is
-% the natural output routine; are any other calls needed?
-%
-% Yes, in \cmd\save@column\ we must execute \cmd\set@top@firstmark\ because we are about to
-% save away \cmd\box\cmd\@cclv, and we will never see its marks again (unless it is unboxed into the MVL),
-% because \TeX\ lets one access a box's marks only within an output routine that has put that box into \cmd\box\cmd\@cclv.
-%
-% As soon as a page is shipped out, we initialize the two macros that
-% hold the values of \cmd\topmark\ and \cmd\firstmark, respectively.
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@tail} tailpatches \cs{@outputpage}}%
-% \begin{macrocode}
-\appdef\@outputpage@tail{%
- \clr@top@firstmark
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Other interfaces to \LaTeX}%
-%
-% \begin{macro}{\@float}
-% \begin{macro}{\@dblfloat}
-% \begin{macro}{\@yfloat}
-% \begin{macro}{\fps@}
-% \begin{macro}{\fpsd@}
-% The \LaTeX\ kernel procedures \cmd\@float\ and \cmd\@dblfloat\ are treated on an equal footing.
-% Each now takes environment-specific float placement defaults.
-% If none are defined for the calling environment, we apply a default.
-%
-% A parameter is passed that will set the width of text within the float, normally \cmd\columnwidth,
-% and in the "dbl" version, \cmd\textwidth. However, an environment such as \env{turnpage}
-% may change the meanings of these macros to allow turnpage floats.
-%
-% \changes{4.0a}{2008/06/26 }{\cs{@yfloat}: de-fang \cs{set@footnotewidth} (see ltxutil.dtx): we have already done its job. }
-%
-% Note on \cmd\@xfloat: the optional argument must come to it fully expanded, because the macro
-% does a weird procedure on this argument, involving \cmd\@onelevel@sanitize, which I do not
-% understand, and which does not work if not so expanded.
-% \changes{4.1b}{2008/08/04}{Get rid of the \cs{reserved@a} idiom}
-% \begin{macrocode}
-\def\@float#1{%
- \@ifnextchar[{%
-% \end{macrocode}
-% \verb+}]{+Brace-matching klootch
-% \begin{macrocode}
- \@yfloat\width@float{#1}%
- }{%
- \@ifxundefined@cs{fps@#1}{}{\expandafter\let\expandafter\fps@\csname fps@#1\endcsname}%
- \expandafter\@argswap\expandafter{\expandafter[\fps@]}{\@yfloat\width@float{#1}}%
- }%
-}%
-\def\@dblfloat#1{%
- \@ifnum{\pagegrid@col=\@ne}{%
- \@float{#1}%
- }{%
- \@ifnextchar[{%
-% \end{macrocode}
-% \verb+}]{+Brace-matching klootch
-% \begin{macrocode}
- \@yfloat\widthd@float{#1}%
- }{%
- \@ifxundefined@cs{fpsd@#1}{}{\expandafter\let\expandafter\fpsd@\csname fpsd@#1\endcsname}%
- \expandafter\@argswap\expandafter{\expandafter[\fpsd@]}{\@yfloat\widthd@float{#1}}%
- }%
- }%
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/04}{Turn off the \cs{set@footnotewidth} mechanism; a float `knows' its proper typesetting context}
-% \changes{4.1n}{2010/01/02}{(AO, 571) Interface \cs{set@footnotewidth} for determining the set width of footnotes}%
-% \cmd\@yfloat\ is the go-to procdure for creating the proper environment for the content of a float.
-% Argument \verb+#1+ is the width of the float environment (we disable \cmd\set@footnotewidth), and
-% we establish a self-contained (minipage) environment for footnotes.
-% \begin{macrocode}
-\def\@yfloat#1#2[#3]{%
- \@xfloat{#2}[#3]%
- \hsize#1\linewidth\hsize
- \let\set@footnotewidth\@empty
- \minipagefootnote@init
-}%
-\def\fps@{tbp}%
-\def\fpsd@{tp}%
-\def\width@float{\columnwidth}%
-\def\widthd@float{\textwidth}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\end@float}
-% \begin{macro}{\end@dblfloat}
-% \begin{macro}{\end@@float}
-% \begin{macro}{\check@currbox@count}
-% \begin{macro}{\minipagefootnote@init}
-% \begin{macro}{\minipagefootnote@here}
-% \LaTeX\ kernel procedures \cmd\end@float\ and \cmd\end@dblfloat\
-% have been changed to work alike; in particular, floats of both classes
-% are deferred into the same queue.
-% This measure ensures that they will be placed in their original order,
-% an aspect in which \LaTeX\ is broken.
-%
-% Note: when retrieving floats from the queues, we can differentiate those of the two categories
-% by the width of the box.
-%
-% Floats are processed via an output routine message, and are checked for
-% sanity in re the float placement options. In the case of full-page-width floats,
-% we ensure that the h and b float placement options are never asserted, because they
-% make no sense.
-%
-% Note that if we get to the end of the float box and still have pending
-% footnotes, we put then out.
-%
-% LaTeX Bug note: if a user types \cmd\begin{table*}[h], the float will never succeed in being placed!
-% we try to catch such cases.
-%
-% Note that the macro \cmd\check@currbox@count\ tries to catch cases where the float placement options
-% are such that the float can never be placed.
-%
-% The calls to \cmd\@iffpsbit\ are part of a procedure to deny certain of the float placement
-% parameters: ``h'' and ``b'' are not possible, the former because the \cmd\marginpar\ mechanism
-% cannot place a full-page-width float within a multicolumn page grid, the latter because nobody
-% has yet written the code to do so (pretty bad reason, I know).
-% \changes{4.1b}{2008/08/04}{New procedure \cs{@iffpsbit} replaces \cs{@getfpsbit}}
-% \begin{macrocode}
-\def\end@float{%
- \end@@float{%
- \check@currbox@count
- }%
-}%
-\def\end@dblfloat{%
- \@ifnum{\pagegrid@col=\@ne}{%
- \end@float
- }{%
- \end@@float{%
- \@iffpsbit\@ne{\global\advance\count\@currbox\m@ne}{}%
- \@iffpsbit\f@ur{\global\advance\count\@currbox-4\relax}{}%
- \global\wd\@currbox\textwidth % Klootch
- \check@currbox@count
- }%
- }%
-}%
-\def\end@@float#1{%
- \minipagefootnote@here
- \@endfloatbox
- #1%
- \@ifnum{\@floatpenalty <\z@}{%
- \@largefloatcheck
- \@cons\@currlist\@currbox
- \@ifnum{\@floatpenalty <-\@Mii}{%
- \do@output@cclv{\@add@float}%
- }{%
- \vadjust{\do@output@cclv{\@add@float}}%
- \@Esphack
- }%
- }{}%
-}%
-% \end{macrocode}
-% The \classname{float} package of Anselm Lingnau fails when used under \classname{ltxgrid}, but
-% we can fix things.
-% We also repair a bug in that package.
-%
-% \changes{4.1g}{2009/10/06}{(AO, 531) Fix package \classname{float} }
-% \begin{macrocode}
-\newcommand\float@end@float{%
- \@endfloatbox
- \global\setbox\@currbox\float@makebox\columnwidth
- \let\@endfloatbox\relax
- \end@float
-}%
-\newcommand\float@end@ltx{%
- \end@@float{%
- \global\setbox\@currbox\float@makebox\columnwidth
- \check@currbox@count
- }%
-}%
-\newcommand\newfloat@float[3]{%
- \@namedef{ext@#1}{#3} %!
- \let\float@do=\relax
- \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
- \@tempa
- \floatplacement{#1}{#2}%
- \@ifundefined{fname@#1}{\floatname{#1}{#1}}{} %!
- \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}%
- \addtocounter{float@type}{\value{float@type}} %!
- \restylefloat{#1}%
- \expandafter\edef\csname fnum@#1\endcsname{%
- \expandafter\noexpand\csname fname@#1\endcsname{} %!
- \expandafter\noexpand\csname the#1\endcsname
- }
- \@ifnextchar[%]
- {%
- \float@newx{#1}%
- }{%
- \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
- }%
-}%
-\newcommand\newfloat@ltx[3]{%
- \@namedef{ext@#1}{#3}%
- \let\float@do=\relax
- \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
- \@tempa
- \floatplacement{#1}{#2}%
- \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
- \expandafter\edef\csname ftype@#1\expandafter\endcsname\expandafter{\the\c@float@type}%
- \addtocounter{float@type}{\value{float@type}}%
- \restylefloat{#1}%
- \expandafter\edef\csname fnum@#1\endcsname{%
- \expandafter\noexpand\csname fname@#1\endcsname{}%
- \expandafter\noexpand\csname the#1\endcsname
- }
- \@ifnextchar[%]
- {%
- \float@newx{#1}%
- }{%
- \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
- }%
-}%
-\appdef\document@inithook{%
- \@ifxundefined\newfloat{}{%
- \@ifx{\float@end\float@end@float}{%
- \@ifx{\newfloat\newfloat@float}{\true@sw}{\false@sw}%
- }{\false@sw}%
- {%
- \class@warn{Repair the float package}%
- \let\float@end\float@end@ltx
- \let\newfloat\newfloat@ltx
- }{%
- \class@warn{Failed to patch the float package}%
- }%
- }%
-}%
-% \end{macrocode}
-%
-% Boolean procedure \cmd\@iffpsbit\ is similar to the \cmd\@getfpsbit\ of \LaTeX, except
-% that we do not expose the scratch count register or even change its value.
-% \begin{macrocode}
-\def\@iffpsbit#1{%
- \begingroup
- \@tempcnta\count\@currbox
- \divide\@tempcnta#1\relax
- \@ifodd\@tempcnta{\aftergroup\true@sw}{\aftergroup\false@sw}%
- \endgroup
-}%
-% \end{macrocode}
-%
-% In procedure \cmd\check@currbox@count, we calculate the net float placement
-% directive (encoded into \cmd\count\ \cmd\@currbox's least significant four bits).
-% If zero, issue a warning.
-% \changes{4.1b}{2008/08/04}{Tally the height of the float}
-% \begin{macrocode}
-\def\check@currbox@count{%
- \@ifnum{\count\@currbox>\z@}{%
- \count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n
- \@tempcnta\count\@currbox\advance\@tempcnta-\count@
- \@ifnum{\@tempcnta=\z@}{%
- \ltxgrid@warn{Float cannot be placed}%
- }{}%
- \expandafter\tally@float\expandafter{\@captype}%
- }{%
-% \end{macrocode}
-% In this case, the float is a \cmd\marginpar.
-% \begin{macrocode}
- }%
-}%
-\providecommand\minipagefootnote@init{}%
-\providecommand\minipagefootnote@here{}%
-\providecommand\tally@float[1]{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@specialoutput}
-% The \cmd\@add@float\ procedure used to reside in standard \LaTeX's \cmd\@specialoutput,
-% which is no more.
-%
-% Historical Note: \cmd\@specialoutput\ and Lamport's method of an output routine dispatcher
-% is the genesis of our more powerful and refined way of using \TeX's output routine to
-% safely accomplish page makeup tasks. To it and to him we owe acknowledgement and thanks.
-% \begin{macrocode}
-\let\@specialoutput\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@add@float}
-% In the following, we do not need to execute \cmd\@reinserts, which was wrong anyway, as you cannot
-% reliably recover insertions when they split (unless you have a way of reinserting the captured insertion
-% ahead of the split-off part).
-%
-% Now that full-page-width floats are being processed the same as column floats, we
-% have to nip in here and cause them always to be deferred.
-%
-% At the very end, the \cmd\vsize\ is adjusted for any newly committed float.
-% \begin{macrocode}
-\def\@add@float{%
- \@pageht\ht\@cclv\@pagedp\dp\@cclv
- \unvbox\@cclv
- \@next\@currbox\@currlist{%
- \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
- \@ifnum{\count\@currbox>\z@}{%
- \advance \@pageht \@pagedp
-% \end{macrocode}
-% Do not assume \cmd\holdinginserts is cleared:
-% \begin{macrocode}
- \advance \@pageht \vsize \advance \@pageht -\pagegoal
-% \end{macrocode}
-% Commit an `h' float:
-% \begin{macrocode}
- \@addtocurcol
- }{%
- \@addmarginpar
- }%
- }{%
- \@resethfps
- \@cons\@deferlist\@currbox
- }%
- }{\@latexbug}%
- \@ifnum{\outputpenalty<\z@}{%
- \@if@sw\if@nobreak\fi{%
- \nobreak
- }{%
- \addpenalty \interlinepenalty
- }%
- }{}%
- \set@vsize
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@reinserts}
-% The \cmd\@reinserts\ procedure of standard \LaTeX\ is now obsoleted (it had been erroneous anyway).
-% \begin{macrocode}
-\let\@reinserts\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@addtocurcol}
-% We modify the \cmd\@addtocurcol\ procedure of standard \LaTeX\
-% so that a float placed ``here'' may break over pages.
-% \begin{macrocode}
-\def \@addtocurcol {%
- \@insertfalse
- \@setfloattypecounts
- \ifnum \@fpstype=8
- \else
- \ifnum \@fpstype=24
- \else
- \@flsettextmin
- \advance \@textmin \@textfloatsheight
- \@reqcolroom \@pageht
- \ifdim \@textmin>\@reqcolroom
- \@reqcolroom \@textmin
- \fi
- \advance \@reqcolroom \ht\@currbox
- \ifdim \@colroom>\@reqcolroom
- \@flsetnum \@colnum
- \ifnum \@colnum>\z@
- \@bitor\@currtype\@deferlist
- \if@test
- \else
- \@bitor\@currtype\@botlist
- \if@test
- \@addtobot
- \else
- \ifodd \count\@currbox
- \advance \@reqcolroom \intextsep
- \ifdim \@colroom>\@reqcolroom
- \global \advance \@colnum \m@ne
- \global \advance \@textfloatsheight \ht\@currbox
- \global \advance \@textfloatsheight 2\intextsep
- \@cons \@midlist \@currbox
- \if@nobreak
- \nobreak
- \@nobreakfalse
- \everypar{}%
- \else
- \addpenalty \interlinepenalty
- \fi
- \vskip \intextsep
- \unvbox\@currbox %AO
- \penalty\interlinepenalty
- \vskip\intextsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- \@inserttrue
- \fi
- \fi
- \if@insert
- \else
- \@addtotoporbot
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@resethfps
- \@cons\@deferlist\@currbox
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\if@twocolumn}
-% The \cmd\newif\ switch \cmd\if@twocolumn\ is entirely unused. However its access words are invoked by
-% \LaTeX's \cmd\document\ procedure, so we de-fang it.
-% \begin{macrocode}
-\@twocolumnfalse
-\let\@twocolumntrue\@twocolumnfalse
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@addmarginpar}
-% The procedure \cmd\@addmarginpar\ used to access \cmd\if@twocolumn, but that switch is not reliable;
-% the better way is to use \cmd\thepagegrid. We establish a convention for a page-grid-oriented
-% procedure, e.g., \cmd\@addmarginpar@one, that emits a boolean, telling this procedure
-% whether to set the marginpar on the left or right.
-% \begin{macrocode}
-\def\@addmarginpar{%
- \@next\@marbox\@currlist{%
- \@cons\@freelist\@marbox\@cons\@freelist\@currbox
- }\@latexbug
- \setbox\@marbox\hb@xt@\columnwidth{%
- \csname @addmarginpar@\thepagegrid\endcsname{%
- \hskip-\marginparsep\hskip-\marginparwidth
- \box\@currbox
- }{%
- \hskip\columnwidth\hskip\marginparsep
- \box\@marbox
- }%
- \hss
- }%
- \setbox\z@\box\@currbox
- \@tempdima\@mparbottom
- \advance\@tempdima -\@pageht
- \advance\@tempdima\ht\@marbox
- \@ifdim{\@tempdima >\z@}{%
- \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
- }{%
- \@tempdima\z@
- }%
- \global\@mparbottom\@pageht
- \global\advance\@mparbottom\@tempdima
- \global\advance\@mparbottom\dp\@marbox
- \global\advance\@mparbottom\marginparpush
- \advance\@tempdima -\ht\@marbox
- \global\setbox \@marbox
- \vbox {\vskip \@tempdima
- \box \@marbox}%
- \global \ht\@marbox \z@
- \global \dp\@marbox \z@
- \kern -\@pagedp
- \nointerlineskip
- \box\@marbox
- \nointerlineskip
- \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{environment}{turnpage}
-% Any float (viz., \env{figure} or \env{table}) within the scope of this environment
-% will be a turnpage float: It will be assumed to occupy an entire page (constitute a float page),
-% the width will be \cmd\textheight, the height \cmd\textwidth, and the entire float will be presented
-% rotated 90 degrees.
-%
-% The implementation requires the services of the \cmd\rotatebox\ command, so we supply a dummy definition
-% that explains things to the user.
-% \begin{macrocode}
-\newenvironment{turnpage}{%
- \def\width@float{\textheight}%
- \def\widthd@float{\textheight}%
- \appdef\@endfloatbox{%
- \@ifxundefined\@currbox{%
- \ltxgrid@warn{Cannot rotate! Not a float}%
- }{%
- \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}%
- \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}%
- }%
- }%
-}{%
-}%
-\def\rotatebox@dummy#1#2{%
- \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}%
- #2%
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/04}{Use \cs{document@inithook} instead of \cs{AtBeginDocument}}
-% \begin{macrocode}
-\appdef\document@inithook{%
- \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}%
-}%
-% \end{macrocode}
-% \end{environment}
-%
-%
-% \subsection{One-off output routines}
-%
-% These procedures are executed in lieu of \cmd\the\cmd\output\ when the output penalty has the associated flag value.
-%
-% \begin{macro}{output@-1073741824}
-% The first one-off output routine handles the end of the job, wherein
-% \LaTeX\ executes \cmd\@@end, and breaks to the output with a penalty of
-% $"40000000 = 2^{32}/4 = 1073741824$.
-% We simply discard \cmd\box\cmd\@cclv\ and leave.
-% This means that \LaTeX\ is obligated to do \cmd\clearpage\ as part of
-% its \enve{document} processing, otherwise material will be lost.
-% \begin{macrocode}
-\@namedef{output@-1073741824}{%
- \deadcycles\z@
-% \end{macrocode}
-% \begin{verbatim}
-%\showbox\@cclv
-% \end{verbatim}
-% \begin{macrocode}
- \void@cclv
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save@column@pen}
-% The one-off output routine associated with \cmd\penalty\cmd\save@column@pen\
-% will be called within a sequence of three such routines by \cmd\execute@message
-% or its companion routine \cmd\execute@message@insert.
-% This procedure must save away any the current page and preserve marks.
-% \begin{macrocode}
-\mathchardef\save@column@pen=10016
-\@namedef{output@-\the\save@column@pen}{\save@column}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@cclv@saved}
-% We take over the \cmd\@holdpg\ box register. Hereafter,
-% we no longer use the \cmd\@holdpg\ box register, so let the world know.
-% This should decisively break packages that assume standard \LaTeX.
-% Breaking decisively is preferred to quietly proceeding erroneously.
-% \begin{macrocode}
-\let \@cclv@saved \@holdpg
-\let \@holdpg \@undefined
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save@column}
-% The procedure \cmd\save@column\ does the actual work of saving away the material
-% on the page. It is invoked both by \cmd\save@column@pen\ and by \cmd\save@column@insert@pen.
-% We save \cmd\box\cmd\@cclv\ and the primitive \cmd\@@topmark.
-% \begin{macrocode}
-\def\save@column{%
- \@ifvoid\@cclv@saved{%
- \set@top@firstmark
- \global\@topmark@saved\expandafter{\@@topmark}%
- }{}%
- \global\setbox\@cclv@saved\vbox{%
- \@ifvoid\@cclv@saved{}{%
- \unvbox\@cclv@saved
- \marry@baselines
- }%
- \unvbox\@cclv
- \lose@breaks
- \remove@lastbox
- }%
-}%
-\newtoks\@topmark@saved
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\prep@cclv}
-% The procedure \cmd\prep@cclv\ is used by message handlers to set up their environment
-% to ape that of the usual output routine, with the boxed-up page in \cmd\box\cmd\@cclv.
-% Here, we retrieve the material from \cmd\@cclv@saved, where it was saved away by
-% the one-off output routine associated with \cmd\save@column@pen.
-% \begin{macrocode}
-\def\prep@cclv{%
- \void@cclv
- \setbox\@cclv\box\@cclv@saved
- \vbadness\@M
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save@column@insert@pen}
-% The one-off output routine associated with \cmd\penalty\cmd\save@column@insert@pen\
-% is similar to that of \cmd\save@column@pen\ augmented with the processing of insertions.
-% It is called by \cmd\execute@message@insert\ (i.e., at a grid change)
-% and saves away the current page and preserves marks.
-% In addition, it saves away any insertions that fall on the current page.
-% As with the natural output routine, it executes in two phases,
-% first with \cmd\holdinginserts\ set, then cleared.
-% \begin{macrocode}
-\mathchardef\save@column@insert@pen=10017
-\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert{\savecolumn@holding}{\savecolumn@moving}}%
-% \end{macrocode}
-% The procedure \cmd\savecolumn@holding\ is the first phase of saving a column with its inserts.
-% This phase must detect and remedy the one circumstance that will confound our efforts to propagate marks.
-% It is similar to \cmd\output@holding, except that we have to deal with the protection box, which must
-% remain, because the messaging mechanism is being used.
-%
-% If it appears that we have the pathological ``Big Bad Box'' case at hand, we use the \cmd\dead@cycle@repair@protected\
-% procedure instead of \cmd\dead@cycle\ to do our dead cycle.
-% \changes{4.1b}{2008/08/04}{Use \cs{trace@box} instead of \cs{showbox}}
-% \begin{macrocode}
-\def\savecolumn@holding{%
- \@if@exceed@pagegoal{\unvcopy\@cclv\remove@lastbox}{%
- \setbox\z@\vbox{\unvcopy\@cclv\remove@lastbox}%
- \outputdebug@sw{\trace@box\z@}{}%
- \dimen@\ht\@cclv\advance\dimen@-\ht\z@
- \dead@cycle@repair@protected\dimen@
- }{%
- \dead@cycle
- }%
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/04}{New procedure for showing a box contents, \cs{trace@box}}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% The procedure \cmd\save@column@moving\ is the second phase of saving a column with its inserts.
-% Now that \cmd\holdinginserts\ is cleared, we can look in the various \cmd\insert\ registers for
-% our inserts (at present there is only one, \cmd\footins, along with \cmd\footins@saved).
-% if anything is there, we save it away and ask for another cycle (because it may have split).
-%
-% Note that the message that is about to be executed had better deal properly with the contents of
-% the \cmd\footins@saved\ box.
-%
-% \begin{macrocode}
-\def\savecolumn@moving{%
- \ltxgrid@info@sw{\class@info{\string\savecolumn@moving}}{}%
- \@cclv@nontrivial@sw{%
- \save@column
- }{%
- \void@cclv
- }%
- \@ifvoid\footins{}{%
- \ltxgrid@foot@info@sw{\class@info{\string\savecolumn@moving}\trace@scroll{\showbox\footins@saved\showbox\footins}}{}%
-% \end{macrocode}
-% Save all away in \cmd\footins@saved. Note that if \cmd\footins\ is void, then \cmd\footins@saved\ remains untouched.
-% \begin{macrocode}
- \@ifvoid\footins@saved{%
- \global\setbox\footins@saved\box\footins
- }{%
- \global\setbox\footins@saved\vbox\bgroup
- \unvbox\footins@saved
- \marry@baselines
- \unvbox\footins
- \egroup
- }%
- \ltxgrid@foot@info@sw{\trace@box\footins@saved}{}%
- \protect@penalty\save@column@insert@pen
- }%
-}%
-\newbox\footins@saved
-\newbox\footins@recovered
-\newbox\column@recovered
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save@message@pen}
-% The one-off output routine associated with \cmd\penalty\cmd\save@message@pen\
-% saves away the message that has been passed.
-% This procedure is penultimate in a sequence of one-off output routine calls;
-% earlier ones have saved away the MVL and preserved marks, the last executes the message.
-%
-% Note that we are passing tokens to \TeX's primitive \cmd\mark\ mechanism, so we must ensure
-% that they are not inappropriately expanded. We use the same mechanism for all such cases,
-% namely \cmd\let@mark.
-%
-% Note: we expect that \cmd\box\cmd\@cclv's contents are well known:
-% \cmd\topskip, protection box, and a \cmd\mark, the latter containing the message.
-% But if we came here via \cmd\penalty 10017, there might be an \cmd\insert\ node present as well,
-% because a footnote may have split.
-% Because this procedure simply voids out \cmd\box\cmd\@cclv, such material would be lost.
-% Perhaps we can repair things by manipulating the \cmd\insert \ mechanism temporarily.
-% \begin{macrocode}
-\mathchardef\save@message@pen=10018
-\@namedef{output@-\the\save@message@pen}{\save@message}%
-\def\save@message{%
- \void@cclv
-% \end{macrocode}
-%FIXME: what if \cmd\box\cmd\@cclv is not empty?
-% \begin{macrocode}
- \toks@\expandafter{\@@firstmark}%
- \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}%
- \expandafter\do@@mark\expandafter{\the\@topmark@saved}%
-}%
-\gdef\@message@saved{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\execute@message@pen}
-% The one-off output routine associated with \cmd\execute@message@pen\
-% simply executes the given message. It is last in a sequence of one-off output routine calls;
-% earlier ones have saved all that require saving.
-% \begin{macrocode}
-\mathchardef\execute@message@pen=10019
-\@namedef{output@-\the\execute@message@pen}{\@message@saved}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Output messages}
-%
-% Message handlers are procedures that execute output messages, tokens that are passed to
-% the output routine for execution in an environment appropriate to page makeup.
-%
-% How it works. We put down three large negative penalties, each of which will be handled by
-% the output dispatcher (\emph{not} the natural output routine), each penalty being protected by
-% a removable, non-discardable item (i.e., a box).
-% Either three or four invocations of one-off output routines are involved per message.
-%
-% We make the last of the three protection boxes have a depth equal to the value of \cmd\prevdepth\
-% that was current when the procedure is called. This effectively restores \cmd\prevdepth.
-%
-% In each case, the one-off output routine will remove the extraneous box we have inserted.
-% And the second and third one-off routines will simply void \cmd\box\cmd\@cclv, because its contents
-% are entirely artificial.
-%
-% FIXME: not so! If \cmd\holdinginserts\ is cleared, that box may have an insert node; it must be preserved, too.
-%
-% The first routine saves away the current column contents and remembers the \cmd\topmark\ for later
-% use. There is a variant routine that first clears \cmd\holdinginserts, so that the message can
-% handle any inserts present in the boxed-up page; this of course entails yet another
-% visit to the output routine.
-%
-% The penultimate routine saves away the tokens transmitted in via the \cmd\@@mark: the argument of
-% the macro. These tokens are of course the very thing we wish to execute within the safety
-% of the output routine. It also puts down a mark containing the \cmd\topmark\ tokens saved
-% by the first routine. By this means, the mark, which we have clobbered, is restored.
-%
-% The last routine simply executes the given tokens.
-% In the course of doing this, it must take care of \cmd\box\cmd\@cclv, either by shipping it out,
-% or by \cmd\unvbox ing it onto the MVL.
-%
-% \begin{macro}{\execute@message}
-% The procedure \cmd\execute@message\ simply calls the utility procedure \cmd\@execute@message\
-% with a penalty value for the standard treatment.
-% \begin{macrocode}
-\def\execute@message{%
- \@execute@message\save@column@pen
-% \end{macrocode}
-% Implicit second argument
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\execute@message@insert}
-% The procedure \cmd\execute@message@insert\ is like \cmd\execute@message\ in all respects
-% except that the penalty value is \cmd\save@column@insert@pen, which arranges for the
-% message handler involved to deal with the page's insertions.
-% At the same time, we prepare the \cmd\footins\ box so that these insertions can be dealt with.
-%
-% Note:
-% If more insertions are added to \LaTeX\ (presumably via \cmd\newinsert), then they
-% must be dealt with in a way entirely analogous to \cmd\footins.
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\execute@message@insert#1{%
- \@execute@message\save@column@insert@pen{%
- \setbox \footins \box \footins@saved
- \ltxgrid@foot@info@sw{\class@info{\string\execute@message@insert}\trace@box\footins}{}%
- #1%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@execute@message}
-% The utility procedure \cmd\@execute@message\ is called by \cmd\execute@message\ and \cmd\execute@message@insert.
-% We prepare by creating a \cmd\vbox\ containing all the needed nodes and proceed by simply
-% \cmd\unvbox ing that box onto the MVL.
-% We ensure that \cmd\box\cmd\@cclv\ is properly set up for the output message handler
-% by always inserting \cmd\prep@cclv\ in advance of the argument.
-%
-% Note that each one-off output routine is invoked effectively the same as
-% \cmd\protect@penalty, except that the second invocation involves an additional
-% \cmd\mark\ node, and the third a specially prepared protection box.
-%
-% Note also that \TeX's primitive \cmd\mark\ is called here without any expansion protection.
-% This is the only place where it is called that way, but it's OK because those tokens
-% have have been pre-expanded by procedures that call \cmd\execute@message.
-% FIXME: all procedures calling \cmd\execute@message\ must pre-expand their tokens!
-% \begin{macrocode}
-\long\def\@execute@message#1#2{%
- \begingroup
- \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}%
- \setbox\z@\vbox{%
- \protect@penalty#1%
- \protection@box
- \toks@{\prep@cclv#2}%
- \@@mark{\the\toks@}%
- \penalty-\save@message@pen
-% \end{macrocode}
-%\begin{verbatim}
-% \hbox{\vrule\@height\z@\@width\z@\@depth\dimen@}%
-%\end{verbatim}
-% \begin{macrocode}
- \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@
- \nointerlineskip\box\z@
- \penalty-\execute@message@pen
- }\unvbox\z@
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\do@output@cclv}
-% The procedure \cmd\do@output@cclv\ provides access to message handlers at their simplest.
-% The message will execute in the usual environment of the output routine, with
-% the boxed-up page in \cmd\box\cmd\@cclv, and we assume that \cmd\holdinginserts\ remains set.
-% This procedure must be invoked within main vertical mode;
-% it is the obligation of the macro writer to ensure that this is the case.
-% \begin{macrocode}
-\def\do@output@cclv{\execute@message}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\do@output@MVL}
-% The procedure \cmd\do@output@MVL, like \cmd\do@output@cclv, is an interface for messages,
-% but provides two additional services: the command may also be invoked in horizontal mode, and
-% the message handler will execute with the MVL unboxed.
-% \begin{macrocode}
-\def\do@output@MVL#1{%
- \@ifvmode{%
- \begingroup\execute@message{\unvbox\@cclv#1}\endgroup
- }{%
- \@ifhmode{%
- \vadjust{\execute@message{\unvbox\@cclv#1}}%
- }{%
- \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lose@breaks}
-% The purpose of this procedure is to get rid of all the extraneous
-% \cmd\penalty\cmd\@M\ nodes that tend to build up in the MVL.
-% \begin{macrocode}
-\def\lose@breaks{%
- \loopwhile{%
- \count@\lastpenalty
- \@ifnum{\count@=\@M}{%
-% \end{macrocode}
-% Note: 10000 is a TeX magic number!
-% \begin{macrocode}
- \unpenalty\true@sw
- }{%
- \false@sw
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\removestuff}
-% \cmd\removestuff\ is a document-level command that removes the bottom skip glue item
-% from the MVL.
-% \begin{macrocode}
-\def\removestuff{\do@output@MVL{\unskip\unpenalty}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\removephantombox}
-% The procedure \cmd\removephantombox\ is a special-purpose message handler exclusively for
-% preventing incorrect spacing above display math. It must be issued in
-% horizontal mode within the phantom paragraph generated when display math starts up in
-% vertical mode.
-% \begin{macrocode}
-\def\removephantombox{%
- \vadjust{%
- \execute@message{%
- \unvbox\@cclv
- \remove@lastbox
- \unskip
- \unskip
- \unpenalty
- \penalty\predisplaypenalty
- \vskip\abovedisplayskip
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addstuff}
-% \cmd\addstuff\ is a document-level command that adds penalty, glue, or both to the
-% MVL. The penalty and glue items are rearranged so that all penalties nodes precede all the glue nodes,
-% which is the canonical arrangement.
-% \begin{macrocode}
-\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}%
-\def\@addstuff#1#2{%
- \skip@\lastskip\unskip
- \count@\lastpenalty\unpenalty
- \@if@empty{#1}{}{\penalty#1\relax}%
- \@ifnum{\count@=\z@}{}{\penalty\count@}%
- \vskip\skip@
- \@if@empty{#2}{}{\vskip#2\relax}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\replacestuff}
-% \cmd\replacestuff\ is a document-level command similar to \cmd\addstuff;
-% but it replaces penalty, glue, or both in the MVL.
-% The penalty and glue items are rearranged so that all penalties nodes precede all the glue nodes,
-% which is the canonical arrangement.
-% \begin{macrocode}
-\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}%
-\def\@replacestuff#1#2{%
- \skip@\lastskip\unskip
- \count@\lastpenalty\unpenalty
- \@if@empty{#1}{}{%
- \@ifnum{\count@>\@M}{}{%
- \@ifnum{\count@=\z@}{\count@=#1\relax}{%
- \@ifnum{\count@<#1\relax}{}{%
- \count@=#1\relax
- }%
- }%
- }%
- }%
- \@ifnum{\count@=\z@}{}{\penalty\count@}%
- \@if@empty{#2}{}{%
- \@tempskipa#2\relax
- \@ifdim{\z@>\@tempskipa}{%
- \advance\skip@-\@tempskipa
- }{%
- \@ifdim{\skip@>\@tempskipa}{}{%
- \skip@\@tempskipa
- }%
- }%
- }%
- \vskip\skip@
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\move@insertions}
-% \begin{macro}{\hold@insertions}
-% In order to avoid bolluxing up \cmd\insert\ registers by our one-off
-% output routines, we set \cmd\holdinginserts\ to zero by default and only
-% clear it (briefly) while we handle cases where we want inserts to show up.
-% \begin{macrocode}
-\def\move@insertions{\global\holdinginserts\z@}%
-\def\hold@insertions{\global\holdinginserts\@ne}%
-\hold@insertions
-\def\toggle@insert#1#2{%
- \@ifnum{\holdinginserts>\z@}{\move@insertions#1}{\hold@insertions#2}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Messages to alter the page grid}%
-%
-% Here is the implementation of the grid-switching procedures.
-% We perform two checks when changing the page grid; first to ensure that
-% the target page grid is known (defensive programming), second to ensure that
-% the switch is a non-trivial one. The latter check must be performed within
-% the safety of the output routine, so requires using an output message.
-% Thus, a grid change requires two messages, for a total of six visits to the output routine.
-%
-% \begin{macro}{\do@columngrid}
-% Utility procedure \cmd\do@columngrid\ changes the page grid.
-% Note that this command forces an end to the current paragraph. This is necessary, because
-% a page grid change makes no sense unless we can alter the \cmd\hsize\ before commencing to
-% typeset the following paragraph. So the command should never be executed in horizontal mode
-% anyway.
-% \begin{macrocode}
-\def\do@columngrid#1#2{%
- \par
- \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname
- \@ifx{\relax\@tempa}{%
- \ltxgrid@warn{Unknown page grid #1. No action taken}%
- }{%
- \do@output@MVL{\start@column{#1}{#2}}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\start@column}
-% Procedure \cmd\start@column\ lays down the interrupts to switch the page grid.
-% If the change to the page grid would have been trivial, it bails out.
-% It seems a reasonable tradeoff of processing versus security: once we commit
-% to changing the page grid, we clear \cmd\holdinginserts, so there is no turning back.
-%
-% Note that the second argument to the macro allows us to pass an argument to the
-% page grid that is starting up. This can be handy, because a single procedure can
-% handle multiple page grids, differing only by the value of a parameter.
-%
-% FIXME: this means that you cannot switch between mlt page grids in a single step.
-% But do we want to do this, at all, at all?
-% \begin{macrocode}
-\def\start@column#1#2{%
- \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{%
- \ltxgrid@info{Already in page grid \thepagegrid. No action taken}%
- }{%
- \expandafter\execute@message@insert
- \expandafter{%
- \csname shut@column@\thepagegrid\expandafter\endcsname
- \csname open@column@#1\endcsname{#2}%
- \set@vsize
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\thepagegrid}
-% The macro \cmd\thepagegrid\ tracks what kind of page grid we are in.
-%
-% Note: Access \cmd\thepagegrid\ only within the safety of the output routine.
-%
-% Warning: The page grid should be changed only within the safety of the output routine.
-% People who write multicol page grid mechanisms appear not to understand the matter, so they
-% should particularly heed this warning. Think about it: obviously Lamport did so, which is why
-% his \cmd\twocolumn\ command forced a pagebreak, which is limiting, but safe.
-% \begin{macrocode}
-\def\thepagegrid{one}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Application Note: implementing a page grid}
-%
-% If you want to create a new page grid for \LaTeX,
-% you must define five procedures with specific names:
-% \cmd\open@column@ name, \cmd\shut@column@ name, \cmd\end@column@ name,
-% \cmd\output@column@ name, and \cmd\@addmarginpar@ name, where ``name'' is the
-% name of your page grid.
-%
-% The procedure \cmd\open@column@ name starts the new page grid. It should define \cmd\thepagegrid,
-% deal with \cmd\box\cmd\pagesofar\ and \cmd\box\cmd\footsofar\ (perhaps by leaving them alone),
-% and it should set the values of \LaTeX's page layout parameters for the column size and height.
-%
-% The procedure \cmd\shut@column@ name should expect to be called with \cmd\holdinginserts\
-% cleared (it can assume that \cmd\holdinginserts\ will automatically be restored).
-% It should properly deal with insertions (like footnotes); calling \cmd\@makecolumn\
-% with an argument of \cmd\false@sw\ will do this.
-% It should know that the page grid is being terminated
-% in the middle of a page, so it should make arrangements to carry the footnotes down to the
-% bottom of the column or page, and it should possibly salt away the material for later
-% incorporation into the page. The box registers \cmd\footsofar\ and \cmd\pagesofar\ are customarily used
-% for this purpose.
-%
-% The procedure \cmd\end@column@ name should kick out a possibly short page containing all the
-% floats committed to the page. It will be invoked during \cmd\clearpage\ processing.
-% After that, it should \cmd\unvbox\cmd\@cclv.
-%
-% The procedure \cmd\output@column@ name should ship out or commit the current \cmd\@outputbox.
-% In a one-column layout, you ship out; in a multicolumn layout, you commit the box as the contents
-% of a particular column, and if that column is the last, you ship out.
-%
-% The procedure \cmd\@addmarginpar@ name should return a boolean (either \cmd\true@sw\ or \cmd\false@sw\ or an equivalent)
-% to tell the marginpar mechanism to place the marginal material to the right or left, respectively.
-%
-% You can use the existing page grids ``one'' and ``mlt'' as a point of departure for creating others.
-% The former can be the basis for, say, a single-column page grid with a side column.
-%
-% \begin{macro}{\pagesofar}
-% \begin{macro}{\footsofar}
-% The box register \cmd\pagesofar\ holds the portion of the (full-width) page that is already composed into columns.
-% This, plus the finished columns, each with its floats, plus \cmd\box255 constitute the full galley.
-%
-% The box register \cmd\footsofar\ holds all of the footnotes associated with \cmd\pagesofar.
-% \begin{macrocode}
-\newbox\pagesofar
-\newbox\footsofar
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\combine@foot@inserts}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% The procedure \cmd\combine@foot@inserts\ is for the purpose of merging
-% the recently contributed footnotes (usually \cmd\box\cmd\footins)
-% with those saved from earlier on the page (usually \cmd\box\cmd\footsofar).
-%
-% It is employed in a number of circumstances.
-%
-% \cmd\@makecolumn (when its argument is \cmd\false@sw):
-% we are not shipping out, so we need to salt away any footnotes there may be.
-%
-% \cmd\shut@column@one: we are leaving the one-column page grid, so recover the footnotes from that material
-% and combine them with those of \cmd\pagesofar.
-%
-% \expandafter\cmd\csname balance@2\endcsname: two columns of type have been balanced, so now balance the footnotes.
-% The \cmd\combine@foot@inserts\ procedure is first used to gather footnotes from the columns balanced with those of \cmd\pagesofar.
-%
-% Bug 571 note: if balancing a two-column page grid, and there had been footnotes in the \cmd\pagesofar,
-% those footnotes will have been balanced into a page-width box, \cmd\box\cmd\footsofar.
-% We need to now re-cast them into a single, column-width galley, and only then
-% combine them with those in \cmd\box\cmd\footins.
-%
-% \begin{macrocode}
-\def\combine@foot@inserts#1#2{%
- \ltxgrid@info@sw{\class@info{\string\combine@foot@inserts\string#1\string#2}}{}%
- \@ifvoid#1{%
- \ltxgrid@foot@info@sw{\trace@box#2}{}\global\setbox#1\box#2%
- }{%
- \global\setbox#1\vbox\bgroup
- \ltxgrid@foot@info@sw{\trace@box#1}{}\unvbox#1%
- \@ifvoid#2{}{%
- \marry@baselines
- \ltxgrid@foot@info@sw{\trace@box#2}{}\unvbox#2%
- }%
- \egroup
- }%
- \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{One-column page grid}
-%
-% \begin{macro}{\onecolumngrid}
-% \begin{macro}{\open@column@one}
-% \begin{macro}{\shut@column@one}
-% \begin{macro}{\float@column@one}
-% \begin{macro}{\end@column@one}
-% \begin{macro}{\output@column@one}
-% \begin{macro}{\@addmarginpar@one}
-% Here are all the procedures necessary for the standard page grid named ``one'':
-% a single column layout. It is, of course, \LaTeX's familiar \cmd\onecolumn\ layout.
-% We begin with the procedure exposed to the style writer.
-% This is, however, not a \LaTeX\ command; users should not change the page grid.
-% \begin{macrocode}
-\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}%
-% \end{macrocode}
-%
-% Note that a document class that issues the command \cmd\onecolumn\ will break. This includes
-% \LaTeX's standard classes.dtx-based classes: if your class descends from one of these, you
-% must expunge it of all such commands.
-% \begin{macrocode}
-\let\onecolumn\@undefined
-% \end{macrocode}
-%
-% The procedure \cmd\open@column@one\ takes advantage of the special nature of the one-column
-% page grid to deal with \cmd\box\cmd\pagesofar, therefore it must also reset \cmd\@colroom.
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\open@column@one#1{%
- \ltxgrid@info@sw{\class@info{\string\open@column@one\string#1}}{}%
-% \end{macrocode}
-% Throw the \cmd\pagesofar\ back onto the Main Vertical List.
-% At this point, we must also \cmd\insert\ the footnotes back into the MVL.
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% \begin{macrocode}
- \unvbox\pagesofar
- \@ifvoid{\footsofar}{}{%
- \insert\footins\bgroup\unvbox\footsofar\egroup
- \penalty\z@
- }%
-% \end{macrocode}
-% Record which page grid we are using. Then calculate the set width (\cmd\hsize) and the goal height (\cmd\vsize).
-%
-% Klootch: we set the \cmd\count\cmd\footins\ to a magic number. This is only correct in the case of a two-column document.
-% \begin{macrocode}
- \gdef\thepagegrid{one}%
- \global\pagegrid@col#1%
- \global\pagegrid@cur\@ne
- \global\count\footins\@m
- \global\divide\count\footins\tw@
- \set@column@hsize\pagegrid@col
- \set@colht
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\shut@column@one\ saves away the one-column material into the box register \cmd\pagesofar.
-% Because it is called from a message handler, we are assured that marks are properly taken care of.
-%
-% This instance of \cmd\@makecolumn\ is building a column for saving into \cmd\pagesofar.
-% \changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \changes{4.1f}{2009/07/15}{(AO, 519) Preserve footnotes that are in \cs{footsofar} across a page grid change}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% We recover the footnotes into \cmd\footsofar\ (globally) and the column into \cmd\pagesofar\ (also globally), voiding \cmd\@outputbox\ by side effect.
-% \begin{macrocode}
-\def\shut@column@one{%
- \ltxgrid@info@sw{\class@info{\string\shut@column@one}}{}%
- \@makecolumn\false@sw
-% \end{macrocode}
-% Split text portion of \cmd\@outputbox\ into \cmd\pagesofar,
-% and add its footnote portion to \cmd\footsofar.
-% Then void out \cmd\@outputbox.
-% \begin{macrocode}
- \global\setbox\pagesofar\vbox\bgroup
- \recover@column\@outputbox\footsofar\column@recovered\footins@recovered
- \egroup
- \begingroup\setbox\z@\box\@outputbox\endgroup
-% \end{macrocode}
-% FIXME: is \cmd\combine@foot@inserts\ needed?
-% Also: if this procedure is immediately followed by \cmd\open@column@ \texttt{grid}, then \cmd\set@colht\ will be unneeded.
-% \begin{macrocode}
- \combine@foot@inserts\footsofar\footins
- \set@colht
-}%
-% \end{macrocode}
-%
-%FIXME: the first line of a footnote should have an up-strut, and the last line a down-strut, so that they can marry baselines.
-% The latter is the case; how about the former?
-%
-% The procedure \cmd\float@column@one\ takes care of a float column that has been built by
-% \cmd\@tryfcolumn, in the single-column page grid.
-%
-% This instance of \cmd\@makecolumn\ is followed by \cmd\@outputpage: it is building
-% a column for \cmd\shipout, rather than for saving into \cmd\pagesofar.
-% \changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-% \begin{macrocode}
-\def\float@column@one{%
- \@makecolumn\true@sw
- \@outputpage
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\end@column@one\ is executed at the end of \cmd\clearpage\ processing,
-% if we were in a one-column page grid, once all permissive float pages have been shipped out.
-% At this point, one could perhaps
-% assume that nothing more need be done, but let us anyway test for committed floats and force a shipout.
-%
-% FIXME: this procedure does the same as \cmd\end@column@mlt
-% (except for the test of \cmd\@ifx@empty\cmd\@dbltoplist):
-% the two could almost be the same procedure.
-%
-% I have changed this procedure to avoid the testing it once did: it simply puts down interrupts,
-% upon which it relies to correctly do what \cmd\clearpage\ requires.
-% \begin{macrocode}
-\def\end@column@one{%
- \unvbox\@cclv\remove@lastbox
- \protect@penalty\do@newpage@pen
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\output@column@one\ is dispatched from the output routine when
-% we have completed a page (that is, a column in a one-column page grid);
-% it ships out the page using the \cmd\@outputpage.
-% It will be followed up with an output routine message to prepare a new column.
-%
-% Query: by what mechanism do the footnotes get placed onto such a page?
-% \begin{macrocode}
-\def\output@column@one{%
- \@outputpage
-}%
-% \end{macrocode}
-%
-% The following procedure determines which side of the page a marginpar will appear.
-% It reproduces the behavior of standard \LaTeX.
-% \begin{macrocode}
-\def\@addmarginpar@one{%
- \@if@sw\if@mparswitch\fi{%
- \@ifodd\c@page{\false@sw}{\true@sw}%
- }{\false@sw}{%
- \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}%
- }{%
- \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}%
- }%
-}%
-% \end{macrocode}
-%
-% The following procedure yields a Boolean value; it determines whether a float in the deferred queue
-% is appropriate for placing. In the one-column grid, all floats are so.
-% \begin{macrocode}
-\def\@floatselect@sw@one#1{\true@sw}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\onecolumngrid@push{%
- \do@output@MVL{%
- \@ifnum{\pagegrid@col=\@ne}{%
- \global\let\restorecolumngrid\@empty
- }{%
- \xdef\restorecolumngrid{%
- \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}%
- }%
- \start@column{one}{\@ne}%
- }%
- }%
-}%
-\def\onecolumngrid@pop{%
- \do@output@MVL{\restorecolumngrid}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Two-column page grid}
-%
-% \begin{macro}{\twocolumngrid}
-% \begin{macro}{\open@column@mlt}
-% \begin{macro}{\shut@column@mlt}
-% \begin{macro}{\end@column@mlt}
-% \begin{macro}{\output@column@mlt}
-% \begin{macro}{\@addmarginpar@mlt}
-% \begin{macro}{\set@footnotewidth@mlt}
-% \begin{macro}{\set@footnotewidth@two}
-% \begin{macro}{\compose@footnotes@two}
-% Here are all the procedures necessary for the standard page grid named ``mlt'':
-% the multi-column page grid. With an argument of "2", it is,
-% of course, \LaTeX's familiar \cmd\twocolumn\ layout.
-%
-% We start with the procedure to switch to the two-column page grid.
-% \begin{macrocode}
-\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}%
-% \end{macrocode}
-%
-% The corresponding command of \LaTeX\ is obsolete.
-% \begin{macrocode}
-\let\twocolumn\@undefined
-% \end{macrocode}
-%
-% Of course, \cmd\@topnewpage\ is also obsolete. Just do
-%\begin{quote}
-% \cmd\clearpage\cmd\onecolumngrid<vertical mode material>\cmd\twocolumngrid.
-%\end{quote}
-% \begin{macrocode}
-\let\@topnewpage\@undefined
-% \end{macrocode}
-%
-% If your document class descends from one of \LaTeX's standard classes.dtx-derived
-% classes, it will break. You must expunge from it all such commands.
-%
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-%
-% Bug 571 note: it is not enough to have the \cmd\pagesofar, we must also deal with the \cmd\footsofar.
-% At this juncture, we should treat the case where the document has an essentially two-column page grid,
-% with occasional excursions into the one-column grid.
-% If a footnote is set within the latter grid, its set width should be that of the two-column grid.
-%
-% When a page is shipped out, if we are currently in a one-column grid, we will compose the footnotes onto the page
-% in the form of balanced columns. This is only one way to handle footnotes: \classname{multicol}
-% appears to set footnotes on the full text width.
-% \begin{macrocode}
-\def\open@column@mlt#1{%
- \ltxgrid@info@sw{\class@info{\string\open@column@mlt\string#1}}{}%
-% \end{macrocode}
-% At this point, we must \cmd\insert\ the footnotes back into the Main Vertical List.
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% \begin{macrocode}
- \@ifvoid{\footsofar}{}{%
- \insert\footins\bgroup\unvbox\footsofar\egroup
- }%
-% \end{macrocode}
-% Record which page grid we are using. Then calculate the set width (\cmd\hsize) and the goal height (\cmd\vsize).
-%
-% Klootch: we set the \cmd\count\cmd\footins\ to a magic number. This value is valid whether footnotes are being
-% set on the column width or the full text width.
-% \begin{macrocode}
- \gdef\thepagegrid{mlt}%
- \global\pagegrid@col#1%
- \global\pagegrid@cur\@ne
- \global\count\footins\@m
- \set@column@hsize\pagegrid@col
- \set@colht
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\shut@column@mlt\ ends the current column, balances the columns, and
-% salts away all in \cmd\pagesofar. Because it is called in a message handler,
-% we are assured that marks are handled properly.
-% Attention: because this procedure balances columns, all footnotes are
-% held aside in \cmd\footsofar\ for placement at the bottom of the page.
-%
-% Bug note: the last macro executed by this procedure is \cmd\set@colht,
-% but had been erroneously \cmd\set@colroom.
-% I now believe that the latter should be changed pretty much everywhere to the former.
-%
-% This instance of \cmd\@makecolumn\ is building material for \cmd\pagesofar, rather than
-% for \cmd\shipout.
-% \changes{4.1b}{2008/08/04}{Change \cs{@makecol} to \cs{@makecolumn} with argument}
-% \changes{4.1b}{2008/08/04}{Change \cs{@combinepage} to \cs{@combinepage} with argument}
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% \begin{macrocode}
-\def\shut@column@mlt{%
- \ltxgrid@info@sw{\class@info{\string\shut@column@mlt}}{}%
- \@cclv@nontrivial@sw{%
- \@makecolumn\false@sw
- \@ifnum{\pagegrid@cur<\pagegrid@col}{%
- \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
- \global\advance\pagegrid@cur\@ne
- }{}%
- }{%
- \void@cclv
- }%
- \@ifnum{\pagegrid@cur>\@ne}{%
- \csname balance@\the\pagegrid@col\endcsname
- \grid@column\@outputbox{}%
- \@combinepage\false@sw
- \@combinedblfloats
- \global\setbox\pagesofar\box\@outputbox
- \show@pagesofar@size
- }{}%
- \set@colht
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\float@column@mlt\ takes care of a float page that has been built by \cmd\@tryfcolumn,
-% in the multi-column page grid. It is coincidentally identical to what happens in
-% \cmd\do@startpage\ when a page needs to be shipped out.
-% \changes{4.1b}{2008/08/04}{New procedure \cs{@output@combined@page}}
-% \begin{macrocode}
-\def\float@column@mlt{%
- \@output@combined@page
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\end@column@mlt\ is executed at the end of \cmd\clearpage\ processing,
-% if we were in a multi-column page grid, once all permissive float pages have been shipped out.
-% If no floats are committed and if no columns are yet filled, we have nothing to do.
-% Otherwise, we kick out a column and try again.
-%
-% Note that in our code to kick out a column, we must deal properly with the case where the column
-% is trivial: it will have nothing but \cmd\topskip\ glue plus a protection box. We substitute an ordinary
-% \cmd\null\ for the protection box.
-%
-% \begin{macrocode}
-\def\end@column@mlt{%
- \@ifx@empty\@toplist{%
- \@ifx@empty\@botlist{%
- \@ifx@empty\@dbltoplist{%
- \@ifx@empty\@deferlist{%
- \@ifnum{\pagegrid@cur=\@ne}{%
- \false@sw
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
- }{%
- \true@sw
- }%
- % true = kick out a column and try again
- {%
- \@cclv@nontrivial@sw{%
- \unvbox\@cclv\remove@lastbox
- }{%
- \unvbox\@cclv\remove@lastbox\unskip\null
- }%
- \protect@penalty\do@newpage@pen
- \protect@penalty\do@endpage@pen
- }{%
- \unvbox\@cclv\remove@lastbox
- }%
-}%
-% \end{macrocode}
-%
-% The procedure \cmd\output@column@mlt (cf. \cmd\output@column@one)
-% is dispatched from the output routine when
-% we have completed a column in a multi-column page grid).
-% (It replaces the \cmd\@outputdblcol\ of standard \LaTeX.)
-% If a complete set of columns is at hand, it ships out the page and
-% lays down an interrupt for \cmd\do@startpage@pen, which will commit the
-% full-page-width floats to the next page.
-% Like \cmd\output@column@mlt, this is followed by
-% an output routine message to prepare a new column.
-%
-% If a page needs to be shipped out, it uses the same mechanism as \cmd\do@startpage.
-% \changes{4.1b}{2008/08/04}{New procedure \cs{@output@combined@page}}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% \begin{macrocode}
-\def\output@column@mlt{%
- \@ifnum{\pagegrid@cur<\pagegrid@col}{%
- \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
- \global\advance\pagegrid@cur\@ne
- }{%
- \set@adj@colht\dimen@
- \grid@column\@outputbox{}%
- \@output@combined@page
- }%
-}%
-% \end{macrocode}
-% The procedure \cmd\output@column@mlt\ obsoletes \LaTeX's \cmd\@outputdblcol
-% \begin{macrocode}
-\let\@outputdblcol\@undefined
-% \end{macrocode}
-%
-% The following procedure yields a Boolean value; it determines whether a float in the deferred queue
-% is appropriate for placement in the column. In the multi-column grid, only those narrower than \cmd\textwidth\ are so.
-% \begin{macrocode}
-\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}%
-% \end{macrocode}
-%
-% The following procedure determines which side of the page a marginpar will appear.
-% It reproduces the behavior of standard \LaTeX.
-% \begin{macrocode}
-\def\@addmarginpar@mlt{% emits a boolean
- \@ifnum{\pagegrid@cur=\@ne}%
-}%
-% \end{macrocode}
-%
-% \cmd\set@footnotewidth@one\ sets the width of type within footnotes to span the full text width;
-% \cmd\set@footnotewidth@two\ to span a single column of the two-column grid, and
-% more generally \cmd\set@footnotewidth@mlt\ for a multi-column page grid.
-% \begin{macrocode}
-\def\set@footnotewidth@one{%
- \hsize\columnwidth
- \linewidth\hsize
-}%
-\def\set@footnotewidth@two{\set@footnotewidth@mlt\tw@}%
-\def\set@footnotewidth@mlt#1{%
- \hsize\textwidth
- \advance\hsize\columnsep
- \divide\hsize#1%
- \advance\hsize-\columnsep
- \linewidth\hsize
-}%
-% \end{macrocode}
-%
-% \cmd\compose@footnotes\ is the procedure for arranging the footnotes for
-% placement at the bottom of the page or column.
-% In the former case, the material will be shipped out; in the latter, we must allow
-% the column to possibly be balanced later on.
-%
-% \cmd\compose@footnotes@one\ is a no-op, because the footnotes require no rearrangement.
-% In a scheme where footnotes are set on the full text width, this would be the procedure called.
-%
-% \cmd\compose@footnotes@two\ implements the case where a two-column document has been interrupted
-% with full-page-width text (e.g., the widetext environment or the end of the document),
-% and a natural page break appears.
-%
-% In either case, we assume that argument \verb+#1+ is an \cmd\insert\ register and must be assigned globally,
-% so that when it is accessed with \cmd\box\ or \cmd\unvbox, it will be voided globally as well.
-%
-% To extend this scheme to a three-column page grid \cmd\compose@footnotes@thr@@\ would be created:
-% it would balance the saved up footnotes into three columns.
-%
-% \begin{macrocode}
-\def\compose@footnotes@one#1{%
- \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@one\string#1}\trace@box#1}{}%
-}%
-\let\compose@footnotes\compose@footnotes@one
-\def\compose@footnotes@two#1{%
- \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@two\string#1}\trace@box#1}{}%
- \setbox\z@\box\@tempboxa
- \let\recover@column\recover@column@null
- \let\marry@baselines\@empty
- \balance@two#1\@tempboxa
- \global\setbox#1\hbox to\textwidth{\box#1\hfil\box\@tempboxa}%
- \ltxgrid@foot@info@sw{\trace@box#1}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Page grid utility procedures}
-%
-% \begin{macro}{\pagegrid@cur}
-% \begin{macro}{\pagegrid@col}
-% \begin{macro}{\pagegrid@init}
-% We take over \LaTeX's \cmd\col@number, and \cmd\@leftcolumn, which are obsolete (\cmd\@holdpg\ could also be taken over).
-% We create two counters to hold the columns in the page grid and the current column within.
-% We also create the first of a set of box registers to hold the committted columns.
-% \begin{macrocode}
-\let\pagegrid@cur\col@number
-\let\col@number\@undefined
-\newcount\pagegrid@col
-\pagegrid@cur\@ne
-\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn
-\let\@leftcolumn\@undefined
-% \end{macrocode}
-%
-% The default is for maximum two columns.
-% If your class will require more columns, assign that number to \cmd\pagegrid@col\
-% before \envb{document} time.
-% \begin{macrocode}
-\pagegrid@col\tw@
-% \end{macrocode}
-%
-% The procedure \cmd\pagegrid@init\ is a loop, exercising \cmd\newbox\ sufficiently to create the
-% boxes for holding the columns in the page grid; these have names like \expandafter\cmd\csname col@1\endcsname, etc.
-% \begin{macrocode}
-\def\pagegrid@init{%
- \advance\pagegrid@cur\@ne
- \@ifnum{\pagegrid@cur<\pagegrid@col}{%
- \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname
- \pagegrid@init
- }{%
- }%
-}%
-\appdef\class@documenthook{%
- \pagegrid@init
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\grid@column}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% The procedure \cmd\grid@column\ knows how to lay up the columns in a multi-column page grid.
-% It uses utility procedures \cmd\append@column@\ and \cmd\box@column.
-%
-% The first argument is the box register to create, usually \cmd\@outputbox, and provides both input and output.
-% The second argument a dimension, allowing us to strut down the depth of the box we create.
-%
-% \begin{macrocode}
-\def\grid@column#1#2{%
- \ltxgrid@info@sw{\class@info{\string\grid@column\string#1}}{}%
- \global\setbox#1\vbox\bgroup
- \hb@xt@\textwidth\bgroup
- \vrule\@height\z@\@width\z@\@if@empty{#2}{}{\@depth#2}%
- \pagegrid@cur\@ne
- \@ifnum{\pagegrid@cur<\pagegrid@col}{\loopwhile{\append@column@\pagegrid@cur\pagegrid@col}}{}%
- \box@column#1%
- \egroup
-% \end{macrocode}
-% FIXME: page depth!
-% \begin{macrocode}
- \vskip\z@skip
- \egroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\append@column@}
-% \begin{macro}{\box@column}
-% \begin{macro}{\marry@baselines}
-% The procedure \cmd\append@column@\ appends columns for \cmd\grid@column,
-% \cmd\box@column\ builds the columns for \cmd\append@column@,
-% and \cmd\marry@baselines\ pastes vertical things back together.
-% \changes{4.0a}{2001/06/18}{Introduce \cs{marry@height} }
-%
-% Note that \cmd\box@column\ makes an attempt to prevent excessive \cmd\topskip\
-% or \cmd\baselineskip\ glue
-% from being applied by \TeX\ when \cmd\@outputbox\ is contributed to the MVL.
-% If this is not done, it is possible to get into an infinite loop in the corner case,
-% wherein the page grid is changed to one column and the balanced-up columns are
-% already sufficient to fill the page.
-%
-% Note (AO 0920): I have changed the dimension involved with \cmd\box@column\ from
-% \cmd\vsize\ to \cmd\textheight, because the former is certainly not the correct value
-% to use: it will change if floats have been placed in the last column of the page.
-% I believe \cmd\textheight\ is the correct parameter to use here.
-%
-% A REVTeX4 user, Sergey Strelkov (strelkov@maik.rssi.ru), wants the option
-% of ragged-bottom columns. Implementing this feature properly means reboxing the
-% columns to their natural height only if \cmd\raggedcolumn@sw\ is true.
-% Otherwise, they get reboxed to their common height (\cmd\@colht?).
-%
-% Note that the default has hereby changed from ragged to flush.
-% It's not clear that anyone but Sergey will notice.
-%
-% The macro \cmd\marry@skip\ addresses (in a limited way)
-% the fact that neither the value of \cmd\baselineskip\ nor that of \cmd\topskip\
-% can be relied upon for the purpose of marrying the baselines of two split columns.
-% (Because there might have been a local change to their values at the point where
-% the output routine got triggered.)
-%
-% For best results, your document class should call for grid changes only when in basal text
-% settings. The \cmd\marry@baselines\ procedure will use the values appropriate to that point
-% when attempting to put the columns back together.
-%
-% In any case, we are not attempting to solve the more general problem of how to marry baselines
-% where the leading can change arbitrarily within the galley or where glue could have been trimmed
-% at a page top.
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% Procedure \cmd\append@column@\ composes a column onto the horizontal list along with its \cmd\columnseprule.
-% Its arguments are: \verb+#1+---\cmd\pagegrid@cur, and \verb+#2+---\cmd\pagegrid@col
-% \begin{macrocode}
-\def\append@column@#1#2{%
- \expandafter\box@column\csname col@\the#1\endcsname
- \hfil\vrule\@width\columnseprule\hfil
- \advance#1\@ne
-% \end{macrocode}
-% This procedure is the argument of \cmd\loopwhile, so it must leave a Boolean (e.g., \cmd\true@sw) in \TeX's scanner.
-% \begin{macrocode}
- \@ifnum{#1<#2}%
-}%
-% \end{macrocode}
-% \changes{4.1n}{2010/01/02}{(AO, 571) calling sequence of \cs{combine@foot@inserts} and \cs{grid@column} to expose box registers; that of \cs{append@column@} its column counters}%
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% Procdure \cmd\box@column, used by \cmd\append@column@, puts down a box containing the specified column.
-% Its height is adjusted down to \cmd\@colht, if needed; likewise, the width is set to \cmd\columnwidth.
-% The rag at the bottom is controlled by \cmd\raggedcolumn@skip.
-% \begin{macrocode}
-\def\box@column#1{%
- \ltxgrid@info@sw{\class@info{\string\box@column\string#1}}{}%
- \raise\topskip
- \hb@xt@\columnwidth\bgroup
- \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}%
- \count@\vbadness\vbadness\@M
- \dimen@ii\vfuzz\vfuzz\maxdimen
- \ltxgrid@info@sw{\saythe\@colht\saythe\dimen@}{}%
- \vtop to\dimen@\bgroup
- \hrule\@height\z@
- \unvbox#1%
- \raggedcolumn@skip
- \egroup
- \vfuzz\dimen@ii
- \vbadness\count@
- \hss
- \egroup
-}%
-% \end{macrocode}
-% The purpose of procedure \cmd\marry@baselines\ is to ensure that the baseline spacing is correct;
-% it does this by making adjustments to the previous line, compensating for its depth, and by adding in
-% skip glue in an amount that assumes the added material has \cmd\topskip\ glue above.
-% \begin{macrocode}
-\def\marry@baselines{%
- \begingroup
- \setbox\z@\lastbox
- \@ifvoid{\z@}{%
- \endgroup
- }{%
- \aftergroup\kern
- \aftergroup-%
- \expandafter\box\expandafter\z@\expandafter\endgroup\the\dp\z@\relax
- }%
- \vskip\marry@skip\relax
-}%
-\gdef\marry@skip{\z@skip}%
-\def\set@marry@skip{%
- \begingroup
- \skip@\baselineskip\advance\skip@-\topskip
- \@ifdim{\skip@>\z@}{%
- \xdef\marry@skip{\the\skip@}%
- }{}%
- \endgroup
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/04}{Use \cs{document@inithook} instead of \cs{AtBeginDocument}}
-% \begin{macrocode}
-\appdef\document@inithook{%
- \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}%
-}%
-\def\raggedcolumn@skip{%
- \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@combinepage}
-% The procedure \cmd\@combinepage\ prepends the stored page (\cmd\pagesofar) to \cmd\@outputbox\ and
-% employs \cmd\@combineinserts\ to lay down the footnotes.
-% The next event will usually be shipping out the made-up page, but not always.
-% Therefore the argument of \cmd\@combinepage, which must be a Boolean, determines
-% if the footnotes are to be combined into this page.
-%
-% \changes{4.1b}{2008/08/04}{Change \cs{@combinepage} to \cs{@combinepage} with argument}
-% \changes{4.1b}{2008/08/04}{(AO, 452) Support length checking: show size of shipped out text.}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-%
-% QUERY: In the following, if \cmd\box\cmd\footins\ is not void, its contents are lost. Can this ever happen?
-% \begin{macrocode}
-\def\@combinepage#1{%
- \ltxgrid@foot@info@sw{\class@info{\string\@combinepage\string#1}}{}%
- \@ifvoid\pagesofar{}{%
- \setbox\@outputbox\vbox{%
- \unvbox\pagesofar
- \marry@baselines
- \unvbox\@outputbox
- }%
- }%
- #1{%
- \@ifvoid\footsofar{}{%
-% \end{macrocode}
-% At this point, \cmd\footins\ is empty; all of the footnotes have been combined into \cmd\footsofar.
-% \begin{macrocode}
- \show@box@size{Combining page footnotes}\footsofar
- \setbox\footins\box\footsofar
-% \end{macrocode}
-% Depending on the page grid, we compose the footnotes for placement on the page.
-% \begin{macrocode}
- \compose@footnotes
- \@combineinserts\@outputbox\footins
- }%
- }{%
-% \end{macrocode}
-%QUERY: The following line was removed, probably to fix a bug. When was this done?
-% \begin{verbatim}
-% \global\setbox\footins\box\footsofar
-% \end{verbatim}
-% \begin{macrocode}
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@cflt}
-% \begin{macro}{\@cflb}
-% \changes{4.1b}{2008/08/04}{}
-% We modify \LaTeX's \cmd\@cflt\ and \cmd\@cflb\ to remove the unwanted glue with \cmd\unskip.
-% \begin{macrocode}
-\def \@cflt{%
- \let \@elt \@comflelt
- \setbox\@tempboxa \vbox{}%
- \@toplist
- \setbox\@outputbox \vbox{%
- \boxmaxdepth \maxdepth
- \unvbox\@tempboxa\unskip
- \topfigrule\vskip \textfloatsep
- \unvbox\@outputbox
- }%
- \let\@elt\relax
- \xdef\@freelist{\@freelist\@toplist}%
- \global\let\@toplist\@empty
-}%
-\def \@cflb {%
- \let\@elt\@comflelt
- \setbox\@tempboxa \vbox{}%
- \@botlist
- \setbox\@outputbox \vbox{%
- \unvbox\@outputbox
- \vskip \textfloatsep\botfigrule
- \unvbox\@tempboxa\unskip
- }%
- \let\@elt\relax
- \xdef\@freelist{\@freelist\@botlist}%
- \global \let \@botlist\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@combinedblfloats}
-% We modify \LaTeX's \cmd\@combinedblfloats\ to be more appropriate for incremental page building:
-% we \cmd\unvbox\ the \cmd\@outputbox.
-% \begin{macrocode}
-\def\@combinedblfloats{%
- \@ifx@empty\@dbltoplist{}{%
- \setbox\@tempboxa\vbox{}%
- \let\@elt\@comdblflelt\@dbltoplist
- \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
- \global\let\@dbltoplist\@empty
- \setbox\@outputbox\vbox{%
- %\boxmaxdepth\maxdepth %% probably not needed, CAR
- \unvbox\@tempboxa\unskip
- \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained?
- \vskip\dbltextfloatsep
- \unvbox\@outputbox
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\set@column@hsize}%
-% The procedure \cmd\set@column@hsize\ takes care of setting up the horizontal dimensions
-% for the current page grid. The present routine will certainly not be adequate for more
-% complex page layouts (e.g., with a side column), but works for the common ones.
-% \changes{4.0a}{2001/06/18}{Introduce \cs{set@marry@height} }
-% \begin{macrocode}
-\def\set@column@hsize#1{%
- \pagegrid@col#1%
- \global\columnwidth\textwidth
- \global\advance\columnwidth\columnsep
- \global\divide\columnwidth\pagegrid@col
- \global\advance\columnwidth-\columnsep
- \global\hsize\columnwidth
- \global\linewidth\columnwidth
- \skip@\baselineskip\advance\skip@-\topskip
- \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\set@colht}%
-% \begin{macro}{\set@colroom}%
-% \begin{macro}{\set@vsize}%
-% \begin{macro}{\set@adj@colht}%
-% The story of \cmd\textheight, \cmd\@colht, \cmd\@colroom, and \cmd\vsize.
-%
-% \cmd\textheight---height of the text column. Not a running parameter, however, each time a page is
-% shipped out, the \cmd\textheight\ could in principle be altered. This must be done before
-%
-% \cmd\@colht---\cmd\textheight\ minus the height of any full-page-width floats. The latter are committed
-% only just after shipping out, and only if we are in a multicolumn page grid.
-% Therefore, \cmd\@colht\ should be set after a \cmd\shipout\ (by \cmd\@outputpage) and
-% will be adjusted when full-page-width floats are committed to the fresh page by \cmd\do@startpage.
-%
-% \cmd\@colroom---\cmd\@colht\ (adjusted by \cmd\pagesofar) minus the height of any column-width floats.
-% The latter are committed anywhere on the page, at which point \cmd\@colroom\ must be adjusted.
-% Therefore, \cmd\@colroom\ should be set (by \cmd\set@colroom) whenever a column is prepared (by ).
-%FIXME: committed (by \cmd\output@column@) and
-% will be adjusted (by \cmd\@add@float\ or \cmd\do@startcolumn) whenever a float is committted to the column.
-%
-% \cmd\vsize---\cmd\@colroom.
-% Therefore, \cmd\vsize\ should be set (by \cmd\set@vsize) whenever
-% the \cmd\@colroom\ is set (by \cmd\set@colroom) or adjusted (by \cmd\@add@float\ or \cmd\do@startcolumn)
-%FIXME: or when the \cmd\pagesofar\ box is changed (after invoking \cmd\open@column@).
-%
-% Question: what if there are committed floats? Footnotes?
-% Answer: full-page-width floats are only committed at top, and they are already reckoned with in \cmd\@colht.
-% Column-width committed floats are incorporated by \cmd\@makecolumn.
-%
-% As to footnotes, our scheme is to keep the \cmd\footins\ insert register up to date, and to use the insert mechanism
-% to ensure room for footnotes.
-% When a change is made to the page grid, the footnotes will need to be propagated back into the MVL.
-%
-% Note: FIXME: adjusting for \cmd\pagesofar\ is done at not quite the right time. I need to reexamine \cmd\set@colht,
-% because \cmd\@dbltoplist\ and \cmd\pagesofar\ really should be on the same footing.
-% Perhaps \cmd\@colht\ and \cmd\@colroom\ should both deal with their respective ``lists'' in the same way?
-%
-% These concerns will be particularly germane if we ever extend this package to deal with full-page-width floats
-% placed at the bottom of the page, or committed on the same page as called out.
-%
-% It occurs to me that we should ditch \cmd\set@colroom\ and only ever execute \cmd\set@colht,
-% which sets \cmd\@colroom\ as a side effect.
-% If so, we can make \cmd\@colht\ take \cmd\pagesofar\ into account, as it should. Then \cmd\@colht\ will return to its
-% original significance as the value that \cmd\@colroom\ is set to after a column is committed.
-%
-% On the other hand, why not simply forget all this caching and (re-)calculate \cmd\vsize\ as late as possible?
-% Particularly, \cmd\@colht\ is an artifact of the old way of doing things, where once it was set, it would never change.
-%
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\set@colht{%
- \set@adj@textheight\@colht
- \global\let\enlarge@colroom\@empty
- \set@colroom
-}%
-\def\set@adj@textheight#1{%
- \ltxgrid@info@sw{\class@info{\string\set@adj@textheight\string#1}\saythe\textheight}{}%
- #1\textheight
- \def\@elt{\adj@page#1}%
- \@booleantrue\firsttime@sw\@dbltoplist
- \let\@elt\relax
- \global#1#1\relax
- \ltxgrid@info@sw{\saythe#1}{}%
-}%
-\def\set@colroom{%
- \ltxgrid@info@sw{\class@info{\string\set@colroom}}{}%
- \set@adj@colht\@colroom
- \@if@empty\enlarge@colroom{}{%
- \global\advance\@colroom\enlarge@colroom\relax
- \ltxgrid@info@sw{\saythe\@colroom}{}%
- }%
- \@ifdim{\@colroom>\topskip}{}{%
- \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}%
- \@colroom\topskip
- }%
- \global\@colroom\@colroom
-%<ignore> \ltxgrid@info@sw{\class@info{\string\set@colroom\string\vsize=\string\colroom}\saythe\vsize}{}%
- \set@vsize
-}%
-%
-\def\set@vsize{%
- \global\vsize\@colroom
- \ltxgrid@info@sw{\class@info{\string\set@vsize\string\vsize=\string\colroom}\saythe\vsize}{}%
-}%
-% \end{macrocode}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \begin{macrocode}
-\def\set@adj@colht#1{%
- #1\@colht
- \ltxgrid@info@sw{\class@info{\string\set@adj@colht\string#1-\string\pagesofar}\saythe#1}{}%
- \@ifvoid\pagesofar{}{%
- \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar
- \ltxgrid@info@sw{\class@info{\string\pagesofar}\saythe#1}{}%
- }%
- \def\@elt{\adj@column#1}%
- \@booleantrue\firsttime@sw\@toplist
- \@booleantrue\firsttime@sw\@botlist
- \let\@elt\relax
-}%
-\def\adj@column#1#2{%
- \advance#1-\ht#2%
- \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}%
- \ltxgrid@info@sw{\class@info{\string\adj@column\string#1-\string#2}\saythe#1}{}%
-}%
-\def\adj@page#1#2{%
- \advance#1-\ht#2%
- \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}%
- \ltxgrid@info@sw{\class@info{\string\adj@page\string#1-\string#2}\saythe#1}{}%
-}%
-\def\set@adj@box#1#2{%
- \@ifvoid#2{}{%
- \advance#1-\ht#2\advance#1-\dp#2%
- \@booleantrue\temp@sw
- \ltxgrid@foot@info@sw{\class@info{\string\set@adj@box\string#2}\saythe#1}{}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@outputpage@tail}%
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@tail} tailpatches \cs{@outputpage}}%
-% In \cmd\@outputpage@tail, we set \cmd\@colht\ and the float placement parameters
-% (this is the one point where it is appropriate to set \cmd\@colht).
-% At \cmd\do@startpage\ time, we adjust \cmd\@colht's value to reflect committed
-% full-page-width floats.
-%
-% Note: with a correctly written output routine, a call to \cmd\@outputpage\ will inevitably be
-% followed by a call to \cmd\do@startpage, so these procedure calls would be unneeded.
-% \begin{macrocode}
-\appdef\@outputpage@tail{%
- \set@colht % FIXME: needed?
- \@floatplacement % FIXME: needed?
- \@dblfloatplacement % FIXME: needed?
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{balance@2}
-% \changes{4.1b}{2008/08/04}{Procedure \cs{balance@2} defined more transparently}%
-% We define procedures for balancing columns in a multicolumn layout.
-% For now, we define only one: a procedure for the two-column grid.
-% All others will simply \cmd\relax\ out.
-%
-% The following code defines \verb+\balance@2+ without all the clunky \cmd\csname\ commands
-% in the replacement part,
-% which appears on the right-hand side of the assignment to \cmd\toks@.
-%
-% The method is straightforward: balance the two columns of text, and balance the footnotes.
-% Later on, \cmd\@combineinserts\ will be called to place the footnotes after the now-balanced columns.
-%
-% \changes{4.1f}{2009/07/14}{(AO, 519) \cs{footins} content must be preserved and reintegrated}
-% It was necessary to deal with the case where \cmd\box\cmd\footsofar\ was not empty
-% upon execution of this balancing code. We store it away in \cmd\box\cmd\footins\ and
-% add it back in afterwards.
-%
-% Here is a conundrum: if we switch between single-, two-, and three-column page grids:
-% On what measure should the footnotes be set?
-% \begin{macrocode}
-\begingroup
- \catcode`\1=\cat@letter
- \catcode`\2=\cat@letter
-% \end{macrocode}
-% \cmd\toks@\ contains the repacement part for an effective \cmd\def\cs{balance@2}.
-% \begin{macrocode}
- \toks@{%
-% \end{macrocode}
-% \cmd\balance@two, by side effect, strips footnotes into \cmd\box\cmd\footins.
-% \begin{macrocode}
- \setbox\footins\box\footsofar
- \balance@two\col@1\@outputbox
-% \end{macrocode}
-% We ensure that the box assignments are global.
-% \begin{macrocode}
- \global\setbox\col@1\box\col@1
- \global\setbox\@outputbox\box\@outputbox
-% \end{macrocode}
-% The following line puts all footnotes into the footnote galley, \cmd\footsofar.
-% \begin{macrocode}
- \combine@foot@inserts\footsofar\footins
- }%
- \aftergroup\def\aftergroup\balance@2\expandafter
-\endgroup\expandafter{\the\toks@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\balance@two}
-% The procedure \cmd\balance@two\ takes two columns and balances them; in the process it removes
-% any footnotes that may be present to a place of safety \cmd\footsofar,
-% for later placement at the foot of the shipped-out page.
-% The box register \cmd\box\cmd\@ne\ is the aggregate of all columns.
-% The box register \cmd\box\cmd \z@\ is the last column.
-% The box register \cmd\box\cmd\tw@\ is the first column.
-% The \cmd\dimen\ register \cmd\dimen@\ is the trial value to \cmd\vsplit\ to,
-% initially half the height of \cmd\box\cmd\@ne.
-% The \cmd\dimen\ register \cmd\dimen@i\ is the increment for the next trial;
-% its initial value is equal to the initial value of \cmd\dimen@.
-% The \cmd\dimen\ register \cmd\dimen@ii\ is the difference of the heights of the two columns.
-%
-% The procedure uses a binary search for that value of \cmd\dimen@\ which is stable to within .5\cmd\p@\ and which
-% makes the last column be shorter than the others.
-%
-% This procedure can be extended to multiple columns simply by changing it to execute \cmd\vsplit\ multiple
-% times (one less than the total number of columns in the page layout) and to calculating \cmd\dimen@ii\
-% to be the difference of the heights of last column and the \cmd\dimen@.
-% Upon termination of the search, one would excute the \cmd\vsplit s once again, this time
-% using the actual \cmd\col@\ box registers to store the
-% balanced columns, thereby clobbering their former contents.
-%
-% Bug Note:
-% as originally written, this macro had a bug, which is well worth avoiding under similar circumstances anywhere.
-% So, learn from the mistakes of others, as they say.
-% In trying to remove the depth of the boxes created via \cmd\vsplit\ within the \cmd\loopwhile\ control,
-% I originally coded
-% \cmd\unvbox
-% \cmd\z@\
-% \cmd\setbox
-% \cmd\z@
-% \cmd\lastbox\
-% \cmd\dimen@
-% \cmd\dp
-% \cmd\z@\
-% \cmd\box
-% \cmd\z@\
-% \cmd\vskip-%
-% \cmd\dimen@.
-% The error here is that the (horizontal) shift of the last box in the vertical list will be lost in the process.
-% Simply put, \cmd\setbox\cmd\z@\cmd\lastbox\ fails to retain the shift of the box node in the vertical list,
-% and when it is put down again via \cmd\box\cmd\z@, it will no longer have the correct shift.
-%
-% This bug affected things placed in the MVL with \cmd\moveleft, \cmd\moveright, \cmd\parshape, and
-% \cmd\hangindent, as well as things shifted by \TeX's primitive mechanisms.
-%
-% A superior strategy for removing the depth of the last line of the list is more expensive, but safer:
-% make a separate copy of the list, measure the depth of the last box as above, but then discard
-% the list, retaining only the value of the dimension.
-%
-% Note that this procedure will not work if the material within is excessively chunky.
-% A particular failure mode exists where none of the material is allocated to the last (right) column.
-% We detect this case and revert to unbalanced columns.
-%
-% Another failure mode is where a large chunk occurs at the beginning of the composite box.
-% In this case, the left column may fill up even when \cmd\dimen@\ is very small.
-% If this configuration leaves the left column longer than the right, then we are done,
-% but \cmd\dimen@\ by no means represents the height of either finished box.
-%
-% Therefore the last step in the process is to rebox the two columns to a common height determined
-% independently of the balancing process.
-%
-% The dimension involved is checked against the current \cmd\@colroom\ to guard against the case where
-% excessive material happens to fall in either column.
-% \changes{4.1b}{2008/08/04}{Change \cs{set@colroom} to \cs{set@colht}}
-% \changes{4.1n}{2009/12/02}{More diagnostics of column balancing}
-% \changes{4.1n}{2010/01/02}{(AO, 571) coding convention: use \cs{bgroup}, \cs{egroup} (instead of braces) when a box is being built}%
-% \changes{4.1n}{2010/01/02}{(AO, 571) Footnotes, when columns are balanced or when they are composed with their column}%
-% \changes{4.1n}{2010/01/02}{(AO, 571) Change \cs{balance@two}'s balancing algorithm to more successfully balance extremely short columns.}
-% \begin{macrocode}
-\def\balance@two#1#2{%
- \ltxgrid@info@sw{\class@info{\string\balance@two\string#1\string#2}}{}%
- \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
-% \end{macrocode}
-% The first step is to recover the footnotes from the bottoms of the two columns (globally, into \cmd\footsofar)
-% and to combine the text into \cmd\box\cmd\@ne, but without voiding either of the argument boxes.
-% \begin{macrocode}
- \setbox\thr@@\copy\footsofar
- \setbox\@ne\vbox\bgroup
- \@ifvoid{#1}{}{%
- \recover@column#1\footsofar\column@recovered\footins@recovered
- \@ifvoid{#2}{}{\marry@baselines}%
- }%
- \@ifvoid{#2}{}{%
- \recover@column#2\footsofar\column@recovered\footins@recovered
- }%
- \egroup
- \outputdebug@sw{\trace@scroll{\showbox\@ne}}{}%
- \ltxgrid@foot@info@sw{\trace@scroll{\showbox\footsofar}}{}%
-% \end{macrocode}
-% Hereunder, \cmd\dimen@\ is the split value. We adjust it until the step size is small enough, while the split is acceptable.
-% Also, \cmd\dimen@i\ is the step size. Once this value is greater than a half point, we must iterate.
-% \begin{macrocode}
- \dimen@\ht\@ne\divide\dimen@\tw@
- \dimen@i\dimen@
- \vbadness\@M
- \vfuzz\maxdimen
- \splittopskip\topskip
- \loopwhile{%
- \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@
- \remove@depth\z@\remove@depth\tw@
-% \end{macrocode}
-% The following line would provide a diagnostic of the iterations of column balancing, were we to use it.
-% \begin{verbatim}
-% \outputdebug@sw{\trace@scroll{\showbox\tw@\showbox\z@}}{}%
-% \end{verbatim}
-% Hereunder, \cmd\dimen@ii\ is used to reckon the difference in height between the left box and the right.
-% \begin{macrocode}
- \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@
- \dimen@i=.5\dimen@i
- \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
-% \end{macrocode}
-% If the columns are within a half-point of each other,
-% \begin{macrocode}
- \@ifdim{\dimen@ii<.5\p@}{%
- \@ifdim{\dimen@ii>-.5\p@}%
- }{%
- \false@sw
- }%
-% \end{macrocode}
-% The above results in a Boolean, which now chooses between the following two brace-delimited clauses.
-% If the step size is less than a half-point, then terminate the loop.
-% \begin{macrocode}
- {%
- \true@sw
- }{%
- \@ifdim{\dimen@i<.5\p@}%
- }%
-% \end{macrocode}
-% The above results in a Boolean, which now chooses between the following two brace-delimited clauses.
-% The true-part terminates the loop, otherwise iterate.
-% \begin{macrocode}
- {%
- \false@sw
- }%
- {%
-% \end{macrocode}
-% For the next iteration, the candidate split dimension \cmd\dimen@\ will be one step larger
-% if the height of the left box is less than that of the right box.
-% Otherwise it will be one step smaller.
-% \begin{macrocode}
- \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i
- \true@sw
- }%
- }%
-% \end{macrocode}
-% The loop has terminated.
-% \begin{macrocode}
- \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
-% \end{macrocode}
-% The algorithm has failed to find a satisfactory result if
-% the left column is of non-zero height and the right column is of zero height.
-% \begin{macrocode}
- \@ifdim{\ht\z@=\z@}{%
- \@ifdim{\ht\tw@=\z@}%
- }{%
- \true@sw
- }%
-% \end{macrocode}
-% The \cmd\false@sw\ branch is executed if the algorithm has failed.
-% We restore the original boxes.
-% \begin{macrocode}
- {%
- }{%
- \ltxgrid@info{Unsatifactorily balanced columns: giving up}%
- \setbox\tw@\box#1%
- \setbox\z@ \box#2%
- \global\setbox\footsofar\box\thr@@
- }%
- \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}%
- \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}%
- \set@colht
- \dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}%
- \@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}%
- \ltxgrid@info@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}%
- \setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}%
- \setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}%
- \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
-}%
-% \end{macrocode}
-% Procedure \cmd\remove@depth\ rearranges the given (vertical) box register so that it has zero depth.
-% \begin{macrocode}
-\def\remove@depth#1{%
- \setbox#1\vbox\bgroup
- \unvcopy#1%
- \setbox\z@\vbox\bgroup
- \unvbox#1%
- \setbox\z@\lastbox
- \aftergroup\kern\aftergroup-\expandafter
- \egroup
- \the\dp\z@\relax
- \egroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) Abandon \cs{recover@footins} in favor of \cs{recover@column}}%
-% Procedure \cmd\recover@column\ is a utility to separate a column box into text and footnotes;
-% the former being contributed to the current (vertical) list, the latter appended to the given register, usually \cmd\footsofar.
-%
-% Argument \verb+#1+ is the input: it should be a \cmd\vbox, and it remains unaltered.
-% Argument \verb+#2+ is the box into which to (globally) add the footnotes, usually \cmd\footsofar.
-% Arguments \verb+#3+ and \verb+#4+ are scratch box registers to use in this calculation.
-% As a side effect, \verb+#3+ will be unboxed into whatever vertical mode we are in at the moment (should be a \cmd\vbox).
-% \begin{macrocode}
-\def\recover@column#1#2#3#4{%
- \ltxgrid@info@sw{\class@info{\string\recover@column\string#1\string#2\string#3\string#4}}{}%
- \setbox#4\vbox{\unvcopy#1}%
- \ltxgrid@foot@info@sw{\trace@scroll{\showbox#4}}{}%
- \dimen@\ht#4%
- \ltxgrid@foot@info@sw{\saythe\dimen@}{}%
- \setbox#4\vbox\bgroup
- \unvbox#4\unskip
-% \end{macrocode}
-% We now strip the footnotes from the bottom of this box, adding them to \cmd\footsofar.
-% The method relies on a signal, consisting of a complementary pair of kerns, placed at the bottom of the box by \cmd\@combineinserts.
-% \begin{macrocode}
- \dimen@i\lastkern\unkern\advance\dimen@i\lastkern
- \@ifdim{\dimen@i=\z@}{%
- \dimen@i\lastkern\unkern
- \ltxgrid@foot@info@sw{\saythe\dimen@i}{}%
- \aftergroup\dimen@i
- \expandafter\egroup\the\dimen@i\relax
- }{%
- \egroup
- }%
-% \end{macrocode}
-% Split the column into \verb+#3+ and the footnote into \verb+#4+.
-% Append the footnote to \verb+#2+.
-% \begin{macrocode}
- \@ifdim{\dimen@i<\z@}{%
- \advance\dimen@\dimen@i
- \ltxgrid@foot@info@sw{\saythe\dimen@i\saythe\dimen@}{}%
- \splittopskip\z@skip
- \global\setbox#3\vsplit#4 to\dimen@
- \global\setbox#4\vbox{\unvbox#4}%
- \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
- \global\setbox#2\vbox\bgroup\unvbox#2\vskip\z@skip\unvbox#4\egroup
- }{%
-% \end{macrocode}
-% What if \cmd\dimen@i\ is zero?
-% In that case, \cmd\setbox\#3\cmd\box\#4, and do not touch \cmd\box\#2.
-% \begin{macrocode}
- \setbox#3\box#4%
- \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
- }%
- \unvbox#3%
- \loopwhile{\dimen@\lastskip\@ifdim{\dimen@>\z@}{\unskip\true@sw}{\false@sw}}%
-}%
-\def\recover@column@null#1#2#3#4{%
- \unvcopy#1%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@begindocumenthook}
-% Initialization:
-% we initialize to the page grid named ``one''.
-% If the class decides to initially set type in a different grid, it
-% should execute these same commands, but changing the first to the appropriate procedure.
-%
-% Note that the point where this sequence is executed would be an excellent place to arrange for
-% floats to be committed to the first page of a document.
-% That is, we execute \cmd\do@startpage, which triggers \cmd\do@startcolumn.
-%
-% FIXME: it should be the job of the page grid to determine the procedure to execute at
-% the start of the job. Make this a hook.
-% \begin{macrocode}
-\rvtx@ifformat@geq{2020/10/01}%
- {%
- \AddToHook{begindocument}{%
- \open@column@one\@ne
- \set@colht
- \@floatplacement
- \@dblfloatplacement
- }%
- }{%
- \prepdef\@begindocumenthook{%
- \open@column@one\@ne
- \set@colht
- \@floatplacement
- \@dblfloatplacement
- }%
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Comment: our technique of balancing columns is severely limited, because it cannot properly work
-% with \env{longtable}, which places material at the bottom and top of the column break.
-%
-% The proper way to handle a grid change in the middle of the page is to accumulate all the material for
-% an entire article (or chapter) and then assemble finished pages therefrom. This approach is fundamentally
-% superior for complex layouts: it corresponds to real-world workflows.
-% Such a scheme is an excellent subject for another \LaTeX\ package.
-%
-%
-% \subsection{Patches for the longtable package}%
-%
-% \LaTeX's ``required'' package \classname{longtable} (written by David P. Carlilsle),
-% which is part of /latex/required/tools, is incmpatible with both
-% \LaTeX's ``required'' package \classname{multicol} and with
-% \LaTeX's native \cmd\twocolumn\ capability. There is no essential reason
-% for this incompatability, aside from implementation details, and the
-% \classname{ltxgrid} package gives us the ability to lift them.
-%
-% Only four of \classname{longtable}'s procedures require rewriting:
-% \cmd\longtable,
-% \cmd\endlongtable,
-% \cmd\LT@start, and
-% \cmd\LT@end@hd@ft.
-% The procedure \cmd\switch@longtable\ checks against their expected meanings
-% and, if all is as expected, applies the patches.
-% In the process, we simplify things considerably and also make them more
-% secure.
-%
-% Why does \classname{longtable} need to access the output routine, anyway?
-% What it comes down to, is what happens when a pagebreak falls within a
-% long table. If this happens, we would like to append a row at the bottom of
-% the broken table and add a row at the top of the next page.
-%
-% These things can be accomodated easily by the \classname{ltxgrid} output
-% routine hooks.
-%
-% \begin{macro}{\longtable}
-% \begin{macrocode}
-\def\longtable@longtable{%
- \par
- \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi
- \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi
- \begingroup
- \@ifnextchar[\LT@array{\LT@array[x]}%
-}%
-\def\longtable@new{%
- \par
- \@ifnextchar[\LT@array{\LT@array[x]}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endlongtable}
-% \begin{macrocode}
-\def\endlongtable@longtable{%
- \crcr
- \noalign{%
- \let\LT@entry\LT@entry@chop
- \xdef\LT@save@row{\LT@save@row}}%
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \if@filesw
- {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
- \gdef\expandafter\noexpand
- \csname LT@\romannumeral\c@LT@tables\endcsname
- {\LT@save@row}}}%
- \fi
- \ifx\LT@save@row\LT@@save@row
- \else
- \LT@warn{Column \@width s have changed\MessageBreak
- in table \thetable}%
- \LT@final@warn
- \fi
- \endgraf\penalty -\LT@end@pen
- \endgroup
- \global\@mparbottom\z@
- \pagegoal\vsize
- \endgraf\penalty\z@\addvspace\LTpost
- \ifvoid\footins\else\insert\footins{}\fi
-}%
-% \end{macrocode}
-% \changes{4.1a}{2008/06/29}{Repair error in \cs{endlongtable@new} involving \cs{@ifx}: argument not delimited.}
-% \begin{macrocode}
-\def\endlongtable@new{%
- \crcr
- \noalign{%
- \let\LT@entry\LT@entry@chop
- \xdef\LT@save@row{\LT@save@row}%
- }%
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \@if@sw\if@filesw\fi{%
- {%
- \let\LT@entry\LT@entry@write
- \immediate\write\@auxout{%
- \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname
- {\LT@save@row}%
- }%
- }%
- }{}%
- \@ifx{\LT@save@row\LT@@save@row}{}{%
- \LT@warn{%
- Column \@width s have changed\MessageBreak in table \thetable
- }\LT@final@warn
- }%
- \endgraf
- \nobreak
- \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}%
- \global\@mparbottom\z@
- \endgraf
- \LT@post
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\LT@start}
-% \begin{macrocode}
-\def\LT@start@longtable{%
- \let\LT@start\endgraf
- \endgraf\penalty\z@\vskip\LTpre
- \dimen@\pagetotal
- \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \ht\LT@foot
- \dimen@ii\vfuzz
- \vfuzz\maxdimen
- \setbox\tw@\copy\z@
- \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
- \setbox\tw@\vbox{\unvbox\tw@}%
- \vfuzz\dimen@ii
- \advance\dimen@ \ht
- \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@\dp
- \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@ -\pagegoal
- \ifdim \dimen@>\z@\vfil\break\fi
- \global\@colroom\@colht
- \ifvoid\LT@foot\else
- \advance\vsize-\ht\LT@foot
- \global\advance\@colroom-\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
- \maxdepth\z@
- \fi
- \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi
-% \end{macrocode}
-% At some point before version 4.11, the \cmd\nobreak\ was added.
-% \begin{macrocode}
-\nobreak
-% \end{macrocode}
-%
-% \begin{macrocode}
- \output{\LT@output}%
-}%
-\def\LT@start@new{%
- \let\LT@start\endgraf
- \endgraf
- \markthr@@{}%
- \LT@pre
- \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}%
- \mark@envir{longtable}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\LT@end}
-% \begin{macrocode}
-\def\LT@end@hd@ft@longtable#1{%
- \LT@echunk
- \ifx\LT@start\endgraf
- \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
- \fi
- \setbox#1\box\z@
- \LT@get@widths\LT@bchunk
-}%
-\def\LT@end@hd@ft@new#1{%
- \LT@echunk
- \@ifx{\LT@start\endgraf}{%
- \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
- }%
- \global\setbox#1\box\z@
- \LT@get@widths
- \LT@bchunk
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\LT@array}
-%
-%
-% \begin{macrocode}
-\def\LT@array@longtable[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
- \if l#1%
- \LTleft\z@ \LTright\fill
- \else\if r#1%
- \LTleft\fill \LTright\z@
- \else\if c#1%
- \LTleft\fill \LTright\fill
- \fi\fi\fi
- \let\LT@mcol\multicolumn
- \let\LT@@tabarray\@tabarray
- \let\LT@@hl\hline
- \def\@tabarray{%
- \let\hline\LT@@hl
- \LT@@tabarray}%
- \let\\\LT@tabularcr\let\tabularnewline\\%
- \def\newpage{\noalign{\break}}%
- \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
- \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
- \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
- \@tempdima\ht\strutbox
- \let\@endpbox\LT@endpbox
- \ifx\extrarowheight\@undefined
- \let\@acol\@tabacol
- \let\@classz\@tabclassz \let\@classiv\@tabclassiv
- \def\@startpbox{\vtop\LT@startpbox}%
- \let\@@startpbox\@startpbox
- \let\@@endpbox\@endpbox
- \let\LT@LL@FM@cr\@tabularcr
- \else
- \advance\@tempdima\extrarowheight
- \col@sep\tabcolsep
- \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
- \fi
- \setbox\@arstrutbox\hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
- \let\@sharp##\let\protect\relax
- \begingroup
- \@mkpream{#2}%
- \xdef\LT@bchunk{%
- \global\advance\c@LT@chunks\@ne
- \global\LT@rows\z@\setbox\z@\vbox\bgroup
- \LT@setprevdepth
-% \end{macrocode}
-% At some point before version 4.11, the \cmd\noexpand\ was added.
-% We need not change our own version, because we did it right, back in 1998 (using \cmd\appdef).
-% \begin{macrocode}
- \tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
- \endgroup
- \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
- \LT@make@row
- \m@th\let\par\@empty
- \everycr{}\lineskip\z@\baselineskip\z@
- \LT@bchunk}%
-\def\LT@LR@l{\LTleft\z@ \LTright\fill}%
-\def\LT@LR@r{\LTleft\fill \LTright\z@ }%
-\def\LT@LR@c{\LTleft\fill \LTright\fill}%
-\def\LT@array@new[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
- \table@hook
- \LTleft\fill \LTright\fill
- \csname LT@LR@#1\endcsname
- \let\LT@mcol\multicolumn
- \let\LT@@hl\hline
- \prepdef\@tabarray{\let\hline\LT@@hl}%
- \let\\\LT@tabularcr
- \let\tabularnewline\\%
- \def\newpage{\noalign{\break}}%
- \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
- \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
- \let\hline\LT@hline
- \let\kill\LT@kill
- \let\caption\LT@caption
- \@tempdima\ht\strutbox
- \let\@endpbox\LT@endpbox
- \@ifxundefined\extrarowheight{%
- \let\@acol\@tabacol
- \let\@classz\@tabclassz
- \let\@classiv\@tabclassiv
- \def\@startpbox{\vtop\LT@startpbox}%
- \let\@@startpbox\@startpbox
- \let\@@endpbox\@endpbox
-% \end{macrocode}
-% Because \classname{ltxutil} patches \LaTeX's \cmd\@tabularcr and \cmd\@xtabularcr,
-% we must restore these procedures in the scope of \env{longtable}.
-% Ironically, the patches in \classname{ltxutil} were for the purpose of extending
-% the \env{tabular} environment to prevent pagebreaks with the *-form of \cmd\\,
-% just the same as is being done here. But the two mechanisms conflict.
-% \changes{4.1a}{2008/06/29}{Change \cs{LT@array@new}: restore \cs{@tabularcr} and \cs{@xtabularcr}}
-% \begin{macrocode}
- \let\LT@LL@FM@cr\@tabularcr@LaTeX
- \let\@xtabularcr\@xtabularcr@LaTeX
- }{%
- \advance\@tempdima\extrarowheight
- \col@sep\tabcolsep
- \let\@startpbox\LT@startpbox
-% \end{macrocode}
-% \changes{4.1a}{2008/06/29}{Change \cs{LT@array@new}: set \cs{LT@LL@FM@cr} to \cs{@arraycr@array} instead of \cs{@arraycr}}
-% \begin{macrocode}
- \let\LT@LL@FM@cr\@arraycr@array
- }%
-%
- \let\@acoll\@tabacoll
- \let\@acolr\@tabacolr
- \let\@acol\@tabacol
-%
- \setbox\@arstrutbox\hbox{%
- \vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@
- }%
- \let\@sharp##%
- \let\protect\relax
- \begingroup
- \@mkpream{#2}%
- \@mkpream@relax
- \edef\@preamble{\@preamble}%
- \prepdef\@preamble{%
- \global\advance\c@LT@chunks\@ne
- \global\LT@rows\z@
- \setbox\z@\vbox\bgroup
- \LT@setprevdepth
- \tabskip\LTleft
- \halign to\hsize\bgroup
- \tabskip\z@
- \@arstrut
- }%
- \appdef\@preamble{%
- \tabskip\LTright
- \cr
- }%
- \global\let\LT@bchunk\@preamble
- \endgroup
- \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
- \LT@make@row
- \m@th
- \let\par\@empty
- \everycr{}%
- \lineskip\z@
- \baselineskip\z@
- \LT@bchunk
-}%
-\appdef\table@hook{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\switch@longtable}
-%
-% Here is the switch from standard \classname{longtable} to the new, \classname{ltxgrid}-compatible values.
-%
-% At this point, we extend \env{longtable} with a \env{longtable*} form, which signifies that we want to
-% use the full page width for setting the table.
-% You can think this way: \env{longtable*} is to \env{longtable} as \env{table*} is to \env{table}.
-%
-% \begin{macrocode}
-\def\switch@longtable{%
- \@ifpackageloaded{longtable}{%
- \@ifx{\longtable\longtable@longtable}{%
- \@ifx{\endlongtable\endlongtable@longtable}{%
- \@ifx{\LT@start\LT@start@longtable}{%
- \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{%
- \@ifx{\LT@array\LT@array@longtable}{%
- \true@sw
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- {%
- \class@info{Patching longtable package}%
- }{%
- \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}%
- }%
- \let\longtable\longtable@new
- \let\endlongtable\endlongtable@new
- \let\LT@start\LT@start@new
- \let\LT@end@hd@ft\LT@end@hd@ft@new
- \let\LT@array\LT@array@new
- \newenvironment{longtable*}{%
- \onecolumngrid@push
- \longtable
- }{%
- \endlongtable
- \onecolumngrid@pop
- }%
-% \end{macrocode}
-% Removed obsolete code.
-% \begin{macrocode}
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\LT@pre}
-% \begin{macro}{\LT@bot}
-% \begin{macro}{\LT@top}
-% \begin{macro}{\LT@post}
-% \begin{macro}{\LT@adj}
-% Note that at the end of the longtable environment, we reestablish the \cmd\mark@envir\ of the
-% containing environment. We have left \cmd\curr@envir\ alone, so this will work.
-% \begin{macrocode}
-\def\LT@pre{\penalty\z@\vskip\LTpre}%
-\def\LT@bot{\nobreak\copy\LT@foot\vfil}%
-\def\LT@top{\copy\LT@head\nobreak}%
-\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}%
-\def\LT@adj{%
- \setbox\z@\vbox{\null}\dimen@-\ht\z@
- \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@
- \global\advance\vsize-\dimen@
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{output@init}
-% \begin{macro}{output@prep}
-% \begin{macro}{output@post}
-% \begin{macrocode}
-\def\output@init@longtable{\LT@adj}%
-\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}%
-\def\output@post@longtable{\LT@top}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Patches for index processing}%
-%
-% Another feature that uses the output routine hooks occurs within
-% an index, where one wishes to apply a ``continue head'' when a
-% column breaks within a primary index entry.
-% Some book designs call for the continue head to only be applied
-% at a turnpage break.
-%
-% In any case, it is easy enough for \cmd\output@post@theindex\
-% to do this in conjunction with component marks.
-% Only the bare outlines are shown here.
-%
-% \begin{macro}{\output@init}
-% \begin{macro}{\output@prep}
-% \begin{macro}{\output@post}
-% \begin{macrocode}
-\let\output@init@theindex\@empty
-\let\output@prep@theindex\@empty
-\def\output@post@theindex{%
- \@ifodd\c@page{}{%
- \@ifnum{\pagegrid@cur=\@ne}{%
-% \end{macrocode}
-% We have the leftmost column of a verso page:
-% Insert the current top-level continued head.
-% \begin{macrocode}
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Checking the auxiliary file}%
-%
-% We relegate the checking of the auxiliary file to the output routine.
-% This task must wait until the last page is shipped out, because otherwise
-% the stream might get closed before the last page is shipped out.
-% Obviously, we must use \cmd\do@output@MVL\ for the job.
-%
-% \begin{macro}{\check@aux}
-% \begin{macrocode}
-\def\check@aux{\do@output@MVL{\do@check@aux}}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{Dealing with stuck floats and stalled float dequeueing}%
-%
-% \LaTeX's float placement mechanism is fundamentally flawed, as evidenced by
-% its warning message ``too many unprocessed floats'', which users understandably find frustrating.
-% The \classname{ltxgrid} package provides tools for ameliorating the situation somewhat.
-%
-% Two cases require detection and rectification:
-% \begin{enumerate}
-% \item
-% A float is ``stuck'' in the \cmd\@deferlist: for whatever reason, the float fails to be committed,
-% even at the start of a fresh page.
-% Once this condition prevails, following floats can never be committed, subsequently all of \LaTeX's
-% float registers are used up.
-%
-% If this condition is detected, we reconsider float dequeueing under permissive (\cmd\clearpage-style) processing.
-%
-% \item
-% The \cmd\@freelist\ is exhausted:
-% a large concentration of floats, say, uses up all of \LaTeX's float registers all at once.
-% This condition commonly occurs when the user collects floats at the end of the document, for some reason.
-%
-% When a float is encountered, \LaTeX\ uses a float register (allocated from a pool of free registers) to contain it until it can be placed.
-% However, no further action is taken until the pagebuilder is visited, so floats can accumulate.
-% Also, even after the pagebuilder is visited, deferred floats can accumulate, and these are not committed
-% until a column (or page) of text is completed.
-%
-% Once the last free float register is used, action should be taken that will commit some of the deferred floats,
-% even if this might require ending the page right where we are (resulting in a short page).
-%
-% Perhaps, committed floats should be stored using some mechanism other than a list, as is currently done.
-% A feasible alternative storage method would be to use a \cmd\box\ register in place of
-% \cmd\@toplist,
-% \cmd\@botlist, and
-% \cmd\@dbltoplist.
-% This is probably just fine, since such committed floats are not reconsidered (I think).
-%
-% \end{enumerate}
-%
-% The emergency processing implemented here immediately ends the current page and begins to output float pages under (\cmd\clearpage-style) rules.
-% It proceeds until all deferred floats have been flushed.
-%
-% Users should expect non-optimal page makeup under these circumstances.
-%
-% Note that there is a weakness in our approach that we have not attempted to repair: if floats are being
-% added as part of a paragraph, we will not be able to take these remedial steps until the paragraph ends.
-% This means that the approach implemented here cannot fix all \LaTeX\ documents. Users can still construct
-% documents that exhaust \LaTeX's pool of float registers!
-%
-% \begin{macro}{\check@deferlist@stuck}
-% \begin{macro}{\@outputpage@tail}
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@tail} tailpatches \cs{@outputpage}}%
-% We detect the case where, at the start of a fresh page, there are deferred floats, but none are
-% committed. We memorize the \cmd\@deferlist\ at \cmd\shipout\ time, then examine it at the point where
-% our efforts to commit floats to the new page are complete.
-% If it has not changed, the first float must be stuck, and we
-% attempt to fix things via \cmd\force@deferlist@stuck.
-%
-% This simple approach is comp[letely effective in for typical documents.
-%
-% Note that we try to avoid an infinite loop by examining the value of \cmd\clearpage@sw:
-% if we come here with that boolean true, we are in a loop.
-% \begin{macrocode}
-\def\check@deferlist@stuck#1{%
- \@ifx{\@deferlist@postshipout\@empty}{}{%
- \@ifx{\@deferlist@postshipout\@deferlist}{%
- \@fltstk
- \clearpage@sw{%
- \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}%
- }{%
- \force@deferlist@stuck#1%
- }%
- }{%
-% \end{macrocode}
-% We have successfully committed float(s)
-% \begin{macrocode}
- }%
- \global\let\@deferlist@postshipout\@empty
- }%
-}%
-\def\@fltstk{%
- \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}%
-}%
-\appdef\@outputpage@tail{%
- \global\let\@deferlist@postshipout\@deferlist
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@next}
-% \begin{macro}{\@xnext}
-% We rewrite the \LaTeX\ kernel macros that dequeue float registers from, e.g., \cmd\@deferlist,
-% providing a test for the condition where the pool of free registers is about to underflow.
-%
-% In this case, we attempt to fix things via \cmd\force@deferlist@empty.
-% \begin{macrocode}
-\def\@next#1#2{%
- \@ifx{#2\@empty}{\false@sw}{%
- \expandafter\@xnext#2\@@#1#2%
- \true@sw
- }%
-}%
-\def\@xnext\@elt#1#2\@@#3#4{%
- \def#3{#1}%
- \gdef#4{#2}%
- \def\@tempa{#4}\def\@tempb{\@freelist}%
- \@ifx{\@tempa\@tempb}{%
- \@ifx{#4\@empty}{%
- \force@deferlist@empty%{Float register pool exhausted}%
- }{}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\force@deferlist@stuck}
-% \begin{macro}{\force@deferlist@empty}
-% \begin{macro}{\force@deferlist@sw}
-% \begin{macro}{\do@forcecolumn@pen}
-% \begin{macro}{\do@forcecolumn}
-% The procedure \cmd\force@deferlist@empty\ is an attempt to rectify a situation where \LaTeX's float placement mechanism
-% may fail (``too many unprocessed floats'').
-%
-% We put down interrupts that call for the float placement to be redone, but under permissive conditions,
-% just the same as if \cmd\clearpage\ had been invoked.
-%
-% Note that the attempt to rectify the error is contingent on the setting of \cmd\force@deferlist@sw,
-% default false. A document class using this package that wishes to enable this error recovery mechanism should
-% set this boolean to true.
-%
-% The interrupt \cmd\do@forcecolumn@pen, which invokes the procedure \cmd\do@forcecolumn,
-% does the same as \cmd\do@startcolumn, except under permissive conditions:
-% we are trying to empty out the float registers completely.
-%
-% In order to properly with the case where there is material in \cmd\box\cmd\@cclv,
-% \cmd\@toplist, \cmd\@botlist, \cmd\@dbltoplist, etc,
-% we do what amounts to \cmd\newpage\ to get things rolling.
-%
-% In \cmd\force@deferlist@stuck, we take advantage of already being in the output routine:
-% simply reinvoke \cmd\do@startcolumn\ under permissive conditions.
-%
-% \begin{macrocode}
-\def\force@deferlist@stuck#1{%
- \force@deferlist@sw{%
- \@booleantrue\clearpage@sw
- \@booleantrue\forcefloats@sw
- #1%
- }{%
- }%
-}%
-\def\force@deferlist@empty{%
- \force@deferlist@sw{%
- \penalty-\pagebreak@pen
- \protect@penalty\do@forcecolumn@pen
- }{%
- }%
-}%
-\@booleanfalse\force@deferlist@sw
-\mathchardef\do@forcecolumn@pen=10009
-\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}%
-\def\do@forcecolumn{%
- \@booleantrue\clearpage@sw
- \@booleantrue\forcefloats@sw
-% \end{macrocode}
-% \begin{verbatim}
-%\unvbox\@cclv
-%\vfil
-%\penalty-\pagebreak@pen
-% \end{verbatim}
-% \begin{macrocode}
- \do@startcolumn
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% A more thorough revision of \LaTeX's float placement mechanism would involve substituting a single \cmd\box\
-% register for the \cmd\@deferlist. This way, \LaTeX's ability to have latent floats would be limited by
-% box memory alone.
-%
-% Because only the \cmd\box\ and \cmd\count\ components of the float box register are actually used by \LaTeX,
-% our scheme can be accomplished if we can find a way to encode the information held in the \cmd\count\ component.
-%
-% A first-in, first-out mechanism exists, wherein a box-penalty pair is dequeued by \cmd\lastbox\cmd\lastpenalty\cmd\unpenalty\ and enqueued
-% by \cmd\setbox\cmd\foo=\cmd\hbox\cmd\bgroup\cmd\penalty\cmd\floatpenalty\cmd\box\cmd\floatbox\cmd\unhbox\cmd\foo\cmd\egroup.
-%
-% Note that this scheme is made possible by our change to \LaTeX's float placement mechanism,
-% wherein we consolidated the two \cmd\@deferlist s into one.
-%
-% \section{Support for legacy \LaTeX\ commands}
-%
-% We provide support for the \cmd\enlargethispage\ command.
-%
-% Note: using a command of this sort does not automatically enlarge both pages of a spread, which would be the convention in page composition.
-%
-% Timing Note: In a multicolumn page grid, the user should issue the \cmd\enlargethispage\ command
-% while the first column of the page is being typeset.
-% We provide a helpful message if the timing is wrong.
-%
-% This code can serve as a model for introducing commands that need to execute within the safety of the output routine.
-% We ensure that the arguments are fully expanded, then execute \cmd\do@output@MVL\ to cause an output procedure,
-% \cmd\@@enlargethispage, to execute. When it does execute, the MVL will be exposed.
-%
-% The \cmd\@@enlargethispage\ procedure simply adjusts the vertical dimensions of the page.
-% The adjustment will persist until the column is committed, at which point the page dimension
-% will revert to its standard value.
-% \begin{macrocode}
-\def\enlargethispage{%
- \@ifstar{%
- \@enlargethispage{}%
- }{%
- \@enlargethispage{}%
- }%
-}%
-\def\@enlargethispage#1#2{%
- \begingroup
- \dimen@#2\relax
- \edef\@tempa{#1}%
- \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}%
- \expandafter\do@output@MVL\expandafter{\@tempa}%
- \endgroup
-}%
-\def\@@enlargethispage#1#2{%
- \def\@tempa{one}%
- \@ifx{\thepagegrid\@tempa}{%
- \true@sw
- }{%
- \def\@tempa{mlt}%
- \@ifx{\thepagegrid\@tempa}{%
- \@ifnum{\pagegrid@cur=\@ne}{%
-% \end{macrocode}
-% OK to adjust this page
-% \begin{macrocode}
- \gdef\enlarge@colroom{#2}%
- \true@sw
- }{%
-% \end{macrocode}
-% Can only adjust this column; give up
-% \begin{macrocode}
- \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}%
- \false@sw
- }%
- }{%
-% \end{macrocode}
-% Unknown page grid
-% \begin{macrocode}
- \ltxgrid@warn{Unable to enlarge a page of this kind.}%
- \false@sw
- }%
- }%
- {%
- \class@info{Enlarging page \thepage\space by #2}%
- \global\advance\@colroom#2\relax
- \set@vsize
- }{%
-% \end{macrocode}
-% Could not adjust this page
-% \begin{macrocode}
- }%
-}%
-\let\enlarge@colroom\@empty
-% \end{macrocode}
-% The \cmd\@kludgeins\ insert register is now unneeded.
-% Ensure that packages using this mechanism break (preferrable to subtle bugs).
-% \begin{macrocode}
-\let\@kludgeins\@undefined
-% \end{macrocode}
-%
-% \subsubsection{Building the page for shipout}
-%
-% \begin{macro}{\@outputpage@head}
-% We set \cmd\@outputpage@head\ to make the \cmd\@outputbox\ be of fixed height.
-% \changes{4.1b}{2008/08/04}{Procedure \cs{@outputpage@head} headpatches \cs{@outputpage}}%
-% \begin{macrocode}
-\@booleantrue\textheight@sw
-\prepdef\@outputpage@head{%
- \textheight@sw{%
- \count@\vbadness\vbadness\@M
- \dimen@\vfuzz\vfuzz\maxdimen
- \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
- \vfuzz\dimen@
- \vbadness\count@
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@outputpage@head}
-% For compatibility with David Carlisle's \classname{lscape} package, we need to allow the
-% \cmd\LS@rot\ procedure to mung \cmd\@outputbox.
-%
-% Implementation note: the \classname{lscape} package effectively tailpatches two \LaTeX\ internals to accomplish its purpose,
-% an approach that is not robust. It is more robust to headpatch \cmd\@outputpage, which is what we do here.
-% \changes{4.1o}{2010/02/02}{(AO, 576) Allow \classname{lscape} to act on \cs{@outputbox} at the right time}%
-% \begin{macrocode}
-\appdef\@outputpage@head{%
- \@ifx{\LS@rot\@undefined}{}{\LS@rot}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Warning message}
-%
-% \begin{macro}{\ltxgrid@info}
-% \begin{macro}{\ltxgrid@warn}
-% Something has happened that the user might be interested in.
-% Print a message to the log, but only if the user selected the verbose option.
-% \begin{macrocode}
-\def\ltxgrid@info{%
- \ltxgrid@info@sw{\class@info}{\@gobble}%
-}%
-\@booleanfalse\ltxgrid@info@sw
-\def\ltxgrid@warn{%
- \ltxgrid@warn@sw{\class@warn}{\@gobble}%
-}%
-\@booleantrue\ltxgrid@warn@sw
-\@booleanfalse\ltxgrid@foot@info@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \section{Line-wise processing}%
-% Sometimes we wish to process each line of type that will be placed into the galley,
-% for example, applying line numbering to a document.
-% To accomplish the task, we have to force a visit to the output routine after each such line, whereupon
-% we can process it accordingly (in the case of line numbering, we could do as \filename{lineno.sty} and
-% append an appropriately formed box to the MVL).
-%
-% In implementing such a scheme, we will have to instantiate interrupts for the following cases:
-% \begin{description}
-%
-% \item[\cmd\interlinepenalty\ and friends] These include \cmd\clubpenalty, \cmd\widowpenalty, \cmd\displaywidowpenalty, and \cmd\brokenpenalty.
-%
-%
-% \item[Display math penalties] Includes \cmd\predisplaypenalty, \cmd\postdisplaypenalty, and \cmd\interdisplaylinepenalty.
-%
-%
-% \item[\cs{par}] The penalty following the last line of the paragraph.
-%
-%
-% \item[\cmd\vadjust] A trap for any \cmd\vadjust\ command that falls in the paragraph.
-%
-% \end{description}
-%
-% \begin{macro}{\def@next@handler}
-% \begin{macro}{\def@line@handler}
-% Utility procedures \cmd\def@next@handler\ and \cmd\def@line@handler\ help in the creation of
-% interrupt handlers.
-%
-% \cmd\def@next@handler\ increments the scratch count register (argument 1),
-% using this value to \cmd\mathchardef\ its second argument
-% as the negative of the flag value to be used as a penalty for exciting the interrupt (argument 3).
-% As a byproduct, it leaves the given scratch counter incremented.
-% \begin{macrocode}
-\def\def@next@handler#1#2#3{%
- \advance#1\@ne\mathchardef#2\the#1%
- \expandafter\def\csname output@-\the#1\endcsname{#3}%
-% \end{macrocode}
-% The following line is for diagnostic purposes.
-% \begin{verbatim}
-% \typeout{\string#2(\expandafter\string\csname output@\the#1\endcsname:\expandafter\meaning\csname output@\the#1\endcsname)}%
-% \end{verbatim}
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \cmd\def@line@handler\ uses \cmd\int@parpenalty\ as a base.
-% The interrupt is the sum of that base with the first argument,
-% and the handler is the second argument.
-% \begin{macrocode}
-\def\def@line@handler#1#2{%
- \begingroup
- \@tempcnta\int@parpenalty
- \advance\@tempcnta-#1%
-% \end{macrocode}
-% The following line is for diagnostic purposes.
-% \begin{verbatim}
-% \typeout{Defining: \expandafter\string\csname output@\the\linenopenalty\endcsname}%
-% \end{verbatim}
-% \begin{macrocode}
- \aftergroup\def
- \expandafter\aftergroup\csname output@-\the\@tempcnta\endcsname
- \endgroup{#2}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\int@parpenalty}
-% \begin{macro}{\@handle@line@ltx}
-% \begin{macro}{\@@handle@line@ltx}
-% We first set \cmd\int@parpenalty\ to our chosen base value${}\le -11012$.
-% We then define all the handlers for lines within a paragraph, of which there are 12 different cases.
-% \begin{macrocode}
-\mathchardef\int@parpenalty11012
-\def@line@handler\z@{\@handle@line@ltx{}{}{}}%
-\def@line@handler\@ne{\@handle@line@ltx{}{}{\brokenpenalty@ltx}}%
-\def@line@handler\tw@{\@handle@line@ltx{}{\clubpenalty@ltx}{}}%
-\def@line@handler\thr@@{\@handle@line@ltx{\clubpenalty@ltx}{}{\brokenpenalty@ltx}}%
-\def@line@handler\f@ur{\@handle@line@ltx{\widowpenalty@ltx}{}{}}%
-\def@line@handler{5}{\@handle@line@ltx{\widowpenalty@ltx}{}{\brokenpenalty@ltx}}%
-\def@line@handler{6}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{}}%
-\def@line@handler{7}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
-\def@line@handler{8}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{}}%
-\def@line@handler{9}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{\brokenpenalty@ltx}}%
-\def@line@handler{10}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{}}%
-\def@line@handler{11}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
-% \end{macrocode}
-%
-% The default handler for lines within a paragraph simply
-% restores the value of the \cmd\penalty\ to the normal value.
-% If something more useful needs to be done, we can change the definition of \cmd\@@handle@line@ltx.
-% \begin{macrocode}
-\def\@handle@line@ltx#1#2#3{%
- \@@handle@line@ltx
- \@tempcnta\lastpenalty
- \@tempcntb\interlinepenalty@ltx\relax
- \@if@empty{#1}{}{\advance\@tempcntb#1\relax}%
- \@if@empty{#2}{}{\advance\@tempcntb#2\relax}%
- \@if@empty{#3}{}{\advance\@tempcntb#3\relax}%
- \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
-}%
-\let\@@handle@line@ltx\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\int@postparpenalty}
-% \begin{macro}{\int@vadjustpenalty}
-% \begin{macro}{\int@whatsitpenalty}
-% \begin{macro}{\int@predisplaypenalty}
-% \begin{macro}{\int@interdisplaylinepenalty}
-% \begin{macro}{\int@postdisplaypenalty}
-% \begin{macro}{\@handle@display@ltx}
-% \begin{macro}{\@@handle@display@ltx}
-% \begin{macro}{\handle@par@ltx}
-% We herewith define all the handlers for cases relating to display math:
-% last line before a display math,
-% last line of a display math, and a line within a display math.
-% We also handle the last line of a paragraph, a whatsit node, and a \cmd\vadjust.
-% \begin{macrocode}
-\@tempcnta\int@parpenalty
-\def@next@handler\@tempcnta\int@postparpenalty{\reset@queues@ltx\handle@par@ltx}%
-\def@next@handler\@tempcnta\int@vadjustpenalty{\handle@vadjust@ltx}%
-\def@next@handler\@tempcnta\int@whatsitpenalty{\handle@whatsit@ltx}%
-\def@next@handler\@tempcnta\int@predisplaypenalty{\reset@queues@ltx\@handle@display@ltx{\predisplaypenalty@ltx}}%
-\def@next@handler\@tempcnta\int@interdisplaylinepenalty{\@handle@display@ltx{\interdisplaylinepenalty@ltx}}%
-\def@next@handler\@tempcnta\int@postdisplaypenalty{\@handle@display@ltx{\postdisplaypenalty@ltx}}%
-% \end{macrocode}
-% The default handler for display math lines simply
-% restores the value of the \cmd\penalty\ to the normal value.
-% If something more useful needs to be done, we can change the definition of \cmd\@@handle@display@ltx.
-% \begin{macrocode}
-\def\@handle@display@ltx#1{%
- \@@handle@display@ltx
- \@tempcnta\lastpenalty
- \@tempcntb#1%
- \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
-}%
-\let\@@handle@display@ltx\@empty
-% \end{macrocode}
-%
-% We provide stub definitions for the handlers for the last line of a paragraph, a \cmd\vadjust, and a whatsit node (e.g., \cmd\write, \cmd\special).
-% There is no canonical penalty for such cases.
-% \begin{macrocode}
-\def\handle@par@ltx{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% Note that a whatsit needs to be handled differently from a \cmd\vadjust:
-% a whatsit node does not affect the (crucial) depth of \cmd\box\cmd\@cclv, while the more
-% general \cmd\vadjust\ may cause any kind of vertical mode material to be interposed just below the line
-% we are trying to trap, in particular \cmd\vskip s and \cmd\penalty s.
-%
-% \begin{macro}{\set@linepenalties}
-% \begin{macro}{\restore@linepenalties}
-% \begin{macro}{\set@displaypenalties}
-% Now we define utility procedures that set up for a paragraph to be broken into lines,
-% restoring the penalties afterwards.
-%
-% Utility procedure \cmd\set@linepenalties\ systematically sets the penalties of paragraph breaking
-% to flag values, meanwhile storing away the normal values for access by the output routine.
-% \begin{macrocode}
-\def\set@linepenalties{%
- \expandafter\def\expandafter\interlinepenalty@ltx\expandafter{\the\interlinepenalty}%
- \interlinepenalty-\int@parpenalty
- \expandafter\def\expandafter\brokenpenalty@ltx\expandafter{\the\brokenpenalty}%
- \brokenpenalty\@ne
- \expandafter\def\expandafter\clubpenalty@ltx\expandafter{\the\clubpenalty}%
- \clubpenalty\tw@
- \expandafter\def\expandafter\widowpenalty@ltx\expandafter{\the\widowpenalty}%
- \widowpenalty\f@ur
- \expandafter\def\expandafter\displaywidowpenalty@ltx\expandafter{\the\displaywidowpenalty}%
- \displaywidowpenalty8\relax
-}%
-% \end{macrocode}
-%
-% Utility procedure \cmd\restore@linepenalties\ restores the values of the penalty parameters that were
-% modified by \cmd\set@linepenalties.
-% \begin{macrocode}
-\def\restore@linepenalties{%
- \interlinepenalty\interlinepenalty@ltx
- \brokenpenalty\brokenpenalty@ltx
- \clubpenalty\clubpenalty@ltx
- \widowpenalty\widowpenalty@ltx
- \displaywidowpenalty\displaywidowpenalty@ltx
- \relax
-}%
-% \end{macrocode}
-%
-% In the following, the first argument should be a boolean (either \cmd\true@sw\ or \cmd\false@sw).
-% \begin{macrocode}
-\def\set@displaypenalties#1{%
- \expandafter\def\expandafter\predisplaypenalty@ltx\expandafter{\the\predisplaypenalty}%
- \expandafter\def\expandafter\interdisplaylinepenalty@ltx\expandafter{\the\interdisplaylinepenalty}%
- \expandafter\def\expandafter\postdisplaypenalty@ltx\expandafter{\the\postdisplaypenalty}%
- \@ifhmode{\predisplaypenalty-\int@predisplaypenalty\relax}{}%
- #1{\interdisplaylinepenalty-\int@interdisplaylinepenalty\relax}{}%
- #1{\postdisplaypenalty-\int@postdisplaypenalty\relax}{}%
-}%
-% \end{macrocode}
-% We provide no procedure to restore the respective penalties, because they are altered within a group:
-% \TeX 's context stack will automatically restore things.
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\enqueue@whatsit@ltx}%
-% \begin{macro}{\handle@whatsit@ltx}%
-% \begin{macro}{\do@whatsit}%
-% \begin{macro}{\@g@pop@ltx}%
-% Here is a facility for dealing with whatsit nodes while we are trapping paragraph lines.
-% We simply enqueue a macro that will create the desired whatsit node, dequeueing it in the output routine.
-% \begin{macrocode}
-\def\enqueue@whatsit@ltx#1{%
- \gappdef\g@whatsit@queue{{#1}}%
- \vadjust{\penalty-\int@whatsitpenalty}%
-}%
-\def\handle@whatsit@ltx{%
- \unvbox\@cclv
- \g@pop@ltx\g@whatsit@queue\@tempa
- \expandafter\do@whatsit\expandafter{\@tempa}%
-}%
-\def\do@whatsit#1{}%
-\def\g@pop@ltx#1#2{%
- \expandafter\@g@pop@ltx#1{}{}\@@#1#2%
-}%
-\def\@g@pop@ltx#1#2\@@#3#4{%
- \gdef#3{#2}%
- \def#4{#1}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\vspace}%
-% \begin{macro}{\pagebreak}%
-% \begin{macro}{\nopagebreak}%
-% \begin{macro}{\\}%
-% \begin{macro}{\@arrayparboxrestore}%
-% We wish to prevent \filename{lineno.sty} from patching \cmd\vspace\ and \cmd\pagebreak,
-% because that package does it through global assignments, which is prone to failure.
-%
-% We also wish to prevent that package from patching \cmd\@arrayparboxrestore, because
-% it prevents us from \cmd\unvbox ing vertical mode material into the MVL and numbering those
-% lines.
-%
-% We start by retaining the original definitions of these commands, so we can restore them
-% if \filename{lineno.sty} does get loaded.
-% \begin{macrocode}
-\let\vspace@ltx\vspace
-\let\pagebreak@ltx\pagebreak
-\let\nopagebreak@ltx\nopagebreak
-\let\endline@ltx\\
-\let\@arrayparboxrestore@ltx\@arrayparboxrestore
-% \end{macrocode}
-%
-% Next, we provide for line-wise processing by patching the procedures associated with these same three commands.
-%
-% Depending on the running version of \LaTeX, these commands use \cs{vskip} (before 2020-10-01), or
-% \cs{@vspace@calcify} to add \textsf{calc}-like support in the kernel. To avoid duplicating the tests,
-% define a macro \cs{@tempa} that takes the right form of the primitive spacing command and defines \LaTeX's
-% spacing macros accordingly.
-% \begin{macrocode}
-\def\@tempa#1{%
-% \end{macrocode}
-%
-% There are exactly four core \LaTeX\ procedures that use \cmd\vadjust\ to insert vertical mode material
-% into the main vertical list: \cmd\vspace, \cmd\pagebreak, \cmd\nopagebreak, and \cmd\\.
-% Other commands may use \cmd\vadjust, but they are inserting an interrupt (via a penalty${}<10000$),
-% and such a thing does not mask the depth of \cmd\box\cmd\@cclv, hence is permissible.
-%
-% In each case, we replace the core \LaTeX\ procedure with one that itself replaces \cmd\vadjust\ with
-% \cmd\ex@vadjust@ltx. The meaning of this procedure can be left as \cmd\vadjust, or it can be changed to
-% one that accomplishes the equivalent without masking the depth of \cmd\box\cmd\@cclv.
-%
-% The first procedure is \cmd\@vspace, here shown in original form and in the patched alternative form.
-% This procedure and \cmd\@vspacer\ implement the \cmd\vspace\ command.
-%
-% \begin{macrocode}
-\def\@vspace@org ##1{%
- \ifvmode
- #1% \vskip #1
- \vskip\z@skip
- \else
- \@bsphack
- \vadjust{\@restorepar
- #1% \vskip #1
- \vskip\z@skip
- }%
- \@esphack
- \fi
-}%
-\def\@vspace@ltx##1{%
- \@ifvmode{%
- #1% \vskip #1
- \vskip\z@skip
- }{%
- \@bsphack
- \ex@vadjust@ltx{%
- \@restorepar
- \nobreak
- #1% \vskip #1
- \vskip\z@skip
- }%
- \@esphack
- }%
-}%
-% \end{macrocode}
-%
-% The second procedure is \cmd\@vspacer.
-% \begin{macrocode}
-\def\@vspacer@org##1{%
- \ifvmode
- \dimen@\prevdepth
- \hrule \@height\z@
- \nobreak
- #1%\vskip #1
- \vskip\z@skip
- \prevdepth\dimen@
- \else
- \@bsphack
- \vadjust{\@restorepar
- \hrule \@height\z@
- \nobreak
- #1%\vskip #1
- \vskip\z@skip}%
- \@esphack
-\fi
-}%
-\def\@vspacer@ltx##1{%
- \@ifvmode{%
- \dimen@\prevdepth
- \hrule\@height\z@
- \nobreak
- #1%\vskip#1
- \vskip\z@skip
- \prevdepth\dimen@
- }{%
- \@bsphack
- \ex@vadjust@ltx{%
- \@restorepar
- \hrule\@height\z@
- \nobreak
- #1%\vskip#1
- \vskip\z@skip
- }%
- \@esphack
- }%
-}%
-% \end{macrocode}
-%
-% Now define the macros above conditionally depending on the \LaTeX version.
-% \begin{macrocode}
-}
-\rvtx@ifformat@geq{2020/10/01}%
- {\@tempa{\@vspace@calcify{#1}}}%
- {\@tempa{\vskip #1 }}%
-% \end{macrocode}
-%
-% The procedure \cmd\@no@pgbk\ implements both \cmd\pagebreak\ and \cmd\nopagebreak.
-% \begin{macrocode}
-\def\@no@pgbk@org #1[#2]{%
- \ifvmode
- \penalty #1\@getpen{#2}%
- \else
- \@bsphack
- \vadjust{\penalty #1\@getpen{#2}}%
- \@esphack
- \fi
-}%
-\def\@no@pgbk@ltx#1[#2]{%
- \@ifvmode{%
- \penalty#1\@getpen{#2}%
- }{%
- \@bsphack
- \ex@vadjust@ltx{%
- \penalty#1\@getpen{#2}%
- }%
- \@esphack
- }%
-}%
-% \end{macrocode}
-%
-% The command to end a line of type, \cmd\\, is defined via \cmd\DeclareRobustCommand,
-% so we must proceed carefully:
-% A procedure is defined whose \cmd\long\cmd\csname\ is contructed via the incantation:
-% \cmd\csname\cmd\expandafter\cmd\@gobble\cmd\string\cmd\\ \cmd\endcsname.
-% Note the non-trivial space character after the \cmd\\: it is incorporated into
-% the \cmd\csname.
-%
-% Here is the original core \LaTeX\ definition for
-% the procedure involved, along with our revised version.
-% \changes{2020/09/30}{4.2d}{Conditionally use \cs{protected} or \cs{long} to track \LaTeX{} changes.}
-% \begin{macrocode}
-\rvtx@ifformat@geq{2020/02/02}%
-{\protected}{\long}\def\end@line@org{%
- \let\reserved@e\relax
- \let\reserved@f\relax
- \@ifstar{%
- \let\reserved@e\vadjust
- \let\reserved@f\nobreak
- \@xnewline
- }%
- \@xnewline
-}%
-\rvtx@ifformat@geq{2020/02/02}%
-{\protected}{\long}\def\end@line@ltx{%
- \let\reserved@e\relax
- \let\reserved@f\relax
- \@ifstar{%
- \let\reserved@e\ex@vadjust@ltx
- \let\reserved@f\nobreak
- \@xnewline
- }{%
- \@xnewline
- }%
-}%
-% \end{macrocode}
-% An additional procedure requiring patching has the following original core \LaTeX\
-% definition; we modify it correspondingly.
-% \begin{macrocode}
-\def\@tempa#1{%
- \def\@newline@org[##1]{%
- \let\reserved@e\vadjust
- \@gnewline{#1}% \vskip#1
- }%
- \def\@newline@ltx[##1]{%
- \let\reserved@e\ex@vadjust@ltx
- \@gnewline{#1}% \vskip#1
- }%
-}
-\rvtx@ifformat@geq{2020/10/01}%
- {\@tempa{\@vspace@calcify{#1}}}%
- {\@tempa{\vskip #1}}%
-% \end{macrocode}
-% We now install our patches.
-% If some package overrides these macros, we will detect and complain.
-%
-% \begin{macrocode}
- \@ifx{\@vspace\@vspace@org}{%
- \@ifx{\@vspacer\@vspacer@org}{%
- \@ifx{\@no@pgbk\@no@pgbk@org}{%
- \@ifx{\@newline\@newline@org}{%
- \expandafter\@ifx\expandafter{%
- \csname\rvtx@ifformat@geq{2020/02/02}%
- {\expandafter\@gobble\string\\}%
- {\expandafter\@gobble\string\\ }\endcsname
- \end@line@org
- }{%
- \true@sw
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- {%
- \class@info{Overriding \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\ }%
- \let\@normalcr\end@line@ltx
- \expandafter\let
- \csname\rvtx@ifformat@geq{2020/02/02}%
- {\expandafter\@gobble\string\\}%
- {\expandafter\@gobble\string\\ }\endcsname\@normalcr
- \let\@newline\@newline@ltx
- \let\@vspace\@vspace@ltx
- \let\@vspacer\@vspacer@ltx
- \let\@no@pgbk\@no@pgbk@ltx
- }{%
- \class@warn{%
- Failed to recognize \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\;
- no patches applied. Please get a more up-to-date class,
- }%
- }%
-% \end{macrocode}
-% Note that we have assigned the same meaning to \cmd\@normalcr, which is necessary to \LaTeX.
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ex@vadjust@ltx}
-% \begin{macro}{\enqueue@vadjust@ltx}
-% \begin{macro}{\handle@vadjust@ltx}
-% \begin{macro}{\g@vadjust@line}
-% \begin{macro}{\reset@queues@ltx}
-% Here we give the default definition for \cmd\ex@vadjust@ltx\ along with
-% the definitions for the alternative version and its the associated handler.
-% \begin{macrocode}
-\let\ex@vadjust@ltx\vadjust
-\def\enqueue@vadjust@ltx#1{%
- \gappdef\g@vadjust@queue{{#1}}%
- \vadjust{\penalty-\int@vadjustpenalty}%
-}%
-\def\handle@vadjust@ltx{%
- \unvbox\@cclv
- \g@pop@ltx\g@vadjust@queue\@tempa
- \expandafter\gappdef\expandafter\g@vadjust@line\expandafter{\@tempa}%
-}%
-\let\g@vadjust@line\@empty
-% \end{macrocode}
-% Procedure \cmd\reset@queues@ltx\ resets the whatsit queue and the \cmd\vadjust\ queues
-% to their empty state. This should be done whenever we leave horizontal mode and
-% complete the processing of these queues: upon executing, effectively, primitive \cmd\par\
-% or interrupting a paragraph with display math.
-% \begin{macrocode}
-\def\reset@queues@ltx{%
- \global\let\g@whatsit@queue\@empty
- \global\let\g@vadjust@queue\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \section{Patching the lineno.sty package}
-%
-% \filename{lineno.sty} is a \LaTeX\ package that applies line numbering to a document.
-% The basic method is to give \cmd\interlinepenalty\ and like penalties such a value as
-% to force a visit to the output routine, where the line of type is given its number.
-% In order to properly measure the depth of \cmd\box\cmd\@cclv, it defers \cmd\vadjust\
-% commands that may insert \cmd\vskip\ or \cmd\penalty\ nodes.
-%
-% The implementation of that package, however, manipulates \cmd\holdinginserts\ in a dangerous
-% way: outside the safety of the output routine. It also alters the meaning of \cmd\vadjust\
-% using global assignments. We patch its code to avoid these problems. The \filename{ltxgrid}
-% package already has the needed mechanisms in place to do these jobs correctly.
-%
-% The methods we use can accomodate any values of penalties like \cmd\clubpenalty, etc:
-% we do not make assumptions about the range of values these penalty parameters could take.
-%
-%
-% \begin{macro}{\linenomathWithnumbers}
-% \begin{macro}{\linenomathNonumbers}
-% \begin{macro}{\endlinenomath}
-% \begin{macro}{\linenumberpar}
-% Here are the definitions of procedures in \filename{lineno.sty}
-% that alter \cmd\holdinginserts. They are current as of version v4.41, 2005/11/02.
-% We patch them to avoid doing this: in ltxgrid-based classes like REVTeX, the output routine properly manages \cmd\holdinginserts, so packages should not attempt to do so.
-% Also, we will want \cmd\linenumberpar\ to set \cmd\interlinepenaly\ to dispatch to \cmd\MakeLineNo.
-%
-% \begin{macrocode}
-\newcommand\linenomathWithnumbers@LN{%
- \ifLineNumbers
- \ifnum\interlinepenalty>-\linenopenaltypar
- \global\holdinginserts\thr@@
- \advance\interlinepenalty \linenopenalty
- \ifhmode
- \advance\predisplaypenalty \linenopenalty
- \fi
- \advance\postdisplaypenalty \linenopenalty
- \advance\interdisplaylinepenalty \linenopenalty
- \fi
- \fi
- \ignorespaces
-}%
-\newcommand\linenomathNonumbers@LN{%
- \ifLineNumbers
- \ifnum\interlinepenalty>-\linenopenaltypar
- \global\holdinginserts\thr@@
- \advance\interlinepenalty \linenopenalty
- \ifhmode
- \advance\predisplaypenalty \linenopenalty
- \fi
- \fi
- \fi
- \ignorespaces
-}%
-\def\endlinenomath@LN{%
- \ifLineNumbers
- \global\holdinginserts\@LN@outer@holdins
- \fi
- \global\@ignoretrue
-}
-\def\linenumberpar@LN{%
- \ifvmode \@@@par \else
- \ifinner \@@@par \else
- \xdef\@LN@outer@holdins{\the\holdinginserts}%
- \advance \interlinepenalty \linenopenalty
- \linenoprevgraf \prevgraf
- \global \holdinginserts \thr@@
- \@@@par
- \ifnum\prevgraf>\linenoprevgraf
- \penalty-\linenopenaltypar
- \fi
- \@LN@parpgbrk
- \global\holdinginserts\@LN@outer@holdins
- \advance\interlinepenalty -\linenopenalty
- \fi
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\class@documenthook}
-% We patch only if we recognize the definitions of all the procedures we are to patch.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \@ifpackageloaded{lineno}{%
- \@ifx{\linenomathWithnumbers\linenomathWithnumbers@LN}{%
- \@ifx{\linenomathNonumbers\linenomathNonumbers@LN}{%
- \@ifx{\endlinenomath\endlinenomath@LN}{%
- \@ifx{\linenumberpar\linenumberpar@LN}{%
- \true@sw
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- }{\false@sw}%
- {%
- \class@info{Overriding lineo.sty, restoring output routine,}%
-% \end{macrocode}
-% We commence overriding the procedures of \filename{lineno.sty}.
-% \begin{macrocode}
- \let\linenumberpar\linenumberpar@ltx
- \let\endlinenomath\endlinenomath@ltx
- \expandafter\let\csname endlinenomath*\endcsname\endlinenomath@ltx
- \let\linenomathWithnumbers\linenomathWithnumbers@ltx
- \let\linenomathNonumbers\linenomathNonumbers@ltx
-% \end{macrocode}
-% Override \filename{lineno.sty}'s equipment for \cmd\vadjust\ and \cmd\linelabel:
-% we have existing interrupts and handlers for these purposes.
-% \begin{macrocode}
- \let\ex@vadjust@ltx\ex@vadjust@line
- \let\@LN@postlabel\enqueue@whatsit@ltx
- \let\do@whatsit\write@linelabel
-% \end{macrocode}
-% Redirect handlers to those provided by \filename{lineno.sty}, and
-% give an appropriate meaning to the respective headpatch within the handlers.
-% \begin{macrocode}
- \let\handle@par@ltx\handle@par@LN
- \let\@@handle@line@ltx\Make@LineNo@ltx
- \let\@@handle@display@ltx\Make@LineNo@ltx
-% \end{macrocode}
-% Next, we undo the action taken by \filename{lineno.sty} wherein it
-% took over the output routine. Instead, we service \filename{lineno.sty}
-% existing equipment of \filename{ltxgrid}.
-% We also revert the core \LaTeX\ definitions of
-% \cmd\vspace, \cmd\pagebreak, \cmd\nopagebreak, and \cmd\\,
-% which that package takes over (we have our own ways of doing these things).
-% \begin{macrocode}
- \output@latex{\natural@output}%
- \let\vspace\vspace@ltx
- \let\pagebreak\pagebreak@ltx
- \let\nopagebreak\nopagebreak@ltx
- \let\@arrayparboxrestore\@arrayparboxrestore@ltx
- \let\\\endline@ltx
-% \end{macrocode}
-% \changes{4.1f}{2009/07/07}{(AO, 515) Prevent line numbering within a footnote}
-% When line numbering is in effect, we must avoid any attempt to number the lines of a footnote.
-% \begin{macrocode}
- \appdef\set@footnotefont{%
- \let\par\@@@par
- \let\@@par\@@@par
- }%
-% \end{macrocode}
-% At last, we detect if the \cmd\linenumbers\ command has already been given;
-% if so, we do its assignments again, because we have changed the meaning of \cmd\linenumberpar.
-% \begin{macrocode}
- \@if@sw\ifLineNumbers\fi{%
- \class@info{Reinvoke \string\linenumbers}%
- \let\@@par\linenumberpar
- \@ifx{\@par\linenumberpar@LN}{\let\@par\linenumberpar}{}%
- \@ifx{\par\linenumberpar@LN}{\let\par\linenumberpar}{}%
- }{%
- \class@info{Line numbering not turned on yet}%
- }%
-% \end{macrocode}
-% Here ends the ``true branch'' of the patch code.
-% \begin{macrocode}
- }{%
-% \end{macrocode}
-% If the \filename{lineno.sty} package is loaded, but we fail to patch it, notify the user.
-% \begin{macrocode}
- \class@warn{Failed to recognize lineno.sty procedures; no patches applied. Please get a more up-to-date class.}%
- }%
- }{%
-% \end{macrocode}
-% \filename{lineno.sty} is not loaded, so no patches are needed.
-% \begin{macrocode}
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\linenumberpar}
-% \begin{macro}{\@linenumberpar}
-% Procedure \cmd\linenumberpar\ takes the place of \cmd\par\ when line numbering is in effect;
-% It executes the \cmd\par\ primitive if we are in vertical mode.
-% Otherwise we are in horizontal mode in the MVL and wish to end the current paragraph,
-% or we have \cmd\unvbox ed material onto the MVL.
-%
-% \begin{macrocode}
-\def\linenumberpar@ltx{\@ifvmode{\@@@par}{\@linenumberpar}}%
-% \end{macrocode}
-%
-% Procedure \cmd\@linenumberpar
-% \begin{macrocode}
-\def\@linenumberpar{%
-% \end{macrocode}
-% Prepare for our trip into the output routine by
-% saving away the current value of \cmd\prevgraf.
-% \begin{macrocode}
- \linenoprevgraf\prevgraf
-% \end{macrocode}
-% The following will be used in the output routine dispatcher
-% to sense that we came from here.
-% \begin{macrocode}
- \set@linepenalties
-% \end{macrocode}
-% Finally, call primitive \cmd\par\ with the signal value of \cmd\interlinepenalty\ and friends.
-% \begin{macrocode}
- \@@@par
-% \end{macrocode}
-% We are now in vertical mode.
-% If lines of type were contributed to the MVL (non-trivial paragraph),
-% we must force another trip into the output routine to apply
-% line numbering to the last line of the paragraph.
-% \begin{macrocode}
- \@ifnum{\prevgraf>\linenoprevgraf}{
- \penalty-\int@postparpenalty
- }{}%
-% \end{macrocode}
-% Execute procedure \cmd\@LN@parpgbrk, which has been set up in the
-% output routine for us to invoke here.
-%
-% \begin{macrocode}
- \@LN@parpgbrk
-% \end{macrocode}
-% To wrap things up, we restore the original value of \cmd\interlinepenalty\ and friends.
-%
-% Query: why not employ \TeX's context stack to do the restore?
-% Would there be something wrong with executing primitive \cmd\par\ within a group?
-% \begin{macrocode}
- \restore@linepenalties
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\linenomathWithnumbers}
-% \begin{macro}{\linenomathNonumbers}
-% Here are the patched definitions for the commands enabling
-% line numbering in display math.
-% \begin{macrocode}
-\newcommand\linenomathWithnumbers@ltx{\@linenomathnumbers@ltx\true@sw}%
-\newcommand\linenomathNonumbers@ltx{\@linenomathnumbers@ltx\false@sw}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@linenomathnumbers}
-% \begin{macro}{\endlinenomath}
-% We have just begun a display math, and any paragraph we are setting will now end.
-% We set all relevant penalties to interrupt values; in the visit to the output routine,
-% we will replace the penalty with its normal value.
-% \begin{macrocode}
-\def\@linenomathnumbers@ltx#1{%
- \@if@sw\ifLineNumbers\fi{%
- \set@linepenalties
- \set@displaypenalties#1%
- }{}%
- \ignorespaces
-}%
-\def\endlinenomath@ltx{%
- \global\@ignoretrue
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% We provide a handler for the last line of a paragraph.
-% \begin{macrocode}
-\def\handle@par@LN{%
- \Make@LineNo@ltx
-% \end{macrocode}
-% After setting the line number, we arrange for an appropriate penalty to
-% be laid down after this visit to the output routine ends.
-%
-% Query: why not contribute the penalty right here in the visit to the output routine?
-% \begin{macrocode}
- \@tempcnta\lastpenalty
- \@ifnum{\@tempcnta=\z@}{}{%
- \expandafter\gdef
- \expandafter\@LN@parpgbrk
- \expandafter{%
- \expandafter\penalty
- \the\@tempcnta
-% \end{macrocode}
-% When \cmd\@LN@parpgbrk\ is executed, it resets itself to the default value,
-% \cmd\@LN@screenoff@pen.
-%
-% Query: \cmd\@LN@screenoff@pen\ appears to try to restore the depth of the last box:
-% why is this being done outside the safety of the output routine?
-% \begin{macrocode}
- \global\let\@LN@parpgbrk\@LN@screenoff@pen
- }%
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\Make@LineNo}
-% The procedure \cmd\Make@LineNo\ sets the box containing the line number itself.
-% \begin{macrocode}
-\def\Make@LineNo@ltx{%
- \@LN@maybe@normalLineNumber
-% \end{macrocode}
-% We measure the depth of \cmd\box\cmd\@cclv\ and unbox it.
-% At this point, it is crucial that that box have the same depth as that of the last
-% box within it.
-%
-% In the simple case, \cmd\box\cmd\@cclv\ is
-% a \cmd\vbox\ containing as its last box the \cmd\hbox\ of the paragraph we are processing.
-%
-% Query: under what circumstances will this \emph{not} be the case?
-% \begin{macrocode}
- \boxmaxdepth\maxdimen\setbox\z@\vbox{\unvbox\@cclv}%
- \@tempdima\dp\z@
- \unvbox\z@
-% \end{macrocode}
-% Then we create the box with the line number, setting its height to zero.
-% \begin{macrocode}
- \sbox\@tempboxa{\hb@xt@\z@{\makeLineNumber}}%
- \ht\@tempboxa\z@
-% \end{macrocode}
-% With these preparations, we invoke \cmd\@LN@depthbox, which
-% lays that box down (with its depth appropriately set):
-% this procedure depends on our having set \cmd\@tempdima\ and \cmd\@tempboxa
-% (kinda kludgy way of passing arguments, really).
-% \begin{macrocode}
- \@LN@depthbox
-% \end{macrocode}
-% Now increment the line number. I have relocated this token past \cmd\@LN@depthbox:
-% this may induce a bug, but I am going to hereby force the issue:
-% why split up the procedure that lays down boxes with a procedure that sets a register value?
-% \begin{macrocode}
- \stepLineNumber
-% \end{macrocode}
-% Finally, execute the \cmd\vadjust s that fell within the line that we just handled.
-%
-% Note that \cmd\enqueue@vadjust@ltx\ had queued up all the \cmd\vadjust\ commands for the paragraph
-% into \cmd\g@vadjust@queue, laying down an (\cmd\int@vadjustpenalty) interrupt in each ones' place.
-% The interrupts associated with this line of the paragraph have now moved the tokens to \cmd\g@vadjust@line,
-% which we now expand and execute.
-% \begin{macrocode}
- \g@vadjust@line
- \global\let\g@vadjust@line\@empty
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\write@linelabel#1{%
- \protected@write\@auxout{}{%
- \string\newlabel{#1}{{\theLineNumber}{\thepage}{}{}{}}%
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ex@vadjust@line{%
- \@if@sw\ifLineNumbers\fi{\enqueue@vadjust@ltx}{\vadjust}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% Note that the \cmd\linelabel\ commands use a mechanism different from \cmd\vadjust,
-% embodied in the procedure \cmd\enqueue@vadjust@ltx, wherein the
-% \cmd\write\ primitives are enqueued while the paragraph is being processed, each replaced with
-% an interrupt, then dequeued and executed by the interrupt handler, leaving a \cmd\write\ node
-% in place of the interrupt (just where the \cmd\vadjust 's vertical mode material would had been)
-% just below the box containing the line of type. This \cmd\write, like all whatsits,
-% does not affect the depth of \cmd\box\cmd\@cclv, unlike the case of general vertical mode material,
-% which could have interfered.
-%
-% \section{End of the \file{ltxgrid} {\sc docstrip} module}
-% Here ends the module.
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% \Finale
-% %Here ends the programmer's documentation.
-% \endinput
-%
-\endinput
-%%EOF
diff --git a/macros/latex/contrib/revtex/source/ltxutil.dtx b/macros/latex/contrib/revtex/source/ltxutil.dtx
deleted file mode 100644
index 4689c417a1..0000000000
--- a/macros/latex/contrib/revtex/source/ltxutil.dtx
+++ /dev/null
@@ -1,4461 +0,0 @@
-% \iffalse meta-comment balanced on line 107
-% ltxutil.dtx: utilities package
-% 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
-% changes for version 4.2d--4.2f by Phelype Oleinik.
-%
-% This work consists of the main source file ltxutil.dtx
-% and the derived files
-% ltxutil.sty, ltxutil.pdf
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex ltxutil.dtx
-%
-% Documentation:
-% latex ltxutil.dtx; ...
-%
-% Program calls to get the documentation (example):
-% pdflatex ltxutil.dtx
-% makeindex -s gind.ist ltxutil.idx
-% makeindex -s gglo.ist -o ltxutil.gls ltxutil.glo
-% pdflatex ltxutil.dtx
-% makeindex -s gind.ist ltxutil.idx
-% pdflatex ltxutil.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>
-\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-LTXUTIL.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}
- \file{ltxutil.sty}{%
- \from{ltxutil.dtx}{package,kernel}%
- }%
- \file{ltxutil.krn}{%
- \from{ltxutil.dtx}{kernel}%
- }%
- }%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* ltxutil.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 ltxutil.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{ltxutil.dtx}
-%
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "ltxutil.dtx",
-%%% version = "4.2f",
-%%% date = "2022/06/05",
-%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% Phelype Oleinik (mailto:phelype.oleinik at latex-project.org),
-%%% commissioned by the American Physical Society. Minor changes by Mark Doyle for version 4.2a-c.
-%%% ",
-%%% 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 = "utilities package",
-%%% }
-%</package>
-% \fi
-%
-% \iffalse ltxdoc klootch
-% The following references the \file{README-LTXUTIL} 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-LTXUTIL}" to locate it.
-% \fi\input{README-LTXUTIL}%
-%
-% \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}
-%ltxutil.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{latex ltxutil.dtx}}%
-% Typesetting the source file under pdflatex
-% generates the readme and the documentation.
-%\begin{verbatim}
-%README-LTXUTIL ltxutil.pdf
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex ltxutil.dtx}}%
-% Typesetting this file with \TeX\ generates
-% the package file.
-%\begin{verbatim}
-%ltxutil.sty
-%\end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}
-%ltxutil.aux ltxutil.idx ltxutil.ind ltxutil.log ltxutil.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>
-ltxutil%
-%</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.
-% Give credit where due.
-% \begin{macrocode}
-%<*doc|package|kernel>
-%<version>
- [2022/06/05 4.2f utilities package (portions licensed from W. E. Baxter web at superscript.com)]% \fileversion
-%</doc|package|kernel>
-%<kernel&!package&!doc>}%
-% \end{macrocode}
-%
-%
-% \section{The driver module \texttt{doc}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{README-LTXUTIL} as required.
-%
-% 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}%
-\pdfstringdefDisableCommands{%
- \let\file\relax
- \let\sc\relax
-}
-%\expandafter\ifx\csname package@font\endcsname\@undefined\else
-% \expandafter\RequirePackage\expandafter{\csname package@font\endcsname}%
-%\fi
-\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist ltxutil
-\RecordChanges % makeindex -s gglo.ist -o ltxutil.gls ltxutil.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 out these procedures
-% begin the programmer's manual.
-%
-% \begin{macrocode}
-\begin{filecontents*}{README-LTXUTIL}
-\title{%
- A \LaTeX\ Package of utility macros%
- \thanks{%
- This file has version number \fileversion,
- last revised \filedate.%
- }%
- \thanks{%
- Version \fileversion\ \copyright\ 2019--2022 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-LTXUTIL file.
-%\fi
-\maketitle
-
-This file embodies the \classname{ltxutil} package,
-the implementation and its user documentation.
-
-The distribution point for this work is
-\url{journals.aps.org/revtex},
-which contains prebuilt runtime files, documentation, and full source,
-ready to add to a TDS-compliant \TeX\ installation.
-
-The \classname{ltxutil} 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 are 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{ltxutil.sty}
-into a location in your filesystem where it will be found by \LaTeX.
-
-To use, read the user documentation \file{ltxutil.pdf}.
-
-\tableofcontents
-
-\section{Processing Instructions}
-
-The package file \file{ltxutil.sty}
-is generated from this file, \file{ltxutil.dtx},
-using the {\sc docstrip} facility of \LaTeX
-via |tex ltxutil.dtx| (Note: do \emph{not} use \LaTeX\ for this task).
-The typeset documentation that you are now reading is generated from
-the same file by typesetting it with \LaTeX\ or pdftex
-via |latex ltxutil.dtx| or |pdflatex ltxutil.dtx|.
-
-\subsection{Build Instructions}
-
-You may bootstrap this suite of files solely from \file{ltxutil.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{ltxutil.dtx} with \LaTeX\ or pdflatex;
-you will obtain the typeset documentation you are now reading,
-along with the file \file{README-LTXUTIL}.
-
-Note: you will have to run \LaTeX, then
-\file{makeindex} \texttt{-s gind.ist ltxutil.idx}, then
-\file{makeindex} \texttt{-s gglo.ist -o ltxutil.gls ltxutil.glo}, then
-\LaTeX\ again in order to obtain a valid index and table of contents.
-\item
-Now typeset \file{ltxutil.dtx} with \TeX (not \LaTeX),
-thereby generating the package file \file{ltxutil.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{ltxutil.sty}
-\item
-\file{$TEXMF/}\file{source/}\file{latex/}\file{revtex/}\classname{ltxutil.dtx}
-\item
-\file{$TEXMF/}\file{doc/}\file{latex/}\file{revtex/}\classname{ltxutil.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{\{ltxutil\}} in your document preamble!
-\end{enumerate}
-
-\subsection{Change Log}
-\changes{4.0b}{1999/06/20}{AO: Fixed spurious \texttt{CR} and (return) characters in output file. Also, if the document did not have the \cs{end}\texttt{figure} on a line of its own, the macro wouldn't work. Fixed.}
-\changes{4.0b}{1999/06/20}{AO: Removed superfluous \cs{def}s, changed to using \cs{floats@sw} as the flag. Also stopped using DPC's \cs{if@twocolumn} flag: using \cs{floats@sw} instead. Also added \cs{par}\cs{vskip}\cs{z@skip} after the \cs{minipagefootnotes} so that the float box would have zero depth like the kernel one. }
-\changes{4.0b}{1999/06/20}{only execute if there really were floats of the given type}
-\changes{4.0b}{1999/06/20}{Support the hack with \cs{prepdef}, and delay until \cs{AtBeginDocument} time, since \classname{hyperref} clobbers \cs{caption}.}
-\changes{4.0c}{1999/11/13}{(AO, 110) Install hooks for endfloats processing}
-\changes{4.0c}{1999/11/13}{(AO, 116) Hyperref compatibility}
-\changes{4.0c}{1999/11/13}{(AO, 130) Interference from array package}
-\changes{4.0c}{1999/11/13}{*-form mandates pagebreak at each float; only print section head if there is something there.}
-\changes{4.0d}{2000/04/10}{(AO, 127) Floats placed [h] to allow page breaks}
-\changes{4.0d}{2000/04/10}{(AO, 174) kernel fix}
-\changes{4.0d}{2000/05/19}{(AO, 224) Hyperref compatibility.}
-\changes{4.0d}{2000/05/23}{Allow things to break over pages by setting array@default.}
-\changes{4.0e}{2000/11/16}{(AO, 221) Remove samepage command from @xfloat@prep: If the float can break over pages, we want better control.}
-\changes{4.0f}{2001/07/13}{(AO, 404) Hyperref compatibility}
-\changes{4.1a}{2008/01/19}{(AO, 459) do not assume \cs{class@name} is defined}%
-\changes{4.1a}{2008/01/19}{(AO, 461) Change the csname from \cs{@dotsep} to \cs{ltxu@dotsep}. The former is understood in mu. (What we wanted was a dimension.)}%
-\changes{4.1a}{2008/01/19}{(AO, 475) I had not properly reproduced the LaTeX macro \cs{eqnarray}.}%
-\changes{4.1a}{2008/01/19}{(AO, 479) Per: Dylan Thurston<dpt at math.harvard.edu>}%
-\changes{4.1a}{2008/06/30}{(AO) Make \cs{addtocontents} a \cs{long} \cs{def}; gobble up \cs{footnote}}%
-\changes{4.1a}{2008/06/30}{(AO) Remove code that avoided changes to \cs{@xfootnotemark}}%
-\changes{4.1a}{2008/06/30}{(AO, 438) Complete rewrite of footnote macros.}
-\changes{4.1a}{2008/07/07}{\cs{@xfloat@prep} calls \cs{ltx@footnote@pop} to restore the original \cs{ltx@footmark} and \cs{ltx@foottext} procedures, in case footnote processing has switched.}
-\changes{4.1a}{2008/08/12}{\cs{class@documenthook} is the last \cs{AtBeginDocument} token now}
-\changes{4.1a}{2008/08/12}{Class extension mechanism \cs{@pushfilename@ltx} and \cs{@p@pfilename@ltx}.}
-\changes{4.1a}{2008/08/12}{Class extension mechanism \cs{class@extension}, \cs{class@extensionfile}, and \cs{class@ext@hook}.}
-\changes{4.1a}{2008/08/12}{Get rid of \cs{set@typesize@hook} \cs{set@pica@hook} and the \cs{normalsize} directive}%
-\changes{4.1b}{2008/08/12}{(AO, 487) Support for video figures and the \cs{setfloatlink} command}%
-\changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-\changes{4.1b}{2008/08/12}{Acquire \classname{hyperref} savoire}
-\changes{4.1b}{2008/08/12}{Default assignment of \cs{float@sw} now, not at \cs{AtBeginDocument} time.}%
-\changes{4.1b}{2008/08/12}{If class option \classoption{lengthcheck} is in effect, log the height of this float class.}
-\changes{4.1b}{2008/08/12}{No need to protect against undefined \cs{float@sw}}
-\changes{4.1b}{2008/08/12}{Patch the array package even later: after all package patches go in.}
-\changes{4.1b}{2008/08/12}{Refine toc processing: provide default.}%
-\changes{4.1b}{2008/08/12}{Tally and log the height of a float class}
-\changes{4.1d}{2009/03/27}{(AO, 511) Compatability with lineno.sty's erroneous way of detecting fleqn.clo}%
-\changes{4.1f}{2009/07/07}{(AO, 515) Hook for setting the font of a footnote}
-\changes{4.1f}{2009/07/10}{(AO, 518) Tally register overflow when locument is long}
-\changes{4.1g}{2009/10/06}{(AO, 532) Both arguments of \cs{href} get sanitized}%
-\changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
-\changes{4.1g}{2009/10/07}{(AO, 539) Use of double-backslash in argument of \cs{section} gives error. The \classname{textcase} package is involved.}%
-\changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
-\changes{4.1n}{2009/12/06}{(AO) Incorporate change to ltmiscen.dtx v1.1i 2000/05/19}%
-\changes{4.1n}{2009/12/09}{(AO, 569) execute \classname{atveryend}'s \cs{Call@AfterLastShipout} at the proper time}%
-\changes{4.1n}{2009/12/13}{(AO, 574) protect against \classname{lineno.sty}, which forces a visit to the output routine, which appears to destroy the value of \cs{@tempdima}}%
-\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/06}{(AO, 572) title block footnotes numbered independently from body footnotes}%
-\changes{4.1p}{2010/02/24}{(AO, 582) A patch of \classname{hyperref.sty} to provide backward compatibility to \TeX Live 2007's version 6.75r}%
-\changes{4.2a}{2017/11/21}{(MD) Use updated best practice to use https and doi.org}%
-\changes{4.2a}{2018/12/12}{(MD) Updated name of README file and use standard fonts when typesetting}%
-\changes{4.2d}{2020/09/19}{(PHO) Adapt \cs{document} and \cs{enddocument} hooks to the 2020-10-01 \LaTeX{} release.}%
-
-\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}%
-\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{ltxutil}%
-%\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{ltxutil}%
-%\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, but not at the document level.
-%
-%
-% \section{Compatibility 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{ltxutil} package will be incompatible with any package that
-% redefines any of the kernel macros that \classname{ltxutil} patches---if that
-% package is loaded \emph{after} \classname{ltxutil}. This means that for
-% greatest compatibility, \classname{ltxutil} should be loaded \emph{after},
-% say, \classname{ftnright}, which overwrites \LaTeX's kernel
-% procedures \cmd\@outputdblcol, \cmd\@startcolumn, and \cmd\@makecol.
-%
-% Hereinafter follows some notes on specific \LaTeX\ packages.
-%
-% \subsection{array}
-% This package alters the way tabular environments are done,
-% therefore it could run afoul of the \LaTeX\ ``required'' package \classname{array} or any
-% package that calls for it to be loaded.
-% However, this package has provisions for remaining compatible with \classname{array}.
-% So long as the version of \classname{array} that is used with this package has the appropriate
-% meanings for the procedures it overwrites, all should be well.
-%
-% \subsection{longtable}
-% David Carlisle's \classname{longtable} package modifies both the \LaTeX\ kernel and the
-% \classname{array} package. This package must therefore alter \cmd\LT@array.
-% For now, that job is handled by \classname{ltxgrid}.
-%
-%
-%\StopEventually{}
-%
-% \section{Implementation of package}
-%
-% 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.
-%
-% \subsection{Beginning of the \file{package} {\sc docstrip} module}
-% \begin{macrocode}
-%<*package>
-\def\package@name{ltxutil}%
-\expandafter\PackageInfo\expandafter{\package@name}{%
- Utility macros for \protect\LaTeXe,
- by A. Ogawa (arthur_ogawa at sbcglobal.net)%
-}%
-%</package>
-% \end{macrocode}
-%
-% \subsection{Banner and beginning of the \file{kernel} {\sc docstrip} module}%
-% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% \subsection{Errors and warnings}
-%
-% \begin{macro}{\class@err}
-% \begin{macro}{\class@warn}
-% \begin{macro}{\class@info}
-% A few shorthands for Class messages.
-% Your document class should define \cmd\class@name.
-% \begin{macrocode}
-\def\class@err#1{\ClassError{\class@name}{#1}\@eha}%
-\def\class@warn#1{\ClassWarningNoLine{\class@name}{#1}}%
-\def\class@info#1{\ClassInfo{\class@name}{#1}}%
-\def\obsolete@command#1{%
- \class@warn@end{Command \string#1\space is obsolete.^^JPlease remove from your document}%
- \global\let#1\@empty
- #1%
-}%
-\def\replace@command#1#2{%
- \class@warn@end{Command \string#1\space is obsolete;^^JUse \string#2\space instead}%
- \global\let#1#2%
- #1%
-}%
-\def\replace@environment#1#2{%
- \class@warn@end{Environment #1 is obsolete;^^JUse #2 instead}%
- \glet@environment{#1}{#2}%
- \@nameuse{#1}%
-}%
-\def\incompatible@package#1{%
- \@ifpackageloaded{#1}{%
- \def\@tempa{I cannot continue. You must remove the \string\usepackage\ statement that caused that package to be loaded.}%
- \ClassError{\class@name}{The #1 package cannot be used with \class@name}%
- \@tempa\stop
- }{%
- \class@info{#1 was not loaded (OK!)}%
- }%
-}%
-\def\class@warn@end#1{%
- \gappdef\class@enddocumenthook{\class@warn{#1}}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \changes{4.1a}{2008/01/19}{(AO, 459) do not assume \cs{class@name} is defined}%
-% Give \cmd\class@name\ a meaning if it does not already have one.
-% \begin{macrocode}
-\ifx\undefined\class@name
- \def\class@name{ltxutil}%
- \class@warn{You should define the class name before reading in this package. Using default}%
-\fi
-% \end{macrocode}
-%
-% \subsection{New Tools}%
-%
-% \begin{macro}{\t@}
-% \begin{macrocode}
-\def\t@{to}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\dimen@iii}
-% \begin{macrocode}
-\dimendef\dimen@iii\thr@@
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\halignt@}
-% \begin{macrocode}
-\def\halignt@{\halign\t@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\f@ur}
-% Analogous to \cmd\@ne, \cmd\tw@, and \cmd\thr@@.
-% \begin{macrocode}
-\chardef\f@ur=4\relax
-\chardef\cat@letter=11\relax
-\chardef\other=12\relax
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\let@environment}
-% \begin{macro}{\glet@environment}
-% The directive \cmd\let@environment\ takes care of a common programming
-% idiom whereby one environment is made a synonym for another.
-% \begin{macrocode}
-\def\let@environment#1#2{%
- \expandafter\let
- \csname#1\expandafter\endcsname\csname#2\endcsname
- \expandafter\let
- \csname end#1\expandafter\endcsname\csname end#2\endcsname
-}%
-\def\glet@environment#1#2{%
- \global\expandafter\let
- \csname#1\expandafter\endcsname\csname#2\endcsname
- \global\expandafter\let
- \csname end#1\expandafter\endcsname\csname end#2\endcsname
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tracingplain}
-% The command \cmd\tracingplain\ causes \TeX's tracing parameters to
-% return to the values set by default. This command is sometimes
-% useful when you have said \cmd\tracingall\ somewhere and want to
-% restore.
-% The \cmd\traceoutput\ command causes \cmd\tracingoutput\ diagnostics
-% upon \cmd\shipout.
-% \begin{macrocode}
-\newcommand\tracingplain{%
- \tracingonline\z@\tracingcommands\z@\tracingstats\z@
- \tracingpages\z@\tracingoutput\z@\tracinglostchars\@ne
- \tracingmacros\z@\tracingparagraphs\z@\tracingrestores\z@
- \showboxbreadth5\showboxdepth3\relax %\errorstopmode
- }%
-\newcommand\traceoutput{%
- \appdef\@resetactivechars{\showoutput}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\say}
-% \begin{macro}{\saythe}
-% The commands \cmd\say\ and \cmd\saythe\ cause diagnostic messages in the
-% \TeX\ log that give the value of a control sequence name or a register
-% respectively.
-% \begin{macrocode}
-\newcommand\say[1]{\typeout{<\noexpand#1=\meaning#1>}}%
-\newcommand\saythe[1]{\typeout{<\noexpand#1=\the#1>}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\fullinterlineskip}
-% Resets the \cmd\prevdepth\ so that the full amount of \cmd\baselineskip\ glue will be inserted by
-% the \cmd\baselinesklip\ mechanism.
-% Can be invoked just after a \cmd\hrule\ to undo its default suppression of base line skip.
-% \begin{macrocode}
-\def\fullinterlineskip{\prevdepth\z@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\count@i}
-% \begin{macro}{\count@ii}
-%
-% \begin{macrocode}
-\countdef\count@i\@ne
-\countdef\count@ii\tw@
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Boolean Control}%
-% We introduce just enough of the Boolean calculus for \TeX.
-% Alan Jeffrey was the pioneer here, with an article in TUGboat
-% (Vol. 11, No. 2, page 237).
-% This implementation owes a debt to
-% William Baxter (web at superscript.com).
-% See articles by Baxter and Ogawa in the proceedings of the
-% 1994 TUG meeting, TUGboat Vol.~15, No.~3.
-%
-% \begin{macro}{\prepdef}
-% \begin{macro}{\appdef}
-% \begin{macro}{\gappdef}
-%
-% Provide the capability of performing head- and tail patches.
-% The procedure \cmd\prepdef\ prepends to the given macro
-% the tokens specified in its second argument.
-% Likewise for \cmd\appdef, except that it appends.
-% Note that the first 10 toks registers are utility registers,
-% and we simply make a control sequence name, \cmd\toks@ii, for one of
-% them.
-% \begin{macrocode}
-\long\def\prepdef#1#2{%
- \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
- \toks@ii{#2}%
- \edef#1{\the\toks@ii\the\toks@}%
-}%
-\long\def\appdef#1#2{%
- \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
- \toks@ii{#2}%
- \edef#1{\the\toks@\the\toks@ii}%
-}%
-\long\def\gappdef#1#2{%
- \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
- \toks@ii{#2}%
- \global\edef#1{\the\toks@\the\toks@ii}%
-}%
-\long\def\appdef@val#1#2{%
- \appdef#1{{#2}}%
-}%
-\long\def\appdef@e#1#2{%
- \expandafter\appdef
- \expandafter#1%
- \expandafter{#2}%
-}%
-\long\def\appdef@eval#1#2{%
- \expandafter\appdef@val
- \expandafter#1%
- \expandafter{#2}%
-}%
-\toksdef\toks@ii=\tw@
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@ifxundefined}
-% \begin{macro}{\@ifnotrelax}
-% \begin{macro}{\@argswap}
-% \begin{macro}{\@argswap@val}
-%
-% Certain utility procedures use \cmd\@ifxundefined,
-% which is defined here in terms of \cmd\@ifx.
-% Others use \cmd\@ifnotrelax, namely when
-% the control sequence name is manufactured by
-% the use of \cmd\csname.
-%
-% The procedures \cmd\@argswap and \cmd\@argswap@val
-% are used to facilitate control of expansion.
-%
-% \begin{macrocode}
-\long\def\@ifxundefined#1{\@ifx{\undefined#1}}%
-\long\def\@ifnotrelax#1#2#3{\@ifx{\relax#1}{#3}{#2}}%
-\long\def\@argswap#1#2{#2#1}%
-\long\def\@argswap@val#1#2{#2{#1}}%
-\def\@ifxundefined@cs#1{\expandafter\@ifx\expandafter{\csname#1\endcsname\relax}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\rvtx@ifformat@geq}
-% Some changes in the \LaTeX{} kernel requires us to conditionally
-% define some macros depending on the version of the kernel.
-% \cmd\rvtx@ifformat@geq{} will check if the release date of the
-% currently-running \LaTeXe{} kernel is greater or equal to the
-% argument (the argument should be in the format \texttt{yyyy-mm-dd}).
-% \changes{4.2d}{2020/09/17}{(PHO) Add \cs{rvtx@ifformat@geq}.}%
-% \begin{macrocode}
-\ifx\IfFormatAtLeastTF\undefined
- \def\rvtx@ifformat@geq{\@ifl@t@r\fmtversion}%
-\else
- \let\rvtx@ifformat@geq\IfFormatAtLeastTF
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@boolean}
-% \begin{macro}{\@boole@def}
-% In order to define \cmd\@ifx, we first must create the
-% ``defining word'' (term taken form our Forth vocabulary)
-% \cmd\@boole@def, which employs \cmd\@boolean\ to do its job.
-% \begin{macrocode}
-\def\@boolean#1#2{%
- \long\def#1{%
- #2% \if<something>
- \expandafter\true@sw
- \else
- \expandafter\false@sw
- \fi
- }%
-}%
-\def\@boole@def#1#{\@boolean{#1}}% Implicit #2
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@booleantrue}
-% \begin{macro}{\@booleanfalse}
-% The procedures \cmd\@booleantrue\ and
-% \cmd\@booleanfalse\ are assignment operators
-% for Boolean flags.
-% \begin{macrocode}
-\def\@booleantrue#1{\let#1\true@sw}%
-\def\@booleanfalse#1{\let#1\false@sw}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@ifx}
-% \begin{macro}{\@ifx@empty}
-% \begin{macro}{\@if@empty}
-% \begin{macro}{\@ifcat}%
-% \begin{macro}{\@ifdim}%
-% \begin{macro}{\@ifeof}%
-% \begin{macro}{\@ifhbox}%
-% \begin{macro}{\@ifhmode}%
-% \begin{macro}{\@ifinner}%
-% \begin{macro}{\@ifmmode}%
-% \begin{macro}{\@ifnum}%
-% \begin{macro}{\@ifodd}%
-% \begin{macro}{\@ifvbox}%
-% \begin{macro}{\@ifvmode}%
-% \begin{macro}{\@ifvoid}%
-% We can now invoke the defining word to create
-% the procedures \cmd\@ifx\ and friends.
-%
-% Compatibility Note: earlier versions of this package
-% defined a procedure \cmd\@ifempty. However, for compatibility with AMS\LaTeX,
-% we must avoid the following three names:
-% \cmd\@ifempty, \cmd\@xifempty, and \cmd\@ifnotempty.
-%
-% \begin{macrocode}
-\@boole@def\@ifx#1{\ifx#1}%
-\@boole@def\@ifx@empty#1{\ifx\@empty#1}%
-\@boole@def\@if@empty#1{\if!#1!}%
-%\@boole@def\@if@sw#1{\csname if#1\endcsname}%
-\def\@if@sw#1#2{#1\expandafter\true@sw\else\expandafter\false@sw#2}%
-\@boole@def\@ifdim#1{\ifdim#1}%
-\@boole@def\@ifeof#1{\ifeof#1}%
-\@boole@def\@ifhbox#1{\ifhbox#1}%
-\@boole@def\@ifhmode{\ifhmode}%
-\@boole@def\@ifinner{\ifinner}%
-\@boole@def\@ifmmode{\ifmmode}%
-\@boole@def\@ifnum#1{\ifnum#1}%
-\@boole@def\@ifodd#1{\ifodd#1}%
-\@boole@def\@ifvbox#1{\ifvbox#1}%
-\@boole@def\@ifvmode{\ifvmode}%
-\@boole@def\@ifvoid#1{\ifvoid#1}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\true@sw}
-% \begin{macro}{\false@sw}
-%
-% Note that when a Boolean operator expands, it
-% employs two macros that act as selectors, defined here.
-%
-% \begin{macrocode}
-\long\def\true@sw#1#2{#1}%
-\long\def\false@sw#1#2{#2}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\loopuntil}
-% \begin{macro}{\loopwhile}
-%
-% Loop control using the Boolean idiom.
-% Superior to \cmd\loop\dots\cmd\repeat\ because these can be nested.
-% The tail of the argument must have a Boolean predicate.
-%
-% \begin{macrocode}
-\long\def\loopuntil#1{#1{}{\loopuntil{#1}}}%
-\long\def\loopwhile#1{#1{\loopwhile{#1}}{}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@provide}
-%
-% A defining word that refuses to clobber a prior meaning.
-%
-% \begin{macrocode}
-\def\@provide#1{%
- \@ifx{\undefined#1}{\true@sw}{\@ifx{\relax#1}{\true@sw}{\false@sw}}%
- {\def#1}{\def\j@nk}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Begin Document Structure}
-% The standard \LaTeX\ mechanism \cmd\AtBeginDocument\
-% is inadequate because the \cmd\vsize\ is bound much too early.
-% We supply here a mechanism whereby decisions about the
-% page layout can be deferred until \cmd\AtBeginDocument\ time.
-%
-% The problem we are working around is that the \cmd\AtBeginDocument\
-% hook in \cmd\document\ appears long after the calculation of
-% \cmd\vsize\ and \cmd\hsize, that is, \LaTeX\ provides no mechanism
-% for deferring the decision about the page grid until \cmd\AtBeginDocument\ time.
-% We fix things by prepending a hook at the very beginning of \cmd\document.
-%
-% As it turns out, though, it appears feasible to simply invoke the desired
-% column grid command at \cmd\AtBeginDocument\ time, since the MVL has nothing in it
-% at that time that would be problematical.
-%
-% \begin{macro}{\document}
-% We begin by installing hooks into \cmd\document\ that
-% we will manage ourselves.
-%
-% The 2020-10-01 \LaTeX{} release got a new hook management system and
-% several new hooks (several previously provided by \textsf{etoolbox}).
-% The one we want here is \texttt{begindocument/before}, the first thing
-% executed by \cmd\document{}, right after ending the group started by
-% \cmd\begin{}.
-%
-% Thus, if the \LaTeX{} kernel date is 2020-10-01 we just add to that
-% hook, otherwise resort to the old method, patching \cmd\document:
-% end the group started by \cmd\begin, apply our hook, and
-% conclude our shenanigans by absorbing
-% the first token of the expansion of \cmd\document, which
-% we assume to be \cmd\endgroup{} (true until the aforementioned release).
-% \changes{4.1a}{2008/08/12}{Get rid of \cs{set@typesize@hook} \cs{set@pica@hook} and the \cs{normalsize} directive}%
-% \changes{4.2d}{2020/09/17}{(PHO) Use \LaTeX's hook management system, if possible.}%
-% \begin{macrocode}
-\rvtx@ifformat@geq{2020/10/01}%
- {%
- \AddToHook{begindocument/before}{\document@inithook}%
- }{%
- \prepdef\document{%
- \endgroup
- \document@inithook
- \true@sw{}%
- }%
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\document@inithook}
-% To use, simply \cmd\appdef\cmd\document@inithook\arg{your tokens here}.
-% \begin{macrocode}
-\let\document@inithook\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\class@documenthook}
-% \begin{macro}{\class@enddocumenthook}
-% \changes{4.1a}{2008/08/12}{\cs{class@documenthook} is the last \cs{AtBeginDocument} token now}
-% We install the last \cmd\AtBeginDocument\ hook, namely the
-% procedure \cmd\class@documenthook. Within the document class,
-% we will use this hook exclusively, so as to avoid interference from other packages.
-% Similarly with \cmd\class@enddocumenthook, installed via \cmd\AtEndDocument.
-%
-% A document class using this package should do as this package does and just say,
-% \cmd\appdef\ \cmd\class@documenthook\ instead of \cmd\AtBeginDocument,
-% and \cmd\appdef\ \cmd\class@enddocumenthook\ instead of \cmd\AtEndDocument.
-% \begin{macrocode}
-\appdef\document@inithook{%
- \AtBeginDocument{\class@documenthook}%
-}%
-\AtEndDocument{%
- \class@enddocumenthook
-}%
-\let\class@documenthook\@empty
-\let\class@enddocumenthook\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\enddocument}
-% \begin{macro}{\check@aux}
-% \begin{macro}{\do@check@aux}
-% \changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
-% The standard \LaTeX\ \enve{document} processing is a potential problem,
-% particularly when the output routine has been changed by \classname{ltxgrid}.
-% We separate out the procedure that checks the auxiliary file at the end of
-% the job so that later it can be called from the safety of the output
-% routine.
-% We will do this to ensure that the \cmd\@mainaux\ stream is not closed until
-% the last page of the job is shipped out, and that can only be done by coordinating
-% with the output routine.
-%
-% \changes{4.2d}{2020/09/17}{(PHO) Only redefine \cs{enddocument} in older versions.}%
-% This approach, however, will only be done for older versions of the
-% \LaTeX{} kernel:
-% \begin{macrocode}
-\rvtx@ifformat@geq{2020/10/01}{%
- % <definitions for newer LaTeX later>
-}{%
- % <definitions for older LaTeX>
-\def\enddocument{%
-% \end{macrocode}
-% \changes{4.1n}{2009/12/06}{(AO) Incorporate change to ltmiscen.dtx v1.1i 2000/05/19}%
-% The following line from \filename{ltmiscen.dtx} `resets \cmd\AtEndDocument for latex/3060'.
-% \begin{macrocode}
- \let\AtEndDocument\@firstofone
-% \end{macrocode}
-% \begin{macrocode}
- \@enddocumenthook
- \@checkend{document}%
-% \end{macrocode}
-% The \cmd\clear@document\ statement ends the current page (we must guarantee no further shipouts),
-% then executes all cleanup procedures that must occur only after the last shipout.
-% Clients will queue up their procedures via \cmd\AfterLastShipout, if it exists, otherwise by doing \cmd\appdef\cmd\clear@document.
-% \begin{macrocode}
- \clear@document
-% \end{macrocode}
-% We are very close to ending the \TeX\ run, now.
-% \begin{macrocode}
- \check@aux
- \deadcycles\z@
- \@@end
-}%
-\def\check@aux{\do@check@aux}%
-\def\do@check@aux{%
- \@if@sw\if@filesw\fi{%
- \immediate\closeout\@mainaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter
- \input\jobname.aux\relax
- }{}%
- \@dofilelist
- \@ifdim{\font@submax >\fontsubfuzz\relax}{%
- \@font@warning{%
- Size substitutions with differences\MessageBreak
- up to \font@submax\space have occured.\@gobbletwo
- }%
- }{}%
- \@defaultsubs
- \@refundefined
- \@if@sw\if@filesw\fi{%
- \@ifx{\@multiplelabels\relax}{%
- \@if@sw\if@tempswa\fi{%
- \@latex@warning@no@line{%
- Label(s) may have changed.
- Rerun to get cross-references right%
- }%
- }{}%
- }{%
- \@multiplelabels
- }%
- }{}%
-}%
-}
-% \end{macrocode}
-%
-% \changes{4.2d}{2020/09/17}{(PHO) Patch \cs{enddocument} at runtime in newer versions.}%
-% \begin{macro}{\rvtx@enddocument@patch}
-% For newer \LaTeX{} we'll try to be a bit more future-proof
-% (no miracle though). The code for \cmd\enddocument{}
-% (in pre-2020-10-01 \LaTeX) is roughly:
-% \begin{verbatim}
-% \def\enddocument{%
-% <hooks and bookkeeping>
-% \clearpage
-% <read main .aux and final checks>
-% \@@end
-% }
-% \end{verbatim}
-% and the patches above replace the \cmd\clearpage{} by its own
-% \cmd\clear@document, and \verb|<read main .aux and final checks>| by
-% \cmd\do@check@aux, which it can later control the timing.
-%
-% Now we will apply the same changes, but this time without redefining
-% \cmd\enddocument: we will instead replace tokens on-the-fly, when
-% \cmd\enddocument{} is expanded. This will grant us a slightly safer
-% approach that won't depend so much on the internals of
-% \cmd\enddocument.
-%
-% This entire patch should work with the previous definition of
-% \cmd\enddocument{} as well (except it cannot be used in the hook),
-% but for now leave previous versions untouched.
-%
-% The entire patching will reside in the \texttt{enddocument} hook:
-% \begin{macrocode}
-\rvtx@ifformat@geq{2020/10/01}{%
- \AddToHook{enddocument}{\rvtx@enddocument@patch{}}%
-}{}
-% \end{macrocode}
-%
-% This macro will be executed after \cmd\enddocument{} has expanded,
-% so all its tokens are now exposed. Here we will assume that
-% \cmd\enddocument{} contains the tokens \verb|\@checkend{document}|
-% and \cmd\endgroup, and use them as delimiters:
-% \begin{macrocode}
-\protected\long\def\rvtx@enddocument@patch#1#2\@checkend#3{%
- \begingroup
- \edef\x{\detokenize{#3}}%
- \edef\y{\detokenize{document}}%
- \expandafter\endgroup
- \ifx\x\y
- \expandafter\rvtx@enddocument@patch@end
- \else
- \expandafter\rvtx@enddocument@patch@more
- \fi
- {#1#2}{#3}}
-\def\rvtx@enddocument@patch@more#1#2{%
- \rvtx@enddocument@patch{#1\@checkend{#2}}}
-% \end{macrocode}
-%
-% When the \verb|\@checkend{document}| is reached, use \cmd\clearpage{}
-% and \cmd\enddocument{} as delimiters for the
-% \verb|<read main .aux and final checks>| part, and save it in
-% \cmd\do@check@aux{}:
-% \begin{macrocode}
-\long\def\rvtx@enddocument@patch@end#1#2\clearpage#3\endgroup{%
- \def\do@check@aux{#3\endgroup}%
-% \end{macrocode}
-% Then execute the code consumed in the previous step:
-% \begin{macrocode}
- #1%
- \@checkend{#2}%
-% \end{macrocode}
-% Do \cmd\clear@document{} instead of \cmd\clearpage{} and
-% \cmd\check@aux{} instead of the code grabbed.
-% \begin{macrocode}
- \clear@document
- \check@aux}
-\def\check@aux{\do@check@aux}%
-% \end{macrocode}
-% \end{macro}
-%
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\clear@document}
-% \changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
-% The procedure \cmd\clear@document\ is responsible for flushing out the last page of the document,
-% if not already done.
-% The procedure then executes those procedures that must wait for execution until
-% after the last page is shipped out.
-% Clients of \classname{ltxutil}, such as \classname{ltxgrid} and \classname{revtex4}
-% will queue these procedures up via \cmd\AfterLastShipout, if it exists, otherwise by doing \cmd\appdef\cmd\clear@document.
-%
-% The command \cmd\Call@AfterLastShipout\ is provided by Heiko Oberdiek's \classname{atveryend} package.
-% This package is compatible with \classname{ltxutil}.
-%
-% Note on compatibility with \classname{atveryend}:
-% we arrange for \cmd\Call@AfterLastShipout\ to be called from the safety of the output routine,
-% thereby ensuring that all of the procedures queued up by that package's
-% \cmd\AfterLastShipout\ are executed at the right time.
-% We also ensure that \cmd\Call@AfterLastShipout\ has a default definition, in case the package was never loaded.
-% \changes{4.1n}{2009/12/09}{(AO, 569) execute \classname{atveryend}'s \cs{Call@AfterLastShipout} at the proper time}%
-% \begin{macrocode}
-\def\clear@document{%
- \clearpage
- \do@output@cclv{%
- \Call@AfterLastShipout
- }%
-}%
-\appdef\class@documenthook{%
- \providecommand\Call@AfterLastShipout{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Class Extensions}%
-% \changes{4.1a}{2008/08/12}{Class extension mechanism \cs{class@extension}, \cs{class@extensionfile}, and \cs{class@ext@hook}.}
-% The \LaTeX\ procedure \cmd\@onefilewithoptions\ is the vehicle for reading in
-% a \LaTeX\ class or package.
-% The APS RevTeX class implements the use of what are called ``substyles'',
-% actually extensions to the class itself.
-% Any document class can do likewise.
-%
-% \begin{macro}{\class@extension}
-% \begin{macro}{\class@extensionfile}
-% \begin{macro}{\class@ext@hook}
-% A procedure similar to \LaTeX's \cmd\@onefilewithoptions, but as an extension to the
-% current document class.
-%
-% Read in the given file as if it were a document class file.
-% Usage: \cmd\class@extensionfile\ \arg{class} \cmd\@extension,
-% where \marg{class} is a file (similar to \file{aps.rtx}) and where \cmd\@extension\ is
-% the file extension for \marg{class}.
-% For instance, to read in the file \file{aps.rtx},
-% do \cmd\class@extensionfile\ \texttt{\{aps\}} \cmd\substyle@ext,
-% where the latter has been define to expand to \file{.rtx}.
-%
-% Features supported include
-% passing existing class options on to the class extension,
-% \cmd\AtEndOfClass\ processing,
-% a stack that restores \cmd\@currname, \cmd\@currext, \cmd\@clsextension, and the \cmd\catcode\ of `@',
-% fall-back to a control sequence name (with leading `rtx@') if no file exists.
-%
-% Note that \cmd\LoadClass\ gives one the ability to write a class that calls in
-% another class as a (sort of) module: this scheme is like \cmd\LoadClass, but
-% turned inside out.
-% \begin{macrocode}
-\def\class@extension#1#2{%
- \IfFileExists{#1.#2}{%
- \expandafter\class@extensionfile\csname ver@\@currname.\@currext\endcsname{#1}#2%
- }{%
- \csname rtx@#1\endcsname
- }%
-}%
-\def\class@extensionfile#1#2#3{%
- \@pass@ptions#3\@unusedoptionlist{#2}%
- \global\let\@unusedoptionlist\@empty
- \expandafter\class@ext@hook\csname#2.#3-h@@k\endcsname#1{#2}#3%
-}%
-\def\class@ext@hook#1#2#3#4{%
- \@pushfilename@ltx
- \makeatletter
- \let\CurrentOption\@empty
- \@reset@ptions
- \let#1\@empty
- \xdef\@currname{#3}%
- \global\let\@currext#4%
- \global\let\@clsextension\@currext
- \input{#3.#4}%
- \@ifl@ter#4{#3}#2{%
- \class@info{Class extension later than: #2}%
- }{%
- \class@info{Class extension earlier: #2}%
- \@@end
- }%
- #1%
- \let#1\@undefined
- \expandafter\@p@pfilename@ltx\@currnamestack@ltx\@nil
- \@reset@ptions
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@pushfilename}
-% \begin{macro}{\@p@pfilename}
-% \changes{4.1a}{2008/08/12}{Class extension mechanism \cs{@pushfilename@ltx} and \cs{@p@pfilename@ltx}.}
-% But! \LaTeX\ does not provide for a class extension other than \file{.cls}, therefore we
-% must extend \LaTeX's file name stack with the file extension of a class extension.
-% This way, procedures like
-% \cmd\ProvidesPackage, \cmd\OptionNotUsed, \cmd\ProcessOptions, \cmd\@reset@ptions\
-% will still work properly.
-% \begin{macrocode}
-\def\@pushfilename@ltx{%
- \xdef\@currnamestack@ltx{%
- {\@currname}%
- {\@currext}%
- {\@clsextension}%
- {\the\catcode`\@}%
- \@currnamestack@ltx
- }%
-}%
-\def\@p@pfilename@ltx#1#2#3#4#5\@nil{%
- \gdef\@currname{#1}%
- \gdef\@currext{#2}%
- \gdef\@clsextension{#3}%
- \catcode`\@#4\relax
- \gdef\@currnamestack@ltx{#5}%
-}%
-\global\let\@currnamestack@ltx\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% We carefully patch \LaTeX\ so that the current value of \cmd\@clsextension\ can be
-% restored after reading in a class file.
-%
-% \subsection{Type Tools}%
-%
-% \begin{macro}{\flushing}
-% Undoes \cmd\centering. Should also undo \cmd\raggedleft\ and \cmd\raggedright.
-% \begin{macrocode}
-\def\flushing{%
- \let\\\@normalcr
- \leftskip\z@skip
- \rightskip\z@skip
- \@rightskip\z@skip
- \parfillskip\@flushglue
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \changes{4.1g}{2009/10/07}{(AO, 539) Use of double-backslash in argument of \cs{section} gives error. The \classname{textcase} package is involved.}%
-% \begin{macro}{\@centercr}
-% The \cmd\@centercr\ command is the replacement for \cmd\@normalcr\ when setting type centered or ragged.
-% Normally, the meaning of \cmd\\ is \cmd\@normalcr, which \LaTeX\ defines via \cmd\DeclareRobustCommand.
-% In centered or ragged typesetting, the meaning of \cmd\\ is \cmd\@centercr,
-% therefore it ought to to be defined via \cmd\DeclareRobustCommand\ (but unfortunately is not).
-% The fact that it is not is yet another of \LaTeX's early failures that will never get fixed.
-%
-% The following exemplar fails under \LaTeX\ version 2005/12/01, package \classname{textcase} 2004/10/07 v0.07:
-% \begin{verbatim}
-%\documentclass{article}%
-%\usepackage[overload]{textcase}
-%\begin{document}
-%\centering
-%\section{\MakeTextUppercase{Section\\title}}
-%Text
-%\end{document}
-% \end{verbatim}
-% The solution is to promote \cmd\@centercr\ to a robust command, just the same as \cmd\\.
-% We do that here without needing to know the meaning of the command.
-% \begin{macrocode}
-\expandafter\DeclareRobustCommand\expandafter\@centercr\expandafter{\@centercr}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Display Math}%
-%
-% \begin{macro}{\eqnarray@LaTeX}
-% \begin{macro}{\eqnarray@fleqn@fixed}
-% Team \LaTeX\ has stated they will never repair Leslie's broken definition of \env{eqnarray}.
-% Let us be bold\dots.
-%
-% Note on \classname{hyperref} package compatibility: that package overrides
-% \cmd\eqnarray\ by wrapping it up in a larger procedure, so its changes
-% are compatible with this package's changes.
-%
-% \changes{4.1a}{2008/01/19}{(AO, 475) I had not properly reproduced the LaTeX macro \cs{eqnarray}.}%
-% \changes{4.2f}{2022/06/05}{(PHO) Fix detection of \cs{eqnarray} in newer \LaTeX.}%
-% \begin{macrocode}
-\def\rvtx@tmpa#1{%
-\def\eqnarray@LaTeX{%
- \stepcounter{equation}%
- \def\@currentlabel{\p@equation\theequation}%
- #1% \def\@currentcounter{equation} on newer LaTeX
- \global\@eqnswtrue
- \m@th
- \global\@eqcnt\z@
- \tabskip\@centering
- \let\\\@eqncr
- $$\everycr{}\halign to\displaywidth\bgroup
- \hskip\@centering$\displaystyle\tabskip\z@skip{####}$\@eqnsel
- &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${####}$\hfil
- &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
- $\displaystyle{####}$\hfil\tabskip\@centering
- &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss####\egroup
- \tabskip\z@skip
- \cr
-}%
-\long\def\eqnarray@fleqn@fixed{%
- \stepcounter{equation}\def\@currentlabel{\p@equation\theequation}%
- #1% \def\@currentcounter{equation} on newer LaTeX
- \global\@eqnswtrue\m@th\global\@eqcnt\z@
- \tabskip\ltx@mathindent
- \let\\=\@eqncr
- \setlength\abovedisplayskip{\topsep}%
- \ifvmode\addtolength\abovedisplayskip{\partopsep}\fi
- \addtolength\abovedisplayskip{\parskip}%
- \setlength\belowdisplayskip{\abovedisplayskip}%
- \setlength\belowdisplayshortskip{\abovedisplayskip}%
- \setlength\abovedisplayshortskip{\abovedisplayskip}%
- $$%
- \everycr{}%
- \halignt@\linewidth\bgroup
- \hskip\@centering$\displaystyle\tabskip\z@skip{####}$\@eqnsel
- &\global\@eqcnt\@ne
- \hskip\tw@\eqncolsep
- \hfil${{}####{}}$\hfil
- &\global\@eqcnt\tw@
- \hskip\tw@\eqncolsep
- $\displaystyle{####}$\hfil\tabskip\@centering
- &\global\@eqcnt\thr@@\hb@xt@\z@\bgroup\hss####\egroup
- \tabskip\z@skip
- \cr
-}%
-}
-\rvtx@tmpa{}% older LaTeX
-\@ifx{\eqnarray\eqnarray@LaTeX}{\@firstofone}
- {%
- \rvtx@tmpa{\def\@currentcounter{equation}}% newer LaTeX
- \@ifx{\eqnarray\eqnarray@LaTeX}{\@firstofone}
- {\@gobble}
- }
-{%
- \class@info{Repairing broken LaTeX eqnarray}%
- \let\eqnarray\eqnarray@fleqn@fixed
- \newlength\eqncolsep
- \setlength\eqncolsep\z@
- \let\eqnarray@LaTeX\relax
- \let\eqnarray@fleqn@fixed\relax
-}%
-% \end{macrocode}
-% The macro \cmd\ltx@mathindent\ is assigned to the \cmd\tabskip\ glue just
-% before the alignment preamble is expanded, the value therefore applying at the
-% left of the first column.
-%
-% The below value specifies the display math to be set centered, as is common practice.
-% Alternatively, \cmd\tabskip\ can be set to a different glue value, accomplishing
-% flush-left display math.
-%
-% Note that the \filename{fleqn.clo} package provides its own meaning for
-% the eqnarray environment, which is also broken. We do not patch that package, however.
-%
-% \changes{4.1d}{2009/03/27}{(AO, 511) Compatability with lineno.sty's erroneous way of detecting fleqn.clo}%
-% Bug note: The \filename{lineno.sty} package detects \filename{fleqn.clo}
-% by testing whether \cmd\mathindent\ is defined, instead of using correct \LaTeXe\ means.
-% Even though our eqnarray environment is modelled after \filename{fleqn.clo},
-% we must program defensively here.
-% \begin{macrocode}
-\def\ltx@mathindent{\@centering}%
-\def\set@eqnarray@skips{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
-%\begin{macro}{\prep@math}
-%\begin{macro}{\prep@math@patch}
-% If we are in vertical mode when display math mode is entered (via \verb+$$+),
-% \TeX\ will first enter horizontal mode, then display math mode; this results in a phantom paragraph
-% containing a single \cmd\hbox\ consisting of the \cmd\parindent\ box followed by the \cmd\parskipfillskip\ glue.
-% Of course, that \cmd\hbox\ is accompanied by \cmd\parskip\ glue and \cmd\baselineskip\ glue.
-%
-% The \cmd\prep@math\ procedure removes the \cmd\parindent\ box, thereby (magically) eliminating the phantom paragraph.
-% The \cmd\prep@math@patch\ procedure headpatches the \env{equation} and \env{eqnarray} environments
-% to accomplish this removal of the phantom paragraph.
-%
-% Note that there are three remaining ways to enter display math mode that we do not treat:
-% the \env{displaymath} environment (equivalent to \cmd\[/\cmd\]), and the primitive the \verb+$$+ markup.
-% I refrain from treating the first case because \env{displaymath} already detects the case
-% where it is entered from vertical mode: I do not wish to engage in the dubious enterprise of attempting to correct a procedure that is ill conceived from the outset.
-% As to the primitive \verb+$$+, there is no help for users who insist upon employing procedural markup in their documents.
-% in their documents.
-% \begin{macrocode}
-\def\prep@math{%
- \@ifvmode{\everypar{{\setbox\z@\lastbox}}}{}%
-}%
-\def\prep@math@patch{%
- \prepdef\equation{\prep@math}%
- \prepdef\eqnarray{\prep@math}%
-}%
-% \end{macrocode}
-% A document class may invoke \cmd\prep@math@patch\ at any point it wishes to prevent the appearance
-% of the phantom paragraph: it may be a global declaration or a local one.
-% \end{macro}
-% \end{macro}
-%
-% We fail to patch \cmd\[, \cmd\equation, however.
-%
-% \subsection{Footnotes}
-%
-% \changes{4.0d}{2000/04/10}{(AO, 174) kernel fix}
-%
-% \begin{macro}{\footnotemark}
-% \begin{macro}{\footnotetest}
-% \begin{macro}{\ltx@xfootnote}
-% \begin{macro}{\ltx@footmark}
-% \begin{macro}{\ltx@foottext}
-% \begin{macro}{\ltx@make@current@footnote}
-% We repair an error in the \LaTeX\ kernel (see \file{ltfloat.dtx}) involving footnotes.
-% The symptom is that the \cmd\footnotemark\ command does not work properly within a \env{minipage} environment.
-% The source of the problem is in the way the \cmd\footnotemark\ and \cmd\@xfootnotemark\ procedures are defined:
-% they do not share the method, used by \cmd\footnote\ and other procedures, that allows a context switch to
-% change the way footnotes behave within a minipage environment.
-% This is a \LaTeX\ bug of long standing; our fix dates to 1987.
-%
-% While we are at it, we rewrite both the \cmd\footnote, \cmd\footnotemark\ and \cmd\footnotetext\ procedures,
-% achieving a cleaner separation of syntax and semantics.
-% Note that the \cmd\@footnotetext\ procedure is not involved in context switching;
-% \classname{hyperref} will take over that procedure, substituting its own processing around
-% its argument and passing this to \cmd\H@@footnotetext.
-% We anticipate this, and do our context switching on \cmd\H@@footnotetext.
-%
-% The \cmd\@makefnmark\ continues as the method of formatting the footnote mark.
-%
-% A note about the context switch mentioned above:
-% the \env{minipage} environment executes the following in order to alter the way footnotes
-% behave:\begin{verbatim}
-%\def\@mpfn{mpfootnote}%
-%\def\thempfn{\thempfootnote}%
-%\let\@footnotetext\@mpfootnotetext
-%\let\@makefnmark\@mpmakefnmark
-%\c@mpfootnote\z@\end{verbatim}
-% This code changes the counter used in autonumbered footnotes, the choice of footnote marker,
-% and the procedure used on the footnote text. Changing the counter is needed because minipage
-% footnotes are in their own sequence, and the footnote marker is customarily different within
-% a minipage. The procedure that works on the footnote text must be different because the footnotes
-% are placed at the bottom of the minipage, not the bottom of the text column.
-%
-% Note that \LaTeX\ initially defines \cmd\@mpfn\ as \texttt{footnote} and \cmd\thempfn\ as \cmd\thefootnote,
-% so we are initially doing general footnotes.
-%
-% Any procedure that establishes a minipage-like context (e.g., floats) can do the same as the mimipage context switch
-% illustrated above.
-% \changes{4.1a}{2008/06/30}{(AO, 438) Complete rewrite of footnote macros.}
-%
-% Three user-level command, \cmd\footnote, \cmd\footnotemark, and \cmd\footnotetext\ are defined (see the \LaTeX\ manual for user-level details).
-% \begin{macro}{\footnote}
-% The first user-level command is \cmd\footnote.
-% A simple way to look at this command is to think of it as
-% \cmd\footnotemark\ \oarg{number} \cmd\footnotetext\ \oarg{number} \arg{text},
-% where the optional argument is the same in both calls.
-% We also define a syntactical helper procedure \cmd\ltx@xfootnote.
-%
-% We employ the procedures \cmd\ltx@stp@footproc\ and \cmd\ltx@def@footproc,
-% passing in the procedure to execute, in this case \cmd\ltx@footmark,
-% which sets the footnote mark.
-% In any case, we end on the procedure \cmd\ltx@foottext, which sets the footnote text.
-% \begin{macrocode}
-\def\footnote{\@ifnextchar[\ltx@xfootnote\ltx@yfootnote}%
-\def\ltx@xfootnote[#1]{%
- \ltx@def@footproc\ltx@footmark[#1]%
- \expandafter\ltx@foottext\expandafter{\the\csname c@\@mpfn\endcsname}%
-}%
-\def\ltx@yfootnote{%
- \ltx@stp@footproc\ltx@footmark
- \expandafter\ltx@foottext\expandafter{\the\csname c@\@mpfn\endcsname}%
-}%
-% \end{macrocode}
-% The \cmd\footmark\ user-level command is next.
-% Here we use the procedures \cmd\ltx@stp@footproc\ and \cmd\ltx@def@footproc\ again,
-% but unlike \cmd\footnote, we do not set the footnote text.
-% \begin{macrocode}
-\def\footnotemark{\@ifnextchar[\ltx@xfootmark\ltx@yfootmark}%
-\def\ltx@xfootmark{\ltx@def@footproc\ltx@footmark}%
-\def\ltx@yfootmark{\ltx@stp@footproc\ltx@footmark}%
-\def\ltx@footmark#1{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
- \begingroup
- \expandafter\ltx@make@current@footnote\expandafter{\@mpfn}{#1}%
- \expandafter\@argswap@val\expandafter{\Hy@footnote@currentHref}{\hyper@linkstart {link}}%
- \@makefnmark
- \hyper@linkend
- \endgroup
- \ifhmode\spacefactor\@x@sf\fi
- \relax
-}%
-% \end{macrocode}
-% The third user-level command is \cmd\footnotetext.
-% As with \cmd\footnotemark, we use the procedures \cmd\ltx@stp@footproc\ and \cmd\ltx@def@footproc,
-% this time passing in the procedure \cmd\ltx@foottext, which sets the footnote text.
-% \begin{macrocode}
-\def\footnotetext{\@ifnextchar[\ltx@xfoottext\ltx@yfoottext}%
-\def\ltx@xfoottext{\ltx@def@footproc\ltx@foottext}%
-\def\ltx@yfoottext{\ltx@stp@footproc\ltx@foottext}%
-\long\def\ltx@foottext#1#2{%
- \begingroup
- \expandafter\ltx@make@current@footnote\expandafter{\@mpfn}{#1}%
- \@footnotetext{#2}%
- \endgroup
-}%
-% \end{macrocode}
-% Here are the definitions of the procedures \cmd\ltx@stp@footproc\ and \cmd\ltx@def@footproc.
-% The require argument is the procedure to execute afterwards, and
-% \cmd\ltx@def@footproc\ parses a bracket-delimited argument (it is not optional).
-% In each case the given procedure is executed with an argument prepared for it:
-% the value of the footnote counter.
-% \begin{macrocode}
-\def\ltx@def@footproc#1[#2]{%
- \begingroup
- \csname c@\@mpfn\endcsname #2\relax
- \unrestored@protected@xdef\@thefnmark{\thempfn}%
- \expandafter\endgroup
- \expandafter#1%
- \expandafter{\the\csname c@\@mpfn\endcsname}%
-}%
-\def\ltx@stp@footproc#1{%
- \expandafter\stepcounter\expandafter{\@mpfn}%
- \protected@xdef\@thefnmark{\thempfn}%
- \expandafter#1%
- \expandafter{\the\csname c@\@mpfn\endcsname}%
-}%
-% \end{macrocode}
-% Here we provide for our good friend \classname{hyperref}
-% to enter in like a bull in a china shop. If it is not loaded,
-% we do what it would have done, but gentlier and without hypertext functionality.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \let\footnote@latex\footnote
- \@ifpackageloaded{hyperref}{}{%
- \let\H@@footnotetext\@footnotetext
- \def\@footnotetext{\H@@footnotetext}%
- \let\H@@mpfootnotetext\@mpfootnotetext
- \def\@mpfootnotetext{\H@@mpfootnotetext}%
- }%
-}%
-% \end{macrocode}
-% In the following, we must use \LaTeX's rococco equipment in the form of \cmd\protected@edef,
-% because of the presence of a font switch in the meaning of \cmd\thempfootnote.
-% But, really, isn't this a sloppy conflation of semantics and presentation?
-% \begin{macrocode}
-\def\ltx@make@current@footnote#1#2{%
- \csname c@#1\endcsname#2\relax
- \protected@edef\Hy@footnote@currentHref{\@currentHref-#1.\csname the#1\endcsname}%
-}%
-\def\thempfootnote@latex{{\itshape \@alph \c@mpfootnote }}%
-\def\ltx@thempfootnote{\@alph\c@mpfootnote}%
-\@ifx{\thempfootnote\thempfootnote@latex}{%
- \class@info{Repairing hyperref-unfriendly LaTeX definition of \string\mpfootnote}%
- \let\thempfootnote\ltx@thempfootnote
-}{}%
-% \end{macrocode}
-%
-% Note on \classname{hyperref} compatibility:
-% In its ``Automated \LaTeX\ hypertext cross-references'',
-% the \classname{hyperref} package alters footnote processing,
-% but it does nothing to address the several issues of concern to us.
-%
-% The \classname{hyperref} package takes over the \cmd\@mpfootnotetext\ and
-% \cmd\@footnotetext\ procedures, wrapping the argument in its own code.
-% It also rewrites \cmd\@footnotemark, making it a hyperlink, and
-% \cmd\@xfootnotenext, removing from it all hypertext capabilities.
-%
-% However, if the \cmd\footnotemark\ command has been supplied with an optional argument,
-% \classname{hyperref}'s changes do not apply: it punts in this case.
-%
-% At the same time, it attempts to turn off its changes during
-% \cmd\maketitle\ processing, destroying one of the capabilities we desire.
-%
-% We make ourself \classname{hyperref} savvy:
-% we re-implement footnote processing, using \classname{hyperref} capabilities if that
-% package has been loaded.
-%
-% Any other package that rewrites \LaTeX's footnote macros will be incompatible
-% with this package.
-% \changes{4.1a}{2008/06/30}{(AO) Remove code that avoided changes to \cs{@xfootnotemark}}%
-%
-% Two thoughts about \classname{hyperref}: what for does it define \cmd\realfootnote?
-% Apparently even SR himself cannot remember.
-%
-% Also: a document class that desires high hypertext capabilities might
-% well wish to reimplement \cmd\maketitle\ so that footnotes called out from there
-% are hypertext links: the \classname{hyperref} package's
-% ``Automated \LaTeX\ hypertext cross-references''
-% does not do any of this:
-%\begin{quotation}
-% But the special footnotes in |\maketitle| are much too hard to deal with properly.
-% Let them revert to plain behaviour.
-%\end{quotation}
-% Note that the document class, in reimplementing \cmd\maketitle, must ensure
-% that the \classname{hyperref} package does not clobber its own definition!
-%
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@footnotetext}
-% \begin{macro}{\@mpfootnotetext}
-% \begin{macro}{\@tpfootnotetext}
-% \begin{macro}{\make@footnotetext}
-% \begin{macro}{\set@footnotewidth}
-% The two procedures \cmd\@footnotetext\ and \cmd\@mpfootnotetext\ share code.
-% We make that explicit here.
-%
-% Note that the procedure calling \cmd\make@footnotetext\ will open a group
-% with \cmd\bgroup\ which is then closed by \cmd\minipagefootnote@drop.
-%
-% Difference from \LaTeX: here we do not set \cmd\floatingpenalty\ to infinity.
-% Doing this must date back to a time when \LaTeX\ could not accomodate split insertions (footnotes).
-% I cannot think of any other reason to do have done this.
-% At any rate, with the \classname{ltxgrid} package, split insertions are properly
-% taken care of, so we allow it.
-%
-% We provide the hook \cmd\set@footnotewidth\
-% that sets the footnote on a particular measure.
-% Some page grids are such as to set a footnote in a context where \cmd\columnwidth
-% is not the right parameter to use for the set width of a footnote.
-% In such a case, for the applicable scope, you should define
-% \cmd\set@footnotewidth\ to perform this job correctly.
-%
-% If we are setting type on multiple page grids, we must still ensure that all footnotes that
-% find their way into the \cmd\footins\ insert register are set on the same width.
-% This implies the need for a document to have an ``overall'' page grid, which determines the set width of all footnotes
-% with the exception of minipage footnotes.
-%
-% In general, remember that footnotes, like all insertions (including floats),
-% are a step outside of the galley context, and all aspects of insertions need to be
-% properly handled, including the set width.
-% \begin{macrocode}
-\def\@makefnmark{%
- \hbox{%
- \@textsuperscript{%
- \normalfont\itshape\@thefnmark
- }%
- }%
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\long\def\@footnotetext{%
- \insert\footins\bgroup
- \make@footnotetext
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\long\def\@mpfootnotetext{%
- \minipagefootnote@pick
- \make@footnotetext
-}%
-% \end{macrocode}
-% Procedure \cmd\make@footnotetext\ sets the footnote \verb+#1+ into type, with the proper
-% font, color, leading, width, and label in effect.
-% It also establishes a strut and null glue at the end of the last paragraph of the footnote;
-% The strut helps compensate for the lack of \cmd\interlineskip\ glue between \cmd\insert s;
-% the glue establishes a feasible \cmd\vsplit\ point between footnotes.
-%
-% Note that in the title block (\classname{ltxfront}), the alternative definition, under the name \cmd\frontmatter@footnotetext, is used.
-% The only material difference there is the reference to \cmd\frontmatter@makefntext\ instead of \cmd\@makefntext.
-%
-% Dependency note: the \cmd\@makefntext\ procedure is used to further process the footnote text
-% and to execute the \cmd\@makefnmark\ procedure to produce the footnote mark.
-% The definition of the former is customarily found in the document class (hereunder that of \filename{article.cls}),
-% the latter in \filename{latex.ltx}. They are as follows:
-% \begin{verbatim}
-%\newcommand\@makefntext[1]{%
-% \parindent 1em\noindent
-% \hb@xt@1.8em{\hss\@makefnmark}%
-% #1%
-%}%
-%\def\@makefnmark{%
-% \hbox{\@textsuperscript{\normalfont\@thefnmark}}%
-%}%
-% \end{verbatim}
-%
-% \changes{4.1n}{2010/01/06}{(AO, 572) title block footnotes numbered independently from body footnotes}%
-% \begin{macrocode}
-\long\def\make@footnotetext#1{%
- \set@footnotefont
-% \end{macrocode}
-% As noted above, we do \emph{not} do \cmd\floatingpenalty\ \cmd\@MM, as in standard \LaTeX.
-% \begin{macrocode}
- \set@footnotewidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
-% \end{macrocode}
-% Note that we employ \cmd\@mpfn\ as a level of redirection for the footnotecounter.
-% \begin{macrocode}
- \csname p@\@mpfn\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1%
-% \end{macrocode}
-% \changes{4.1n}{2010/01/02}{(AO, 571) allow split after last line of footnote}%
-% The following strut and glue are for spacing and splitting, as mentioned above.
-% \begin{macrocode}
- \@finalstrut\strutbox\vadjust{\vskip\z@skip}%
- }%
- \color@endgroup
- \minipagefootnote@drop
-}%
-% \end{macrocode}
-% \changes{4.1f}{2009/07/07}{(AO, 515) Hook for setting the font of a footnote}
-% \cmd\set@footnotefont\ is the procedure for setting the font of a footnote.
-% Other aspects of the environment may be set using this hook.
-% \begin{macrocode}
-\def\set@footnotefont{%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth\dp\strutbox
-}%
-% \end{macrocode}
-% \cmd\set@footnotewidth\ is the procedure for setting the width of a footnote.
-% The default page grid, a single, full-width column, sets footnotes on the width of the text.
-% \changes{4.1n}{2010/01/02}{(AO, 571) Interface \cs{set@footnotewidth} for determining the set width of footnotes}%
-% \begin{macrocode}
-\def\set@footnotewidth{\set@footnotewidth@one}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Floats}
-%
-% \subsubsection{Usage notes}%
-% We extend the \LaTeX\ kernel for three purposes:
-% \begin{enumerate}
-%
-% \item
-% When the \cmd\footnote\ command is used within the
-% scope of a float, we do as \env{minipage} does.
-%
-% \item
-% We provide a mechanism to write floats out to an external
-% stream for temporary storage (deferred floats).
-%
-% \item
-% We provide mechanism for placing a float \texttt{here}
-% invariably, that is, floats are unfloated.
-% This mechanism is used to read the external stream mentioned above.
-%
-% \end{enumerate}
-%
-% To use these mechanisms, the document class should
-% define a float, say, \env{figure} as per usual, and in addition:
-% \begin{enumerate}
-%
-% \item
-% Optionally define an alternative, say \env{figure@write} as follows:
-% \begin{verbatim}\newenvironment{figure@write}{%
-% \write@float{figure}%
-%}{%
-% \endwrite@float
-%}\end{verbatim}
-% That is, the alternative environment executes \cmd\write@float\
-% instead of \cmd\@float.
-% Note that this step is not needed if the float environment
-% is defined in the simple way of \file{classes.dtx}.
-% However, an environment like \env{longtable} will require it.
-%
-% \item
-% Install into \cmd\AtBeginDocument\ a call to \cmd\do@if@floats,
-% with the float name and an appropriate file extension as its arguments.
-% \begin{verbatim}\appdef\class@documenthook{\do@if@floats{figure}{.fgx}}\end{verbatim}
-%
-% \item
-% Optionally define a text entity \cmd\figuresname\ that will
-% be the text of the head that is set over the
-% deferred floats.
-% If not defined, there will be no head.
-%
-% \item
-% Optionally define a user-level command to allow
-% the document to determine where the figures are printed out
-% (default is to print at end of document). E.g.,
-% \begin{verbatim}\newcommand\printfigures{\print@float{figure}}\end{verbatim}
-% \item
-% Install into \cmd\appdef\cmd\class@enddocumenthook\ a call to \cmd\printfigures,
-% or, if the latter is not defined, as follows:
-% \begin{verbatim}\appdef\class@enddocumenthook{\print@float{figure}}\end{verbatim}
-% Note that installing this command into \cmd\AtBeginDocument
-% is best done earlier than calls that assume the last page of
-% the document is at hand.
-%
-% \end{enumerate}
-%
-% \subsubsection{Robustifying fragile commands}%
-% Certain of \LaTeX's commands cannot be written out to a file or appear within a \cmd\mark\ command argument
-% because they do calculations during expansion.
-% We provide for a little help, but without changing the meanings of these commands.
-%
-% \begin{macro}{\addtocontents}
-% \begin{macro}{\robustify@contents}
-%
-% \changes{4.1a}{2008/06/30}{(AO) Make \cs{addtocontents} a \cs{long} \cs{def}; gobble up \cs{footnote}}%
-% \begin{macrocode}
-\def\robustify@contents{%
- \let \label \@gobble
- \let \index \@gobble
- \let \glossary \@gobble
- \let\footnote \@gobble
- \def\({\string\(}%
- \def\){\string\)}%
- \def\\{\string\\}%
-}%
-\long\def\addtocontents#1#2{%
- \protected@write\@auxout{\robustify@contents}{\string \@writefile {#1}{#2}}%
-}%
-% \end{macrocode}
-%
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Preparing for the \classname{hyperref package}}%
-%
-% \begin{macro}{\addcontentsline}
-% \begin{macro}{\label}
-% \begin{macro}{\ltx@contentsline}
-% \changes{4.1b}{2008/08/12}{Refine toc processing: provide default.}%
-% The \classname{hyperref} package assumes that the \cmd\contentsline\ command will be given four arguments.
-% Therefore it cannot successfully process a \filename{.toc} file that had been written by standard \LaTeX.
-% We fix things up by always writing that fourth argument and by supplying a \cmd\contentsline\ command that
-% can read them.
-%
-% We also give the \cmd\newlabel\ command's second argument five tokens.
-%
-% Finally, we wrap \LaTeX's \cmd\contentsline\ command with code to detect the case
-% where the expected procedure is not defined, and we give it a syntax with no semantics.
-%
-% We switch over to this new definition only after \classname{hyperref} has loaded.
-% \begin{macrocode}
-\def\addcontentsline#1#2#3{%
- \addtocontents{#1}{%
- \protect\contentsline{#2}{#3}{\thepage}{}%
- }%
-}%
-\def\label#1{%
- \@bsphack
- \protected@write\@auxout{}{%
- \string\newlabel{#1}{{\@currentlabel}{\thepage}{}{}{}}%
- }%
- \@esphack
-}%
-\def\ltx@contentsline#1{%
- \expandafter\@ifnotrelax\csname l@#1\endcsname{}{%
- \expandafter\let\csname l@#1\endcsname\@gobbletwo
- }%
- \contentsline@latex{#1}%
-}%
-\appdef\document@inithook{%
- \let\contentsline@latex\contentsline
- \let\contentsline\ltx@contentsline
-}%
-% \end{macrocode}
-%
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Footnotes within floats, unfloating floats, float font}%
-%
-% \begin{macro}{\caption}
-% DPC: Er a bit of a hack, but seems best way of supporting normal
-% \LaTeX\ syntax at this point: If a caption is used below a table,
-% then put out the footnotes before the caption.
-% \changes{4.0b}{1999/06/20}{Support the hack with \cs{prepdef}, and delay until \cs{AtBeginDocument} time, since \classname{hyperref} clobbers \cs{caption}.}
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \prepdef\caption{\minipagefootnote@here}%
-}%
-% \end{macrocode}
-%
-% Note on \classname{hyperref} compatibility:
-% this change to the \cmd\caption\ command is compatible with the
-% ``Automated \LaTeX\ hypertext cross-references'' patches of that package.
-%
-% All the same, I think Sebastian's changes to \cmd\caption\ and \cmd\@caption\
-% could bear with some improvement.
-% The following implementation requires knowing only the pattern part of the
-% \cmd\@caption\ macro:
-%\begin{verbatim}
-%\def\caption{%
-% \H@refstepcounter\@captype
-% \hyper@makecurrent{\@captype}%
-% \@dblarg{\H@caption\@captype}%
-%}%
-%\def\H@caption#1[#2]#3{%
-% \@caption{#1}[#2]{%
-% \ifHy@nesting
-% \hyper@@anchor{\@currentHref}{#3}%
-% \else
-% \hyper@@anchor{\@currentHref}{\relax}#3%
-% \fi
-% }%
-%}\end{verbatim}
-%
-% \end{macro}
-%
-% \begin{macro}{\minipagefootnote@init}
-% \begin{macro}{\minipagefootnote@here}
-% \begin{macro}{\minipagefootnote@foot}
-% \begin{macro}{\minipagefootnote@pick}
-% \begin{macro}{\minipagefootnote@drop}
-% Procedure to deal with footnotes accumulated within a minipage environment.
-% These procedures encapsulate all uses of the \cmd\@mpfootins\ box.
-%
-%
-% Note: \cmd\minipagefootnote@here\ must \emph{not} be executed within the MVL!
-% \begin{macrocode}
-\def\minipagefootnote@init{%
- \setbox\@mpfootins\box\voidb@x
-}%
-\def\minipagefootnote@pick{%
- \global\setbox\@mpfootins\vbox\bgroup
- \unvbox\@mpfootins
-}%
-\def\minipagefootnote@drop{%
- \egroup
-}%
-\def\minipagefootnote@here{%
- \par
- \@ifvoid\@mpfootins{}{%
- \vskip\skip\@mpfootins
- \fullinterlineskip
- \@ifinner{%
- \vtop{\unvcopy\@mpfootins}%
- {\setbox\z@\lastbox}%
- }{}%
- \unvbox\@mpfootins
- }%
-}%
-\def\minipagefootnote@foot{%
- \@ifvoid\@mpfootins{}{%
- \insert\footins\bgroup\unvbox\@mpfootins\egroup
- }%
-}%
-\def\endminipage{%
- \par
- \unskip
- \minipagefootnote@here
- \@minipagefalse %% added 24 May 89
- \color@endgroup
- \egroup
- \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\floats@sw}
-% \changes{4.1b}{2008/08/12}{Default assignment of \cs{float@sw} now, not at \cs{AtBeginDocument} time.}%
-% The Boolean \cmd\floats@sw\ signifies that floats are to be floated;
-% if false, that floats are to be deferred to the end of the document.
-% Note that the assignment of this Boolean is to be overridden by
-% the document class in response to user-selected options.
-% \begin{macrocode}
-\@booleantrue\floats@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@xfloat}
-% \begin{macro}{\@mpmakefntext}
-% The float start-code is redefined to set up footnotes in the style of minipage.
-% Also, the \cmd\floats@sw\ Boolean informs us that floats are to be
-% all placed \texttt{here}.
-% Note that, to protect against the Boolean being undefined
-% at this late hour, we default it globally to true.
-%
-% \changes{4.0b}{1999/06/20}{AO: Removed superfluous \cs{def}s, changed to using \cs{floats@sw} as the flag. Also stopped using DPC's \cs{if@twocolumn} flag: using \cs{floats@sw} instead. Also added \cs{par}\cs{vskip}\cs{z@skip} after the \cs{minipagefootnotes} so that the float box would have zero depth like the kernel one. }
-% \changes{4.0c}{1999/11/13}{(AO, 110) Install hooks for endfloats processing}
-% \changes{4.0d}{2000/04/10}{(AO, 127) Floats placed [h] to allow page breaks}
-% \changes{4.0d}{2000/05/19}{(AO, 224) Hyperref compatibility.}
-% \changes{4.0e}{2000/11/16}{(AO, 221) Remove samepage command from @xfloat@prep: If the float can break over pages, we want better control.}
-% \changes{4.1a}{2008/07/07}{\cs{@xfloat@prep} calls \cs{ltx@footnote@pop} to restore the original \cs{ltx@footmark} and \cs{ltx@foottext} procedures, in case footnote processing has switched.}
-% \changes{4.1b}{2008/08/12}{No need to protect against undefined \cs{float@sw}}
-%
-% \begin{macrocode}
-\let\@xfloat@LaTeX\@xfloat
-\def\@xfloat#1[#2]{%
- \@xfloat@prep
- \@nameuse{fp@proc@#2}%
- \floats@sw{\@xfloat@LaTeX{#1}[#2]}{\@xfloat@anchored{#1}[]}%
-}%
-\def\@xfloat@prep{%
- \ltx@footnote@pop
- \def\@mpfn{mpfootnote}%
- \def\thempfn{\thempfootnote}%
- \c@mpfootnote\z@
- \let\H@@footnotetext\H@@mpfootnotetext
-}%
-\let\ltx@footnote@pop\@empty
-\def\@xfloat@anchored#1[#2]{%
- \def\@captype{#1}%
- \begin@float@pagebreak
- \let\end@float\end@float@anchored
- \let\end@dblfloat\end@float@anchored
- \hsize\columnwidth
- \@parboxrestore
- \@floatboxreset
- \minipagefootnote@init
-}%
-\def\end@float@anchored{%
- \minipagefootnote@here
- \par\vskip\z@skip
- \par
- \end@float@pagebreak
-}%
-\def\begin@float@pagebreak{\par\addvspace\intextsep}%
-\def\end@float@pagebreak{\par\addvspace\intextsep}%
-\def\@mpmakefntext#1{%
- \parindent=1em
- \noindent
- \hb@xt@1em{\hss\@makefnmark}%
- #1%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Writing floats out to a file}%
-%
-% \begin{macro}{\do@if@floats}
-% \changes{4.1b}{2008/08/12}{No need to protect against undefined \cs{float@sw}}
-% The procedure \cmd\do@if@floats\ should be executed at
-% \cmd\class@documenthook\ time: it arranges to write out
-% the floats of the given class to a temporary file, to be
-% read back later (deferred floats),
-% given that \cmd\floats@sw\ is false.
-% Note that, to protect against the Boolean being undefined
-% at this late hour, we default it globally to true.
-% \begin{macrocode}
-\def\do@if@floats#1#2{%
- \floats@sw{}{%
-% \end{macrocode}
-% Open the stream to save out the document's floats of this class.
-% \begin{macrocode}
- \expandafter\newwrite
- \csname#1write\endcsname
- \expandafter\def
- \csname#1@stream\endcsname{\jobname#2}%
- \expandafter\immediate
- \expandafter\openout
- \csname#1write\endcsname
- \csname#1@stream\endcsname\relax
-% \end{macrocode}
-% Swap environments.
-% If the class writer has defined, e.g., \env{figure@write},
-% then we use this as the procedure to execute for writing
-% the float out to the external stream.
-% Otherwise, the replacement of \cmd\@float\ by \cmd\write@float\
-% should do the right thing for float environments defined
-% in the simple way of \classname{classes.dtx}.
-% \begin{macrocode}
- \@ifxundefined\@float@LaTeX{%
- \let\@float@LaTeX\@float
- \let\@dblfloat@LaTeX\@dblfloat
- \let\@float\write@float
- \let\@dblfloat\write@floats
- }{}%
- \let@environment{#1@float}{#1}%
- \let@environment{#1@floats}{#1*}%
- \@ifxundefined@cs{#1@write}{}{%
- \let@environment{#1}{#1@write}%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\print@float}
-% The procedure \cmd\print@float\ prints out the
-% deferred floats.
-% \changes{4.0b}{1999/06/20}{only execute if there really were floats of the given type}
-% \changes{4.0c}{1999/11/13}{*-form mandates pagebreak at each float; only print section head if there is something there.}
-% \changes{4.0d}{2000/05/23}{Allow things to break over pages by setting array@default.}
-% \changes{4.1b}{2008/08/12}{If class option \classoption{lengthcheck} is in effect, log the height of this float class.}
-%
-% Here, we make use of the \cmd\floats@sw\ Boolean to select
-% the non-floating type of processing.
-% \begin{macrocode}
-\def\triggerpar{\leavevmode\@@par}%
-\def\oneapage{\def\begin@float@pagebreak{\newpage}\def\end@float@pagebreak{\newpage}}%
-\def\print@float#1#2{%
- \lengthcheck@sw{%
- \total@float{#1}%
- }{}%
- \@ifxundefined@cs{#1write}{}{%
- \begingroup
- \@booleanfalse\floats@sw
- #2%
- \raggedbottom
- \def\array@default{v}% floats must
- \let\@float\@float@LaTeX
- \let\@dblfloat\@dblfloat@LaTeX
- \let\trigger@float@par\triggerpar
- \let@environment{#1}{#1@float}%
- \let@environment{#1*}{#1@floats}%
- \expandafter\prepdef\csname#1\endcsname{\trigger@float@par}%
- \expandafter\prepdef\csname#1*\endcsname{\trigger@float@par}%
- \@namedef{fps@#1}{h!}%
- \expandafter\immediate
- \expandafter\closeout
- \csname#1write\endcsname
- \everypar{%
- \global\let\trigger@float@par\relax
- \global\everypar{}\setbox\z@\lastbox
- \@ifxundefined@cs{#1sname}{}{%
- \begin@float@pagebreak
- \expandafter\section
- \expandafter*%
- \expandafter{%
- \csname#1sname\endcsname
- }%
- }%
- }%
- \input{\csname#1@stream\endcsname}%
- \endgroup
- \global\expandafter\let\csname#1write\endcsname\relax
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tally@float}
-% \begin{macro}{\total@float}
-% \changes{4.1b}{2008/08/12}{Tally and log the height of a float class}
-% If we are tallying column inches, \cmd\tally@float\ tallies a contribution to \cmd\ftype@\ \cmd\@captype,
-% depending upon the width of \cmd\@currbox.
-% In effect, each float class is tallied in two sections, one for narrow, one for wide floats.
-%
-% If statistics are wanted, \cmd\total@float\ logs the tally for the given float class.
-% \changes{4.1f}{2009/07/10}{(AO, 518) Tally register overflow when locument is long}
-% The quantity \cmd\@twopowerfourteen\ is $2^{14}$, \cmd\@twopowertwo\ is $2^{2}$.
-% \begin{macrocode}
-\chardef\@xvi=16\relax
-\mathchardef\@twopowerfourteen="4000
-\mathchardef\@twopowertwo="4
-\def\tally@float#1{%
- \begingroup
-% \end{macrocode}
-% We strip all but the least significant 5 bits from \cmd\count\ \cmd\@currbox,
-% and put them into \cmd\@tempcnta. We then subtract 16 from \cmd\count\ \cmd\@currbox
-% (unless this would make it negative), effectively reversing the process
-% carried out in \cmd\@float.
-% \begin{macrocode}
- \@tempcnta\count\@currbox
- \divide\@tempcnta\@xxxii
- \multiply\@tempcnta\@xxxii
- \advance\count\@currbox-\@tempcnta
- \divide\@tempcnta\@xxxii
- \@ifnum{\count\@currbox>\@xvi}{%
- \advance\count\@currbox-\@xvi\@booleantrue\@temp@sw
- }{%
- \@booleanfalse\@temp@sw
- }%
-% \end{macrocode}
-% If so desired, we log the characteristics of this float object:
-% float class and float placement parameters, height, depth, and width.
-% \begin{macrocode}
- \show@box@size@sw{%
- \class@info{Float #1
- (\the\@tempcnta)[\@temp@sw{16+}{}\the\count\@currbox]^^J%
- (\the\ht\@currbox+\the\dp\@currbox)X\the\wd\@currbox
- }%
- }{}%
- \endgroup
-% \end{macrocode}
-% Here we tally the height of this float object.
-% \begin{macrocode}
- \expandafter\let
- \expandafter\@tempa
- \csname fbox@\csname ftype@#1\endcsname\endcsname
- \@ifnotrelax\@tempa{%
- \@ifhbox\@tempa{%
- \setbox\@tempboxa\vbox{\unvcopy\@currbox\hrule}%
- \dimen@\ht\@tempboxa
- \divide\dimen@\@twopowerfourteen
- \@ifdim{\wd\@tempboxa<\textwidth}{%
- \advance\dimen@\ht\@tempa
- \global\ht\@tempa\dimen@
- }{%
- \advance\dimen@\dp\@tempa
- \global\dp\@tempa\dimen@
- }%
- }{}%
- }{}%
-}%
-\def\total@float#1{%
- \expandafter\let
- \expandafter\@tempa
- \csname fbox@\csname ftype@#1\endcsname\endcsname
- \@ifnotrelax\@tempa{%
- \@ifhbox\@tempa{%
- \@tempdima\the\ht\@tempa\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima
- \@tempdimb\the\dp\@tempa\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb
- \class@info{Total #1: Column(\the\@tempcnta pt), Page(\the\@tempcnta pt)}%
- }{}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\write@float}
-% \begin{macro}{\write@floats}
-% \begin{macro}{\write@@float}
-% Handles the case where the name of the float is the same as
-% that of the stream. Note that
-% \env{longtable} does \emph{not} fit this case.
-% Note also: \cmd\write@float\ is \emph{not} a user-level environment,
-% therefore it is properly not defined with \cmd\newenvironment.
-% \begin{macrocode}
-\def\write@float#1{\write@@float{#1}{#1}}%
-\def\endwrite@float{\@Esphack}%
-\def\write@floats#1{\write@@float{#1*}{#1}}%
-\def\endwrite@floats{\@Esphack}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\write@@float}
-% \changes{4.0b}{1999/06/20}{AO: Fixed spurious \texttt{CR} and (return) characters in output file. Also, if the document did not have the \cs{end}\texttt{figure} on a line of its own, the macro wouldn't work. Fixed.}
-% \begin{macrocode}
-\def\write@@float#1#2{%
- \ifhmode
- \@bsphack
- \fi
- \chardef\@tempc\csname#2write\endcsname
- \toks@{\begin{#1}}%
- \def\@tempb{#1}%
- \expandafter\let\csname end#1\endcsname\endwrite@float
- \catcode`\^^M\active
- \@makeother\{\@makeother\}\@makeother\%
- \write@floatline
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\write@floatline}
-% \begin{macro}{\@write@floatline}
-% \begin{macro}{\float@end@tag}
-% The procedure \cmd\write@floatline\ only parses;
-% it passes its result to \cmd\@write@floatline, which
-% writes the line to output, then tests the line
-% for the \cmd\end\arg{float} tokens with
-% aid of the \cmd\float@end@tag\ procedure.
-% \begin{macrocode}
-\begingroup
- \catcode`\[\the\catcode`\{\catcode`\]\the\catcode`\}\@makeother\{\@makeother\}%
- \gdef\float@end@tag#1\end{#2}#3\@nul[%
- \def\@tempa[#2]%
- \@ifx[\@tempa\@tempb][\end[#2]][\write@floatline]%
- ]%
- \obeylines%
- \gdef\write@floatline#1^^M[%
- \begingroup%
- \newlinechar`\^^M%
- \toks@\expandafter[\the\toks@#1]\immediate\write\@tempc[\the\toks@]%
- \endgroup%
- \toks@[]%
- \float@end@tag#1\end{}\@nul%
- ]%
-\endgroup
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \subsection{Counters}
-% The following definitions override those of the \LaTeX\ kernel,
-% providing for a greater range of inputs.
-% \begin{macrocode}
-\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or
- k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
- y\or z\or aa\or bb\or cc\or dd\or ee\or ff\or gg\or hh\or ii\or jj\or
- kk\or ll\or mm\or nn\or oo\or pp\or qq\or rr\or ss\or tt\or uu\or
- vv\or ww\or xx\or yy\or zz\else\@ctrerr\fi}
-% \end{macrocode}
-%
-%
-% \subsection{Customization of Sections}%
-%
-% Patch the standard \LaTeX\ sectioning procedure to:
-%\begin{itemize}
-%\item
-% Allow a sectioning command to trigger the title page, or more generally
-% to recognize that it is the first object in the document,
-% so we headpatch \cmd\@startsection.
-%
-%\item
-% Allow a tail command in |#6| to uppercase the title, so we retain
-% DPC's braces.
-%
-%\item
-% Allow each type of sectioning command to format its number differently,
-% so we generalize \cmd\@seccntformat.
-%
-%\item
-% Allow each type of sectioning command to format its argument differently,
-% so we generalize \cmd\@hangfrom.
-%
-%\item
-% Allow the starred form of the command to
-% mark (the running head) and
-% make an entry in the TOC,
-% so we put \cmd\@ssect\ on the same footing as \cmd\@sect.
-%
-% Note that the tokens passed to the TOC now are \emph{not}
-% the optional argument of the command, but the required.
-% This means that the user can no longer use the former
-% to put variant content in to the TOC as the Manual says.
-%
-% Instead, the optional argument is used to put an alternative
-% title into the running headers, a better choice.
-%
-%\end{itemize}
-%
-% \begin{macro}{\@startsection}
-% Patch a head hook into the basic sectioning command.
-% Treat \cmd\@sect\ and \cmd\@ssect\ on an equal footing:
-% now their pattern parts are identical.
-% \begin{macrocode}
-\def\@startsection#1#2#3#4#5#6{%
- \@startsection@hook
- \if@noskipsec \leavevmode \fi
- \par
- \@tempskipa #4\relax
- \@afterindenttrue
- \ifdim \@tempskipa <\z@
- \@tempskipa -\@tempskipa \@afterindentfalse
- \fi
- \if@nobreak
- \everypar{}%
- \else
- \addpenalty\@secpenalty\addvspace\@tempskipa
- \fi
- \@ifstar
- {\@dblarg{\@ssect@ltx{#1}{#2}{#3}{#4}{#5}{#6}}}%
- {\@dblarg{\@sect@ltx {#1}{#2}{#3}{#4}{#5}{#6}}}%
-}%
-\def\@startsection@hook{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@sect}
-% When defining \cmd\@svsec, do not expand \cmd\@seccntformat.
-% Put brace characters back where they were before David Carlisle got at them
-% (i.e., as if \cmd\@hangfrom\ had two arguments).
-% Protect the mark mechanism from an undefined meaning.
-% Pass |#8| to the TOC instead of |#7|.
-% Remove \cmd\relax\ from the replacement part of \cmd\@svsec.
-%
-% The procedure \cmd\@hangfrom\ and \cmd\@runin@to\ can
-% be used to process the argument of the head.
-% The head can define, e.g., \cmd\@hangfrom@section, to
-% do its own processing.
-%
-% In using \cmd\H@refstepcounter\ in place of \cmd\refstepcounter\ we rely on
-% either loading before any package that patches the latter, or
-% the convention that the former is the original \LaTeX\ procedure.
-%
-% \begin{macrocode}
-\class@info{Repairing broken LateX \string\@sect}%
-\def\@sect@ltx#1#2#3#4#5#6[#7]#8{%
- \@ifnum{#2>\c@secnumdepth}{%
- \def\H@svsec{\phantomsection}%
- \let\@svsec\@empty
- }{%
- \H@refstepcounter{#1}%
- \def\H@svsec{%
- \phantomsection
- }%
- \protected@edef\@svsec{{#1}}%
- \@ifundefined{@#1cntformat}{%
- \prepdef\@svsec\@seccntformat
- }{%
- \expandafter\prepdef
- \expandafter\@svsec
- \csname @#1cntformat\endcsname
- }%
- }%
- \@tempskipa #5\relax
- \@ifdim{\@tempskipa>\z@}{%
- \begingroup
- \interlinepenalty \@M
- #6{%
- \@ifundefined{@hangfrom@#1}{\@hang@from}{\csname @hangfrom@#1\endcsname}%
- {\hskip#3\relax\H@svsec}{\@svsec}{#8}%
- }%
- \@@par
- \endgroup
- \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}%
- \addcontentsline{toc}{#1}{%
- \@ifnum{#2>\c@secnumdepth}{%
- \protect\numberline{}%
- }{%
- \protect\numberline{\csname the#1\endcsname}%
- }%
- #8}%
- }{%
- \def\@svsechd{%
- #6{%
- \@ifundefined{@runin@to@#1}{\@runin@to}{\csname @runin@to@#1\endcsname}%
- {\hskip#3\relax\H@svsec}{\@svsec}{#8}%
- }%
- \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}%
- \addcontentsline{toc}{#1}{%
- \@ifnum{#2>\c@secnumdepth}{%
- \protect\numberline{}%
- }{%
- \protect\numberline{\csname the#1\endcsname}%
- }%
- #8}%
- }%
- }%
- \@xsect{#5}%
-}%
-\def\@hang@from#1#2#3{\@hangfrom{#1#2}#3}%
-\def\@runin@to #1#2#3{#1#2#3}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@ssect}
-% Put brace characters back where they were before David Carlisle got at them
-% (as if \cmd\@hangfrom\ has two arguments).
-% Possibly set a mark.
-% Make a TOC entry.
-%
-% Note that, for compatibility with the \classname{hyperref} package, we
-% need to provide the interface required by that package
-% (actually required by \file{pdfmark.def} and \file{nameref.sty}),
-% namely
-% the definition of \cmd\@currentlabelname\ (but now removed),
-% the insertion of the procedure \cmd\Sectionformat\ (but why is this needed?), and
-% the call to \cmd\phantomsection\ (which must precede the call to \cmd\addcontentsline).
-% We also have to sidestep the patch to \cmd\@ssect\ in that same file, therefore
-% we use a different control sequence name in the call from \cmd\@startsection.
-% \changes{4.0c}{1999/11/13}{(AO, 116) Hyperref compatibility}
-% \changes{4.0f}{2001/07/13}{(AO, 404) Hyperref compatibility}
-% \begin{macrocode}
-\def\@ssect@ltx#1#2#3#4#5#6[#7]#8{%
-% \end{macrocode}
-% Removed |\def\@currentlabelname{#8}|
-% \begin{macrocode}
- \def\H@svsec{\phantomsection}%
- \@tempskipa #5\relax
- \@ifdim{\@tempskipa>\z@}{%
- \begingroup
- \interlinepenalty \@M
- #6{%
- \@ifundefined{@hangfroms@#1}{\@hang@froms}{\csname @hangfroms@#1\endcsname}%
-% \end{macrocode}
-% Removed |{\hskip#3\relax\H@svsec}{\Sectionformat{#8}{#1}}|
-% \begin{macrocode}
- {\hskip#3\relax\H@svsec}{#8}%
- }%
- \@@par
- \endgroup
- \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}%
- \addcontentsline{toc}{#1}{\protect\numberline{}#8}%
- }{%
- \def\@svsechd{%
- #6{%
- \@ifundefined{@runin@tos@#1}{\@runin@tos}{\csname @runin@tos@#1\endcsname}%
-% \end{macrocode}
-% Removed |{\hskip#3\relax\H@svsec}{\Sectionformat{#8}{#1}}|
-% \begin{macrocode}
- {\hskip#3\relax\H@svsec}{#8}%
- }%
- \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}%
- \addcontentsline{toc}{#1}{\protect\numberline{}#8}%
- }%
- }%
- \@xsect{#5}%
-}%
-\def\@hang@froms#1#2{#1#2}%
-\def\@runin@tos #1#2{#1#2}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\init@hyperref}
-% \changes{4.1b}{2008/08/12}{Acquire \classname{hyperref} savoire}
-% Document classes that incorporate this package will be \classname{hyperref}-savvy.
-% (To accomplish this, we ensure that \cmd\hyperanchor\ and \cmd\hyper@last\ are both defined.)
-% Being \classname{hyperref}-savvy levels some requirements on us, but the benefits are many.
-%
-% One is that the TOC will not get amnesia and require a full set of three typesetting runs before its formatting is stable.
-% Instead, only two runs are required: the first updates the auxiliary file, the second the TOC.
-% However, the formatting of the document does not change.
-%
-% Another aspect of being \classname{hyperref}-savvy is that the syntax of commands in the \file{.aux} file will not change
-% if \classname{hyperref} is turned on or off.
-%
-% Note that \cmd\hyper@anchorstart\ and \cmd\hyper@anchorend\ constitute the programming interface
-% for a hypertext anchor (the target of a hypertext link); \cmd\hyper@linkstart\ and \cmd\hyper@linkend\
-% are the interface for a hypertext link.
-% \begin{macrocode}
-\def\init@hyperref{%
- \providecommand\phantomsection{}%
- \providecommand\hyper@makecurrent[1]{}%
- \providecommand\Hy@raisedlink[1]{}%
- \providecommand\hyper@anchorstart[1]{}%
- \providecommand\hyper@anchorend{}%
- \providecommand\hyper@linkstart[2]{}%
- \providecommand\hyper@linkend{}%
- \providecommand\@currentHref{}%
-}%
-\let\H@refstepcounter\refstepcounter
-\appdef\document@inithook{%
- \init@hyperref
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sec@upcase}
-% Upper case for sections (optional upper case items). These are
-% created so that some headings can be toggled between mixed case and
-% upper case readily.
-% Headings that might be changed can be wrapped in the style file in
-% \cmd\sec@upcase\arg{text} constructs;
-% the expansion of \cmd\sec@upcase\ is
-% controlled here. It is \cmd\relax\ by default (mixed case heads), and
-% can easily be changed to \cmd\uppercase\ if desired.
-% If mixed-case headings are wanted by the editor, authors {\em must}
-% supply mixed case text, although this is what authors should be doing
-% anyway.
-% (Mixed can be converted to upper,
-% but the reverse transformation cannot be automated.)
-%
-% The following setting gives the \LaTeX\ default.
-% \begin{macrocode}
-\def\sec@upcase#1{\relax{#1}}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Patch the \env{tabular} and \env{array} Environments}
-%
-% \begin{macro}{\endtabular}
-% \begin{macro}{\endarray}
-% \changes{4.1b}{2008/08/12}{Patch the array package even later: after all package patches go in.}
-% We headpatch the begin processing and tailpatch the end processing
-% of the \env{tabular} and \env{array} environments.
-% A document class can define these hooks as needed.
-%
-% We proceed with care to make further patches to
-% support tabulars that break over pages.
-% Our patches will not necessarily be effective for
-% other packages that replace the \LaTeX\ \env{array} and \env{tabular}
-% environments. I know of none that do so.
-% \begin{macrocode}
-\appdef\document@inithook{%
- \@ifpackageloaded{array}{\switch@array}{\switch@tabular}%
- \prepdef\endtabular{\endtabular@hook}%
- \@provide\endtabular@hook{}%
- \prepdef\endarray{\endarray@hook}%
- \@provide\endarray@hook{}%
- \providecommand\array@hook{}%
-% \end{macrocode}
-% Install, effectively, a head patch to \cmd\tabular.
-% In order to avoid interference from, e.g., the \classname{array} package,
-% we must perform this patch only \emph{after} packages load.
-% \changes{4.0c}{1999/11/13}{(AO, 130) Interference from array package}
-% \begin{macrocode}
- \prepdef\@tabular{\tabular@hook}%
- \@provide\tabular@hook{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\switch@tabular}
-% \begin{macro}{\switch@array}
-% The two procedures \cmd\switch@tabular\ and \cmd\switch@array\
-% apply needed patches to the various tabular procedures,
-% the former applying to the \LaTeX\ kernel, the latter to the
-% required \classname{array} package (and to the number of other
-% required packages that load it).
-%
-% \begin{macrocode}
-\def\switch@tabular{%
- \let\@array@sw\@array@sw@array
- \@ifx{\@array\@array@LaTeX}{%
- \@ifx{\multicolumn\multicolumn@LaTeX}{%
- \@ifx{\@tabular\@tabular@LaTeX}{%
- \@ifx{\@tabarray\@tabarray@LaTeX}{%
- \@ifx{\array\array@LaTeX}{%
- \@ifx{\endarray\endarray@LaTeX}{%
- \@ifx{\endtabular\endtabular@LaTeX}{%
- \@ifx{\@mkpream\@mkpream@LaTeX}{%
- \@ifx{\@addamp\@addamp@LaTeX}{%
- \@ifx{\@arrayacol\@arrayacol@LaTeX}{%
- \@ifx{\@tabacol\@tabacol@LaTeX}{%
- \@ifx{\@arrayclassz\@arrayclassz@LaTeX}{%
- \@ifx{\@tabclassiv\@tabclassiv@LaTeX}{%
- \@ifx{\@arrayclassiv\@arrayclassiv@LaTeX}{%
- \@ifx{\@tabclassz\@tabclassz@LaTeX}{%
- \@ifx{\@classv\@classv@LaTeX}{%
- \@ifx{\hline\hline@LaTeX}{%
- \@ifx{\@tabularcr\@tabularcr@LaTeX}{%
- \@ifx{\@xtabularcr\@xtabularcr@LaTeX}{%
- \@ifx{\@xargarraycr\@xargarraycr@LaTeX}{%
- \@ifx{\@yargarraycr\@yargarraycr@LaTeX}{%
- \true@sw
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- {%
- \class@info{Patching LaTeX tabular.}%
- }{%
- \class@info{Unrecognized LaTeX tabular. Please update this document class! (Proceeding with fingers crossed.)}%
- }%
- \let\@array\@array@ltx
- \let\multicolumn\multicolumn@ltx
- \let\@tabular\@tabular@ltx
- \let\@tabarray\@tabarray@ltx
- \let\array\array@ltx
- \let\endarray\endarray@ltx
- \let\endtabular\endtabular@ltx
- \let\@mkpream\@mkpream@ltx
- \let\@addamp\@addamp@ltx
- \let\@arrayacol\@arrayacol@ltx
- \let\@tabacol\@tabacol@ltx
- \let\@arrayclassz\@arrayclassz@ltx
- \let\@tabclassiv\@tabclassiv@ltx
- \let\@arrayclassiv\@arrayclassiv@ltx
- \let\@tabclassz\@tabclassz@ltx
- \let\@classv\@classv@ltx
- \let\hline\hline@ltx
- \let\@tabularcr\@tabularcr@ltx
- \let\@xtabularcr\@xtabularcr@ltx
- \let\@xargarraycr\@xargarraycr@ltx
- \let\@yargarraycr\@yargarraycr@ltx
-}%
-% \end{macrocode}
-% \changes{4.1b}{2008/08/12}{(AO, 505) Try to accommodate \classname{colortbl}.}
-% \begin{macrocode}
-\def\switch@array{%
- \@ifpackageloaded{colortbl}{\let\switch@array@info\colortbl@message}{\let\switch@array@info\array@message}%
- \let\@array@sw\@array@sw@LaTeX
- \@ifx{\@array\@array@array}{%
- \@ifx{\@tabular\@tabular@array}{%
- \@ifx{\@tabarray\@tabarray@array}{%
- \@ifx{\array\array@array}{%
- \@ifx{\endarray\endarray@array}{%
- \@ifx{\endtabular\endtabular@array}{%
- \@ifx{\@mkpream\@mkpream@array}{%
- \@ifx{\@classx\@classx@array}{%
- \@ifx{\insert@column\insert@column@array}{%
- \@ifx{\@arraycr\@arraycr@array}{%
- \@ifx{\@xarraycr\@xarraycr@array}{%
- \@ifx{\@xargarraycr\@xargarraycr@array}{%
- \@ifx{\@yargarraycr\@yargarraycr@array}{%
- \true@sw
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }%
- }{%
- \false@sw
- }{%
- \class@info{Patching array package.}%
- }{%
- \switch@array@info
- }%
- \let\@array \@array@array@new
- \let\@@array \@array % Cosi fan tutti
- \let\@tabular \@tabular@array@new
- \let\@tabarray \@tabarray@array@new
- \let\array \array@array@new
- \let\endarray \endarray@array@new
- \let\endtabular\endtabular@array@new
- \let\@mkpream \@mkpream@array@new
- \let\@classx \@classx@array@new
- \let\@arrayacol\@arrayacol@ltx
- \let\@tabacol \@tabacol@ltx
- \let\insert@column\insert@column@array@new
- \expandafter\let\csname endtabular*\endcsname\endtabular % Cosi fan tutti
- \let\@arraycr \@arraycr@new
- \let\@xarraycr \@xarraycr@new
- \let\@xargarraycr\@xargarraycr@new
- \let\@yargarraycr\@yargarraycr@new
-}%
-\def\array@message{%
- \class@info{Unrecognized array package. Please update this document class! (Proceeding with fingers crossed.)}%
-}%
-\def\colortbl@message{%
- \class@info{colortbl package is loaded. (Proceeding with fingers crossed.)}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@array@sw}
-% The Boolean \cmd\@array@sw\ must be different depending on
-% whether the \classname{array} package is loaded.
-% \begin{macrocode}
-\def\@array@sw@LaTeX{\@ifx{\\\@tabularcr}}%
-\def\@array@sw@array{\@ifx{\d@llarbegin\begingroup}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabular}
-% \changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-% We provide the old versions of \cmd\@tabular\ along with the respective new versions.
-% The change here is to avoid committing to LR mode. That will be done later (as late as possible, naturally).
-%
-% Compatibility note: I had done \cmd\let\ \cmd\col@sep\ \cmd\@undefined\ here, but
-% this was not compatible with \classname{colortbl}. I have removed that statement.
-% \begin{macrocode}
-\def\@tabular@LaTeX{%
- \leavevmode
- \hbox\bgroup$%
- \let\@acol\@tabacol
- \let\@classz\@tabclassz
- \let\@classiv\@tabclassiv
- \let\\\@tabularcr
- \@tabarray
-}%
-\def\@tabular@ltx{%
- \let\@acoll\@tabacoll
- \let\@acolr\@tabacolr
- \let\@acol\@tabacol
- \let\@classz\@tabclassz
- \let\@classiv\@tabclassiv
- \let\\\@tabularcr
- \@tabarray
-}%
-\def\@tabular@array{%
- \leavevmode
- \hbox\bgroup$%
- \col@sep\tabcolsep
- \let\d@llarbegin\begingroup
- \let\d@llarend\endgroup
- \@tabarray
-}%
-\def\@tabular@array@new{%
- \let\@acoll\@tabacoll
- \let\@acolr\@tabacolr
- \let\@acol\@tabacol
-% \end{macrocode}
-% \let\col@sep\@undefined
-% \begin{macrocode}
- \let\d@llarbegin\begingroup
- \let\d@llarend\endgroup
- \@tabarray
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabarray}
-% Here we provide old and new versions of the \cmd\@tabarray\ procedure.
-% The change here is to parametrize the default vertical alignment,
-% which is 'c' in standard \LaTeX.
-% Under some circumstances, we want to change this to, say, 'v'.
-%
-% \changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-% FIXME: must decouple \env{array} and \env{tabular}. Done (it seems).
-%
-% Note on \classname{colortbl}: this package head-patches \cmd\@tabarray
-% with its own command \cmd\CT@start, and tails onto \cmd\endarray\ with \cmd\CT@end.
-% It fortuitously does the former at \cmd\AtBeginDocument\ time, and, fortuitously,
-% we do not patch \cmd\endarray, which it overwrites.
-% \begin{macrocode}
-\def\@tabarray@LaTeX{%
- \m@th\@ifnextchar[\@array{\@array[c]}%
-}%
-\def\@tabarray@ltx{%
- \m@th\@ifnextchar[\@array{\expandafter\@array\expandafter[\array@default]}%
-}%
-\def\@tabarray@array{%
- \@ifnextchar[{\@@array}{\@@array[c]}%
-}%
-\def\@tabarray@array@new{%
- \@ifnextchar[{\@@array}{\expandafter\@@array\expandafter[\array@default]}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabularcr}
-% \begin{macro}{\@tbpen}
-% \begin{macro}{\@tabularcr}
-% \begin{macro}{\@xtabularcr}
-% \begin{macro}{\@xargarraycr}
-% \begin{macro}{\@yargarraycr}
-% \begin{macro}{\@arraycr}
-% \begin{macro}{\@xarraycr}
-% We provide for the \cmd\\ command within \env{tabular} to provide control over page breaking, just the same as
-% that of \env{eqnarray}.
-%
-% The count register \cmd\intertabularlinepenalty\ is similar to \cmd\interdisplaylinepenalty: it is the penalty
-% associated with each row of a tabular. When it is set to \cmd\@M, the tabular will cleave together.
-%
-% The count register \cmd\@tbpen\ is similar to \cmd\@eqpen: it memorizes the penalty to use after the current tabular row.
-% If the \cmd\\ command is in its star form, then \cmd\@eqpen\ is set to \cmd\@M.
-%
-% We append code to \cmd\samepage\ so that a tabular within its scope will cleave together.
-%
-% We keep the standard definition of \cmd\@tabularcr\ in \cmd\@tabularcr@LaTeX\ for reference,
-% and provide a new definition that works like \cmd\@eqncr: it sets \cmd\@tbpen\ to \cmd\@M\ if the star was given.
-%
-% We also provide new versions of \cmd\@xtabularcr, \cmd\@xargarraycr, and \cmd\@yargarraycr, all of which invoke \cmd\@tbpen.
-%
-% The \cmd\switch@tabular\ procedure switches in the new definitions.
-% \begin{macrocode}
-\newcount\intertabularlinepenalty
-\intertabularlinepenalty=100
-\newcount\@tbpen
-\appdef\samepage{\intertabularlinepenalty\@M}%
-\def\@tabularcr@LaTeX{{\ifnum 0=`}\fi \@ifstar \@xtabularcr \@xtabularcr}%
-\def\@tabularcr@ltx{{\ifnum 0=`}\fi \@ifstar {\global \@tbpen \@M \@xtabularcr }{\global \@tbpen \intertabularlinepenalty \@xtabularcr }}%
-\def\@xtabularcr@LaTeX{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr }}%
-\def\@xtabularcr@ltx{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr \noalign {\penalty \@tbpen }}}%
-\def\@xargarraycr@LaTeX#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr}%
-\def\@xargarraycr@ltx#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr \noalign {\penalty \@tbpen }}%
-\def\@yargarraycr@LaTeX#1{\cr \noalign {\vskip #1}}%
-\def\@yargarraycr@ltx#1{\cr \noalign {\penalty \@tbpen \vskip #1}}%
-% \end{macrocode}
-%
-% If the \classname{array} package has been loaded, we must alter the meanings of
-% \cmd\@arraycr, \cmd\@xarraycr, \cmd\@xargarraycr, and \cmd\@yargarraycr.
-% In this case, it is \cmd\switch@array\ that switches in the new definitions.
-% \begin{macrocode}
-\def\@arraycr@array{%
- \relax
- \iffalse{\fi\ifnum 0=`}\fi
- \@ifstar \@xarraycr \@xarraycr
-}%
-\def\@arraycr@new{%
- \relax
- \iffalse{\fi\ifnum 0=`}\fi
- \@ifstar {\global \@tbpen \@M \@xarraycr }{\global \@tbpen \intertabularlinepenalty \@xarraycr }%
-}%
-\def\@xarraycr@array{%
- \@ifnextchar [%]
- \@argarraycr {\ifnum 0=`{}\fi\cr}%
-}%
-\def\@xarraycr@new{%
- \@ifnextchar [%]
- \@argarraycr {\ifnum 0=`{}\fi\cr \noalign {\penalty \@tbpen }}%
-}%
-\def\@xargarraycr@array#1{%
- \unskip
- \@tempdima #1\advance\@tempdima \dp\@arstrutbox
- \vrule \@depth\@tempdima \@width\z@
- \cr
-}%
-\def\@xargarraycr@new#1{%
- \unskip
- \@tempdima #1\advance\@tempdima \dp\@arstrutbox
- \vrule \@depth\@tempdima \@width\z@
- \cr
- \noalign {\penalty \@tbpen }%
-}%
-\def\@yargarraycr@array#1{%
- \cr
- \noalign{\vskip #1}%
-}%
-\def\@yargarraycr@new#1{%
- \cr
- \noalign{\penalty \@tbpen \vskip #1}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\array}
-% We provide old and new versions of the \cmd\array\ procedure for both \LaTeX\ and the \classname{array} package.
-% The change here is to accomodate the new procedures that will be called for the array boundaries, even
-% though at present they are not special.
-% A thought: here is where matrices can be readily accomodated.
-% \begin{macrocode}
-\def\array@LaTeX{%
- \let\@acol\@arrayacol
- \let\@classz\@arrayclassz
- \let\@classiv\@arrayclassiv
- \let\\\@arraycr
- \let\@halignto\@empty
- \@tabarray
-}%
-\def\array@ltx{%
- \@ifmmode{}{\@badmath$}%
- \let\@acoll\@arrayacol
- \let\@acolr\@arrayacol
- \let\@acol\@arrayacol
- \let\@classz\@arrayclassz
- \let\@classiv\@arrayclassiv
- \let\\\@arraycr
- \let\@halignto\@empty
- \@tabarray
-}%
-\def\array@array{%
- \col@sep\arraycolsep
- \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}%
- \@tabarray
-}
-\def\array@array@new{%
- \@ifmmode{}{\@badmath$}%
- \let\@acoll\@arrayacol
- \let\@acolr\@arrayacol
- \let\@acol\@arrayacol
-% \end{macrocode}
-% \changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-% Removed: \verb+\let\col@sep\@undefined+
-% \begin{macrocode}
- \def\d@llarbegin{$}%
- \let\d@llarend\d@llarbegin
- \gdef\@halignto{}%
- \@tabarray
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@array}
-% Here we provide old and new versions of \cmd\@array.
-% The change here is to provide a convenient, flexible, and extensible
-% mechanism for new vertical alignment options.
-%
-% Instead of testing the optional argument with \cmd\if, we
-% use a dispatcher based on \cmd\csname.
-%
-% We also refrain from using \cmd\ialign, which would set
-% the \cmd\tabskip\ to the wrong value.
-%
-% Finally, the procedure to set the \cmd\@arstrutbox\
-% is broken out so that it can be patched.
-% \begin{macrocode}
-\def\@array@LaTeX[#1]#2{%
- \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
- \bgroup
- \setbox\@arstrutbox\hbox{%
- \vrule \@height\arraystretch\ht\strutbox
- \@depth\arraystretch \dp\strutbox
- \@width\z@}%
- \@mkpream{#2}%
- \edef\@preamble{%
- \ialign \noexpand\@halignto
- \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}%
- \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
- \let\tabularnewline\\%
- \let\par\@empty
- \let\@sharp##%
- \set@typeset@protect
- \lineskip\z@skip\baselineskip\z@skip
- \ifhmode \@preamerr\z@ \@@par\fi
- \@preamble
-}%
-\def\@array@ltx[#1]#2{%
- \@nameuse{@array@align@#1}%
- \set@arstrutbox
- \@mkpream{#2}%
- \prepdef\@preamble{%
- \tabskip\tabmid@skip
- \@arstrut
- }%
- \appdef\@preamble{%
- \tabskip\tabright@skip
- \cr
- \array@row@pre
- }%
-% \let\@startpbox\@@startpbox
-% \let\@endpbox\@@endpbox
- \let\tabularnewline\\%
- \let\par\@empty
- \let\@sharp##%
- \set@typeset@protect
- \lineskip\z@skip\baselineskip\z@skip
- \tabskip\tableft@skip\relax
- \ifhmode \@preamerr\z@ \@@par\fi
- \everycr{}%
- \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble
-}%
-%
-\def\set@arstrutbox{%
- \setbox\@arstrutbox\hbox{%
- \vrule \@height\arraystretch\ht\strutbox
- \@depth\arraystretch \dp\strutbox
- \@width\z@
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@array@array}
-%
-% \begin{macrocode}
-\def\@array@array[#1]#2{%
- \@tempdima \ht \strutbox
- \advance \@tempdima by\extrarowheight
- \setbox \@arstrutbox \hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
- \begingroup
- \@mkpream{#2}%
- \xdef\@preamble{\noexpand \ialign \@halignto
- \bgroup \@arstrut \@preamble
- \tabskip \z@ \cr}%
- \endgroup
- \@arrayleft
- \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
- \bgroup
- \let \@sharp ##\let \protect \relax
- \lineskip \z@
- \baselineskip \z@
- \m@th
- \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble
-}%
-\def\@array@array@new[#1]#2{%
- \@tempdima\ht\strutbox
- \advance\@tempdima by\extrarowheight
- \setbox\@arstrutbox\hbox{%
- \vrule \@height\arraystretch\@tempdima
- \@depth \arraystretch\dp\strutbox
- \@width \z@
- }%
- \begingroup
- \@mkpream{#2}%
- \xdef\@preamble{\@preamble}%
- \endgroup
- \prepdef\@preamble{%
- \tabskip\tabmid@skip
- \@arstrut
- }%
- \appdef\@preamble{%
- \tabskip\tabright@skip
- \cr
- \array@row@pre
- }%
- \@arrayleft
- \@nameuse{@array@align@#1}%
- \m@th
- \let\\\@arraycr
- \let\tabularnewline\\%
- \let\par\@empty
- \let\@sharp##%
- \set@typeset@protect
- \lineskip\z@\baselineskip\z@
- \tabskip\tableft@skip
- \everycr{}%
- \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endarray}
-% Here we provide old and new versions of \cmd\endarray.
-% The change here is to use a single procedure to close
-% out any array-like structure, namely \cmd\endarray@ltx.
-% It merely closes out the \cmd\halign.
-% \begin{macrocode}
-\def\endarray@LaTeX{%
- \crcr\egroup\egroup
-}%
-\def\endarray@ltx{%
- \crcr\array@row@pst\egroup\egroup
-}%
-\def\endarray@array{%
- \crcr \egroup \egroup \@arrayright \gdef\@preamble{}%
-}%
-\def\endarray@array@new{%
- \crcr\array@row@pst\egroup\egroup % Same as \endarray@ltx
- \@arrayright
- \global\let\@preamble\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endtabular}
-%
-% \begin{macrocode}
-\def\endtabular@LaTeX{%
- \crcr\egroup\egroup $\egroup
-}%
-\def\endtabular@ltx{%
- \endarray
-}%
-\def\endtabular@array{%
- \endarray $\egroup
-}%
-\def\endtabular@array@new{%
- \endarray
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{endtabular*}
-% Here we provide a proper definition for the star-form of \enve{endtabular}.
-% It is one of the enduring curiosities that the \LaTeX\ kernel continues to use
-% dangerously and inappropriately ``optimized'' definitions for such commands.
-% \begin{macrocode}
-\@namedef{endtabular*}{\endtabular}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\multicolumn}
-%
-% \begin{macrocode}
-\long\def\multicolumn@LaTeX#1#2#3{%
- \multispan{#1}\begingroup
- \@mkpream{#2}%
- \def\@sharp{#3}\set@typeset@protect
- \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
- \@arstrut \@preamble\hbox{}\endgroup\ignorespaces
-}%
-\long\def\multicolumn@ltx#1#2#3{%
- \multispan{#1}%
- \begingroup
- \@mkpream{#2}%
- \def\@sharp{#3}%
- \set@typeset@protect
- %\let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
- \@arstrut
- \@preamble
- \hbox{}%
- \endgroup
- \ignorespaces
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@array@align@}
-% \begin{macro}{\array@default}
-% Here are the various procedures for the vertical alignment options.
-% The change from standard \LaTeX\ is that we do not go into math mode
-% in every case: only when required by \cmd\vcenter.
-% Also, we use \cmd\aftergroup\ to close out the boxes and modes we have started.
-% It requires only that each procedure issue exactly one unmatched \cmd\bgroup.
-%
-% We establish here the default vertical alignment.
-% \begin{macrocode}
-\def\@array@align@t{\leavevmode\vtop\bgroup}%
-\def\@array@align@b{\leavevmode\vbox\bgroup}%
-\def\@array@align@c{\leavevmode\@ifmmode{\vcenter\bgroup}{$\vcenter\bgroup\aftergroup$\aftergroup\relax}}%
-\def\@array@align@v{%
- \@ifmmode{%
- \@badmath
- \vcenter\bgroup
- }{%
- \@ifinner{%
- $\vcenter\bgroup\aftergroup$
- }{%
- \@@par\bgroup
- }%
- }%
-}%
-\def\array@default{c}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\array@row@pre}
-% \begin{macro}{\array@row@pst}
-% \begin{macro}{\array@row@rst}
-% The procedure \cmd\array@row@rst\ reestablishes a default context for
-% an alignment, so that they can be nested.
-% Any environment or procedure that alters the way alignments are formatted
-% must patch this procedure to restore from that alteration.
-% To start things off, we equate \cmd\@array@align@v\ to \cmd\@array@align@c,
-% because it does not make sense to do the former in any context other
-% than the MVL or in a list that will be unboxed onto the MVL.
-% \begin{macrocode}
-\def\array@row@rst{%
- \let\@array@align@v\@array@align@c
-}%
-\def\array@row@pre{}%
-\def\array@row@pst{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\toprule}
-% \begin{macro}{\colrule}
-% \begin{macro}{\botrule}
-% Default definitions for \cmd\toprule, \cmd\colrule, \cmd\botrule
-% \begin{macrocode}
-\newcommand\toprule{\tab@rule{\column@font}{\column@fil}{\frstrut}}%
-\newcommand\colrule{\unskip\lrstrut\\\tab@rule{\body@font}{}{\frstrut}}%
-\newcommand\botrule{\unskip\lrstrut\\\noalign{\hline@rule}{}}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\hline}
-% \begin{macrocode}
-\def\hline@LaTeX{%
- \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet
- \reserved@a\@xhline
-}%
-\def\hline@ltx{%
- \noalign{%
- \ifnum0=`}\fi
- \hline@rule
- \futurelet\reserved@a\@xhline
- % \noalign ended in \@xhline
-}%
-\def\@xhline@unneeded{%
- \say\reserved@a
- \ifx\reserved@a\hline
- \vskip\doublerulesep
- \vskip-\arrayrulewidth
- \fi
- \ifnum0=`{\fi}%
-}%
-\def\tab@rule#1#2#3{%
- \crcr
- \noalign{%
- \hline@rule
- \gdef\@arstrut@hook{%
- \global\let\@arstrut@hook\@empty
- #3%
- }%
- \gdef\cell@font{#1}%
- \gdef\cell@fil{#2}%
- }%
-}%
-\def\column@font{}%
-\def\column@fil{}%
-\def\body@font{}%
-\def\cell@font{}%
-\def\frstrut{}%
-\def\lrstrut{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arstrut@hline}
-% \begin{macro}{\@arstrut@org}
-% \begin{macro}{\@arstrut@hook}
-% \begin{macro}{\@arstrutbox@hline}
-% \begin{macro}{\set@arstrutbox}
-% \begin{macro}{\hline@rule}
-% The procedure \cmd\@arstrut@hline\ is substantially the same as
-% \cmd\@arstrut, except the strut copied in is \cmd\@arstrutbox@hline
-% instead of \cmd\@arstrutbox.
-%
-% The procedure \cmd\@arstrut@hook\ is redefined in \cmd\tab@rule!
-%
-% The register \cmd\@arstrutbox@hline.
-%
-% We append to \cmd\set@arstrutbox\ the code necessary to set a strut following an \cmd\hline.
-%
-% The procedure \cmd\hline@rule\ lays down a rule, and changes the meaning of \cmd\@arstrut\
-% so that the next line will be correctly strutted.
-%
-% The \cmd\@arstrut@hline@clnc\ is a klootch, a magic number.
-% \begin{macrocode}
-\def\@arstrut@hline{%
- \relax
- \@ifmmode{\copy}{\unhcopy}\@arstrutbox@hline
- \@arstrut@hook
-}%
-%
-\let\@arstrut@org\@arstrut
-\def\@arstrut@hook{%
- \global\let\@arstrut\@arstrut@org
-}%
-%
-\newbox\@arstrutbox@hline
-\appdef\set@arstrutbox{%
- \setbox\@arstrutbox@hline\hbox{%
- \setbox\z@\hbox{$0^{0}_{}$}%
- \dimen@\ht\z@\advance\dimen@\@arstrut@hline@clnc
- \@ifdim{\dimen@<\arraystretch\ht\strutbox}{\dimen@=\arraystretch\ht\strutbox}{}%
- \vrule \@height\dimen@
- \@depth\arraystretch \dp\strutbox
- \@width\z@
- }%
-}%
-%
-\def\hline@rule{%
- \hrule \@height \arrayrulewidth
- \global\let\@arstrut\@arstrut@hline
-}%
-\def\@arstrut@hline@clnc{2\p@}% % Klootch: magic number
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tableft@skip}
-% \begin{macrocode}
-\def\tableft@skip{\z@skip}%
-\def\tabmid@skip{\z@skip}%\@flushglue
-\def\tabright@skip{\z@skip}%
-\def\tableftsep{\tabcolsep}%
-\def\tabmidsep{\tabcolsep}%
-\def\tabrightsep{\tabcolsep}%
-\def\cell@fil{}%
-\def\pbox@hook{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arstrut}
-% \begin{macrocode}
-\appdef\@arstrut{\@arstrut@hook}%
-\let\@arstrut@hook\@empty
-\def\@addtopreamble{\appdef\@preamble}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@mkpream}
-% \begin{macrocode}
-\def\@mkpream@LaTeX#1{%
- \@firstamptrue\@lastchclass6
- \let\@preamble\@empty
- \let\protect\@unexpandable@protect
- \let\@sharp\relax
- \let\@startpbox\relax\let\@endpbox\relax
- \@expast{#1}%
- \expandafter\@tfor \expandafter
- \@nextchar \expandafter:\expandafter=\reserved@a\do
- {\@testpach\@nextchar
- \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii
- \or \@classiv \or\@classv \fi\@lastchclass\@chclass}%
- \ifcase \@lastchclass \@acol
- \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi
-}%
-\def\@mkpream@ltx#1{%
- \@firstamptrue
- \@lastchclass6
- \let\@preamble\@empty
- \let\protect\@unexpandable@protect
- \let\@sharp\relax
-%\let\@startpbox\relax\let\@endpbox\relax
- \@expast{#1}%
- \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\reserved@a
- \do{%
- \expandafter\@testpach\expandafter{\@nextchar}%
- \ifcase\@chclass
- \@classz
- \or
- \@classi
- \or
- \@classii
- \or
- \@classiii
- \or
- \@classiv
- \or
- \@classv
- \fi
- \@lastchclass\@chclass
- }%
- \ifcase\@lastchclass
- \@acolr % right-hand column
- \or
- \or
- \@preamerr\@ne
- \or
- \@preamerr\tw@
- \or
- \or
- \@acolr % right-hand column
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\insert@column}
-% \begin{macrocode}
-\def\insert@column@array{%
- \the@toks \the \@tempcnta
- \ignorespaces \@sharp \unskip
- \the@toks \the \count@ \relax
-}%
-\def\insert@column@array@new{%
- \the@toks\the\@tempcnta
- \array@row@rst\cell@font
- \ignorespaces\@sharp\unskip
- \the@toks\the\count@
- \relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@mkpream@relax}
-% The procedure \cmd\@mkpream@relax\ participates in a strange and wonderful
-% method of binding the alignment procedure---but only certain parts thereof.
-%
-% Here is how it works: in \LaTeX, the \classname{array} package, and in the
-% \classname{longtable} package alike, there is a need to create an alignment
-% preamble (using \cmd\@mkpream) for use by the upcoming \cmd\halign.
-% Then, in both \classname{array} and \classname{longtable}, \TeX's \cmd\edef\
-% is used to `compile in place' that alignment preamble.
-%
-% In the case of \classname{array},
-% the operation is done in order to pre-expand the use of \texttt{*};
-% in \classname{longtable}, it is to set the widths of the columns.
-%
-% Now, during this \cmd\edef, certain control sequence names must \emph{not}
-% be expanded, and those are robustified by \cmd\@mkpream@relax.
-%
-% \begin{macrocode}
-\def\@mkpream@relax{%
- \let\tableftsep \relax
- \let\tabmidsep \relax
- \let\tabrightsep \relax
- \let\array@row@rst\relax
- \let\cell@font \relax
- \let\@startpbox \relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@mkpream}
-% We insert \cmd\@mkpream@relax\ at the head of the procedure.
-% The robustifying of \cmd\@startpbox\ and \cmd\@endpbox\ is taken over by this mechanism.
-% We also invoke \cmd\@acolr\ instead of \cmd\@acol\ when a right-hand column is at hand.
-%
-% \changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-% Note on \classname{colortbl}: this package head-patches \cmd\@mkpream\ to robustify
-% a number of its commands during the construction of the alignment preamble.
-% The best we can do is to supplement the \cmd\@mkpream@relax\ procedure to perform this action.
-% \begin{macrocode}
-\def\@mkpream@array#1{%
- \gdef\@preamble{}\@lastchclass 4 \@firstamptrue
- \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
- \@temptokena{#1}\@tempswatrue
- \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
- \count@\m@ne
- \let\the@toks\relax
- \prepnext@tok
- \expandafter \@tfor \expandafter \@nextchar
- \expandafter :\expandafter =\the\@temptokena \do
- {\@testpach
- \ifcase \@chclass \@classz \or \@classi \or \@classii
- \or \save@decl \or \or \@classv \or \@classvi
- \or \@classvii \or \@classviii
- \or \@classx
- \or \@classx \fi
- \@lastchclass\@chclass}%
- \ifcase\@lastchclass
- \@acol \or
- \or
- \@acol \or
- \@preamerr \thr@@ \or
- \@preamerr \tw@ \@addtopreamble\@sharp \or
- \or
- \else \@preamerr \@ne \fi
- \def\the@toks{\the\toks}%
-}%
-\def\@mkpream@array@new#1{%
- \gdef\@preamble{}%
- \@lastchclass\f@ur
- \@firstamptrue
- \let\@sharp\relax
- \@mkpream@relax
-%\let\@startpbox\relax\let\@endpbox\relax
- \@temptokena{#1}\@tempswatrue
- \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
- \count@\m@ne
- \let\the@toks\relax
- \prepnext@tok
- \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the\@temptokena
- \do{%
- \@testpach
- \ifcase\@chclass
- \@classz
- \or
- \@classi
- \or
- \@classii
- \or
- \save@decl
- \or
- \or
- \@classv
- \or
- \@classvi
- \or
- \@classvii
- \or
- \@classviii
- \or
- \@classx
- \or
- \@classx
- \fi
- \@lastchclass\@chclass
- }%
- \ifcase\@lastchclass
- \@acolr % right-hand column
- \or
- \or
- \@acolr % right-hand column
- \or
- \@preamerr\thr@@
- \or
- \@preamerr\tw@\@addtopreamble\@sharp
- \or
- \or
- \else
- \@preamerr\@ne
- \fi
- \def\the@toks{\the\toks}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@mkpream@relax}
-% \changes{4.1b}{2008/08/12}{(AO, 505) try to accommodate \classname{colortbl}.}
-% David P. Carlisle's \classname{colortbl} package headpatches \cmd\@mkpream\ in place
-% during package loading, so it does not know whom it is working on.
-% Let us try to accomodate this package by doing what it would have liked to have done.
-%
-% Note: it would be far better to break out this mechanism in the \classname{array} package.
-% \begin{macrocode}
-\appdef\@mkpream@relax{%
- \let\CT@setup \relax
- \let\CT@color \relax
- \let\CT@do@color \relax
- \let\color \relax
- \let\CT@column@color\relax
- \let\CT@row@color \relax
- \let\CT@cell@color \relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@addamp}
-% \begin{macrocode}
-\def\@addamp@LaTeX{%
- \if@firstamp\@firstampfalse\else\edef\@preamble{\@preamble &}\fi
-}%
-\def\@addamp@ltx{%
- \if@firstamp\@firstampfalse\else\@addtopreamble{&}\fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arrayacol}
-% \begin{macrocode}
-\def\@arrayacol@LaTeX{%
- \edef\@preamble{\@preamble \hskip \arraycolsep}%
-}%
-\def\@arrayacol@ltx{%
- \@addtopreamble{\hskip\arraycolsep}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabacol}
-% \begin{macrocode}
-\def\@tabacoll{%
- \@addtopreamble{\hskip\tableftsep\relax}%
-}%
-\def\@tabacol@LaTeX{%
- \edef\@preamble{\@preamble \hskip \tabcolsep}%
-}%
-\def\@tabacol@ltx{%
- \@addtopreamble{\hskip\tabmidsep\relax}%
-}%
-\def\@tabacolr{%
- \@addtopreamble{\hskip\tabrightsep\relax}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arrayclassz}
-% \begin{macrocode}
-\def\@arrayclassz@LaTeX{%
- \ifcase \@lastchclass \@acolampacol \or \@ampacol \or
- \or \or \@addamp \or
- \@acolampacol \or \@firstampfalse \@acol \fi
- \edef\@preamble{\@preamble
- \ifcase \@chnum
- \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
- \or \hfil$\relax\@sharp$\fi}%
-}%
-\def\@arrayclassz@ltx{%
- \ifcase\@lastchclass
- \@acolampacol
- \or
- \@ampacol
- \or
- \or
- \or
- \@addamp
- \or
- \@acolampacol
- \or
- \@firstampfalse\@acoll
- \fi
- \ifcase\@chnum
- \@addtopreamble{%
- \hfil\array@row@rst$\relax\@sharp$\hfil
- }%
- \or
- \@addtopreamble{%
- \array@row@rst$\relax\@sharp$\hfil
- }%
- \or
- \@addtopreamble{%
- \hfil\array@row@rst$\relax\@sharp$%
- }%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabclassz}
-% \begin{macrocode}
-\def\@tabclassz@LaTeX{%
- \ifcase\@lastchclass
- \@acolampacol
- \or
- \@ampacol
- \or
- \or
- \or
- \@addamp
- \or
- \@acolampacol
- \or
- \@firstampfalse\@acol
- \fi
- \edef\@preamble{%
- \@preamble{%
- \ifcase\@chnum
- \hfil\ignorespaces\@sharp\unskip\hfil
- \or
- \hskip1sp\ignorespaces\@sharp\unskip\hfil
- \or
- \hfil\hskip1sp\ignorespaces\@sharp\unskip
- \fi}}%
-}%
-\def\@tabclassz@ltx{%
- \ifcase\@lastchclass
- \@acolampacol
- \or
- \@ampacol
- \or
- \or
- \or
- \@addamp
- \or
- \@acolampacol
- \or
- \@firstampfalse\@acoll
- \fi
- \ifcase\@chnum
- \@addtopreamble{%
- {\hfil\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}%
- }%
- \or
- \@addtopreamble{%
- {\cell@fil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}%
- }%
- \or
- \@addtopreamble{%
- {\hfil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\cell@fil}%
- }%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabclassiv}
-% \begin{macrocode}
-\def\@tabclassiv@LaTeX{%
- \@addtopreamble\@nextchar
-}%
-\def\@tabclassiv@ltx{%
- \expandafter\@addtopreamble\expandafter{\@nextchar}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arrayclassiv}
-% \begin{macrocode}
-\def\@arrayclassiv@LaTeX{%
- \@addtopreamble{$\@nextchar$}%
-}%
-\def\@arrayclassiv@ltx{%
- \expandafter\@addtopreamble\expandafter{\expandafter$\@nextchar$}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classv}
-% \begin{macrocode}
-\def\@classv@LaTeX{%
- \@addtopreamble{\@startpbox{\@nextchar}\ignorespaces
- \@sharp\@endpbox}%
-}%
-\def\@classv@ltx{%
- \expandafter\@addtopreamble
- \expandafter{%
- \expandafter \@startpbox
- \expandafter {\@nextchar}%
- \pbox@hook\array@row@rst\cell@font\ignorespaces\@sharp\@endpbox
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classx}
-% \begin{macrocode}
-\def\@classx@array{%
- \ifcase \@lastchclass
- \@acolampacol \or
- \@addamp \@acol \or
- \@acolampacol \or
- \or
- \@acol \@firstampfalse \or
- \@addamp
- \fi
-}%
-\def\@classx@array@new{%
- \ifcase \@lastchclass
- \@acolampacol
- \or
- \@addamp \@acol
- \or
- \@acolampacol
- \or
- \or
- \@firstampfalse\@acoll
- \or
- \@addamp
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Repair other broken parts of \LaTeX}
-%
-% \begin{macro}{\@xbitor}
-% Expansion part has extraneous space token. Removed.
-% \begin{macrocode}
-\def\@xbitor@LaTeX #1{\@tempcntb \count#1
- \ifnum \@tempcnta =\z@
- \else
- \divide\@tempcntb\@tempcnta
- \ifodd\@tempcntb \@testtrue\fi
- \fi}%
-\def\@xbitor@ltx#1{%
- \@tempcntb\count#1\relax
- \@ifnum{\@tempcnta=\z@}{}{%
- \divide\@tempcntb\@tempcnta
- \@ifodd\@tempcntb{\@testtrue}{}%
- }%
-}%
-\@ifx{\@xbitor\@xbitor@LaTeX}{%
- \class@info{Repairing broken LaTeX \string\@xbitor}%
-}{%
- \class@info{Unrecognized LaTeX \string\@xbitor. Please update this document class! (Proceeding with fingers crossed.)}%
-}%
-\let\@xbitor\@xbitor@ltx
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Syntax}
-% \begin{macro}{\@gobble@opt@one}
-% The \cmd\@gobble@opt@one\ command eats up an optional argument
-% and one required argument.
-% \begin{macrocode}
-\newcommand*\@gobble@opt@one[2][]{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Auto-indented Contents}
-% Facility to automatically determine the proper indentation of
-% the TOC entries.
-%
-% Note on \classname{hyperref} compatibility:
-% We must respect that
-% \cmd\contentsline\ now has a fourth argument.
-% So, instead of trying to override the meaning of \cmd\contentsline,
-% we use the aux file to remember max values from one run to the next.
-%
-% In this respect, this package retains compatibility with
-% \classname{hyperref}.
-%
-% \begin{macro}{\@starttoc}
-% Install hooks at beginning and end of the TOC processing.
-% \begin{macrocode}
-\def\@starttoc#1{%
- \begingroup
- \toc@pre
- \makeatletter
- \@input{\jobname.#1}%
- \if@filesw
- \expandafter\newwrite\csname tf@#1\endcsname
- \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
- \fi
- \@nobreakfalse
- \toc@post
- \endgroup
-}%
-\def\toc@pre{}%
-\def\toc@post{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\toc@@font}
-% Interface for setting the formatting characteristics of this part
-% of the TOC.
-%
-% Note: \cmd\toc@@font\ is the common font for all auto-sizing toc commands,
-% although this, too, could become a dispatcher.
-% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname from \cs{@dotsep} to \cs{ltxu@dotsep}. The former is understood in mu. (What we wanted was a dimension.)}%
-% \begin{macrocode}
-\def\toc@@font{}%
-\def\ltxu@dotsep{\z@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\l@section}
-% Interface for determining which TOC elements are automatically indented.
-%
-% All of the \cmd\l@\dots\ commands simply go through the
-% utility procedure \cmd\l@@sections. The calling convention is
-% to pass the name of self and the name of parent.
-% If you want to exclude any of these from the indentation
-% scheme, simply leave the \cmd\l@\dots\ command undefined.
-%
-% Note that the parent of ``section'' is nil, so we have to define a stub.
-% \begin{verbatim}\def\l@section{\l@@sections{}{section}}% Implicit #3#4\end{verbatim}
-% \begin{verbatim}\def\tocleft@{\z@}%\end{verbatim}
-% \begin{verbatim}\def\l@subsection{\l@@sections{section}{subsection}}% Implicit #3#4\end{verbatim}
-% \begin{verbatim}\def\l@subsubsection{\l@@sections{subsection}{subsubsection}}% Implicit #3#4\end{verbatim}
-% \begin{verbatim}\def\l@paragraph{\l@@sections{subsubsection}{paragraph}}% Implicit #3#4\end{verbatim}
-% \begin{verbatim}\def\l@subparagraph#1#2{\l@@sections{paragraph}{subparagraph}}% Implicit #3#4\end{verbatim}
-% \end{macro}
-%
-% Glom some \cmd\dimen\ registers.
-% \begin{macrocode}
-\let\tocdim@section \leftmargini
-\let\tocdim@subsection \leftmarginii
-\let\tocdim@subsubsection \leftmarginiii
-\let\tocdim@paragraph \leftmarginiv
-\let\tocdim@appendix \leftmarginv
-\let\tocdim@pagenum \leftmarginvi
-% \end{macrocode}
-%
-% \begin{macro}{\toc@pre@auto}
-% \begin{macro}{\toc@post@auto}
-% We patch \cmd\@starttoc\ to:
-% 1) before TOC processing,
-% initialize the max registers and
-% set the needed dimensions from
-% the values stored in the auxiliary file, and
-% 2) after TOC processing,
-% store out those max register values into the auxiliary file.
-%
-% Note that the font is set here: all other TOC entries must
-% override these font settings.
-%
-% To activate this override of the standard \LaTeX\ processing,
-% the substyle does: \cmd\let\cmd\toc@pre\cmd\toc@pre@auto\
-% and \cmd\let\cmd\toc@post\cmd\toc@post@auto.
-% \begin{macrocode}
-\def\toc@pre@auto{%
- \toc@@font
- \@tempdima\z@
- \toc@setindent\@tempdima{section}%
- \toc@setindent\@tempdima{subsection}%
- \toc@setindent\@tempdima{subsubsection}%
- \toc@setindent\@tempdima{paragraph}%
- \toc@letdimen{appendix}%
- \toc@letdimen{pagenum}%
-}%
-\def\toc@post@auto{%
- \if@filesw
- \begingroup
- \toc@writedimen{section}%
- \toc@writedimen{subsection}%
- \toc@writedimen{subsubsection}%
- \toc@writedimen{paragraph}%
- \toc@writedimen{appendix}%
- \toc@writedimen{pagenum}%
- \endgroup
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\toc@setindent}
-% \begin{macrocode}
-\def\toc@setindent#1#2{%
- \csname tocdim@#2\endcsname\tocdim@min\relax
- \@ifundefined{tocmax@#2}{\@namedef{tocmax@#2}{\z@}}{}%
- \advance#1\@nameuse{tocmax@#2}\relax
- \expandafter\edef\csname tocleft@#2\endcsname{\the#1}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\toc@letdimen}
-% \begin{macrocode}
-\def\toc@letdimen#1{%
- \csname tocdim@#1\endcsname\tocdim@min\relax
- \@ifundefined{tocmax@#1}{\@namedef{tocmax@#1}{\z@}}{}%
- \expandafter\let\csname tocleft@#1\expandafter\endcsname\csname tocmax@#1\endcsname
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\toc@writedimen}
-% \begin{macrocode}
-\def\toc@writedimen#1{%
- \immediate\write\@auxout{%
- \gdef\expandafter\string\csname tocmax@#1\endcsname{%
- \expandafter\the\csname tocdim@#1\endcsname
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\l@@sections}
-% The procedure for formatting the indented TOC entries.
-% We use control sequence names such as \cmd\tocmax@section\ and
-% \cmd\tocleft@section, the former being written to the auxiliary file
-% and the latter only defined for the duration of the TOC processing.
-%
-% Note that the assignment of \cmd\box\cmd\@tempboxa\ by \cmd\set@tocdim@pagenum\
-% must endure over the invocation of |#3|: it contains the
-% page number which will be set just before the \cmd\par.
-%
-% The arguments:\begin{enumerate}
-% \item[\#1] superior section
-% \item[\#2] this section
-% \item[\#3] content, including possible \cmd\numberline
-% \item[\#4] page number\end{enumerate}
-% \begin{macrocode}
-\def\l@@sections#1#2#3#4{%
- \begingroup
- \everypar{}%
- \set@tocdim@pagenum\@tempboxa{#4}%
- \global\@tempdima\csname tocdim@#2\endcsname
- \leftskip\csname tocleft@#2\endcsname\relax
- \dimen@\csname tocleft@#1\endcsname\relax
- \parindent-\leftskip\advance\parindent\dimen@
- \rightskip\tocleft@pagenum plus 1fil\relax
- \skip@\parfillskip\parfillskip\z@
- \let\numberline\numberline@@sections
- \@nameuse{l@f@#2}%
- \ignorespaces#3\unskip\nobreak\hskip\skip@
- \hb@xt@\rightskip{\hfil\unhbox\@tempboxa}\hskip-\rightskip\hskip\z@skip
-% \end{macrocode}
-% \changes{4.1n}{2009/12/13}{(AO, 574) protect against \classname{lineno.sty}, which forces a visit to the output routine, which appears to destroy the value of \cs{@tempdima}}%
-%
-% By side effect, set the value of, e.g., \cmd\tocdim@section.
-%
-% Note that the \cmd\par\ must not be executed before the value of \cmd\@tempdima\ is expanded (outside the current group).
-% Otherwise, the \classname{lineno.sty} package may interfere (it unfortunately does a global assignment of \cmd\@tempdima).
-% \begin{macrocode}
- \expandafter\par
- \expandafter\aftergroup\csname tocdim@#2%
- \expandafter\endcsname
- \expandafter\endgroup
- \the\@tempdima\relax
-}%
-% \end{macrocode}
-% \changes{4.1a}{2008/01/19}{(AO, 479) Per: Dylan Thurston<dpt at math.harvard.edu>}%
-% In the call to \cmd\set@tocdim@pagenum, I am now exposing the use of the particular box register.
-% \begin{macrocode}
-\def\set@tocdim@pagenum#1#2{%
- \setbox#1\hbox{\ignorespaces#2}%
- \@ifdim{\tocdim@pagenum<\wd#1}{\global\tocdim@pagenum\wd#1}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\numberline@@sections}
-% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname from \cs{@dotsep} to \cs{ltxu@dotsep}. The former is understood in mu. (What we wanted was a dimension.)}%
-% The utility procedure for all \cmd\numberline\ processing in indented TOC entries.
-% The first argument is self.
-%
-% We use \cmd\@tempdima\ to pass a value around (via global assignment) because
-% \cmd\numberline\ executes inside a group if the
-% \classname{hyperref} package is loaded.
-% Would that it were not so!
-% \begin{macrocode}
-\def\numberline@@sections#1{%
- \leavevmode\hb@xt@-\parindent{%
- \hfil
- \@if@empty{#1}{}{%
- \setbox\z@\hbox{#1.\kern\ltxu@dotsep}%
- \@ifdim{\@tempdima<\wd\z@}{\global\@tempdima\wd\z@}{}%
- \unhbox\z@
- }%
- }%
- \ignorespaces
-}%
-\def\tocdim@min{\z@}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Lists}
-% \begin{macro}{\list}
-% Using \cmd\parshape\ to implement lists was always suspect
-% (can you get behind \cmd\parshape\cmd\@ne?) and we now see that
-% it was a mistake all along. Why? Because \cmd\parshape, like
-% \cmd\hangindent, achieves its effect via ``shifting'' the \cmd\hbox es
-% in a paragraph
-% instead of using \cmd\leftskip\ and \cmd\parindent, which is
-% robust during column balancing.
-%
-% We introduce the alternative method with a hook into
-% the \LaTeX\ kernel procedure \cmd\list, which is
-% the implementation of all lists.
-%
-% \begin{macrocode}
-\def\list#1#2{%
- \ifnum \@listdepth >5\relax
- \@toodeep
- \else
- \global\advance\@listdepth\@ne
- \fi
- \rightmargin\z@
- \listparindent\z@
- \itemindent\z@
- \csname @list\romannumeral\the\@listdepth\endcsname
- \def\@itemlabel{#1}%
- \let\makelabel\@mklab
- \@nmbrlistfalse
- #2\relax
- \@trivlist
- \parskip\parsep
- \set@listindent
- \ignorespaces
-}%
-\def\set@listindent@parshape{%
- \parindent\listparindent
- \advance\@totalleftmargin\leftmargin
- \advance\linewidth-\rightmargin
- \advance\linewidth-\leftmargin
- \parshape\@ne\@totalleftmargin\linewidth
-}%
-\def\set@listindent@{%
- \parindent\listparindent
- \advance\@totalleftmargin\leftmargin
- \advance\rightskip\rightmargin
- \advance\leftskip\@totalleftmargin
-}%
-\let\set@listindent\set@listindent@parshape
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Hypertext capabilities}
-%
-% \begin{macro}{\href}
-% \begin{macro}{\url}
-% \begin{macro}{\URL@prefix}
-% \begin{macro}{\doi}
-% \begin{macro}{\doibase}
-% \changes{4.1b}{2008/08/12}{(AO, 487) Support for video figures and the \cs{setfloatlink} command}%
-% We provide support for the \cmd\href, \cmd\url, and \cmd\doi\ commands.
-% Packages, like \classname{hyperref}, may override these definitions
-% and provide better semantics.
-% \changes{4.1g}{2009/10/06}{(AO, 532) Both arguments of \cs{href} get sanitized}%
-% \changes{4.1j}{2009/10/24}{(AO, 545) Provide definition for \cs{doi} that does hypertext}%
-% \begin{macrocode}
-\providecommand\href[0]{\begingroup\@sanitize@url\@href}%
-\def\@href#1{\@@startlink{#1}\endgroup\@@href}%
-\def\@@href#1{#1\@@endlink}%
-\providecommand \url [0]{\begingroup\@sanitize@url \@url }%
-\def \@url #1{\endgroup\@href {#1}{\URL@prefix#1}}%
-\providecommand \URL@prefix [0]{URL }%
-\providecommand\doi[0]{\begingroup\@sanitize@url\@doi}%
-\def\@doi#1{\endgroup\@@startlink{\doibase#1}doi:\discretionary {}{}{}#1\@@endlink }%
-%changes{4.2a}{2017/11/21}{(MD) Use updated best practice to use https and doi.org}%
-\providecommand \doibase [0]{https://doi.org/}%
-\providecommand \@sanitize@url[0]{\chardef\cat@space\the\catcode`\ \@sanitize\catcode`\ \cat@space}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@startlink}
-% \begin{macro}{\@@endlink}
-% \begin{macro}{\pdfstartlink@attr}
-% \begin{macro}{\hypertext@enable@ltx}
-% How we define \cmd\@@startlink\ and \cmd\@@endlink\ will depend on
-% whether we are running under \textsc{pdflatex}.
-% If so, and if PDF output is requested, then we use its primitives
-% to implement hypertext,
-% breaking out the link attributes in \cmd\pdfstartlink@attr\
-% and using the \classname{hyperref} defaults;
-% \cmd\pdfstartlink@attr\ can be redefined by a client package.
-% Otherwise we fall back the Hyper\TeX\ standard and leave things to the DVI translator.
-% \changes{4.1j}{2009/10/25}{(AO, 545) hypertext capabilities off by default; enable with \classoption{hypertext}}
-%
-% A class or package that wishes to employ hypertext capabilities should
-% execute the \cmd\hypertext@enable@ltx\ procedure.
-% \begin{macrocode}
-\def\@@startlink#1{}%
-\def\@@endlink{}%
-\@ifxundefined \pdfoutput {\true@sw}{\@ifnum{\z@=\pdfoutput}{\true@sw}{\false@sw}}%
-{%
- \def\@@startlink@hypertext#1{\leavevmode\special{html:<a href="#1">}}%
- \def\@@endlink@hypertext{\special{html:</a>}}%
-}{%
- \def\@@startlink@hypertext#1{%
- \leavevmode
- \pdfstartlink\pdfstartlink@attr
- user{/Subtype/Link/A<</Type/Action/S/URI/URI(#1)>>}%
- \relax
- }%
- \def\@@endlink@hypertext{\pdfendlink}%
- \def\pdfstartlink@attr{attr{/Border[0 0 1 ]/H/I/C[0 1 1]}}%
-}%
-\def\hypertext@enable@ltx{%
- \let\@@startlink\@@startlink@hypertext
- \let\@@endlink\@@endlink@hypertext
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\href}
-% \changes{4.1p}{2010/02/24}{(AO, 582) A patch of \classname{hyperref.sty} to provide backward compatibility to \TeX Live 2007's version 6.75r}%
-% The \cmd\href\ command of \classname{hyperref} was extend somewhere
-% between versions 6.75r and 6.80e. We apply a repair to the earlier
-% version (if present) so that it works like the later version.
-%
-% The issue is the presence of whitespace, either following the \cmd\href\ token
-% or following the first argument's closing brace character.
-%
-% \begin{macrocode}
-\def\href@Hy{\hyper@normalise \href@ }%
-\def\href@Hy@ltx{\@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}}%
-\def\Hy@href#{\hyper@normalise\href@}%
-\begingroup
- \endlinechar=-1 %
- \catcode`\^^A=14 %
- \catcode`\^^M\active
- \catcode`\%\active
- \catcode`\#\active
- \catcode`\_\active
- \catcode`\$\active
- \catcode`\&\active
- \gdef\hyper@normalise@ltx{^^A
- \begingroup
- \catcode`\^^M\active
- \def^^M{ }^^A
- \catcode`\%\active
- \let%\@percentchar
- \let\%\@percentchar
- \catcode`\#\active
- \def#{\hyper@hash}^^A
- \def\#{\hyper@hash}^^A
- \@makeother\&^^A
- \edef&{\string&}^^A
- \edef\&{\string&}^^A
- \edef\textunderscore{\string_}^^A
- \let\_\textunderscore
- \catcode`\_\active
- \let_\textunderscore
- \let~\hyper@tilde
- \let\~\hyper@tilde
- \let\textasciitilde\hyper@tilde
- \let\\\@backslashchar
- \edef${\string$}^^A
- \Hy@safe@activestrue
- \hyper@n@rmalise
- }^^A
- \catcode`\#=6 ^^A
- \gdef\Hy@ActiveCarriageReturn@ltx{^^M}^^A
- \gdef\hyper@n@rmalise@ltx#1#2{^^A
- \def\Hy@tempa{#2}^^A
- \ifx\Hy@tempa\Hy@ActiveCarriageReturn
- \Hy@ReturnAfterElseFi{^^A
- \hyper@@normalise{#1}^^A
- }^^A
- \else
- \Hy@ReturnAfterFi{^^A
- \hyper@@normalise{#1}{#2}^^A
- }^^A
- \fi
- }^^A
- \gdef\hyper@@normalise@ltx#1#2{^^A
- \edef\Hy@tempa{^^A
- \endgroup
- \noexpand#1{\Hy@RemovePercentCr#2%^^M\@nil}^^A
- }^^A
- \Hy@tempa
- }^^A
- \gdef\Hy@RemovePercentCr@ltx#1%^^M#2\@nil{^^A
- #1^^A
- \ifx\limits#2\limits
- \else
- \Hy@ReturnAfterFi{^^A
- \Hy@RemovePercentCr #2\@nil
- }^^A
- \fi
- }^^A
-\endgroup
-\def\switch@hyperref@href{%
- \expandafter\@ifx\expandafter{\csname href \endcsname\href@Hy}{
- \class@info{Repairing hyperref 6.75r \string\href}%
- \let\hyper@normalise\hyper@normalise@ltx
- \let\hyper@@normalise\hyper@@normalise@ltx
- \let\hyper@n@rmalise\hyper@n@rmalise@ltx
- \let\Hy@ActiveCarriageReturn\Hy@ActiveCarriageReturn@ltx
- \let\Hy@RemovePercentCr\Hy@RemovePercentCr@ltx
- \let\href\href@Hy@ltx
- }{}%
-}%
-\appdef\document@inithook{\switch@hyperref@href}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\typeout}
-% We make the \cmd\typeout\ procedure of \LaTeX\ be \cmd\long,
-% because sometimes we are talking about \cmd\par.
-% \begin{macrocode}
-\def\typeout@org#1{%
- \begingroup
- \set@display@protect
- \immediate\write\@unused{#1}%
- \endgroup
-}%
-\long\def\typeout@ltx#1{%
- \begingroup
- \set@display@protect
- \immediate\write\@unused{#1}%
- \endgroup
-}%
-\@ifx{\typeout\typeout@org}{%
- \let\typeout\typeout@ltx
- \true@sw
-}{%
- \rvtx@ifformat@geq{2020/10/01}%
- {\true@sw}{\false@sw}%
-}%
- {\class@info{Making \string\typeout\space \string\long}}%
- {}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{End of the \file{kernel} {\sc docstrip} module}
-% Here ends the module.
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% \Finale
-% \iffalse Here ends the programmer's documentation.\fi
-% \endinput
-%
-\endinput
-%%EOF
diff --git a/macros/latex/contrib/revtex/source/revtex-bst.dtx b/macros/latex/contrib/revtex/source/revtex-bst.dtx
deleted file mode 100644
index c486112370..0000000000
--- a/macros/latex/contrib/revtex/source/revtex-bst.dtx
+++ /dev/null
@@ -1,3873 +0,0 @@
-% \iffalse meta-comment balanced on line 122
-% revtex-bst.dtx: Package to extract .bst files for RevTeX
-% Copyright (c) 2020--2022 American Physical Society.
-% https://journals.aps.org/revtex/
-% mailto:revtex@aps.org
-%
-% 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 Phelype Oleinik.
-%
-% This work consists of the main source file revtex-bst.dtx
-% and the derived files
-% aapmrev4-2.bst, aipauth4-2.bst, aipnum4-2.bst, apsrev4-2.bst, apsrmp4-2.bst
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex revtex-bst.dtx
-%
-% Installation:
-% TDS:bibtex/bst/revtex/
-%
-%<*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 revtex4-2.dtx when run through TeX.
-\input docstrip
-\nopreamble
-\edef\defaultpostamble{%
- \MetaPrefix\space End of customized bst file^^J%
- \MetaPrefix ^^J%
- \MetaPrefix\space End of file `\outFileName'.%
-}
-\askforoverwritefalse
-\keepsilent
-\generate{%
- \file{aapmrev4-2.bst}{\from{revtex-bst.dtx}{aapmrev}}%
- \file{aipauth4-2.bst}{\from{revtex-bst.dtx}{aipauth}}%
- \file{aipnum4-2.bst}{\from{revtex-bst.dtx}{aipnum}}%
- \file{apsrev4-2.bst}{\from{revtex-bst.dtx}{apsrev}}%
- \file{apsrmp4-2.bst}{\from{revtex-bst.dtx}{apsrmp}}%
-}%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* *.bst }
-\Msg{* into a directory searched by TeX;}
-\Msg{* in a TDS-compliant installation:}
-\Msg{* texmf/bibtex/bst/revtex/.}
-\Msg{*}
-\Msg{* Happy BibTeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{revtex-bst.dtx}
-%
-% \StopEventually{}
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "revtex-bst.dtx",
-%%% version = "4.2f",
-%%% date = "2022/06/05",
-%%% author = "Phelype Oleinik (mailto: phelype.oleinik at latex-project.org),
-%%% commissioned by the American Physical Society.
-%%% ",
-%%% copyright = "Copyright (C) 2020--2022 American Physical Society
-%%% distributed under the terms of the
-%%% LaTeX Project Public License 1.3c, see
-%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
-%%% ",
-%%% email = "mailto colon revtex at aps.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "",
-%%% supported = "yes",
-%%% abstract = "",
-%%% }
-%</package>
-% \fi
-%
-% \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}
-%revtex-bst.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex revtex-bst.dtx}}%
-% Typesetting ths file under \TeX\ itself runs the installer,
-% which generates the bibliography style files.
-%\begin{verbatim}
-%aapmrev4-2.bst, aipauth4-2.bst, aipnum4-2.bst,
-%apsrev4-2.bst, apsrmp4-2.bst
-%\end{verbatim}
-%
-% \section{Code common to all modules}%
-%
-% \begin{macrocode}
-%<*aapmrev|aipauth|aipnum|apsrev|apsrmp>
-%%
-%<aapmrev>%% This is file `aapmrev4-2.bst', and is a hand-edited version of aapmrev4-1.bst
-%<aipauth>%% This is file `aipauth4-2.bst', and is a hand-edited version of aipauth4-1.bst
-%<aipnum>%% This is file `aipnum4-2.bst', and is a hand-edited version of aipnum4-1.bst
-%<apsrev>%% This is file `apsrev4-2.bst', and is a hand-edited version of apsrev4-1.bst
-%<apsrmp>%% This is file `apsrmp4-2.bst', and is a hand-edited version of apsrmp4-1.bst
- % ===============================================================
- % IMPORTANT NOTICE:
- % This file can be redistributed and/or modified under the terms
- % of the LaTeX Project Public License Distributed from CTAN
- % archives in directory macros/latex/base/lppl.txt; either
- % version 1 of the License, or any later version.
- % ===============================================================
- %-------------------------------------------------------------------
- % This bibliography style file is intended for texts in ENGLISH
- % This is an author-year citation style bibliography. As such, it is
- % non-standard LaTeX, and requires a special package file to function properly.
- % Such a package is natbib.sty by Patrick W. Daly
- % The form of the \bibitem entries is
- % \bibitem[Jones et al.(1990)]{key}...
- % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
- % The essential feature is that the label (the part in brackets) consists
- % of the author names, as they should appear in the citation, with the year
- % in parentheses following. There must be no space before the opening
- % parenthesis!
- % With natbib v5.3, a full list of authors may also follow the year.
- % In natbib.sty, it is possible to define the type of enclosures that is
- % really wanted (brackets or parentheses), but in either case, there must
- % be parentheses in the label.
- % The \cite command functions as follows:
- % \citet{key} ==>> Jones et al. (1990)
- % \citet*{key} ==>> Jones, Baker, and Smith (1990)
- % \citep{key} ==>> (Jones et al., 1990)
- % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
- % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
- % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
- % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
- % \citeauthor{key} ==>> Jones et al.
- % \citeauthor*{key} ==>> Jones, Baker, and Smith
- % \citeyear{key} ==>> 1990
- %---------------------------------------------------------------------
-%</aapmrev|aipauth|aipnum|apsrev|apsrmp>
-%
-% \subsection{The Frontmatter File}
-% As promised above, here is the contents of the frontmatter file.
-% This file doesn't have any documentation, so just stop early.
-% \begin{macrocode}
-%<*ignore>
-\stop
-\changes{4.2e}{2020/10/03}{(PHO) Initial version---Put all .bst files in a single .dtx}
-%</ignore>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*aapmrev|aipauth|aipnum|apsrev|apsrmp>
-% \end{macrocode}
-%
-% \begin{macrocode}
-
-%<aapmrev>FUNCTION {id.bst} {"aapmrev4-2.bst 2019-01-14 (MD) hand-edited version of aapmrev4-1.bst"}
-%<aipauth>FUNCTION {id.bst} {"aipnauth4-2.bst 2018-12-27 (MD) hand-edited version of apsauth4-1.bst"}
-%<aipnum>FUNCTION {id.bst} {"aipnum4-2.bst 2019-01-14 (MD) hand-edited version of apsrev4-1.bst"}
-%<apsrev>FUNCTION {id.bst} {"apsrev4-2.bst 2019-01-14 (MD) hand-edited version of apsrev4-1.bst"}
-%<apsrmp>FUNCTION {id.bst} {"apsrmp4-2.bst 2018-12-27 (MD) hand-edited version of apsrmp4-1.bst"}
-ENTRY
-{
- address
- archive
- archivePrefix
- author
- bookaddress
- booktitle
- chapter
- collaboration
- doi
- edition
- editor
- eid
- eprint
- howpublished
- institution
- isbn
- issn
- journal
- key
- language
- month
- note
- number
- organization
- pages
- primaryClass
- publisher
- school
- SLACcitation
- series
- title
- translation
- type
- url
- volume
- year
-}{
-}{
- label
- extra.label sort.label
- short.list
-}
-
-INTEGERS
-{
- output.state before.all
- after.word after.punctuation
- after.sentence after.block
-}
-
-INTEGERS
-{
- punctuation.state punctuation.no punctuation.space punctuation.yes
-}
-
-STRINGS { bibfield output.bibfield }
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
- "}" * add.period$
- #-1 #1 substring$ "." =
-}
-
-INTEGERS { arith.mulitplier arith.multiplicand }
-
-FUNCTION {multiply}
-{
- 'arith.multiplicand :=
- 'arith.mulitplier :=
- #0
- { arith.mulitplier #0 > }
- { arith.multiplicand +
- arith.mulitplier #1 - 'arith.mulitplier :=
- }
- while$
-}
-
-FUNCTION {chr.to.hex}
-{
- chr.to.int$
- duplicate$ "0" chr.to.int$ -
- duplicate$ duplicate$ #0 < swap$ #9 > or not
- { swap$ pop$ }
- { pop$
- duplicate$ "A" chr.to.int$ -
- duplicate$ duplicate$ #0 < swap$ #5 > or not
- { swap$ pop$ #10 + }
- { pop$
- duplicate$ "a" chr.to.int$ -
- duplicate$ duplicate$ #0 < swap$ #5 > or not
- { swap$ pop$ #10 + }
- { pop$
- pop$ #-1
- }
- if$
- }
- if$
- }
- if$
-}
-
-INTEGERS { arith.accumulator }
-
-FUNCTION {str.to.hex}
-{ #0 'arith.accumulator :=
- { duplicate$ empty$ not }
- { duplicate$ #1 #1 substring$ chr.to.hex
- duplicate$ #0 <
- { pop$ pop$ ""
- }
- { arith.accumulator #16 multiply + 'arith.accumulator :=
- #2 global.max$ substring$
- }
- if$
- }
- while$
- pop$ arith.accumulator
-}
-
-FUNCTION {diagn.cmntlog}
-{
- duplicate$ top$ "%" swap$ * write$ newline$
-}
-
-INTEGERS { control.key control.author control.editor control.title control.pages control.eprint control.year }
-
-INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed }
-
-FUNCTION { control.init }
-{
- #0
- 'control.key :=
- #0
-%<aipauth> #1 +
-%<apsrmp> #1 +
-%<apsrmp> #2 +
- #8 +
-%<apsrev> #64 +
-%<apsrmp> #64 +
- 'control.author :=
-%<aapmrev> #0
-%<aipauth> #0
-%<aipnum> #0
-%<apsrev> #1
-%<apsrmp> #1
- 'control.author.jnrlst :=
- #0
- 'control.author.dotless :=
- #0
- 'control.author.nospace :=
- #1
- 'control.author.initials :=
- #0
- 'control.author.nocomma :=
-%<!apsrmp> #0
-%<apsrmp> #1
- 'control.author.first :=
-%<aapmrev> #0
-%<aipauth> #1
-%<aipnum> #0
-%<apsrev> #0
-%<apsrmp> #1
- 'control.author.reversed :=
-%<aapmrev> #1
-%<aipauth> #0
-%<aipnum> #1
-%<apsrev> #1
-%<apsrmp> #0
- 'control.editor :=
- #-1
- 'control.title :=
- #0
- 'control.pages :=
- #0
- 'control.eprint :=
- #1
- 'control.year :=
-}
-
-FUNCTION {warning.dependency}
-{
- " (dependency: " * swap$ * ") set " * swap$ int.to.str$ * warning$
-}
-
-FUNCTION {control.check}
-{
- control.editor
- {
- "editor formatted same as author"
- control.author.reversed {
- duplicate$ #0 swap$ "reversed" warning.dependency
- #0 'control.author.reversed :=
- } 'skip$ if$
- control.author.first {
- duplicate$ #0 swap$ "first" warning.dependency
- #0 'control.author.first :=
- } 'skip$ if$
- control.author.nocomma {
- duplicate$ #0 swap$ "nocomma" warning.dependency
- #0 'control.author.nocomma :=
- } 'skip$ if$
- pop$
- } 'skip$ if$
- control.author.reversed 'skip$
- {
- "not reversed"
- control.author.nospace {
- duplicate$ #0 swap$ "nospace" warning.dependency
- #0 'control.author.nospace :=
- } 'skip$ if$
- control.author.jnrlst 'skip$ {
- duplicate$ #1 swap$ "jnrlst" warning.dependency
- #1 'control.author.jnrlst :=
- } if$
- control.author.initials {
- duplicate$ ", initials" *
- control.author.dotless {
- duplicate$ #0 swap$ "dotless" warning.dependency
- #0 'control.author.dotless :=
- } 'skip$ if$
- pop$
- } 'skip$ if$
- pop$
- }
- if$
- control.author.initials 'skip$ {
- "not initials"
- control.author.nocomma {
- duplicate$ #0 swap$ "nocomma" warning.dependency
- #0 'control.author.nocomma :=
- } 'skip$ if$
- control.author.nospace {
- duplicate$ #0 swap$ "nospace" warning.dependency
- #0 'control.author.nospace :=
- } 'skip$ if$
- control.author.dotless 'skip$ {
- duplicate$ #1 swap$ "dotless" warning.dependency
- #1 'control.author.dotless :=
- } if$
- pop$
- } if$
-}
-
-FUNCTION {control.parse}
-{
- duplicate$ duplicate$ missing$
- {
- pop$ pop$ pop$
- }
- { empty$
- {
- pop$ #-1
- }{
- str.to.hex
- }
- if$
- swap$ :=
- }
- if$
-}
-
-FUNCTION {control.dump}
-{
- duplicate$ missing$ { pop$ "N/A" } 'skip$ if$
- "{" swap$ * "}, " *
- *
-}
-
-INTEGERS { decode.threshold }
-
-FUNCTION {control.decode}
-{
- - duplicate$
- #0 <
- {
- skip$ pop$ swap$ #0
- }
- {
- swap$ pop$ swap$ #1
- }
- if$
- swap$ :=
-}
-
-FUNCTION {control.author.decode}
-{
- control.author
- duplicate$ duplicate$ #0 < swap$ #128 < not or
- {
- int.to.str$ "(" swap$ * ")" *
- "Control cannot interpret author " swap$ *
- warning$
- }{
- 'control.author.jnrlst swap$ duplicate$ #64 control.decode
- 'control.author.dotless swap$ duplicate$ #32 control.decode
- 'control.author.nospace swap$ duplicate$ #16 control.decode
- 'control.author.initials swap$ duplicate$ #8 control.decode
- 'control.author.nocomma swap$ duplicate$ #4 control.decode
- 'control.author.first swap$ duplicate$ #2 control.decode
- 'control.author.reversed swap$ duplicate$ #1 control.decode
- duplicate$ #0 =
- 'skip$
- {
- "Control: residue of author"
- "(" swap$ * ")" * *
- warning$
- }
- if$
- pop$
- }
- if$
-}
-
-FUNCTION {control.setup}
-{
- type$ cite$ "{" swap$ * "}, " * *
- "control.key" key control.dump *
- "control.author" author control.dump *
- "control.editor" editor control.dump *
- "control.title" title control.dump *
- "control.pages" pages control.dump *
- "control.year" year control.dump *
- "control.eprint" eprint control.dump *
- top$
- 'control.key key control.parse
- 'control.author author control.parse
- 'control.editor editor control.parse
- 'control.title title control.parse
- 'control.pages pages control.parse
- 'control.year year control.parse
- 'control.eprint eprint control.parse
- control.author.decode
-}
-
-FUNCTION {control.pass}
-{ type$ "control" = 'control.setup 'skip$ if$
-}
-
-FUNCTION {control.presort}
-{
-}
-
-FUNCTION {control.forward}
-{
-}
-
-FUNCTION {control.reverse}
-{
-}
-
-FUNCTION {control.sort}
-{
-}
-
-FUNCTION {control.longest.label}
-{
-}
-
-FUNCTION {control.key.bib}
-{
- "Control: key "
- control.key
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- pop$ *
- diagn.cmntlog
-}
-
-FUNCTION {control.author.bib}
-{
- "Control: author "
- control.author "(" swap$ int.to.str$ * ")" * *
- control.author.reversed { " reversed" * }{} if$
- control.author.first { " first" * }{} if$
- control.author.nocomma { " nocomma" * }{} if$
- control.author.initials { " initials" * }{} if$
- control.author.nospace { " nospace" * }{} if$
- control.author.dotless { " dotless" * }{} if$
- control.author.jnrlst { " jnrlst" * }{} if$
- diagn.cmntlog
-}
-
-FUNCTION {control.editor.bib}
-{
- "Control: editor formatted "
- control.editor
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- duplicate$ #0 < {
- pop$
- "disabled!"
- } {
- #0 > {
- "identically to author"
- } {
- "differently from author"
- } if$
- } if$ * *
- diagn.cmntlog
-}
-
-FUNCTION {control.title.bib}
-{
- "Control: production of article title "
- control.title
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- duplicate$ #0 < {
- pop$
- "disabled"
- } {
- #0 > {
- "required"
- } {
- "allowed"
- } if$
- } if$ * *
- diagn.cmntlog
-}
-
-FUNCTION {control.pages.bib}
-{
- "Control: page "
- control.pages
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- duplicate$ #0 < {
- pop$
- "none"
- } {
- #0 > {
- "range"
- } {
- "single"
- } if$
- } if$ * *
- diagn.cmntlog
-}
-
-FUNCTION {control.year.bib}
-{
- "Control: year "
- control.year
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- duplicate$ #0 < {
- pop$
- "disabled!"
- } {
- #0 > {
- "truncated"
- } {
- "verbatim"
- } if$
- } if$ * *
- diagn.cmntlog
-}
-
-FUNCTION {control.eprint.bib}
-{
- "Control: production of eprint "
- control.eprint
- duplicate$ "(" swap$ int.to.str$ * ") " * swap$
- #0 < { "disabled" } { "enabled" } if$ * *
- diagn.cmntlog
-}
-
-FUNCTION {control.bib}
-{
- control.key.bib
- control.author.bib
- control.editor.bib
- control.title.bib
- control.pages.bib
- control.year.bib
- control.eprint.bib
-}
-
-FUNCTION {init.state.consts}
-{
- #0 'before.all :=
- #1 'after.word :=
- #2 'after.punctuation :=
- #3 'after.sentence :=
- #4 'after.block :=
- #0 'punctuation.no :=
- #1 'punctuation.space :=
- #2 'punctuation.yes :=
- "" 'bibfield :=
- "" 'output.bibfield :=
-}
-
-STRINGS { s t}
-FUNCTION {block.punctuation}
-{ ""
- "," *
-}
-
-FUNCTION {word.space}
-{
- "\ "
-}
-
-FUNCTION {show.stackstring.one}{
- "(" *
- output.state int.to.str$ *
- "," * punctuation.state int.to.str$ *
- ")" * top$
- duplicate$ "1(" swap$ * ")" * top$
-}
-
-FUNCTION {show.stackstring.two}{
- "(" *
- output.state int.to.str$ *
- "," * punctuation.state int.to.str$ *
- ")" * top$
- swap$
- duplicate$ "1(" swap$ * ")" * top$
- swap$
- duplicate$ "2(" swap$ * ")" * top$
-}
-
-FUNCTION {bibfield.command}{ "\bibfield "}
-
-FUNCTION {output.nonnull}
-{
- swap$
- output.state after.word =
- {
- block.punctuation *
- word.space *
- }
- {
- output.state after.punctuation =
- {
- word.space *
- }
- {
- output.state after.block = output.state after.sentence = or
- {
- add.period$
- "\EOS\ " *
- }{
- }
- if$
- }
- if$
- }
- if$
- output.bibfield duplicate$ empty$ 'pop$
- {
- bibfield.command
- " {" * swap$ * "} {" * swap$ * "}" *
- }
- if$
- write$
- bibfield 'output.bibfield := "" 'bibfield :=
- output.state after.block =
- {
- newline$
- "\newblock " write$
- }
- 'skip$
- if$
- punctuation.state duplicate$
- punctuation.yes 'punctuation.state :=
- punctuation.no =
- { pop$ before.all }
- { punctuation.yes = { after.word }{ after.punctuation } if$ }
- if$
- 'output.state :=
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- {
- pop$
- "" 'bibfield :=
- }
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.nopunct}
-{
- punctuation.no 'punctuation.state :=
- output.nonnull
-}
-
-FUNCTION {output.check}
-{ swap$
- duplicate$ empty$
- { pop$ "empty " swap$ * " in " * cite$ * warning$ }
- { swap$ pop$ output.nonnull }
- if$
-}
-
-FUNCTION {bbl.open} { "\BibitemOpen " }
-
-FUNCTION {bbl.shut} { "\BibitemShut " }
-
-FUNCTION {bibitem.shut.stop} { bbl.shut "{Stop}%" * }
-
-FUNCTION {bibitem.shut.nostop} { bbl.shut "{NoStop}%" * }
-
-FUNCTION {bibitem.shut}
-{
- non.stop
- {
- bibitem.shut.nostop *
- }{
- bibitem.shut.stop *
- }
- if$
-}
-
-FUNCTION {html.itag} {
- "p"
-}
-
-FUNCTION {html.ltag} {
- ""
-}
-
-FUNCTION {output.SLACcitation}
-{ SLACcitation empty$
- 'skip$
- {
- newline$
- SLACcitation write$
- }
- if$
-}
-
-FUNCTION {fin.entry}
-{
- bibitem.shut
- write$
- output.SLACcitation
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION {new.block.comma}
-{
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block = output.state before.all = or
- 'skip$
- { after.sentence 'output.state := }
- if$
-}
-
-FUNCTION {new.sentence.comma}
-{
-}
-
-FUNCTION {sentence.or.colon}
-{
- new.sentence
-}
-
-FUNCTION {add.blank}
-{
- word.space *
- before.all 'output.state :=
-}
-
-FUNCTION {no.blank.or.punct}
-{
- "\hspace {0pt}" *
- before.all 'output.state :=
-}
-
-FUNCTION {date.block}
-{
- new.block.comma
- skip$
-}
-
-STRINGS {z}
-FUNCTION {remove.dots}
-{
- control.author.dotless {
- 'z :=
- ""
- { z empty$ not }
- { z #1 #1 substring$
- z #2 global.max$ substring$ 'z :=
- duplicate$ "." = 'pop$
- { * }
- if$
- }
- while$
- } 'skip$ if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION {emphasize}
-{
- duplicate$ empty$
- { pop$ "" }
- {
- "\emph {" swap$ * "}" *
- }
- if$
-}
-
-FUNCTION {bolden}
-{ duplicate$ empty$
- { pop$ "" }
- { "\textbf {" swap$ * "}" * }
- if$
-}
-
-FUNCTION {bib.name.font}
-{
- duplicate$ empty$
- { pop$ "" }
- {
- "\bibnamefont {" swap$ * "}" *
- }
- if$
-}
-
-FUNCTION {bib.fname.font}
-{
- duplicate$ empty$
- { pop$ "" }
- {
- "\bibfnamefont {" swap$ * "}" *
- }
- if$
-}
-
-FUNCTION {cite.name.font}
-{
- duplicate$ empty$
- { pop$ "" }
- {
- "\citenamefont {" swap$ * "}" *
- }
- if$
-}
-
-FUNCTION {tie.or.space.prefix}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { word.space }
- if$
- swap$
-}
-
-FUNCTION {capitalize}
-{
- "u" change.case$ "t" change.case$
-}
-
-FUNCTION {space.word}
-{ word.space swap$ * word.space * }
-
- % Here are the language-specific definitions for explicit words.
- % Each function has a name bbl.xxx where xxx is the English word.
- % The language selected here is ENGLISH
-
-FUNCTION {bbl.and}
-{
- "and"
-}
-
-FUNCTION {bbl.etal}
-{
- "et~al."
-}
-
-FUNCTION {bbl.editors}
-{
- "eds."
-}
-
-FUNCTION {bbl.editor}
-{
- "ed."
-}
-
-FUNCTION {bbl.edby}
-{ "edited by" }
-
-FUNCTION {bbl.edition}
-{
- "ed."
-}
-
-FUNCTION {bbl.volume}
-{
- "vol."
-}
-
-FUNCTION {bbl.of}
-{ "of" }
-
-FUNCTION {bbl.number}
-{
- "no."
-}
-
-FUNCTION {bbl.nr}
-{ "no." }
-
-FUNCTION {bbl.in}
-{ "in" }
-
-FUNCTION {bbl.pages}
-{
- "pp."
-}
-
-FUNCTION {bbl.page}
-{
- "p."
-}
-
-FUNCTION {bbl.eidpp}
-{ "pages" }
-
-FUNCTION {bbl.chapter}
-{
- "chap."
-}
-
-FUNCTION {bbl.techrep}
-{
- "Tech. Rep."
-}
-
-FUNCTION {bbl.mthesis}
-{ "Master's thesis" }
-
-FUNCTION {bbl.phdthesis}
-{ "Ph.D. thesis" }
-
-FUNCTION {bbl.first}
-{
- "1st"
-}
-
-FUNCTION {bbl.second}
-{
- "2nd"
-}
-
-FUNCTION {bbl.third}
-{
- "3rd"
-}
-
-FUNCTION {bbl.fourth}
-{
- "4th"
-}
-
-FUNCTION {bbl.fifth}
-{
- "5th"
-}
-
-FUNCTION {bbl.st}
-{ "st" }
-
-FUNCTION {bbl.nd}
-{ "nd" }
-
-FUNCTION {bbl.rd}
-{ "rd" }
-
-FUNCTION {bbl.th}
-{ "th" }
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"Jun."}
-
-MACRO {jul} {"Jul."}
-
-MACRO {aug} {"Aug."}
-
-MACRO {sep} {"Sep."}
-
-MACRO {oct} {"Oct."}
-
-MACRO {nov} {"Nov."}
-
-MACRO {dec} {"Dec."}
-
-FUNCTION {bbl.url.prefix}
-{
- "\urlprefix "
-}
-
-FUNCTION {eng.ord}
-{ duplicate$ "1" swap$ *
- #-2 #1 substring$ "1" =
- { bbl.th * }
- { duplicate$ #-1 #1 substring$
- duplicate$ "1" =
- { pop$ bbl.st * }
- { duplicate$ "2" =
- { pop$ bbl.nd * }
- { "3" =
- { bbl.rd * }
- { bbl.th * }
- if$
- }
- if$
- }
- if$
- }
- if$
-}
-
- %-------------------------------------------------------------------
- % Begin module:
- % \ProvidesFile{physjour.mbs}[2002/01/14 2.2 (PWD)]
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
-MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
-MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
-MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
-MACRO {ip} {"Infrared Phys."}
-MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
-MACRO {nat} {"Nature"}
-MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
-MACRO {inc} {"Nuovo Cimento"}
-MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
-MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd} {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO {spu} {"Sov. Phys.--Uspeki"}
-MACRO {st} {"Sky and Telesc."}
- % End module: physjour.mbs
- %-------------------------------------------------------------------
- % Begin module:
- % \ProvidesFile{geojour.mbs}[2002/07/10 2.0h (PWD)]
-MACRO {aisr} {"Adv. Space Res."}
-MACRO {ag} {"Ann. Geophys."}
-MACRO {anigeo} {"Ann. Geofis."}
-MACRO {angl} {"Ann. Glaciol."}
-MACRO {andmet} {"Ann. d. Meteor."}
-MACRO {andgeo} {"Ann. d. Geophys."}
-MACRO {andphy} {"Ann. Phys.-Paris"}
-MACRO {afmgb} {"Arch. Meteor. Geophys. Bioklimatol."}
-MACRO {atph} {"Atm\'osphera"}
-MACRO {aao} {"Atmos. Ocean"}
-MACRO {ass}{"Astrophys. Space Sci."}
-MACRO {atenv} {"Atmos. Environ."}
-MACRO {aujag} {"Aust. J. Agr. Res."}
-MACRO {aumet} {"Aust. Meteorol. Mag."}
-MACRO {blmet} {"Bound.-Lay. Meteorol."}
-MACRO {bams} {"Bull. Amer. Meteorol. Soc."}
-MACRO {cch} {"Clim. Change"}
-MACRO {cdyn} {"Clim. Dynam."}
-MACRO {cbul} {"Climatol. Bull."}
-MACRO {cap} {"Contrib. Atmos. Phys."}
-MACRO {dsr} {"Deep-Sea Res."}
-MACRO {dhz} {"Dtsch. Hydrogr. Z."}
-MACRO {dao} {"Dynam. Atmos. Oceans"}
-MACRO {eco} {"Ecology"}
-MACRO {empl}{"Earth, Moon and Planets"}
-MACRO {envres} {"Environ. Res."}
-MACRO {envst} {"Environ. Sci. Technol."}
-MACRO {ecms} {"Estuarine Coastal Mar. Sci."}
-MACRO {expa}{"Exper. Astron."}
-MACRO {geoint} {"Geofis. Int."}
-MACRO {geopub} {"Geofys. Publ."}
-MACRO {geogeo} {"Geol. Geofiz."}
-MACRO {gafd} {"Geophys. Astrophys. Fluid Dyn."}
-MACRO {gfd} {"Geophys. Fluid Dyn."}
-MACRO {geomag} {"Geophys. Mag."}
-MACRO {georl} {"Geophys. Res. Lett."}
-MACRO {grl} {"Geophys. Res. Lett."}
-MACRO {ga} {"Geophysica"}
-MACRO {gs} {"Geophysics"}
-MACRO {ieeetap} {"IEEE Trans. Antenn. Propag."}
-MACRO {ijawp} {"Int. J. Air Water Pollut."}
-MACRO {ijc} {"Int. J. Climatol."}
-MACRO {ijrs} {"Int. J. Remote Sens."}
-MACRO {jam} {"J. Appl. Meteorol."}
-MACRO {jaot} {"J. Atmos. Ocean. Technol."}
-MACRO {jatp} {"J. Atmos. Terr. Phys."}
-MACRO {jastp} {"J. Atmos. Solar-Terr. Phys."}
-MACRO {jce} {"J. Climate"}
-MACRO {jcam} {"J. Climate Appl. Meteor."}
-MACRO {jcm} {"J. Climate Meteor."}
-MACRO {jcy} {"J. Climatol."}
-MACRO {jgr} {"J. Geophys. Res."}
-MACRO {jga} {"J. Glaciol."}
-MACRO {jh} {"J. Hydrol."}
-MACRO {jmr} {"J. Mar. Res."}
-MACRO {jmrj} {"J. Meteor. Res. Japan"}
-MACRO {jm} {"J. Meteor."}
-MACRO {jpo} {"J. Phys. Oceanogr."}
-MACRO {jra} {"J. Rech. Atmos."}
-MACRO {jaes} {"J. Aeronaut. Sci."}
-MACRO {japca} {"J. Air Pollut. Control Assoc."}
-MACRO {jas} {"J. Atmos. Sci."}
-MACRO {jmts} {"J. Mar. Technol. Soc."}
-MACRO {jmsj} {"J. Meteorol. Soc. Japan"}
-MACRO {josj} {"J. Oceanogr. Soc. Japan"}
-MACRO {jwm} {"J. Wea. Mod."}
-MACRO {lao} {"Limnol. Oceanogr."}
-MACRO {mwl} {"Mar. Wea. Log"}
-MACRO {mau} {"Mausam"}
-MACRO {meteor} {"``Meteor'' Forschungsergeb."}
-MACRO {map} {"Meteorol. Atmos. Phys."}
-MACRO {metmag} {"Meteor. Mag."}
-MACRO {metmon} {"Meteor. Monogr."}
-MACRO {metrun} {"Meteor. Rundsch."}
-MACRO {metzeit} {"Meteor. Z."}
-MACRO {metgid} {"Meteor. Gidrol."}
-MACRO {mwr} {"Mon. Weather Rev."}
-MACRO {nwd} {"Natl. Weather Dig."}
-MACRO {nzjmfr} {"New Zeal. J. Mar. Freshwater Res."}
-MACRO {npg} {"Nonlin. Proc. Geophys."}
-MACRO {om} {"Oceanogr. Meteorol."}
-MACRO {ocac} {"Oceanol. Acta"}
-MACRO {oceanus} {"Oceanus"}
-MACRO {paleoc} {"Paleoceanography"}
-MACRO {pce} {"Phys. Chem. Earth"}
-MACRO {pmg} {"Pap. Meteor. Geophys."}
-MACRO {ppom} {"Pap. Phys. Oceanogr. Meteor."}
-MACRO {physzeit} {"Phys. Z."}
-MACRO {pps} {"Planet. Space Sci."}
-MACRO {pss} {"Planet. Space Sci."}
-MACRO {pag} {"Pure Appl. Geophys."}
-MACRO {qjrms} {"Quart. J. Roy. Meteorol. Soc."}
-MACRO {quatres} {"Quat. Res."}
-MACRO {rsci} {"Radio Sci."}
-MACRO {rse} {"Remote Sens. Environ."}
-MACRO {rgeo} {"Rev. Geophys."}
-MACRO {rgsp} {"Rev. Geophys. Space Phys."}
-MACRO {rdgeo} {"Rev. Geofis."}
-MACRO {revmeta} {"Rev. Meteorol."}
-MACRO {sgp}{"Surveys in Geophys."}
-MACRO {sp} {"Solar Phys."}
-MACRO {ssr} {"Space Sci. Rev."}
-MACRO {tellus} {"Tellus"}
-MACRO {tac} {"Theor. Appl. Climatol."}
-MACRO {tagu} {"Trans. Am. Geophys. Union (EOS)"}
-MACRO {wrr} {"Water Resour. Res."}
-MACRO {weather} {"Weather"}
-MACRO {wafc} {"Weather Forecast."}
-MACRO {ww} {"Weatherwise"}
-MACRO {wmob} {"WMO Bull."}
-MACRO {zeitmet} {"Z. Meteorol."}
- % End module: geojour.mbs
- %-------------------------------------------------------------------
- % Begin module:
- % \ProvidesFile{photjour.mbs}[1999/02/24 2.0b (PWD)]
-
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell} {"Bell Syst. Tech. J."}
-MACRO {ell} {"Electron. Lett."}
-MACRO {jasp} {"J. Appl. Spectr."}
-MACRO {jqe} {"IEEE J. Quantum Electron."}
-MACRO {jlwt} {"J. Lightwave Technol."}
-MACRO {jmo} {"J. Mod. Opt."}
-MACRO {josa} {"J. Opt. Soc. America"}
-MACRO {josaa} {"J. Opt. Soc. Amer.~A"}
-MACRO {josab} {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp} {"J. Phys. (Paris)"}
-MACRO {oc} {"Opt. Commun."}
-MACRO {ol} {"Opt. Lett."}
-MACRO {phtl} {"IEEE Photon. Technol. Lett."}
-MACRO {pspie} {"Proc. Soc. Photo-Opt. Instrum. Eng."}
-MACRO {sse} {"Solid-State Electron."}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl} {"Sov. Techn. Phys. Lett."}
-MACRO {vr} {"Vision Res."}
-MACRO {zph} {"Z. f. Physik"}
-MACRO {zphb} {"Z. f. Physik~B"}
-MACRO {zphd} {"Z. f. Physik~D"}
-
-MACRO {CLEO} {"CLEO"}
-MACRO {ASSL} {"Adv. Sol.-State Lasers"}
-MACRO {OSA} {"OSA"}
- % End module: photjour.mbs
-%% Copyright 1994-2007 Patrick W Daly
-MACRO {acmcs} {"ACM Comput. Surv."}
-MACRO {acta} {"Acta Inf."}
-MACRO {cacm} {"Commun. ACM"}
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-MACRO {ibmsj} {"IBM Syst.~J."}
-MACRO {ieeese} {"IEEE Trans. Software Eng."}
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-MACRO {ieeetcad}
- {"IEEE Trans. Comput. Aid. Des."}
-MACRO {ipl} {"Inf. Process. Lett."}
-MACRO {jacm} {"J.~ACM"}
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-MACRO {scp} {"Sci. Comput. Program."}
-MACRO {sicomp} {"SIAM J. Comput."}
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-MACRO {tods} {"ACM Trans. Database Syst."}
-MACRO {tog} {"ACM Trans. Graphic."}
-MACRO {toms} {"ACM Trans. Math. Software"}
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
-MACRO {tcs} {"Theor. Comput. Sci."}
-
-MACRO {jhep} {"J. High Energy Phys."}
-MACRO {jcap} {"J. Cosmol. Astropart. Phys."}
-MACRO {jinst} {"J. Instrum."}
-MACRO {jstat} {"J. Stat. Mech.: Theory Exp."}
-
-FUNCTION {bibinfo.command} { "\bibinfo " }
-
-FUNCTION {bibinfo.check}
-{ swap$
- duplicate$ missing$
- {
- pop$
- pop$ ""
- }{
- duplicate$ empty$
- {
- swap$ pop$
- }{
- swap$
- bibinfo.command "{" * swap$ * "} {" * swap$ * "}" *
- }
- if$
- }
- if$
-}
-
-FUNCTION {bibinfo.warn}
-{ swap$
- duplicate$ missing$
- {
- swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
- ""
- }{
- duplicate$ empty$
- {
- swap$ "empty " swap$ * " in " * cite$ * warning$
- }{
- swap$
- bibinfo.command " {" * swap$ * "} {" * swap$ * "}" *
- }
- if$
- }
- if$
-}
-
-FUNCTION {archiv.base}
-{
- "https://arxiv.org/abs"
-}
-
-FUNCTION {archiv.prefix.base}
-{
- "arXiv"
-}
-
-FUNCTION {eprint.command}
-{
- "\Eprint "
-}
-
-FUNCTION {format.eprint.controlled}
-{
- eprint duplicate$ empty$
- control.eprint #1 =
- or
- { pop$ "" }
- {
- duplicate$
- ""
- archive duplicate$ empty$ { pop$ archiv.base } 'skip$ if$ *
- "/" *
- swap$ *
- "{" swap$ * "} " *
- swap$
- ""
- archivePrefix duplicate$ empty$ { pop$ "" } { ":" * } if$ *
- swap$ *
- primaryClass duplicate$ empty$ { pop$ "" } { " [" swap$ * "]" * } if$ *
- "{" swap$ * "} " *
- *
- eprint.command swap$ *
- }
- if$
-}
-
-FUNCTION {format.eprint}
-{
- eprint duplicate$ empty$
- { pop$ "" }
- {
- duplicate$
- ""
- archive duplicate$ empty$ { pop$ archiv.base } 'skip$ if$ *
- "/" *
- swap$ *
- "{" swap$ * "} " *
- swap$
- ""
- archivePrefix duplicate$ empty$ { pop$ "" } { ":" * } if$ *
- swap$ *
- primaryClass duplicate$ empty$ { pop$ "" } { " [" swap$ * "]" * } if$ *
- "{" swap$ * "} " *
- *
- eprint.command swap$ *
- }
- if$
-}
-
-FUNCTION {format.translation}
-{ translation duplicate$ empty$
- 'skip$
- { ""
- "\translation{" * swap$ * "}" *
- punctuation.space 'punctuation.state :=
- }
- if$
-}
-
-FUNCTION {format.url}
-{
- url duplicate$ empty$
- { pop$ "" }
- {
- "\url "
- "{" * swap$ * "}" *
- }
- if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {check.speaker}
-{ key empty$ 'skip$
- { key nameptr int.to.str$ =
- {
- bolden
- }
- 'skip$
- if$
- }
- if$
-}
-
-STRINGS { bibinfo}
-
-FUNCTION {format.names.fname}
-{
- control.author.initials {
- control.author.dotless {
- control.author.nospace {
- "f{}"
- } {
- "f{~}"
- } if$
- } {
- control.author.nospace {
- "f{.}."
- } {
- "f."
- } if$
- } if$
- } {
- "ff"
- } if$
-}
-
-FUNCTION {bracify}
-{
- "{" swap$ * "}" *
-}
-
-FUNCTION {name.comma}
-{
- control.author.nocomma 'skip$ { "," swap$ * } if$
-}
-
-FUNCTION {format.names.format.onefont}
-{
- "{vv~}{ll}"
- nameptr #1 >
- control.author.first
- and
- control.author.reversed not
- or
- {
- control.author.initials {
- "f"
- control.author.dotless 'skip$ {
- "." *
- } if$
- "~" *
- } {
- "ff"
- } if$
- bracify
- swap$
- } {
- format.names.fname
- " " swap$ *
- name.comma
- bracify
- }
- if$
- "jj"
- " " swap$ *
- name.comma
- bracify
- control.author.jnrlst 'skip$ 'swap$ if$
- * *
-}
-
-FUNCTION {format.names.onefont}
-{
- s nameptr format.names.format.onefont format.name$
- remove.dots
- bib.name.font
-}
-
-FUNCTION {format.names.morfont}
-{ s nameptr
- "{vv~}{ll}" format.name$ bib.name.font
- nameptr #1 >
- control.author.first
- and
- control.author.reversed not
- or
- {
- s nameptr
- control.author.initials {
- "f" % default: name + surname + comma junior
- } {
- "ff"
- } if$
- control.author.dotless 'skip$ {
- "." * % nm-init % Initials. + surname (J. F. Smith) control.author.initials
- } if$
- bracify
- format.name$ duplicate$ empty$ 'skip$
- { tie.or.space.prefix bib.fname.font swap$ * }
- if$
- swap$
- *
- s nameptr
- "{jj}" format.name$ duplicate$ empty$ 'skip$
- { bib.fname.font ", " swap$ * }
- if$
- } {
- "," *
- s nameptr
- format.names.fname
- "jj"
- " "
- name.comma
- control.author.jnrlst {
- swap$ * skip$
- } {
- skip$ * swap$
- } if$
- bracify swap$ bracify swap$
- *
- format.name$
- remove.dots
- duplicate$ empty$ 'skip$
- { bib.fname.font " " swap$ * }
- if$
- } if$
- *
-}
-
-FUNCTION {names.punctuate}
-{
- "," *
- " " *
-}
-%<*!aipauth&!apsrmp>
-
-FUNCTION {names.comma}
-{
- "," *
-}
-%</!aipauth&!apsrmp>
-
-FUNCTION {format.names}
-{ 'bibinfo :=
- duplicate$ empty$ { pop$ "" } {
- duplicate$ num.names$
- duplicate$ 'numnames :=
- 'namesleft :=
- 's :=
- #1 'nameptr :=
- ""
- { namesleft #0 > }
- {
- format.names.morfont
- bibinfo bibinfo.check
- type$ "presentation" =
- 'check.speaker
- 'skip$
- if$
- 't :=
- nameptr #1 > not
- {
- t *
- } {
- namesleft #1 >
- {
- names.punctuate
- t *
- } {
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
-%<*!apsrmp>
- numnames #2 >
-%<!aipauth> 'names.comma
-%<aipauth> 'names.punctuate
- 'skip$
- if$
-%</!apsrmp>
-%<apsrmp> names.punctuate
- t "others" =
- {
- " " *
- bbl.etal
- emphasize
- *
- } {
- bbl.and
-%<aapmrev> space.word *
-%<aipauth> word.space * *
-%<aipnum> space.word *
-%<apsrev> space.word *
-%<apsrmp> word.space * *
- t *
- }
- if$
- }
- if$
- }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- } if$
-}
-
-FUNCTION {format.names.ed.onefont}
-{
- s nameptr
- control.author.initials {
- control.author.dotless {
- control.author.nospace {
- "{f{}~}{vv~}{ll}{ jj}" % nm-rvx|nm-rvcx
- } {
- "{f{~}~}{vv~}{ll}{ jj}" % nm-rv
- } if$
- } {
- control.author.nospace {
- "{f{.}.~}{vv~}{ll}{ jj}" % nm-rvv|nm-rvvc
- }{
- "{f.~}{vv~}{ll}{, jj}" % nm-init|nm-rev|nm-rev1
- } if$
- } if$
- } {
- "{ff~}{vv~}{ll}{, jj}"
- } if$
- format.name$
- remove.dots
- bib.name.font
-}
-
-FUNCTION {format.names.ed.morfont}
-{
- control.author.reversed { %
- control.author.initials { %
- control.author.dotless { %
- s nameptr
- control.author.nospace { % nm-rvx nm-rvcx
- "{f{}}"
- } { % nm-rv
- "{f{~}}"
- } if$
- format.name$ duplicate$ empty$ 'skip$
- { tie.or.space.prefix bib.fname.font swap$ * }
- if$
- s nameptr
- "{vv~}{ll}" format.name$ bib.name.font *
- s nameptr
- "{jj}" format.name$
- remove.dots
- duplicate$ empty$ 'skip$
- { bib.fname.font " " swap$ * }
- if$
- } { % !control.author.dotless
- s nameptr
- control.author.nospace { % nm-rvv
- "{ff}"
- } { % nm-rev nm-rev1
- "{f.}"
- } if$
- format.name$ duplicate$ empty$ 'skip$
- { tie.or.space.prefix bib.fname.font swap$ * }
- if$
- s nameptr
- "{vv~}{ll}" format.name$ bib.name.font *
- s nameptr
- "{jj}" format.name$
- duplicate$ empty$ 'skip$
- { bib.fname.font ", " swap$ * }
- if$
- } if$
- } { % Full names !control.author.initials nm-revf nm-revv1
- s nameptr
- "{ff}"
- format.name$ duplicate$ empty$ 'skip$
- { tie.or.space.prefix bib.fname.font swap$ * }
- if$
- s nameptr
- "{vv~}{ll}" format.name$ bib.name.font *
- s nameptr
- "{jj}" format.name$
- duplicate$ empty$ 'skip$
- { bib.fname.font ", " swap$ * }
- if$
- } if$
- } { % !control.author.reversed nm-init
- s nameptr
- "{f.}"
- format.name$ duplicate$ empty$ 'skip$
- { tie.or.space.prefix bib.fname.font swap$ * }
- if$
- s nameptr
- "{vv~}{ll}" format.name$ bib.name.font *
- s nameptr
- "{jj}" format.name$
- duplicate$ empty$ 'skip$
- { bib.fname.font ", " swap$ * }
- if$
- } if$
- *
-}
-
-FUNCTION {format.names.ed}
-{
- control.editor #0 > {
- format.names
- } {
- 'bibinfo :=
- duplicate$ empty$ 'skip$ {
- 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- {
- format.names.ed.morfont
- bibinfo bibinfo.check
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- {
- names.punctuate
- t *
- }{
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- numnames #2 >
-%<aapmrev> 'names.comma
-%<aipauth> 'names.punctuate
-%<aipnum> 'names.comma
-%<apsrev> 'names.comma
-%<apsrmp> 'names.punctuate
- 'skip$
- if$
- t "others" =
- {
- " " * bbl.etal emphasize *
- }{
- bbl.and
- space.word * t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- } if$
- } if$
-}
-
-FUNCTION {format.key}
-{ empty$
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION {format.authors}
-{ author "author" format.names
- duplicate$ empty$ 'skip$
- { collaboration "collaboration" bibinfo.check
- duplicate$ empty$ 'skip$
- { " (" swap$ * ")" * }
- if$
- *
- }
- if$
- "author" 'bibfield :=
-}
-
-FUNCTION {get.bbl.editor}
-{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$
-}
-
-FUNCTION {format.editors}
-{ editor "editor" format.names duplicate$ empty$ 'skip$
- {
- "," *
- word.space *
- get.bbl.editor
-%<apsrmp> capitalize
- *
- }
- if$
-}
-
-FUNCTION {format.isbn.output}
-{
-}
-
-FUNCTION {format.issn.output}
-{
-}
-
-FUNCTION {doi.base}
-{
- "https://doi.org/"
-}
-
-FUNCTION {doi.base.command}
-{
- "\doibase "
-}
-
-FUNCTION {noop.command}
-{
- "\href@noop "
-}
-
-FUNCTION {href.command}
-{
- "\href "
-}
-
-FUNCTION {link.tag.open}
-{
- doi duplicate$ empty$
- {
- pop$
- url duplicate$ empty$
- {
- pop$ "" noop.command
- }{
- href.command
- }
- if$
- }
- {
- "https://doi.org/" swap$ *
- href.command
- }
- if$
- "{" * swap$ * "} {" *
-}
-
-FUNCTION {link.tag.shut}
-{
- "}"
-}
-
-FUNCTION {link.open}
-{
- link.tag.open output.nopunct
-}
-
-FUNCTION {link.shut}
-{
- link.tag.shut *
-}
-
-FUNCTION {add.doi}
-{
- link.tag.open swap$ * link.tag.shut *
-}
-
-FUNCTION {select.language}
-{ duplicate$ empty$
- 'pop$
- { language empty$
- 'skip$
- { "{\selectlanguage {" language * "}" * swap$ * "}" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.note}
-{
- note empty$
- { "" }
- { note #1 #1 substring$
- duplicate$ "{" =
- 'skip$
- {
- output.state after.word = output.state after.punctuation = or
- { "l" }
- { "u" }
- if$ change.case$
- }
- if$
- note #2 global.max$ substring$ * "note" bibinfo.check
- }
- if$
-}
-
-FUNCTION {bbl.enquote}
-{
- "\enquote "
-}
-
-FUNCTION {string.enquote}
-{
- punctuation.no 'punctuation.state :=
- non.stop {
- block.punctuation
- } { "" } if$
- swap$ pop$
- *
- bbl.enquote "{" * swap$ * "}" *
- word.space *
-}
-
-FUNCTION {format.title}
-{ title
- duplicate$ empty$ 'skip$ { "t" change.case$ } if$
- duplicate$ "title" bibinfo.check swap$
- duplicate$ empty$ 'pop$
- {
- punctuation.yes 'punctuation.state :=
-%<!apsrev> string.enquote
-%<apsrev> pop$
- select.language
- }
- if$
-}
-
-FUNCTION {end.quote.title}
-{ title empty$
- 'skip$
- { before.all 'output.state := }
- if$
-}
-
-FUNCTION {format.name.apply}
-{
- s nameptr
- "{vv~}{ll}"
- format.name$
- cite.name.font
-}
-
-FUNCTION {format.full.names}
-{
- 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { format.name.apply
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- {
- 't :=
- }
- 'pop$
- if$
- t "others" =
- {
- " " * bbl.etal
- emphasize *
- }{
- numnames #2 > { "," * }{ skip$ } if$
- bbl.and
- space.word * t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {make.full.names}
-{
- key editor author
- type$ "proceedings" =
- type$ "book" =
- type$ "inbook" =
- or { pop$ }{ { pop$ "" }{ swap$ pop$ "" swap$ } if$ } if$
- duplicate$ empty$
- { pop$
- duplicate$ empty$
- { pop$
- duplicate$ empty$
- { pop$
- cite$ #1 #3 substring$
- }{
- skip$
- }
- if$
- }
- { swap$ pop$ format.full.names }
- if$
- }
- { swap$ pop$ swap$ pop$ format.full.names }
- if$
-}
-
-FUNCTION {year.bibitem}
-{
- year duplicate$ empty$
- { pop$ ""
-%<apsrmp> "????" *
- }{
- skip$
- } if$
- extra.label *
-}
-
-FUNCTION {output.bibitem}
-{
- newline$
- ""
- label
- * ")" *
- make.full.names duplicate$ short.list =
- { pop$ }{ * } if$
- bracify
- "[" swap$ * "]" *
- cite$ bracify "%" *
- *
- "\bibitem "
- swap$ *
- write$ newline$
- " "
- duplicate$ bbl.open * write$ newline$
- before.all 'output.state :=
- punctuation.yes 'punctuation.state :=
-}
-
-FUNCTION {n.dashify}
-{
- 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }{
- { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }{
- t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {word.in}
-{
- bbl.in
- word.space *
-}
-
-%<!apsrev>FUNCTION {date.encapsulate}
-%<apsrev>FUNCTION {parenthesize}
-{
- duplicate$ empty$
- 'skip$
- {
- before.all 'output.state :=
- " (" swap$ * ")" *
- }
- if$
-}
-
-FUNCTION {format.date}
-{
- year "year" bibinfo.check duplicate$ empty$
- {
-%<*apsrmp>
- "empty year in " cite$ * "; set to ????" * warning$
- pop$ "????"
-%</apsrmp>
- }
- 'skip$
- if$
- extra.label *
-%<!apsrev> date.encapsulate
-%<apsrev> parenthesize
-}
-
-FUNCTION {format.date.output.check}
-{
- format.date
- "year" output.check
-}
-
-FUNCTION {format.date.output}
-{
- format.date.output.check
-}
-
-FUNCTION {format.btitle}
-{
- booktitle duplicate$ empty$ { pop$
- title
- } 'skip$ if$
- "title" bibinfo.check
- duplicate$ empty$ 'skip$
- {
- emphasize
- select.language
- }
- if$
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION {editor.check.book}
-{ editor empty$ 'skip$
- {
- "can't use both author and editor fields in " cite$ *
- ": try using @inbook instead" *
- warning$
- }
- if$
-}
-
-FUNCTION {format.bvolume}
-{ volume duplicate$ empty$
- { pop$ "" }
- {
- "volume and number" number either.or.check
- bbl.volume
- capitalize
- swap$
- tie.or.space.prefix "volume" bibinfo.check * *
- series "series" bibinfo.check duplicate$ empty$ 'pop$
- {
- ", "
- * swap$ *
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.number}
-{
- bbl.number
- output.state after.word = output.state after.punctuation = or
- #1 or
- #0 and
- 'skip$
- { capitalize }
- if$
- number tie.or.space.prefix "number" bibinfo.check * *
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- {
- series empty$
- {
- number "number" bibinfo.check
- }{
- format.number
- series "series" bibinfo.check
- word.space * swap$ *
- }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {is.num}
-{ chr.to.int$
- duplicate$ "0" chr.to.int$ < not
- swap$ "9" chr.to.int$ > not and
-}
-
-FUNCTION {extract.num}
-{ duplicate$ 't :=
- "" 's :=
- { t empty$ not }
- { t #1 #1 substring$
- t #2 global.max$ substring$ 't :=
- duplicate$ is.num
- { s swap$ * 's := }
- { pop$ "" 't := }
- if$
- }
- while$
- s empty$
- 'skip$
- { pop$ s }
- if$
-}
-
-FUNCTION {convert.edition}
-{ extract.num "l" change.case$ 's :=
- s "first" = s "1" = or
- { bbl.first 't := }
- { s "second" = s "2" = or
- { bbl.second 't := }
- { s "third" = s "3" = or
- { bbl.third 't := }
- { s "fourth" = s "4" = or
- { bbl.fourth 't := }
- { s "fifth" = s "5" = or
- { bbl.fifth 't := }
- { s #1 #1 substring$ is.num
- { s
- eng.ord
- 't := }
- { edition 't := }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- t
-}
-
-FUNCTION {format.edition}
-{ edition duplicate$ empty$ 'skip$
- {
- convert.edition
- output.state after.word = output.state after.punctuation = or
- { "l" }
- { "t" }
- if$ change.case$
- "edition" bibinfo.check
- word.space * bbl.edition *
- }
- if$
-}
-
-INTEGERS { multiresult }
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-
-FUNCTION {format.pages}
-{ pages duplicate$ empty$
- 'skip$
- { duplicate$ multi.page.check
- {
- bbl.pages swap$
- n.dashify
- }{
- bbl.page swap$
- }
- if$
- tie.or.space.prefix
- "pages" bibinfo.check
- * *
- }
- if$
-}
-
-FUNCTION {first.page}
-{ 't :=
- ""
- { t empty$ not t #1 #1 substring$ "-" = not and }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- while$
-}
-
-FUNCTION {format.book.pages}
-{
- pages duplicate$ empty$ 'skip$
- {
- "pages" bibinfo.check word.space bbl.pages * *
- }
- if$
-}
-
-FUNCTION {volnum.punct}
-{
- ","
- word.space *
-}
-
-FUNCTION {format.journal.pages}
-{ pages duplicate$ empty$ 'pop$
- { swap$ duplicate$ empty$
- { pop$ pop$ format.pages }
- { volnum.punct *
- swap$
- control.pages duplicate$ #0 < {
- pop$ pop$
- }{
- #0 >
- {
- n.dashify
- }{
- first.page
- } if$
- } if$
- "pages" bibinfo.check
- *
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.journal.eid}
-{ eid "eid" bibinfo.check
- duplicate$ empty$ 'pop$
- { swap$ duplicate$ empty$ 'skip$
- { volnum.punct * }
- if$
- swap$ *
- }
- if$
-}
-
-FUNCTION {eid.or.pages}
-{
- eid empty$
- { format.journal.pages }
- { format.journal.eid }
- if$
-}
-
-FUNCTION {format.ser.vol.num}
-{
- series "series" bibinfo.check output
- volume field.or.null
- duplicate$ empty$ 'skip$
- {
- "volume" bibinfo.check
- }
- if$
- bolden
-%<*apsrmp>
- number "number" bibinfo.check duplicate$ empty$ 'skip$
- {
- swap$ duplicate$ empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
- if$
- swap$
- "~(" swap$ * ")" *
- }
- if$ *
-%</apsrmp>
-}
-
-%<*apsrev>
-FUNCTION {format.vol.num}
-{
- volume field.or.null
- duplicate$ empty$ 'skip$
- {
- "volume" bibinfo.check
- }
- if$
- bolden
-}
-
-%</apsrev>
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- {
-%<!apsrmp> format.pages
-%<apsrmp> ""
- }
- { type empty$
- {
- bbl.chapter
- capitalize
- }{
- type
- capitalize
- "type" bibinfo.check
- }
- if$
- chapter tie.or.space.prefix
- "chapter" bibinfo.check
- * *
-%<*!apsrmp>
- pages empty$
- 'skip$
- { ", " * format.pages * }
- if$
-%</!apsrmp>
- }
- if$
-}
-
-FUNCTION {format.booktitle}
-{
- booktitle duplicate$ "booktitle" bibinfo.check swap$
- duplicate$ empty$ 'pop$
- {
- punctuation.yes 'punctuation.state :=
- pop$ emphasize
- select.language
- }
- if$
-}
-
-FUNCTION {format.editor.in}
-{
- editor "editor" format.names.ed duplicate$ empty$ 'skip$
- {
- bbl.edby
- word.space * swap$ *
- }
- if$
-}
-
-FUNCTION {output.article.booktitle}
-{
- format.booktitle
- "booktitle" 'bibfield :=
- output
- bookaddress "address" bibinfo.check duplicate$ empty$ 'pop$
- {
- "address" 'bibfield :=
- output.nonnull after.punctuation 'output.state :=
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{
- format.booktitle duplicate$ empty$ 'pop$
- {
- add.doi
- word.in swap$ * output.nonnull
- bookaddress "address" bibinfo.check output
- format.number.series "series and number" bibinfo.check output
- format.bvolume output
- format.editor.in "editor" bibinfo.check output
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle.inbook}
-{
- format.booktitle duplicate$ empty$ 'pop$
- {
- add.doi
- word.in swap$ * output.nonnull
- bookaddress "address" bibinfo.check output
- format.number.series "series and number" bibinfo.check output
- format.bvolume output
- author empty$ 'skip$
- { format.editor.in "editor" bibinfo.check output }
- if$
- }
- if$
-}
-
-FUNCTION {format.thesis.type}
-{ type duplicate$ empty$
- 'pop$
- { swap$ pop$
- "t" change.case$ "type" bibinfo.check
- }
- if$
-}
-
-FUNCTION {format.tr.number}
-{ number "number" bibinfo.check
- type duplicate$ empty$
- { pop$ bbl.techrep }
- 'skip$
- if$
- "type" bibinfo.check
- swap$ duplicate$ empty$
- { pop$ "t" change.case$ }
- { tie.or.space.prefix * * }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.book.crossref}
-{ volume duplicate$ empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- pop$ word.in
- }
- { bbl.volume
- swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
- }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.org.or.pub}
-{ 't :=
- ""
- address "address" bibinfo.check
- duplicate$ empty$
- { pop$ t }
- { t duplicate$ empty$
- { pop$ }
- {
- "," word.space *
- * swap$ *
- }
- if$
- }
- if$
- *
-%<*!apsrmp>
- year duplicate$ empty$
- {
- "empty year in " cite$ *
- warning$
- pop$ ""
- }
- 'skip$
- if$
- duplicate$ empty$
- { pop$ }
- {
- "year" bibinfo.check
- swap$
- duplicate$ empty$
- { pop$ }
- {
- "," *
- word.space *
- swap$ *
- }
- if$
- }
- if$
-%</!apsrmp>
- duplicate$ empty$ 'skip$ {
- ""
- "(" * swap$ * ")" *
- after.punctuation 'output.state :=
- punctuation.space 'punctuation.state :=
- } if$
-}
-
-FUNCTION {format.publisher.address}
-{ publisher "publisher" bibinfo.warn format.org.or.pub
-}
-
-FUNCTION {format.organization.address}
-{ organization "organization" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {format.organization.publisher.address}
-{
- publisher empty$
- { format.organization.address }
- { organization "organization" bibinfo.check output
- format.publisher.address
- }
- if$
-}
-
-FUNCTION {format.school.address.output}
-{
- school "school" bibinfo.warn
- address "address" bibinfo.check
- duplicate$ empty$ 'skip$
- {
- swap$
- duplicate$ empty$ 'skip$
- {
- ", " *
- }
- if$
- swap$
- }
- if$
- *
-%<apsrmp> duplicate$ empty$ 'skip$ { "(" swap$ * ")" * } if$ after.punctuation 'output.state :=
- output
-}
-
-FUNCTION {article.title.produce}
-{
- control.title duplicate$ #0 <
- { pop$
- }{
- format.title
- "title" 'bibfield :=
- swap$ #0 >
- {
- "title" output.check
- }{
- output
- } if$
- new.block.comma
- } if$
-}
-
-FUNCTION {control}
-{
-}
-
-FUNCTION {article}
-{ output.bibitem
- format.authors
- booktitle empty$ {
- "author" output.check
- }{ output } if$
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- article.title.produce
- output.article.booktitle
- crossref missing$
-%<apsrev>%% Handle special case of SISSA journals which require an issue number for unique citations and use volume/year interchangably
- {
-%<*!apsrev>
- link.open
- journal
- "journal" bibinfo.warn
- "journal" 'bibfield :=
- output
- add.blank
- format.ser.vol.num
- output
- eid.or.pages
-%<!apsrmp> format.date.output.check
- pages empty$ {
- doi output
- } 'skip$ if$
- link.shut
-%</!apsrev>
-%<*apsrev>
- journal "J. High Energy Phys." =
- journal "J. High Energ. Phys." = or
- journal "JHEP" = or
- journal "Journal of Cosmology and Astroparticle Physics" = or
- journal "J. Cosmol. Astropart. Phys." = or
- journal "JCAP" = or
- journal "Journal of Instrumentation" = or
- journal "J. Instrum." = or
- journal "JINST" = or
- journal "Journal of Statistical Mechanics" = or
- journal "J. of Stat. Mech." = or
- journal "J. Stat. Mech.: Theory Exp." = or
- journal "JSTAT" = or
- {
- link.open
- journal
- "journal" bibinfo.warn
- "journal" 'bibfield :=
- output
- add.blank
- format.vol.num output
- number parenthesize
- "number" bibinfo.warn
- "number" 'bibfield :=
- output
- eid.or.pages
- link.shut
- }
- {
- eid missing$
- pages missing$ and
- doi missing$ not and
- {
- journal
- "journal" bibinfo.warn
- "journal" 'bibfield :=
- output
- add.blank
- format.ser.vol.num
- output
- link.open
- doi output
- link.shut
- format.date.output.check
- }
- {
- link.open
- journal
- "journal" bibinfo.warn
- "journal" 'bibfield :=
- output
- add.blank
- format.ser.vol.num
- output
- eid.or.pages
- format.date.output.check
- link.shut
- } if$
- } if$
-%</apsrev>
- }{
- format.article.crossref output.nonnull
-%<!apsrmp> format.pages output
-%<apsrmp> eid.or.pages
- }
- if$
-%<!apsrev&!apsrmp> format.issn.output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint.controlled output
- format.translation output
- fin.entry
-}
-
-FUNCTION {book}
-{ output.bibitem
- author empty$
- {
- format.editors "author and editor" output.check
- editor format.key output
- }{
- format.authors output.nonnull
-%% crossref missing$ { editor.check.book } 'skip$ if$
- }
- if$
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- link.open
- format.btitle
- "title" output.check
- link.shut
- format.edition output
- author empty$
- {
- }
- {
- format.editor.in output
- editor format.key output
- }
- if$
- format.number.series output
- crossref missing$
- {
- format.bvolume output
- new.block.comma
- format.publisher.address output
- }{
- new.block.comma
- format.book.crossref output.nonnull
-%<!apsrmp> format.date.output.check
- }
- if$
- format.isbn.output
- format.chapter.pages
- output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output date.block
- link.open
- format.title
- "title" output.check
- link.shut
- new.block.comma
- howpublished "howpublished" bibinfo.check output
- address "address" bibinfo.check output
-%<!apsrmp> format.date.output
- format.isbn.output
- format.book.pages output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {footnote}
-{ output.bibitem
- format.note output
- fin.entry
-}
-
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- {
- format.editors "editor" output.check
- editor format.key output
- }{
- format.authors output.nonnull
- author format.key output
- }
- if$
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
-
- format.title output
- new.block.comma
-
- crossref missing$
- {
- format.in.ed.booktitle.inbook
-%<!apsrmp> format.publisher.address output
- format.chapter.pages
-%<!apsrmp> "chapter and pages"
-%<apsrmp> "chapter"
- output.check
- new.block.comma
- format.edition output
- new.block.comma
-%<apsrmp> format.publisher.address output
- }{
- format.chapter.pages
-%<!apsrmp> "chapter and pages"
-%<apsrmp> "chapter"
- output.check
- new.block.comma
- format.book.crossref output.nonnull
-%<!apsrmp> format.date.output.check
- }
- if$
- crossref missing$
- { format.isbn.output }
- 'skip$
- if$
-%<apsrmp> format.pages "pages" output.check
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- article.title.produce
- crossref missing$
- {
- format.in.ed.booktitle
-%<!apsrmp> format.publisher.address output
- format.edition output
- format.chapter.pages output
-%<apsrmp> format.publisher.address output
- format.isbn.output
- }{
- format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
-%<apsrmp> format.pages "pages" output.check
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- article.title.produce
- crossref missing$
- {
- format.in.ed.booktitle
- format.organization.publisher.address output
-%<!apsrmp> format.chapter.pages output
- format.isbn.output
- format.issn.output
- }{
- format.incoll.inproc.crossref output.nonnull
-%<!apsrmp> format.chapter.pages output
- }
- if$
-%<apsrmp> format.chapter.pages "chapter and pages" output.check
-%<apsrmp> format.pages "pages" output.check
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-FUNCTION {manual}
-{ output.bibitem
- format.authors output
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output date.block
- link.open
- format.btitle
- "title" output.check
- link.shut
- organization "organization" bibinfo.check output
- address "address" bibinfo.check output
- format.edition output
-%<!apsrmp> format.date.output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- format.btitle
- output
- new.block.comma
- link.open
- bbl.mthesis
- format.thesis.type
- output.nonnull
- link.shut
- format.school.address.output
-%<!apsrmp> format.date.output.check
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- author format.key output
-%<apsrmp> format.date.output
-%<!apsrmp> new.block.comma
-%<apsrmp> date.block
- link.open
- format.title
- output
- link.shut
- new.block.comma
- howpublished "howpublished" bibinfo.check output
-%<!apsrmp> format.date.output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- format.btitle
- output
- new.block.comma
- link.open
- bbl.phdthesis
- format.thesis.type
- output.nonnull
- link.shut
- format.school.address.output
-%<!apsrmp> format.date.output.check
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {presentation}
-{ output.bibitem
- format.authors output
- author format.key output
- new.block.comma
- link.open
- format.title
- output
- link.shut
- new.block.comma
- format.organization.address "organization and address" output.check
- month "month" output.check
- year "year" output.check
- new.block.comma
- new.sentence.comma
- format.note output
- new.sentence
- type missing$ 'skip$
- {"(" type capitalize * ")" * output}
- if$
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- format.editors output
- editor format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- link.open
- format.btitle
- "title" output.check
- link.shut
- bookaddress "address" bibinfo.check output
- format.number.series output
- format.bvolume output
- format.organization.publisher.address output
- format.isbn.output
- format.issn.output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output.check date.block
- link.open
-%<!apsrev&!apsrmp> format.title
-%<apsrev|apsrmp> format.btitle
- "title" output.check
- link.shut
- new.block.comma
- format.tr.number
- output.nonnull
- institution "institution" bibinfo.warn
- format.org.or.pub output
- new.block.comma
- new.sentence.comma
- format.note output
- format.eprint output
- fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
-%<*!apsrev>
-%<!apsrmp> new.block.comma
-%<apsrmp> format.date.output date.block
- link.open
- format.title
- "title" output.check
- link.shut
-%</!apsrev>
-%<*apsrev>
- article.title.produce
- format.eprint output
-%</apsrev>
-%<!apsrmp> format.date.output
- new.block.comma
- new.sentence.comma
- format.note "note" output.check
-%<!apsrev> format.eprint output
- fin.entry
-}
-
-FUNCTION {dataset}
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output
-%<apsrmp> format.date.output date.block
- article.title.produce
- doi missing$
- url missing$ not and
- {
- link.open
- url "url" output.check
- link.shut
- }
- {
- link.open
- doi "doi" output.check
- link.shut
- } if$
-%<!apsrmp> format.date.output
- format.note output
- fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-READ
-
-EXECUTE {control.init}
-
-ITERATE {control.pass}
-
-EXECUTE {control.check}
-
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-
-FUNCTION {cite.name.font.apply}
-{
- word.space * bbl.etal
- emphasize
- *
-}
-
-%<*!apsrev&!apsrmp>
-FUNCTION {format.lab.names}
-{ 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- {
- format.name.apply
- 't :=
- nameptr #1 >
- {
- nameptr
- #2
- =
- numnames
- #3
- > and
- {
- "others" 't :=
- #1 'namesleft :=
- }
- 'skip$
- if$
- namesleft #1 >
- { ", " * t * }
- {
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- cite.name.font.apply
- }{
- numnames #2 > { "," * } 'skip$ if$
- bbl.and
- space.word * t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-%</!apsrev&!apsrmp>
-%<*apsrev|apsrmp>
-FUNCTION {format.lab.names}
-{ 's :=
- "" 't :=
- #1 'nameptr :=
- format.name.apply
- s num.names$ duplicate$
- #2 >
- { pop$
- cite.name.font.apply
- }{
- #2 <
- 'skip$
- {
- s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- {
- cite.name.font.apply
- }{
- bbl.and space.word *
- s #2 "{vv~}{ll}" format.name$
- cite.name.font
- *
- }
- if$
- }
- if$
- }
- if$
-}
-
-%</apsrev|apsrmp>
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.label}
-{ editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.label
- 'author.key.label
- if$
- }
- if$
- 'short.list :=
-}
-
-FUNCTION {calc.label}
-{
- calc.short.authors
- short.list
- year duplicate$ empty$
-%<apsrev|apsrmp> short.list key field.or.null = or
- {
- pop$ ""
-%<apsrmp> "????" *
- }{
- control.year #0 > { purify$ #-1 #4 substring$ } 'skip$ if$
- }
- if$
- "(" swap$ *
- * 'label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{ll{ }}"
- control.author.initials {
- "{ f{ }}" *
- }{
- "{ ff{ }}" *
- } if$
- "{ jj{ }}" *
- format.name$ 't :=
- nameptr #1 >
- {
- " " *
- namesleft #1 = t "others" = and
- { "zzzzz" * }
- {
- t sortify *
- }
- if$
- }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
-}
-
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {year.sort.key}
-{
- year
-}
-
-FUNCTION {editor.sort}
-{ editor empty$
- { key empty$
- { "to sort, need editor or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-
-INTEGERS { seq.num }
-
-FUNCTION {init.seq}
-{ #0 'seq.num :=}
-
-EXECUTE {init.seq}
-
-FUNCTION {int.to.fix}
-{ "000000000" swap$ int.to.str$ *
- #-1 #10 substring$
-}
-
-FUNCTION {label.presort}
-{
- calc.label
- label sortify
- " "
- *
-%<*!aipauth&!apsrmp>
- seq.num #1 + 'seq.num :=
- seq.num int.to.fix
-%</!aipauth&!apsrmp>
-%<*aipauth|apsrmp>
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.sort
- 'author.sort
- if$
- }
- if$
- #1 entry.max$ substring$
-%</aipauth|apsrmp>
- 'sort.label :=
- sort.label
- *
- " "
- *
- title field.or.null sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-FUNCTION {presort.pass}
-{ type$ "control" = 'control.presort 'label.presort if$
-}
-
-ITERATE {presort.pass}
-
-SORT
-
-STRINGS { last.label next.extra }
-
-INTEGERS { last.extra.num number.label }
-
-FUNCTION {initialize.extra.label.stuff}
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
- #0 'number.label :=
-}
-
-FUNCTION {label.forward}
-{
- last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
- }
- if$
- number.label #1 + 'number.label :=
-}
-
-FUNCTION {label.reverse}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- extra.label 'next.extra :=
- extra.label
- duplicate$ empty$
- 'skip$
- { "{\natexlab{" swap$ * "}}" * }
- if$
- 'extra.label :=
- label extra.label * 'label :=
-}
-
-EXECUTE {initialize.extra.label.stuff}
-
-FUNCTION {forward.pass}
-{ type$ "control" = 'control.forward 'label.forward if$
-}
-
-ITERATE {forward.pass}
-
-FUNCTION {reverse.pass}
-{ type$ "control" = 'control.reverse 'label.reverse if$
-}
-
-REVERSE {reverse.pass}
-
-FUNCTION {sortkey.sort}
-{ sort.label
- " "
- *
- year.sort.key
- field.or.null sortify
- *
- " "
- *
- title field.or.null sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-FUNCTION {bib.sort.pass}
-{ type$ "control" = 'control.sort 'sortkey.sort if$
-}
-
-ITERATE {bib.sort.pass}
-
-SORT
-
-FUNCTION {init.bib.eprint}
-{
- "\texttt {"
- pop$
- "\providecommand \url [0]{\begingroup\@sanitize@url \@url }%" write$ newline$
- "\providecommand \@url [1]{\endgroup\@href {#1}{" "}}%" bbl.url.prefix swap$ * * write$ newline$
- "\providecommand " " [0]{URL }%" bbl.url.prefix swap$ * * write$ newline$
- eprint.command "\providecommand " swap$ * "[0]{\href }%" * write$ newline$
-}
-
-FUNCTION {init.bib.doi}
-{
- "\providecommand \doibase [0]{" doi.base "}%" * * write$ newline$
-}
-
-FUNCTION {init.bib.hypertex}
-{
- "\providecommand " noop.command "[0]{\@secondoftwo}%" * * write$ newline$
- "\providecommand " href.command "[0]{\begingroup \@sanitize@url \@href}%" * * write$ newline$
- "\providecommand \@href[1]{\@@startlink{#1}\@@href}%" write$ newline$
- "\providecommand \@@href[1]{\endgroup#1\@@endlink}%" write$ newline$
- "\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode `\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%" write$ newline$
- "\providecommand \@@startlink[1]{}%" write$ newline$
- "\providecommand \@@endlink[0]{}%" write$ newline$
-}
-
-FUNCTION {init.bib.namefont}
-{
- "\providecommand \bibnamefont [1]{#1}%" write$ newline$
- "\providecommand \bibfnamefont [1]{#1}%" write$ newline$
- "\providecommand \citenamefont [1]{#1}%" write$ newline$
-}
-
-FUNCTION {init.bib.quote}
-{
- "\providecommand " bbl.enquote * " [1]{" *
- "``" "''"
- "#1" swap$ "}%" * * * * write$ newline$
-}
-
-FUNCTION {init.bib.ay}
-{
- "\providecommand \natexlab [1]{#1}%"
- write$ newline$
-}
-
-FUNCTION {init.bib.bibinfo}
-{
- bibinfo.command "\providecommand " swap$ * " [0]{\@secondoftwo}%" * write$ newline$
- bibfield.command "\providecommand " swap$ * " [0]{\@secondoftwo}%" * write$ newline$
-}
-
-FUNCTION {init.bib.lang}
-{
- "\providecommand \selectlanguage [0]{\@gobble}%" write$ newline$
-}
-
-FUNCTION {init.bib.endbibitem}
-{
- "\providecommand " bbl.open * "[0]{}%" * write$ newline$
- "\providecommand \bibitemStop [0]{}%" write$ newline$
- "\providecommand \bibitemNoStop [0]{.\EOS\space}%" write$ newline$
- "\providecommand \EOS [0]{\spacefactor3000\relax}%" write$ newline$
-}
-
-FUNCTION {init.bib.translation}
-{
- "\providecommand \translation [1]{[#1]}%" write$ newline$
-}
-
-FUNCTION {warn.bib}
-{
-}
-
-FUNCTION {init.bib}
-{
- warn.bib
- "\makeatletter" write$ newline$
- "\providecommand \@ifxundefined [1]{%" write$ newline$
- " \@ifx{#1\undefined}" write$ newline$
- "}%" write$ newline$
- "\providecommand \@ifnum [1]{%" write$ newline$
- " \ifnum #1\expandafter \@firstoftwo" write$ newline$
- " \else \expandafter \@secondoftwo" write$ newline$
- " \fi" write$ newline$
- "}%" write$ newline$
- "\providecommand \@ifx [1]{%" write$ newline$
- " \ifx #1\expandafter \@firstoftwo" write$ newline$
- " \else \expandafter \@secondoftwo" write$ newline$
- " \fi" write$ newline$
- "}%" write$ newline$
- init.bib.ay
- init.bib.quote
- init.bib.namefont
- init.bib.hypertex
- init.bib.eprint
- init.bib.doi
- init.bib.lang
- init.bib.bibinfo
- init.bib.translation
- init.bib.endbibitem
- "\providecommand " bbl.shut * " [1]{\csname bibitem#1\endcsname}%" * write$ newline$
- "\let\auto@bib@innerbib\@empty" write$ newline$
- "%</preamble>" write$
-}
-
-FUNCTION {begin.bib}
-{
- id.bst diagn.cmntlog
- control.bib
- preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{"
- number.label int.to.str$
- * "}%" *
- write$ newline$
- init.bib
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}%"
- write$ newline$
-}
-
-EXECUTE {end.bib}
-
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</aapmrev|aipauth|aipnum|apsrev|apsrmp>
-% \end{macrocode}
-%
-% \endinput
-%
-% \Finale
diff --git a/macros/latex/contrib/revtex/source/revtex4-2.dtx b/macros/latex/contrib/revtex/source/revtex4-2.dtx
deleted file mode 100644
index 243266a709..0000000000
--- a/macros/latex/contrib/revtex/source/revtex4-2.dtx
+++ /dev/null
@@ -1,8384 +0,0 @@
-% \iffalse meta-comment balanced on line 122
-% revtex4-2.dtx: package to typeset APS, AIP, SOR, ASA, etc. journal articles
-% Copyright (c) 2019 American Physical Society.
-% https://journals.aps.org/revtex/
-% mailto:revtex@aps.org
-%
-% 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 revtex4-2.dtx
-% and the derived files
-% revtex4-2.cls, revtex4-2.pdf
-% Distribution:
-% CTAN:macros/latex/contrib/revtex/
-%
-% Unpacking:
-% tex revtex4-2.dtx
-%
-% Documentation:
-% latex revtex4-2.dtx; ...
-%
-% Programm calls to get the documentation (example):
-% pdflatex revtex4-2.dtx
-% makeindex -s gind.ist revtex4-2.idx
-% makeindex -s gglo.ist -o revtex4-2.gls revtex4-2.glo
-% pdflatex revtex4-2.dtx
-% makeindex -s gind.ist revtex4-2.idx
-% pdflatex revtex4-2.dtx
-%
-% Installation:
-% TDS:bibtex/bst/revtex/
-% TDS:doc/latex/revtex/
-% TDS:tex/latex/revtex/
-% TDS:source/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 revtex4-2.dtx when run through TeX.
-\input docstrip
-\preamble
-
-This file is part of the APS files in the REVTeX 4 distribution.
-For the version number, search on the string %FileInfo
-
-Original version by David Carlisle
-Modified by Arthur Ogawa (mailto:arthur_ogawa at sbcglobal dot net)
-
-Version (4.2a, unreleased)
-Modified by Aptara on behalf of American Physical Society and American Institute of Physics
-
-Version (4.2b,4.2c)
-Modified by Mark Doyle, American Physical Society (mailto:revtex at aps.org)
-
-Version (4.2d--4.2f)
-Modified by Phelype Oleinik for the American Physical Society (mailto:phelype.oleinik at latex-project.org)
-
-Copyright (c) 2019--2022 American Physical Society.
-https://journals.aps.org/revtex/
-mailto:revtex@aps.org
-
-See the REVTeX 4.2 README-REVTEX file for restrictions and more information.
-
-\endpreamble
-\askforoverwritefalse
-\keepsilent
-\generate{%
- \file{revtex4-2.cls}{%
- \from{revtex4-2.dtx}{kernel}%
- \from{ltxutil.dtx}{kernel}%
- \from{ltxfront.dtx}{kernel}%
- \from{ltxgrid.dtx}{kernel}%
- \from{revtex4-2.dtx}{options}%
- \from{ltxutil.dtx}{options}%
- \from{ltxfront.dtx}{options}%
- \from{ltxgrid.dtx}{options}%
- \from{revtex4-2.dtx}{package}%
- }%
- \file{aps4-2.rtx}{\from{revtex4-2.dtx}{aps}}%
- \file{apsrmp4-2.rtx}{\from{revtex4-2.dtx}{rmp}}%
- \file{aps10pt4-2.rtx}{\from{revtex4-2.dtx}{10pt}}%
- \file{aps11pt4-2.rtx}{\from{revtex4-2.dtx}{11pt}}%
- \file{aps12pt4-2.rtx}{\from{revtex4-2.dtx}{12pt}}%
- \file{revsymb4-2.sty}{\from{revtex4-2.dtx}{revsymb}}%
-}%
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation, please move}
-\Msg{* *.cls, *.rtx, and *.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 revtex4-2.dtx through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-\endbatchfile
-%</install>
-%<*ignore>
-\fi
-%</ignore>
-% \fi
-%
-% \GetFileInfo{revtex4-2.dtx}
-%
-% \StopEventually{}
-% \iffalse ltxdoc klootch
-%<*package>
-%%% @LaTeX-file{
-%%% filename = "revtex4-2.dtx",
-%%% version = "4.2f",
-%%% date = "2022/06/05",
-%%% author = "Mark Doyle (mailto: revtex at aps.org), Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
-%%% commissioned by the American Physical Society.
-%%% ",
-%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa, Version 4.2 Copyright (C) 2019 American Physical Society
-%%% distributed under the terms of the
-%%% LaTeX Project Public License 1.3c, see
-%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
-%%% ",
-%%% address = "Mark Doyle,
-%%% USA",
-%%% telephone = "",
-%%% FAX = "",
-%%% email = "mailto colon revtex at aps.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "",
-%%% supported = "yes",
-%%% abstract = "",
-%%% }
-%</package>
-% \fi
-%
-% \iffalse ltxdoc klootch
-% The following references the \file{README-REVTEX.tex} file,
-% which contains the frontmatter for the programmer's docs.
-% The contents of this file are generated when
-% you typeset this file with LaTeX.
-% Search on "{filecontents*}{README-REVTEX.tex}" to locate it.
-% \fi\input{README-REVTEX.tex}%
-%
-% \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}
-%revtex4-2.dtx
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{tex revtex4-2.dtx}}%
-% Typesetting ths file under \TeX\ itself runs the installer,
-% which generates the package files.
-%\begin{verbatim}
-%revtex4-2.cls, revtex4.ins, revtex4.drv, aps4-2.rtx,
-%aps10pt4-2.rtx, aps11pt4-2.rtx, aps12pt4-2.rtx, revsymp.sty
-%\end{verbatim}
-%
-% \subsubsection{Generated by \texttt{pdflatex revtex4-2.dtx}}%
-% Typesetting the source file under \LaTeX\
-% generates the documentation.
-%\begin{verbatim}
-%revtex4.pdf,
-%\end{verbatim}
-%
-% \subsubsection{Auxiliary}%
-% The following are auxiliary files generated
-% in the course of running \LaTeX:
-% \begin{verbatim}
-%revtex4.aux revtex4.idx revtex4.ind revtex4.log revtex4.toc
-% \end{verbatim}
-%
-% \section{Code common to all modules}%
-%
-% The following may look a bit klootchy, but 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|kernel|aps|rmp|revsymb>
-\NeedsTeXFormat{LaTeX2e}[1996/12/01]%
-%</doc|kernel|aps|rmp|revsymb>
-%<kernel>\ProvidesClass{revtex4-2}
-%<aps>\ProvidesFile{aps4-2}
-%<rmp>\ProvidesFile{apsrmp4-2}
-%<10pt>\ProvidesFile{aps10pt4-2}
-%<11pt>\ProvidesFile{aps11pt4-2}
-%<12pt>\ProvidesFile{aps12pt4-2}
-%<revsymb>\ProvidesPackage{revsymb4-2}
-%<*doc>
-\ProvidesFile{revtex4-2.dtx}
-%</doc>
-%<*!package&!options>
-%<version>
- [2022/06/05 4.2f (https://journals.aps.org/revtex/ for documentation)]% \fileversion
-%</!package&!options>
-% \end{macrocode}
-% The current class name is remembered in \cmd\class@name.
-% This is something of a klootch, relying as it does on knowledge of the implementation of \cmd\ProvidesPackage.
-% \begin{macrocode}
-%<kernel>\let\class@name\@gtempa
-% \end{macrocode}
-%
-% \section{The driver module \texttt{driver}}
-%
-% This module, consisting of the present section,
-% typesets the programmer's documentation,
-% generating the \file{README-REVTEX.txt} and sample document as needed.
-%
-% Because the only uncommented-out lines of code at the beginning of
-% this file constitute the \file{driver} module itself,
-% we can simply typeset the \file{.dtx} file directly,
-% and there is thus rarely any need to
-% generate the ``driver'' {\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}
-% The driver uses packages \file{ltxdoc.sty}, \file{ltxdocext.sty},
-% \file{hyperref.sty}, and whatever font package has been selected.
-% \begin{macrocode}
-\documentclass{ltxdoc}
-\RequirePackage{ltxdocext}%
-\let\url\undefined
-\RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}%
-% \end{macrocode}
-% We ask for the usual indices and glossaries.
-% \begin{macrocode}
-\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist revtex4
-\RecordChanges % makeindex -s gglo.ist -o revtex4.gls revtex4.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 Frontmatter File}
-% As promised above, here is the contents of the frontmatter file.
-% \begin{macrocode}
-\begin{filecontents*}{README-REVTEX.tex}
-\title{%
- The \classname{revtex4-2} document class of the American Physical Society%
- \protect\thanks{Work under hire to American Physical Society. Version \fileversion\ \copyright\ 2019 American Physical Society}%
-}%
-\author{Arthur Ogawa and Mark Doyle%
- \protect\thanks{First revision of REV\TeX4.0 (unreleased) by David Carlisle, all released versions of 4.0 and 4.1 by Art Ogawa, 4.2a (unreleased) by Aptara, 4.2b,c by Mark Doyle}%
-}%
-\date{Version \fileversion, dated \filedate}%
-\newcommand\revtex{REV\TeX}
-
-\maketitle
-
-This file embodies the implementation of the APS \revtex\ 4.2 document class
-for electronic submissions to journals.
-
-The distribution point for this work is
-\url{https://journals.aps.org/revtex/},
-which contains fully unpacked, prebuilt runtime files and documentation.
-
-\tableofcontents
-
-\section{Using \protect\revtex}
-
-The file \file{README} has retrieval and installation information.
-
-User documentation is presented separately in \file{auguide.tex}.
-
-The file \file{template.aps} is a boilerplate file.
-
-\changes{4.0a}{1998/01/16}{Initial version}
-\changes{4.0a}{1998/01/31}{Move after process options, so \cs{clearpage} not in scope of twocolumn}
-\changes{4.0a}{1998/01/31}{Rearrange the ordering so numerical ones come first. AO: David, what does this mean?}
-\changes{4.0a}{1998/01/31}{use font-dependent spacing}
-\changes{4.0a}{1998/01/31}{4.0d had twoside option setting twoside switch to false}
-\changes{4.0a}{1998/01/31}{Move after process options, so the following test works}
-\changes{4.0a}{1998/01/31}{print homepage}
-\changes{4.0a}{1998/01/31}{protect against hyperref revtex kludges which are not needed now}
-\changes{4.0a}{1998/06/10}{multiple preprint commands}
-\changes{4.0a}{1998/06/10}{comma not space between email and homepage}
-\changes{4.0a}{1998/06/10}{single space footnotes}
-\changes{4.0b}{1999/06/20}{First modifications by Arthur Ogawa (mailto:arthur\_ogawa at sbcglobal dot net)}
-\changes{4.0b}{1999/06/20}{Added localization of \cs{figuresname}}
-\changes{4.0b}{1999/06/20}{Added localization of \cs{tablesname}}
-\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{10pt} is in this module.}
-\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{11pt} is in this module.}
-\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{12pt} is in this module.}
-\changes{4.0b}{1999/06/20}{AO: made aps.rtx part of revtex4.dtx}
-\changes{4.0b}{1999/06/20}{AO: remove duplicates}
-\changes{4.0b}{1999/06/20}{call \cs{print@floats}}
-\changes{4.0b}{1999/06/20}{Defer assignment until \cs{AtBeginDocument} time.}
-\changes{4.0b}{1999/06/20}{Defer decision until \cs{AtBeginDocument} time}
-\changes{4.0b}{1999/06/20}{Define three separate environments, defer assignment to \cs{AtBeginDocument} time.}
-\changes{4.0b}{1999/06/20}{Frank Mittelbach, has stated in \protect\classname{multicol}: ``The kernel command \cs{@footnotetext} should not be modified.'' Thus, I have removed David Carlisle's redefinition of that command. Note, however, that later versions of \protect\classname{multicol} do not require this workaround. Belt and suspenders.}%
-\changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
-\changes{4.0b}{1999/06/20}{New option}
-\changes{4.0b}{1999/06/20}{One-line caption sets flush left.}
-\changes{4.0b}{1999/06/20}{only execute if appropriate}
-\changes{4.0b}{1999/06/20}{Processing delayed to \cs{AtBeginDocument} time}
-\changes{4.0b}{1999/06/20}{Removed invocation of nonexistent class option \protect\classoption{groupauthors} and all other class options that should only be invoked by the document. (Otherwise precedence of class options does not work.)}
-\changes{4.0b}{1999/06/20}{Restore all media size class option of \protect\file{classes.dtx}}
-\changes{4.0b}{1999/06/20}{Stack \cs{preprint} args flush right at right margin.}
-\changes{4.0c}{1999/11/13}{(AO, 115) If three or more preprints specified, set on single line, with commas.}
-\changes{4.0c}{1999/11/13}{(AO, 129) section* within appendix was producing appendixname}
-\changes{4.0c}{1999/11/13}{*-form mandates pagebreak}
-\changes{4.0c}{1999/11/13}{also spelled ``acknowledgements''.}
-\changes{4.0c}{1999/11/13}{Do not put by REVTeX in every page foot}
-\changes{4.0c}{1999/11/13}{grid changes via ltxgrid procedures}
-\changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-\changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
-\changes{4.0c}{1999/11/13}{Lose compatability mode.}
-\changes{4.0c}{1999/11/13}{New ltxgrid-based code, other bug fixes}
-\changes{4.0c}{1999/11/13}{New option ``checkin''}
-\changes{4.0c}{1999/11/13}{Prevent an inner footnote from performing twice}
-\changes{4.0d}{2000/04/10}{Also alter how lists get indented.}
-\changes{4.0d}{2000/04/10}{eprint takes an optional argument, syntactical only in this case.}
-\changes{4.0d}{2000/04/10}{New option}
-\changes{4.0d}{2000/05/10}{More features and bug fixes: compatability with longtable and array packages. Now certainly incompatible with multicol.}
-\changes{4.0d}{2000/05/17}{make longtable trigger the head, too}
-\changes{4.0d}{2000/05/18}{But alternative spelling is deprecated.}
-\changes{4.0e}{2000/09/20}{New option showkeys}
-\changes{4.0e}{2000/11/14}{Bug fixes and minor new features: title block affiliations can have ancillary data, just like authors; clearpage processing revamped, with floats staying in order; widetext ornaments.}
-\changes{4.0e}{2000/11/21}{adornments above and below.}
-\changes{4.0f}{2001/02/13}{Last bug fixes before release.}
-\changes{4.0rc1}{2001/06/17}{Running headers always as if two-sided}
-\changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
-\changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
-\changes{4.0rc4}{2001/07/23}{hyperref is no longer loaded via class option: use a usepackage statement instead}
-\changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-\changes{4.1a}{2008/01/18}{(AO, 451) ``Cannot have more than 256 cites in a document''}%
-\changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-\changes{4.1a}{2008/01/18}{(AO, 460) ``Proper style is "FIG. 1. ..." (no colon)''}%
-\changes{4.1a}{2008/01/18}{(AO, 478) \cs{ds@letterpaper}, so that ``letterpaper really is the default''}%
-\changes{4.1a}{2008/01/18}{(AO, 488) Change processing of options to allow an unused option to specify society and journal}%
-\changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
-\changes{4.1a}{2008/01/19}{For natbib versions before 8.21, \cs{NAT@sort} was consulted only as natbib was being read in. Now it is fully dynamic.}
-\changes{4.1b}{2008/05/29}{The csname substyle@ext is now defined without a dot (.), to be compatible with \LaTeX usage (see @clsextension and @pkgextension).}
-\changes{4.1b}{2008/06/01}{(AO) Implement bibnotes through \cs{frontmatter@footnote@produce} instead of \cs{bibnotes@sw}}%
-\changes{4.1b}{2008/06/01}{Add option reprint, opposite of preprint, and preferred alternative to twocolumn}
-\changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
-\changes{4.1b}{2008/06/30}{(AO) Structure the Abstract using the \texttt{bibliography} environment}
-\changes{4.1b}{2008/07/01}{(AO) coordinate \cs{if@twoside} with \cs{twoside@sw}}
-\changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-\changes{4.1b}{2008/07/01}{(AO) No longer need to test \cs{chapter} as of \texttt{natbib} version 8.2}
-\changes{4.1b}{2008/07/01}{(AO) No longer use \cs{secnumarabic@sw}, instead use \cs{setup@secnums}}
-\changes{4.1b}{2008/07/01}{(AO) Provide more diagnostics when \cs{@society} is assigned.}
-\changes{4.1b}{2008/07/01}{(AO) provide option longbibliography}
-\changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
-\changes{4.1b}{2008/07/01}{Break out \cs{@caption@fignum@sep}}
-\changes{4.1b}{2008/07/01}{Class option galley sets \cs{preprintsty@sw} to false}
-\changes{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
-\changes{4.1b}{2008/07/01}{Package textcase is now simply a required package}
-\changes{4.1b}{2008/07/01}{Procedures \cs{@parse@class@options@society} and \cs{@parse@class@options@journal} and friends}
-\changes{4.1b}{2008/07/01}{Read in all required packages together}
-\changes{4.1b}{2008/07/01}{Remove options newabstract and oldabstract}
-\changes{4.1b}{2008/08/01}{Section numbering via procedures \cs{secnums@rtx} and \cs{secnums@arabic}.}
-\changes{4.1b}{2008/08/04}{As with author formatting, rag the right more, and assign \cs{@totalleftmargin}. Also neutralize \cs{def@after@address}.}%
-\changes{4.1b}{2008/08/04}{Rag the right even more: .8\cs{hsize}. Also, assign \cs{@totalleftmargin}.}%
-\changes{4.1b}{2008/08/04}{The \texttt{rmp} journal substyle selects \texttt{groupedaddress} by default.}%
-\changes{4.1b}{2008/08/04}{Use \cs{setup@hook} to initialize all.}
-\changes{4.1c}{2008/08/15}{Document class option longbibliography via \cs{substyle@post}}
-\changes{4.1d}{2009/03/27}{Definition of \cs{ @fnsymbol} follows fixltx2e.sty}
-\changes{4.1e}{2008/06/29}{(AO, 455) be nice to a list within the abstract}
-\changes{4.1f}{2009/07/07}{(AO, 513) Add class option linenumbers: number the lines a la \classname{lineno}}
-\changes{4.1f}{2009/07/07}{(AO, 516) Merged references are separated with a semicolon}
-\changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-\changes{4.1f}{2009/07/11}{(AO, 521) Lonely bibliography head}%
-\changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
-\changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
-\changes{4.1f}{2009/07/20}{(AO, 524) Makes no sense if citations are superscript numbers and so are footnotes}
-\changes{4.1f}{2009/10/05}{(AO, 530) \cs{@fnsymbol}: Failed to import fixltx2e.sty technology. Return to LaTeX core.}
-\changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
-\changes{4.1g}{2009/10/07}{(AO, 538) \cs{MakeTextUppercase} inappropriately expands the double backslash}
-\changes{4.1h}{2009/10/09}{(AO) Remove expiry code in the release software}%
-\changes{4.1i}{2009/10/23}{(AO, 541) Defer assignment of \cs{cite} until after natbib loads}
-\changes{4.1j}{2009/10/24}{(AO, 549) Repairing natbib's \cs{BibitemShut} and \cs{bibAnnote}}
-\changes{4.1j}{2009/10/25}{(AO, 545) hypertext capabilities off by default; enable with \classoption{hypertext}}
-\changes{4.1j}{2009/10/25}{(AO, 552) Repair spacing in \cs{onlinecite}}
-\changes{4.1k}{2009/11/06}{(AO, 554) give the \cs{newlabel} command syntax appropriate to the hyperref package}
-\changes{4.1n}{2009/11/06}{(AO, 565) restore 4.0 behavior: invoking class option preprint implies class option preprintnumbers}
-\changes{4.1n}{2009/11/30}{(AO, 566) restore 4.0 behavior: flush column bottoms}
-\changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
-\changes{4.1n}{2009/12/09}{(AO, 569) execute the after-last-shipout procedures from within the safety of the output routine}%
-\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, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-\changes{4.1n}{2009/12/13}{(AO, 573) arrange to load \classname{lineno} after any other packages.}%
-\changes{4.1n}{2010/01/04}{(AO, 575) the default for journal prstper is longbibliography}%
-\changes{4.1n}{2010/01/04}{(AO, 576) In .bst files, remove support for the annote field}%
-\changes{4.1n}{2010/01/02}{(AO) fine-tune spacing above and below widetext}%
-\changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-\changes{4.1n}{2010/01/02}{(AO, 572) \cs{@makefntext} and \cs{frontmatter@makefntext} must be defined harmoniously}%
-\changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
-\changes{4.1o}{2010/02/05}{(AO, 549) Remove patch to natbib, which is now at version 8.31a}
-\changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
-\changes{4.1o}{2010/02/05}{(AO, 579) Endnote shall comprise their own Bib\TeX\ entry type: @FOOTNOTE.}
-\changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
-\changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
-\changes{4.1o}{2010/02/09}{(AO, 581) Handle case: merged references, with first ending in a stop character.}
-\changes{4.1p}{2010/02/24}{(AO, 583) Provide interface to \classname{ltxgrid} \cs{onecolumn@grid@setup} and \cs{twocolumn@grid@setup}}
-\changes{4.1p}{2010/02/24}{(AO, 584) Per MD, remove trailing space character from each journal abbreviation: it had caused an extraneous space in the .bbl}
-\changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
-\changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
-\changes{4.1r}{2010/06/22}{(AO, 595) Provide \cs{lovname} along with other List of Videos definitions.}%
-\changes{4.2a}{2014/12/31}{(Aptara, MD) Added initial support for SOR and AAPM journals, additional journals for APS, and additional journals and proceedings for AIP, unreleased.}%
-\changes{4.2a}{2014/12/31}{(Aptara) Make prb style to follow other Phys. Rev. journals.}%
-\changes{4.2a}{2014/12/31}{(Aptara) Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
-\changes{4.2a}{2017/11/21}{(MD) Make long bibliography style the default now.}%
-\changes{4.2a}{2017/11/28}{(MD) Add call to normalsize to be a good citizen and allow booktabs.sty to work properly}.%
-\changes{4.2b}{2018/12/26}{(MD) Make titles in bibliography default, prb style to follow other Phys. Rev. journals, add a unified physrev option as well as prx and prapplied options. Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
-\changes{4.2b}{2017/11/21}{(MD) Update options for new titles without "Special Topics" and make prper match style of other journal options}%
-\changes{4.2b}{2017/11/21}{(MD) Add options for new APS journals and a generic physrev option for future-proofing}%
-\changes{4.2b}{2017/11/22}{(MD) Change default to not use a title page - it seems antiquated}%
-\changes{4.2b}{2017/11/22}{(MD) MD - not sure why these parameters were different previously. Made them match except for title.}%
-\changes{4.2b}{2017/11/22}{(MD) PACS are obsolete altogether now}%
-\changes{4.2b}{2018/12/26}{(MD) Improve control over display of e-print ids in bibliography.}%
-
-\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}
-%%\newcommand\revtex{REV\TeX}% TeXSupport
-\begin{document}%
-\expandafter\DocInput\expandafter{\jobname.dtx}%
-\PrintChanges
-\end{document}
-% \end{macrocode}
-% And that is the end of the driver for the programmer's documentation.
-% \begin{macrocode}
-%</doc>
-% \end{macrocode}
-%
-% \section{Overview}%
-% \revtex\ is a \LaTeXe\ document class, somewhat like a hybrid of
-% the standard \LaTeX\ \classname{book} and \classname{article} classes.
-%
-% Certain packages are (should be) loaded by this class in any case:
-% \classname{amssymb}, \classname{amsmath}, \classname{bm}, \classname{natbib}.
-%
-% Certain packages are automatically loaded by this class
-% when a corresponding class option has been invoked:
-%
-% \begin{tabular}{ll}
-% \textbf{\revtex\ option}&\textbf{package}\\
-% \classoption{amsfonts}&\classname{amsfonts}\\
-% \classoption{amssymb}&\classname{amssymb}\\
-% \classoption{aps}&\classname{overcite}\\
-% \end{tabular}
-%
-% Certain other packages are to be loaded by the
-% document through explicit use of \cmd\usepackage.
-% Some mentioned in the user documentation are
-% \classname{graphicx}, \classname{longtable}, \classname{hyperref},
-% and \classname{bm}.
-%
-% Certain commonly used packages are known to be incompatible with
-% \revtex, among them \classname{multicol} and \classname{cite}.
-% If such a package is found to be loaded, \revtex\ issues an error message
-% and halts the job.
-% Halting might be considered severe punishment for loading an incompatible
-% package, but if we were to proceed, an even weirder error might be encountered
-% further down the road.
-%
-% This document class implements the substyle: a set of mutually
-% exclusive class options that, in this case, allow the
-% document class to address multiple societies.
-% It also implements a sub-substyle, giving the
-% journal of the given society.
-% Any society may create a substyle;
-% this file generates one for \classoption{aps}.
-%
-% FIXME: should always load the \classname{graphicx} package. No, allow user to load whichever graphics package is desired.
-%
-% QUERY: since \classname{amsfonts} and \classname{amssymb} extend
-% syntax, why not load them in any case?
-%
-% Certain processing occurs at the endgame for reading in \revtex, thereby establishing
-% precedence for assignments to \LaTeX's (and \revtex's) parameters:
-% \begin{enumerate}
-% \item
-% Figure out which society is operative and read in the indicated \file{.rtx} file.
-% \item
-% Figure out which journal option is operative and execute the indicated journal command. This may lead to reading in a journal substyle \file{.rtx} file.
-% \item
-% Figure out which pointsize is operative and execute the indicateded pointsize command. This may lead to reading in a pointsize \file{.rtx} file.
-% \item
-% Execute all of the document's options, in the order declared within the document.
-% \item
-% Read in all required packages (like \classname{natbib}, \classname{amsfonts}, \classname{amssymb}), that were determined by class, society, and journal.
-% \item
-% The last required package, if existing, is the document's style file, the \file{.rty} file.
-% Note that the \file{.rty} file can override the assignments of \revtex, society, journal, and required packages, and even load its own packages.
-% It can also, via appendations to \cmd\setup@hook, override the setup code itself.
-% \item
-% Execute all of the setup code accumulated. Such code can be queued by \revtex\ itself, by the society, by the journal, or by the pointsize.
-% \item
-% At this point, \revtex\ has completed the process of inputting itself,
-% and \LaTeX\ will now execute the \cmd\AtEndOfClass\ procedures.
-% \end{enumerate}
-%
-% \revtex\ will have enqueued code to execute at \cmd\AtBeginDocument\ time,
-% in two different queues.
-% \cmd\document@inithook\ executes immediately upon encountering the \cmd\begin\env{document} statement,
-% \cmd\class@documenthook\ at the end of all the code enqueued via \cmd\AtBeginDocument.
-% \begin{enumerate}
-% \item
-% Install procedures to execute at the very end of the class's
-% \cmd\AtBeginDocument\ processing, such as
-% \begin{enumerate}
-% \item
-% closing out the page grid
-% \item
-% putting out the LastPage label.
-% \item
-% issuing a \cmd\bibliographystyle\ command, based on the value set
-% by the society substyle.
-% \item
-% setting default values for parameters used in the document.
-%FIXME: differentiate between class's parameters that can wait until
-% they are used in the document, and parameters that are used at \cmd\AtBeginDocument\ time.
-% \end{enumerate}
-% \item
-% Install procedures to execute the very last at \cmd\AtEndDocument\ time,
-% such as the \cmd\clearpage\ processing.
-% \end{enumerate}
-%
-% Certain events are optionally scheduled for \cmd\AtBeginDocument\ time:
-% \begin{enumerate}
-% \item
-% Setting default values for the Booleans and for other procedures used in formatting.
-% \item
-% In response to class options options, adjusting parameters and procedures used in formatting.
-% \item
-% Implementing the \classoption{eqsecnum} option, if required.
-% \item
-% Setting the state engine for data commands.
-% \item
-% Memorizing procedures for later use.
-% \item
-% Setting type size and area, for use by later calculations.
-% \end{enumerate}
-%
-% Certain events are scheduled for \cmd\class@enddocumenthook\ time:
-% \begin{enumerate}
-% \item
-% Print out the migrated floats or the end notes, if needed.
-% \item
-% Close out the page grid.
-% \item
-% Label the last page of the document
-% \item
-% (\classname{natbib}) prepare to read in the \file{.aux} file.
-% \end{enumerate}
-%
-% \section{Writing journal-specifc extensions to \revtex}
-%
-% With this version of \revtex, we introduce a somewhat different
-% scheme for adapting \revtex\ to the needs of a specific journal.
-%
-% To create a journal substyle, you create new class options in
-% \revtex\ for the society, say \classoption{osa}, and any of that society's journals,
-% one of which is, say, \classoption{josaa},
-% using the code for the APS as a guide.
-% In particular, each of your new options should separately define \cmd\@society\
-% and \cmd\@journal. That for the former will be the same for
-% all options relating to a particular society.
-%
-% Then, for the society, you create a corresponding \file{.rtx}
-% file, in our case \file{osa.rtx}.
-% Within that file, you override procedures and parameter assignments as you see fit.
-% Ideally they will be generally applicable to all of that society's
-% journals (see the file \file{aps.rtx} for a realization of this scheme).
-% Also within that file, you include a
-% section of code for each journal, that for josaa looks like:
-% \begin{verbatim}
-% \@ifx{\@journal\journal@josaa}{%
-% <code specific to the josaa>
-% }{}%
-% \end{verbatim}
-%
-% Thus far, the scheme is similar to that used in \revtex\ 3.1.
-% However, the new scheme does differ from the old in that
-% the \file{.rtx} file should define no syntactical extensions
-% to \revtex.
-%
-% \section{The \classname{revtex4} Document Class}
-% Above, we took
-% advantage of 1) the \LaTeX\ definition of \cmd\ProvidesPackage\ and
-% 2) that the line of code immediately afterwards follows the \cmd\ProvidesClass\ statement above.
-% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% Print a banner in the log:
-% \begin{macrocode}
-\GenericInfo{}{\space
- Copyright (c) 2019 American Physical Society.^^J
- mailto:revtex@aps.org^^J
- Licensed under the LPPL:^^Jhttp://www.ctan.org/tex-archive/macros/latex/base/lppl.txt^^J
- Arthur Ogawa <arthur_ogawa at sbcglobal dot net>^^J
- Based on work by David Carlisle <david at dcarlisle.demon.co.uk>^^J
- Version (4.2d--4.2f): Modified by Mark Doyle and Phelype Oleinik^^J
- \@gobble
-}%
-% \end{macrocode}
-%
-% \subsection{Compatibility Processing}
-%
-% If the document has \cmd\documentstyle|{revtex4}|,
-% then, instead of attempting to run in compatability mode,
-% just complain and exit.
-% \changes{4.0c}{1999/11/13}{Lose compatability mode.}
-% \begin{macrocode}
-\if@compatibility
- \edef\reserved@a{\errhelp{%
- Change your \string\documentstyle\space statement to
- \string\documentclass\space and rerun.
- }}\reserved@a
- \errmessage{You cannot run \class@name\space in compatability mode}%
- \expandafter\@@end
-\fi
-% \end{macrocode}
-%
-%
-% \section{Extensions to the \LaTeX\ Kernel}
-%
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% Here, we incorporate the utility, frontmatter, and page grid packages.
-% The \classname{ltxutil}, \classname{ltxfront}, and \classname{ltxgrid} source are distributed with
-% \revtex.
-%
-% Here begins the \file{options} \textsc{docstrip} module.
-% \begin{macrocode}
-%<*options>
-% \end{macrocode}
-%
-% \subsection{Hooks}
-%
-% \begin{macro}{\setup@hook}
-% The procedure
-% \cmd\setup@hook\
-% serves as the vehicle for all code that
-% gives values to the class's parameters once all the
-% society, journal, options, and packages have been processed.
-%
-% Arrange for journal substyles to set their own default values.
-% \begin{macrocode}
-\let\setup@hook\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% After preamble processing is complete,
-% detect whether package \classname{longtable} has been loaded and patch it.
-% \begin{macrocode}
-\appdef\document@inithook{%
- \switch@longtable
- \let\LT@makecaption\LT@makecaption@rtx
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\LT@makecaption}
-% We override the caption processing method of the \classname{longtable} package:
-% space below the caption is created via strut instead of whitespace.
-% \begin{macrocode}
-\def\LT@makecaption@rtx#1#2#3{%
- \LT@mcol\LT@cols c{%
- \hbox to\z@{%
- \hss
- \parbox[t]\LTcapwidth{%
- \sbox\@tempboxa{#1{#2: }#3\unskip\nobreak\vrule\@width\z@\@height\z@\@depth .5\baselineskip}%
- \ifdim\wd\@tempboxa>\hsize
- #1{#2: }#3\unskip\nobreak\vrule\@width\z@\@height\z@\@depth .5\baselineskip
- \else
- \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
- \fi
- \endgraf
- }%
- \hss
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\robust@boldmath}
-% Robustify the \cmd\boldmath command.
-% If Team \LaTeX\ (or any package) ever gets around to fixing this problem,
-% we will bow out. (This fix relates to bug \#394.)
-% \begin{macrocode}
-\def\protectdef@boldmath{%
- \expandafter\@ifnotrelax\csname boldmath \endcsname{}{%
- \class@info{Robustifying \string\LaTeX's \string\boldmath\space command}%
- \expandafter\let\csname boldmath \endcsname\boldmath
- \expandafter\def\expandafter\boldmath\expandafter{\expandafter\protect\csname boldmath \endcsname}%
- }%
-}%
-\appdef\document@inithook{%
- \protectdef@boldmath
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \section{Compatability with the geometry package}
-%
-% The \classname{geometry} package of Hideo Umeki provides a way to
-% specify the metrics of the media and page layout.
-% We want to ensure that \revtex\ does not foreclose on the use of
-% this or any other such package, nor to interfere with
-% explicit assignments of such metric parameters within the
-% document preamble.
-%
-% The \LaTeX\ parameters (resp. \TeX\ primitives) set by \classname{geometry} are:
-% \cmd\paperwidth, \cmd\paperheight,
-% \cmd\textwidth, \cmd\textheight,
-% \cmd\topmargin, \cmd\headheight, \cmd\headsep,
-% \cmd\footskip, \cmd\skip\cmd\footins,
-% \cmd\marginparwidth, \cmd\marginparsep,
-% \cmd\oddsidemargin, \cmd\evensidemargin,
-% \cmd\columnsep,
-% \cmd\hoffset, \cmd\voffset, \cmd\mag,
-% \cmd\if@twocolumn, \cmd\if@twoside, \cmd\if@mparswitch, \cmd\if@reversemargin,
-%
-% \revtex's assignments can be overridden by
-% any package or other statement in the document preamble,
-% so it should be compatible.
-%
-%FIXME: one parameter is rendered semantically void (by \file{ltxgrid.dtx}):
-% \cmd\if@twocolumn.
-%
-% \section{Options}\label{sec:options}%
-%
-% \subsection{Define Booleans Used in Options}%
-% The following Booleans are used within the document class to
-% allow the document or the substyle to make selections
-% of formatting.
-% An explicit document class option overrides an assignment made by a substyle.
-%
-% \subsection{Declare Options}%
-%
-% \subsubsection{Checkin: for Editorial Use}%
-% A document class option declaring that the document is being processed by the
-% editorial staff.
-%
-% This option should:
-% \begin{itemize}
-% \item
-% put date in footer along with folio
-% \item
-% Have the effect of selecting the \classoption{preprint} class option.
-% \item
-% Have the effect of selecting the \classoption{showpacs} class option.
-% \item
-% specify that when a float is placed h or H, it will be allowed to break over pages.
-% (Note: be sure that if the enclosed \env{tabular} has an optional argument, you change it to [v], or remove it entirely.)
-% \end{itemize}
-% \changes{4.0c}{1999/11/13}{New option ``checkin''}
-% \begin{macrocode}
-\DeclareOption{checkin}{%
- \@booleantrue\dateinRH@sw
- \@booleantrue\preprintsty@sw
- \def\@pointsize{12}%
- \@booleantrue\showPACS@sw
- \@booleantrue\showKEYS@sw
- \def\fp@proc@h{\allow@breaking@tables}%
- \def\fp@proc@H{\allow@breaking@tables}%
-}%
-\@booleanfalse\dateinRH@sw
-\def\checkindate{\dateinRH@sw{{\tiny(\today)}}{}}%
-\def\allow@breaking@tables{%
- \def\array@default{v}% tabular can break over pages
- \@booleanfalse\floats@sw % table can break over pages
-}%
-% \end{macrocode}
-%
-% \subsubsection{Preprint Style}%
-%
-% \begin{macro}{\preprintsty@sw}
-% The boolean \cmd\preprintsty@sw\ signifies that
-% the document is to be formatted in preprint style.
-% \changes{4.0a}{1998/01/31}{Rearrange the ordering so numerical ones come first. AO: David, what does this mean?}
-% \changes{4.0a}{1998/06/10}{comma not space between email and homepage}
-% \changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
-% \changes{4.1b}{2008/06/01}{Add option reprint, opposite of preprint, and preferred alternative to twocolumn}
-% \begin{macrocode}
-\DeclareOption{preprint}{%
- \@booleantrue\preprintsty@sw
- \ExecuteOptions{12pt}%
-}%
-\DeclareOption{reprint}{%
-\@booleanfalse\preprintsty@sw
-\@booleantrue\twocolumn@sw
- \ExecuteOptions{10pt}%
-}%
-\DeclareOption{manuscript}{%
- \class@warn{Document class option manuscript is obsolete; use preprint instead}%
- \ExecuteOptions{preprint}%
-}%
-\@booleanfalse\preprintsty@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\showPACS@sw}
-% \begin{macro}{\showKEYS@sw}
-% If \cmd\showPACS@sw\ is true, print the PACS information in the title block,
-% otherwise not.
-% Similarly for \cmd\showKEYS@sw\ and the keywords.
-% \subsubsection{Showing PACS and keywords}%
-% \changes{4.0b}{1999/06/20}{New option}
-% \changes{4.0e}{2000/09/20}{New option showkeys}
-% \begin{macrocode}
-\DeclareOption{showpacs}{%
- \@booleantrue\showPACS@sw
-}%
-\DeclareOption{noshowpacs}{%
- \@booleanfalse\showPACS@sw
-}%
-\DeclareOption{showkeys}{%
- \@booleantrue\showKEYS@sw
-}%
-\DeclareOption{noshowkeys}{%
- \@booleanfalse\showKEYS@sw
-}%
-\@booleanfalse\showPACS@sw
-\@booleanfalse\showKEYS@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Balance the last page when in two-column page grid}%
-%
-% \begin{macro}{\balancelastpage@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% If we are in a two-column page grid, we may wish to balance the columns
-% of the last page. This will be done automatically if the
-% \classoption{twocolumn} document class option is chosen.
-% This action will be turned off by the \classoption{nobalancelastpage}.
-% A complementary class option, \classoption{balancelastpage} is also provided.
-% \begin{macrocode}
-\DeclareOption{balancelastpage}{%
- \@booleantrue\balancelastpage@sw
-}%
-\DeclareOption{nobalancelastpage}{%
- \@booleanfalse\balancelastpage@sw
-}%
-\@booleantrue\balancelastpage@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Showing preprint numbers}%
-%
-% \begin{macro}{\preprint@sw}
-% \changes{4.0d}{2000/04/10}{New option}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% \changes{4.1n}{2009/11/06}{(AO, 565) restore 4.0 behavior: default value of \cs{preprint@sw} follows \cs{preprintsty@sw}}
-% The boolean \cmd\preprint@sw\ signifies that
-% the preprints (cf. \cmd\preprint) are to be formatted (usually on the title page).
-% The option \classoption{preprintnumbers} declares to do so,
-% \classoption{nopreprintnumbers} declares not to;
-% the default is to follow \cmd\preprintsty@sw.
-% \begin{macrocode}
-\DeclareOption{nopreprintnumbers}{\@booleanfalse\preprint@sw}%
-\DeclareOption{preprintnumbers}{\@booleantrue\preprint@sw}%
-\appdef\setup@hook{%
- \@ifxundefined\preprint@sw{\let\preprint@sw\preprintsty@sw}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Hypertext Option}%
-%
-% \changes{4.0a}{1998/01/31}{protect against hyperref revtex kludges which are not needed now}
-% \changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
-% \changes{4.0rc4}{2001/07/23}{hyperref is no longer loaded via class option: use a usepackage statement instead}
-% \begin{macrocode}
-\DeclareOption{hyperref}{%
-% \end{macrocode}
-% The following code had been commented out, it is now truly a comment:
-% \begin{verbatim}
-%\AtEndOfClass{%
-% \begingroup
-% \edef\@tempa{%
-% \let
-% \noexpand\@clsextension
-% \noexpand\@empty
-% \noexpand\RequirePackage{hyperref}%
-% \def\noexpand
-% \@clsextension{\@clsextension}%
-% }%
-% \expandafter
-% \endgroup
-% \@tempa
-%}%
-% \def\@pointsize{10}%
-% \end{verbatim}
-%
-% If you have a hyper-foo enabled browser you may prefer this format
-% which does not print the URL for the home page, but just makes the
-% name a link, but by default print it so it works on paper.
-% \changes{4.0a}{1998/01/31}{print homepage}
-%
-% \begin{macrocode}
- \class@warn{Class option "hyperref" is no longer supported.^^JEmploy \string\usepackage{hyperref} instead}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{Type Size}%
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% Use \cmd\@pointsize|=10| rather than \cmd\@ptsize|=0| to allow easy extensions
-% to 9pt or whatever.
-% Note: the three alternatives are mutually exclusive.
-%
-% At this point, the parameter \cmd\@pointsize\ is set to \cmd\undefined:
-% a society \emph{must} give it a definition.
-% \begin{macrocode}
-\DeclareOption{10pt}{\def\@pointsize{10}}%
-\DeclareOption{11pt}{\def\@pointsize{11}}%
-\DeclareOption{12pt}{\def\@pointsize{12}}%
-\let\@pointsize\@undefined
-% \end{macrocode}
-%
-% \subsubsection{Media Size}%
-%
-% \begin{macro}{\paperheight}
-% \begin{macro}{\paperwidth}
-% \changes{4.0b}{1999/06/20}{Restore all media size class option of \protect\file{classes.dtx}}
-% \begin{macrocode}
-\DeclareOption{a4paper}{%
- \setlength\paperheight {297mm}%
- \setlength\paperwidth {210mm}%
-}%
-\DeclareOption{a5paper}{%
- \setlength\paperheight {210mm}%
- \setlength\paperwidth {148mm}%
-}%
-\DeclareOption{b5paper}{%
- \setlength\paperheight {250mm}%
- \setlength\paperwidth {176mm}%
-}%
-\DeclareOption{letterpaper}{%
- \setlength\paperheight {11in}%
- \setlength\paperwidth {8.5in}%
-}%
-\DeclareOption{legalpaper}{%
- \setlength\paperheight {14in}%
- \setlength\paperwidth {8.5in}%
-}%
-\DeclareOption{executivepaper}{%
- \setlength\paperheight {10.5in}%
- \setlength\paperwidth {7.25in}%
-}%
-\DeclareOption{landscape}{%
- \setlength\@tempdima {\paperheight}%
- \setlength\paperheight {\paperwidth}%
- \setlength\paperwidth {\@tempdima}%
-}%
-% \end{macrocode}
-%
-% \changes{4.1a}{2008/01/18}{(AO, 478) \cs{ds@letterpaper}, so that ``letterpaper really is the default''}%
-% Effectively select \classoption{letterpaper}.
-% \begin{macrocode}
-\ds@letterpaper
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Bibnotes}%
-%
-% \begin{macro}{\frontmatter@footnote@produce}
-% Frontmatter footnotes result from frontmatter commands like
-% \cmd\email, \cmd\homepage, \cmd\altaffiliation, and \cmd\thanks.
-% The default for \cmd\frontmatter@footnote@produce\ is
-% \cmd\frontmatter@footnote@produce@footnote, which formats the frontmatter footnotes
-% at the foot of the title page. The \classoption{bibnotes} class option
-% defers them to the bibliography.
-% \changes{4.1b}{2008/06/01}{(AO) Implement bibnotes through \cs{frontmatter@footnote@produce} instead of \cs{bibnotes@sw}}%
-% \begin{macrocode}
-\DeclareOption{bibnotes}{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote}%
-\DeclareOption{nobibnotes}{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote}%
-\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
-\appdef\class@enddocumenthook{\auto@bib}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Footinbib}%
-%
-% \begin{macro}{\footinbib@sw}
-% The boolean \cmd\footinbib@sw\ signifies that
-% text footnotes are to be set in the bibliography, as endnotes.
-%
-% The document may set the value one way or the other via
-% the following two class options.
-% \begin{macrocode}
-\DeclareOption{footinbib}{\@booleantrue\footinbib@sw}
-\DeclareOption{nofootinbib}{\@booleanfalse\footinbib@sw}
-% \end{macrocode}
-% The default value is \cmd\false@sw, and the society or journal
-% may override the default.
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% \begin{macrocode}
-\@booleanfalse\footinbib@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{altaffilletter}%
-%
-% \begin{macro}{\altaffilletter@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% Determine the procedure \cmd\thefootnote\ used in frontmatter:
-% the footnote symbol used in titlepage footnotes.
-% \begin{macrocode}
-\DeclareOption{altaffilletter}{\@booleantrue\altaffilletter@sw}%
-\DeclareOption{altaffilsymbol}{\@booleanfalse\altaffilletter@sw}%
-\@booleanfalse\altaffilletter@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{superbib}%
-%
-% \begin{macro}{\place@bibnumber}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The procedure \cmd\place@bibnumber\ produces the number
-% at the head of the \cmd\bibitem, in the bibliography.
-% By default, it has the \cmd\bibnumfmt\ meaning assigned by the \classname{natbib} package.
-% It may be overridden by society, journal, or by the document options.
-%
-% \begin{macrocode}
-\DeclareOption{superbib}{%
- \let\place@bibnumber\place@bibnumber@sup
-}%
-\def\place@bibnumber{\NATx@bibnumfmt}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\place@bibnumber@sup}
-% \begin{macro}{\place@bibnumber@inl}
-% For producing the \cmd\bibitem\ device,
-% we define two procedures to select from.
-%
-% Note that we could have used \classname{natbib}'s \cmd\ifNAT@super\
-% switch, but it does not allow for altering the meaning of \cmd\bibnumfmt.
-% \begin{macrocode}
-\def\place@bibnumber@sup#1{\textsuperscript{#1}}%
-\def\place@bibnumber@inl#1{[#1]}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{citeautoscript}%
-% \begin{macro}{\citeautoscript@sw}
-% This class option allows you to automatically accomodate a change from non-superscripted, numbered references
-% to superscripted, bunmbered references.
-%
-% Note: you should always mark up your document with the assumption that references are \emph{not} going to be superscripted.
-% Otherwise this option has no hope of working properly.
-%
-% \begin{macrocode}
-\DeclareOption{citeautoscript}{\@booleantrue\citeautoscript@sw}%
-\@booleanfalse\citeautoscript@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Variants on the Bibliography Style}%
-% \changes{4.1b}{2008/07/01}{(AO) provide option longbibliography}
-%
-% \revtex\ anticipates that a society or journal will provide two related Bib\TeX bibliography style variants,
-% designating one as the default.
-% A pair of document class options \classoption{longbibliography} and \classoption{nolongbibliography}
-% allows the user to explicitly select between them.
-% \begin{macro}{\longbibliography@sw}
-%
-%\changes{4.2a}{2017/11/21}{(MD) Make long bibliography style the default now.}
-% \revtex's default for \cmd\longbibliography@sw\ is \cmd\true@sw.
-%
-% \begin{macrocode}
-\DeclareOption{longbibliography}{\@booleantrue\longbibliography@sw}%
-\DeclareOption{nolongbibliography}{\@booleanfalse\longbibliography@sw}%
-\@booleantrue\longbibliography@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\eprint@enable@sw}
-% \changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
-%
-% The document class options \classoption{eprint} and \classoption{noeprint}
-% give the user the ability to turn off production of the \texttt{eprint} field in the bibliography.
-% \begin{macrocode}
-\DeclareOption{eprint}{\@booleantrue\eprint@enable@sw}%
-\DeclareOption{noeprint}{\@booleanfalse\eprint@enable@sw}%
-\@booleantrue\eprint@enable@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Simplex/Duplex Pages}%
-%
-% \begin{macro}{\twoside@sw}
-% \changes{4.1b}{2008/07/01}{(AO) coordinate \cs{if@twoside} with \cs{twoside@sw}}
-% The flag \cmd\twoside@sw\ signifies that the document is to be
-% formatted for duplex printing.
-% After the preamble is processed, we align the value
-% of the kernel \cmd\newif\ switch \cmd\if@twoside\
-% to that of \cmd\twoside@sw.
-% \cmd\if@twoside\ itself is used in the kernel's
-% \cmd\cleardoublepage\ and \cmd\@outputpage\ procedures.
-% \begin{macrocode}
-\@booleanfalse\twoside@sw
-\appdef\document@inithook{%
- \twoside@sw{\@twosidetrue}{\@twosidefalse}%
-}%
-% \end{macrocode}
-% \changes{4.0a}{1998/01/31}{4.d had twoside option setting twoside switch to false}
-% The complementary options \classoption{twoside} and \classoption{oneside}
-% assert formatting for duplex or simplex printing, respectively.
-% At the same time, we arrange for the selection of the page grid
-% with respect to the marginal column:
-% Because \cmd\if@reversemargin\ remains default (false),
-% if duplex printing, this column will always be on the (right),
-% if simplex printing, it will always be on the (outside).
-% QUERY: correct choice?
-%FIXME: assign \cmd\if@mparswitch\ later (and protect the assignment, too).
-% \begin{macrocode}
-\DeclareOption{twoside}{\@booleantrue \twoside@sw\@mparswitchfalse}%
-\DeclareOption{oneside}{\@booleanfalse\twoside@sw\@mparswitchtrue}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Two-Column Page Grid}%
-%
-% \begin{macro}{\twocolumn@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% \changes{4.1p}{2010/02/24}{(AO, 583) Provide interface to \classname{ltxgrid} \cs{onecolumn@grid@setup} and \cs{twocolumn@grid@setup}}
-% The flag \cmd\twocolumn@sw\ signifies that the document is to be
-% formatted in the two-column page grid.
-%
-% If no options relating to page grid are invoked by
-% \cmd\AtBeginDcoument\ time, we set default values.
-% Up to that point, the class can check if \cmd\twocolumn@sw\
-% is \cmd\undefined\ to see if any related options have been invoked.
-%
-% \classoption{onecolumn} specifies one-column page grid.
-% The \classoption{twocolumn} class option employs the standard mechanism for
-% changing the column grid: the \classname{ltxgrid} package.
-% \begin{macrocode}
-\DeclareOption{onecolumn}{\@booleanfalse\twocolumn@sw}%
-\DeclareOption{twocolumn}{\@booleantrue\twocolumn@sw}%
-\@booleanfalse\twocolumn@sw
-% \end{macrocode}
-% The column grid is determined by the state of the switch \cmd\twocolumn@sw
-% and is effected at \cmd\class@documenthook\ time.
-% The society or journal file may re-define \cmd\select@column@grid\
-% to accomodate, e.g., more than two choices for the page grid.
-%
-% Note that \cmd\open@column@two\ adds items to the Main Vertical List,
-% so constitutes the true beginning of the document.
-%
-% Note also that if the selected column grid is a one-column grid,
-% there is nothing to do, because \classname{ltxgrid} has already
-% set that up via \cmd\@begindocumenthook.
-% \begin{macrocode}
-\def\select@column@grid{%
- \twocolumn@sw{%
- \twocolumn@grid@setup
- \open@twocolumn
- }{%
- \onecolumn@grid@setup
-% \end{macrocode}
-% \begin{verbatim}
-% \open@onecolumn
-% \end{verbatim}
-% \begin{macrocode}
- }%
-}%
-\appdef\class@documenthook{%
- \select@column@grid
-}%
-% \end{macrocode}
-%
-% \end{macro}
-%
-% \begin{macro}{\clear@document}
-% \changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
-%
-% We install into \cmd\class@enddocumenthook\
-% a trap for the procedure \cmd\clearpage\ that attempts to end the current page.
-% This procedure needs to be headpatched with \cmd\close@column\ to end the current page grid.
-%
-% This procedure is executed after all typesetting is complete
-% i.e., after items like \cmd\printtables, as well as all commands queued up by \cmd\AtEndDocument.
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \let\clearpage@ltx\clearpage
- \prepdef\clear@document{\let\clearpage\clearpage@ltx\let\clear@document\@empty\close@column}%
- \appdef\class@documenthook{%
- \appdef\class@enddocumenthook{%
- \let\clearpage\clear@document
- }%
- }%
-}%
-% \end{macrocode}
-%
-% \end{macro}
-%
-% \begin{macro}{\authoryear@sw}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% The boolean \cmd\authoryear@sw\ signifies that we are to use author-year citations rather than numerical citations.
-%
-% The \classoption{author-year} class option selects ``'author-year'' citations;
-% \classoption{numerical} selectes ``numerical'' citations.
-% The former is the default.
-% \begin{macrocode}
-\DeclareOption{author-year}{\@booleantrue\authoryear@sw}%
-\DeclareOption{numerical}{\@booleanfalse\authoryear@sw}%
-\@booleanfalse\authoryear@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\galley@sw}
-% The boolean \cmd\galley@sw\ signifies that
-% the document is to be formatted in galley style.
-%
-% Asserting both \cmd\galley@sw\ and \cmd\preprintsty@sw\
-% may produce strange formatting results, but it is not illegal.
-% However, it \emph{is} illegal to assert galley and any
-% twocolumn option.
-% \begin{macrocode}
-% \end{macrocode}
-% \classoption{galley} emulates setting the galleys of
-% a two-column journal.
-% CHANGED: this option should effectively set \cmd\preprintsty@sw\ false.
-% NOTE: it makes no sense to assert both galley and twocolumn.
-% \changes{4.1b}{2008/07/01}{Class option galley sets \cs{preprintsty@sw} to false}
-%
-% \begin{macrocode}
-\DeclareOption{galley}{%
- \ExecuteOptions{onecolumn}%
- \@booleantrue\galley@sw
- \@booleanfalse\preprintsty@sw
- \appdef\setup@hook{%
- \advance\textwidth-\columnsep
- \textwidth.5\textwidth
- }%
-}%
-\@booleanfalse\galley@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{raggedbottom or flushbottom}%
-% \begin{macro}{\raggedcolumn@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The class options \classoption{raggedbottom} and \classoption{flushbottom} determine whether the columns (page)
-% are ragged bottom or flush bottom.
-% Note that we do not select a default here; that is done by the journal substyle.
-% \begin{macrocode}
-\DeclareOption{raggedbottom}{\@booleantrue\raggedcolumn@sw}
-\DeclareOption{flushbottom}{\@booleanfalse\raggedcolumn@sw}
-\@booleanfalse\raggedcolumn@sw
-\appdef\setup@hook{%
- \raggedcolumn@sw{\raggedbottom}{\flushbottom}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{tightenlines}%
-%
-% This class option specifies that standard leading
-% is to be used to set the type.
-% If lacking, the leading will be loose.
-%
-% \begin{macro}{\tightenlines@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The boolean \cmd\tightenlines@sw\ signifies that
-% the leading is to be made standard amount.
-% If false, it means that the leading is to be set extra open.
-% Has no effect on 10pt size option.
-%
-% \begin{macrocode}
-\DeclareOption{tightenlines}{\@booleantrue\tightenlines@sw}
-\@booleanfalse\tightenlines@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{lengthcheck}%
-%
-% \begin{macro}{\lengthcheck@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The flag \cmd\lengthcheck@sw\ signifies that
-% the length checking is in effect.
-% It is up to the individual journal substyle
-% to alter its formatting accordingly.
-% \begin{macrocode}
-\@booleanfalse\lengthcheck@sw
-% \end{macrocode}
-% This class option specifies that the formatted document
-% should approach as closely as possible the
-% formatting of an actual journal article
-% to facilitate the author's performance of a length check.
-%
-%FIXME: society or journal may have its own definition of this option.
-% \begin{macrocode}
-\DeclareOption{lengthcheck}{%
- \@booleantrue\lengthcheck@sw
- \ExecuteOptions{reprint}%
-}%
-% \end{macrocode}
-% In addition, if length checking is in effect, we will enable
-% the tally of text length.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \lengthcheck@sw{\@booleantrue\tally@box@size@sw}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Draft and Final}%
-%
-% \begin{macro}{\draft@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The flag \cmd\draft@sw\ signifies that the document is to be
-% formatted in draft mode.
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \draft@sw{\overfullrule 5\p@}{\overfullrule\z@}%
-}%
-% \end{macrocode}
-%
-% Certain packages may pay attention to the
-% class option \classoption{draft} that sets this Boolean.
-% \begin{macrocode}
-\DeclareOption{draft}{\@booleantrue\draft@sw}%
-\DeclareOption{final}{\@booleanfalse\draft@sw}%
-\@booleanfalse\draft@sw
-% \end{macrocode}
-%
-% \end{macro}
-%
-% \subsubsection{eqsecnum}%
-%
-% \begin{macro}{\eqsecnum@sw}
-% The flag \cmd\eqsecnum@sw\ signifies that equations are to be
-% numbered with the section, e.g., ``Eq. (2.13)''.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \eqsecnum@sw{%
- \@addtoreset{equation}{section}%
- \def\theequation@prefix{\arabic{section}.}%
- }{}%
-}%
-% \end{macrocode}
-%
-% The \classoption{eqsecnum} class option signifies that equations are
-% to be numbered within sections.
-% \begin{macrocode}
-\DeclareOption{eqsecnum}{\@booleantrue\eqsecnum@sw}%
-\@booleanfalse\eqsecnum@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{secnumarabic}%
-% \changes{4.1b}{2008/07/01}{(AO) No longer use \cs{secnumarabic@sw}, instead use \cs{setup@secnums}}
-% The \classoption{secnumarabic} class option signifies that sectioning commands are
-% to be numbered arabic:
-% the procedure \cmd\secnums@arabic\ is executed as the default.
-% Otherwise, the procedure \cmd\secnums@rtx\ determines things.
-% The society or journal may redefine either procedure,
-% and may change the definition of \cmd\setup@secnums\ itself,
-% thereby establishing a different default.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \setup@secnums
-}%
-\DeclareOption{secnumarabic}{%
- \def\setup@secnums{\secnums@arabic}%
-}%
-\def\setup@secnums{\secnums@rtx}%
-% \end{macrocode}
-% The code that defines \cmd\secnums@rtx\ and \cmd\secnums@arabic\ appears
-% in Section~\ref{sec:secnumarabic}.
-%
-% \begin{macro}{fleqn}
-% FIXME: model fleqn after amsfonts. I no longer understand why I said this.
-% \file{fleqn.clo} is not a package, so it can simply be \cmd\input.
-% \begin{macrocode}
-\DeclareOption{fleqn}{%
- \input{fleqn.clo}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{floats/endfloats}%
-%
-% \begin{macro}{\floats@sw}
-% \begin{macro}{\floatp@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The Boolean \cmd\floats@sw\ signifies that floats are to be floated;
-% if false, that floats are to be deferred to the end of the document.
-% By default, the former.
-% Note that the state of this Boolean is to be changed by
-% the document class in response to user-selected options.
-%
-% This boolean and the assignment of its default value is done by
-% the \classname{ltxutil} package.
-%
-% The Boolean \cmd\floatp@sw\ signifies that endfloats are to be set one per page;
-% if false, that endfloats are to be set with multiple floats per page permitted.
-% By default, the latter.
-% Note that the state of this Boolean is to be changed by
-% the document class in response to user-selected options.
-% The default is established here.
-%
-% These options control, via the Boolean \cmd\floats@sw,
-% whether floats are to be migrated to the end of the document.
-% \begin{macrocode}
-\DeclareOption{floats}{\@booleantrue\floats@sw\@booleanfalse\floatp@sw}
-\DeclareOption{endfloats}{\@booleanfalse\floats@sw\@booleanfalse\floatp@sw}
-\DeclareOption{endfloats*}{\@booleanfalse\floats@sw\@booleantrue\floatp@sw}
-\@booleantrue\floats@sw
-\@booleantrue\floatp@sw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{titlepage/notitlepage}%
-% These options control, via \cmd\titlepage@sw,
-% whether the title block is to be set on a separate page.
-%
-% \begin{macro}{\titlepage@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The flag \cmd\titlepage@sw\ signifies that a forced
-% page break is to follow the title page: the article
-% title appears on a page by itself.
-%
-% \begin{macrocode}
-\DeclareOption{titlepage}{\@booleantrue\titlepage@sw}
-\DeclareOption{notitlepage}{\@booleanfalse\titlepage@sw}
-\@booleanfalse\titlepage@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Substyle and Sub-substyle}%
-%
-% \begin{macro}{\change@society}
-% \begin{macro}{\change@journal}
-% \changes{4.1b}{2008/07/01}{(AO) Provide more diagnostics when \cs{@society} is assigned.}
-% If the society or, resp., journal has already been assigned,
-% notify user whether it is being overridden.
-%
-% \begin{macrocode}
-\def\change@society#1{%
- \def\@tempa{#1}%
- \@ifxundefined\@society{%
- \class@info{Selecting society \@tempa}%
- \let\@society\@tempa
- }{%
- \@ifx{\@tempa\@society}{}{%
- \class@warn{Conflicting society \@tempa<>\@society; not selected}%
- }%
- }%
-}%
-\def\change@journal#1{%
- \def\@tempa{#1}%
- \@ifxundefined\@journal{%
- \class@info{Selecting journal \@tempa}%
- \let\@journal\@tempa
- }{%
- \@ifx{\@tempa\@journal}{}{%
- \class@warn{Conflicting journal \@tempa<>\@journal; not selected}%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% Here had been the class options relating to the APS.
-% Now that all societies are on an equal footing, this code is in the
-% respective \file{.rtx} file.
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \subsubsection{Optical Society of America}%
-% Here are the class options relating to the Optical Society of America.
-%
-% Note: as of 2008, the only OSA module being distributed by ctan is \file{osajnl.rtx}.
-% The class options declared here are, I think, unused.
-% \begin{macrocode}
-\DeclareOption{osa}{\change@society{osa}\let\@journal\@undefined}%
-\DeclareOption{osameet}{\change@society{osa}\def\@journal{osameet}}%
-\DeclareOption{opex}{\change@society{osa}\def\@journal{opex}}%
-\DeclareOption{tops}{\change@society{osa}\def\@journal{tops}}%
-\DeclareOption{josa}{\change@society{osa}\def\@journal{josa}}%
-% \end{macrocode}
-%
-% \begin{macro}{\rtx@require@packages}
-% \changes{4.1b}{2008/07/01}{Read in all required packages together}
-% The procedure \cmd\rtx@require@packages\ accumulates all \cmd\RequirePackage\ statements
-% in the course of loading the document class.
-% Carrying out these operations at that time is needed:
-% \cmd\ProcessOptions\ must be executed first.
-% \begin{macrocode}
-\let\rtx@require@packages\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\MakeUppercase}
-% \begin{macro}{\MakeLowercase}
-% \changes{4.1b}{2008/07/01}{Package textcase is now simply a required package}
-% \changes{4.1b}{2008/07/01}{Read in all required packages together}
-% \changes{4.1g}{2009/10/07}{(AO, 538) \cs{MakeTextUppercase} inappropriately expands the double backslash}
-% We load the \classname{textcase} package of David Carlisle.
-% Now that its bug of long standing has been repaired, we no longer need to doctor it up.
-% And, because its loading has been deferred until \cmd\rtx@require@packages\ time,
-% we no longer override \LaTeX\ here. Instead, the \classname{textcase} package
-% will be asked to do that.
-% \begin{macrocode}
-\appdef\rtx@require@packages{%
- \RequirePackage[overload]{textcase}%
-}%
-% \end{macrocode}
-% The following code used to
-% let the \classname{textcase} commands override those of \LaTeX:
-% \begin{verbatim}
-%\appdef\setup@hook{%
-% \expandafter
-% \let\csname MakeUppercase \expandafter\endcsname
-% \csname MakeTextUppercase \endcsname
-% \expandafter
-% \let\csname MakeLowercase \expandafter\endcsname
-% \csname MakeTextLowercase \endcsname
-% }%
-% \end{verbatim}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{amsfonts}
-% \changes{4.1b}{2008/07/01}{Read in all required packages together}
-% The class option \classoption{amsfonts} has the
-% same effect as if the document preamble contained
-% a \cmd\usepackage\verb${amsfonts}$ statement.
-% \begin{macrocode}
-\DeclareOption{amsfonts}{%
- \def\class@amsfonts{\RequirePackage{amsfonts}}%
-}%
-\DeclareOption{noamsfonts}{%
- \let\class@amsfonts\@empty
-}%
-\appdef\rtx@require@packages{%
- \@ifxundefined\class@amsfonts{}{\class@amsfonts}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{amssymb}
-% \changes{4.1b}{2008/07/01}{Read in all required packages together}
-% The class option \classoption{amssymb} has the
-% same effect as if the document preamble contained
-% a \cmd\usepackage\verb${amssymb}$ statement.
-% \begin{macrocode}
-\DeclareOption{amssymb}{%
- \def\class@amssymb{\RequirePackage{amssymb}}%
-}%
-\DeclareOption{noamssymb}{%
- \let\class@amssymb\@empty
-}%
-\appdef\rtx@require@packages{%
- \@ifxundefined\class@amssymb{}{\class@amssymb}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{amsmath}
-% \changes{4.1b}{2008/07/01}{Read in all required packages together}
-% The class option \classoption{amsmath} has the
-% same effect as if the document preamble contained
-% a \cmd\usepackage\verb${amsmath}$ statement.
-%
-% We require version 1.2 (datestamped 1997/03/20) or later.
-% The \expandafter\cmd\csname ver@amsmath.sty\endcsname, will
-%
-% \LaTeX\ note:
-% Certain \LaTeX\ procedures have an arbitrary and pointless restriction that they may be used only within the preamble.
-% We get around this by preserving the procedures in private \cmd\csname s.
-%
-% FIXME note: it is difficult to ensure that an error summary will be printed on the console at the very end,
-% but \classname{ltxgrid} allows accomplishing this via an interrupt, put down at \cmd\AtEndDocument\ time.
-%
-% \begin{macrocode}
-\DeclareOption{amsmath}{%
- \def\class@amsmath{\RequirePackage{amsmath}[\ver@amsmath@prefer]}%
-}%
-\DeclareOption{noamsmath}{%
- \let\class@amsmath\@empty
-}%
-\appdef\rtx@require@packages{%
- \preserve@LaTeX
- \@ifxundefined\class@amsmath{}{\class@amsmath}%
- \appdef\class@enddocumenthook{\test@amsmath@ver}%
-}%
-\appdef\preserve@LaTeX{%
- \let\@ifl@aded@LaTeX\@ifl@aded
- \let\@ifpackageloaded@LaTeX\@ifpackageloaded
- \let\@pkgextension@LaTeX\@pkgextension
- \let\@ifpackagelater@LaTeX\@ifpackagelater
- \let\@ifl@ter@LaTeX\@ifl@ter
- \let\@ifl@t@r@LaTeX\@ifl@t@r
- \let\@parse@version@LaTeX\@parse@version
-}%
-\appdef\restore@LaTeX{%
- \let\@ifl@aded\@ifl@aded@LaTeX
- \let\@ifpackageloaded\@ifpackageloaded@LaTeX
- \let\@pkgextension\@pkgextension@LaTeX
- \let\@ifpackagelater\@ifpackagelater@LaTeX
- \let\@ifl@ter\@ifl@ter@LaTeX
- \let\@ifl@t@r\@ifl@t@r@LaTeX
- \let\@parse@version\@parse@version@LaTeX
-}%
-\def\test@amsmath@ver{%
- \begingroup
- \restore@LaTeX
- \@ifpackageloaded{amsmath}{%
- \@ifpackagelater{amsmath}{\ver@amsmath@prefer}{}{%
- \class@warn{%
- You have loaded amsmath, version "\csname ver@amsmath.sty\endcsname",\MessageBreak
- but this class requires version "\ver@amsmath@prefer", or later.\MessageBreak
- Please update your LaTeX installation.
- }%
- }%
- }{%
- }%
- \endgroup
-}%
-\def\ver@amsmath@prefer{2000/01/15 v2.05 AMS math features}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Presenting Authors and Their Affiliations}%
-% \changes{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
-% Class options for presenting authors and their affiliations are now defined in
-% \file{ltxfront.dtx}.
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \subsubsection{Typeset by \revtex}%
-%
-% \begin{macro}{\byrevtex@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% The flag \cmd\byrevtex@sw\ signifies that the document should
-% bear an imprint to the effect that it was formatted by this document class.
-%
-% The class option \classoption{byrevtex} signifies that you want the
-% ``Typeset by \revtex'' byline to appear on your formatted output.
-% By default, no such byline appears.
-% \begin{macrocode}
-\DeclareOption{byrevtex}{\@booleantrue\byrevtex@sw}%
-\@booleanfalse\byrevtex@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Attempt to fix float placement failure}%
-%
-% \begin{macro}{\force@deferlist@sw}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% \revtex\ uses the \classname{ltxgrid} package, which provides the ability to attempt repairs when
-% \LaTeX's float placement mechanism is about to fail, but that facility is turned off by default.
-% Users should invoke the \classoption{floatfix} document class option to enable this \LaTeX\ extension.
-% If not, a helpful message is printed in the log, indicating how to work around the difficulty.
-% \begin{macrocode}
-\DeclareOption{floatfix}{\@booleantrue\force@deferlist@sw}%
-\DeclareOption{nofloatfix}{\@booleanfalse\force@deferlist@sw}%
-\@booleanfalse\force@deferlist@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@fltovf}
-% \begin{macro}{\@fltstk}
-% The \LaTeX\ kernel error message \cmd\@fltovf\ may now be a bit more helpful to the user;
-% likewise for the \cmd\@fltstk\ message of \classname{ltxgrid}.
-% \begin{macrocode}
-\gdef\@fltovf{%
- \@latex@error{%
- Too many unprocessed floats%
- \force@deferlist@sw{}{; try class option [floatfix]}%
- }\@ehb
-}%
-\def\@fltstk{%
- \@latex@warning{%
- A float is stuck (cannot be placed)%
- \force@deferlist@sw{}{; try class option [floatfix]}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ltxgrid@info@sw}
-% \begin{macro}{\outputdebug@sw}
-% The two options \classoption{ltxgridinfo} and \classoption{outputdebug} turn on informative diagnostics within the
-% package \classname{ltxgrid}. Only people who really want to see this output will select these class options.
-% Consult documentation for the \classname{ltxgrid} package to see what output the related switches enable.
-% \begin{macrocode}
-\DeclareOption{ltxgridinfo}{%
- \@booleantrue\ltxgrid@info@sw
-%\@booleantrue\ltxgrid@foot@info@sw
-}%
-\DeclareOption{outputdebug}{%
- \@booleantrue\outputdebug@sw
- \@booleantrue\ltxgrid@info@sw
- \@booleantrue\ltxgrid@foot@info@sw
- \traceoutput
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Option to relax page height}%
-%
-% \begin{macro}{\textheight@sw}
-% The \classname{ltxgrid} package can set text pages to their natural height or force them to the full
-% text height; the latter is the default.
-% If setting the pages with a variable length,
-% the running foot will move up or down with the natural length of the text column.
-% While I recommend against doing so, this option will turn that switch to the latter setting.
-% \begin{macrocode}
-\DeclareOption{raggedfooter}{\@booleanfalse\textheight@sw}%
-\DeclareOption{noraggedfooter}{\@booleantrue\textheight@sw}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Selecting procedure for processing abstract}%
-% \changes{4.1b}{2008/07/01}{Remove options newabstract and oldabstract}
-% Code defining options \classoption{newabstract} and \classoption{oldabstract} has been removed.
-%
-% \subsection{Option to turn on diagnostics in the frontmatter}%
-%
-% \begin{macro}{\frontmatterverbose@sw}
-% \changes{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
-% A diagnostic option, not for the average enduser, which reveals
-% the workings of the frontmatter.
-% This code interfaces to that of \file{ltxfront.dtx}.
-% \begin{macrocode}
-\DeclareOption{frontmatterverbose}{\@booleantrue\frontmatterverbose@sw}%
-\@booleanfalse\frontmatterverbose@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\linenumbers@sw}
-% \changes{4.1f}{2009/07/07}{(AO, 513) Add class option linenumbers: number the lines a la \classname{lineno}}
-% \changes{4.1n}{2009/12/13}{(AO, 573) arrange to load \classname{lineno} after any other packages.}%
-% An option to number the lines of type in the output in the manner of \classname{lineno}.
-%
-% At present, we use that very package to implement this functionality.
-% This means that users may modify the workings of that package per its documentation (which see).
-%
-% However, compatibility with \classname{amsmath} requires that \classname{lineno} be loaded afterwards.
-% Therefore, we defer loading of this package until after the preamble is completed.
-% \begin{macrocode}
-\DeclareOption{linenumbers}{%
- \appdef
- \class@documenthook{%
- \RequirePackage{lineno}[2005/11/02 v4.41]%
- \linenumbersep4pt\relax
- \linenumbers\relax
- }%
-}%
-% \end{macrocode}
-% By default, line numbering is off.
-% \end{macro}
-%
-% \begin{macro}{\NAT@merge}
-% \changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
-% Add class option nomerge, to turn off natbib 8.3 syntax for citation key.
-% The default value of REVTeX 4.1 for \cmd\NAT@merge is \cmd\thr@@, which turns on
-% the new syntax along with its semantics.
-% Legacy documents that would be incompatible with the new syntax can be successfully processed
-% with class option \classoption{nomerge}.
-% \begin{macrocode}
-\DeclareOption{nomerge}{%
- \appdef\setup@hook{%
- \@ifnum{\NAT@merge>\z@}{\let\NAT@merge\z@}{}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Default Option, Society, Journal, and pointsize}%
-%
-% \changes{4.1a}{2008/01/18}{(AO, 488) Change processing of options to allow an unused option to specify society and journal}%
-% This change will not break OSA documents because that society is still built in to revtex4.
-%
-% \begin{macro}{\@parse@class@options@society}
-% \begin{macro}{\@parse@class@options@}
-% \changes{4.1b}{2008/07/01}{Procedures \cs{@parse@class@options@society} and \cs{@parse@class@options@journal} and friends}
-% The procedure \cmd\@parse@class@options@society\ parses the options passed to this document class
-% for the \cmd\@society.
-% It is like \cmd\ProcessOptions*\ in that it accesses
-% \cmd\@ptionlist\{\cmd\@currname.\cmd\@currext\}.
-% Any undefined option is considered: if there is a corresponding \file{.rtx} file,
-% it will change the society accordingly
-% and define a placeholder class option for the society thus found
-% (thus preventing a spurious "option not found" message).
-%
-% The procedure \cmd\@parse@class@options@\ parses the document's options
-% for any that set the \cmd\csname\ provided.
-% \begin{macrocode}
-\def\@parse@class@options@society{%
- \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
- \expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
- \expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{}{%
- \IfFileExists{\CurrentOption\substyle@post.\substyle@ext}{%
- \expandafter\change@society\expandafter{\CurrentOption}%
- \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
- }{}%
- }%
- }%
-}%
-\def\@parse@class@options@#1{%
- \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
- \expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
- \expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
- \begingroup\csname ds@\CurrentOption\endcsname
- \@ifxundefined#1{%
- \endgroup
- }{%
- \expandafter\endgroup\expandafter\def\expandafter#1\expandafter{#1}%
- }%
- }{}%
- }%
-}%
-\def\@parse@class@options@journal{%
- \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
- \expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
- \expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
- \begingroup
- \csname ds@\CurrentOption\endcsname
- \@ifxundefined\@journal{%
- \endgroup
- }{%
- \expandafter\endgroup\expandafter\def\expandafter\@journal\expandafter{\@journal}%
- }%
- }{}%
- }%
-}%
-\def\@parse@class@options{%
- \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
- \expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
- \expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
- \begingroup
- \csname ds@\CurrentOption\endcsname
- \@ifxundefined\@pointsize{%
- \endgroup
- }{%
- \expandafter\endgroup\expandafter\def\expandafter\@pointsize\expandafter{\@pointsize}%
- }%
- }{%
- \IfFileExists{\CurrentOption\substyle@post.\substyle@ext}{%
- \expandafter\change@society\expandafter{\CurrentOption}%
- \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
- }{}%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \changes{4.1j}{2009/10/25}{(AO, 545) hypertext capabilities off by default; enable with \classoption{hypertext}}
-% The class option \classoption{hypertext} enables the built-in hypertext capabilities,
-% which coincide with those of \classname{custom-bib}-generated BIBTeX styles
-% using the guard code \texttt{hypertext}.
-%
-% Note that APS has these capabilities turned off by default;
-% Loading the hyperref package turns them on.
-% \begin{macrocode}
-\DeclareOption{hypertext}{\hypertext@enable@ltx}%
-\appdef\document@inithook{\@ifpackageloaded{hyperref}{\hypertext@enable@ltx}{}}%
-% \end{macrocode}
-%
-% The default handling for a document class option depends upon whether the \cmd\@society\ is
-% defined.
-%
-% If not, then hunt for a \file{.rtx} file with that name.
-% If it exists, then we will take this option as the name of the society,
-% otherwise, declare the option as not used.
-%
-% (This behavior is similar to the \LaTeX2.09 handling, where
-% one looked for a \file{.sty} file, except that
-% in this case, we must provide for journal substyles that may be
-% defined in the society file, or have their own journal substyle file.)
-%
-% At the point where the class file is finished loading,
-% we then read in the society file.
-% That file can define further class options, such as the journal substyle.
-%
-% For users, this will mean that they can specify the society and journal simply
-% by specifying first the former and then the latter among their document class options.
-% The society \emph{must} have a corresponding \file{.rtx}.
-%
-% \changes{4.1b}{2008/05/29}{The csname substyle@ext is now defined without a dot (.), to be compatible with \LaTeX usage (see @clsextension and @pkgextension).}
-%
-% \begin{macrocode}
-%</options>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macro}{\@process@society}
-% \begin{macro}{\@process@journal}
-% \begin{macro}{\@process@pointsize}
-% \begin{macrocode}
-\def\substyle@post{4-2}%
-\def\substyle@ext{rtx}%
-\DeclareOption*{\OptionNotUsed}%
-% \end{macrocode}
-% A society substyle may define its own options, via \cmd\DeclareOption.
-%
-% At the end of this document class, we process the society file,
-% using \file{aps.rtx} if none has been specified in the document.
-% \begin{macrocode}
-\def\@process@society#1{%
- \@ifxundefined\@society{%
- \class@warn{No Society specified, using default society #1}%
- \def\@society{#1}\let\@journal\@undefined
- }{}%
- \expandafter\input\expandafter{\@society\substyle@post.\substyle@ext}%
-}%
-% \end{macrocode}
-%
-% A society substyle can encompass any number of journal substyles;
-% we use the following procedure to invoke the proper one.
-% \begin{macrocode}
-\def\@process@journal#1{%
- \@ifxundefined\@journal{%
- \class@warn{No journal specified, using default #1}%
- \def\@journal{#1}%
- }{}%
- \expandafter\expandafter
- \expandafter\rtx@do@substyle
- \expandafter\expandafter
- \expandafter{\expandafter\@society\@journal}%
-}%
-\def\rtx@do@substyle#1{%
- \InputIfFileExists{#1\substyle@post.\substyle@ext}{}{\csname rtx@#1\endcsname}%
-}%
-% \end{macrocode}
-%
-% Document class options \classoption{10pt}, \classoption{11pt}, and \classoption{12pt}
-% are implemented by \revtex\ itself and determine \cmd\@pointsize.
-% These provide formatting settings appropriate to the society's journals.
-%
-% If not specified by the document, a value \cmd\@pointsize@default\ is used.
-% This default can be set by the journal. Here, the society sets its default.
-% \begin{macrocode}
-\def\@process@pointsize#1{%
- \@ifxundefined\@pointsize{%
- \def\@pointsize{#1}%
- \class@warn{No type size specified, using default \@pointsize}%
- }{}%
- \expandafter\expandafter
- \expandafter\rtx@do@substyle
- \expandafter\expandafter
- \expandafter{\expandafter\@society\@pointsize pt}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Class-Asserted Options}%
-% \changes{4.0b}{1999/06/20}{Removed invocation of nonexistent class option \protect\classoption{groupauthors} and all other class options that should only be invoked by the document. (Otherwise precedence of class options does not work.)}
-% Here we establish the default document class options.
-% Those of the document itself will override these.
-%
-% \section{Procedures Dependent Upon Options}
-%
-% Here we introduce \classname{classes.dtx} definitions for
-% the page styles that people will expect to be able to use.
-% \begin{macro}{\ps@headings}
-% \begin{macro}{\ps@myheadings}
-% \begin{macrocode}
- \def\ps@headings{%
- \let\@oddfoot\@empty\let\@evenfoot\@empty
- \def\@evenhead{\thepage\hfil\slshape\leftmark}%
- \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
- \let\@mkboth\markboth
- \def\sectionmark##1{%
- \markboth {\MakeUppercase{%
- \ifnum \c@secnumdepth >\z@
- \thesection\quad
- \fi
- ##1}}{}}%
- \def\subsectionmark##1{%
- \markright {%
- \ifnum \c@secnumdepth >\@ne
- \thesubsection\quad
- \fi
- ##1}}}%
-\def\ps@myheadings{%
- \let\@oddfoot\@empty\let\@evenfoot\@empty
- \def\@evenhead{\thepage\hfil\slshape\leftmark}%
- \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
- }%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ps@article}
-% \begin{macro}{\ps@article@final}
-% \begin{macro}{\ps@preprint}
-% \changes{4.0a}{1998/01/31}{Move after process options, so the following test works}
-% \changes{4.0b}{1999/06/20}{Defer decision until \cs{AtBeginDocument} time}
-% \changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
-% \changes{4.0rc1}{2001/06/17}{Running headers always as if two-sided}
-% \begin{macrocode}
-\def\ps@article{%
- \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
- \def\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\markboth
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-\def\ps@article@final{%
- \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
- \def\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
- \def\@oddfoot{}%
- \def\@evenfoot{}%
- \let\@mkboth\markboth
- \def\sectionmark##1{%
- \markboth{%
- \MakeTextUppercase{%
- \@ifnum{\c@secnumdepth >\z@}{\thesection\hskip 1em\relax}{}%
- ##1%
- }%
- }{}%
- }%
- \def\subsectionmark##1{%
- \markright {%
- \@ifnum{\c@secnumdepth >\@ne}{\thesubsection\hskip 1em\relax}{}%
- ##1%
- }%
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\heading@cr{\unskip\space\ignorespaces}%
-% \end{macrocode}
-%
-% \changes{4.0c}{1999/11/13}{Do not put by REVTeX in every page foot}
-% \changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
-% \begin{macrocode}
-\def\ps@preprint{%
- \def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
- \def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
- \def\@oddhead{}%
- \def\@evenhead{}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\let\@oddhead\@empty
-\let\@evenhead\@empty
-\let\@oddfoot\@empty
-\let\@evenfoot\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\lastpage@putlabel}
-% Support the default meaning of \cmd\@endpage.
-% \changes{4.0a}{1998/01/31}{Move after process options, so \cs{clearpage} not in scope of twocolumn}
-% \changes{4.1k}{2009/11/06}{(AO, 554) give the \cs{newlabel} command syntax appropriate to the hyperref package}
-% Name of this macro (and the \cmd\label\ key) taken from
-% \url{CTAN:/macros/latex/contrib/other/lastpage}%
-% with code optimised slightly.
-% \begin{macrocode}
-\def\lastpage@putlabel{%
- \if@filesw
- \begingroup
- \advance\c@page\m@ne
- \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
- \endgroup
- \fi
-}%
-% \end{macrocode}
-% Install a procedure into document endgame processing that
-% labels the last page of the document.
-% This is done just before the \file{.aux} file
-% is closed, and does not require a \cmd\shipout, because it writes
-% directly to the \file{.aux} file.
-% Note that we assume no further \cmd\shipout s will be done past this point.
-% \changes{4.1n}{2009/12/09}{(AO, 569) execute the after-last-shipout procedures from within the safety of the output routine}%
-% \begin{macrocode}
-\appdef\clear@document{%
- \do@output@cclv{%
- \lastpage@putlabel
- \tally@box@size@sw{\total@text}{}%
- }%
-}%
-\providecommand\write@column@totals{}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Required Packages}
-% \url{CTAN:macros/latex/contrib/other/misc/url.sty}%
-% \begin{macrocode}
-\appdef\rtx@require@packages{%
- \RequirePackage{url}%
-}%
-% \end{macrocode}
-%
-% \section{Incompatible Packages}
-%
-% We wait until after the preamble is processed, then check for any packages
-% that might have been loaded which we know to be incompatible with \revtex.
-%
-% The \classname{multicol} package is incompatible with \classname{ltxgrid}, which replaces it.
-% The \classname{cite} package is incompatible with \classname{natbib}, which replaces its functionality.
-% The functionality of the \classname{mcite} package is provided by \classname{natbib}.
-% \begin{macrocode}
-\appdef\document@inithook{%
- \incompatible@package{cite}%
- \incompatible@package{mcite}%
- \incompatible@package{multicol}%
-}%
-% \end{macrocode}
-%
-% \section{Society- and Journal-Specific Code}
-%
-% \begin{macro}{\@journal}
-% Journal test helper, used as
-% \begin{verbatim}
-%\@ifx{\@journal\journal@pra}{%
-% <journal-specific setup>
-%\fi
-% \end{verbatim}
-% Journal code might like to further specify (if as yet undefined) or distinguish on
-% the following Booleans.
-%
-% Note: the journal substyle code should only alter the value of one of these Booleans if
-% the Boolean is \cmd\undefined. This convention is what makes the document's
-% options take precedence over the values set by the journal.
-%
-% FIXME: make this table an exhaustive listing of all the parameters set by
-% the class options.
-%
-% \begin{tabular}{ll}
-% \cmd\@pointsize &(10|11|12), depending on the type size\\
-% \cmd\footinbib@sw &true if footnotes are to be formatted in the bibliography\\
-% \cmd\preprintsty@sw &true for preprint and hyperpreprint\\
-% \cmd\eqsecnum@sw &true means that equations are numbered within sections\\
-% \cmd\groupauthors@sw &true means authors listed separately for each address\\
-% \cmd\preprint@sw &true means to produce the preprint numbers as part of the title block\\
-% \cmd\showPACS@sw &true means to produce the PACS as part of the title block\\
-% \cmd\showKEYS@sw &true means to produce the keywords as part of the title block\\
-% \cmd\@affils@sw &true means each affiliation is printed, for each author\\
-% \cmd\runinaddress@sw &true means author addresses are printed run-in\\
-% \cmd\draft@sw &true implies that PACS will be printed\\
-% \cmd\tightenlines@sw &true if preprint single spaced\\
-% \cmd\lengthcheck@sw &true if length checking is in effect\\
-% \cmd\byrevtex@sw &true means to announce ``typeset by \revtex''\\
-% \cmd\titlepage@sw &true for title is to be set on a separate page\\
-% \cmd\twocolumn@sw &true if two-column page grid\\
-% \cmd\twocolumn@sw &true if we are to automatically balance the columns of the last page\\
-% \cmd\twoside@sw &true means to format pages for duplex printing\\
-% \cmd\floats@sw &false means floats are migrated to end of document\\
-% \cmd\floatp@sw &true means endfloats are set one to a page\\
-% \cmd\class@amsfonts &if \cmd\@empty, means that \classname{amsfonts} will \emph{not} be loaded\\
-% \cmd\class@amssymb &if \cmd\@empty, means that \classname{amssymb} will \emph{not} be loaded\\
-% \cmd\frontmatter@footnote &if \cmd\undefined, means that the default (\cmd\footnote) will be used\\
-% \cmd\place@bibnumber &if \cmd\undefined, means that the default (inline) will be used\\
-% \end{tabular}
-%
-% Note: if \cmd\twocolumn@sw\ and \cmd\preprintsty@sw\ are both false,
-% then `galley' style is in effect. The \classoption{galley} option invokes
-% \classoption{onecolumn}, but does not affect the \cmd\preprintsty@sw.
-%
-% Note: \cmd\paperwidth\ and \cmd\paperheight\ are not integrated into this scheme,
-% and should be selected by the document alone.
-% \end{macro}
-%
-% \section{Body}
-%
-% \subsection{counters}
-% The following definitions are probably identical to those in
-% \file{classes.dtx}%
-% \begin{macrocode}
-\def\labelenumi{\theenumi.}
-\def\theenumi{\arabic{enumi}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\labelenumii{(\theenumii)}
-\def\theenumii{\alph{enumii}}
-\def\p@enumii{\theenumi}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\labelenumiii{\theenumiii.}
-\def\theenumiii{\roman{enumiii}}
-\def\p@enumiii{\theenumi(\theenumii)}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\labelenumiv{\theenumiv.}
-\def\theenumiv{\Alph{enumiv}}
-\def\p@enumiv{\p@enumiii\theenumiii}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\labelitemi{\textbullet}
-\def\labelitemii{\normalfont\bfseries\textendash}
-\def\labelitemiii{\textasteriskcentered}
-\def\labelitemiv{\textperiodcentered}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pagenumbering{arabic}
-% \end{macrocode}
-%
-% \subsection{float parameters}
-%
-% from the old aps.sty. (DPC: same as article I think)
-% AO: here, \LaTeX's standard classes fail very poorly
-% (the price of backward compatability): the values for
-% \cmd\floatpagefraction\ and \cmd\dblfloatpagefraction\
-% need to be raised to avoid creating extremely short
-% float pages.
-% \begin{macrocode}
-\setcounter{topnumber}{2}
-\def\topfraction{.9}
-\setcounter{bottomnumber}{1}
-\def\bottomfraction{.9}
-\setcounter{totalnumber}{3}
-\def\textfraction{.1}
-\def\floatpagefraction{.9}
-\setcounter{dbltopnumber}{2}
-\def\dbltopfraction{.9}
-\def\dblfloatpagefraction{.9}
-% \end{macrocode}
-%
-% \subsection{List Environments}
-%
-% \begin{macrocode}
-\newenvironment{verse}{%
- \let\\=\@centercr
- \list{}{%
- \itemsep\z@ \itemindent -1.5em\listparindent \itemindent
- \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]%
-}{%
- \endlist
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newenvironment{quotation}{%
- \list{}{%
- \listparindent 1.5em
- \itemindent\listparindent
- \rightmargin\leftmargin \parsep \z@ \@plus\p@}\item[]%
-}{%
- \endlist
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newenvironment{quote}{%
- \list{}{%
- \rightmargin\leftmargin}\item[]%
-}{%
- \endlist
-}%
-% \end{macrocode}
-%
-% \changes{4.1b}{2008/06/30}{(AO) Structure the Abstract using the \texttt{bibliography} environment}
-% \begin{macrocode}
-\def\descriptionlabel#1{%
- \hspace\labelsep \normalfont\bfseries #1\unskip:%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newenvironment{description}{%
- \list{}{%
- \labelwidth\z@ \itemindent-\leftmargin
- \let\makelabel\descriptionlabel
- }%
-}{%
- \endlist
-}%
-% \end{macrocode}
-%
-% \subsection{Sectioning Commands\label{sec:secnumarabic}}
-%
-% \subsubsection{Sectioning Commands and Their Productions}%
-% The following counters are defined by LaTeX's standard document classes.
-% We do likewise, then assign flag values to the productions, awaiting
-% overrides.
-% \begin{macrocode}
-\newcounter{part}%
-\let\thepart\@undefined
-\newcounter{section}%
-\let\thesection\@undefined
-\newcounter{subsection}[section]%
-\let\thesubsection\@undefined
-\newcounter{subsubsection}[subsection]%
-\let\thesubsubsection\@undefined
-\newcounter{paragraph}[subsubsection]%
-\let\theparagraph\@undefined
-\newcounter{subparagraph}[paragraph]%
-\let\thesubparagraph\@undefined
-% \end{macrocode}
-% The procedure invoked by \cmd\setup@secnums\ provides meanings for these productions.
-%
-% \begin{macro}{\secnums@rtx}
-% \begin{macro}{\secnums@arabic}
-% These two procedures define the meanings of each of the productions
-% of the counters of the sectioning commands,
-% but only if nothing else has defined it.
-% \begin{macrocode}
-\def\secnums@rtx{%
- \@ifxundefined\thepart{%
- \def\thepart{\Roman{part}}%
- }{}%
- \@ifxundefined\thesection{%
- \def\thesection {\Roman{section}}%
- \def\p@section {}%
- }{}%
- \@ifxundefined\thesubsection{%
- \def\thesubsection {\Alph{subsection}}%
- \def\p@subsection {\thesection\,}%
- }{}%
- \@ifxundefined\thesubsubsection{%
- \def\thesubsubsection {\arabic{subsubsection}}%
- \def\p@subsubsection {\thesection\,\thesubsection\,}%
- }{}%
- \@ifxundefined\theparagraph{%
- \def\theparagraph {\alph{paragraph}}%
- \def\p@paragraph {\thesection\,\thesubsection\,\thesubsubsection\,}%
- }{}%
- \@ifxundefined\thesubparagraph{%
- \def\thesubparagraph {\arabic{subparagraph}}%
- \def\p@subparagraph {\thesection\,\thesubsection\,\thesubsubsection\,\theparagraph\,}%
- }{}%
-}%
-\def\secnums@arabic{%
- \@ifxundefined\thepart{%
- \def\thepart {\Roman{part}}%
- }{}%
- \@ifxundefined\thesection{%
- \def\thesection {\Roman{section}}%
- \def\p@section {}%
- }{}%
- \@ifxundefined\thesubsection{%
- \def\thesubsection {\thesection.\arabic{subsection}}%
- \def\p@subsection {}%
- }{}%
- \@ifxundefined\thesubsubsection{%
- \def\thesubsubsection {\thesubsection.\arabic{subsubsection}}%
- \def\p@subsubsection {}%
- }{}%
- \@ifxundefined\theparagraph{%
- \def\theparagraph {\thesubsubsection.\arabic{paragraph}}%
- \def\p@paragraph {}%
- }{}%
- \@ifxundefined\thesubparagraph{%
- \def\thesubparagraph {\theparagraph.\arabic{subparagraph}}%
- \def\p@subparagraph {}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{The Acknowledgments Environment}%
-% This user-level markup produces a head introducing
-% the acknowledgments, and acts as a wrapper for the text.
-% In this implementation, it is an unnumbered section,
-% but appears within the toc.
-%
-% For compatiability's sake, we implement it under the alternative
-% spelling \env{acknowledgements}.
-% \changes{4.0c}{1999/11/13}{also spelled ``acknowledgements''.}
-% \changes{4.0d}{2000/05/18}{But alternative spelling is deprecated.}
-% \begin{macrocode}
-\newenvironment{acknowledgments}{%
- \acknowledgments@sw{%
- \expandafter\section\expandafter*\expandafter{\acknowledgmentsname}%
- }{%
- \par
- \phantomsection
- \addcontentsline{toc}{section}{\protect\numberline{}\acknowledgmentsname}%
- }%
-}{%
- \par
-}%
-\@booleantrue\acknowledgments@sw
-\newenvironment{acknowledgements}{%
- \replace@environment{acknowledgements}{acknowledgments}%
-}{%
- \endacknowledgments
-}%
-% \end{macrocode}
-%
-% \subsubsection{Part Opener}%
-% section setup copied verbatim from revtex3 aps/osa.
-% Does not explicitly depend on pointsize options.
-% \begin{macrocode}
-\def\part{\par
- \addvspace{4ex}%
- \@afterindentfalse
- \secdef\@part\@spart}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@part[#1]#2{%
- \@ifnum{\c@secnumdepth >\m@ne}{%
- \refstepcounter{part}%
- \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
- }{%
- \addcontentsline{toc}{part}{#1}%
- }%
- \begingroup
- \parindent \z@ \raggedright
- \interlinepenalty\@M
- \@ifnum{\c@secnumdepth >\m@ne}{%
- \Large \bf \partname~\thepart%
- \par\nobreak
- }{}%
- \huge \bf
- #2%
- \markboth{}{}\par
- \endgroup
- \nobreak
- \vskip 3ex
- \@afterheading
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@spart#1{{\parindent \z@ \raggedright
- \interlinepenalty\@M
- \huge \bf
- #1\par}
- \nobreak
- \vskip 3ex
- \@afterheading}
-% \end{macrocode}
-%
-% \subsubsection{Stacked Heads}%
-% Here are the class default definitions for sectioning commands.
-% A society or a journal substyle will likely override these definitions.
-%
-% In doing so, you can customize the formatting for a particular level by defining,
-% e.g., \cmd\@hangfrom@section\ or \cmd\@subsectioncntformat.
-% \begin{macrocode}
-\def\section{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {\normalfont\small\bfseries}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subsection{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {\normalfont\small\bfseries}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subsubsection{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {\normalfont\small\itshape}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{Runin Heads}%
-% \begin{macrocode}
-\def\paragraph{%
- \@startsection
- {paragraph}%
- {4}%
- {\parindent}%
- {\z@}%
- {-1em}%
- {\normalfont\normalsize\itshape}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subparagraph{%
- \@startsection
- {subparagraph}%
- {5}%
- {\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}%
-}%
-% \end{macrocode}
-%
-%
-% \subsection{Math}
-%
-% \begin{macro}{\theequation}
-% We change the production of the equation counter so that
-% we can accomodate the \classoption{eqsecnum} option.
-% \begin{macrocode}
-\def\theequation{%
- \theequation@prefix\arabic{equation}%
-}%
-\def\theequation@prefix{}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Type Size-Dependent Settings}
-%
-% \subsection{All Point Sizes}
-% \begin{macrocode}
-\setcounter{secnumdepth}{4}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\lineskip 1pt
-\normallineskip 1pt
-\def\baselinestretch{1}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@lowpenalty 51
-\@medpenalty 151
-\@highpenalty 301
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@beginparpenalty -\@lowpenalty
-\@endparpenalty -\@lowpenalty
-\@itempenalty -\@lowpenalty
-% \end{macrocode}
-%
-% \begin{macrocode}
-\arraycolsep 3pt
-\tabcolsep 2pt
-\arrayrulewidth .4pt
-\doublerulesep 2pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\skip\@mpfootins = 0pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\fboxsep = 3.0pt
-\fboxrule = 0.4pt
-% \end{macrocode}
-%
-% \subsection{Figures}
-% \changes{4.0b}{1999/06/20}{Processing delayed to \cs{AtBeginDocument} time}
-%
-% \begin{environment}{figure}
-% We define the \env{figure} environment.
-% Later, we will horse around with its meaning
-% in order to accomodate \cmd\floats@sw.
-% \begin{macrocode}
-\newenvironment{figure}
- {\@float{figure}}
- {\end@float}
-\newenvironment{figure*}
- {\@dblfloat{figure}}
- {\end@dblfloat}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macrocode}
-\def\listoffigures{\print@toc{lof}}%
-\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}%
-% \end{macrocode}
-%
-% \begin{macro}{\@makecaption}
-% If caption is one line long, to be centered; if lines turn, then set justified.
-% \begin{macrocode}
-\newlength\abovecaptionskip
-\newlength\belowcaptionskip
-\setlength\abovecaptionskip{10\p@}
-\setlength\belowcaptionskip{2\p@}
-% \end{macrocode}
-%
-% \changes{4.0b}{1999/06/20}{One-line caption sets flush left.}
-% \changes{4.0c}{1999/11/13}{Prevent an inner footnote from performing twice}
-% \changes{4.1a}{2008/01/18}{(AO, 460) ``Proper style is "FIG. 1. ..." (no colon)''}%
-% There is a hook \cmd\@caption@fignum@sep\ for determining
-% the separator following the float number, e.g., ``Fig.1''.
-% Formerly, we had defined it to be ``: '', now the colon has been replace by a period (full stop).
-% \begin{macrocode}
-\long\def\@makecaption#1#2{%
- \par
-% \nobreak
- \vskip\abovecaptionskip
- \begingroup
- \small\rmfamily
- \sbox\@tempboxa{%
- \let\\\heading@cr
- \@make@capt@title{#1}{#2}%
- }%
- \@ifdim{\wd\@tempboxa >\hsize}{%
- \begingroup
- \samepage
- \flushing
- \let\footnote\@footnotemark@gobble
- \@make@capt@title{#1}{#2}\par
- \endgroup
- }{%
- \global \@minipagefalse
- \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}%
- }%
- \endgroup
- \vskip\belowcaptionskip
-}%
-\def\@make@capt@title#1#2{%
- \@ifx@empty\float@link{\@firstofone}{\expandafter\href\expandafter{\float@link}}%
- {#1}\@caption@fignum@sep#2%
-}%
-\def\@footnotemark@gobble{%
- \@footnotemark
- \@ifnextchar[{\@gobble@opt@i}{\@gobble}%
-}%
-\def\@gobble@opt@i[#1]#2{}%
-\def\@mpmakefntext#1{%
- \flushing
- \parindent=1em
- \noindent
- \hb@xt@1em{\hss\@makefnmark}%
- #1%
-}%
-\def\@caption@fignum@sep{. }%
-\def\setfloatlink{\def\float@link}%
-\let\float@link\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\thefigure}
-% The figure counter and float placement defaults.
-% \begin{macrocode}
-\newcounter{figure}
-\renewcommand \thefigure {\@arabic\c@figure}
-% \end{macrocode}
-% Note that we give the `!' modifier by default.
-% This is an effort to avoid the syndrome wherein
-% a deferred float finds itself unqualified for
-% placement, thereby getting carried until \cmd\clearpage.
-% \begin{macrocode}
-\def\fps@figure{tbp}
-\def\ftype@figure{1}
-\def\ext@figure{lof}
-\def\fnum@figure{\figurename~\thefigure}
-% \end{macrocode}
-% We allocate a box register for use in tallying the column inches of floats of this type.
-% \begin{macrocode}
-\expandafter\newbox\csname fbox@\ftype@figure\endcsname
-\expandafter\setbox\csname fbox@\ftype@figure\endcsname\hbox{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Deferring \env{figure} Floats}%
-%
-% We determine if figures are to float or be deferred until \cmd\printfigures\ time.
-% If so, we open the stream that will receive the deferred document portions.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \do@if@floats{figure}{.fgx}%
-}%
-\appdef\class@enddocumenthook{%
- \printfigures\relax
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\printfigures}
-% The user-level command \cmd\printfigures\ determines
-% where the figures are to appear in a document in which
-% \cmd\floats@sw\ is false.
-% If the user invokes the \classoption{endfloats} class option and fails to
-% insert a \cmd\printfigures\ command,
-% the figures will be printed at the end of the document.
-% If the command is given, but floats are not being deferred,
-% it amounts to a no-op.
-% \changes{4.0b}{1999/06/20}{call \cs{print@floats}}
-% \changes{4.0c}{1999/11/13}{*-form mandates pagebreak}
-% \begin{macrocode}
-\newcommand\printfigures{%
- \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
- {%
- \print@float{figure}{\oneapage}%
- }{%
- \print@float{figure}{}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@xfloat@prep}
-% We patch into the procedure \cmd\@xfloat@prep.
-% This patch applies to all floats (not \env{figure} alone)
-% and makes the type center.
-% \begin{macrocode}
-\appdef\@xfloat@prep{%
- \appdef\@parboxrestore{\centering}%
-%\let\@makefnmark\@makefnmark@latex
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Tables}
-% \changes{4.0b}{1999/06/20}{Processing delayed to \cs{AtBeginDocument} time}
-%
-% DPC: More or less taken from \file{revtex2} \file{aps.sty},
-% but using dcolumn for decimal alignment.
-% \begin{environment}{table}
-% We define the \env{table} environment.
-% Later, we will horse around with its meaning
-% in order to accomodate \cmd\floats@sw.
-% \begin{macrocode}
-\newenvironment{table}
- {\@float{table}}
- {\end@float}
-\newenvironment{table*}
- {\@dblfloat{table}}
- {\end@dblfloat}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\thetable}
-% Table counter and default float placement declarations.
-% \begin{macrocode}
-\newcounter{table}
-\renewcommand\thetable{\@Roman\c@table}
-% \end{macrocode}
-% Note that we give the `!' modifier by default.
-% This is an effort to avoid the syndrome wherein
-% a deferred float finds itself unqualified for
-% placement, thereby getting carried until \cmd\clearpage.
-% \begin{macrocode}
-\def\fps@table{tbp}
-\def\ftype@table{2}
-\def\ext@table{lot}
-\def\fnum@table{\tablename~\thetable}
-% \end{macrocode}
-% We allocate a box register for use in tallying the column inches of floats of this type.
-% \begin{macrocode}
-\expandafter\newbox\csname fbox@\ftype@table\endcsname
-\expandafter\setbox\csname fbox@\ftype@table\endcsname\hbox{}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\listoftables{\print@toc{lot}}%
-\let\l@table\l@figure
-% \end{macrocode}
-%
-% \begin{macro}{\table@hook}
-% \begin{macro}{\squeezetable}
-% Assign a meaning to the hook installed into float processing.
-%
-% By default floats are \cmd\small. The \cmd\squeezetable\ declaration
-% makes them smaller (\cmd\scriptsize). In general you can locally
-% redefine \cmd\table@hook\ to be whatever you like.
-% (DPC: |\Huge\color{magenta}|\ldots?)
-% \begin{macrocode}
-\def\table@hook{\small}%
-\def\squeezetable{\def\table@hook{\scriptsize}}%
-\appdef\@floatboxreset{\table@hook}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Deferring \env{table} Floats}%
-%
-% After all packages are loaded, we decide
-% if tables will float or will be deferred until \cmd\printtables\ time.
-%
-% We also deal with the possibility of \env{longtable} environments.
-%
-% \begin{macrocode}
-\def\set@table@environments{%
- \floats@sw{}{%
- \let@environment{longtable@float}{longtable}%
- \let@environment{longtable}{longtable@write}%
- \let@environment{longtable*@float}{longtable*}%
- \let@environment{longtable*}{longtable*@write}%
- \let@environment{turnpage@float}{turnpage}%
- \let@environment{turnpage}{turnpage@write}%
- }%
- \do@if@floats{table}{.tbx}%
-}%
-\appdef\document@inithook{%
- \set@table@environments
-}%
-\appdef\class@enddocumenthook{%
- \printtables\relax
-}%
-\newenvironment{longtable@write}{%
- \write@@float{longtable}{table}%
-}{%
- \endwrite@float
-}%
-\newenvironment{longtable*@write}{%
- \write@@float{longtable*}{table}%
-}{%
- \endwrite@float
-}%
-\newenvironment{turnpage@write}{%
- \immediate\write\tablewrite{\string\begin{turnpage}}%
-}{%
- \immediate\write\tablewrite{\string\end{turnpage}}%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\printtables}
-% The user-level command \cmd\printtables\ determines
-% where the tables are to appear in a document in which
-% \cmd\floats@sw\ is false.
-% If the user invokes the \classoption{nofloats} and fails to
-% insert a \cmd\printtables\ command,
-% the tables will be printed at the end of the document.
-% If the command is given, but floats are not being deferred,
-% it amounts to a no-op.
-% \changes{4.0b}{1999/06/20}{only execute if appropriate}
-% \changes{4.0c}{1999/11/13}{*-form mandates pagebreak}
-% \changes{4.0d}{2000/05/17}{make longtable trigger the head, too}
-% \begin{macrocode}
-\newcommand\printtables{%
- \begingroup
- \let@environment{longtable}{longtable@float}%
- \let@environment{longtable*}{longtable*@float}%
- \let@environment{turnpage}{turnpage@anchored}%
- \prepdef\longtable{\trigger@float@par}%
- \expandafter\prepdef\csname longtable*\endcsname{\trigger@float@par}%
- \expandafter\prepdef\csname table@floats\endcsname{%
- \onecolumngrid@push
- }%
- \expandafter\appdef\csname endtable@floats\endcsname{%
- \onecolumngrid@pop
- }%
- \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
- {%
- \print@float{table}{\oneapage}%
- }{%
- \print@float{table}{}%
- }%
- \endgroup
-}%
-\newenvironment{turnpage@anchored}{%
- \onecolumngrid@push
- \setbox\z@\vbox to\textwidth\bgroup
- \columnwidth\textheight
-}{%
- \vfil
- \egroup
- \rotatebox{90}{\box\z@}%
- \onecolumngrid@pop
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Videos}
-%\changes{4.1r}{2010/06/22}{(AO, 595) Provide \cs{lovname} along with other List of Videos definitions.}%
-%
-% \begin{environment}{video}
-% We define the \env{video} environment analogously to the
-% \env{figure} and \env{table} environments; it is intended to contain a video.
-%
-% \begin{macrocode}
-\newenvironment{video}
- {\@float{video}}
- {\end@float}%
-\newenvironment{video*}
- {\@dblfloat{video}}
- {\end@dblfloat}%
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\thevideo}
-% The video counter, float placement defaults, strings.
-% \begin{macrocode}
-\newcounter{video}
-\renewcommand \thevideo {\@arabic\c@video}
-% \end{macrocode}
-%
-% File extension and localizable strings.
-% \begin{macrocode}
-\def\ext@video{lov}%
-\def\fname@video{Video}%
-\def\lovname{List of Videos}%
-% \end{macrocode}
-%
-% Float type and default placement.
-% \begin{macrocode}
-\def\fps@video{tbp}%
-\def\ftype@video{4}%
-\def\fnum@video{\fname@video~\thevideo}%
-\appdef\document@inithook{%
- \@ifxundefined\c@float@type{}{%
- \global\setcounter{float@type}{8}%
- }%
-}%
-% \end{macrocode}
-% We allocate a box register for use in tallying the column inches of floats of this type.
-% \begin{macrocode}
-\expandafter\newbox\csname fbox@\ftype@video\endcsname
-\expandafter\setbox\csname fbox@\ftype@video\endcsname\hbox{}%
-% \end{macrocode}
-% The documentation for the \classname{hyperref} package, \file{hyperref.dtx} states:
-% ``classes or package which introduce new elements need to define
-% an equivalent \verb+\theH<name>+ for every \verb+\the<name>+''
-% We do accordingly here.
-% \begin{macrocode}
-\let\theHvideo\thevideo
-% \end{macrocode}
-% But \file{hyperref.dtx} goes on to say,
-% ``We do make a trap to make \verb+\theH<name>+ be the same as \verb+\arabic{<name>}+,
-% if \verb+\theH<name>+ is not defined\ldots''
-% However, it's not doing that right now (as of 6.77u),
-% and I cannot find any such code in there anymore.
-% \end{macro}
-%
-% \begin{macrocode}
-\def\listofvideos{\print@toc{lov}}%
-\let\l@video\l@figure
-% \end{macrocode}
-%
-% \subsubsection{Deferring \env{video} Floats}%
-%
-% We determine if videos are to float or be deferred until \cmd\printvideos\ time.
-% If so, we open the stream that will receive the deferred document portions.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \do@if@floats{video}{.vdx}%
-}%
-\appdef\class@enddocumenthook{%
- \printvideos\relax
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\printvideos}
-% The user-level command \cmd\printvideos\ determines
-% where the videos are to appear in a document in which
-% \cmd\floats@sw\ is false.
-% If the user invokes the \classoption{endfloats} class option and fails to
-% insert a \cmd\printvideos\ command,
-% the videos will be printed at the end of the document.
-% If the command is given, but floats are not being deferred,
-% it amounts to a no-op.
-% \begin{macrocode}
-\newcommand\printvideos{%
- \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
- {%
- \print@float{video}{\oneapage}%
- }{%
- \print@float{video}{}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Tabular}
-% Every APS tabular has a double (Scotch) rule above and below.
-% The column specifier ``d'' is implemented using the \classname{dcolumn}
-% package, if available.
-% FIXME: always load dcolumn!
-% \begin{macro}{\tabular@hook}
-% \begin{macro}{\endtabular@hook}
-% \begin{environment}{ruledtabular}
-% \begin{macrocode}
-\def\endtabular@hook{}%
-% \end{macrocode}
-% \begin{verbatim}
-%\RequirePackage{dcolumn}%
-% \end{verbatim}
-% \begin{macrocode}
-\appdef\document@inithook{%
- \@ifpackageloaded{dcolumn}{%
- \expandafter\@ifnotrelax\csname NC@find@d\endcsname{}{%
- \newcolumntype{d}{D{.}{.}{-1}}%
- }%
- }{}%
-}%
-\def\toprule{\hline\hline}%
-\def\colrule{\hline}%
-\def\botrule{\hline\hline}%
-\newenvironment{ruledtabular}{%
- \def\array@default{v}%
- \appdef\tabular@hook{\def\@halignto{to\hsize}}%
- \let\tableft@skip@default\tableft@skip
- \let\tableft@skip\tableft@skip@float
- \let\tabmid@skip@default\tabmid@skip
- \let\tabmid@skip\tabmid@skip@float
- \let\tabright@skip@default\tabright@skip
- \let\tabright@skip\tabright@skip@float
- \let\array@row@pre@default\array@row@pre
- \let\array@row@pre\array@row@pre@float
- \let\array@row@pst@default\array@row@pst
- \let\array@row@pst\array@row@pst@float
- \appdef\array@row@rst{%
- \let\array@row@pre\array@row@pre@default
- \let\array@row@pst\array@row@pst@default
- \let\tableft@skip\tableft@skip@default
- \let\tabmid@skip\tabmid@skip@default
- \let\tabright@skip\tabright@skip@default
- \appdef\tabular@hook{\let\@halignto\@empty}%
- }%
-}{%
-}%
-% \end{macrocode}
-% \end{environment}
-% \end{macro}
-% \end{macro}
-%
-% \section{Footnote Text}
-%
-% \changes{4.0a}{1998/06/10}{single space footnotes}
-% \changes{4.0b}{1999/06/20}{Frank Mittelbach, has stated in \protect\classname{multicol}: ``The kernel command \cs{@footnotetext} should not be modified.'' Thus, I have removed David Carlisle's redefinition of that command. Note, however, that later versions of \protect\classname{multicol} do not require this workaround. Belt and suspenders.}%
-%
-% \begin{macro}{\@makefntext}
-% \begin{macro}{\@makefnmark}
-% We customize the presentation of the footnote mark: it will not be italic.
-% \begin{macrocode}
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \parindent1em%
- \noindent
- \hb@xt@1.8em{%
- \hss\@makefnmark
- }%
- #1%
- \par
-}%
-\def\@makefnmark{%
- \hbox{%
- \@textsuperscript{%
- \normalfont\@thefnmark
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Citations, Bibliography, Endnotes}
-%
-% \subsubsection{Bibliography}
-%
-% Load Patrick Daly's \classname{natbib} package,
-% \url{ftp://ctan.tug.org/macros/latex/contrib/supported/natbib}
-%
-% Note that \classname{natbib} assumes that it loads
-% over a document class, such as the \classname{article} class,
-% that has already defined \env{thebibliography} and \cmd\@listi.
-%
-% Note also that \classname{natbib} also installs a command
-% \cmd\NAT@set@cites\ into \cmd\AtBeginDocument\ which presumes
-% that the proper \cmd\bibpunct\ command has been issued.
-%
-% Note that the macro \cmd\NAT@sort\ controls
-% whether citations are left alone (\cmd\NAT@sort=0), sorted (\cmd\NAT@sort=1), or sorted and compressed (\cmd\NAT@sort=2).
-% Since we give \classname{natbib} the \classoption{sort\&compress} option,
-% if you prefer \classoption{sort}, you need only \cmd\let \cmd\NAT@sort\ to be \cmd\@ne.
-% However, if you prefer the effect of having neither \classoption{sort} nor \classoption{sort\&compress},
-% you must \cmd\let \cmd\NAT@sort\ to be \cmd\z@ and you must also define
-% \cmd\let\cmd\NAT@cmprs\ to be \cmd\z@.
-%
-% As of version 8.2, \classname{natbib} now no longer binds at the point where it is read in.
-% This means that we can freely change \cmd\NAT@sort, \cmd\NAT@cmprs, and the new
-% \cmd\NAT@merge. Henceforth, we require that this later version be used.
-%
-% For other \classname{natbib} customizations, you may proceed as if you were going to use
-% the \file{natbib.cfg} file: anything that you can modify by this means is fair game.
-% Once \revtex\ is finished loading, you can assert any definitions for \classname{natbib} that you wish.
-%
-% \begin{macro}{\rev@citet}
-% \begin{macro}{\rev@citealp}
-% \begin{macro}{\rev@citealpnum}
-% We define variants on \classname{natbib}'s commands \cmd\citet, \cmd\citealp, and \cmd\citealpnum.
-% \cmd\rev@citealpnum\ uses a numerical citation.
-% \cmd\rev@citealp\ and \cmd\rev@citealpnum\ are the aliases of \cmd\onlinecite,
-% \cmd\rev@citet\ that of \cmd\textcite.
-%
-% In each case, we invoke \cmd\rtx@swap@citea\ to effect different productions between
-% multiple arguments to the \cmd\cite\ command.
-%
-% \cmd\rev@citealpnum\ provides textual citations where superscript citations are the default.
-% These should be accessible via the \cmd\citet\ command.
-%
-% Therefore we remember how to do a numerical citation
-% even when the superscript citation has been selected.
-% \begin{macrocode}
-\expandafter\DeclareRobustCommand
-\expandafter\rev@citet
-\expandafter{%
- \expandafter\begingroup
- \expandafter\rtx@swap@citea
- \expandafter\g@bblefirsttoken
- \csname citet \endcsname
-}%
-\expandafter\DeclareRobustCommand
-\expandafter\rev@citealp
-\expandafter{%
- \expandafter\begingroup
- \expandafter\rtx@swap@citea
- \expandafter\g@bblefirsttoken
- \csname citealp \endcsname
-}%
-\expandafter\DeclareRobustCommand
-\expandafter\rev@citealpnum
-\expandafter{%
- \expandafter\begingroup
- \expandafter\rtx@swap@citenum
- \expandafter\g@bblefirsttoken
- \csname citealp \endcsname
-}%
-\def\rtx@swap@citenum{%
- \rtx@swap@citea
- \let\@cite\NAT@citenum
- \let\NAT@mbox\mbox
- \let\citeyear\NAT@citeyear
- \let\NAT@space\NAT@spacechar
-}%
-\def\g@bblefirsttoken{%
- \expandafter\true@sw
- \expandafter\@empty
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\rtx@citesuper}
-% We prepare to redefine \classname{natbib}'s procedure \cmd\NAT@citesuper,
-% which is executed when setting a superscript citation.
-% The \cmd\hspace\ is removed: in any case, it
-% should really be \cmd\hspace*, to prevent an unwanted pagebreak.
-% \begin{macrocode}
-\newcommand\rtx@citesuper[3]{%
- \ifNAT@swa
- \leavevmode
- \unskip
-% \hspace{1\p@}%
- \textsuperscript{\normalfont#1}%
- \if*#3*\else\ (#3)\fi
- \else
- #1%
- \fi
- \endgroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@makefnmark@cite}
-% We define a procedure that will set a footnote mark the same way that
-% a citation is set. If footnotes are put in the bibliography with
-% \cmd\footinbib@sw, then the corresponding mark should look the same
-% as the result of a \cmd\cite. This is how we do it.
-% \begin{macrocode}
-\def\@makefnmark@cite{\begingroup\NAT@swatrue\@cite{{\@thefnmark}}{}{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rtx@bibsection}
-% Prepare to override \classname{natbib}'s definition of \cmd\bibsection.
-% \begin{macrocode}
-\def\rtx@bibsection{%
- \@ifx@empty\refname{%
- \par
- }{%
-% \let\@hangfroms@section\@hang@froms
- \expandafter\section\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rtx@swap@citea}
-% \begin{macro}{\rtx@def@citea}
-% \begin{macro}{\rtx@def@citea@close}
-% \begin{macro}{\rtx@def@citea@box}
-% The procedures |\rtx@def@citea|, |\rtx@def@citea@close|, and |\rtx@def@citea@box|
-% can take over the management of \classname{natbib}'s |\@citea| macro to effect more sophisticated
-% behavior of the punctuation between textual citations. The switch is performed by \cmd\rtx@swap@citea.
-%
-% \changes{4.1j}{2009/10/25}{(AO, 552) Repair spacing in \cs{onlinecite}}
-% In these procedures, we use \cmd\count@\ to count the number of arguments of the \cmd\cite\ command,
-% and we use \cmd\c@NAT@ctr\ to keep track of which argument we are processing.
-% The latter counter is created by \classname{natbib} and used there solely in bibliography processing,
-% where it keeps track of the reference number.
-% We take over its use in these macros, but only locally; therefore these procedures should work properly, even within the bibliography.
-%FIXME: check whether this is true!
-%
-% Because we are using a scratch counter \cmd\count@, we are vulnerable to other \TeX\ programmers
-% who patch in to \classname{natbib}'s processing and who might use that counter at the same time we are doing so.
-% This is a potential source of trouble for us.
-%FIXME: store the value of \cmd\count@\ in a private \cmd\csname!
-%
-% Note that \cmd\rtx@def@citea\ begins the same as \cmd\NAT@def@citea, which it replaces,
-% then makes further decisions based on the values of the counters.
-%
-% Note also that, in \classname{natbib}, the replacement part of \cmd\NAT@def@citea@close\ could be rewritten as
-% \cmd\NAT@def@citea\cmd\prepdef\cmd\@citea\verb+{+\cmd\NAT@@close\verb+}+, which
-% would them obviate the need for us to override its meaning.
-%
-% Note, too, the effect of \cmd\rtx@def@citea@box, which replaces \cmd\NAT@def@citea@box,
-% is almost the same as the latter, except the entire \cmd\@citea\ is given as the argument
-% of \cmd\NAT@mbox.
-%
-% Finally, bear in mind that the English (and some American editors) do not place a comma
-% before the ``and''; our procedures do (but they could be rewritten with that convention).
-% \begin{macrocode}
-\def\rtx@swap@citea{%
- \let\NAT@def@citea\rtx@def@citea
- \let\NAT@def@citea@close\rtx@def@citea@close
- \let\NAT@def@citea@box\rtx@def@citea@box
-}%
-\def\rtx@def@citea{%
- \def\@citea{\NAT@separator\NAT@space}%
- \advance\c@NAT@ctr\@ne
- \@ifnum{\count@>\tw@}{%
- \@ifnum{\c@NAT@ctr=\count@}{\appdef\@citea{\NAT@conj\NAT@space}}{}%
- }{%
- \def\@citea{\NAT@space\NAT@conj\NAT@space}%
- }%
-}%
-\def\rtx@def@citea@close{%
- \rtx@def@citea
- \prepdef\@citea{\NAT@@close}%
-}%
-\def\rtx@def@citea@box{%
- \rtx@def@citea@close
- \expandafter\def\expandafter\@citea\expandafter{\expandafter\NAT@mbox\expandafter{\@citea}}%
-}%
-\def\NAT@conj{and}%
-% \end{macrocode}
-%
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\BibitemShut}
-% \begin{macro}{\bibAnnote}
-% \changes{4.1j}{2009/10/24}{(AO, 549) Repairing natbib's \cs{BibitemShut} and \cs{bibAnnote}}
-% \changes{4.1o}{2010/02/05}{(AO, 549) Remove patch to natbib, which is now at version 8.31a}
-% \changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
-% We remember a temporary patch to \classname{natbib}'s definition of \cmd\BibitemShut.
-% \begin{macrocode}
-\def\NAT@BibitemShut#1{%
- \def\@bibstop{#1}%
- \let\bibitem@Stop\bibitemStop
- \let\bibitem@NoStop\bibitemNoStop
- \@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
- \expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
- }%
-}%
-% \end{macrocode}
-% The following is a bug fix to \classname{natbib} version 8.31b.
-% \begin{macrocode}
-\def\BibitemShut@ltx#1{%
- \unskip
- \def\@bibstop{#1}%
- \let\bibitem@Stop\bibitemStop
- \let\bibitem@NoStop\bibitemNoStop
- \@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
- \expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
- }%
-}%
-% \end{macrocode}
-%
-% \begin{verbatim}
-%\providecommand{\bibAnnote}[3]{%
-% \BibitemShut{#1}%
-% \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
-% \begin{quotation}\noindent
-% \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
-% \end{quotation}%
-% }%
-% \ignorespaces
-%}%
-%\def\@bibitemShut{}%
-% \end{verbatim}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-\newenvironment{thebibliography}{}{}%
-\let\@listi\@empty
-\appdef\rtx@require@packages{%
- \RequirePackage[sort&compress]{natbib}[2009/11/07 8.31a (PWD, AO)]%
- \let@environment{NAT@thebibliography}{thebibliography}%
- \let@environment{thebibliography}{rtx@thebibliography}%
- \let\bibliographystyle@latex\bibliographystyle
- \let\NAT@citesuper\rtx@citesuper
-% \end{macrocode}
-%
-% \begin{macro}{\NAT@bibsetnum}
-% \begin{macro}{\NAT@bibsetup}
-% \begin{macro}{\bibpreamble}
-% \begin{macro}{\newblock}
-% \begin{macro}{\bibnumfmt}
-% \begin{macro}{\NAT@merge}
-% We define the sectioning command to use when starting the bibliography
-% and gently coax \classname{natbib} into using
-% the formatting procedures that \emph{we} want it to use.
-%
-% This way of setting up \env{thebibliography}
-% automatically sets the label width based on
-% the largest number used within the bibliography.
-% This scheme will not work properly using the
-% author/year style of bib entry, though.
-%
-% We define \cmd\bibnumfmt\ to be \cmd\place@bibnumber, which is a macro
-% managed by \revtex. If the document defines \cmd\bibnumfmt, then that
-% definition will be used instead, which is what the \classname{natbib}
-% package gives as its programming interface.
-%
-% We set \cmd\NAT@merge\ to \cmd\tw@, which turns on \classname{natbib}'s
-% \classname{mcite} capabilities. This is the default setting.
-% If numerical citations are not to be used, then \cmd\NAT@merge\
-% should be set to \cmd\@ne\ (syntax is still enabled, but semantics are turned off).
-% \begin{macrocode}
-\let\bibsection\rtx@bibsection
-\let\NATx@bibsetnum\NAT@bibsetnum
-\def\NAT@bibsetnum#1{%
- \setlength{\topsep}{\z@}%
- \NATx@bibsetnum{\ref{LastBibItem}}%
-}%
-\let\NATx@bibsetup\NAT@bibsetup
-\def\NAT@bibsetup{%
- \setlength{\labelwidth}{\z@}%
- \setlength{\labelsep}{\z@}%
- \setlength{\itemindent}{\z@}%
- \setlength{\listparindent}{\z@}%
- \setlength{\topsep}{\z@}%
- \setlength{\parsep}{\z@}%
- \NATx@bibsetup
-}%
-\let\bibpreamble\@empty
-\def\newblock{\ }%
-\let\NATx@bibnumfmt\bibnumfmt
-\def\bibnumfmt{\place@bibnumber}%
-\let\NAT@merge\thr@@
-\let\NAT@citeyear\citeyear
-\let\onlinecite\rev@citealp
-\let\textcite\rev@citet
-% \end{macrocode}
-% The following is needed until \classname{natbib} is at 8.31b.
-% \begin{macrocode}
-\@ifx{\BibitemShut\NAT@BibitemShut}{%
- \class@info{Repairing natbib's \string\BibitemShut}%
- \let\BibitemShut\BibitemShut@ltx
-}{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bibliographystyle}
-% \changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
-% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
-% We arrange for the selection of bibliography style
-% to occur either due to the document's explicit
-% \cmd\bibliographystyle\ statement or
-% via the journal substyle.
-%
-% Note that \revtex\ is incompatible with
-% any package that patches \cmd\bibliographystyle.
-% Since \classname{natbib} does this, we need a fix.
-%
-% The Boolean \cmd\bibliographystyle@sw\ signifies that the document contains explicit
-% \cmd\bibliographystyle\ markup. If, on the contrary, the bibliography style is set by
-% the the society or the journal, then no explicit \cmd\bibliographystyle\ command appears in the document instance.
-% In this case \cmd\bibliographystyle@sw\ will be \cmd\false@sw.
-% \begin{macrocode}
-\let\bibliographystyle@latex\bibliographystyle
-\def\bibliographystyle{\@booleantrue\bibliographystyle@sw\def\@bibstyle}%
-\@booleanfalse\bibliographystyle@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \changes{4.1j}{2009/11/03}{(AO, 551) Punctuation at end of reference when optional arguments to the cite key are given.}
-% The following had been bug fixes to \classname{natbib} version 8.31a.
-% \begin{verbatim}
-%\def\bibitemStop{\@bibitemShut}%
-%\def\NAT@bibitem@cont{%
-% \let\bibitem@Stop\bibitemContinue
-% \let\bibitem@NoStop\bibitemContinue
-%}%
-% \end{verbatim}
-% The following are alterations to \classname{natbib} version 8.31a to
-% accommodate the possible space character preceding \cmd\BibitemShut,
-% and to handle the case of merged references, where the first ends with a stop character.
-% \changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
-% \changes{4.1o}{2010/02/09}{(AO, 581) Handle case: merged references, with first ending in a stop character.}
-% \begin{macrocode}
-\def\NAT@bibitem@cont{%
- \let\bibitem@Stop\bibitemContinue@Stop
- \let\bibitem@NoStop\bibitemContinue
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\bibitemNoStop{%
- \@ifx@empty\@bibitemShut{.\spacefactor\@mmm\space}{\@bibitemShut}%
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\bibitemContinue{%
- \@ifx@empty\@bibitemShut{;\spacefactor\@mmm\space}{\@bibitemShut}%
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\bibitemContinue@Stop{%
- \@ifx@empty\@bibitemShut{\spacefactor\@mmm\space}{\@bibitemShut}%
-}%
-% \end{macrocode}
-%
-% \changes{4.1k}{2009/11/11}{(AO, 561) remove dead code relating to \cs{bibitemContinue}}
-% We used to customize one of the productions of \classname{natbib}, but no longer.
-% \begin{verbatim}
-%\let\bibitemContinue\bibitemContinue@rtx
-% \end{verbatim}
-%
-% Here ends the code to be executed at \cmd\rtx@require@packages\ time.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \changes{4.1f}{2009/07/07}{(AO, 516) Merged references are separated with a semicolon}
-% Redefine a macro of \classname{natbib} so that merged references are separated with a semicolon.
-% \changes{4.1k}{2009/11/11}{(AO, 561) remove dead code relating to \cs{bibitemContinue}}
-% \begin{verbatim}
-% \def\bibitemContinue@rtx{;\spacefactor\@mmm\space}%
-% \end{verbatim}
-%
-% \begin{macro}{\onlinecite}
-% \begin{macro}{\textcite}
-% We extend \classname{natbib}'s syntax with two commands to set a citation
-% on the baseline (as opposed to superscripted) and as text (rather than parenthetical), respectively.
-% A journal substyle that makes citations be superscripted or parenthetical as the case may be, should ensure
-% that the author has continued access to these two styles.
-%
-% Note that the society or journal substyle override the meanings of \cmd\@onlinecite\ or
-% \cmd\@textcite\ given here.
-%
-% \begin{macrocode}
-\DeclareRobustCommand\onlinecite{\@onlinecite}%
-\DeclareRobustCommand\textcite{\@textcite}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bibliography}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% Provide a hook for supplying Bib\TeX\ a bibliographic database that may contain, say,
-% footnotes.
-%
-% Note that Bib\TeX\ chokes if the argument of the \cmd\bibdata\ command has null fields,
-% hence these tests.
-% \begin{macrocode}
-\let\bibliography@latex\bibliography
-\def\bibliography#1{%
- \auto@bib@empty
- \begingroup
- \let\auto@bib@innerbib\@empty
- \@ifx@empty{\pre@bibdata}{%
- \bibliography@latex{#1}%
- }{%
- \@if@empty{#1}{%
- \expandafter\bibliography@latex\expandafter{\pre@bibdata}%
- }{%
- \expandafter\bibliography@latex\expandafter{\pre@bibdata,#1}%
- }%
- }%
- \endgroup
-}%
-\let\pre@bibdata\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{environment}{rtx@thebibliography}%
-% \begin{macro}{\present@bibnote}%
-% \changes{4.1f}{2009/07/11}{(AO, 521) Lonely bibliography head}%
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
-% \changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
-% We put a tail patch into \cmd\thebibliogrphy\ and
-% a headpatch into \cmd\endthebibliography.
-%
-% Here we provide a default treatment for frontmatter notes
-% deferred to the bibliography; a journal substyle
-% might want to override the definition of \cmd\present@bibnote.
-%
-% We make provisions for the case where there are no \cmd\bibitem s
-% for the bibliography: we produce no bibliography head at all.
-%
-% \begin{macrocode}
-\newenvironment{rtx@thebibliography}[1]{%
- \NAT@thebibliography{#1}%
- \let\@TBN@opr\present@bibnote
- \@FMN@list
-}{%
-% \end{macrocode}
-% The following line was commented out:
-% \begin{verbatim}
-%\@endnotesinbib
-% \end{verbatim}
-% The \cmd\auto@bib@innerbib\ directive has been moved from the begin processing to the end processing.
-% This means that the content of the \env{thebibliography} environment can itself prevent the
-% automatic reading in of the .bbl file. This would be needed when the user has pasted in the
-% content of the .bbl file into the document itself, something required by APS and AIP editorial direction.
-% \begin{macrocode}
- \auto@bib@innerbib
- \edef\@currentlabel{\arabic{NAT@ctr}}%
- \label{LastBibItem}%
- \endNAT@thebibliography
- \aftergroup\auto@bib@empty
-}%
-\def\present@bibnote#1#2{%
- \item[%
- \textsuperscript{%
- \normalfont
- \Hy@raisedlink{\hyper@anchorstart{frontmatter.#1}\hyper@anchorend}%
- \begingroup
- \csname c@\@mpfn\endcsname#1\relax
- \frontmatter@thefootnote
- \endgroup
- }%
- ]#2\par
-% \end{macrocode}
-% The following line was commented out:
-% \begin{verbatim}
-%\global\let\NAT@bibitem@first@sw\@secondoftwo
-% \end{verbatim}
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{environment}
-%
-% \begin{macro}{write@bibliographystyle}
-% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
-% We wish to delay committing the \cmd\bibliographystyle\ until as late as possible.
-% The journal substyle will define a default bibliography style, and
-% the document's explicit \cmd\bibliographystyle\ command, if any, will override that default.
-%
-% The \cmd\bibstyle\ command is allowed appear quite late in the \file{.aux} file.
-% We now delay the automatic writing of the \cmd\bibstyle\ command to the end of the job.
-%
-% The procedure \cmd\write@bibliographystyle\ tests whether a \cmd\bibliographystyle\ command has
-% already been given.
-% If not, it effectively executes the needed \cmd\bibliographystyle\ command, then neutralizes itself
-% (we only need to do this once per job).
-%
-% If the document lacks explicit \cmd\bibliographystyle\ markup, we execute
-% \cmd\@bibdataout@rev, a hook for \revtex-aware processing.
-% \begin{macrocode}
-\def\write@bibliographystyle{%
- \@ifxundefined\@bibstyle{}{%
- \expandafter\bibliographystyle@latex\expandafter{\@bibstyle}%
- \bibliographystyle@sw{}{\@bibdataout@rev}%
- }%
- \global\let\write@bibliographystyle\relax
-}%
-\AtEndDocument{\write@bibliographystyle}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rtx@@citetp}
-% \begin{macro}{\rtx@citex}
-% \begin{macro}{\super@cite@let}
-% \begin{macro}{\super@cite@end}
-% \begin{macro}{\super@cite@swap}
-% We wish to extend \classname{natbib} to move spaces and citations around
-% a superscript-style citation, imitating Donald Arseneau's \classname{cite} package
-% with the \classoption{super}.
-%
-% The \cmd\rtx@@citetp\ procedure is substituted for \cmd\NAT@@citetp;
-% it then calls the \cmd\rtx@citex\ procedure and implements the features of the
-% \classoption{citeautoscript} class option.
-% In the end, \cmd\@citex\ is called with its customary parameters.
-%
-% The document should be marked up as if citations were \emph{not} superscripted,
-% and then if you select a journal substyle that has superscripted citations, \revtex\ will do its best
-% to alter the formatting of the \cmd\cite s to accomodate superscript style.
-%
-% Only citations set as superscript are affected by this procedure,
-% because we check \cmd\@cite\ against \cmd\NAT@citesuper.
-%
-% Here's a subtle point: when is the argument of \cmd\super@cite@swap\ not the same as the token \cmd\@let@token?
-% Answer: when the latter is \cmd\@sptoken! This case has to be handled separately.
-%
-% Note that whether a punctuation is movable is determined by the definition
-% of a particular control sequence name.
-% A society or journal can alter things: to remove a character from the set,
-% do, say, \cmd\expandafter \cmd\let \cmd\csname \texttt{rtx@automove;} \cmd\endcsname \cmd\relax.
-% To add a character to the set, do, say, \cmd\expandafter \cmd\let \cmd\csname \texttt{rtx@automove;} \cmd\endcsname \cmd\@empty.
-%
-% Implementation note: due to a \TeX\ peculiarity, we have to check for the case
-% where \cmd\@let@token\ is a space token \emph{before} we parse forward.
-% At issue is the corner case where an end of file is at hand. If we
-% were to let \cmd\super@cite@swap\ parse forward, we would encounter a \TeX\ end-of-file
-% error. Note that the test will be true in many distinct cases:
-% the file ends, the next character is a line terminator, the next character is a space.
-% \begin{macrocode}
-\def\rtx@@citetp[#1]{\@ifnextchar[{\rtx@citex[#1]}{\rtx@citex[][#1]}}%
-\def\rtx@citex[#1][#2]#3{%
- \begingroup
- \def\@tempa{[#1][#2]{#3}}%
- \@ifx{\@cite\NAT@citesuper}{%
- \leavevmode
- \skip@\lastskip
- \unskip
- \super@cite@let
- }{%
- \super@cite@end
- }%
-}%
-\def\super@cite@let{%
- \futurelet\@let@token\super@cite@check
-}%
-\def\super@cite@end{%
- \aftergroup\@citex\expandafter\endgroup\@tempa
-}%
-\def\super@cite@check{%
- \@ifx{\@let@token\@sptoken}{%
- \super@cite@end
- }{%
- \super@cite@swap
- }%
-}%
-\long\def\super@cite@swap#1{%
- \expandafter\@ifx\expandafter{\csname rtx@automove#1\endcsname\@empty}{%
- #1%
- \super@cite@let
- }{%
- \super@cite@end
- #1%
- }%
-}%
-\expandafter\let\csname rtx@automove.\endcsname\@empty
-\expandafter\let\csname rtx@automove,\endcsname\@empty
-\expandafter\let\csname rtx@automove:\endcsname\@empty
-\expandafter\let\csname rtx@automove;\endcsname\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% The following must execute only after \classname{natbib} is loaded and has set
-% up its parameters (which it does at \cmd\AtBeginDocument\ time).
-% If superscript citations have been selected, and
-% if the \classoption{citeautoscript} class option has been selected,
-% we patch into \classname{natbib}'s mechanism to migrate punctuation around the
-% citation, as in class \classname{cite} with the \classoption{superscript} option.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \citeautoscript@sw{%
- \@ifx{\@cite\NAT@citesuper}{%
- \let\NAT@@citetp\rtx@@citetp
- }{}%
- }{}%
-}%
-% \end{macrocode}
-%
-% Resolve an incompatability between \classname{natbib} and \classname{listings}.
-% The latter package tests \cmd\chapter (which has now been \cmd\let\ to \cmd\relax\ as a side effect \classname{natbib}'s use of \LaTeX's \cmd\@ifundefined).
-%
-% We couch our fix in such terms that will not be disruptive if \cmd\chapter\ is actually defined at this point.
-%
-% \changes{4.1b}{2008/07/01}{(AO) No longer need to test \cs{chapter} as of \texttt{natbib} version 8.2}
-% \begin{verbatim}
-%\@ifx{\chapter\relax}{\let\chapter\@undefined}{}%
-% \end{verbatim}
-%
-%
-% \subsubsection{\cs{endnote}s and \cs{rtx@bibnote}s}
-%
-% \begin{macro}{\mini@note}
-% \begin{macro}{\save@note}
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% QUERY: how do footnotes get thrown to the bibliography. \cmd\footinbib@sw\ appears to be irrelevant.
-% \begin{macrocode}
-\def\mini@note{\save@note\mini@notes}%Implicit #2
-\def\save@note#1#2{%
- \stepcounter\@mpfn
- \protected@xdef\@thefnmark{\thempfn}%
- \@footnotemark
- \expandafter\g@addto@macro
- \expandafter#1%
- \expandafter{%
- \expandafter \@@footnotetext
- \expandafter {\@thefnmark}{#2}%
- }%
-}%
-\long\def\@@footnotetext#1{\def\@thefnmark{#1}\@footnotetext}%
-\let\mini@notes\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\endnote}
-% A version of footnote that appears in the bibliography, or where \cmd\printendnotes\ appears.
-% \begin{verbatim}
-%\def\@endnote{%
-% \begingroup
-% \aftergroup\@footnotemark
-% \aftergroup\@endnotetext
-% \@ifnextchar[{%
-% \@xendnote
-% }{%
-% \stepcounter{footnote}%
-% \protected@xdef\@tempa{\thefootnote}%
-% \expandafter\@xendnote\expandafter[\the\c@footnote]%
-% }%
-%}%
-% \end{verbatim}
-% \end{macro}
-%
-% \begin{macro}{\@xendnote}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% \begin{verbatim}
-%\def\unused@xendnote[#1]{%
-% \begingroup
-% \c@footnote#1\relax
-% \end{macrocode}
-% New for 4.1
-% \begin{macrocode}
-% \unrestored@protected@xdef\@endnotelabel{Note\thefootnote}%
-% \authoryear@sw{%
-% \unrestored@protected@xdef\@thefnmark{\noexpand\ref{\@endnotelabel}}%
-% }{%
-% \unrestored@protected@xdef\@thefnmark{\@endnotelabel}%
-% }%
-% \end{macrocode}
-% Was:
-% \unrestored@protected@xdef\@thefnmark{endnote\thefootnote}%
-% End 4.1 changes
-% \begin{macrocode}
-% \endgroup
-% \endgroup
-%}%
-%\def\@endnotemark{%
-% \expandafter\cite\expandafter{\@thefnmark}%
-%}%
-% \end{verbatim}
-% \begin{macrocode}
-\def\rev@citemark#1{%
- \expandafter\cite\expandafter{\@thefnmark}%
-}%
-\def\rev@endtext#1{%
- \let\@endnotelabel\@thefnmark
- \@endnotetext
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endnote@ext}
-% \begin{macro}{\bibdata@app}
-% \begin{macro}{\bibdata@ext}
-% The macro \cmd\endnote@ext\ is the file extension for the auxiliary file holding footnotes.
-% The \cmd\bibdata@app\ and \cmd\bibdata@ext\ macros are used to form the name of a
-% Bib\TeX\ database file holding footnotes.
-% \begin{macrocode}
-\def\endnote@ext{.end}%
-\def\bibdata@app{Notes}%
-\def\bibdata@ext{bib}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@endnotetext}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% The procedure \cmd\@endnotetext\ writes a Bib\TeX\ .bib file for the purpose
-% of insering a footnote into the (numbered, unsorted) bibliography.
-%
-% We need to define \cmd\pre@bibdata\ to be
-% \cmd\jobname\cmd\endnote@ext, and we probably should define \cmd\endnote@ext\ to
-% be something like ``Notes.bib''.
-%
-% In each case, the material to be written out requires robustification, provided by \cmd\endnote@relax.
-% The commands \cmd\label, \cmd\index, and \cmd\glossary,
-% which are robustified for \cmd\markright\ and \cmd\addcontentsline,
-% are likewise robustified here.
-%
-% Procedure \cmd\@endnotetext@note\ is the alias for \cmd\@endnotetext\ when the endnotes are to be
-% processed separately from the bibliography (generally true when citations are not sorted).
-% \begin{verbatim}
-%\long\def\unused@endnotetext@note#1{%
-% \@ifxundefined\@endnoteout{%
-% \newwrite\@endnoteout
-% \gdef\endnote@stream{\jobname\endnote@ext}%
-% \immediate\openout\@endnoteout\endnote@stream\relax
-% }{}%
-% \begingroup
-% \endnote@relax
-% \immediate\write\@endnoteout{\string\@doendnote{\@endnotelabel}{#1}}%
-% \endgroup
-%}%
-% \end{verbatim}
-%
-% \cmd\@doendnote\ is obsolete.
-% \begin{verbatim}
-%\def\@doendnote#1#2{\bibitem{#1}#2}%
-% \end{verbatim}
-%
-% \changes{4.1o}{2010/02/05}{(AO, 579) Endnote shall comprise their own Bib\TeX\ entry type: @FOOTNOTE.}
-% Procedure \cmd\@endnotetext\ is the operative procedure\ when the endnotes are to be
-% collated in with the other references, typically true when numerical citations are being used.
-% The technique involves writing a .bib file (\cmd\@bibdataout) with each endnote typed as
-% a \texttt{@FOOTNOTE} entry.
-%
-% Timing note: doing \cmd\openout\ should be deferred until the beginning of the document,
-% as is done here. This allows one to make a format (\filename{.fmt}) file out of this class.
-% \begin{macrocode}
-\long\def\@endnotetext#1{%
- \begingroup
- \endnote@relax
- \immediate\write\@bibdataout{%
- @FOOTNOTE{%
- \@endnotelabel,%
-% \end{macrocode}
-% The \texttt{key} field is recommended in cases where there is no author (see \filename{btxdoc}).
-% \begin{macrocode}
- key="\@endnotelabel",%
-% \end{macrocode}
-% The \texttt{note} field is simply the content of the footnote.
-% \begin{macrocode}
- note="#1"%
- }%
- }%
- \endgroup
-}%
-\newwrite\@bibdataout
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endnote@relax}
-% At \cmd\AtBeginDocument\ time, we open the job's \filename{.bib} file.
-%
-% Procedure \cmd\endnote@relax\ robustifies commands that ought not to be expanded when
-% the endnote is written out.
-% Note the similarity between \cmd\endnote@relax\ and \cmd\protected@write.
-% \begin{macrocode}
-\def\endnote@relax{%
- \let\label\relax \let\index\relax \let\glossary\relax
- \let\cite \relax \let\ref \relax \let\pageref \relax
- \let\( \relax \let\) \relax \let\\ \relax
- \let~\relax
-% \end{macrocode}
-% \begin{verbatim}
-%\let\protect\noexpand
-% \end{verbatim}
-% \begin{macrocode}
- \let \protect \@unexpandable@protect
- \newlinechar`\^^M%
-% \end{macrocode}
-% \begin{verbatim}
-%\newlinechar`\ %
-% \end{verbatim}
-% \begin{macrocode}
- \let\begin\relax \let\end\relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@bibdataout@init}
-% \begin{macro}{\@bibdataout@aps}
-% \changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
-% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
-% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
-%\changes{4.2b}{2018/12/26}{(MD) Improve control over display of e-print ids in bibliography.}%
-% At \cmd\AtBeginDocument\ time, we open the job's \filename{.bib} file.
-% The hook is available for use by a society to place its own @CONTROL record in the \cmd\@bibdataout\ stream.
-% \begin{macrocode}
-\appdef\class@documenthook{\@bibdataout@init}%
-\def\@bibdataout@init{%
- \immediate\openout\@bibdataout\pre@bibdata.\bibdata@ext\relax
-}%
-\def\@bibdataout@rev{%
- \immediate\write\@bibdataout{%
-% \end{macrocode}
-% The entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
-% The citation key (REVTEX42Control) is effectively a version number,
-% which the \filename{.bst} can use to interpret the bib entry.
-% \begin{macrocode}
- @CONTROL{%
- REVTEX42Control%
-% \end{macrocode}
-% Say if we want the \texttt{eprint} field disabled. Otherwise accept the default of the \filename{.bst}.
-% \begin{macrocode}
- \eprint@enable@sw{}{,eprint="1"}%
- }%
- }%
-% \end{macrocode}
-% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
-% \begin{macrocode}
- \if@filesw
- \immediate\write\@auxout{\string\citation{REVTEX42Control}}%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\printendnotes}
-% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-% We have removed the endnotes facility from REVTeX, so the \cmd\printendnotes\ command now does nothing.
-%
-% Moving footnotes to the bibliogrphy is now accomplished through
-% the automatic generation of a job BiB\TeX\ database (called \cmd\pre@bibdata) containing the footnotes.
-% \begin{macrocode}
-\def\printendnotes{%
- \class@warn{The \string\printendnotes\space command no longer serves any function. Please remove it from your document.}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@endnotesinbib}
-% \begin{macro}{\@endnotesinbibliography}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% We define a function \cmd\@endnotesinbib,
-% and a variant \cmd\@endnotesinbibliography.
-% The former is invoked at the start of
-% the end processing for \enve{thebibliography};
-% the latter is a synonym.
-%
-% The procedure typesets the footnotes that are to
-% appear in the bibliography; the default is to
-% simply arrange for the footnote counter to be
-% reset at the start of the document.
-%
-% Note that this code make the assumption that
-% the counter used in \env{thebibliography} is \cmd\c@NAT@ctr.
-% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-%
-% Here is the sole place where \cmd\footinbib@sw\ has an effect, other code simple assigning its value.
-% If it is false, or \cmd\authoryear@sw\ is true, then footnotes are handled by the default mechanism.
-% \begin{macrocode}
-\def\make@footnote@endnote{%
- \footinbib@sw{%
- \authoryear@sw{}{%
- \ltx@footnote@push
- \def\thempfn{Note\thefootnote}%
- \let\ltx@footmark\rev@citemark
- \let\ltx@foottext\rev@endtext
-% \end{macrocode}
-% The endnotes facility has been removed.
-% Also, there is no need to queue up \cmd\auto@bib\ here, since it is always queued up elsewhere.
-% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-% \begin{verbatim}
-% \appdef\class@enddocumenthook{\auto@bib}%
-% \let\printendnotes\relax
-% \end{verbatim}
-% \begin{macrocode}
- }%
- }{}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ltx@footnote@push{%
- \let\ltx@footmark@latex\ltx@footmark
- \let\ltx@foottext@latex\ltx@foottext
- \let\thempfn@latex\thempfn
- \def\ltx@footnote@pop{%
- \let\ltx@footmark\ltx@footmark@latex
- \let\ltx@foottext\ltx@foottext@latex
- \let\thempfn\thempfn@latex
- }%
-}%
-% \end{macrocode}
-%
-% The switchover to setting footnotes in the bibliography
-% changes the meaning of \cmd\footnote\ and
-% substitutes the synonym for \cmd\@endnotesinbib.
-%
-% We arrange for the procedure \cmd\make@footnote@endnote\ to be executed
-% at \cmd\class@documenthook\ time (we mustn't do this earlier because
-% the meaning of \cmd\@footnotemark\ must not be changed before then,
-% for the sake of \file{ltxutil.dtx}).
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \make@footnote@endnote
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\auto@bib}
-% \begin{macro}{\auto@bib@empty}
-% \begin{macro}{\test@bbl@sw}
-% \begin{macro}{\bibitem@set}
-% \begin{macro}{\auto@bib@innerbib}
-% \begin{macro}{\thebibliography@nogroup}
-% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
-% \changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
-% Under some circumstances, we must typeset the bibliography automatically.
-% If the document requires footnotes to be set in the bibliography (effectively, class option \texttt{footinbib}),
-% or that frontmatter footnotes be set in the bibliography (effectively, class option \texttt{bibnotes}),
-% but contains no explicit \cmd\bibliography\ statement.
-%
-% Note that this facility is not able to work more than once per document.
-% If multiple bibliographys are required (e.g., per article), it will be the responsibility of the journal style
-% to restore \cmd\auto@bib\ to its original meaning so it can be re-invoked.
-%
-% In procedure \cmd\auto@bib, we first test for the presence of frontmatter footnotes deferred to the bibliography.
-% If none, we further test for the presence of \cmd\bibitem\ commands in the job's \filename{.bbl} file.
-% If either condition is met, we ask for a bibliography.
-% We know that the document itself lacks a \cmd\bibliography\ statement,
-% so we know the argument of the \cmd\bibliography\ that we will issue.
-% \begin{macrocode}
-\def\auto@bib{%
- \@ifx@empty\@FMN@list{%
- \footinbib@sw{%
- \@ifnum{\csname c@\@mpfn\endcsname>\z@}{%
- \true@sw
- }{%
- \test@bbl@sw
- }%
- }{%
- \test@bbl@sw
- }%
- }{%
- \true@sw
- }%
- {%
- \bibliography{}%
- }{}%
-}%
-\def\auto@bib@empty{%
- \let\auto@bib\@empty
-}%
-% \end{macrocode}
-% Testing the \filename{.bbl} file involves defanging all expected commands
-% and processing that file inside a box register (that will be simply discarded).
-% We provide a new meaning for the \cmd\bibitem\ command: it queues a Boolean.
-% \begin{macrocode}
-\def\test@bbl@sw{%
- \setbox\z@\vbox\bgroup
- \let\providecommand\providecommand@j@nk
- \let\bibfield\@gobbletwo
- \let\bibinfo\@gobbletwo
- \let\translation\@gobble
- \let\BibitemOpen\@empty
- \let\bibitemStop\@empty
- \let\bibitemNoStop\@empty
- \let\EOS\@empty
- \let\BibitemShut\@gobble
- \let\bibAnnoteFile\@gobbletwo
- \let\bibAnnote\@gobblethree
- \let\textbf\@gobble
- \let\emph\@gobble
- \@booleanfalse\bibitem@sw
- \let\bibitem\bibitem@set
- \auto@bib@innerbib
- \bibitem@sw{\aftergroup\true@sw}{\aftergroup\false@sw}%
- \egroup
-}%
-% \end{macrocode}
-% The \cmd\bibitem@set\ is an alias for \cmd\bibitem\ for the purpose of detecting a non-trivial bibliography.
-% \begin{macrocode}
-\newcommand\bibitem@set[1][]{%
- \bibitem@sw{}{%
- \@booleantrue\bibitem@sw
- \aftergroup\@booleantrue\aftergroup\bibitem@sw
- }%
-}%
-% \end{macrocode}
-% The \cmd\auto@bib@innerbib\ procedure reads in the \filename{.bbl} file (if it exists)
-% within a context where its \env{thebibliography} environment does nothing, not even establishing a group.
-% \begin{macrocode}
-\def\auto@bib@innerbib{%
- \begingroup
- \let@environment{thebibliography}{thebibliography@nogroup}%
- \bibliography{}%
- \endgroup
-}%
-% \end{macrocode}
-% Environment \env{thebibliography@nogroup} is an alias of the \env{thebibliography} environment that cancels itself.
-% It assumes that it is called within a \env{thebibliography} environment.
-% \begin{macrocode}
-\def\thebibliography@nogroup#1{%
- \endgroup
- \def\@currenvir{thebibliography}%
-}%
-\def\endthebibliography@nogroup{\begingroup}%
-% \end{macrocode}
-% The following should be part of \filename{ltxutil}.
-% \begin{macrocode}
-\long\def \@gobblethree #1#2#3{}%
-\def\providecommand@j@nk#1[#2]{%
- \@ifnum{#2=\z@}{\def\j@nk}{%
- \@ifnum{#2=\@ne}{\def\j@nk##1}{%
- \@ifnum{#2=\tw@}{\def\j@nk##1##2}{%
- \@ifnum{#2=\thr@@}{\def\j@nk##1##2##3}{%
- }%
- }%
- }%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \section{Initial setup}
-%
-% The standard LaTeX document classes execute certain commands
-% that are best deferred until \cmd\class@documenthook\ time.
-% Here, we effectively split \cmd\pagenumbering\ into two halves,
-% with a default definition for \cmd\thepage
-% and an initialization of \cmd\c@page\ at \cmd\class@documenthook\ time.
-%
-% The meaning of \cmd\thepage\ can be overridden by society, journal, or
-% anywhere within the document pramble, and the counter itself will be
-% preset at the beginning of the document.
-% \begin{macrocode}
-\def\thepage{\@arabic\c@page}%
-% \end{macrocode}
-% \changes{4.0b}{1999/06/20}{Defer assignment until \cs{AtBeginDocument} time.}
-% Note that this code is executed at \cmd\setup@hook\ time
-% to allow for the possibility of overrides by packages like \classname{geometry}.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \tabbingsep \labelsep
- \leftmargin\leftmargini
- \labelwidth\leftmargin\advance\labelwidth-\labelsep
- \let\@listi\@listI
- \@listi
-}%
-% \begin{macrocode}
-%
-% We ensure that the ``environment'' component mark (implemented by \file{ltxgrid.dtx})
-% is initialized properly (via a hook, itself defined via \file{ltxutil.dtx}).
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \global\c@page\@ne
- \def\curr@envir{document}%
- \mark@envir{\curr@envir}%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\open@onecolumn}%
-% \begin{macro}{\open@column@two}%
-% \changes{4.0c}{1999/11/13}{Grid changes with ltxgrid}
-% \changes{4.0d}{2000/04/10}{Also alter how lists get indented.}
-% When setting the column grid, we have to override the procedure
-% for formatting lists.
-% Because \cmd\twocolumngrid\ requires rebalancing columns at some points,
-% typesetting must employ only the manipulation of
-% \cmd\leftskip\ and \cmd\rightskip, and must avoid the use of
-% \cmd\moveleft, \cmd\moveright, and \cmd\parshape.
-%
-% It is one of the stranger features of \TeX\ that these two separate
-% mechanisms exist. The latter three have the effect of adding things to the
-% Main Vertical List that cannot be removed and later added back with all their
-% properties intact.
-%
-% In detail, \cmd\moveleft, say, adds a box to the MVL with
-% its reference point shifted horizontally by some amount relative to the
-% reference point of the enclosing list. If that box is removed from the
-% MVL (via a \cmd\lastbox\ operation in the output routine), and later
-% thrown back to the MVL, the shift of the box will have been ``forgotten'' by \TeX.
-% This is a bug, but not one ``acceptible to D. E. Knuth'', so it will never be fixed.
-%
-% \begin{macrocode}
-\def\open@onecolumn{%
- \open@column@one\@ne
- \set@colht
- \@floatplacement
- \@dblfloatplacement
-}%
-\def\open@twocolumn{%
- \open@column@mlt\tw@
- \set@colht
- \@floatplacement
- \@dblfloatplacement
- \sloppy
- \let\set@listindent\set@listindent@
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \section{\cs{appendix}}
-%
-% \begin{macrocode}
-%\newif\ifappendixon
-% \end{macrocode}
-% Note that, within appendices,
-% equations are numbered within sections (appendices).
-% \begin{macrocode}
-\def\appendix{%
- \par
-%\appendixontrue
- \setcounter{section}\z@
- \setcounter{subsection}\z@
- \setcounter{subsubsection}\z@
- \def\thesubsection{\arabic{subsection}}%
- \def\thesubsubsection{\alph{subsubsection}}%
- \@addtoreset{equation}{section}%
- \def\theequation@prefix{\thesection}%
- \addtocontents{toc}{\protect\appendix}%
- \@ifstar{%
- \def\thesection{\unskip}%
- \def\theequation@prefix{A.}%
- }{%
- \def\thesection{\Alph{section}}%
- }%
-}%
-% \end{macrocode}
-%
-% \section{Changing the page grid}
-% \changes{4.0b}{1999/06/20}{Define three separate environments, defer assignment to \cs{AtBeginDocument} time.}
-%
-% \subsection{Avoiding Grid Changes}%
-%
-% In preprint styles, ``wide text'' is a no-op, and the title page
-% processing involves no grid change.
-%
-% \begin{macro}{\title@column}%
-% \begin{macro}{\close@column}%
-% Provide default meanings for \cmd\title@column\ and \cmd\close@column,
-% in case they were never defined.
-% Note that the society or journal substyle may define
-% \cmd\title@column\ or \cmd\close@column: this code will not override.
-% \begin{macrocode}
-\def\title@column#1{%
- \minipagefootnote@init
- #1%
- \minipagefootnote@foot
-}%
-\def\close@column{%
- \newpage
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Galley Style: Margin Changes}%
-% A variant of preprint processing. Emulate journal appearance somewhat.
-%
-% \begin{environment}{widetext@galley}
-% DPC: We're in galley style so do a lob sided display environment.
-%
-% QUERY: How can we be sure that we are in galley style?
-% ANSWER: as noted elsewhere, require that both \cmd\twocolumn@sw\ and \cmd\preprintsty@sw\ be false.
-% \begin{macrocode}
-\def\galley@outdent{\rightmargin-\columnwidth\advance\rightmargin-\columnsep}%
-\let\widetext@outdent\@empty
-\newenvironment{widetext@galley}{%
- \list{}{%
- \topsep \z@skip
- \listparindent \parindent
- \itemindent \parindent
- \leftmargin \z@
- \parsep \z@\@plus\p@
- \widetext@outdent
- \relax
- }%
- \item\relax
-}{
- \endlist
-}%
-% \end{macrocode}
-% \end{environment}
-%
-%
-% \subsection{Grid Changing Via \classname{ltxgrid}}%
-%
-% In case \classoption{twocolumngrid} has been invoked,
-% switch column grid using the column grid-changing commands.
-% Supply stub definitions of those commands here.
-% \changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-%
-% \begin{macro}{\title@column@grid}%
-% \begin{macro}{\close@column@grid}%
-% The title block always starts at the top of a new page.
-% \changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-%
-% Note that, for the procedure \cmd\close@column@grid,
-% we balance columns by switching to the one-column page grid.
-% \begin{macrocode}
-\def\title@column@grid#1{%
- \minipagefootnote@init
- \onecolumngrid
- \begingroup
- \let\@footnotetext\frontmatter@footnotetext
-%<ignore> \let\set@footnotewidth\set@footnotewidth@two
- \ltx@no@footnote
- #1%
- \endgroup
- \twocolumngrid
- \minipagefootnote@foot
-}%
-\def\close@column@grid{%
- \balancelastpage@sw{%
- \onecolumngrid
-%<ignore> \twocolumngrid
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{environment}{widetext@grid}
-% \changes{4.0c}{1999/11/13}{grid changes via ltxgrid procedures}
-% \changes{4.0e}{2000/11/21}{adornments above and below.}
-% \changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
-% We slip into the one-column page grid
-% within the scope of this environment.
-%
-% Note that we set adornments above and below the \env{widettext}.
-% These are set as leaders, so they will disappear at a page break.
-% \changes{4.1n}{2010/01/02}{(AO) fine-tune spacing above and below widetext}%
-% \begin{macrocode}
-\newenvironment{widetext@grid}{%
- \par\ignorespaces
- \setbox\widetext@top\vbox{%
-%<ignore> \vskip15\p@
- \hb@xt@\hsize{%
- \leaders\hrule\hfil
- \vrule\@height6\p@
- }%
-%<ignore> \vskip6\p@
- }%
- \setbox\widetext@bot\hb@xt@\hsize{%
- \vrule\@depth6\p@
- \leaders\hrule\hfil
- }%
- \onecolumngrid
- \vskip10\p@
- \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top
- \cleaders\box\widetext@top\vskip\dimen@
-%<ignore> \let\set@footnotewidth\set@footnotewidth@two
- \vskip6\p@
- \prep@math@patch
-}{%
- \par
- \vskip6\p@
- \setbox\widetext@bot\vbox{%
- \hb@xt@\hsize{\hfil\box\widetext@bot}%
-%<ignore> \vskip14\p@
- }%
- \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot
- \cleaders\box\widetext@bot\vskip\dimen@
- \vskip8.5\p@
- \twocolumngrid\global\@ignoretrue
- \@endpetrue
-}%
-\newbox\widetext@top
-\newbox\widetext@bot
-% \end{macrocode}
-% \end{environment}
-%
-%
-% Decide, finally, how the page grid is to be manipulated.
-% \begin{macrocode}
-\def\set@page@grid{%
- \twocolumn@sw{%
-% \end{macrocode}
-% The following two assignments determine what procedures are to be executed when
-% the footnote set width is calculated, and how footnotes are to be composed at the bottom of the page.
-% A society or journal wishing to do otherwise will override this code.
-% \begin{macrocode}
- \let\set@footnotewidth\set@footnotewidth@two
- \let\compose@footnotes\compose@footnotes@two
- \let@environment{widetext}{widetext@grid}%
- \let\title@column\title@column@grid
- \let\close@column\close@column@grid
- }{%
- \let@environment{widetext}{widetext@galley}%
- \preprintsty@sw{%
-% \end{macrocode}
-% Change the page grid not at all.
-% \begin{macrocode}
- }{%
-% \end{macrocode}
-% If we are galley style, change the page margin only.
-% \begin{macrocode}
- \galley@sw{%
- \let\widetext@outdent\galley@outdent
- }{}%
- }%
- }%
-}%
-\appdef\setup@hook{\set@page@grid}%
-% \end{macrocode}
-%
-% \section{Old font commands}
-%
-% \begin{macrocode}
-\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
-\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
-\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
-\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
-\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
-\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
-\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
-\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
-% \end{macrocode}
-%
-% \section{English-Language Texts}
-% As this class is just for English language journals, we
-% could hardwire these texts,
-% but to make it easier to use this as a
-% basis for the code for similar journal styles, separate out all the
-% fixed text strings into babel-style macros of the form
-% |\|\ldots|name|
-%
-% Note: for babel compatability, use version 1999/05/05 v3.6x or later.
-%
-% Some of these might need changing in the society-specific code.
-%
-% \begin{macro}{\today}
-% Procedure \cmd\today\ is used in the article class, but not in
-% this document class.
-% \begin{macrocode}
-\def\today{\ifcase\month\or
- January\or February\or March\or April\or May\or June\or
- July\or August\or September\or October\or November\or December\fi
- \space\number\day, \number\year}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\notesname}
-% Text entity \cmd\notesname\ had been used in \cmd\printendnotes.
-% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
-% However, we have removed the endnotes facility from REVTeX.
-%
-% \begin{verbatim}
-%\def\notesname{Notes}
-% \end{verbatim}
-% \end{macro}
-%
-% \begin{macro}{\partname}
-% Text entity \cmd\partname\ is used in \cmd\@part.
-% \begin{macrocode}
-\def\partname{Part}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tocname}
-% Text entity \cmd\tocname\ is used in \cmd\tableofcontents,
-% as defined in the standard \LaTeX\ book class.
-% \begin{macrocode}
-\def\tocname{Contents}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lofname}
-% Text entity \cmd\lofname\ is used in \cmd\listoffigures,
-% as defined in the standard \LaTeX\ book class.
-% \begin{macrocode}
-\def\lofname{List of Figures}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lotname}
-% Text entity \cmd\lotname\ is used in \cmd\listoftables,
-% as defined in the standard \LaTeX\ book class.
-% \begin{macrocode}
-\def\lotname{List of Tables}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\refname}
-% Text entity \cmd\refname\ is used in \env{thebibliography}.
-% \begin{macrocode}
-\def\refname{References}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\indexname}
-% Text entity \cmd\indexname\ is used in \env{theindex},
-% as defined in the standard \LaTeX\ book class.
-% \begin{macrocode}
-\def\indexname{Index}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\figurename}
-% \changes{4.0b}{1999/06/20}{Added localization of \cs{figuresname}}
-% Text entity \cmd\figurename\ is used in \env{figure},
-% \cmd\figuresname\ in \cmd\printfigures.
-% \begin{macrocode}
-\def\figurename{FIG.}
-\def\figuresname{Figures}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tablename}
-% \changes{4.0b}{1999/06/20}{Added localization of \cs{tablesname}}
-% Text entity \cmd\tablename\ is used in \env{table},
-% \cmd\tablesname\ in \cmd\printtables.
-% \begin{macrocode}
-\def\tablename{TABLE}
-\def\tablesname{Tables}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\abstractname}
-% Text entity \cmd\abstractname\ is used in \env{abstract}.
-% \begin{macrocode}
-\def\abstractname{Abstract}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\appendixesname}
-% \begin{macro}{\appendixname}
-% Text entity \cmd\appendixesname\ is used in TOC.
-% \begin{macrocode}
-\def\appendixesname{Appendixes}%
-\def\appendixname{Appendix}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\acknowledgmentsname}
-% Text entity \cmd\acknowledgmentsname\ is used in \env{acknowledgments}.
-% \begin{macrocode}
-\def\acknowledgmentsname{Acknowledgments}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\journalname}
-% This should be set by the society journal options, eg `pra'.
-% \begin{macrocode}
-\def\journalname{??}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\copyrightname}
-% Default layout does not assign copyright, but a journal that wants
-% to might use this.
-% \begin{macrocode}
-\def\copyrightname{??}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\andname}
-% The text string ``and'' for use in author lists.
-% \begin{macrocode}
-\def\andname{and}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@pacs@name}
-% \begin{macro}{\@keys@name}
-% The text string prepended to PACS numbers, resp. to keywords.
-% \begin{macrocode}
-\def\@pacs@name{PACS numbers: }%
-\def\@keys@name{Keywords: }%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ppname}
-% The text string ``pp'' for use in page ranges.
-% \begin{macrocode}
-\def\ppname{pp}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\numbername}
-% The text string ``number'' for use in article reference.
-% \begin{macrocode}
-\def\numbername{number}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\volumename}
-% The text string ``volume'' for use in article reference.
-% \begin{macrocode}
-\def\volumename{volume}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Dated@name}
-% \begin{macro}{\Received@name}
-% \begin{macro}{\Revised@name}
-% \begin{macro}{\Accepted@name}
-% \begin{macro}{\Published@name}
-% These texts 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}
-%
-% \section{Legacy Commands}
-% We define some commands left over from version 3.1, or give default meanings.
-% Some definitions can be overridden
-% in the document preamble or in included packages.
-%
-% Note on the namespace: command names like \cmd\REV@\emph{name} are used here,
-% because it is not clear that any of this code is generally useful.
-% \begin{macrocode}
-\def\address{\replace@command\address\affiliation}%
-\def\altaddress{\replace@command\altaddress\altaffiliation}%
-\newenvironment{references}{%
- \class@warn@end{The references environment is not supported; use thebibliography instead.}
- \gdef\references{\thebibliography{}}\references
-}{%
- \endthebibliography
-}%
-\def\draft{%
- \class@warn@end{Command \string\draft\space is obsolete;^^JInvoke option draft instead.}%
- \@booleantrue\draft@sw
-}%
-\def\tighten{%
- \class@warn@end{Command \string\tighten\space is obsolete;^^JInvoke option tightenlines instead.}%
- \@booleantrue\tightenlines@sw
-}%
-\def\tableline{%
- \noalign{%
- \class@warn@end{Command \string\tableline\space is obsolete;^^JUse \string\colrule\space instead.}%
- \global\let\tableline\colrule
- }%
- \tableline
-}%
-\def\case{\replace@command\case\frac}%
-\def\slantfrac{\replace@command\slantfrac\frac}%
-\def\tablenote{\replace@command\tablenote\footnote}%
-\def\tablenotemark{\replace@command\tablenotemark\footnotemark}%
-\def\tablenotetext{\replace@command\tablenotetext\footnotetext}%
-% Lose the following definition:
-\DeclareRobustCommand\REV@text[1]{%
- \relax
- \ifmmode
- \mathchoice
- {\hbox{{\everymath{\displaystyle }#1}}}%
- {\hbox{{\everymath{\textstyle }#1}}}%
- {\hbox{{\everymath{\scriptstyle }\let\f@size\sf@size\selectfont#1}}}%
- {\hbox{{\everymath{\scriptscriptstyle}\let\f@size\ssf@size\selectfont#1}}}%
- \glb@settings
- \else
- \mbox{#1}%
- \fi
-}%
-% Lose the following definition:
-\DeclareRobustCommand\REV@bbox[1]{%
- \relax
- \ifmmode
- \mathchoice
- {\hbox{{\everymath{\displaystyle }\boldmath$#1$}}}%
- {\hbox{{\everymath{\textstyle }\boldmath$#1$}}}%
- {\hbox{{\everymath{\scriptstyle }\boldmath$#1$}}}%
- {\hbox{{\everymath{\scriptscriptstyle}\boldmath$#1$}}}%
- \glb@settings
- \else
- \mbox{#1}%
- \fi
-}%
-\DeclareRobustCommand\REV@bm[1]{%
- \class@warn@end{To use \string\bm, please load the bm package!}%
- \global\let\bm\relax
-}%
-\def\FL{\obsolete@command\FL}%
-\def\FR{\obsolete@command\FR}%
-\def\narrowtext{\obsolete@command\narrowtext}%
-\def\mediumtext{\obsolete@command\mediumtext}%
-\newenvironment{quasitable}{%
- \let@environment{tabular}{longtable}%
-}{%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\text}
-% \begin{macro}{\bm}
-% \begin{macro}{\bibinfo}
-% \begin{macro}{\eprint}
-% \begin{macro}{\url}
-%
-% If not otherwise defined, give default meanings to certain commands.
-% \changes{4.0d}{2000/04/10}{eprint takes an optional argument, syntactical only in this case.}
-%FIXME: \cmd\bibinfo?
-% \begin{macrocode}
-\let\text\REV@text
-\let\bm\REV@bm
-\appdef\setup@hook{%
- \providecommand\bibinfo[2]{#2}%
- \providecommand\eprint[2][]{#2}%
-%\providecommand\url[1]{#1}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bbox}
-%
-% \begin{macrocode}
-\def\bbox#1{%
- \class@warn@end{\string\bbox\space is obsolete,^^Jload the bm package and use \string\bm\space instead.}%
- \global\let\bbox\relax
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\mathletters}
-%
-% \begin{macrocode}
-\newenvironment{mathletters}{%
- \class@warn@end{Environment {mathletters} is obsolete;^^Jload the amsmath package and use {subequations}!}%
- \global\let\mathletters\@empty
-}{%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\eqnum}
-%
-% \begin{macrocode}
-\def\eqnum#1{%
- \class@warn@end{\string\eqnum\space is obsolete, load the amsmath package and use \string\tag!}%
- \global\let\eqnum\@gobble
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% We read in the symbol definitions.
-% \begin{macrocode}
-\appdef\rtx@require@packages{%
- \RequirePackage{revsymb4-2}%
-}%
-\appdef\class@documenthook{\revsymb@inithook}%
-% \end{macrocode}
-%
-%
-% \section{Corrected Indentation for \texttt{tableofcontents}}
-% \changes{4.2a}{2014/12/31}{(MD, Aptara) Make titles in bibliography default, prb style to follow other Phys. Rev. journals, add a unified physrev option as well as prx, prapplied, prmaterials, prfluids, prab, and prper options. Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
-%
-% Corrected indentation for \texttt{tableofcontents}, when appearing with \texttt{listoffigure} or \texttt{listoftable}.
-%
-% \begin{macrocode}
-%%
-\def\@startflt#1{%
- \begingroup
- %\toc@pre
- \makeatletter
- \@input{\jobname.#1}%
- \if@filesw
- \expandafter\newwrite\csname tf@#1\endcsname
- \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
- \fi
- \@nobreakfalse
- %\toc@post
- \endgroup
-}%
-\def\att@TOC{toc}%
-\def\print@toc#1{%
- \begingroup
- \expandafter\section
- \expandafter*%
- \expandafter{%
- \csname#1name\endcsname
- }%
- \let\appendix\appendix@toc
- \def\tempa{#1}%
- \ifx\tempa\att@TOC%%
- \@starttoc{#1}%
- \else%%
- \@startflt{#1}%%
- \fi%%
- \endgroup
-}%
-%%
-% \end{macrocode}
-%
-%
-% \section{Patches for lineno.sty}
-%
-% The \classname{lineno} package detects the case where the package has been loaded
-% and the document invokes \cmd\linelabel, but the \cmd\linenumbers\ command has not been
-% issued: it treats this case as an error.
-%
-% It is wrong for validity of document syntax to be dependent upon package semantics:
-% we make the condition a warning rather than an error.
-%
-% \begin{macrocode}
-\def\@LN@LLerror@org{%
- \PackageError{lineno}{%
- \string\linelabel\space without \string\linenumbers
- }{%
- Just see documentation. (New feature v4.11)%
- }%
- \@gobble
-}%
-\def\@LN@LLerror@ltx{%
- \PackageWarning{lineno}{%
- To make the \string\linelabel\space command work, you must issue the \string\linenumbers\ command
- }%
- \@gobble
-}%
-% \end{macrocode}
-%
-% If appropriate, enable line numbering within the abstract.
-%
-% This mechanism applies generally:
-% Create the box in a context in which the meaning of \cmd\par\ has been patched by \classname{lineno},
-% then \cmd\unvbox\ the box in a context where \cmd\set@linepenalties\ has been executed, and
-% follow up with \cmd\@linenumberpar, which forces a visit to the output routine just there.
-% Note that here, we have to de-fang \cmd\@LN@parpgbrk, which would otherwise causes the appearance
-% of a box with depth -1000 points. Go figure.
-% \begin{macrocode}
-\appdef\class@documenthook{%
- \@ifx{\@LN@LLerror\@LN@LLerror@org}{%
- \class@info{Overriding \string\@LN@LLerror}%
- \let\@LN@LLerror\@LN@LLerror@ltx
- }{}%
- \@ifpackageloaded{lineno}{%
- \@ifxundefined{\set@linepenalties}{}{%
- \def\prep@absbox{\set@linepenalties}%
- \def\post@absbox{\let\@LN@parpgbrk\@empty\@linenumberpar}%
- }%
- }{}%
-}%
-% \end{macrocode}
-%
-% One may well ask: how to obtain line numbering within an alignment in a float?
-% This objective, along with line numbering within footnotes, would require extraordinary measures.
-% The float would have to be thrown onto the MVL in order to acquire its line numbers, but
-% that fragment of MVL would then have to be protected from being shipped out.
-% The question of how to coordinate those lines' numbers with those of lines in the MVL would
-% also require dealing with.
-%
-% \section{Endgame for the Document Class}
-%
-% We provide for a ``job macro package'' that can override
-% definitions and assignments made by the class or any other packages it loads.
-%
-% \subsection{Job Macro Package}
-% You can create a ``job macro package'' for your document
-% that will be read in automatically every time
-% your document is processed.
-% Thus, if your job is a file called \file{myarticle.tex},
-% then the file \file{myarticle.rty} will be read in
-% just the same as if you had placed a
-% \cmd\usepackage|{myarticle.rty}| statement
-% immediately following your \cmd\documentclass\ statement.
-%
-% Within your \file{.rty} file,
-% you can define and use control sequence names that use the |@| character
-% and you can override any of the definitions or assignments made
-% by the \revtex\ document class or the selected journal substyle.
-% That is, you have the power to really mess things up badly.
-%
-% If you choose to have a job macro package, you are well
-% advised to read the \LaTeX\ guide to document classes,
-% \file{clsguide.tex} or read up on the subject
-% in a book like the \LaTeX\ Companion.
-%
-% The file \file{template.rty} contains a template for
-% creating your own job macro package.
-%
-% \begin{macrocode}
-\appdef\rtx@require@packages{%
- \InputIfFileExists{\jobname.rty}{}{}%
-}%
-% \end{macrocode}
-%
-% \subsection{Endgame Processing for the Document Class}
-%
-% The remaining steps in processing the document class involve
-% determining the needed society, journal, and pointsize from
-% the document's class options and inputting the needed files or
-% executing the indicated procedures.
-%
-% Note that the society file is expected to declare options that will
-% allow us to determine the journal involved, and the society and journal
-% themselves determine the which pointsize options are declared, along with
-% their meanings.
-%
-% Note also that required packages are read in only after the document options
-% have been processed, because the latter can affect the former.
-%
-% Finally, the setup code is executed: this is code that depends on the
-% meanings of the switches we define and on the code within the packages we load.
-%
-% Note that there are other hooks in use: \cmd\document@inithook, which is
-% executed right at the beginning of the document, and \cmd\class@documenthook,
-% which serves as a vehicle for any \cmd\AtBeginDocument\ code we might wish to
-% execute.
-%
-%FIXME: use \cmd\class@documenthook\ only for things that bear on the MVL;
-% use \cmd\document@inithook\ for all patches to procedures defined within the preamble.
-%
-% Remember that \classname{natbib} changes its state at \cmd\AtBeginDocument\ time,
-% so we have to install our own code at a later point in the processing.
-%
-% We determine the proper \cmd\@society\ by examining the document's class options.
-% \begin{macrocode}
-\@parse@class@options@society
-% \end{macrocode}
-%
-% Then, we input the society's substyle
-% (which may in turn lead to loading a journal substyle or a pointsize substyle).
-% The substyle should not assume the value of any class option:
-% instead, it should install code into \cmd\setup@hook.
-% \begin{macrocode}
-\@process@society{aps}%
-% \end{macrocode}
-%
-% Now that the society has defined the class options relating to journals,
-% and has defined \cmd\@journal@default, we can process the journal substyle.
-% We parse the options for one that sets \cmd\@journal.
-% \begin{macrocode}
-\@parse@class@options@\@journal
-% \end{macrocode}
-% And we process the journal.
-% Note that \emph{it is an error} for a society file to fail to define
-% \cmd\@journal@default.
-%
-% \begin{macrocode}
-\expandafter\@process@journal\expandafter{\@journal@default}%
-% \end{macrocode}
-%
-% Now that the society and journal have finished defining any options relating to
-% point size, we process the class options for any that set \cmd\@pointsize.
-% \begin{macrocode}
-\@parse@class@options@\@pointsize
-% \end{macrocode}
-% And we process the pointsize.
-% Note that it is an error for the society and journal to leave \cmd\@pointsize@default\
-% undefined at this point, however, the journal may have overriden the assignment of the society.
-%
-% \begin{macrocode}
-\expandafter\@process@pointsize\expandafter{\@pointsize@default}%
-% \end{macrocode}
-%
-% Next, we process the class options for once and all.
-% Doing so sets values for some of the Booleans that were introduced along with
-% the \cmd\DeclareOption\ statements above.
-%
-%CHANGE: We process the options in the order declared in the document; this
-% gives the document greater control.
-%
-% \begin{macrocode}
-\@options
-% \end{macrocode}
-%
-% Now that the class options have been processed, we can load all the
-% packages that we know need loading.
-% \begin{macrocode}
-\rtx@require@packages
-% \end{macrocode}
-%
-% At this point, the society substyle, the journal substyle, and the
-% pointsize have all been processed, along with the document class options.
-% Some of these have left things for later; we do these now.
-%
-% \begin{macro}{\setup@hook}
-%
-% This portion of the code for this class file
-% \emph{must} appear at the very end:
-% The procedure
-% \cmd\setup@hook\
-% should be executed at the very end of the class file.
-% Any code that relies on the value of any of the \texttt{@sw} switches
-% or will patch the code of one of the required packages
-% should be executed here.
-%\changes{4.2a}{2017/11/28}{(MD) Add call to \normalsize to be a good citizen and allow booktabs.sty to work properly}
-%
-% \begin{macrocode}
-\appdef\setup@hook{\normalsize}%
-\setup@hook
-% \end{macrocode}
-% \end{macro}
-%
-%
-% Warn if past maturation date. This code to be enabled only in beta software.
-% \changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
-% \changes{4.1h}{2009/10/09}{(AO) Remove expiry code in the release software}%
-% \begin{macrocode}
-%<*ignore>
- \def\rtx@fin@year{2010}%
- \def\rtx@fin@month{01}%
- \def\rtx@fin@day{01}%
- \def\rtx@fin@warn{%
- \@ifnum{\rtx@fin@year>\the\year\relax}{\true@sw}{%
- \@ifnum{\rtx@fin@month>\the\month\relax}{\true@sw}{%
- \@ifnum{\rtx@fin@day>\the\day\relax}{\true@sw}{%
- \false@sw
- }%
- }%
- }%
- {%
- \class@info{Beta software expires \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; updates available at https://journals.aps.org/revtex/}%
- }{%
- \class@warn{Outdated software expired \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; please retrieve an update at https://journals.aps.org/revtex/}%
- }%
- }%
-%</ignore>
-% \end{macrocode}
-% In shipping (non-beta) software, the following line should be commented out.
-% \changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
-% \begin{verbatim}
-%\appdef\class@enddocumenthook{\rtx@fin@warn}%
-% \end{verbatim}
-%
-% End of the class file.
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-%
-% \section{Symbols: the \texttt{revsymb} module}
-% We immediately define a utility command: this module's warning.
-% \begin{macrocode}
-%<*revsymb>
-\def\REVSYMB@warn#1{\PackageWarningNoLine{revsymb}{#1}}%
-% \end{macrocode}
-%
-% \begin{macro}{\lambdabar}
-% \begin{macrocode}
-\DeclareRobustCommand\lambdabar{%
- \bgroup
- \def\@tempa{%
- \hbox{%
- \raise.73\ht\z@
- \hb@xt@\z@{%
- \kern.25\wd\z@
- \vrule \@width.5\wd\z@\@height.1\p@\@depth.1\p@
- \hss
- }%
- \box\z@
- }%
- }%
- \mathchoice
- {\setbox\z@\hbox{$\displaystyle \lambda$}\@tempa}%
- {\setbox\z@\hbox{$\textstyle \lambda$}\@tempa}%
- {\setbox\z@\hbox{$\scriptstyle \lambda$}\@tempa}%
- {\setbox\z@\hbox{$\scriptscriptstyle\lambda$}\@tempa}%
- \egroup
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\openone}
-% DPC: Really should use a font that includes this glyph.
-% Unfortunately not in AMS ones, but is in bbold, cmbb.
-% (I think, must check),
-% \changes{4.0a}{1998/01/31}{use font-dependent spacing}
-% FIXME: check for bbold.
-% \begin{macrocode}
-\DeclareRobustCommand\openone{\leavevmode\hbox{\small1\normalsize\kern-.33em1}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\corresponds}
-% \begin{macro}{\overdots}
-% \begin{macro}{\overcirc}
-% J\"org Knappen suggests the replacements:
-% replace \cmd\corresponds\ with \cmd\triangleq, source \classname{amssymb};
-% replace \cmd\overcirc\ with \cmd\mathring, source \classname{latex2e};
-% replace \cmd\overdots\ with \cmd\dddot, source \classname{amsmath}.
-%
-% Any use of any of these commands will result in a warning message at the end
-% of the log file. If the corresponding package is not loaded, a
-% definition will quietly be provided.
-% \begin{macrocode}
-\DeclareRobustCommand\corresponds{\replace@command\corresponds\triangleq}%
-\DeclareRobustCommand\overcirc{\replace@command\overcirc\mathring}%
-\DeclareRobustCommand\overdots{\replace@command\overdots\dddot}%
-\DeclareRobustCommand\REV@triangleq{%
- {\lower.2ex\hbox{=}}{\kern-.75em^\triangle}%
-}%
-\DeclareRobustCommand\REV@dddot[1]{%
- \@ontopof{#1}{\cdots}{1.0}\mathord{\box2}%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\succsim}
-% \begin{macro}{\precsim}
-% \begin{macro}{\lesssim}
-% \begin{macro}{\gtrsim}
-% \begin{macro}{\alt}
-% \begin{macro}{\agt}
-% These version 3.1 commands are always supplied,
-% but the definitions in \classname{amssymb} are preferred.
-% \begin{macrocode}
-\DeclareRobustCommand\altsuccsim{\succ\kern-.9em_\sim\kern.3em}%
-\DeclareRobustCommand\altprecsim{\prec\kern-1em_\sim\kern.3em}%
-\let\REV@succsim\altsuccsim
-\let\REV@precsim\altprecsim
-\DeclareRobustCommand\REV@lesssim{\mathrel{\mathpalette\vereq{<}}}%
-\DeclareRobustCommand\REV@gtrsim{\mathrel{\mathpalette\vereq{>}}}%
-\DeclareRobustCommand\alt{\lesssim}
-\DeclareRobustCommand\agt{\gtrsim}
-\def\vereq#1#2{%
- \lower3\p@\vbox{%
- \baselineskip1.5\p@
- \lineskip1.5\p@
- \ialign{$\m@th#1\hfill##\hfil$\crcr#2\crcr\sim\crcr}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tensor}
-% \begin{macro}{\overstar}
-% \begin{macro}{\loarrow}
-% \begin{macro}{\roarrow}
-% \changes{4.0b}{1999/06/20}{AO: remove duplicates}
-% \begin{macrocode}
-\DeclareRobustCommand\tensor[1]{\@ontopof{#1}{\leftrightarrow}{1.15}\mathord{\box2}}
-\DeclareRobustCommand\overstar[1]{\@ontopof{#1}{\ast}{1.15}\mathord{\box2}}
-\DeclareRobustCommand\loarrow[1]{\@ontopof{#1}{\leftarrow}{1.15}\mathord{\box2}}
-\DeclareRobustCommand\roarrow[1]{\@ontopof{#1}{\rightarrow}{1.15}\mathord{\box2}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@ontopof}
-% \begin{macrocode}
-\def\@ontopof#1#2#3{%
- {%
- \mathchoice
- {\@@ontopof{#1}{#2}{#3}\displaystyle \scriptstyle }%
- {\@@ontopof{#1}{#2}{#3}\textstyle \scriptstyle }%
- {\@@ontopof{#1}{#2}{#3}\scriptstyle \scriptscriptstyle}%
- {\@@ontopof{#1}{#2}{#3}\scriptscriptstyle\scriptscriptstyle}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@ontopof}
-% Same as \revtex3, more or less.
-% \begin{macrocode}
-\def\@@ontopof#1#2#3#4#5{%
- \setbox\z@\hbox{$#4#1$}%
- \setbox\f@ur\hbox{$#5#2$}%
- \setbox\tw@\null\ht\tw@\ht\z@ \dp\tw@\dp\z@
- \@ifdim{\wd\z@>\wd\f@ur}{%
- \setbox\f@ur\hb@xt@\wd\z@{\hss\box\f@ur\hss}%
- \mathord{\rlap{\raise#3\ht\z@\box\f@ur}\box\z@}%
- }{%
- \setbox\f@ur\hb@xt@.9\wd\f@ur{\hss\box\f@ur\hss}%
- \setbox\z@\hb@xt@\wd\f@ur{\hss$#4\relax#1$\hss}%
- \mathord{\rlap{\copy\z@}\raise#3\ht\z@\box\f@ur}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frak}
-% Deal with legacy \cmd\frak:
-% if \classname{amsfonts} not loaded, defined in such a way as to ask for that package.
-% Also, says to use \cmd\mathfrak\ instead.
-% \begin{macrocode}
-\DeclareRobustCommand\frak{%
- \REVSYMB@warn{%
- Command \string\frak\space unsupported:^^J%
- please use \string\mathfrak\space instead.%
- }%
- \global\let\frak\mathfrak
- \frak
-}%
-\DeclareRobustCommand\REV@mathfrak{%
- \REVSYMB@warn{%
- Command \string\mathfrak\space undefined:^^J%
- please specify the amsfonts or amssymb option!%
- }%
- \global\let\mathfrak\@firstofone
- \mathfrak
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Bbb}
-% Deal with legacy \cmd\Bbb:
-% if \classname{amsfonts} not loaded, defined in such a way as to ask for that package.
-% Also, says to use \cmd\mathbb\ instead.
-% \begin{macrocode}
-\DeclareRobustCommand\Bbb{%
- \REVSYMB@warn{%
- Command \string\Bbb\space unsupported:^^J%
- please use \string\mathbb\space instead.%
- }%
- \global\let\Bbb\mathbb
- \Bbb
-}%
-\DeclareRobustCommand\REV@mathfrak{%
- \REVSYMB@warn{%
- Command \string\mathbb\space undefined:^^J%
- please specify the amsfonts or amssymb option!%
- }%
- \global\let\mathbb\@firstofone
- \mathbb
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Bigglb}
-% Deal with legacy bold delimiters.
-% Each of the following takes an implicit argument consisting of
-% the delimiter to be made big and bold.
-% FIXME: \cmd\DeclareBoldMathCommand\ is not the right tool!
-% \begin{macrocode}
-\def\Bigglb{\REV@boldopen \Bigg}%
-\def\Biglb {\REV@boldopen \Big }%
-\def\bigglb{\REV@boldopen \bigg}%
-\def\biglb {\REV@boldopen \big }%
-\def\Biggrb{\REV@boldclose\Bigg}%
-\def\Bigrb {\REV@boldclose\Big }%
-\def\biggrb{\REV@boldclose\bigg}%
-\def\bigrb {\REV@boldclose\big }%
-\def\REV@pmb#1{%
- \hbox{%
- \setbox\z@=\hbox{#1}%
- \kern-.02em\copy\z@\kern-\wd\z@
- \kern .04em\copy\z@\kern-\wd\z@
- \kern-.02em
- \raise.04em\copy\z@
- }%
-}%
-\def\REV@boldopen #1#2{\mathopen {\REV@pmb{$#1#2$}}}%
-\def\REV@boldclose#1#2{\mathclose{\REV@pmb{$#1#2$}}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\revsymb@inithook}
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% Package dependencies are taken care of at \cmd\setup@hook\ time.
-% \begin{macrocode}
-\def\revsymb@inithook{%
- \@ifxundefined\dddot{\let\dddot\REV@dddot}{}%
- \@ifxundefined\triangleq{\let\triangleq\REV@triangleq}{}%
- \@ifxundefined\succsim{\let\succsim\altsuccsim}{}%
- \@ifxundefined\precsim{\let\precsim\altprecsim}{}%
- \@ifxundefined\lesssim{\let\lesssim\REV@lesssim}{}%
- \@ifxundefined\gtrsim {\let\gtrsim \REV@gtrsim }{}%
- \@ifxundefined\mathfrak{\let\mathfrak\REV@mathfrak}{}%
- \@ifxundefined\mathbb{\let\mathbb\REV@mathbb}{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</revsymb>
-% \end{macrocode}
-%
-% \section{The \classoption{10pt} class option: the \texttt{10pt} module}
-% \changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{10pt} is in this module.}
-% The file \file{aps10pt.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@pointsize\ has the value 10.
-%
-% \begin{macrocode}
-%<*10pt>
-% \end{macrocode}
-%
-% \subsection{Defend Against Forseeable Errors}%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX pointsize 10pt selected}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\normalsize{%
- \@setfontsize\normalsize\@xpt{11.5}%
- \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\small{%
- \@setfontsize\small\@ixpt{10.5}%
- \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ \@plus2\p@
- \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
- \def\@listi{%
- \leftmargin\leftmargini
- \topsep 4\p@ \@plus2\p@ \@minus2\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\footnotesize{%
- \@setfontsize\footnotesize\@viiipt{9.5pt}%
- \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ \@plus\p@
- \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
- \def\@listi{%
- \leftmargin\leftmargini
- \topsep 3\p@ \@plus\p@ \@minus\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\scriptsize{%
- \@setfontsize\scriptsize\@viipt\@viiipt
-}%
-\def\tiny{%
- \@setfontsize\tiny\@vpt\@vipt
-}%
-\def\large{%
- \@setfontsize\large\@xiipt{14pt}%
-}%
-\def\Large{%
- \@setfontsize\Large\@xivpt{18pt}%
-}%
-\def\LARGE{%
- \@setfontsize\LARGE\@xviipt{22pt}%
-}%
-\def\huge{%
- \@setfontsize\huge\@xxpt{25pt}%
-}%
-\def\Huge{%
- \@setfontsize\Huge\@xxvpt{30pt}%
-}%
-% \end{macrocode}
-%
-% The values of these margin parameters are dependent upon
-% \cmd\twoside@sw; any society or journal that
-% has its own preferences should override these assignments
-% by doing \cmd\appdef\cmd\setup@hook.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \twoside@sw{%
-% \oddsidemargin -.1in
-% \evensidemargin -.4in
- \oddsidemargin -20pt
- \evensidemargin -20pt
- \marginparwidth 107pt
- }{%
- \oddsidemargin -.25in
- \evensidemargin -.25in
- \marginparwidth 30pt
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\marginparsep 6pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\topmargin -61pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\headheight 25pt
-\headsep 16pt
-% \end{macrocode}
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-% \begin{macrocode}
-\topskip 10pt
-\splittopskip\topskip
-% \end{macrocode}
-%
-% \begin{macrocode}
-\footskip 30pt
-% \end{macrocode}
-%
-% \begin{macrocode}
- \textheight = 56pc
-% \end{macrocode}
-%
-% \begin{macrocode}
-\textwidth42.5pc
-% \end{macrocode}
-%
-% \begin{macrocode}
-\columnsep 1.5pc
-\columnseprule 0pt
-% \end{macrocode}
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-% \begin{macrocode}
-\footnotesep 1pt
-\skip\footins 39pt plus 4pt minus 12pt
-\def\footnoterule{%
- \dimen@\skip\footins\divide\dimen@\tw@
- \kern-\dimen@\hrule width.5in\kern\dimen@
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\floatsep 12pt plus 2pt minus 2pt
-\textfloatsep 20pt plus 2pt minus 4pt
-\intextsep 12pt plus 2pt minus 2pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\dblfloatsep 12pt plus 2pt minus 2pt
-\dbltextfloatsep 20pt plus 2pt minus 4pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@fptop 0pt plus 1fil
-\@fpsep 8pt plus 2fil
-\@fpbot 0pt plus 1fil
-\@dblfptop 0pt plus 1fil
-\@dblfpsep 8pt plus 2fil
-\@dblfpbot 0pt plus 1fil
-% \end{macrocode}
-%
-% \begin{macrocode}
-\marginparpush 5pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\parskip 0pt plus 1pt
-\parindent 10pt
-\emergencystretch8\p@
-% \end{macrocode}
-%
-% \begin{macrocode}
-\partopsep 2pt plus 1pt minus 1pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\leftmargini 25pt
-\leftmarginii 22pt
-\leftmarginiii 18.7pt
-\leftmarginiv 17pt
-\leftmarginv 10pt
-\leftmarginvi 10pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listI{%
- \leftmargin\leftmargini
- \parsep 4\p@ plus2\p@ minus\p@
- \topsep 8\p@ plus2\p@ minus4\p@
- \itemsep 4\p@ plus2\p@ minus\p@
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\labelsep 4pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listii{%
- \leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep 4\p@ plus2\p@ minus\p@
- \parsep 2\p@ plus\p@ minus\p@
- \itemsep \parsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listiii{%
- \leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep 2\p@ plus\p@ minus\p@
- \parsep \z@
- \partopsep \p@ plus\z@ minus\p@
- \itemsep \topsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listiv{%
- \leftmargin\leftmarginiv
- \labelwidth\leftmarginiv
- \advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listv{%
- \leftmargin\leftmarginv
- \labelwidth\leftmarginv
- \advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listvi{%
- \leftmargin\leftmarginvi
- \labelwidth\leftmarginvi
- \advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</10pt>
-% \end{macrocode}
-%
-% \section{The \classoption{11pt} class option: the \texttt{11pt} module}
-% \changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{11pt} is in this module.}
-% The file \file{11pt.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@pointsize\ has the value 11.
-%
-% \begin{macrocode}
-%<*11pt>
-% \end{macrocode}
-%
-% \subsection{Defend Against Forseeable Errors}%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX pointsize 11pt selected}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\normalsize{%
- \@setfontsize\normalsize\@xipt{13.6}%
- \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\small{%
- \@setfontsize\small\@xpt\@xiipt
- \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
- \abovedisplayshortskip \z@ \@plus3\p@
- \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
- \def\@listi{\leftmargin\leftmargini
- \topsep 6\p@ \@plus2\p@ \@minus2\p@
- \parsep 3\p@ \@plus2\p@ \@minus\p@
- \itemsep \parsep
- }%
- \belowdisplayskip \abovedisplayskip
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\footnotesize{%
- \@setfontsize\footnotesize\@ixpt{11}%
- \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
- \abovedisplayshortskip \z@ \@plus\p@
- \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
- \def\@listi{\leftmargin\leftmargini
- \topsep 4\p@ \@plus2\p@ \@minus2\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep
- }%
- \belowdisplayskip \abovedisplayskip
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\scriptsize{%
- \@setfontsize\scriptsize\@viiipt{9.5}%
-}%
-\def\tiny{%
- \@setfontsize\tiny\@vipt\@viipt
-}%
-\def\large{%
- \@setfontsize\large\@xiipt{14}%
-}%
-\def\Large{%
- \@setfontsize\Large\@xivpt{18}%
-}%
-\def\LARGE{%
- \@setfontsize\LARGE\@xviipt{22}%
-}%
-\def\huge{%
- \@setfontsize\huge\@xxpt{25pt}%
-}%
-\def\Huge{%
- \@setfontsize\Huge\@xxvpt{30pt}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</11pt>
-% \end{macrocode}
-%
-% \section{The \classoption{12pt} class option: the \texttt{12pt} module}
-% \changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{12pt} is in this module.}
-% The file \file{12pt.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@pointsize\ has the value 12.
-%
-% \begin{macrocode}
-%<*12pt>
-% \end{macrocode}
-%
-% \subsection{Defend Against Forseeable Errors}%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX pointsize 12pt selected}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\normalsize{%
- \@setfontsize\normalsize\@xiipt{14pt}%
- \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ plus3\p@
- \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
- \let\@listi\@listI
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
- \def\small{%
- \@setfontsize\small\@xipt{14.5pt}%
- \abovedisplayskip 8\p@ \@plus3\p@ \@minus6\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ \@plus3\p@
- \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
- \def\@listi{%
- \leftmargin\leftmargini
- \topsep 9\p@ \@plus3\p@ \@minus5\p@
- \parsep 4.5\p@ \@plus2\p@ \@minus\p@
- \itemsep \parsep
- }%
-}%
-% \end{macrocode}
-%
-% Same baselineskip as \cmd\small\ ?
-% \begin{macrocode}
- \def\footnotesize{%
- \@setfontsize\footnotesize\@xpt{14.5pt}%
- \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \z@ \@plus3\p@
- \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
- \def\@listi{%
- \leftmargin\leftmargini
- \topsep 6\p@ \@plus2\p@ \@minus2\p@
- \parsep 3\p@ \@plus2\p@ \@minus\p@
- \itemsep \parsep
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\scriptsize{%
- \@setfontsize\scriptsize\@viiipt{9.5pt}%
-}%
-\def\tiny{%
- \@setfontsize\tiny\@vipt{7pt}%
-}%
-\def\large{%
- \@setfontsize\large\@xivpt{18pt}%
-}%
-\def\Large{%
- \@setfontsize\Large\@xviipt{22pt}%
-}%
-\def\LARGE{%
- \@setfontsize\LARGE\@xxpt{25pt}%
-}%
-\def\huge{%
- \@setfontsize\huge\@xxvpt{30pt}%
-}%
-\let\Huge=\huge
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</12pt>
-% \end{macrocode}
-%
-% \section{Page parameters}%
-% This code is common to both \classoption{11pt} and \classoption{12pt}.
-%
-% \begin{macrocode}
-%<*11pt|12pt>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \twoside@sw{%
- \oddsidemargin 0pt
- \evensidemargin 0pt
- \marginparwidth 60pt
- }{%
- \oddsidemargin 0pt
- \evensidemargin 0pt
- \marginparwidth 44pt
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\marginparsep 10pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\topmargin -37pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\headheight 12pt
-\headsep 25pt
-% \end{macrocode}
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-% \begin{macrocode}
-\topskip 10pt
-\splittopskip\topskip
-% \end{macrocode}
-%
-% \begin{macrocode}
-\footskip 30pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\textheight=665.5\p@
-% \end{macrocode}
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \tightenlines@sw{%
- \def\baselinestretch{1}%
- }{%
- \def\baselinestretch{1.5}%
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\textwidth 468pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\columnsep 10pt
-\columnseprule 0pt
-% \end{macrocode}
-%
-% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-% \begin{macrocode}
-\footnotesep 1pt
-\skip\footins 25.25pt plus 4pt minus 12pt
-\def\footnoterule{%
- \dimen@\skip\footins\divide\dimen@\f@ur
- \kern-\dimen@\hrule width.5in\kern\dimen@
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\floatsep 14pt plus 2pt minus 4pt
-\textfloatsep 20pt plus 2pt minus 4pt
-\intextsep 14pt plus 4pt minus 4pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\dblfloatsep 14pt plus 2pt minus 4pt
-\dbltextfloatsep 20pt plus 2pt minus 4pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@fptop 0pt plus 1fil
-\@fpsep 10pt plus 2fil
-\@fpbot 0pt plus 1fil
-\@dblfptop 0pt plus 1fil
-\@dblfpsep 10pt plus 2fil%
-\@dblfpbot 0pt plus 1fil
-% \end{macrocode}
-%
-% \begin{macrocode}
-\marginparpush 7pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\parskip 0pt plus 1pt
-\parindent 15pt
-\emergencystretch8\p@
-\partopsep 3pt plus 2pt minus 2pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\leftmargini 30pt
-\leftmarginii 26pt
-\leftmarginiii 22pt
-\leftmarginiv 20pt
-\leftmarginv 12pt
-\leftmarginvi 12pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listI{\leftmargin\leftmargini \parsep 5\p@ plus2.5\p@ minus\p@
- \topsep 10\p@ plus4\p@ minus6\p@
- \itemsep 5\p@ plus2.5\p@ minus\p@
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\labelsep 6pt
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listii{\leftmargin\leftmarginii
- \labelwidth\leftmarginii\advance\labelwidth-\labelsep
- \topsep 5\p@ plus2.5\p@ minus\p@
- \parsep 2.5\p@ plus\p@ minus\p@
- \itemsep \parsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
- \topsep 2.5\p@ plus\p@ minus\p@
- \parsep \z@ \partopsep \p@ plus\z@ minus\p@
- \itemsep \topsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listiv{\leftmargin\leftmarginiv
- \labelwidth\leftmarginiv\advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listv{\leftmargin\leftmarginv
- \labelwidth\leftmarginv\advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@listvi{\leftmargin\leftmarginvi
- \labelwidth\leftmarginvi\advance\labelwidth-\labelsep
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</11pt|12pt>
-% \end{macrocode}
-%
-% \section{The \classoption{aps} class extension: the \texttt{aps} module}
-% \changes{4.0b}{1999/06/20}{AO: made aps.rtx part of revtex4.dtx}
-% The file \file{aps.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@society\ has the value \classoption{aps}.
-%
-% Here, code specific to APS journals is separated out from the \revtex\ document class.
-% (Other societies can customize \revtex\ by supplying their own \file{.rtx} file.)
-%
-% This class extension file is a model for a class extension you might write yourself.
-%
-% First, incorporate a \cmd\ProvidesFile\ command with an optional argument giving
-% the version information, e.g.,
-% \begin{verbatim}
-% \ProvidesFile{foo}[2001/09/11 v1.1 Docinfo]%
-% \end{verbatim}
-%
-% Within the society substyle, there are two things we must do as well:
-% define the default journal,
-% \begin{verbatim}
-% \def\@journal@default{pra}%
-% \end{verbatim}
-% And do likewise for the point size:
-% \begin{verbatim}
-% \def\@pointsize@default{10}%
-% \end{verbatim}
-%
-% We first define some text entities (amounting to journal abbreviations),
-% then some APS-specific initializations,
-% then code for particular APS journals.
-% In the latter case, the choice is
-% keyed off the macro \cmd\@journal.
-%
-% \begin{macrocode}
-%<*aps>
-% \end{macrocode}
-%
-% \subsection{Defend Against Forseeable Errors}%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
- \class@info{RevTeX society APS selected}%
-% \end{macrocode}
-%
-% Here are the class options relating to the APS:
-% \begin{macrocode}
-\DeclareOption{pra}{\change@journal{pra}}%
-\DeclareOption{prb}{\change@journal{prb}}%
-\DeclareOption{prc}{\change@journal{prc}}%
-\DeclareOption{prd}{\change@journal{prd}}%
-\DeclareOption{pre}{\change@journal{pre}}%
-\DeclareOption{prl}{\change@journal{prl}}%
-%\changes{4.2b}{2017/11/21}{(MD) Update options for new titles without "Special Topics" and make prper match style of other journal options}
-\DeclareOption{prab}{\change@journal{prab}}%
-\DeclareOption{prper}{\change@journal{prper}}%
-\DeclareOption{rmp}{\change@journal{rmp}}%
-%\changes{4.2b}{2017/11/21}{(MD) Add options for new APS journals and a generic physrev option for future-proofing}
-\DeclareOption{prx}{\change@journal{prx}}%
-\DeclareOption{prapplied}{\change@journal{prapplied}}%
-\DeclareOption{prmaterials}{\change@journal{prmaterials}}%
-\DeclareOption{prfluids}{\change@journal{prfluids}}%
-\DeclareOption{physrev}{\change@journal{physrev}}%
-% \end{macrocode}
-%
-% \subsection{Abbreviations}%
-% \changes{4.1p}{2010/02/24}{(AO, 584) Per MD, remove trailing space character from each journal abbreviation: it had caused an extraneous space in the .bbl}
-% The following macros constitute typing shortcuts for
-% certain journal names.
-% \begin{macrocode}
-\def\adv{AIP Advances}%
-\def\ao{Appl.\ Opt.}%
-\def\ap{Appl.\ Phys.}%
-\def\apl{Appl.\ Phys.\ Lett.}%
-\def\apm{Appl.\ Phys.\ Lett.\ Mater.}%
-\def\apj{Astrophys.\ J.}%
-\def\bell{Bell Syst.\ Tech.\ J.}%
-\def\bmf{Biomicrofluidics}%
-\def\cha{Chaos}%
-\def\jqe{IEEE J.\ Quantum Electron.}%
-\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.}%
-\def\aprop{IEEE Trans.\ Antennas Propag.}%
-\def\mtt{IEEE Trans.\ Microwave Theory Tech.}%
-\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.}%
-\def\jcp{J.\ Chem.\ Phys.}%
-\def\jap{J.\ Appl.\ Phys.}%
-\def\jmp{J.\ Math.\ Phys.}%
-\def\jmo{J.\ Mod.\ Opt.}%
-\def\josa{J.\ Opt.\ Soc.\ Am.}%
-\def\josaa{J.\ Opt.\ Soc.\ Am.\ A}%
-\def\josab{J.\ Opt.\ Soc.\ Am.\ B}%
-\def\jpp{J.\ Phys.\ (Paris)}%
-\def\jpr{J.\ Phys.\ Chem.\ Ref.\ Data}%
-\def\ltp{Low.\ Temp.\ Phys.}%
-\def\nat{Nature (London)}%
-\def\oc{Opt.\ Commun.}%
-\def\ol{Opt.\ Lett.}%
-\def\pl{Phys.\ Lett.}%
-\def\pop{Phys.\ Plasmas}%
-\def\pof{Phys.\ Fluids}%
-\def\pra{Phys.\ Rev.\ A}%
-\def\prb{Phys.\ Rev.\ B}%
-\def\prc{Phys.\ Rev.\ C}%
-\def\prd{Phys.\ Rev.\ D}%
-\def\pre{Phys.\ Rev.\ E}%
-\def\prl{Phys.\ Rev.\ Lett.}%
-\def\rmp{Rev.\ Mod.\ Phys.}%
-\def\rsi{Rev.\ Sci.\ Instrum.}%
-\def\rse{J.\ Renewable Sustainable Energy}%
-\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}%
-\def\sjqe{Sov.\ J.\ Quantum Electron.}%
-\def\vr{Vision Res.}%
-\def\sd{Structural\ Dynamics}%
-\def\jor{J.\ Rheol.}%
-\def\cp{AIP\ Conference\ Proceedings}%
-% \end{macrocode}
-%
-% \subsection{APS Setup}%
-% Here we define the default procedures for APS journals.
-% Individual APS journals may override these definitions.
-%
-% \subsubsection{Title block}%
-%
-% The specifics of the title block.
-% Apply to all APS journals; individual journals may override these settings.
-%
-% \begin{macro}{\@fnsymbol}
-% The \LaTeX\ kernel definition of \cmd\@fnsymbol\ is overridden.
-% The definition in \filename{fixltx2e.sty} serves as a guide to the new way to symbol,
-% working in both text- and math modes.
-%
-% \filename{fixltx2e.sty} duplicates some features of \filename{ltxgrid} and \filename{ltxutil},
-% however, so it may be incompatible with \revtex.
-% In case it is not loaded, we must provide a meaning for \cmd\TextOrMath,
-% which that package makes robust.
-% I believe that it is \cmd\@fnsymbol\ itself that ought to be robustified.
-% e\TeX\ further complicates matters; we do not especially accomodate it.
-%
-% \changes{4.1d}{2009/03/27}{Definition of \cs{ @fnsymbol} follows fixltx2e.sty}
-%
-% Not! \cmd\TextOrMath\ must be made robust in any case (Bug 530). I return things to follow
-% core \LaTeXe\ (\filename{latex.ltx}).
-% \changes{4.1f}{2009/10/05}{(AO, 530) \cs{@fnsymbol}: Failed to import fixltx2e.sty technology. Return to LaTeX core.}
-% \changes{4.2f}{2022/06/05}{(PHO) \cs{@fnsymbol}: Correct \cs{ifcase} nesting logic.}
-% \begin{macrocode}
-\def\@fnsymbol#1{%
- \ensuremath{%
- \ifcase#1\or
- *\or
- \dagger\or
- \ddagger\or
- \mathsection\or
- \mathparagraph\or
-% \|\or
- **\or
- \dagger\dagger\or
- \ddagger\ddagger\or
- \mathsection\mathsection\or
- \mathparagraph\mathparagraph\or
- ***\or
- \dagger\dagger\dagger\or
- \ddagger\ddagger\ddagger\or
- \mathsection\mathsection\mathsection\or
- \mathparagraph\mathparagraph\mathparagraph
- \else
- \@ctrerr
- \fi
- }%
-}%
-\appdef\document@inithook{%
- \@ifxundefined\TextOrMath{%
- \DeclareRobustCommand\TextOrMath{\@ifmmode{\false@sw}{\true@sw}}%
- }{}%
-}%
-\let\thefootnote@latex\thefootnote
-% \end{macrocode}
-% \end{macro}
-%
-% We assign the default titlepage style for APS; a journal or document instance
-% may override by invoking one of the other \cmd\clo@... procedures defined in \revtex.
-% \begin{macrocode}
-\clo@groupedaddress
-% \end{macrocode}
-%
-% \begin{macro}{\titlepage}
-% \begin{macrocode}
-\renewenvironment{titlepage}{%
- \let\wastwocol@sw\twocolumn@sw
- \onecolumngrid
- \newpage
- \thispagestyle{titlepage}%
- \c@page\z@
-% \end{macrocode}
-% A comment: ``article.cls sets this to one not zero?''
-% \begin{macrocode}
-}{%
- \wastwocol@sw{\twocolumngrid}{\newpage}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractheading}
-% APS Journals all set the abstract head the same way, with no head.
-% However, if the user has specified the \classoption{preprint} class option,
-% then the abstract will have a head.
-% \begin{macrocode}
-\def\frontmatter@abstractheading{%
- \preprintsty@sw{%
- \begingroup
- \centering\large
- \abstractname
- \par
- \endgroup
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractwidth}
-% All APS journals set the abstract to the same width.
-% \begin{macrocode}
-\def\frontmatter@abstractwidth{400\p@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractfont}
-% All APS journals set the abstract body the same way.
-% \changes{4.0c}{1999/11/13}{(AO, 123) add parskip to the abstract.}
-% \changes{4.1e}{2008/06/29}{(AO, 455) be nice to a list within the abstract}
-% \begin{macrocode}
-\def\frontmatter@abstractfont{%
- \small
- \parindent1em\relax
- \adjust@abstractwidth
-}%
-\def\adjust@abstractwidth{%
- \dimen@\textwidth\advance\dimen@-\frontmatter@abstractwidth
- \divide\dimen@\tw@
- \galley@sw{%
- \advance\rightskip\tw@\dimen@
- }{%
- \advance\leftskip\dimen@
- \advance\rightskip\dimen@
- }%
- \@totalleftmargin\leftskip
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%\changes{4.2b}{2017/11/22}{(MD) Change default to not use a title page - it seems antiquated}
-% All APS journal preprints use separate titlepage and full-width abstract.
-%
-% In effect, we establish a society default value for \cmd\preprintsty@sw,
-% and for \cmd\titlepage@sw.
-% \begin{macrocode}
-\@booleanfalse\preprintsty@sw
-\@booleanfalse\titlepage@sw
-% \end{macrocode}
-%
-% We choose the page style for all APS journals.
-% The journal may override by inserting its own code in \cmd\setup@hook.
-% Users wishing to customize their documents will be able to invoke a \cmd\pagestyle\
-% command anywhere in the preamble; it will override the assignments here.
-%
-% Here is the big switch for APS preprints. Note that \cmd\preprintsty@sw
-% is also consulted in various procedures, but we assume its value does
-% not change after \cmd\setup@hook\ time.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \preprintsty@sw{%
- \ps@preprint
- \def\frontmatter@abstractwidth{\textwidth}%
- \def\frontmatter@affiliationfont{\it}%
- \let\section\section@preprintsty
-% \end{macrocode}
-% The following line of code had been commented out at this point.
-% \begin{verbatim}
-% \let\@hangfrom@section\@hangfrom@section@preprintsty
-% \end{verbatim}
-% \begin{macrocode}
- \let\subsection\subsection@preprintsty
- \let\subsubsection\subsubsection@preprintsty
- }{%
- \ps@article
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\frontmatter@authorformat}
-% All APS journals set the author list the same.
-% The leading is 11.5 points, and
-% there is 11.5 points of extra space above the first author line
-% (which amounts to the same thing as 11.5 points extra below the title)
-% for a total of 23 points base-to-base.
-%
-% \begin{macrocode}
-\def\frontmatter@authorformat{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \centering
- \advance\baselineskip\p@
- \parskip11.5\p@\relax
- \@flushglue\skip@
-% \end{macrocode}
-% The following line of code had been commented out at this point.
-% \begin{verbatim}
-%\preprintsty@sw{}{%
-% \addvspace{0\p@}%
-%}%
-% \end{verbatim}
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affilgroup}
-% The default amount of space above affiliation.
-% APS Journals have 24 points b-b above an affiliation group.
-% \begin{macrocode}
-\def\frontmatter@above@affilgroup{%
-% \end{macrocode}
-% The following line of code had been commented out at this point.
-% \begin{verbatim}
-%\preprintsty@sw{}{%
-% \addvspace{11\p@}%
-%}%
-% \end{verbatim}
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@above@affiliation}
-% \begin{macro}{\frontmatter@above@affiliation@script}
-% The default amount of space above affiliation.
-% APS Journals have no extra space between author group down to common affiliation.
-% \begin{macrocode}
-\def\frontmatter@above@affiliation@script{%
- \skip@\@flushglue
- \@flushglue\z@ plus.3\hsize\relax
- \centering
- \@flushglue\skip@
- \addvspace{3.5\p@}%
-}%
-\def\frontmatter@above@affiliation{%
- \preprintsty@sw{}{%
-% \end{macrocode}
-% The following line of code had been commented out at this point.
-% \begin{verbatim}
-% \addvspace{12\p@}%
-% \end{verbatim}
-% \begin{macrocode}
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@affiliationfont}
-% All APS journals set the affiliation the same.
-% \begin{macrocode}
-\def\frontmatter@affiliationfont{%
- \small\it
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@collaboration@above}
-% PRL: 1.5 points extra: 13 points base-to-base above.
-% \begin{macrocode}
-\def\frontmatter@collaboration@above{%
- \preprintsty@sw{%
- }{%
- \parskip1.5\p@\relax
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@setup}
-% All APS journals set the title page using the same font and size.
-% However, justification varies for the title block elements, so
-% we assert none here.
-% \begin{macrocode}
-\def\frontmatter@setup{%
- \normalfont
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@title@above}
-% \begin{macro}{\frontmatter@title@format}
-% \begin{macro}{\frontmatter@title@below}
-% All APS journals set the article title the same.
-%
-% Note: Spacing from title to author is 23 points base-to-base.
-% \begin{macrocode}
-\def\frontmatter@title@above{\addvspace{6\p@}}%
-\def\frontmatter@title@format{\large\bfseries\centering\parskip\z@skip}%
-\def\frontmatter@title@below{}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@makefnmark}
-% All APS journals share this procedure for setting the titlepage footnote text.
-% \begin{macrocode}
-\def\@author@parskip{3\p@}%
-\def\frontmatter@makefnmark{%
- \@textsuperscript{%
- \normalfont\@thefnmark
- }%
-}%
-\def\frontmatter@authorbelow{%
- \addvspace{3\p@}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@RRAP@format}
-% All APS journals use the same format for the ``Received, Revised, etc.'' block on the title page.
-%
-% Change note: 11.5 points b-b from author/affiliation down to date.
-% \begin{macrocode}
-\def\frontmatter@RRAP@format{%
- \small
- \centering
-% \end{macrocode}
-% The following line of code had been commented out at this point.
-% \begin{verbatim}
-% \preprintsty@sw{}{\parskip.5ex\relax}%
-% \end{verbatim}
-% \begin{macrocode}
- \everypar{\hbox\bgroup(\@gobble@leavemode@uppercase}%
- \def\par{\@ifvmode{}{\unskip)\egroup\@@par}}%
-}%
-\def\punct@RRAP{;\egroup\ \hbox\bgroup}%
-\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@PACS@format}
-%
-% \begin{macrocode}
-\def\frontmatter@PACS@format{%
- \addvspace{11\p@}%
- \footnotesize
- \adjust@abstractwidth
- \parindent\z@
- \parskip\z@skip
- \samepage
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@keys@format}
-%
-% \begin{macrocode}
-\def\frontmatter@keys@format{%
- \footnotesize
- \adjust@abstractwidth
- \parindent\z@
- \samepage
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ps@titlepage}
-% \changes{4.0a}{1998/06/10}{multiple preprint commands}
-% \changes{4.0b}{1999/06/20}{Stack \cs{preprint} args flush right at right margin.}
-% Title page style. Currently empty except for preprint header,
-% which consists of all the \cmd\preprint\ arguments,
-% stacked flush right at the right margin.
-% \changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
-% \begin{macrocode}
-\def\ps@titlepage{%
- \def\@oddhead{%
- \hfill
- \preprint@sw{%
- \expandafter\produce@preprints\expandafter{\@preprint}%
- }{}%
- }%
- \let\@evenhead\@oddhead
- \def\@oddfoot{%
- \hb@xt@\z@{\byrevtex\hss}%
- \hfil
- \preprintsty@sw{\thepage}{}%
- \quad\checkindate
- \hfil
- }%
- \let\@evenfoot\@oddfoot
-}%
-\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX}{}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\produce@preprints}
-% \changes{4.0c}{1999/11/13}{(AO, 115) If three or more preprints specified, set on single line, with commas.}
-% \begin{macrocode}
-\def\produce@preprints#1{%
- \vtop to \z@{%
- \def\baselinestretch{1}%
- \small
- \let\preprint\preprint@count
- \count@\z@
- #1%
- \@ifnum{\count@>\tw@}{%
- \hbox{%
- \let\preprint\preprint@hlist
- #1%
- \setbox\z@\lastbox
- }%
- }{%
- \let\preprint\preprint@cr
- \halign{\hfil##\cr#1\crcr}%
- \par
- \vss
- }%
- }%
-}%
-\def\preprint@cr#1{#1\cr}%
-\def\preprint@count#1{\advance\count@\@ne}%
-\def\preprint@hlist#1{#1\hbox{, }}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Stacked Heads}%
-% All APS journals put a period (.), followed by quad space, after the section number.
-% Also, no hanging section number.
-% \begin{macrocode}
-\def\@seccntformat#1{\csname the#1\endcsname.\quad}%
-\def\@hang@from#1#2#3{#1#2#3}%
-% \end{macrocode}
-%
-% Note that in the following, we wish to set the section head uppercase, so we use
-% David Carlisle's \cmd\MakeTextUppercase. However, because this procedure effectively
-% parses its argument (looking for things to \emph{not} translate), it has to be invoked
-% in such a way that the argument of the \cmd\section\ command is passed to it as its
-% own argument.
-%
-% To accomplish this, we use the \cmd\@hangfrom@\ hook, which was developed for this
-% purpose.
-%
-% \begin{macrocode}
-\def\section{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont\small\bfseries
- \centering
- }%
-}%
-\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subsection{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont\small\bfseries
- \centering
- }%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subsubsection{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont\small\itshape
- \centering
- }%
-}%
-% \end{macrocode}
-%
-% \subsubsection{Runin Heads}%
-% \begin{macrocode}
-\def\paragraph{%
- \@startsection
- {paragraph}%
- {4}%
- {\parindent}%
- {\z@}%
- {-1em}%
- {\normalfont\normalsize\itshape}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\subparagraph{%
- \@startsection
- {subparagraph}%
- {5}%
- {\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}%
-}%
-% \end{macrocode}
-%
-%
-%
-% \begin{macro}{\section@preprintsty}
-% \begin{macro}{\subsection@preprintsty}
-% \begin{macro}{\subsubsection@preprintsty}
-% Here are the formatting procedures specific to the preprint style;
-% the only difference is that the heads are flush left instead of centered.
-%
-% \begin{macrocode}
-\def\section@preprintsty{%
- \@startsection
- {section}%
- {1}%
- {\z@}%
- {0.8cm \@plus1ex \@minus .2ex}%
- {0.5cm}%
- {%
- \normalfont\small\bfseries
-% \centering
- }%
-}%
-%\def\@hangfrom@section@preprintsty#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\subsection@preprintsty{%
- \@startsection
- {subsection}%
- {2}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont\small\bfseries
-% \centering
- }%
-}%
-% \end{macrocode}
-% \begin{macrocode}
-\def\subsubsection@preprintsty{%
- \@startsection
- {subsubsection}%
- {3}%
- {\z@}%
- {.8cm \@plus1ex \@minus .2ex}%
- {.5cm}%
- {%
- \normalfont\small\itshape
-% \centering
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% By default, APS journals set titlepage notes as footnotes.
-% \begin{verbatim}
-\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
-% \end{verbatim}
-%
-% \subsubsection{Table of Contents}%
-% The toc will itself make an entry in the toc,
-% but we temporarily turn off toc formatting for the duration.
-% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
-% \begin{macrocode}
-\def\@pnumwidth{1.55em}%
-\def\@tocrmarg {2.55em}%
-\def\@dotsep{2}%
-\def\ltxu@dotsep{4.5pt}%
-\setcounter{tocdepth}{3}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tableofcontents{%
- \addtocontents{toc}{\string\tocdepth@munge}%
- \print@toc{toc}%
- \addtocontents{toc}{\string\tocdepth@restore}%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tocdepth@munge{%
- \let\l@section@saved\l@section
- \let\l@section\@gobble@tw@
-}%
-\def\@gobble@tw@#1#2{}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\tocdepth@restore{%
- \let\l@section\l@section@saved
-}%
-% \end{macrocode}
-%
-% The following definition of \cmd\l@part\ is a variant on
-% the definition of \cmd\l@@sections\ in \file{ltxutil.dtx}.
-% \begin{macrocode}
-\def\l@part#1#2{\addpenalty{\@secpenalty}%
- \begingroup
- \set@tocdim@pagenum\@tempboxa{#2}%
-% \@tempdima 3em %
- \parindent \z@
- \rightskip\tocleft@pagenum plus 1fil\relax
- \skip@\parfillskip\parfillskip\z@
- \addvspace{2.25em plus\p@}%
- \large \bf %
- \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@
- \hb@xt@\rightskip{\hfil\unhbox\@tempboxa}\hskip-\rightskip\hskip\z@skip
- \par
- \nobreak %
- \endgroup
-}%
-% \end{macrocode}
-%
-% \begin{macro}{\l@section}
-% Determine which TOC elements are automatically indented.
-%
-% We set the TOC to the standard of RMP.
-% If APS has its own specification, we will code it, and RMP must override.
-% \begin{macrocode}
-\def\tocleft@{\z@}%
-\def\tocdim@min{5\p@}%
-\def\l@section{%
- \l@@sections{}{section}% Implicit #3#4
-}%
-\def\l@f@section{%
- \addpenalty{\@secpenalty}%
- \addvspace{1.0em plus\p@}%
- %\bf
-}%
-\def\l@subsection{%
- \l@@sections{section}{subsection}% Implicit #3#4
-}%
-\def\l@subsubsection{%
- \l@@sections{subsection}{subsubsection}% Implicit #3#4
-}%
-\def\l@paragraph#1#2{}%
-\def\l@subparagraph#1#2{}%
-% \end{macrocode}
-% \end{macro}
-%
-% Activate the auto TOC processing.
-% \begin{macrocode}
-\let\toc@pre\toc@pre@auto
-\let\toc@post\toc@post@auto
-% \end{macrocode}
-%
-% \subsubsection{Default column bottom}%
-% All APS journal styles have flush bottoms.
-%\changes{4.1n}{2009/11/30}{(AO, 566) restore 4.0 behavior: flush column bottoms}
-% \begin{macrocode}
-\@booleanfalse\raggedcolumn@sw
-% \end{macrocode}
-%
-%
-% \subsubsection{Table alignment style}%
-%
-% \begin{macro}{\tableft@skip@float}
-% \begin{macro}{\tabmid@skip@float}
-% \begin{macro}{\tabright@skip@float}
-% \begin{macro}{\array@row@pre@float}
-% \begin{macro}{\array@row@pst@float}
-% All APS publications have the same table specification:
-% Scotch rules above and below, centered in column.
-% \begin{macrocode}
-\def\tableft@skip@float{\z@ plus\hsize}%
-\def\tabmid@skip@float{\@flushglue}%
-\def\tabright@skip@float{\z@ plus\hsize}%
-\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}%
-\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{Footnote formatting}%
-% \changes{4.1n}{2010/01/02}{(AO, 572) \cs{@makefntext} and \cs{frontmatter@makefntext} must be defined harmoniously}%
-% We customize the formatting of footnotes for all APS journals.
-% \begin{macro}{\@makefntext}
-% \begin{macrocode}
-\long\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
- \noindent
- \nobreak\hskip-\leftskip
- \hb@xt@\leftskip{%
- \hss\@makefnmark\ %
- }%
- #1%
- \par
-}%
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\frontmatter@makefntext}
-% We ensure that frontmatter footnotes format similarly to body footnotes.
-% But we provide our own hypertext anchor, otherwise not provided.
-% \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{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
- \noindent
- \nobreak\hskip-\leftskip
- \Hy@raisedlink{\hyper@anchorstart{frontmatter.\expandafter\the\csname c@\@mpfn\endcsname}\hyper@anchorend}%
- \hb@xt@\leftskip{%
- \hss\@makefnmark\ %
- }%
- #1%
- \par
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Appendix}%
-% \begin{macro}{\appendix}
-% \begin{macro}{\@hangfrom@appendix}
-% \begin{macro}{\@hangfroms@appendix}
-% \begin{macro}{\@appendixcntformat}
-% \changes{4.0c}{1999/11/13}{(AO, 129) section* within appendix was producing appendixname}
-% \begin{macrocode}
-\prepdef\appendix{%
- \par
- \let\@hangfrom@section\@hangfrom@appendix
-%\let\@hangfroms@section\@hangfroms@appendix
- \let\@sectioncntformat\@appendixcntformat
-}%
-\def\@hangfrom@appendix#1#2#3{%
- #1%
- \@if@empty{#2}{%
- #3%
- }{%
- #2\@if@empty{#3}{}{:\ #3}%
- }%
-}%
-\def\@hangfroms@appendix#1#2{%
- #1#2%
-}%
-\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Bibliography}%
-% \changes{4.1n}{2010/01/04}{(AO, 576) In .bst files, remove support for the annote field}%
-%
-% Customize \revtex\ for the journal substyle;
-% this task requires three components:
-% the \BibTeX\ \file{apsrev.bst} and \file{apsrmp.bst} style files, and
-% customizations of the \env{thebibliography} environment.
-%
-% \begin{macro}{\@bibstyle}
-% Define the argument of the \cmd\bibliographystyle\ command
-% (if the document does not do so).
-% The user must have installed a \file{.bst} file of the corresponding name.
-% This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file.
-%
-% To generate \file{apsrev.bst}, use \classname{custom-bib} version 4.21 or later.
-% Run the \file{.bst} generator, \file{makebst.tex}, and
-% accept all defaults, with the following exceptions:
-%
-% \def\QandA#1#2#3{\item#1: \textbf{#2}: \texttt{#3}---}%
-% \def\CandE#1{\item\relax\texttt{#1}---}%
-% \begin{enumerate}
-% \QandA{LANGUAGE FIELD}{l}{lang}Use language field to switch hyphenation patterns for title
-% \QandA{PRESENTATIONS}{b}{pres,pres-bf}Presentation, speaker bold face
-% \QandA{ORDERING OF REFERENCES}{c}{seq-no}Citation order (unsorted, like unsrt.bst)
-% \QandA{ORDER ON VON PART}{x}{vonx}Sort without von part (de la Maire after Mahone)
-% \QandA{AUTHOR NAMES}{i}{nm-init,ed-au}Initials + surname (J. F. Smith)
-% \QandA{POSITION OF JUNIOR}{*}{jnrlst}Junior comes last as Smith, John, Jr.
-% \QandA{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES}{u}{nmft,nmft-def}User defined author font (\cmd\bibnamefont)
-% \QandA{FONT FOR FIRST NAMES}{u}{fnm-def}First names in user defined font (\cmd\bibfnamefont)
-% \QandA{EDITOR NAMES IN INCOLLECTION ETC}{a}{nmfted}Editors incollection like authors font
-% \QandA{FONT FOR `AND' IN LIST}{r}{nmand-rm}`And' in normal font (JONES and JAMES)
-% \QandA{FONT OF CITATION LABELS IN TEXT}{u}{lab,lab-def}User defined citation font (\cmd\citenamefont)
-% \QandA{FONT FOR `AND' IN CITATIONS}{r}{and-rm}Cited `and' in normal font
-% \QandA{DATE FORMAT}{*}{yr-par}Date in parentheses as (May 1993)
-% \QandA{DATE EMPTY}{-}{date-nil-x}If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
-% \QandA{TITLE OF ARTICLE}{d}{tit-qq}Title and punctuation in double quotes (``Title,'' ..)
-% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{-}{inproceedings-chapter}produce pages after chapter, just as in InBook
-% \QandA{TITLE PRESENT IN ARTICLE, INCOLLECTION, AND INPROCEEDINGS}{x}{jtit-x}Title is ignored
-% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{y}{inproceedings-chapter}produce pages after chapter, just as in InBook
-% \QandA{ARTICLE BOOKTITLE PRESENT}{}{article-booktitle}format booktitle
-% \QandA{ARTICLE SERIES PRESENT}{}{article-series}article can has series
-% \QandA{JOURNAL NAME FONT}{r}{jttl-rm}Journal name normal font
-% \QandA{JOURNAL NAME WITH ADDRESS}{y}{journal-address}Include address field (in parentheses) along with journal name
-% \QandA{BOOK TITLE FIELDS}{y}{book-bt}Field `booktitle', or if absent field `title', is book title
-% \QandA{THESIS TITLE OPTIONAL}{}{thesis-title-o}Title is optional: no warning issued if empty
-% \QandA{TECHNICAL REPORT TITLE}{b}{trtit-b}Tech. report title like books
-% \QandA{TECHNICAL REPORT INSTITUTION}{}{techreport-institution-par}format tech report institution like book publisher
-% \QandA{JOURNAL VOLUME}{b}{vol-bf}Volume bold as {\bf vol}(num)
-% \QandA{JOURNAL VOL AND NUMBER}{x}{vnum-x}Journal vol, without number as 34
-% \QandA{VOLUME PUNCTUATION}{c}{volp-com}Volume with comma as vol(num), ppp
-% \QandA{PAGE NUMBERS}{f}{jpg-1}Only start page number
-% \QandA{BOOK EDITOR W/O AUTHOR}{}{book-editor-booktitle}Book permits empty author, produces title before editor in this case
-% \QandA{INBOOK PERMITS TITLE, BOOKTITLE, AUTHOR, EDITOR}{a}{inbook-editor-booktitle}Allow using both title/booktitle, both author/editor
-% \QandA{CONFERENCE ADDRESS FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{a}{bookaddress}Italic booktitle followed by bookaddress in roman
-% \QandA{NUMBER AND SERIES FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{*}{num-xser}Allows number without series and suppresses word "number"
-% \QandA{WORD NUMBER CAPITALIZED FOR NUMBER AND SERIES}{c}{number-cap}Capitalize word `number' as: "Number 123"
-% \QandA{WORD CHAPTER CAPITALIZED}{c}{chapter-cap}Capitalize word `chapter' as: `Chapter 42'
-% \QandA{COMBINING NUMBER AND SERIES}{x}{series-number}Series number as: `Springer Lecture Notes No. 125'
-% \QandA{POSITION OF NUMBER AND SERIES}{b}{numser-booktitle}After book title and conference address, and before editors
-% \QandA{VOLUME AND SERIES FOR BOOKS/COLLECTIONS}{s}{ser-vol}Series, vol. 23
-% \QandA{VOLUME AND SERIES FORMATTING}{y}{ser-rm}format series roman , even when used with volume
-% \QandA{WORD VOLUME CAPITALIZED FOR VOLUME AND SERIES}{y}{volume-cap}Capitalize word `volume', as: `Volume 7 in Lecture Series'
-% \QandA{POSITION OF VOLUME AND SERIES FOR INCOLLECTION, INBOOK, AND INPROCEEDINGS}{e}{ser-ed}Series and volume after booktitle and before editors
-% \QandA{JOURNAL NAME PUNCTUATION}{x}{jnm-x}Space after journal name
-% \QandA{PAGES IN BOOK}{*}{pg-bk,book-chapter-pages}As chapter and page: chapter 42, page 345
-% \QandA{PUBLISHER IN PARENTHESES}{d}{pub-date}Publisher with address and date in parentheses (Oxford, 1994)
-% \QandA{EMPTY PUBLISHER PARENTHESES}{y}{ay-empty-pub-parens-x}eliminate parentheses altogether if nothing inside
-% \QandA{PUBLISHER POSITION}{}{pre-pub}Publisher before volume, chapter, pages
-% \QandA{}{}{pre-edn}Edition before publisher
-% \QandA{}{p}{pre-pub,pre-edn}Edition, publisher, volume, chapter, pages
-% \QandA{ISBN NUMBER}{*}{isbn}Include ISBN for books, booklets, etc.
-% \QandA{ISSN NUMBER}{*}{issn}Include ISSN for periodicals
-% \QandA{DOI NUMBER}{a}{doi-link,doi}Doi forms a link to the publication, anchored to the volume or title
-% \QandA{EDITOR IN COLLECTIONS}{b}{edby}In booktitle, edited by .. (where .. is names)
-% \QandA{PUNCTUATION BETWEEN SECTIONS (BLOCKS)}{c}{blk-com}Comma between blocks
-% \QandA{FINAL PUNCTUATION}{c}{fin-endbibitem}Command at end instead of period
-% \QandA{ABBREVIATE WORD `PAGES'}{a}{pp}`Page' abbreviated as p. or pp.
-% \QandA{ABBREVIATE WORD `EDITORS'}{a}{ed}`Editor' abbreviated as ed. or eds.
-% \QandA{OTHER ABBREVIATIONS}{a}{abr}Abbreviations of such words
-% \QandA{ABBREVIATION FOR `EDITION'}{a}{ednx}`Edition' abbreviated as `ed'
-% \QandA{EDITION NUMBERS}{n}{ord}Numerical editions as 1st, 2nd, 3rd, etc
-% \QandA{STORED JOURNAL NAMES}{a}{jabr}Abbreviated journal names
-% \QandA{FONT OF `ET AL'}{i}{etal-it}Italic et al
-% \QandA{ADDITIONAL REVTeX DATA FIELDS}{r}{revdata,eprint,url,url-blk,translation}Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
-% \QandA{SLACcitation FIELD}{}{SLACcitation}Produce SLACcitation field
-% \QandA{NUMPAGES DATA FIELD}{*}{numpages-x}Do not include numpages field
-% \QandA{URL ADDRESS}{*}{url,url-prefix-x}URL without prefix (default: `URL ')
-% \QandA{REFERENCE COMPONENT TAGS}{b}{bibinfo}Reference component tags like \cmd\bibinfo in the content of \cmd\bibitem
-% \QandA{ELEMENT TAGS}{b}{bibfield}Element tags like \cmd\bibfield in the content of \cmd\bibitem
-% \QandA{COMPATIBILITY WITH PLAIN TEX}{*}{nfss}Use LaTeX commands which may not work with Plain TeX
-% \end{enumerate}
-%
-% A file \file{apsrev.dbj} file equivalent to the following should result:
-% \begin{verbatim}
-%\input docstrip
-%\preamble
-%----------------------------------------
-%*** REVTeX-compatible Phys Rev 2010-02-12 ***
-%\endpreamble
-%\postamble
-%End of customized bst file
-%\endpostamble
-%\keepsilent
-%\askforoverwritefalse
-%\def\MBopts{\from{merlin.mbs}{%
-% head,\MBopta}
-%\from{physjour.mbs}{\MBopta}
-%\from{geojour.mbs}{\MBopta}
-%\from{photjour.mbs}{\MBopta}
-%\from{merlin.mbs}{tail,\MBopta}}
-%\def\MBopta{%
-% ay,%: Author-year with some non-standard interface
-% nat,%: Natbib for use with natbib v5.3 or later
-% lang,%: Use language field to switch hyphenation patterns for title
-% pres,pres-bf,%: Presentation, speaker bold face
-% seq-no,%: Citation order (unsorted, only meaningful for numericals)
-% vonx,%: Sort without von part (de la Maire after Mahone)
-% nm-init,ed-au,%: Initials + surname (J. F. Smith)
-% jnrlst,%: Junior comes last as Smith, John, Jr.
-% nmft,nmft-def,%: User defined author font (\bibnamefont)
-% fnm-def,%: First names in user defined font (\bibfnamefont)
-% nmfted,%: Editors incollection like authors font
-% nmand-rm,%: `And' in normal font (JONES and JAMES)
-% lab,lab-def,%: User defined citation font (\citenamefont)
-% and-rm,%: Cited `and' in normal font
-% keyxyr,%: Year blank when KEY replaces missing author (for natbib 7.0)
-% blkyear,%: Missing date left blank
-% yr-par,%: Year in parentheses as (1993)
-% dtrev,%: Date as year month
-% date-nil-x,%: If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
-% tit-qq,%: Title and punctuation in double quotes (``Title,'' ..)
-% inproceedings-chapter,%: produce pages after chapter, just as in InBook
-% jtit-x,%: Title is ignored
-% inproceedings-chapter,%: produce pages after chapter just as in InBook
-% article-booktitle,%: format booktitle
-% article-series,%: article can has series
-% jttl-rm,%: Journal name normal font
-% journal-address,%: Include address field (in parentheses) along with journal name
-% book-bt,%: Field `booktitle', or if absent field `title', is book title
-% thesis-title-o,%: Title is optional: no warning issued if empty
-% trtit-b,%: Tech. report title like books
-% techreport-institution-par,%: format tech report institution like book publisher
-% vol-bf,%: Volume bold as {\bf vol}(num)
-% vnum-x,%: Journal vol, without number as 34
-% volp-com,%: Volume with comma as vol(num), ppp
-% jpg-1,%: Only start page number
-% book-editor-booktitle,%: Book permits empty author, produces title before editor in this case
-% inbook-editor-booktitle,%: Allow using both title/booktitle, both author/editor
-% bookaddress,%: Italic booktitle followed by bookaddress in roman
-% num-xser,%: Allows number without series and suppresses word "number"
-% number-cap,%: Capitalize word `number' as: "Number 123"
-% chapter-cap,%: Capitalize word `chapter' as: `Chapter 42'
-% series-number,%: Series number as: `Springer Lecture Notes No. 125'
-% numser-booktitle,%: After book title and conference address, and before editors
-% ser-vol,%: Series, vol. 23
-% ser-rm,%: format series roman , even when used with volume
-% volume-cap,%: Capitalize word `volume', as: `Volume 7 in Lecture Series'
-% ser-ed,%: Series and volume after booktitle and before editors
-% jnm-x,%: Space after journal name
-% pg-bk,book-chapter-pages,%: As chapter and page: chapter 42, page 345
-% pub-date,%: Publisher with address and date in parentheses (Oxford, 1994)
-% ay-empty-pub-parens-x,%: eliminate parentheses altogether if nothing inside
-% pre-pub,pre-edn,%: Edition, publisher, volume, chapter, pages
-% isbn,%: Include ISBN for books, booklets, etc.
-% issn,%: Include ISSN for periodicals
-% doi-link,doi,%: Doi forms a link to the publication, anchored to the volume or title
-% edby,%: In booktitle, edited by .. (where .. is names)
-% blk-com,%: Comma between blocks
-% fin-endbibitem,%: Command at end instead of period
-% pp,%: `Page' abbreviated as p. or pp.
-% ed,%: `Editor' abbreviated as ed. or eds.
-% abr,%: Abbreviations of such words
-% ednx,%: `Edition' abbreviated as `ed'
-% ord,%: Numerical editions as 1st, 2nd, 3rd, etc
-% jabr,%: Abbreviated journal names
-% etal-it,%: Italic et al
-% revdata,eprint,url,url-blk,translation,%: Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
-% SLACcitation,%: Produce SLACcitation field
-% numpages-x,%: Do not include numpages field
-% url,url-prefix-x,%: URL without prefix (default: `URL ')
-% bibinfo,%: Reference component tags like \bibinfo in the content of \bibitem
-% bibfield,%: Element tags like \bibfield in the content of \bibitem
-% nfss,%: Use LaTeX commands which may not work with Plain TeX
-%,{%
-% }}
-%\generate{\file{apsrev4-2.bst}{\MBopts}}
-%\endbatchfile
-% \end{verbatim}
-%
-% \subsubsection{Comparing apsrev.bst and apsrmp.bst}\label{sec:CompRevRmp}
-% These two bibliographic styles differ as follows:
-% \file{apsrev.dbj} has the following guard codes, which \file{apsrmp.dbj} does not:
-% \begin{itemize}
-% \CandE{seq-no}%
-% Citation order (unsorted, like unsrt.bst)
-% \CandE{nm-init,ed-au}%
-% Initials + surname (J. F. Smith)
-% \CandE{blkyear}%
-% Missing date left blank
-% \CandE{date-nil-x}%
-% If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
-% \CandE{inproceedings-chapter}%
-% produce pages after chapter, just as in InBook
-% \CandE{techreport-institution-par}%
-% format tech report institution like book publisher
-% \CandE{vnum-x}%
-% Journal vol, without number as `34'
-% \CandE{pub-date}%
-% Publisher with address and date in parentheses (Oxford, 1994)
-% \CandE{pre-pub}%
-% Edition, publisher, volume, chapter, pages. Note that both use guard code pre-edn.
-% \end{itemize}
-%
-% \file{apsrmp.dbj} has the following guard codes, which \file{apsrev.dbj} does not:
-% \begin{itemize}
-% \CandE{nm-rev1}%
-% Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones)
-% \CandE{dt-beg}%
-% Date after authors
-% \CandE{vnum-sp}%
-% Journal vol (num) as `34 (2)'
-% \CandE{pp-last}%
-% Pages at end, but before any notes
-% \CandE{pub-par}%
-% Publisher in parentheses
-% \CandE{school-par}%
-% School/address in parens: `(school, address)'
-% \CandE{bkedcap}%
-% `Name Editor,' as above, editor upper case
-% \CandE{and-com}%
-% Comma even with 2 authors as `Tom, and Harry'
-%
-% \end{itemize}
-%
-% We ensure that the journal substyle has the first word
-% in the matter by installing the (default) APS code
-% later on (see Section~\ref{sec:aps-defaults}).
-% \end{macro}
-%
-% \begin{macro}{\authoryear@sw}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% Numerical citations: default value of \cmd\authoryear@sw\ is false.
-% \begin{macrocode}
-\@booleanfalse\authoryear@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bibpunct}
-% The following commands effectively establish the style in which \cmd\cite\ commands are
-% formatted.
-% You can think of them as the second needed component for the bibliography.
-%
-% Set up for APS numerical citations (once the packages are loaded).
-% The journal substyle can override these choices.
-%
-% Note that, prior to \classname{natbib} version 8.21, changing \cmd\NAT@sort\ at this late hour would not be totally effective;
-% you would have to give \classname{natbib} the relevant options at load time.
-% From version 8.21 on, \cmd\NAT@sort\ and \cmd\NAT@cmprs\ are not bound at all.
-% \changes{4.1a}{2008/01/19}{For natbib versions before 8.21, \cs{NAT@sort} was consulted only as natbib was being read in. Now it is fully dynamic.}
-% \begin{macrocode}
-\appdef\setup@hook{%
- \bibpunct{[}{]}{,}{n}{}{,}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pre@bibdata}
-%
-% Set up to write endnotes to a .bib file; its data will be incorporated into the bibliography.
-% \begin{macrocode}
- \def\pre@bibdata{\jobname\bibdata@app}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bibsection}
-% We define the sectioning command to use when starting the bibliography.
-%
-% \changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
-% \begin{macrocode}
-\appdef\setup@hook{%
- \def\bibsection{%
- \par
- \onecolumngrid@push
- \begingroup
- \baselineskip26\p@
- \bib@device{\textwidth}{245.5\p@}%
- \endgroup
- \nobreak\@nobreaktrue
- \addvspace{19\p@}%
- \par
- \onecolumngrid@pop
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bib@device}
-% \begin{macro}{\bibpreamble}
-% \begin{macro}{\bibsep}
-% \begin{macro}{\newblock}
-% We define the sectioning command to use when starting the bibliography.
-% \begin{macrocode}
-\def\bib@device#1#2{%
- \hb@xt@\z@{%
- \hb@xt@#1{%
- \hfil
- \phantomsection
- \addcontentsline {toc}{section}{\protect\numberline{}\refname}%
-% \hyper@anchorstart {\@currentHref }%
- \hb@xt@#2{%
- \skip@\z@\@plus-1fil\relax
- \leaders\hrule height.25 \p@ depth.25 \p@ \hskip\z@\@plus1fil
- \hskip\skip@
- \hskip\z@\@plus0.125fil\leaders\hrule height.375\p@ depth.375\p@ \hskip\z@\@plus0.75fil \hskip\z@\@plus0.125fil
- \hskip\skip@
- \hskip\z@\@plus0.25 fil\leaders\hrule height.5 \p@ depth.5 \p@ \hskip\z@\@plus0.5 fil \hskip\z@\@plus0.25 fil
- \hskip\skip@
- \hskip\z@\@plus0.375fil\leaders\hrule height.625\p@ depth.625\p@ \hskip\z@\@plus0.25fil \hskip\z@\@plus0.375fil
- % \hskip\skip@
- % \hfil
- }%
-% \hyper@anchorend
- \hfil
- }%
- \hss
- }%
-}%
-\appdef\setup@hook{%
- \let\bibpreamble\@empty
- \bibsep\z@\relax
- \def\newblock{\ }%
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\bibfont}
-% We define the font switch that applies to the body of the bibliography.
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \def\bibfont{%
- \small
- \@clubpenalty\clubpenalty
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Index}%
-% FIXME: the following call to \cmd\twocolumn\ appears wrong if we were in two-column grid.
-% \changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
-% \changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
-% \begin{macrocode}
-\newenvironment{theindex}{%
- \columnseprule \z@
- \columnsep 35\p@
- \c@secnumdepth-\maxdimen
- \onecolumngrid@push
- \section{\indexname}%
- \thispagestyle{plain}%
- \parindent\z@
- \parskip\z@ plus.3\p@\relax
- \let\item\@idxitem
- \onecolumngrid@pop
-}{%
-%\onecolumngrid@pop
-}%
-%
-\def\@idxitem{\par\hangindent 40\p@}%
-%
-\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}%
-%
-\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}%
-%
-\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}%
-% \end{macrocode}
-%
-%
-% \subsection{Journal- and Pointsize-Specific Code}%
-%
-% After this substyle is read in, we will execute the code specific to the selected
-% journal: execute the society/journal \file{.rtx} file if it exists, or
-% execute the society/journal macro (if the latter is not defined, it will \cmd\relax\ out).
-% Here we define the default journal.
-% \begin{macrocode}
-\def\@journal@default{pra}%
-% \end{macrocode}
-%
-% \subsection{Typesize-Specific Code}%
-%
-% After this society file is read in, we will process the \cmd\@pointsize-specific
-% code. Here we define the default.
-% \begin{macrocode}
-\def\@pointsize@default{10}%
-% \end{macrocode}
-%
-% Note: the convention in \revtex\ and its substyles is that
-% the substyle must not override any explicit class options
-% declared by the document.
-% This means that the various Booleans of Section~\ref{sec:options}
-% may be assigned here only if they are still undefined at this point.
-%
-% For the APS, we supply code specific to journals PRA, PRB, PRC, PRD, PRE, PRL, PRX, PRAPPLIED, PRMATERIALS, PRFLUIDS, PRAB (was PRSTAB), PRPER (was PRSTPER), and RMP.
-% At present, they are identical,
-% with the exception of PRL and RMP.
-% We also introduce a new generic physrev style now that all of the Phys. Rev. journals
-% are identical
-% In 4.2, we make the inclusion of titles in the bibliography the default
-%
-% For most all of the APS journals, the journal-dependent
-% code is relatively meager and is therefore embedded in this file.
-% However, the RMP code is sufficiently extensive that
-% splitting it out into a separate file is more convenient.
-%
-% \subsubsection{\classoption{pra}}%
-% There is no code specific to \classoption{pra}.
-% \begin{macrocode}
-\def\rtx@apspra{%
- \class@info{APS journal PRA selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prb}}%
-% There is no code specific to \classoption{prb}.
-% \begin{macrocode}
-\def\rtx@apsprb{%
- \class@info{APS journal PRB selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prc}}%
-% There is no code specific to \classoption{prc}.
-% \begin{macrocode}
-\def\rtx@apsprc{%
- \class@info{APS journal PRC selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prd}}%
-% There is no code specific to \classoption{prd}.
-% \begin{macrocode}
-\def\rtx@apsprd{%
- \class@info{APS journal PRD selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{pre}}%
-% There is no code specific to \classoption{pre}.
-% \begin{macrocode}
-\def\rtx@apspre{%
- \class@info{APS journal PRE selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prl}}%
-% \begin{macrocode}
-\def\rtx@apsprl{%
- \class@info{APS journal PRL selected}%
-% \end{macrocode}
-% In PRL, the default is the \classoption{bibnotes} option,
-% and the Acknowledgments section has no head.
-%
-% The References head is a device that may be described as a lozenge centered on the baseline,
-% 71 points wide by 2 points thick, with the ends tapering to a half point in thickness.
-% Space above 26 points base to base, below 31 base to base.
-%FIXME: this code may confound \classname{geometry}
-% \begin{macrocode}
- \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote
- \@booleanfalse\acknowledgments@sw
- \appdef\setup@hook{%
- \def\bibsection{%
- \par
- \begingroup
- \baselineskip26\p@
- \bib@device{\hsize}{72\p@}%
- \endgroup
- \nobreak\@nobreaktrue
- \addvspace{19\p@}%
- }%
- }%
-% \end{macrocode}
-% Implement length checking.
-% Use the \classname{times} and \classname{mathtime} packages,
-% plus whatever other processing is required
-% to make the formatted output be true
-% to the metrics of the journal.
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
- \lengthcheck@sw{%
- \RequirePackage{times}%
-% \end{macrocode}
-% Wait. Do not use mathtime after all. APS has their own way of doing math pi, involving
-% Adobe Mathematical Pi and other fonts.
-% \begin{verbatim}
-% \RequirePackage{mathtime}%
-% \end{verbatim}
-% \begin{macrocode}
- }{}%
-}%
-% \end{macrocode}
-% A PRL does not have numbered sections.
-% \begin{macrocode}
- \c@secnumdepth=-\maxdimen
-% \end{macrocode}
-% Note: we defer this code until after type size file is read in.
-% \begin{macrocode}
- \appdef\setup@hook{%
- \@ifnum{\@pointsize=10\relax}{%
- \lengthcheck@sw{%
- \def\large{%
- \@setfontsize\large{12.5}{14\p@}%
- }%
- \def\normalsize{%
- \@setfontsize\normalsize{10.5}\@xiipt
- \abovedisplayskip 6\p@ \@plus6\p@ \@minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
- }%
- \def\small{%
- \@setfontsize\small{9.5}\@xipt
- \abovedisplayskip 5\p@ \@plus5\p@ \@minus4\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
- }%
- \DeclareMathSizes{12.5}{12.5}{9}{6}%
- \DeclareMathSizes{10.5}{10.5}{7.5}{5}%
- \DeclareMathSizes{9.5}{9.5}{7.0}{5}%
- }{%
- \def\normalsize{%
- \@setfontsize\normalsize\@xpt\@xiipt
- \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
- }%
- }%
- }{}%
- }%
- \textheight = 694.0\p@
-% \end{macrocode}
-%
-% End of \classoption{prl} code.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prper}}%
-% There is no code specific to \classoption{prper}
-% \begin{macrocode}
-\def\rtx@apsprper{%
- \class@info{APS journal PRPER selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prab}}%
-% There is no code specific to \classoption{prab}.
-% \begin{macrocode}
-\def\rtx@apsprab{%
- \class@info{APS journal PRAB selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prx}}%
-% There is no code specific to \classoption{prx}.
-% \begin{macrocode}
-\def\rtx@apsprx{%
- \class@info{APS journal PRX selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prapplied}}%
-% There is no code specific to \classoption{prapplied}.
-% \begin{macrocode}
-\def\rtx@apsprapplied{%
- \class@info{APS journal PRApplied selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prmaterials}}%
-% There is no code specific to \classoption{prmaterials}.
-% \begin{macrocode}
-\def\rtx@apsprmaterials{%
- \class@info{APS journal PRMaterials selected}%
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{prfluids}}%
-% PRFluids uses a one-column format for journal format, but if authors want this, they should use the onecolumn option and not the reprint option.
-% Parsing of documentclass options is rather involved and hard to control precisely enough to have the correct behavior using the reprint option.
-% \begin{macrocode}
-\def\rtx@apsprfluids{%
- \class@info{APS journal PRFluids selected}%
- \@booleanfalse\titlepage@sw
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{physrev}}%
-% There is no code specific to \classoption{physrev}.
-% \begin{macrocode}
-\def\rtx@apsphysrev{%
- \class@info{APS unified Physical Review journal style selected}%
-% \begin{macrocode}
-}%
-% \end{macrocode}
-%
-% \subsubsection{\classoption{rmp}}%
-% If this option has been selected, we will read in the needed code from the file \file{apsrmp.rtx}.
-%
-% \subsection{Establish APS Defaults}\label{sec:aps-defaults}
-%
-% \begin{macro}{\footinbib@sw}
-% All APS journals except RMP effectively invoke the \classoption{footinbib} option.
-% We rely on the RMP-specific code to override this assignment.
-% \begin{macrocode}
-\@booleantrue\footinbib@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@bibdataout@init}
-% \begin{macro}{\@bibdataout@aps}
-% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
-% Procedure \cmd\@bibdataout@aps\ has the job of writing the control record into the
-% job's \cmd\jobname\filename{.bib} file, where it will adjust the options to \filename{.bst} processing.
-% It is installed into the initialization procedure \cmd\@bibdataout@init, and its meaning
-% is set by the society (APS) and journal.
-% For all but RMP, we select the Physical Review style.
-% For the latter case, we change the meaning, per the code in \file{apsrmp.rtx}.
-%
-% \begin{macrocode}
-\appdef\@bibdataout@rev{\@bibdataout@aps}%
-\def\@bibdataout@aps{%
- \immediate\write\@bibdataout{%
-% \end{macrocode}
-% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
-% \begin{macrocode}
- @CONTROL{%
- apsrev42Control%
-% \end{macrocode}
-% Say whether we want long bibliography style (the default), or the abbreviated style.
-% \changes{4.2b}{2017/11/22}{(MD) MD - not sure why these parameters were different previously. Made them match except for title.}%
-% Use binary flags on control.* flags in bst file to set appropriate parameters
-% author = 08 corresponds to initials, jrnlst
-% editor = 1 corresponds to format identical to authors
-% title = 0 means to include title in journal references if present; title ="" means omit the title even if present (this should be the only difference between long and short bib styles)
-% year = 1 corresponds to truncate
-% page = 0 corresponds to using single page number rather than a range
-% \begin{macrocode}
- \longbibliography@sw{%
- ,author="08",editor="1",pages="0",title="0",year="1"%
- }{%
- ,author="08",editor="1",pages="0",title="",year="1"%
- }%
- }%
- }%
-% \end{macrocode}
-% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
-% \begin{macrocode}
- \if@filesw
- \immediate\write\@auxout{\string\citation{apsrev42Control}}%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\place@bibnumber}
-% \begin{macro}{\@bibstyle}
-% We install code that will select the presentation for \cmd\bibitem s
-% and govern the \BibTeX\ processing.
-% \begin{macrocode}
-\let\place@bibnumber\place@bibnumber@inl
-\def\@bibstyle{apsrev\substyle@post}%
-% \end{macrocode}
-% \begin{verbatim}
-%\appdef\setup@hook{%
-% \longbibliography@sw{%
-% \appdef\@bibstyle{long}%
-% }{}%
-%}%
-% \end{verbatim}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{APS Sanity Checking}\label{sec:aps-sanity}
-% \changes{4.1f}{2009/07/20}{(AO, 524) Makes no sense if citations are superscript numbers and so are footnotes}
-%
-% Rule: if \cmd\place@bibnumber\ is \cmd\place@bibnumber@sup\
-% (citations are numbered and set superscript),
-% then it makes no sense for \cmd\footinbib@sw\ to be \cmd\false@sw\
-% (footnotes set in the bibliography, as endnotes).
-% If both conditions prevailed, then the document would have footnotes
-% and citations both as superscript arabic numbers, but independently numbered,
-% which would be confusing.
-%
-% Any society that provides for both superscript numbered citations as well as for
-% numbered footnotes should check for this same condition, and deal with it.
-%
-% Note: an alternative would be for footnotes to use the same sequence of footnote devices
-% that are used by the frontmatter footnotes
-% (\cmd\frontmatter@thefootnote\ instead of arabic numbers).
-%
-% In this case, we would want to refrain from resetting \cmd\c@footnote\ at the end of
-% the title page formatting.
-% We would also want to treat body footnotes identically to frontmatter footnotes:
-% the assignments in \cmd\titleblock@produce\ would persist throughout the document.
-%
-% But APS do not choose to go that route.
-% \begin{macrocode}
-\appdef\setup@hook{%
- \@ifx{\place@bibnumber\place@bibnumber@sup}{%
- \footinbib@sw{}{%
- \class@warn{Citations are superscript numbers: footnotes must be endnotes; changing to that configuration}%
- \@booleantrue\footinbib@sw
- }%
- }{}%
-}%
-% \end{macrocode}
-%
-% Here ends the substyle for society APS.
-% \begin{macrocode}
-%</aps>
-% \end{macrocode}
-%
-%
-% \section{The \classoption{rmp} journal substyle: the \texttt{rmp} module}
-%
-% The file \file{apsrmp.rtx} is read in by the \classname{revtex4} document class
-% if \cmd\@society\ has the value \classoption{aps}
-% and \cmd\@journal\ has the value \classoption{rmp}.
-%
-% It is read at the end of the \file{aps.rtx}, so all definitions
-% and assignments in that file are operative unless overridden here.
-%
-%
-% \begin{macrocode}
-%<*rmp>
-% \end{macrocode}
-%
-% Protect this file from being read in by anything but \revtex.
-% \begin{macrocode}
-\ifx\undefined\substyle@ext
- \def\@tempa{%
- \endinput
- \GenericWarning{I must be read in by REVTeX! (Bailing out)}%
- }%
- \expandafter\else
- \def\@tempa{}%
- \expandafter\fi\@tempa
-% \end{macrocode}
-%
-% Protect this file from being read in as a society instead of a journal.
-% In such a case, \cmd\@journal\ will be undefined.
-% \begin{macrocode}
-\@ifxundefined\@journal{%
-% \end{macrocode}
-% One alternative: abort the document.
-% Another alternative: try to recover: force load the aps society file
-% \begin{macrocode}
- \class@warn{Please specify the REVTeX options [aps,rmp]!}%
- \@@end
-}{}%
-% \end{macrocode}
-% Log the journal substyle.
-% \begin{macrocode}
- \class@info{APS journal RMP selected}%
-% \end{macrocode}
-%
-% \subsection{Frontmatter}%
-%
-% We assign the titlepage style for RMP; a document instance
-% may override by invoking one of the class options of \revtex.
-% \begin{macrocode}
-\clo@groupedaddress
-% \end{macrocode}
-%
-% \begin{macro}{\frontmatter@setup}
-%
-% \begin{macrocode}
-\def\frontmatter@setup{%
- \normalfont\sffamily\raggedright
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\PACS@warn}
-% Per Mark Doyle, RMP never displays the PACS, so they don't want the `use showpacs' warning spit out.
-%\changes{4.2b}{2017/11/22}{(MD) PACS are obsolete altogether now}%
-% \begin{macrocode}
-\def\PACS@warn{RMP documents do not display PACS and PACS are obsolete. Your \string\pacs\space will be ignored}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@title@above}
-% \begin{macro}{\frontmatter@title@format}
-% \begin{macro}{\frontmatter@title@below}
-%
-% \begin{macrocode}
-\def\frontmatter@title@above{}%
-\def\frontmatter@title@format{\Large\bfseries\raggedright}% HelveticaNeue-Medium(Italic) 14pt.
-\def\frontmatter@title@below{\addvspace{12\p@}}% 24pt b-b down to first author
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@authorformat}
-% \changes{4.1b}{2008/08/04}{Rag the right even more: .8\cs{hsize}. Also, assign \cs{@totalleftmargin}.}%
-% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
-% Set the rag to a milder value, because we want to do true ragged right
-% typesetting, as opposed to the \LaTeX\ default, which gives very poor results.
-%
-% Note: author font is 9.8bp. 19.2bp/14.3bp above/below.
-% \begin{macrocode}
-\def\frontmatter@authorformat{%
- \preprintsty@sw{\vskip0.5pc\relax}{}%
- \@tempskipa\@flushglue
- \@flushglue\z@ plus.8\hsize
- \raggedright\advance\leftskip.5in\relax
- \@flushglue\@tempskipa
- \parskip\z@skip
- \@totalleftmargin\leftskip
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@affiliationfont}
-% \changes{4.1b}{2008/08/04}{As with author formatting, rag the right more, and assign \cs{@totalleftmargin}. Also neutralize \cs{def@after@address}.}%
-% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
-% The hook \cmd\frontmatter@affiliationfont\ controls the formatting of affiliations and affiliation groups.
-% The hook \cmd\frontmatter@above@affilgroup\ is invoked just before proceeding with author/affiliation processing.
-% 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}.
-%
-% Note: affiliation font is 9.03/10.4bp, 14.3bp/19.2bp b-b above/below
-% \begin{macrocode}
-\def\frontmatter@affiliationfont{% Helvetica 9/10.2
- \small\slshape\selectfont\baselineskip10.5\p@\relax
- \@tempskipa\@flushglue
- \@flushglue\z@ plus.8\hsize
- \raggedright\advance\leftskip.5in\relax
- \@flushglue\@tempskipa
- \@totalleftmargin\leftskip
- \let\def@after@address\def@after@address@empty
-}%
-\def\frontmatter@above@affilgroup{\addvspace{7.2\p@}}% additional leading above an author
-\def\frontmatter@above@affiliation{\addvspace{5.3\p@}}%
-\def\frontmatter@above@affiliation@script{}%
-% \end{macrocode}
-% \end{macro}
-%
-% Set up the default RMP style for title block authors and affiliations.
-% We assign the titlepage style for RMP; a document instance
-% may override by invoking one of the class options of \revtex.
-% \changes{4.1b}{2008/08/04}{The \texttt{rmp} journal substyle selects \texttt{groupedaddress} by default.}%
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-%
-% This command should override the effect of the
-% corresponding command in the society substyle,
-% and any document class option bearing on same will in turn override.
-% \begin{macrocode}
-\clo@groupedaddress
-% \end{macrocode}
-%
-% \begin{macro}{\frontmatter@RRAP@format}
-% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
-% Note: in RMP, if we are not in preprint mode, the date will not be produced.
-%
-% Note: Helvetica C/lc, 8.98bp, space above: 16.3bp b-b.
-% \begin{macrocode}
-\def\frontmatter@RRAP@format{%
- \addvspace{7.3\p@}%
- \small
- \raggedright\advance\leftskip.5in\relax
- \@totalleftmargin\leftskip
-}%
-\def\produce@RRAP#1{%
- \@if@empty{#1}{}{%
- \@ifvmode{\leavevmode}{}%
- \unskip(\ignorespaces#1\unskip)\quad
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractheading}
-% Space above 21.8bp b-b.
-% \begin{macrocode}
-\def\frontmatter@abstractheading{%
- \preprintsty@sw{%
- \begingroup
- \centering\large
- \abstractname
- \par
- \endgroup
- \vspace{.5pc}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@abstractfont}
-% TimesTen 8.93bp/9.6bp X 360bp, indented 36bp, with 21.9/37.6bp b-b above/below
-% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
-% \begin{macrocode}
-\def\frontmatter@abstractfont{%
- \footnotesize
- \hsize360\p@
- \leftskip=0.5in
- \parindent\z@
- \@totalleftmargin\leftskip
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter@preabstractspace}
-% \begin{macro}{\frontmatter@postabstractspace}
-% Space above and space below abstract in title block.
-% Should be 22/36 points base-to-base.
-% \begin{macrocode}
-\def\frontmatter@preabstractspace{7.7\p@}%
-\def\frontmatter@postabstractspace{24.6\p@}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% FIXME: Not done: PACS.
-% FIXME: TOC: Head is same as \section: HelveticaNeue 8.98. 32/22bp b-b above/below,
-% Body: TimesTen 8/10.5.
-%
-% \subsection{General Text}%
-%
-% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
-% If not in preprint mode, RMP sets the type size to 10/12 point. Note: s/b 11.6bp leading
-%FIXME: define \cmd\normalsize\ only if nobody else has done so.
-% \begin{macrocode}
- \appdef\setup@hook{%
- \preprintsty@sw{}{%
- \def\normalsize{%
- \@setsize\normalsize{12pt}\xpt\@xpt
- \abovedisplayskip 10\p@ plus2\p@ minus5\p@
- \belowdisplayskip \abovedisplayskip
- \abovedisplayshortskip \abovedisplayskip
- \belowdisplayshortskip \abovedisplayskip
- \let\@listi\@listI
- }%
- }%
- }%
-% \end{macrocode}
-%
-% Footnote mods:
-% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
-% \begin{macrocode}
- \footnotesep 9.25pt
- \skip\footins 36pt plus 4pt minus 12pt
- \def\footnoterule{%
- \dimen@\skip\footins\divide\dimen@\thr@@
- \kern-\dimen@\hrule width.5in\kern\dimen@
- }%
-% \end{macrocode}
-%
-%
-% \subsection{Sectioning}
-% \changes{4.1b}{2008/08/04}{Use \cs{setup@hook} to initialize all.}
-% \changes{4.1b}{2008/08/01}{Section numbering via procedures \cs{secnums@rtx} and \cs{secnums@arabic}.}
-%
-% We override the meaning of \cmd\secnums@rtx.
-% The class option \classoption{secnumarabic} will continue to work.
-% \begin{macrocode}
-\def\secnums@rtx{%
- \@ifxundefined\thepart{%
- \def\thepart{\Roman{part}}%
- }{}%
- \@ifxundefined\thesection{%
- \def\thesection {\Roman{section}}%
- \def\p@section {}%
- }{}%
- \@ifxundefined\thesubsection{%
- \def\thesubsection {\Alph{subsection}}%
- \def\p@subsection {\thesection.}%
- }{}%
- \@ifxundefined\thesubsubsection{%
- \def\thesubsubsection {\arabic{subsubsection}}%
- \def\p@subsubsection {\thesection.\thesubsection.}%
- }{}%
- \@ifxundefined\theparagraph{%
- \def\theparagraph {\alph{paragraph}}%
- \def\p@paragraph {\thesection.\thesubsection.\thesubsubsection.}%
- }{}%
- \@ifxundefined\thesubparagraph{%
- \def\thesubparagraph {\arabic{subparagraph}}%
- \def\p@subparagraph {\thesection.\thesubsection.\thesubsubsection.\theparagraph.}%
- }{}%
-}%
-% \end{macrocode}
-%
-% In RMP, put a period (.), followed by `nut space', after the section number.
-% Also, hang the section number (the \LaTeX\ default).
-% \begin{macrocode}
-\def\@seccntformat#1{\csname the#1\endcsname.\hskip0.5em\relax}%
-% \end{macrocode}
-%
-% Note that we wish to set the section head uppercase, so we use
-% David Carlisle's \cmd\MakeTextUppercase. However, because this procedure effectively
-% parses its argument (looking for things to \emph{not} translate), it has to be invoked
-% in such a way that the argument of the \cmd\section\ command is passed to it as its
-% own argument.
-%
-% To accomplish this, we use the \cmd\@hangfrom@\ hook, which was developed for this
-% purpose.
-% \changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
-% \begin{macrocode}
- \def\section{%
- \@startsection{section}{1}{\z@}{0.8cm plus1ex minus.2ex}{0.4cm}%
- {%
- \small\sffamily\bfseries\selectfont
- \raggedright
- \parindent\z@
- }%
- }%
- \def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}%
- \def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
- \def\subsection{%
- \@startsection{subsection}{2}{\z@}{0.8cm plus1ex minus.2ex}{0.4cm}%
- {%
- \small\sffamily\bfseries
- \raggedright
- \parindent\z@
- }%
- }%
- \def\subsubsection{%
- \@startsection{subsubsection}{3}{\z@}{.8cm plus1ex minus.2ex}{0.4cm}%
- {%
- \small\sffamily\selectfont
- \raggedright
- \parindent\z@
- }%
- }%
- \def\paragraph{%
- \@startsection{paragraph}{4}{\z@}{.8cm plus1ex minus.2ex}{-1em}%
- {%
- \small\slshape\selectfont
- \raggedright
- \parindent\z@
- }%
- }%
- \def\subparagraph{%
- \@startsection{subparagraph}{4}{\parindent}{3.25ex plus1ex minus.2ex}{-1em}%
- {\normalsize\bfseries\selectfont}%
- }%
-%
- \setcounter{tocdepth}{4}% FIXME: has no effect
-% \end{macrocode}
-%
-% \begin{macro}{\appendix}
-% \begin{macro}{\@hangfrom@appendix}
-% \begin{macro}{\@hangfroms@appendix}
-% \begin{macro}{\@appendixcntformat}
-% \changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
-% \begin{macrocode}
-\appdef\appendix{%
- \let\@hangfrom@section\@hangfrom@appendix
- \let\@sectioncntformat\@appendixcntformat
-}%
-\def\@hangfrom@appendix#1#2#3{%
- #1%
- \@if@empty{#2}{%
- #3%
- }{%
- #2\@if@empty{#3}{}{:\ #3}%
- }%
-}%
-\def\@hangfroms@appendix#1#2{%
- #1\appendixname\@if@empty{#2}{}{:\ #2}%
-}%
-\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Figure and Table Caption Formatting}
-% \begin{macro}{\@makecaption}
-% \changes{4.1b}{2008/07/01}{Break out \cs{@caption@fignum@sep}}
-%
-% \begin{macrocode}
-\setlength\belowcaptionskip{2\p@}
-\long\def\@makecaption#1#2{%
- \vskip\abovecaptionskip
- \vbox{%
- \flushing
- \small\rmfamily
- \noindent
- #1\@caption@fignum@sep#2\par
- }%
- \vskip\belowcaptionskip
-}%
-\def\@caption@fignum@sep{\nobreak\hskip.5em plus.2em\ignorespaces}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Citations and Bibliography}%
-%
-% Customize \revtex\ for the journal substyle;
-% this task requires three components:
-% a \BibTeX\ \file{.bst} style file,
-% customizing code for \file{natbib}, and
-% customizations of the \env{thebibliography} environment.
-%
-% \begin{macro}{\@bibstyle}
-% Define the argument of the \cmd\bibliographystyle\ command
-% (if the document does not do so).
-%
-% The user must have installed a \file{.bst} file of the corresponding name.
-% This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file.
-%
-% To generate \file{apsrmp.bst}, use \classname{custom-bib} version 3.89d1 or later.
-% Run the \file{.bst} generator, \file{makebst.tex}, with the following options:
-%
-% \def\QandA#1#2#3{\item#1: \textbf{#2}: \texttt{#3}---}%
-% \def\CandE#1{\item\relax\texttt{#1}---}%
-% \begin{enumerate}
-% \QandA{STYLE OF CITATIONS}{a}{ay}Author-year with some non-standard interface
-% \QandA{AUTHOR}{*}{nat}Natbib for use with natbib v5.3 or later
-% \QandA{LANGUAGE FIELD}{l}{lang}Use language field to switch hyphenation patterns for title
-% \QandA{PRESENTATIONS}{b}{pres,pres-bf}Presentation, speaker bold face
-% \QandA{ORDER ON VON PART }{x}{vonx}Sort without von part (de la Maire after Mahone)
-% \QandA{AUTHOR NAMES}{a}{nm-rev1}Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones)
-% \QandA{POSITION OF JUNIOR }{*}{jnrlst}Junior comes last as Smith, John, Jr.
-% \QandA{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES}{u}{nmft,nmft-def}User defined author font (\cmd\bibnamefont)
-% \QandA{FONT FOR FIRST NAMES }{u}{fnm-def}First names in user defined font (\cmd\bibfnamefont)
-% \QandA{EDITOR NAMES IN INCOLLECTION ETC}{a}{nmfted}Editors incollection like authors font
-% \QandA{FONT FOR `AND' IN LIST}{r}{nmand-rm}`And' in normal font (JONES and JAMES)
-% \QandA{FONT OF CITATION LABELS IN TEXT }{u}{lab,lab-def}User defined citation font (\cmd\citenamefont)
-% \QandA{FONT FOR `AND' IN CITATIONS }{r}{and-rm}Cited `and' in normal font
-% \QandA{LABEL WHEN AUTHORS MISSING }{*}{keyxyr}Year blank when KEY replaces missing author (for natbib 7.0)
-% \QandA{DATE POSITION}{b}{dt-beg}Date after authors
-% \QandA{DATE FORMAT }{m}{yr-com}Date preceded by comma as `, 1993'
-% \QandA{INCLUDE MONTHS}{m}{aymth}Include month in date
-% \QandA{REVERSED DATE }{r}{dtrev}Date as year month
-% \QandA{TRUNCATE YEAR }{*}{note-yr}Year text full as 1990--1993 or `in press'
-% \QandA{TITLE OF ARTICLE}{d}{tit-qq}Title and punctuation in double quotes (``Title,'' ..)
-% \QandA{TITLE PRESENT IN ARTICLE, INCOLLECTION, AND INPROCEEDINGS}{x}{jtit-x}Title is ignored
-% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{y}{inproceedings-chapter}produce pages after chapter just as in InBook
-% \QandA{ARTICLE BOOKTITLE PRESENT}{?}{article-booktitle}format booktitle
-% \QandA{ARTICLE SERIES PRESENT}{?}{article-series}article can has series
-% \QandA{JOURNAL NAME FONT}{r}{jttl-rm}Journal name normal font
-% \QandA{JOURNAL NAME WITH ADDRESS}{y}{journal-address}Include address field (in parentheses) along with journal name
-% \QandA{BOOK TITLE FIELDS}{y}{book-bt}Field `booktitle', or if absent field `title', is book title
-% \QandA{THESIS TITLE OPTIONAL}{?}{thesis-title-o}Title is optional: no warning issued if empty
-% \QandA{TECHNICAL REPORT TITLE}{b}{trtit-b}Tech. report title like books
-% \QandA{JOURNAL VOLUME}{b}{vol-bf}Volume bold as {\bf vol}(num)
-% \QandA{JOURNAL VOL AND NUMBER}{s}{vnum-sp}Journal vol (num) as 34 (2)
-% \QandA{VOLUME PUNCTUATION}{c}{volp-com}Volume with comma as vol(num), ppp
-% \QandA{PAGE NUMBERS}{f}{jpg-1}Only start page number
-% \QandA{POSITION OF PAGES}{e}{pp-last}Pages at end but before any notes
-% \QandA{BOOK EDITOR W/O AUTHOR}{}{book-editor-booktitle}Book permits empty author, produces title before editor in this case
-% \QandA{INBOOK PERMITS TITLE, BOOKTITLE, AUTHOR, EDITOR}{a}{inbook-editor-booktitle}Allow using both title/booktitle, both author/editor
-% \QandA{CONFERENCE ADDRESS FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{a}{bookaddress}Italic booktitle followed by bookaddress in roman
-% \QandA{NUMBER AND SERIES FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{*}{num-xser}Allows number without series and suppresses word "number"
-% \QandA{WORD NUMBER CAPITALIZED FOR NUMBER AND SERIES}{c}{number-cap}Capitalize word `number' as: "Number 123"
-% \QandA{WORD CHAPTER CAPITALIZED}{c}{chapter-cap}Capitalize word `chapter' as: `Chapter 42'
-% \QandA{COMBINING NUMBER AND SERIES}{x}{series-number}Series number as: `Springer Lecture Notes No. 125'
-% \QandA{POSITION OF NUMBER AND SERIES}{b}{numser-booktitle}After book title and conference address, and before editors
-% \QandA{VOLUME AND SERIES FOR BOOKS}{s}{ser-vol}Series, vol. 23
-% \QandA{VOLUME AND SERIES FORMATTING}{y}{ser-rm}format series roman , even when used with volume
-% \QandA{WORD VOLUME CAPITALIZED FOR VOLUME AND SERIES}{y}{volume-cap}Capitalize word `volume', as: `Volume 7 in Lecture Series'
-% \QandA{POSITION OF VOLUME AND SERIES FOR INCOLLECTION, INBOOK, AND INPROCEEDINGS}{e}{ser-ed}Series and volume after booktitle and before editors
-% \QandA{JOURNAL NAME PUNCTUATION}{x}{jnm-x}Space after journal name
-% \QandA{PAGES IN BOOK}{*}{pg-bk,book-chapter-pages}As chapter and page: chapter 42, page 345
-% \QandA{PUBLISHER IN PARENTHESES}{p}{pub-par}Publisher in parentheses
-% \QandA{EMPTY PUBLISHER PARENTHESES}{y}{ay-empty-pub-parens-x}eliminate parentheses altogether if nothing inside
-% \QandA{PUBLISHER POSITION}{e}{pre-edn}Edition before publisher
-% \QandA{SCHOOL}{p}{school-par}school/address in parens: `(school, address)'
-% \QandA{ISBN NUMBER}{*}{isbn}Include ISBN for books, booklets, etc.
-% \QandA{ISSN NUMBER}{*}{issn}Include ISSN for periodicals
-% \QandA{DOI NUMBER}{a}{doi-link,doi}Doi forms a link to the publication, anchored to the volume or title
-% \QandA{`EDITOR' AFTER NAMES}{a}{bkedcap}`Name Editor,' as above, editor upper case
-% \QandA{EDITOR IN COLLECTIONS}{b}{edby}In booktitle, edited by .. (where .. is names)
-% \QandA{PUNCTUATION BETWEEN SECTIONS }{c}{blk-com}Comma between blocks
-% \QandA{FINAL PUNCTUATION}{c}{fin-endbibitem}Command at end instead of period
-% \QandA{ABBREVIATE WORD `PAGES' }{a}{pp}`Page' abbreviated as p. or pp.
-% \QandA{ABBREVIATE WORD `EDITORS'}{a}{ed}`Editor' abbreviated as ed. or eds.
-% \QandA{OTHER ABBREVIATIONS}{a}{abr}Abbreviations of such words
-% \QandA{ABBREVIATION FOR `EDITION' }{a}{ednx}`Edition' abbreviated as `ed'
-% \QandA{EDITION NUMBERS}{n}{ord}Numerical editions as 1st, 2nd, 3rd, etc
-% \QandA{STORED JOURNAL NAMES}{a}{jabr}Abbreviated journal names
-% \QandA{COMMA BEFORE `AND'}{c}{and-com}Comma even with 2 authors as `Tom, and Harry'
-% \QandA{FONT OF `ET AL'}{i}{etal-it}Italic et al
-% \QandA{ADDITIONAL REVTeX DATA FIELDS}{r}{revdata,eprint,url,url-blk,translation}Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
-% \QandA{SLACcitation FIELD}{?}{SLACcitation}Produce SLACcitation field
-% \QandA{NUMPAGES DATA FIELD}{*}{numpages-x}Do not include numpages field
-% \QandA{REFERENCE COMPONENT TAGS}{b}{bibinfo}Reference component tags like \cmd\bibinfo\ in the content of \cmd\bibitem
-% \QandA{ELEMENT TAGS}{b}{bibfield}Element tags like \cmd\bibfield\ in the content of \cmd\bibitem
-% \QandA{COMPATIBILITY WITH PLAIN TEX}{*}{nfss}Use LaTeX commands which may not work with Plain TeX
-% \end{enumerate}
-%
-% A file \file{apsrmp.dbj} file equivalent to the following should result:
-% \begin{verbatim}
-%\input docstrip
-%\preamble
-%----------------------------------------
-%*** REVTeX-compatible RMP 2010-02-12 ***
-%\endpreamble
-%\postamble
-%End of customized bst file
-%\endpostamble
-%\keepsilent
-%\askforoverwritefalse
-%\def\MBopts{\from{merlin.mbs}{%
-% head,\MBopta}
-%\from{physjour.mbs}{\MBopta}
-%\from{geojour.mbs}{\MBopta}
-%\from{photjour.mbs}{\MBopta}
-%\from{merlin.mbs}{tail,\MBopta}}
-%\def\MBopta{%
-% ay,%: Author-year with some non-standard interface
-% nat,%: Natbib for use with natbib v5.3 or later
-% lang,%: Use language field to switch hyphenation patterns for title
-% pres,pres-bf,%: Presentation, speaker bold face
-% vonx,%: Sort without von part (de la Maire after Mahone)
-% nm-rev1,%: Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones)
-% jnrlst,%: Junior comes last as Smith, John, Jr.
-% nmft,nmft-def,%: User defined author font (\bibnamefont)
-% fnm-def,%: First names in user defined font (\bibfnamefont)
-% nmfted,%: Editors incollection like authors font
-% nmand-rm,%: `And' in normal font (JONES and JAMES)
-% lab,lab-def,%: User defined citation font (\citenamefont)
-% and-rm,%: Cited `and' in normal font
-% keyxyr,%: Year blank when KEY replaces missing author (for natbib 7.0)
-% dt-beg,%: Date after authors
-% yr-par,%: Year in parentheses as (1993)
-% dtrev,%: Date as year month
-% date-nil-x,%: If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
-% tit-qq,%: Title and punctuation in double quotes (``Title,'' ..)
-% inproceedings-chapter,%: produce pages after chapter, just as in InBook
-% jtit-x,%: Title is ignored
-% inproceedings-chapter,%: produce pages after chapter just as in InBook
-% article-booktitle,%: format booktitle
-% article-series,%: article can has series
-% jttl-rm,%: Journal name normal font
-% journal-address,%: Include address field (in parentheses) along with journal name
-% book-bt,%: Field `booktitle', or if absent field `title', is book title
-% thesis-title-o,%: Title is optional: no warning issued if empty
-% trtit-b,%: Tech. report title like books
-% techreport-institution-par,%: format tech report institution like book publisher
-% vol-bf,%: Volume bold as {\bf vol}(num)
-% vnum-sp,%: Journal vol (num) as 34 (2)
-% volp-com,%: Volume with comma as vol(num), ppp
-% jpg-1,%: Only start page number
-% pp-last,%: Pages at end but before any notes
-% book-editor-booktitle,%: Book permits empty author, produces title before editor in this case
-% inbook-editor-booktitle,%: Allow using both title/booktitle, both author/editor
-% bookaddress,%: Italic booktitle followed by bookaddress in roman
-% num-xser,%: Allows number without series and suppresses word "number"
-% number-cap,%: Capitalize word `number' as: "Number 123"
-% chapter-cap,%: Capitalize word `chapter' as: `Chapter 42'
-% series-number,%: Series number as: `Springer Lecture Notes No. 125'
-% numser-booktitle,%: After book title and conference address, and before editors
-% ser-vol,%: Series, vol. 23
-% ser-rm,%: format series roman , even when used with volume
-% volume-cap,%: Capitalize word `volume', as: `Volume 7 in Lecture Series'
-% ser-ed,%: Series and volume after booktitle and before editors
-% jnm-x,%: Space after journal name
-% pg-bk,book-chapter-pages,%: As chapter and page: chapter 42, page 345
-% pub-par,%: Publisher in parentheses
-% ay-empty-pub-parens-x,%: eliminate parentheses altogether if nothing inside
-% pre-edn,%: Edition before publisher
-% school-par,%: school/address in parens: `(school, address)'
-% isbn,%: Include ISBN for books, booklets, etc.
-% issn,%: Include ISSN for periodicals
-% doi-link,doi,%: Doi forms a link to the publication, anchored to the volume or title
-% bkedcap,%: `Name Editor,' as above, editor upper case
-% edby,%: In booktitle, edited by .. (where .. is names)
-% blk-com,%: Comma between blocks
-% fin-endbibitem,%: Command at end instead of period
-% pp,%: `Page' abbreviated as p. or pp.
-% ed,%: `Editor' abbreviated as ed. or eds.
-% abr,%: Abbreviations of such words
-% ednx,%: `Edition' abbreviated as `ed'
-% ord,%: Numerical editions as 1st, 2nd, 3rd, etc
-% jabr,%: Abbreviated journal names
-% and-com,%: Comma even with 2 authors as `Tom, and Harry'
-% etal-it,%: Italic et al
-% revdata,eprint,url,url-blk,translation,%: Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
-% SLACcitation,%: Produce SLACcitation field
-% numpages-x,%: Do not include numpages field
-% url,url-prefix-x,%: URL without prefix (default: `URL ')
-% bibinfo,%: Reference component tags like \bibinfo in the content of \bibitem
-% bibfield,%: Element tags like \bibfield in the content of \bibitem
-% nfss,%: Use LaTeX commands which may not work with Plain TeX
-%,{%
-% }}
-%\generate{\file{apsrmp4-2.bst}{\MBopts}}
-%\endbatchfile
-% \end{verbatim}
-%
-% For a comparison between apsrmp.bst and apsrev.bst, see Section~\ref{sec:CompRevRmp}.
-%
-% \changes{4.1c}{2008/08/15}{Document class option longbibliography via \cs{substyle@post}}
-% \begin{macrocode}
-\def\@bibstyle{apsrmp\substyle@post}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\authoryear@sw}
-% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
-% Author-year citations: default value of \cmd\authoryear@sw\ is true.
-% \begin{macrocode}
-\@booleantrue\authoryear@sw
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@bibdataout@rmp}
-% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
-% When the journal is RMP, the meaning of the procedure \cmd\@bibdataout@aps\ needs to be different
-% because of the way the author names are formatted. In other respects, it is the same.
-% \begin{macrocode}
-\def\@bibdataout@aps{%
- \immediate\write\@bibdataout{%
-% \end{macrocode}
-% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
-% This entry's cite key is \texttt{apsrmp41Control}, which serves as a version number.
-% \begin{macrocode}
- @CONTROL{%
- apsrmp41Control%
-% \end{macrocode}
-% Say whether we want long bibliography style (the default), or the abbreviated style.
-% \begin{macrocode}
- \longbibliography@sw{%
- ,author="03",editor="0",pages="1",title="0",year="0"%
- }{%
- ,author="0B",editor="0",pages="0",title="0",year="1"% TeXSupport
- }%
- }%
- }%
-% \end{macrocode}
-% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
-% \begin{macrocode}
- \if@filesw
- \immediate\write\@auxout{\string\citation{apsrmp41Control}}%
- \fi
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\bibpunct}
-% \begin{macro}{\bibsection}
-% \begin{macro}{\bibpreamble}
-% \begin{macro}{\newblock}
-% \begin{macro}{\bibhang}
-% \begin{macro}{\bibsep}
-% \begin{macro}{\cite}
-% The following commands effectively establish the style in which \cmd\cite\ commands are
-% formatted.
-% You can think of them as the second needed component for the bibliography.
-%
-% Set up for author-year citations:
-% when \cmd\NAT@set@cites\ executes (at \envb{document} time), the \cmd\@biblabel\ will
-% be set to \cmd\NAT@biblabel.
-%
-% Per Karie Friedman (friedman@phys.washington.edu), multiple citations are separated by semicolons, e.g.,
-% (Jones, 1999; Abbott and Smith, 2000; Wortley, 2001a),
-% and
-% multiple citations by the same author by commas, e.g.,
-% Abela et al. (1995, 1997a, 1997b).
-% The third argument of \cmd\bibpunct\ handles the former.
-%
-% The fifth argument puts a comma after the author when the year is not in parens:
-% (Lee et al., 1996).
-%
-% Incidently, this \cmd\bibpunct\ command specifies the \classname{natbib} default values.
-%
-% We define the sectioning command to use when starting the bibliography.
-%
-% We change \classname{natbib}'s \cmd\NAT@def@citea\ procedure to effect more elaborate
-% punctuation for RMP: see item 473:
-% \cmd\cite\ order punctuation: ``If possible, \cmd\textcite should put the word 'and' between two citations and before the last citation in a list of 3 or more.''
-%
-% \begin{macrocode}
-\appdef\setup@hook{%
-% \end{macrocode}
-%
-% We define the punctuation to use in the \cmd\cite\ command's production.
-%
-% \begin{macrocode}
- \bibpunct{(%)
- }{%(
- )}{;}{a}{,}{,}%
-% \end{macrocode}
-%
-% We define the sectioning command to use when starting the bibliography.
-%
-% \begin{macrocode}
- \def\bibsection{%
- \expandafter\section\expandafter*\expandafter{\refname}%
- \@nobreaktrue
- }%
- \let\bibpreamble\@empty
- \def\newblock{\ }%
- \bibhang10\p@
- \bibsep\z@
-% \end{macrocode}
-%
-% Per Mark Doyle, \cmd\cite\ is mapped to \cmd\citep\ in RMP.
-% \changes{4.1i}{2009/10/23}{(AO, 541) Defer assignment of \cs{cite} until after natbib loads}
-% \begin{macrocode}
- \let\cite\citep
-% \end{macrocode}
-%
-% End of code to be delayed until after \classname{natbib} loads.
-% \begin{macrocode}
-}%
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\footinbib@sw}
-% Footnotes in bibliography are consistent only with numbered citations,
-% and are particularly nasty under \classname{natbib}:
-% the packcage will automatically change to numbered references if
-% any \cmd\bibitem\ commands lack the optional argument.
-% Therefore, we must uninvoke it now, even if invoked by the document.
-% The same is quietly done with
-% \classname{natbib}'s \classoption{mcite} and \classoption{compress} options.
-%
-% \changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
-% (AO 523) I changed the code that alters \cmd\NAT@merge\ so that it will not override
-% when \cmd\NAT@merge\ has been set to \cmd\z@.
-% \begin{macrocode}
-\@booleanfalse\footinbib@sw
-\appdef\setup@hook{%
- \footinbib@sw{%
- \class@warn{%
- Footnotes in bibliography are incompatible with RMP.^^J%
- Undoing the footinbib option.
- }%
- \@booleanfalse\footinbib@sw
- }{}%
- \@ifnum{\NAT@merge>\@ne}{\let\NAT@merge\@ne}{}%
- \def\NAT@cmprs{\z@}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\eprint}
-% RMP requires the \cmd\eprint\ field in the bib entry to be set off with the word ``eprint''.
-% \begin{macrocode}
-\def\eprint#1{eprint #1}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Table of Contents}
-%
-% We set up for auto-sizing of certain TOC elements.
-%
-% To do this, we override the definitions for
-% the default TOC font (\cmd\toc@@font),
-% and define
-% formatting for the needed elements (\cmd\l@\dots).
-% Finally, we activate the autosizing by
-% assigning \cmd\toc@pre\ and \cmd\toc@post.
-%
-% \begin{macro}{\toc@@font}
-% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
-% Set the formatting characteristics of the auto-indenting part
-% of the TOC.
-% \begin{macrocode}
-\def\toc@@font{%
- \footnotesize\rmfamily
- \def\\{\space\ignorespaces}%
-}%
-\def\ltxu@dotsep{5.5pt}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\l@section}
-% Determine which TOC elements are automatically indented.
-% \begin{macrocode}
-\def\tocleft@{\z@}%
-\def\tocdim@min{5\p@}%
-\def\l@section{%
- \l@@sections{}{section}% Implicit #3#4
-}%
-\def\l@subsection{%
- \l@@sections{section}{subsection}% Implicit #3#4
-}%
-\def\l@subsubsection{%
- \l@@sections{subsection}{subsubsection}% Implicit #3#4
-}%
-%\def\l@subsubsection#1#2{}%
-\def\l@paragraph#1#2{}%
-\def\l@subparagraph#1#2{}%
-% \end{macrocode}
-% \end{macro}
-%
-% Activate the TOC processing.
-% \begin{macrocode}
-\let\toc@pre\toc@pre@auto
-\let\toc@post\toc@post@auto
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</rmp>
-% \end{macrocode}
-%
-%
-% \Finale
-% %Here ends the programmer's documentation.
-% \endinput
-%
-\endinput