summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/preprint
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/preprint
Initial commit
Diffstat (limited to 'macros/latex/contrib/preprint')
-rw-r--r--macros/latex/contrib/preprint/README88
-rw-r--r--macros/latex/contrib/preprint/authblk.dtx969
-rw-r--r--macros/latex/contrib/preprint/authblk.ins64
-rw-r--r--macros/latex/contrib/preprint/authblk.pdfbin0 -> 160401 bytes
-rw-r--r--macros/latex/contrib/preprint/balance.dtx541
-rw-r--r--macros/latex/contrib/preprint/balance.ins64
-rw-r--r--macros/latex/contrib/preprint/balance.pdfbin0 -> 118973 bytes
-rw-r--r--macros/latex/contrib/preprint/figcaps.dtx1634
-rw-r--r--macros/latex/contrib/preprint/figcaps.ins64
-rw-r--r--macros/latex/contrib/preprint/figcaps.pdfbin0 -> 165222 bytes
-rw-r--r--macros/latex/contrib/preprint/fullpage.dtx387
-rw-r--r--macros/latex/contrib/preprint/fullpage.ins64
-rw-r--r--macros/latex/contrib/preprint/fullpage.pdfbin0 -> 138404 bytes
-rw-r--r--macros/latex/contrib/preprint/sublabel.dtx729
-rw-r--r--macros/latex/contrib/preprint/sublabel.ins64
-rw-r--r--macros/latex/contrib/preprint/sublabel.pdfbin0 -> 175024 bytes
16 files changed, 4668 insertions, 0 deletions
diff --git a/macros/latex/contrib/preprint/README b/macros/latex/contrib/preprint/README
new file mode 100644
index 0000000000..05e6208d3b
--- /dev/null
+++ b/macros/latex/contrib/preprint/README
@@ -0,0 +1,88 @@
+Preprint Collection: (May 2013)
+~~~~~~~~~~~~~~~~~~~~
+This directory contains some packages written by Patrick W. Daly. The
+primary distribution site is:
+
+http://www.mps.mpg.de/software/latex/localtex/localltx.html
+
+I (Arash Esbati) mentioned balance.sty in comp.text.tex, was invited
+to put in on CTAN, asked Patrick W. Daly for permission, wrote this
+readme for your convenience and made a CTAN submission.
+
+
+Legal stuff:
+~~~~~~~~~~~~~~~~~~~~
+The copyright holder of these packages is Patrick W. Daly. They 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.
+
+
+Important note:
+~~~~~~~~~~~~~~~~~~~~
+Unfortunately, the author of these packages doesn't have the time for
+further development, bug fixes, "wishes" etc. Hence, they are provided
+"as is". If you run into problems, you are on your own.
+
+
+Brief description:
+~~~~~~~~~~~~~~~~~~~~
+1. authblk.sty: (version 1.3 from 2001/02/27)
+ A LaTeX2e package to redefine the \author command to work as normal or
+ to allow a footnote style of author/affiliation input.
+
+2. balance.sty: (version 4.3 from 1999/02/23)
+ When writing a document with LaTeX two-column mode, the columns on the
+ last page, or those before a \cleardoublepage command, will be of
+ unequal height. balance.sty solves this problem by modifying the output
+ routines in two-column mode.
+
+3. figcaps.sty: (version 4.7 from 1999/02/23)
+ This package allows the figure captions to be collected throughout the
+ paper and printed on a separate page at the end. The figures themselves
+ will not appear in the text. This is for purposes of a manuscript for
+ submission. Similarly, tables are not printed in the text, but are
+ outputted at the end, after the figure captions. This package may
+ optionally be used with the longtable environment defined in the package
+ of the same name.
+
+4. fullpage.sty: (version 1.1 from 1999/02/23)
+ This package sets all 4 margins to be either 1 inch or 1.5 cm, and
+ specifies the page style.
+
+5. sublabel.sty (version 4.5 from 1999/02/23)
+ The macros in this package allow all counters to be subnumbered, as for
+ example 4a, 4b, 4c, simply by bracketting the objects to be so numbered
+ with appropriate on/off commands. They will work with any user-defined
+ counters too.
+
+6. appendix.sty: (version 2.2 from 2005/10/30)
+ Adding this package redefines \appendix so that main counters for
+ figures, tables, equations are subnumbered under the appendix. The
+ plate counter is also subnumbered. A \noappendix command is included so
+ that things like bibliographies may be called after the appendix with
+ \section*. This package is only useful with article documentclass for
+ obvious reasons.
+
+ N.B.: This package is not available on CTAN due to a name clash. You
+ have to fetch it from the site mentioned above.
+
+
+Installation:
+~~~~~~~~~~~~~~~~~~~~
+Just run LaTeX on (package).ins, which generates (package).sty. If you
+want the documentation as a dvi, run LaTeX on (package).dtx, otherwise use
+the provided format. Move the .sty-files to a directory where LaTeX looks
+for the input files. Update your file name database and you're done.
+Check your local guide for more Information.
+
+
+Happy TeXing!
+ Arash Esbati
+
+
+;; Local Variables:
+;; mode: text
+;; fill-column: 75
+;; End:
diff --git a/macros/latex/contrib/preprint/authblk.dtx b/macros/latex/contrib/preprint/authblk.dtx
new file mode 100644
index 0000000000..6c7e168c36
--- /dev/null
+++ b/macros/latex/contrib/preprint/authblk.dtx
@@ -0,0 +1,969 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {AUTHBLK.DTX}
+%========================================================================
+%</dtx>
+%% Copyright 1997-1999 Patrick W Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpg.de
+%
+% This program 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 is a contributed file to the LaTeX2e system.
+% -------------------------------------------------
+% This is a LaTeX package to prepare author/affiliation blocks
+% Installation:
+% LaTeX this file: creates docstrip installation file authblk.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX authblk.ins: creates package files authblk.sty, and optionally
+% documentation driver authblk.drv
+% (authblk.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a .sty file with the uncommented coding
+% driver - to produce a driver file to print the documentation
+% 209 - (with package) for package that runs under LaTeX 2.09
+% subpack - (with package) for coding included in other packages
+% LaTeX the unstripped version to obtain the documentation
+% (Documentation can be produced with LaTeX2e only)
+%--------------------------------------------------------------------------
+%<*!subpack>
+%<package&209>\def\ProvidesPackage#1#2]
+%<package&209> {\typeout{Style option `#1'#2]}}
+%
+% *** Identify the package file:-
+%<package&!209>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package>\ProvidesPackage{authblk}
+%</!subpack>
+%
+% *** Provide command to dislay module version
+%<package&subpack>\def\ModuleVersion#1[#2]{}
+%<package&subpack> \ModuleVersion{authblk}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{authblk.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{authblk}
+ [2001/02/27 1.3 (PWD)]
+%\iffalse
+%<*package>
+%<*!subpack>
+ %-------------------------------------------------------------------
+ % NOTICE:
+ % This file may be used for non-profit purposes.
+ % It may not be distributed in exchange for money,
+ % other than distribution costs.
+ %
+ % The author provides it `as is' and does not guarantee it in any way.
+ %
+%</!subpack>
+%</package>
+%% authblk coding copyright (C) 1997 Patrick W. Daly
+%<*package>
+%<*!subpack>
+ % Max-Planck-Institut f\"ur Aeronomie
+ % Max-Planck-Str. 2
+ % D-37191 Katlenburg-Lindau
+ % Germany
+ %
+ % E-mail: daly@linmpi.mpg.de
+ %-----------------------------------------------------------
+%</!subpack>
+%</package>
+% END META-COMMENT \fi
+% \changes{1.0}{1997 Apr 22}{First version}
+% \changes{1.1}{1997 Aug 28}{Allow standard \cs{author} to come before package
+% loaded}
+% \changes{1.1a}{1998 Jul 14}{A 2.09 fixup}
+% \changes{1.2}{1999 Feb 23}{Update copyright notice}
+% \changes{1.3}{2001 Feb 27}{Make stand-alone by changing \cs{maketitle} to center}
+%
+% \CheckSum{404}
+% \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 \~}
+%
+% \iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run if it
+%^^A does not already exist
+%^^A =============================================
+\begin{filecontents*}{authblk.ins}
+% File: authblk.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{authblk.sty}{\from{authblk.dtx}{package}}
+ \file{authblk.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{authblk.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process authblk.dtx *}%
+\Msg{* or the driver file authblk.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
+\end{filecontents*}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist authblk
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o authblk.gls authblk.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{authblk.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand,\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi}
+% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc}
+% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let}
+% \DoNotIndex{\\,\@empty,\@namedef,\@nameuse,\@tempa,\@temptokena}
+% \DoNotIndex{\@unexpandable@protect,\addtocounter,\and,\arabic}
+% \DoNotIndex{\begingroup,\c@authors,\edef,\endgroup,\expandafter}
+% \DoNotIndex{\ignorespaces,\large,\maxdimen,\noexpand,\normalfont,\number}
+% \DoNotIndex{\relax,\textsuperscript,\the,\value,\xdef,\z@}
+% \DoNotIndex{\@ifundefined,\@ifnextchar,\document,\gdef,\global,\rm}
+% \DoNotIndex{\rlap,\footnote,\thanks}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \GetFileInfo{authblk}
+%
+% \title{\bfseries A \LaTeX\ Package to Prepare Author and Affiliation Blocks}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes \LaTeXe\ package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+% \textsl{It is part of the \texttt{preprint} collection of packages}
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{Author/Affiliation Blocks}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+%\begin{small}\begin{center}\textbf{Summary}\end{center}
+% The stripped version of this file contains the following brief description:
+%\iffalse
+%<*package&!subpack>
+ % Author/Affiliation Blocks
+%\fi
+% \begin{verbatim}
+ % A LaTeX2e package to redefine the \author command to work as normal or
+ % to allow a footnote style of author/affiliation input.
+ %
+ % Three methods of input:
+ % 1. Standard LaTeX
+ % \author{Name1\\Affil1 /and Name2 and Name3\\Affil2 . . .}
+ % (use \authorcr, not \\, to force new line within the author text)
+ % 2. Automatic mode (selects modes 1 or 3 depending on number of affiliations)
+ % \author{Name1}
+ % \affil{Affil1}
+ % \author{Name2}
+ % \author{Name3}
+ % \affil{Affil2}
+ % . . .
+ % 3. Footnotes explicitly
+ % \author[*]{Name1}
+ % \author[**]{Name2}
+ % \author[**]{Name3}
+ % \affil[*]{Affil1}
+ % \affil[**]{Affil2}
+ % . . .
+% \end{verbatim}
+%\iffalse
+ % See documentation in authblk.dtx for further configuration possibilities.
+ %-----------------------------------------------------------
+%</package&!subpack>
+%\fi
+%\end{small}
+% \newcommand\brsl{/\discretionary{}{}{}}
+%
+% \section{Introduction}
+% The standard \LaTeX\ syntax for entering author names and their
+% affiliations is rather limited. The standard is to have \emph{author
+% blocks} consisting of all authors from one institute grouped together.
+% However, if there are many institutes, or if the authors are ordered in
+% some other way (e.g.\ alphabetically) it is more appropriate to use a
+% footnote system. Both methods should be available for any paper since the
+% style depends more on the number of authors and affiliations and their
+% mixture.
+%
+% This package offers a syntax for entering author names and their
+% affiliations that permits both styles, and is also compatible with the
+% standard \LaTeX\ syntax. It places its results in the control sequence
+% |\@author|, which is the standard container for the author\brsl{}affiliation
+% names; in this way it can be used immediately with standard \LaTeX\
+% classes, or with packages that modify the title\brsl{}author block.
+%
+% \section{Invoking the Package}
+% The macros in this package are included in the main document
+% with the |\usepackage| command of \LaTeXe,
+% \begin{quote}
+% |\documentclass[..]{...}|\\
+% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}|
+% \end{quote}
+% where the possible \emph{options} are described below in Section~\ref{opts}.
+%
+% \section{Usage}
+%
+% Authors and affiliations can be printed in author blocks, as
+% \begin{center}
+% \begin{tabular}[t]{c}
+% J. B. Smith\\Institute for Research\\Hamilton, Ontario
+% \end{tabular}\\[1ex]
+% \begin{tabular}[t]{c}
+% C. T. Appleton and P. R. Bailey\\NASA, Greenbelt, MD
+% \end{tabular}
+% \end{center}
+% or in a line with footnote markers for the affiliations, as
+% \begin{center}
+% J. B. Smith\textsuperscript{1}, C. T. Appleton\textsuperscript{2}, and
+% P. R. Bailey\textsuperscript{2}\\[1ex]
+% \textsuperscript{1}Institute for Research, Hamilton, Ontario\\
+% \textsuperscript{2}NASA, Greenbelt, MD
+% \end{center}
+%
+% \DescribeMacro{\author}
+% \DescribeMacro{\affil}
+% The user can enter the author and affiliation information in a number of
+% different manners.
+% \begin{enumerate}
+% \item \label{ab}Standard \LaTeX, with syntax
+% \begin{quote}
+% |\author{|\dots|\and|\dots|\and|\dots|}|
+% \end{quote}
+% where each block of author(s)\brsl{}affiliation comes between the
+% |\and| commands, containing possibly |\\| for new lines;
+%
+% \item \label{abfn} Automatic switching between author block or footnote
+% style, information input with a series of |\author|, |\affil|
+% commands as
+% \begin{quote}
+% |\author{|\emph{author1}|}|\\
+% |\author{|\emph{author2}|}|\\
+% |\affil{|\emph{affil1}|}|\\
+% |\author{|\emph{author3}|}|\\
+% |\author{|\emph{author4}|}|\\
+% |\affil{|\emph{affil2}|}|\\
+% $\cdots$
+% \end{quote}
+% where the authors will appear all in one (possibly continued) line
+% with automatic footnotes, and the affiliations appear in separate lines
+% below;
+%
+% \item \label{fn}Footnote style with manual footnote markers given as
+% optional arguments; in this case, the |\author| and |\affil| commands
+% can be fully separated:
+% \begin{quote}
+% |\author[1]{|\emph{author1}|}|\\
+% |\author[1]{|\emph{author2}|}|\\
+% |\author[2]{|\emph{author3}|}|\\
+% |\author[2]{|\emph{author4}|}|\\
+% |\affil[1]{|\emph{affil1}|}|\\
+% |\affil[2]{|\emph{affil2}|}|\\
+% $\cdots$
+% \end{quote}
+% \end{enumerate}
+% Method \ref{ab} can only produce author blocks; method \ref{fn} only
+% footnotes, while \ref{abfn} can produce both. If the number of affiliations
+% is greater than \texttt{Maxaffil}, footnotes are used, otherwise author
+% blocks.
+%
+% \DescribeMacro{\authorcr}
+% With method \ref{ab}, the |\\| command is used to switch to affiliation
+% text, possibly changing the font; if the author text is to be forced to a
+% new line, use |\authorcr| instead.
+%
+% \noindent\textbf{Warning:}
+% methods \ref{abfn} and \ref{fn} can only be used \emph{after}
+% \texttt{\filename} has been loaded, since |\affil| is otherwise
+% not defined. However, a single |\author| command (method \ref{ab})
+% can appear before |\usepackage|, or even before |\documentclass|,
+% as is allowed in standard \LaTeX.
+%
+% \section{Configuration}
+%
+% Certain aspects of the author\brsl{}affiliation blocks can be controlled by
+% the user through redefinitions.
+%
+% As already \marginpar{\raggedleft\texttt{Maxaffil}}
+% mentioned, the maximum number of affiliations before automatically
+% switching from author block to footnote mode is set in the counter
+% |Maxaffil|. Redefine this with
+% \begin{quote}|\setcounter{Maxaffil}{2}|\end{quote}
+% The default is 2.
+%
+% \DescribeMacro{\Authfont}
+% \DescribeMacro{\Affilfont}
+% The author and affiliation lines can be set in different fonts, determined
+% by these macros. By default they are |\normalfont|. Redefine them with
+% |\renewcommand|, for example:
+% \begin{quote}\begin{verbatim}
+% \renewcommand\Authfont{\scshape}
+% \renewcommand\Affilfont{\itshape\small}
+% \end{verbatim}
+% \end{quote}
+%
+% \DescribeMacro{\affilsep}
+% The interline spacing between the author and affiliation lines is set by
+% the length |\affilsep|. Change this with |\setlength|, as
+% \begin{quote}|\setlength{\affilsep}{1em}|\end{quote}
+% This spacing applies to both footnote and author block modes.
+%
+% \DescribeMacro{\Authsep}
+% \DescribeMacro{\Authand}
+% \DescribeMacro{\Authands}
+% In footnote mode, one can change the texts that comes between the
+% authors' names, between two authors, and before the last author when there
+% are more than two. For example,
+% \begin{quote}\begin{verbatim}
+% \renewcommand\Authsep{, }
+% \renewcommand\Authand{ and }
+% \renewcommand\Authands{, and }
+% \end{verbatim}
+% \end{quote}
+% This example actually shows the defaults.
+%
+% \section{Options during Loading}\label{opts}
+% Some reconfigurations are provided for by means of options to the
+% |\usepackage| command. These are:
+% \begin{description}
+% \item[\ttfamily blocks]
+% sets |Maxaffil| to $\infty$ so that the automatic selection will always be
+% author\brsl{}affiliation blocks;
+%
+% \item[\ttfamily noblocks]
+% sets |Maxaffil| to 0 so that the automatic selection will always be
+% footnote mode;
+%
+% \item[\ttfamily max$n$] ($n=2,6$) sets |Maxaffil| to $n$;
+%
+% \item[\ttfamily auth-sc] sets author font to small caps;
+%
+% \item[\ttfamily auth-sc-lg] sets author font to small caps, but with size
+% |\large|;
+%
+% \item[\ttfamily auth-lg] sets author font to normal, but in size |\large|;
+%
+% \item[\ttfamily affil-sl] sets affiliation font to slanted;
+%
+% \item[\ttfamily affil-it] sets affiliation font to italic;
+%
+% \item[\ttfamily german] changes `and' to `und' in author lists.
+% \end{description}
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\ttfamily package] to produce a \texttt{.sty} package file with most
+% comments removed;
+%
+% \item[\ttfamily subpack] (together with \texttt{package}) for coding that
+% is to be included inside a larger package; even more comments are
+% removed, as well as \LaTeXe{} option handling and identification;
+%
+% \item[\ttfamily 209] (together with \texttt{package}) for a style option
+% file that will run under the older \LaTeX~2.09;
+%
+% \item[\ttfamily driver] to produce a driver \texttt{.drv} file that will
+% print out the documentation under \LaTeXe. The documentation cannot
+% be printed under \LaTeX~2.09.
+%
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% The \texttt{docstrip} option |<subpack>| should only be called if the
+% coding is to be included as part of another package, in which case the
+% announcement text and \LaTeXe{} options are suppressed.
+%
+% An alternative version of this coding is provided for running as a
+% style file under \LaTeX~2.09. Code lines belonging to this are
+% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|.
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Basic Idea}
+%
+% In the standard \LaTeX\ classes, the authors and their affiliations are
+% input through the |\author| command, which simply stores the argument in
+% |\@author|. The text is then output by the |\maketitle| macro within a
+% |tabular| environment, as
+% \begin{quote}\begin{verbatim}
+% \begin{tabular}[t]{c}%
+% \@author
+% \end{tabular}
+% \end{verbatim}
+% \end{quote}
+% Different blocks within the |\author| text are separated by the |\and|
+% command, defined as
+% \begin{quote}\begin{verbatim}
+% \def\and{%
+% \end{tabular}%
+% \hskip 1em \@plus.17fil%
+% \begin{tabular}[t]{c}}%
+% \end{verbatim}
+% \end{quote}
+% Clearly, the definition of |\and| must be compatible with the environment
+% in which |\@author| is output.
+%
+% The \texttt{\filename} package provides a new way to enter the author and
+% affiliation data, but puts the results into |\@author|, which means it can
+% be used with the standard classes or with any class that has the author
+% information in |\@author|. Since \texttt{\filename} controls all the font
+% formatting for author and affiliation lines, |\maketitle| should not do
+% this.
+%
+% \subsection{Configurable Commands}
+%
+% All internal commands are designated with |\AB@..| to avoid name conflicts
+% with other packages. Commands that may be redefined for local configuration
+% contain no |@| and begin with an uppercase letter, like |\Authfont|.
+%
+% The following allow the author and affiliation blocks to be formatted.
+% These may be changed in the document or in packages that input (include)
+% \texttt{\filename}.
+%
+% \begin{macro}{\Authfont}
+% \begin{macro}{\Affilfont}
+% Declarations that are to be issued for the authors and affiliations are
+% defined here. Redefine these, for example, as
+% \begin{quote}\begin{verbatim}
+% \renewcommand\Authfont{\scshape}
+% \renewcommand\Affilfont{\itshape\small}
+% \end{verbatim}
+% \end{quote}
+% By default, they are the |\normalfont|.
+% \begin{macrocode}
+\newcommand\Authfont{\normalfont}
+\newcommand\Affilfont{\normalfont}
+%<209>\@ifundefined{normalfont}{\let\normalfont\rm}{}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\Authsep}
+% \begin{macro}{\Authand}
+% \begin{macro}{\Authands}
+% Three macros determine what comes between author names,
+% \begin{macrocode}
+\newcommand\Authsep{, }
+% \end{macrocode}
+% what comes between the last and second last names for more than two authors,
+% \begin{macrocode}
+\newcommand\Authands{, and }
+% \end{macrocode}
+% and for exactly two authors.
+% \begin{macrocode}
+\newcommand\Authand{ and }
+% \end{macrocode}
+% These could be language dependent.
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\affilsep}
+% The vertical spacing between an author and affiliation line. The length
+% |\@affilsep| comes between affiliation lines and switches between
+% |\affilsep| and 0~pt as needed.
+% \begin{macrocode}
+\newlength{\affilsep}\setlength{\affilsep}{1em}
+\newlength{\@affilsep}
+% \end{macrocode}
+% \end{macro}
+% Also part of the local configuration is the maximum number of affiliations
+% before switching to footnote mode. Redefine this with |\setcounter|.
+% \begin{macrocode}
+\newcounter{Maxaffil}
+\setcounter{Maxaffil}{2}
+% \end{macrocode}
+%
+% \subsection{Package Options}
+%
+% Options are provided to select some author and affiliation fonts, and
+% certain values of |Maxaffil|, including 0 (always footnote mode) and
+% infinity (always block mode).
+% \begin{macrocode}
+%<*!subpack&!209>
+\DeclareOption{blocks}{\setcounter{Maxaffil}{\maxdimen}}
+\DeclareOption{noblocks}{\setcounter{Maxaffil}{0}}
+\DeclareOption{max2}{\setcounter{Maxaffil}{2}}
+\DeclareOption{max3}{\setcounter{Maxaffil}{3}}
+\DeclareOption{max4}{\setcounter{Maxaffil}{4}}
+\DeclareOption{max5}{\setcounter{Maxaffil}{5}}
+\DeclareOption{max6}{\setcounter{Maxaffil}{6}}
+\DeclareOption{auth-sc}{\renewcommand\Authfont{\scshape}}
+\DeclareOption{auth-sc-lg}{\renewcommand\Authfont{\large\scshape}}
+\DeclareOption{auth-lg}{\renewcommand\Authfont{\large}}
+\DeclareOption{affil-sl}{\renewcommand\Affilfont{\slshape}}
+\DeclareOption{affil-it}{\renewcommand\Affilfont{\itshape}}
+\DeclareOption{german}{\renewcommand\Authand{, und }%
+ \renewcommand\Authands{, und }}
+\ProcessOptions
+%</!subpack&!209>
+% \end{macrocode}
+%
+% \subsection{Supporting Macros}
+%
+% First declare some counters and flags. The number of authors, affiliations,
+% and a flag to mark a new affiliation.
+% \begin{macrocode}
+\newcounter{authors}
+\newcounter{affil}
+\newif\ifnewaffil \newaffiltrue
+% \end{macrocode}
+%
+% \begin{macro}{\AB@authnote}
+% \begin{macro}{\AB@affilnote}
+% The formatting of the footnote markers in the author and affiliation lines.
+% The |\textsuperscript| command must be defined for 2.09 and provided for
+% earlier version of \LaTeXe\ (before 1995/06/01).
+% \begin{macrocode}
+\newcommand\AB@authnote[1]{\textsuperscript{\normalfont#1}}
+\newcommand\AB@affilnote[1]{\textsuperscript{\normalfont#1}}
+%<209>\@ifundefined{textsuperscript}{\newcommand\textsuperscript[1]{$^{#1}$}}{}
+%<!209>\providecommand\textsuperscript[1]{$^{#1}$}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\AB@blk@and}
+% The macro that comes between author blocks. Initially this is nothing other
+% than setting the author font, but will be set to |\and| after the first
+% invocation. Again, everything in this definition must be robust, either
+% intrinsically or with |\protect| commands. The macro |\AB@setsep|
+% sets |\@affilsep| to the author-affiliation separation.
+% \begin{macrocode}
+\newcommand\AB@blk@and{\protect\Authfont\protect\AB@setsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AB@pand}
+% The `protected' version of |\and| that is inserted in |\AB@authors| between
+% authors and affiliations; since it begins a new author block, it sets the
+% font to the author font, and the interline spacing to the
+% author\brsl{}affiliation spacing.
+% \begin{macrocode}
+\newcommand\AB@pand{\protect\and \protect\Authfont \protect\AB@setsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sep1}\begin{macro}{\@sep2}
+% The $n$th author in |\AB@authlist| is preceeded by
+% |\@sep|$n$; this is defined as empty for $n$=1 and the as the
+% two-author separation for $n$=2, to be altered later.
+% \begin{macrocode}
+\@namedef{@sep1}{}
+\@namedef{@sep2}{\Authand}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\AB@affilsep}
+% \begin{macro}{\AB@affilsepx}
+% What comes before the very first footnote affiliation, and before all
+% successive affiliations. These should be separate lines within some
+% tabular environment, so reset the font every time to the affiliation one.
+% (Note: |\\| is robust in \LaTeXe, but not in 2.09; adding the |\protect|
+% before |\\| does not hurt, though.)
+% \begin{macrocode}
+\newcommand\AB@affilsep{\protect\Affilfont}
+\newcommand\AB@affilsepx{\protect\\\protect\Affilfont}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\AB@setsep}
+% \begin{macro}{\AB@resetsep}
+% The current interline spacing within affiliations is |\@affilsep|; the
+% initial spacing (between authors and first affiliation line) is
+% |\affilsep|; switching |\@affilsep| between 0~pt and |\affilsep| is done
+% with these macros.
+% \begin{macrocode}
+\newcommand\AB@setsep{\setlength{\@affilsep}{\affilsep}}
+\newcommand\AB@resetsep{\setlength{\@affilsep}{\z@}}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\AB@authlist}
+% \begin{macro}{\AB@affillist}
+% \begin{macro}{\AB@authors}
+% There are three `lists' that are filled up with various commands:
+% \begin{itemize}
+% \item |\AB@authlist| containing all the authors;
+%
+% \item |\AB@affillist| containing all the affiliations;
+%
+% \item |\AB@authors| ($\equiv$|\@author|) containing the input of the
+% standard \LaTeX\ |\author| command, a mixture of authors and
+% affiliations, with blocks separated by |\and| commands.
+% \end{itemize}
+% |\AB@empty| is provided for testing the emptiness of |\AB@affillist|
+% later. (Do not use |\@empty|, because that is not a `long' macro.)
+%
+% Here these lists are initialized.
+% \begin{macrocode}
+\newcommand\AB@authlist{}
+\newcommand\AB@affillist{}
+\newcommand\AB@authors{}
+\newcommand\AB@empty{}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\AB@author}
+% \changes{1.1}{1997 Aug 28}{Initialize to existing \cs{@author}}
+% \changes{1.1a}{1998 Jul 14}{Define \cs{@author} for 2.09}
+% The |\AB@author| macro holds the argument of the last issued |\author|
+% command, normally stored in |\@author|. Equate these now in case
+% |\author| was issued before the class and/or packages were loaded,
+% something that is allowed in standard \LaTeX. Of course, the new
+% features with |\affil| and multiple |\author| commands will not
+% function before this package is loaded.
+%
+% For \LaTeX~2.09, must provisionally define |\@author|.
+% \begin{macrocode}
+%<209>\@ifundefined{@author}{\def\@author}{}
+\xdef\AB@author{\noexpand\AB@blk@and\@author}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{User Interfacing Commands}
+%
+% \begin{macro}{\author}
+% Three lists are maintained for authors and affiliations. In |\AB@authors|,
+% the text for the author block is stored; both |\author| and |\affil| add
+% their arguments to this list, with |\\| between author and affiliation, and
+% |\and| between the affiliation and the next author text. If one only uses
+% the |\author| command (standard \LaTeX) one must add these separators
+% explicitly in the argument.
+%
+% In addition, both |\author| and |\affil| store their arguments in
+% |\AB@authlist| and |\AB@affillist|, adding footnote marks determined either
+% automatically, or by the optional arguments.
+%
+% Finally, |\@author| will be made up either by |AB@author|, |\AB@authors|, or
+% |\AB@authlist| plus |\AB@affillist|.
+%
+% Consequently, |\author| and |\affil| are fairly complex.
+% \begin{macrocode}
+%<209>\renewcommand\author{\@ifnextchar[%]
+%<209> {\@Xauthor}{\@Xauthor[]}}
+%<209>\def\@Xauthor[#1]#2%
+%<!209>\renewcommand\author[2][]%
+% \end{macrocode}
+% The flag |\ifnewaffil| is set by |\affil| to tell |\author| that a new
+% author block is beginning. This flag is set to \meta{false} at the end
+% if this macro.
+% \begin{macrocode}
+ {\ifnewaffil\addtocounter{affil}{1}%
+ \edef\AB@thenote{\arabic{affil}}\fi
+% \end{macrocode}
+% Argument |#1| is the optional footnote marker; if it is present, force the
+% footnote mode by setting |Maxaffil| counter to zero.
+% \begin{macrocode}
+ \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
+ \setcounter{Maxaffil}{0}\fi
+% \end{macrocode}
+% The author list in |\AB@authlist| is to have commas (|\Authsep|) between
+% the names, nothing before the first one, and `and' (|\Authands|) before the
+% last one. If only two names are present, they are separated by |\Authand|.
+% To accomplish this, place |@sep|$n$ before author $n$ which
+% is defined to be |\Authands|; at the same time, define the previous one to
+% be |\Authsep|, taking care that |\@sep1| (empty) is never redefined, and
+% that |\@sep2| (|\Authand|) is only redefined after the third author. Note
+% that at this point in the coding, the |authors| counter is not yet
+% incremented, so its value is $n-1$.
+% \begin{macrocode}
+ \ifnum\value{authors}>1\relax
+ \@namedef{@sep\number\c@authors}{\Authsep}\fi
+ \addtocounter{authors}{1}%
+% \end{macrocode}
+% Put the new author text in |#2| into the lists |\AB@authors| and
+% |\AB@authlist|. Because of the expansion method of getting the existing
+% contents of these lists, all commands in the arguments must be robust. For
+% this reason, make |\thanks| and |\footnote| robust (they normally are
+% fragile).
+%
+% Note that every new line inserted into |\AB@authors| must contain
+% formatting declarations, like |\Authfont| and |\Affilfont|.
+% The newline command |\\| switches to affiliation, with extra interline
+% spacing and a different font. The extra spacing is in |\@affilsep| which is
+% either zero or |\affilsep|, as set by commands |\AB@resetsep| and
+% |\AB@setsep|. The extra spacing is meant only to come between author and
+% first affiliation lines.
+%
+% The newline command should behave differently in |\AB@authlist|; the
+% |\authorcr| macro is adequate for this (new line and |\Authfont|).
+%
+% Reminder: the font declarations must be made on each new line since
+% |\@author| is normally placed within a |tabular| environment where each
+% line has local scope so all declarations and definitions apply only within
+% it.
+% \begin{macrocode}
+ \begingroup
+ \let\protect\@unexpandable@protect \let\and\AB@pand
+ \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
+ \@temptokena=\expandafter{\AB@authors}%
+ {\def\\{\protect\\[\@affilsep]\protect\Affilfont
+ \protect\AB@resetsep}%
+% \end{macrocode}
+% To allow for the standard \LaTeX\ syntax with only one |\author| command
+% for everything, put the argument |#2| into |\AB@author| with the
+% appropriate preamble |\AB@blk@and|. If |\affil| is never called, this
+% will be the final content of |\@author|. Otherwise it will become
+% |\AB@authors|. Here the previous author is |\AB@au@str| is put into
+% |\AB@authors|, and then |#2| is stored for the next |\author| or |\affil|
+% call. |\AB@as| is the separator between authors in one sub-block; |\AB@las|
+% is the separator before the last author in a sub-block; this is entered by
+% |\affil| which signals the end of a sub-block of authors.
+% (This delayed entry method cannot be used for |\AB@authlist| because there
+% one needs to know the very last author, but one never knows if another
+% |\affil| command might come along.)
+% \begin{macrocode}
+ \xdef\AB@author{\AB@blk@and#2}%
+ \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}%
+ \xdef\AB@authors{\the\@temptokena\AB@blk@and}%
+ \else
+ \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}%
+ \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}%
+ \gdef\AB@as{\Authsep}%
+ \fi
+ \gdef\AB@au@str{#2}}%
+ \@temptokena=\expandafter{\AB@authlist}%
+ \let\\=\authorcr
+ \xdef\AB@authlist{\the\@temptokena
+ \protect\@nameuse{@sep\number\c@authors}%
+ \protect\Authfont#2\AB@authnote{\AB@note}}%
+ \endgroup
+% \end{macrocode}
+% Define |\@sep|$n$ preceeding the current author to be |\Authands|, in case
+% this should turn out to be the last author. If another author comes, he
+% will redefine this (see above).
+% \begin{macrocode}
+ \ifnum\value{authors}>2\relax
+ \@namedef{@sep\number\c@authors}{\Authands}\fi
+ \newaffilfalse
+}
+% \end{macrocode}
+%
+% For \LaTeX~2.09, we must define this \LaTeXe\ macro.
+% \begin{macrocode}
+%<209>\def\@unexpandable@protect{\noexpand \protect \noexpand}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\authorcr}
+% In the author blocks made up with the |\author| command alone, the |\\|
+% command is used to start a new line and to switch to affiliation formatting.
+% In order to force a new line within the author line, use |\authorcr|.
+% \begin{macrocode}
+\newcommand\authorcr{\protect\\ \protect\Authfont \protect\AB@setsep}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\affil}
+% The affiliation information is also written into |\AB@authors| and
+% |\AB@affillist|. The |\ifnewaffil| flag is set to inform |\author|, the
+% `blank-or-and' macro |\AB@blk@and| is set to (protected) `and', and if
+% there is an optional argument, the counter |Maxaffil| is set to zero to
+% force footnote mode.
+% \begin{macrocode}
+%<209>\newcommand\affil{\@ifnextchar[%]
+%<209> {\@Xaffil}{\@Xaffil[]}}
+%<209>\def\@Xaffil[#1]#2%
+%<!209>\newcommand\affil[2][]%
+ {\newaffiltrue\let\AB@blk@and\AB@pand
+ \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
+ \setcounter{Maxaffil}{0}\fi
+% \end{macrocode}
+% As for |\author|, the newline command must be highjacked and altered. For
+% |\AB@authors|, it issues a new line and declares the affiliation font. For
+% |\AB@authlist|, where each affiliation is to appear on a single line, it is
+% converted into a comma.
+% \begin{macrocode}
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
+ \@temptokena=\expandafter{\AB@authors}%
+ {\def\\{\protect\\\protect\Affilfont}\xdef\AB@temp{#2}}%
+ \xdef\AB@authors{\the\@temptokena\AB@las\AB@au@str
+ \protect\\[\affilsep]\protect\Affilfont\AB@temp}%
+ \gdef\AB@las{}\gdef\AB@au@str{}%
+ {\def\\{, \ignorespaces}\xdef\AB@temp{#2}}%
+ \@temptokena=\expandafter{\AB@affillist}%
+ \xdef\AB@affillist{\the\@temptokena \AB@affilsep
+ \AB@affilnote{\AB@note}\protect\Affilfont\AB@temp}%
+ \endgroup
+% \end{macrocode}
+% The item before each affiliation is |\AB@affilsep|, which changes from its
+% initial definition to |\AB@affilsepx| after the first call.
+% \begin{macrocode}
+ \let\AB@affilsep\AB@affilsepx
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@author}
+% Define |\@author| to be the last |\author| call if |\affil| was
+% never used (standard \LaTeX), or define it to be either |\AB@authors| or a
+% combination of |\AB@authlist| and |\AB@authlist| depending on number of
+% affiliations.
+%
+% The standard classes put any footnote markers (with |\thanks| or
+% |\footnote|) into |\rlap| so they overlap with punctuation. Unfortunately,
+% they also overlap any other affiliation footnote markers. Thus turn off
+% |\rlap| for footnote style. Since |\@author| is normally called within
+% some environment, this change is local.
+% \begin{macrocode}
+\def\@author{}
+\renewcommand\@author{\ifx\AB@affillist\AB@empty\AB@author\else
+ \ifnum\value{affil}>\value{Maxaffil}\def\rlap##1{##1}%
+ \AB@authlist\\[\affilsep]\AB@affillist
+ \else \AB@authors\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+% \changes{1.3}{2001 Feb 27}{Modify standard macro}
+% The standard definitions of |\maketitle| place the |\@author| text in a
+% |tabular| environment, which is not appropriate for the long author list
+% possible with \texttt{\filename}. Instead, use the |center| environment.
+% Other packages that call \texttt{\filename} such as \texttt{mpaehead} redefine
+% |\maketitle| accordingly. But if \texttt{\filename} is used on its own, this
+% will not be done. Thus highjack the |\maketitle| command and redefine
+% |tabular| to be |center|.
+% \begin{macrocode}
+\let\AB@maketitle=\maketitle
+\def\maketitle
+ {{\renewenvironment{tabular}[2][]{\begin{center}}
+ {\end{center}}
+ \AB@maketitle}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
diff --git a/macros/latex/contrib/preprint/authblk.ins b/macros/latex/contrib/preprint/authblk.ins
new file mode 100644
index 0000000000..2954984cf9
--- /dev/null
+++ b/macros/latex/contrib/preprint/authblk.ins
@@ -0,0 +1,64 @@
+% File: authblk.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{authblk.sty}{\from{authblk.dtx}{package}}
+ \file{authblk.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{authblk.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process authblk.dtx *}%
+\Msg{* or the driver file authblk.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/preprint/authblk.pdf b/macros/latex/contrib/preprint/authblk.pdf
new file mode 100644
index 0000000000..b084d90bdd
--- /dev/null
+++ b/macros/latex/contrib/preprint/authblk.pdf
Binary files differ
diff --git a/macros/latex/contrib/preprint/balance.dtx b/macros/latex/contrib/preprint/balance.dtx
new file mode 100644
index 0000000000..84efb28f4d
--- /dev/null
+++ b/macros/latex/contrib/preprint/balance.dtx
@@ -0,0 +1,541 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {BALANCE.DTX}
+%========================================================================
+%</dtx>
+%% Copyright 1993-1999 Patrick W Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpg.de
+%
+% This program 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 is a contributed file to the LaTeX2e system.
+% -------------------------------------------------
+% This is a LaTeX package to balance the last two columns in twocolumn mode.
+% Installation:
+% LaTeX this file: creates docstrip installation file balance.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX balance.ins: creates package files balance.sty, and optionally
+% documentation driver balance.drv
+% (balance.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a (LaTeX2e) package .sty file
+% driver - to produce a driver file to print the documentation
+% 209 - (with package) for package that runs under LaTeX 2.09
+% subpack - (with package) for coding included in other packages
+%--------------------------------------------------------------------------
+%<*!subpack>
+%<package&209>\def\ProvidesPackage#1#2]
+%<package&209> {\typeout{Style option `#1'#2]}}
+%
+% *** Identify the package file:-
+%<package&!209>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package>\ProvidesPackage{balance}
+%</!subpack>
+%
+% *** Provide command to dislay module version
+%<package&subpack>\def\ModuleVersion#1[#2]{}
+%<package&subpack> \ModuleVersion{balance}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{balance.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{balance}
+ [1999/02/23 4.3 (PWD)]
+% \changes{4.0}{1993 Oct 10}{First release with \texttt{docstrip}}
+% \changes{4.0}{1993 Oct 20}{Change so \cs{balance} makes redefinitions
+% and does not just set flag}
+% \changes{4.1}{1994 May 16}{Convert to \LaTeXe}
+% \changes{4.1a}{1994 Jun 22}{Update to first official release of \LaTeXe}
+% \changes{4.1b}{1995 Jan 2}{Update documentation to PWD standard}
+% \changes{4.2}{1995 Nov 7}{Fix up \cmd{\cleardoublepage}}
+% \changes{4.2a}{1997 Mar 16}{Fix copyright for subpackage and other minor
+% things}
+% \changes{4.2b}{1997 Apr 29}{Conform to new \texttt{docstrip}}
+% \changes{4.3}{1999 Feb 23}{Update copyright notice}
+%
+% \CheckSum{168}
+% \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 \~}
+% \iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run if it
+%^^A does not already exist
+%^^A =============================================
+\begin{filecontents*}{balance.ins}
+% File: balance.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{balance.sty}{\from{balance.dtx}{package}}
+ \file{balance.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{balance.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process balance.dtx *}%
+\Msg{* or the driver file balance.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
+\end{filecontents*}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist natbib
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o natbib.gls natbib.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{balance.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi}
+% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc}
+% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let}
+% \DoNotIndex{\@@warning,\@M,\@colht,\@combinedblfloats,\@dblfloatplacement}
+% \DoNotIndex{\@firstcolumnfalse,\@firstcolumntrue,\@leftcolumn,\@outputbox}
+% \DoNotIndex{\@outputdblcol,\@outputpage,\@startdblcolumn,\@tempdima}
+% \DoNotIndex{\@whilesw,\advance,\baselineskip,\begingroup,\box,\columnseprule}
+% \DoNotIndex{\columnwidth,\copy,\dimen,\divide,\dp,\else,\endgroup,\fi}
+% \DoNotIndex{\global,\hbox,\hfil,\hss,\ht,\if@fcolmade,\if@firstcolumn}
+% \DoNotIndex{\if@twocolumn,\ifdim,\kern,\loop,\multiply,\newdimen}
+% \DoNotIndex{\outputpenalty,\penalty,\repeat,\setbox,\splittopskip}
+% \DoNotIndex{\string,\textwidth,\topskip,\unvbox,\vbadness,\vbox}
+% \DoNotIndex{\vfil,\vrule,\vsplit}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \GetFileInfo{balance}
+%
+% \title{\bfseries Balancing the Two Columns of Text on the Last Page}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+% \textsl{It is part of the \texttt{preprint} collection of packages}
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{BALANCING TWO COLUMN TEXT}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+%\begin{small}\begin{center}\textbf{Summary}\end{center}
+% The stripped version of this file contains the following brief description:
+%\iffalse
+%<*package&!subpack>
+%\fi
+% \begin{verbatim}
+ % In order to balance the columns on a page, \balance must be given
+ % somewhere within the first column. To turn off the feature, give
+ % \nobalance. One has to look at the unbalanced text first to decide
+ % where best to place \balance.
+% \end{verbatim}
+%\iffalse
+ %-----------------------------------------------------------
+%</package&!subpack>
+%\fi
+%\end{small}
+%
+% \section{Introduction}
+% When a \LaTeX{} document is to be set in two-column mode, one can
+% add |twocolumn| as an option to |\documentstyle| (\LaTeX~2.09)
+% or to |\documentclass| (\LaTeXe), or one can use the
+% |\twocolumn| command in the text. In either case, the columns on the last
+% page, or those before a |\cleardoublepage| command, will be of unequal
+% height. This is because \LaTeX{} views the columns as pages which are
+% just output as pairs, and it no longer knows about the left-hand column
+% when a short right-hand one is finished.
+%
+% The macros in this package solve this problem by modifying the output
+% routines in two-column mode.
+%
+% \section{Invoking the Package}
+% The macros in this package are included in the main document
+% with the |\usepackage| command of \LaTeXe,
+% \begin{quote}
+% |\documentclass[..,twocolumn,..]{...}|\\
+% |\usepackage{|\texttt{\filename}|}|
+% \end{quote}
+% There are no \LaTeXe{} options for this package.
+%
+% Alternatively, the name of the package is added as an option to the
+% |\documentstyle| command in \LaTeX~2.09 compatibility mode, as
+% \begin{quote}
+% |\documentstyle[..,twocolumn,|\texttt{\filename}|..]{...}|
+% \end{quote}
+%
+% \section{Usage}
+% Including the \texttt{\filename} package as shown above does not activate it
+% immediately. There are a number of reasons for this.
+% \begin{enumerate}
+% \item It could be that a newer (or much older) version of \LaTeX{} is
+% being used for which the modified |\output| routines are
+% incompatible; in this case, the new routines must be left inactive.
+%
+% \item Sometimes the modified output routine does not work well for normal
+% pages, especially with floats (figures and tables) or footnotes.
+%
+% \end{enumerate}
+% For these reasons, it is thought better to have the modified output
+% routines left inactive, and to turn them on only when needed.
+% \DescribeMacro{\balance}
+% This is done with the command |\balance|, which should be issued
+% somewhere in the text of what would be the first column of the last page
+% without balanced columns. If it is issued too late, i.e., in the second
+% column, then a warning message is printed that balancing may not take
+% place.
+%
+% \DescribeMacro{\nobalance}
+% To turn off the balancing routines, call |\nobalance|. This might be
+% useful where there are many `last' pages, say at the end of book
+% chapters. The |\balance| command should be given for each page that
+% needs balancing, and then turned off at the end of the second column.
+%
+% It might well be that |\balance| can be left on all the time, but one
+% should check the output carefully, and turn it off if need be.
+%
+% \section{An Alternative}
+% Making multicolumn text with Mittelbach's {\tt multicol} package is
+% perhaps a better method. It balances automatically, and allows more than
+% just two columns. Never use \texttt{\filename} together with {\tt multicol}!
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\tt package] to produce a \texttt{.sty} package file with most
+% comments removed;
+% \item[\tt 209] for a package file that will also run under the older
+% \LaTeX~2.09 and not just under the newer (mid-1994) \LaTeXe;
+% \item[\tt subpack] (together with \texttt{package}) for coding that is to
+% be included inside a larger package; even more comments are removed,
+% as well as \LaTeXe{} option handling and identification;
+% \item[\tt driver] to produce a driver \texttt{.drv} file that will print
+% out the documentation under \LaTeXe; with the \texttt{209} option,
+% a driver \texttt{.209} file is also produced, for printing the
+% documentation under \LaTeX~2.09.
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% The \texttt{docstrip} option |<subpack>| should only be called if the
+% coding is to be included as part of another package, in which case the
+% announcement text and \LaTeXe{} options are suppressed.
+%
+% An inferior version of this coding is provided for running as a
+% style file under \LaTeX~2.09. Code lines belonging to this are
+% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|.
+%
+% \subsection{Altering the Standard {\tt\bslash output} Routines}
+% The column balancing procedure here involves making changes to the
+% standard output routines in \LaTeX. I normally do not like assuming
+% anything from {\tt latex.tex} because it may have been different in
+% earlier versions, and may change again. There I try as much as possible
+% to save current definitions of internal macros and then simply add
+% revisions.
+%
+% In this case, that is not possible. I have had to take the routine
+% |\@outputdblcol| from \LaTeX{} version 2.09, (1992 March~25) as basis.
+% However, I notice that they have not changed for many versions, so that
+% maybe there is some stability here.
+%
+% The newer \LaTeXe{} version (1994 Dec.~01) also has the same definition
+% of |\@outputdblcol|, so there should be no problems of compatibility
+% here.
+%
+% In earlier versions of \texttt{\filename}, |\@outputdblcol| was changed
+% such that
+% a flag would activate the new coding if set, otherwise the old coding
+% took place. This assumes that the `old' coding is known, because I give
+% it explicitly in the new definition. This is where problems could arise
+% if |\@outputdblcol| is ever changed.
+%
+% I now do this differently. The old definition of |\@outputdblcol| is
+% stored (without knowing what it is), and the |\balance| command redefines
+% it. Without giving |\balance|, one has the default output routines as
+% though \texttt{\filename} were never selected. This gives the user the
+% chance to turn everything off if any problems should arise.
+%
+% Since the balancing act does not always work for normal pages (where the
+% two columns are full) especially when floats are involved, it is better
+% to turn it on with |\balance| only where it is needed. It may then be
+% turned off again with |\nobalance|.
+%
+% \subsection{The Principle Behind Balancing Columns}
+% Let me first explain how |\@outputdblcol| normally works. By the time it
+% is called, the accumulated text for the `page' (\TeX{} considers each
+% column to be a page at this point) is contained in the box |\@outputbox|.
+% The routine checks if this is the first column, and if so stuffs
+% |\@outputbox| into the box |\@leftcolumn|; it then toggles the
+% |\if@firstcolumn| flag. On the next call to |\@outputdblcol|, it combines
+% |\@leftcolumn| with |\@outputbox| side by side on a single page, all
+% stored in |\@outputbox|.
+%
+% For column balancing, the procedure is slightly different. If it is the
+% first column, then the height of the column (|\@colht| = |\textheight|
+% minus double-column floats and footnotes) is doubled and the contents of
+% |\@outputbox| are dumped back into the processing. The height must be
+% doubled temporarily to allow this, otherwise the |\output| routines will
+% be immediately called again. On the second column, the new routine
+% |\@BAlancecol| is called to split |\@outputbox| into two equally high
+% pieces of text, stored in |\@leftcolumn| and |\@outputbox|, which are
+% then placed side by side as usual.
+%
+% \subsection{Macro Definitions}
+% \begin{macro}{\@BAlancecol}
+% \changes{4.0}{1993 Nov 1}{Add \cmd{\vfil} after
+% \cmd{\unvbox1} to prevent underfull vbox}
+% \changes{4.1}{1994 May 16}{New name for \cmd{\@balancecol}, to conform
+% more with newer conventions for package programming.}
+% \changes{4.1a}{1994 Jun 22}{Use \cmd{\newcommand} instead of \cmd{\def}}
+% We begin by defining |\@BAlancecol|, the routine that splits
+% |\@outputbox| into two nearly equally high boxes, which are then stored
+% in boxes |\@leftcolumn| and |\@outputbox|. This routine is almost
+% identical with that of Knuth in the \TeX{}Book (macro |\balancecolumns|
+% on page~417). The loop keeps going until the first column is less than
+% the second in height, making 1~pt changes in the specification each time.
+% \begin{macrocode}
+%<*package>
+\newcommand{\@BAlancecol}{\if@twocolumn
+ \setbox0=\vbox{\unvbox\@outputbox} \@tempdima=\ht0
+ \advance\@tempdima by \topskip \advance\@tempdima
+ by -\baselineskip \divide\@tempdima by 2
+ \splittopskip=\topskip
+ {\vbadness=\@M \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to \@tempdima
+ \ifdim\ht3>\@tempdima \global\advance\@tempdima by 1pt \repeat}
+ \setbox\@leftcolumn=\vbox to \@tempdima{\unvbox1\vfil}
+ \setbox\@outputbox=\vbox to \@tempdima
+ {\dimen2=\dp3\unvbox3\kern-\dimen2
+ \vfil}
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@BAdblcol}
+% \changes{4.1}{1994 May 16}{New name for \cmd{\@baldblcol}, to conform
+% more with newer conventions for package programming.}
+% \changes{4.1a}{1994 Jun 22}{Use \cmd{\newcommand} instead of \cmd{\def}}
+% \changes{4.1a}{1994 Jun 22}{Use \cmd{\PackageWarningNoLine} instead of
+% \cmd{\@@warning}}
+% Now define the revised routine |\@outputdblcol|, and name it
+% |\@BAdblcol|. In the first column, it just puts |\@outputbox| back into
+% the processing with a doubled column height (|\@colht|). In the second
+% column, it calls |\@BAlancecol| and the places the boxes |\@leftcolumn|
+% and |\@outputbox| side by side in almost the same way that the original
+% |\@outputdblcol| does. The difference is that the final vbox is made to
+% be |\@colht| high and a |\vfil| must be added below to fill up the
+% missing space. In the original, the column boxes themselves are |\@colht|
+% high, so this is not necessary. If this feature were left off, then the
+% final box would not have the correct height, something that is noticeable
+% when a footline is added at the bottom.
+% \begin{macrocode}
+\newif\if@BAlanceone
+\global\@BAlanceonefalse
+\newdimen\oldvsize
+\newcommand{\@BAdblcol}{\if@firstcolumn
+ \unvbox\@outputbox \penalty\outputpenalty
+ \global\oldvsize=\@colht \global\multiply \@colht by 2
+ \global\@BAlanceonetrue
+ \global\@firstcolumnfalse
+ \else \global\@firstcolumntrue
+ \if@BAlanceone
+ \global\@BAlanceonefalse\@BAlancecol
+ \global\@colht=\oldvsize \else
+%<!209> \PackageWarningNoLine{balance}
+%<209> \@@warning
+ {You have called \protect\balance\space
+%<!209> in second column\MessageBreak
+%<209> in second column^^J
+ Columns might not be balanced}\fi
+ \setbox\@outputbox\vbox to \@colht{\hbox to\textwidth
+ {\hbox to\columnwidth {\box\@leftcolumn \hss}\hfil
+ \vrule width\columnseprule\hfil \hbox to\columnwidth
+ {\box\@outputbox \hss}}\vfil}\@combinedblfloats
+ \@outputpage \begingroup \@dblfloatplacement
+ \@startdblcolumn \@whilesw\if@fcolmade \fi
+ {\@outputpage\@startdblcolumn}\endgroup
+ \fi}
+% \end{macrocode}
+% The flag |\if@BAlanceone| seems redundant, since it is always the
+% complement of |\if@firstcolumn|. However, its function is to ensure that
+% the |\balance| command, that activates |\@BAdblcol|, actually occurs
+% before the first column of text is completed. If this is not the case, if
+% |\balance| is issued too late, then the procedure cannot function. In
+% this case, |\@BAdblcol| is entered with both |\if@firstcolumn| and
+% |\if@BAlanceone| set \meta{false}, so that the call to |\@BAlancecol| is
+% suppressed and warning message is printed.
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% \changes{4.2}{1995 Nov 07}{Add revised definition for balanced mode}
+% A new version of |\cleardoublepage| is necessary when |\balance| is
+% active. The regular command adds two |\newpage| commands on an even page
+% in two column mode, since each |\newpage| only starts a new column.
+% However, when |\balance| is active, each |\newpage| makes two balanced
+% columns, to it actually starts a new page, and not just a new column.
+% \begin{macrocode}
+\newcommand{\@BAcleardblpage}{\clearpage\if@twoside \ifodd\c@page\else
+ \hbox{}\newpage\fi\fi}
+\newcommand{\@@cleardblpage}{}
+\let\@@cleardblpage=\cleardoublepage
+% \end{macrocode}
+% \end{macro}
+%
+
+% \begin{macro}{\balance}
+% \changes{4.0}{1993 Oct 20}{Change from setting flag to redefining output
+% routine.}
+% \changes{4.1a}{1994 Jun 22}{Use \cmd{\newcommand} instead of \cmd{\def}}
+% \changes{4.2}{1995 Nov 07}{Add revised \cmd{\cleardoublepage}}
+% The command that activates the balancing replaces |\@outputdblcol|
+% with the new |\@BAdblcol|.
+% \begin{macrocode}
+\newcommand{\@@utputdblcol}{}
+\let\@@utputdblcol=\@outputdblcol
+\newcommand{\balance}{\global\let\@outputdblcol=\@BAdblcol
+ \global\let\cleardoublepage=\@BAcleardblpage}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\nobalance}
+% \changes{4.0}{1993 Oct 20}{Change from setting flag to restoring
+% original output routine.}
+% \changes{4.1a}{1994 Jun 22}{Use \cmd{\newcommand} instead of \cmd{\def}}
+% \changes{4.2}{1995 Nov 07}{Add revised \cmd{\cleardoublepage}}
+% To turn off the balancing routine, call |\nobalance|.
+% \begin{macrocode}
+\newcommand{\nobalance}{\global\let\@outputdblcol=\@@utputdblcol
+ \global\let\cleardoublepage=\@@cleardblpage}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
diff --git a/macros/latex/contrib/preprint/balance.ins b/macros/latex/contrib/preprint/balance.ins
new file mode 100644
index 0000000000..74157f708e
--- /dev/null
+++ b/macros/latex/contrib/preprint/balance.ins
@@ -0,0 +1,64 @@
+% File: balance.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{balance.sty}{\from{balance.dtx}{package}}
+ \file{balance.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{balance.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process balance.dtx *}%
+\Msg{* or the driver file balance.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/preprint/balance.pdf b/macros/latex/contrib/preprint/balance.pdf
new file mode 100644
index 0000000000..bb9b2c9eba
--- /dev/null
+++ b/macros/latex/contrib/preprint/balance.pdf
Binary files differ
diff --git a/macros/latex/contrib/preprint/figcaps.dtx b/macros/latex/contrib/preprint/figcaps.dtx
new file mode 100644
index 0000000000..e6c08432cd
--- /dev/null
+++ b/macros/latex/contrib/preprint/figcaps.dtx
@@ -0,0 +1,1634 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {FIGCAPS.DTX}
+%========================================================================
+%</dtx>
+%% Copyright 1993-1999 Patrick W Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpg.de
+%
+% This program 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 is a contributed file to the LaTeX2e system.
+% -------------------------------------------------
+% This is a LaTeX package to put tables and figure captions at the end of an
+% article even though the environments appear in the text.
+% Installation:
+% LaTeX this file: creates docstrip installation file figcaps.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX figcaps.ins: creates package files figcaps.sty, and optionally
+% documentation driver figcaps.drv
+% (figcaps.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a (LaTeX2e) package .sty file
+% plates - to include plate environments, just like figures
+% longtab - to include longtable environment, for longtable package (2e)
+% sublab - to include coding for use with sublabel.sty
+% toc - to enable tables of contents to be used; writes to auxiliary
+% files .pot and pof instead of .lof and .lot
+% driver - to produce a driver file to print the documentation
+% 209 - (with package) for package that runs under LaTeX 2.09
+% subpack - (with package) for coding included in other packages
+% agu - (with package,subpack) for inclusion in aguplus package
+% egs - (with package,subpack) for inclusion in egs package
+%--------------------------------------------------------------------------
+%<*!subpack>
+%<package&209>\def\ProvidesPackage#1#2]
+%<package&209> {\typeout{Style option `#1'#2]}}
+%
+% *** Identify the package file:-
+%<package&!209>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package>\ProvidesPackage{figcaps}
+%</!subpack>
+%
+% *** Provide command to dislay module version
+%<package&subpack>\def\ModuleVersion#1[#2]{}
+%<package&subpack> \ModuleVersion{figcaps}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{figcaps.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{figcaps}
+ [1999/02/23 4.7 (PWD)]
+% \changes{4.0}{1993 Oct 12}{First integrated documented version}
+% \changes{4.1}{1993 Oct 29}{Add coding for JGR, GRL, NLINPROC}
+% \changes{4.1}{1993 Oct 29}{Add \cs{iffigmark} for marginal notes}
+% \changes{4.1}{1993 Oct 29}{Add \cs{@tempa} construct to get \cs{@float}
+% out of \cs{if} \cs{fi} brackets}
+% \changes{4.1}{1993 Nov 15}{For JGR and GRL, tables after captions}
+% \changes{4.1}{1993 Nov 20}{Add coding for AGU supplement}
+% \changes{4.2}{1993 Nov 20}{Add \cs{figbox} for AGU supplement}
+% \changes{4.2}{1993 Nov 20}{AGU supplement: captions in two widths again}
+% \changes{4.2}{1993 Dec 16}{Suppress floats for AGU planotable}
+% \changes{4.2}{1993 Dec 21}{Add \cs{if@filesw} for extra appendix entries}
+% \changes{4.3}{1994 May 19}{Convert to \LaTeXe, add language and other
+% options, add \cs{figmarkon/off} and \cs{figcapson/off}}
+% \changes{4.3a}{1994 Jun 06}{For AGU, change \cs{@makefcaption}}
+% \changes{4.3b}{1994 Jun 22}{Update to first official release of \LaTeXe}
+% \changes{4.3c}{1994 Nov 30}{Bad bug in \cs{figmarkoff} fixed, caused
+% crashes}
+% \changes{4.3d}{1995 Jan 3}{Update documentation to PWD standard}
+% \changes{4.4}{1995 Jan 8}{Fix bug caused by LTX 94/12/1 \cs{@writefile}}
+% \changes{4.5}{1996 Jan 10}{Allow first float to be in appendix}
+% \changes{4.5a}{1996 Jun 27}{Change \texttt{nlinproc} option to \texttt{egs}}
+% \changes{4.5b}{1996 Jul 22}{Allow \cs{figbox} to scale automatically}
+% \changes{4.5c}{1996 Jul 29}{Add \cs{figbox*} to suppress frame}
+% \changes{4.5d}{1996 Aug 20}{Fix table notes for AGU}
+% \changes{4.5e}{1996 Oct 10}{Zero \cs{parindent} for EGS}
+% \changes{4.5f}{1997 Mar 16}{Fix copyright for subpack}
+% \changes{4.5g}{1997 Apr 29}{Conform to new \texttt{docstrip}}
+% \changes{4.5h}{1997 Nov 18}{Fix appendix problem for AGU}
+% \changes{4.6}{1998 Sep 14}{Add \texttt{longtable} environment}
+% \changes{4.7}{1999 Feb 23}{Update copyright notice}
+%
+% \CheckSum{1417}
+% \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 \~}
+%
+% \iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run if it
+%^^A does not already exist
+%^^A =============================================
+\begin{filecontents*}{figcaps.ins}
+% File: figcaps.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{figcaps.sty}{\from{figcaps.dtx}{package}}
+ \file{figcaps.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{figcaps.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process figcaps.dtx *}%
+\Msg{* or the driver file figcaps.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
+\end{filecontents*}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist natbib
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o natbib.gls natbib.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{figcaps.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand,\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi}
+% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc}
+% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let}
+% \DoNotIndex{\@ifundefined,\@input,\@latexerr,\@makecaption,\@makeother}
+% \DoNotIndex{\@mkboth,\@namedef,\@tempa,\@tempb,\@writefile,\\,\{,\},\^}
+% \DoNotIndex{\active,\addcontentsline,\addtocontents,\begingroup,\bgroup}
+% \DoNotIndex{\bigskip,\catcode,\clearpage,\closeout,\def,\do,\dospecials}
+% \DoNotIndex{\egroup,\else,\end@dblfloat,\end@float,\endgroup,\expandafter}
+% \DoNotIndex{\fi,\filedate,\filename,\fileversion,\gdef,\ifx,\immediate}
+% \DoNotIndex{\jobname,\label,\let,\long,\newcounter,\newif,\newpage}
+% \DoNotIndex{\newwrite,\openout,\par,\refstepcounter,\relax,\space}
+% \DoNotIndex{\stepcounter,\string,\typeout,\uppercase,\vbox,\vskip}
+% \DoNotIndex{\vspace,\marginpar,\if@filesw,\parindent}
+% \DoNotIndex{\advance,\divide,\fboxrule,\fboxsep,\fnum@figure,\fnum@plate}
+% \DoNotIndex{\fnum@table,\framebox,\hbox,\hfil,\hsize,\newdimen}
+% \DoNotIndex{\providecommand,\section,\setcounter,\small,\textwidth}
+% \DoNotIndex{\vrule,\vss,\z@}
+% \DoNotIndex{\@caption,\@captype,\@dblfloat,\@depth,\@float,\@height}
+% \DoNotIndex{\@ifnextchar,\@tempdima,\@term,\@width,\cl@section}
+% \DoNotIndex{\cr@relax,\fbox}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \GetFileInfo{figcaps}
+%
+% \title{\bfseries A Package to Put Figures and Tables at the End of
+% an Article}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+% \textsl{It is part of the \texttt{preprint} collection of packages}
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{PUTTING FIGURES AND TABLES AT THE END}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+% \newcommand{\thestyle}{\texttt{\filename}}
+%
+%\begin{small}\begin{center}\textbf{Summary}\end{center}
+% The stripped version of this file contains the following brief description:
+%\iffalse
+%<*package&!subpack>
+%\fi
+% \begin{verbatim}
+ % This option allows the figure captions to be collected throughout
+ % the paper and printed on a separate page at the end. The figures
+ % themselves will not appear in the text. This is for purposes of
+ % a manuscript for submission.
+ % Similarly, tables are not printed in the text, but are outputted at
+ % the end, after the figure captions.
+%<*plates>
+ % A plate environment also exists, handled just like figures.
+%</plates>
+%<*longtab>
+ % A longtable environment exists, for use with the longtable tools package.
+%</longtab>
+ % The figures themselves may appear, with captions, at
+ % the end, after the tables. This is done with command \printfigures
+ % in the preamble. This only makes sense if the figures have been
+ % generated by LaTeX or if they are being imported.
+ % Marginal notes added where environments placed if \figmarkon given.
+ % NOTE: Only works for article-like styles at present, where \section is
+ % the highest sectioning level.
+%<*!toc>
+ % NOTE: Tables of contents (incl figures and tables) cannot be used
+%</!toc>
+ % NOTE: This file must be read in AFTER \appendix has been defined;
+%<*sublab>
+ % if sublabel.sty is also used, it must be read in first.
+%</sublab>
+%<agu> % The captions are formatted as for AGU journals.
+%<egs> % The captions are formatted as for EGS journals.
+%<*!209>
+ %
+ % Options with LaTeX2e:
+ % printfigures - prints the figures at the end of the article, (is
+ % like issuing the \printfigures command)
+ % figmark - turns on the markers for figures and tables in the text,
+ % (is like issuing \figmarkon)
+ % figon/off - activates or deactivates the whole procedure (is like
+ % (issuing \figcapson or \figcapsoff). Default=on.
+ % mylang - (default) leaves explicit text (e.g. `Figure Captions'
+ % as is, or if undefined, makes them English
+ % english,american,german,austrian,french,esperanto - changes explicit
+ % texts accordingly
+ % blank - makes explicit texts empty.
+%</!209>
+% \end{verbatim}
+%\iffalse
+ %-----------------------------------------------------------
+%</package&!subpack>
+%\fi
+%\end{small}
+%
+% \section{Introduction}
+% Often when producing manuscripts for submission to a journal, it is
+% required that the figure captions be listed at the end on a separate
+% page, and also that tables be put at the end too. Then when the
+% manuscript is ready and camera-ready copy, or a preprint, is to be
+% generated, one has to move them all back to the proper positions in the
+% paper.
+%
+% This style alleviates this problem. The \texttt{figure} and \texttt{table}
+% environments are placed in the text as they should be for the preprint or
+% camera-ready copy, but the tables actually are printed at the end. The
+% figures are not printed at all, but their captions are listed on a
+% separate page at the end. Optionally, the figures themselves may be
+% printed at the very end. This last only makes sense if there is something
+% in the figures, i.e., they have been produced with \texttt{picture} or are
+% imported graphics.
+%
+% \section{Invoking the Package}
+% The macros in this package are included in the main document
+% with the |\usepackage| command of \LaTeXe,
+% \begin{quote}
+% |\documentclass[..]{...}|\\
+% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}|
+% \end{quote}
+% where the possible \emph{options} are described below.
+%
+% Alternatively, the name of the package is added as an option to the
+% |\documentstyle| command in \LaTeX~2.09 compatibility mode, as
+% \begin{quote}
+% |\documentstyle[..|\texttt{\filename}|..]{...}|
+% \end{quote}
+%
+% It may only be used for \texttt{article}, or an article-like main class.
+% That is, for one that does not contain the |\chapter| level of
+% sectioning.
+%
+% The order in which other packages are loaded is important for certain
+% features. If my package
+% \texttt{sublabel} is included, then it must come before \thestyle.
+% Furthermore, \thestyle{} adds to the existing definition of
+% |\appendix|, so that if the author has any packages that alter this
+% definition, they must come before \thestyle. Clearly, |\appendix| may
+% not be redefined afterwards.
+%
+% \section{Using the Package}
+% \DescribeMacro{\figcapson}\DescribeMacro{\figcapsoff}
+% The macro package in \thestyle{} operates pretty much automatically.
+% The whole thing may be turned on and off with the commands |\figcapson|
+% and |\figcapsoff|. The default is \meta{on}. One might want to
+% control the placement of figures and tables with this flag rather than by
+% adding and removing the option from the |\documentclass| command.
+%
+% Alternatively, the \LaTeXe{} options \texttt{figon} and \texttt{figoff}
+% have the same effect, with \texttt{figon} being the default.
+%
+% \DescribeMacro{\printfigures}
+% The only other means of interacting with the macros is with the command
+% |\printfigures|, which, when given anywhere in the text, enables the
+% figures themselves to be output at the very end of the paper. Without
+% this, only the captions are listed. With it, both captions and figures
+% are output.
+%
+% The \LaTeXe{} option \texttt{printfigures} in |\usepackage| is
+% equivalent to issuing the command |\printfigures| in the text.
+%
+% \DescribeMacro{\figmarkon}
+% \DescribeMacro{\figmarkoff}
+% Another option is to put marginal notes into the text at the place
+% where the float environment is entered. This is useful for camera-ready
+% copy that will be cut-and-pasted together to indicate where the figures
+% and tables should appear. The commands |\figmarkon| and |\figmarkoff|
+% control this feature, with the default being \meta{off}.
+%
+% The \LaTeXe{} option \texttt{figmark} in |\usepackage| sets this
+% default to \meta{on}; in other words, it is equivalent to issuing
+% |\figmarkon| in the text.
+%
+% \DescribeMacro{\figurecapname}
+% \DescribeMacro{\tablepagename}
+% \DescribeMacro{\figurepagename}
+% The text that is written as header at the top of the special pages is
+% defined in three commands |\figurecapname|, |\tablepagename|, and
+% |\figurepagename|. They default to English text, but may be redefined to
+% other languages, or suppressed altogether, with |\renewcommand| or with
+% \LaTeXe{} options (see page~\pageref{names}).
+%
+% \section{How it Works}
+% The contents of all the \texttt{figure} and \texttt{table} environments are
+% written to auxiliary files {\tt.lof} and {\tt.lot} respectively, and then
+% these are read in again at the end of the paper. Since these auxiliary
+% files are normally used to write information for the lists of figures and
+% tables, this capability is lost. However, it is not likely that one wants
+% such lists, or even a table of contents, in a manuscript. In fact, the
+% commands |\tableofcontents|, |\listoffigures|, |\listoftables| are turned
+% off (they issue a warning message).
+%
+% If you really do need tables of contents, then see the extra features
+% below.
+%
+% \subsection{With the \texttt{longtable} Package}
+% This package may optionally be used with the \texttt{longtable} environment defined
+% in the package of the same name. Since such tables are normally long, i.e.\
+% over a page, the list of tables at the back will always start a new page for
+% each of these.
+%
+% For preprints, when the tables are not moved to the back (|\figcapsoff|), it
+% makes sense to put the \texttt{longtable} environment inside the |\afterpage|
+% command (from the \texttt{afterpage} package). However, with |\figcapson|,
+% and the table is move, this is useless. In this case, the |\afterpage|
+% command is deactivated. One should realize this in case it is used for other
+% purposes.
+%
+% \subsection{As Module to Journal-Specific Styles}
+% Although \thestyle{} is meant to be an all-purpose bibliographic style
+% \emph{package}, it may also be incorporated as a module to other
+% packages for specific journals. In this case, many of the general features may
+% be left off. This is allowed for with \texttt{docstrip} options that not
+% only leave off certain codelines, but also include extra ones. So far,
+% options exist for
+% \begin{description}
+% \item[\ttfamily egs] for \textsl{European Geophysical Society} journals.
+% \item[\ttfamily agu] for \textsl{American Geophysical Union} journals.
+% \end{description}
+%
+% Previous options \texttt{jgr} and \texttt{grl} have become obsolete due
+% to revisions in these journals; they have been replaced by the more
+% general \texttt{agu} option.
+%
+% \section{\LaTeXe{} Options}
+% Under \LaTeXe, \emph{options} may be added to the |\usepackage| command
+% that loads the package. Available options for \thestyle{} set certain
+% control flags, thus replacing the equivalent commands, or select the
+% language for the texts that are printed by |\figurecapname|,
+% |\tablepagename|, and |\figurepagename|.
+% \begin{description}
+% \item[\ttfamily figon] (default) activates the whole procedure of moving
+% figures and tables to the back of the article, (same as
+% |\figcapson|);
+%
+% \item[\ttfamily figoff] deactivates the whole procedure, (same as
+% |\figcapsoff|);
+%
+% \item[\ttfamily printfigures] allows the figures themselves and not just
+% their captions to be output at the very end, in addition to the
+% caption page, (same as |\printfigures|); by default this is not done;
+%
+% \item[\ttfamily figmark] enables marking of figure and table environments
+% in the text with marginal notes; (same as |\figmarkon|);
+%
+% \item[\ttfamily mylang] (default) leaves the three \texttt{name} commands
+% as they are; however if they are not defined at all, then they are
+% given English values; since these name commands are not standard, one
+% cannot expect them to be set by other language adaption packages;
+%
+% \item[\ttfamily english, american, german, austrian, french, esperanto]
+% \label{names}
+% set the \texttt{name} commands to the translation in the
+% corresponding language, overwriting any previous definitions;
+%
+% \item[\ttfamily blank] sets the text of |\figurecapname|,
+% |\tablepagename|, and |\figurepagename| to nothing.
+% \end{description}
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\ttfamily plates] permits \texttt{plate} and \texttt{plate*}
+% environments to be treated just like \texttt{figure} and
+% \texttt{figure*}; the contents are written to the same auxiliary file
+% and the captions are mixed with those of the figures. The environments
+% must already exist though, for with this option the coding is included
+% to treat plates like figures, but it does not define such plate
+% environments.
+%
+% \item[\ttfamily longtab] permits \texttt{longtable} environment from the
+% \texttt{longtable} tools package to be treated too (\LaTeXe\ only).
+%
+% \item[\ttfamily sublab] adds coding to enable the \thestyle{} macros to
+% function with my other option \texttt{sublabel}, which permits objects
+% to be numbered 4{\it a}, 4{\it b}, etc. This coding may always be
+% included, even if \texttt{sublabel} is not invoked; the converse is
+% not true: if \texttt{sublabel} is present, then this coding must also
+% be there, and \texttt{sublabel} must precede \thestyle{} in the list
+% of options.
+%
+% \item[\ttfamily toc] allows auxiliary files with the extensions {\tt.pof}
+% and {\tt.pot} so that there is no conflict with the tables of contents
+% files. Thus |\tableofcontents|, |\listoffigures|, |\listoftables|, and
+% possibly |\listofplates| may be used as normal.
+%
+% \item[\ttfamily package] to produce a \texttt{.sty} package file with most
+% comments removed;
+%
+% \item[\ttfamily 209] for a style option file that will run under the older
+% \LaTeX~2.09;
+%
+% \item[\ttfamily subpack] (together with \texttt{package}) for coding that
+% is to be included inside a larger package; even more comments are
+% removed, as well as \LaTeXe{} option handling and identification;
+%
+% \item[\ttfamily agu] (with \texttt{package,subpack}) for special coding
+% for the \textsl{AGU$^{++}$} package;
+%
+% \item[\ttfamily egs] (with \texttt{package,subpack}) for special
+% coding for the \textsl{EGS} package;
+%
+% \item[\ttfamily driver] to produce a driver \texttt{.drv} file that will
+% print out the documentation under \LaTeXe. The documentation cannot
+% be printed under \LaTeX~2.09.
+%
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% The \texttt{docstrip} option |<subpack>| should only be called if the
+% coding is to be included as part of another package, in which case the
+% announcement text and \LaTeXe{} options are suppressed.
+%
+% An inferior version of this coding is provided for running as a
+% style file under \LaTeX~2.09. Code lines belonging to this are
+% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|.
+%
+% Now test that the main style is article-like, i.e., it has no chapters.
+% This is because the figure caption list as well as the tables page are output
+% under a |\section*|, and because of the relabelling of figures, tables,
+% equations within appendices. (Maybe someday this will be changed.)
+% \begin{macrocode}
+%<*package>
+\@ifundefined{chapter}{}{%
+%<209> \@latexerr
+%<!209> \PackageError{figcaps}
+ {`figcaps' may only be used with article-like classes}
+ {There is no help. You just cannot use `figcaps'}}
+% \end{macrocode}
+%
+% \begin{macro}{\iffigcaps}
+% \begin{macro}{\iffigmark}
+% \changes{4.1}{1993 Oct 18}{Add flag to switch marginal notes on/off}
+% \begin{macro}{\if@figpage}
+% Define a few flags that control the operations, such as whether the whole
+% procedure is turned on, whether figures and tables are marked in the text
+% where they should appear, and whether a page of figures (not just
+% captions) is output. These are set by commands defined below and/or by
+% \LaTeXe options.
+% \begin{macrocode}
+\newif\iffigcaps \figcapstrue
+\newif\iffigmark \figmarkfalse
+\newif\if@figpage \@figpagefalse
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \subsection{Setting Defaults and \LaTeXe{} Options}
+% \begin{macro}{\figurecapname}
+% \begin{macro}{\tablepagename}
+% \begin{macro}{\figurepagename}
+% Define explicit text with name commands that may be changed by language
+% adaptations. Since these are non-standard, it is unlikely that they
+% already exist, but nevertheless, it does not hurt to assume that they do.
+% \begin{macrocode}
+%<*subpack|209>
+\@ifundefined{figurecapname}{\def\figurecapname{Figure Captions}}{}
+\@ifundefined{tablepagename}{\def\tablepagename{Tables}}{}
+\@ifundefined{figurepagename}{\def\figurepagename{Figures}}{}
+%</subpack|209>
+% \end{macrocode}
+%
+% \begin{macro}{\DeclareOption}
+% \changes{4.3}{1994 May 19}{Add language options for \LaTeXe}
+% In \LaTeXe, the initial values of these commands can be set with options
+% to the |\usepackage| command. They are processed in the order given, not
+% in the order defined (starred version of |\ProcessOptions|).
+% \begin{macrocode}
+%<*!subpack&!209>
+\DeclareOption{english}{\def\figurecapname{Figure Captions}%
+ \def\tablepagename{Tables}%
+ \def\figurepagename{Figures}}
+\DeclareOption{american}{\ExecuteOptions{english}}
+\DeclareOption{german}{\def\figurecapname{Untertiteln der Abbildungen}%
+ \def\tablepagename{Tabellen}%
+ \def\figurepagename{Abbildungen}}
+\DeclareOption{austrian}{\ExecuteOptions{german}}
+\DeclareOption{french}{\def\figurecapname{Titres des Figures}%
+ \def\tablepagename{Tableaux}%
+ \def\figurepagename{Figures}}
+\DeclareOption{esperanto}{\def\figurecapname{Titroj de la Figuroj}%
+ \def\tablepagename{Tabeloj}%
+ \def\figurepagename{Figuroj}}
+\DeclareOption{blank}{\def\figurecapname{}%
+ \def\tablepagename{}%
+ \def\figurepagename{}}
+\DeclareOption{blank}{\def\appendixname{}}
+\DeclareOption{mylang}{\providecommand{\figurecapname}{Figure Captions}%
+ \providecommand{\tablepagename}{Tables}%
+ \providecommand{\figurepagename}{Figures}}
+\DeclareOption{figmark}{\figmarktrue}
+\DeclareOption{printfigures}{\@figpagetrue}
+\DeclareOption{figon}{\figcapstrue}
+\DeclareOption{figoff}{\figcapsfalse}
+\ExecuteOptions{mylang,figon}
+\ProcessOptions*
+%</!subpack&!209>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \subsection{Low Level Routines --- the Tricky Bits}
+% The way in which this routine is to work is as follows: the float
+% commands |\figure|, |\table|, and optionally |\plate| are redefined so
+% that they write everything up to the corresponding |\end| command to an
+% auxiliary file. These files have extensions {\tt.lof} (for figures and
+% plates) and {\tt.lot} (for tables). The entire contents must be written
+% literally, that is as verbatim, without any expansion. The terminal
+% |\end| text must also be literal.
+%
+% The actual internal commands that will do this are called |\@vfig|,
+% |\@vsfig|, etc., where the second variant is for the starred version of
+% the float command. These must be defined in such a way that |\|, |{|,
+% and |}| are temporarily characters (catcode=12); their functionality is
+% taken over by \verb!|!, |[|, and |]|. Furthermore, the carriage return
+% |^^M| must also be made active so that it may be used as a character
+% within the template of the definitions. Its function is to separate the
+% individual lines of text. It must be active, not `other', because
+% |\set@literal| (see below) will give it a definition of |\relax|. (It
+% probably cannot be made `other' anyway because it is unprintable.)
+%
+% Switch the category codes, within a group, of course, to keep them local.
+% \begin{macrocode}
+\begingroup
+ \catcode `|=0 \catcode `[= 1
+ \catcode`]=2 \catcode `\{=12 \catcode `\}=12
+ \catcode`\^^M=13 \catcode`\\=12 %
+% \end{macrocode}
+% \begin{macro}{\@vfig}
+% Now define the true working commands. Take |\@vfig| as prototype for all
+% the others. Its arguement is everything up to the literal text
+% |\end{figure}|. This argument is expanded and used as argument to
+% |\writelof| with an extra line termination (|^^M|) and the text
+% |\end{figure}| added. The function |\writelof| dissects its argument into
+% individual lines (as indicated by the active |^^M|) and writes them to
+% the {\tt.lof} file, until it finds a line of text equal to |\@term|.
+% Hence, this termination command is first defined as |\end{figure}|.
+% Finally, |\@vfig| issues the \emph{command} (not the literal text)
+% |\end{figure}| in order to close the \texttt{figure} environment. This last
+% command appears in the definition as \verb!|end[figure]! because of the
+% altered category codes.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+|long|gdef|@vfig#1\end{figure}[|def|@term[\end{figure}]%
+ |expandafter|writelof#1^^M\end{figure}^^M|end[figure]]%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@vsfig}
+% The equivalent function for \texttt{figure*} is now defined.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+|long|gdef|@vsfig#1\end{figure*}[|def|@term[\end{figure*}]%
+ |expandafter|writelof#1^^M\end{figure*}^^M|end[figure*]]%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@vtab}
+% \begin{macro}{\@vstab}
+% Next, the same functions for tables. Here |\writelot| is used instead
+% of |\writelof| because the text goes to a different auxiliary file.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+|long|gdef|@vtab#1\end{table}[|def|@term[\end{table}]%
+ |expandafter|writelot#1^^M\end{table}^^M|end[table]]%
+|long|gdef|@vstab#1\end{table*}[|def|@term[\end{table*}]%
+ |expandafter|writelot#1^^M\end{table*}^^M|end[table*]]%
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\@vltab}
+% \changes{4.6}{1998 Sep 14}{Add macro for \texttt{longtable} package}
+% For use with the \texttt{longtable} package and its environment of the same
+% name, need special coding. This environment is never put into a
+% \texttt{figure} environment, but rather is used on its own.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+%<*longtab&!209>
+ |long|gdef|@vltab#1\end{longtable}[|def|@term[\end{longtable}]%
+ |expandafter|writelot#1^^M\end{longtable}^^M|end[longtable]]%
+%</longtab&!209>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@vpla}
+% \begin{macro}{\@vspla}
+% For the event that a \texttt{plate} environment is also present (as in
+% \textsl{AGU}, for example) we must include two more such functions. These
+% operate exactly like \texttt{figure}, even using |\writelof| instead of
+% |\writelot|.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+%<*plates>
+|long|gdef|@vpla#1\end{plate}[|def|@term[\end{plate}]%
+ |expandafter|writelof#1^^M\end{plate}^^M|end[plate]]%
+|long|gdef|@vspla#1\end{plate*}[|def|@term[\end{plate*}]%
+ |expandafter|writelof#1^^M\end{plate*}^^M|end[plate*]]%
+%</plates>
+% \end{macrocode}
+% \end{macro}\end{macro}
+% \begin{macro}{\@vptab}
+% \changes{4.5f}{1997 Mar 16}{For AGU only}
+% In the AGU supplement, there is an additional \texttt{table} environment
+% called \texttt{planotable}. This must then be provided for here. It has
+% no starred version.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+%<agu> |long|gdef|@vptab#1\end{planotable}[|def|@term[\end{planotable}]%
+%<agu> |expandafter|writelot#1^^M\end{planotable}^^M|end[planotable]]%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@fcaponly}
+% \changes{4.1}{1993 Nov 20}{Remove caption-only commands for AGU}
+% \begin{macro}{\@feject}
+% \begin{macro}{\@pcaponly}
+% \begin{macro}{\@peject}
+% Some more special commands are needed with literal commands in their
+% templates. These are used to print only the captions when the figures
+% auxiliary file is reread in. First |\@fcaponly| reads everything up to
+% the |\caption| and throws it away. Then |\@feject| removes all text from
+% its current position (which will be right after |\caption|) to the end of
+% the \texttt{figure} environment. Similar functions exist for \texttt{plate},
+% but not for \texttt{table}, since tables are always reproduced in full.
+%
+% The AGU supplement does not make use of these commands, since it works
+% in a different way.
+% \SpecialEscapechar{\|}
+% \begin{macrocode}
+%<*!agu>
+|long|gdef|@fcaponly#1\caption[|endgroup|@fcaption]%
+|long|gdef|@feject#1\end{figure}[|end[figure]]%
+%<*plates>
+|long|gdef|@pcaponly#1\caption[|endgroup|@pcaption]%
+|long|gdef|@peject#1\end{plate}[|end[plate]]%
+%</plates>
+%</!agu>
+ |endgroup
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+% Here the category codes are restored to their normal values with the
+% ending of the group. Note that each of the above lines must have |%| at
+% the end to avoid \meta{end-of-line}, which is active.
+%
+% \begin{macro}{\FC@writefile}
+% \changes{4.4}{1995 Jan 8}{Add macro, equal to old definition of standard
+% \cmd{\@writefile}}
+% The release of \LaTeX\ on 1995/12/01 changed the internal definition
+% of |\@writefile| such as to make it robuster: the text is written literally
+% to the file. This means that my |\string\begin{figure}| is written as
+% |\string \begin {figure}| instead of |\begin{figure}|. To get around this,
+% keeping capatibility with older versions, and not interfering with
+% other uses of |\@writefile|, I add may own version, equal to the
+% older definition.
+% \begin{macrocode}
+\long\def\FC@writefile#1#2{\@ifundefined{tf@#1}{}{%
+ \immediate\write\csname tf@#1\endcsname{#2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\writelof}
+% \begin{macro}{\writelot}
+% \changes{4.0}{1993 Oct 12}{Add \texttt{toc} option to determine extension
+% of auxiliary files. Tables of contents were previously allowed, now
+% only optionally allowed.}
+% Now, the command that write the text to the auxiliary file |\writelof|
+% takes the text one line at a time, checks if it
+% equals |\@term|; if not, it is output to {\tt.lof} and |\writelof| is
+% called again; if yes, the routine comes to an end. The
+% \meta{end-of-line} |^^M| must be made active again at this stage so that
+% it has the correct category code in the definition. For tables, the
+% corresponding |\writelot| is analogous.
+%
+% Before we do this, however, it should be pointed out that these auxiliary
+% files are normally used for lists of figures and tables information. Thus
+% they may not be used for this purpose. Normally, one does not have such
+% tables of contents in an article, but if that should be required, then
+% we provide a \texttt{docstrip} option \texttt{toc} to change the extensions
+% to {\tt.pof} and {\tt.pot}.
+% \begin{macrocode}
+%<*!toc>
+\def\lof{lof} \def\lot{lot}
+%</!toc>
+%<toc>\def\lof{pof} \def\lot{pot}
+
+{\catcode`\^^M=13%
+ \long\gdef\writelof#1^^M{\def\@tempb{#1}%
+ \ifx\@tempb\@term\let\@tempa\relax\else
+ \if@filesw\FC@writefile{pof}{#1}\fi\let\@tempa\writelof\fi \@tempa}
+ \long\gdef\writelot#1^^M{\def\@tempb{#1}%
+ \ifx\@tempb\@term\let\@tempa\relax\else
+ \if@filesw\FC@writefile{pot}{#1}\fi\let\@tempa\writelot\fi \@tempa}
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \subsection{Caption Commands}
+% \begin{macro}{\@fcaption}
+% \changes{4.1}{1993 Nov 20}{Remove caption-only commands for AGU}
+% \begin{macro}{\@@fcapopt}
+% \begin{macro}{\@@fcap}
+% Here are the modified |\caption| commands for printing only the captions.
+% In |\@figurecaps|, the command |\@fcaponly| is called at the start of
+% a \texttt{figure} environment, which ejects all text up to the |\caption|
+% command, and then calls |\@fcaption|. This then selects |\@@fcap| or
+% |\@@fcapopt| depending on the presence of the optional argument. Both do
+% essentially the same thing: they call the true caption command
+% |\@caption| to process the argument, and then call |\@feject| to remove
+% the remaining text in the \texttt{figure} environment. Note: this is only
+% done when the auxiliary {\tt.lof} file is being read in to produce a list
+% of captions.
+% \begin{macrocode}
+%<*!agu>
+\def\@fcaption{\refstepcounter\@captype \@ifnextchar[{\@@fcapopt}{\@@fcap}}
+\def\@@fcapopt[#1]#2{\@caption\@captype[]{#2}\begingroup\set@literal\@feject}
+\def\@@fcap#1{\@caption\@captype[]{#1}\begingroup\set@literal\@feject}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\@pcaption}
+% \begin{macro}{\@@pcapopt}
+% \begin{macro}{\@@pcap}
+% The same thing for plates.
+% \begin{macrocode}
+%<*plates>
+\def\@pcaption{\refstepcounter\@captype \@ifnextchar[{\@@pcapopt}{\@@pcap}}
+\def\@@pcapopt[#1]#2{\@caption\@captype[]{#2}\begingroup\set@literal\@peject}
+\def\@@pcap#1{\@caption\@captype[]{#1}\begingroup\set@literal\@peject}
+%</plates>
+%</!agu>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \subsection{The High Level Commands for Float Environments}
+% \begin{macro}{\figcapson}
+% \changes{4.3}{1994 May 19}{Add on/off commands to set whole thing
+% on/off}
+% \begin{macro}{\figcapsoff}
+% \changes{4.3}{1994 May 19}{Add on/off commands to set whole thing
+% on/off}
+% Here are the new definitions of the figure and table, which are to
+% be executed in the main text where the environments are entered. These
+% new definitions are only in effect if the flag \texttt{figcaps} is
+% \meta{true}, otherwise the original definitions hold. This flag allows
+% the style to be input in the |\documentstyle| line, or with
+% |\usepackage|, even if it is not yet, or no longer, wanted.
+% \begin{macrocode}
+\def\figcapson{\figcapstrue}
+\def\figcapsoff{\figcapsfalse}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\figmarkon}
+% \changes{4.3}{1994 May 19}{Add on/off commands to set flag
+% \cmd{\iffigmark}, consistent with older manuals!}
+% \begin{macro}{\figmarkoff}
+% \changes{4.3}{1994 May 19}{Add on/off commands to set flag
+% \cmd{\iffigmark}, consistent with older manuals!}
+% \changes{4.3c}{1994 Nov 30}{Correct very bad bug!}
+% Another flag allows the figures and tables in the text to be marked with
+% a marginal note to indicate where they are first referred to. Since this is
+% only necessary for cut-and-paste procedures, the default is to have the
+% flag set \meta{false} unless the \LaTeXe{} option \texttt{figmark} has
+% been given. These commands set the state of the flag.
+% \begin{macrocode}
+\def\figmarkon{\figmarktrue}
+\def\figmarkoff{\figmarkfalse}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\figure}
+% \changes{4.1}{1993 Oct 18}{Add marginal note with \cmd{\iffigmark}}
+% \changes{4.1}{1993 Oct 29}{Add \cmd{\@zfigure} to bring
+% float out of the if clause}
+% \changes{4.5}{1996 Jan 10}{Test for \cs{ifFC@appendix}}
+% In the new definitions, the
+% necessary auxiliary file is opened, the counter is stepped, the caption
+% type determined (these are normal functions of the float routine), and
+% then |\begin{figure}| is written literally to the auxiliary file.
+% Finally, |\@vfig|, or equivalent, is called to process the rest of the
+% environment's contents.
+%
+% If |figcaps| is \meta{false}, then the normal |\@float| command is used.
+% \begin{macrocode}
+\def\figure{\iffigcaps \let\@tempb=\@zfigure \else \let\@tempb=\@float\fi
+ \@tempb{figure}}
+\def\@zfigure#1{\begingroup\set@literal\@ifnextchar[{\@figure}{\@figure[]}}
+\def\@figure[#1]{\@ifundefined{tf@pof}{\newwrite\tf@pof
+ \if@filesw\immediate\openout\tf@pof\jobname.\lof\relax
+ \ifFC@appendix\FC@writefile{pof}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{figure}\iffigmark\marginpar{\fbox{\fnum@figure}}\fi
+ \def\@captype{figure}\if@filesw\FC@writefile{pof}{\string\begin{figure}}\fi
+ \@vfig}
+
+\def\endfigure{\iffigcaps
+ \endgroup\if@filesw\FC@writefile{pof}{\string\end{figure}}\fi\else
+ \end@float\fi}
+
+\@namedef{figure*}{\iffigcaps \let\@tempb=\@zsfigure \else
+ \let\@tempb=\@dblfloat\fi \@tempb{figure}}
+\def\@zsfigure#1{\begingroup\set@literal\@ifnextchar[{\@sfigure}{\@sfigure[]}}
+\def\@sfigure[#1]{\@ifundefined{tf@pof}{\newwrite\tf@pof
+ \if@filesw\immediate\openout\tf@pof\jobname.\lof\relax
+ \ifFC@appendix\FC@writefile{pof}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{figure}\iffigmark\marginpar{\fbox{\fnum@figure}}\fi
+ \def\@captype{figure}\if@filesw\FC@writefile{pof}{\string\begin{figure}}\fi
+ \@vsfig}
+
+\@namedef{endfigure*}{\iffigcaps\endfigure\else\end@dblfloat\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\plate}
+% \changes{3.2}{1993 Feb 9}{Add possibility of plate environments}
+% \changes{4.1}{1993 Oct 18}{Add marginal note with \cmd{\iffigmark}}
+% \changes{4.1}{1993 Oct 29}{Add \cmd{\@zfigure} to bring
+% float out of the if clause}
+% \changes{4.5}{1996 Jan 10}{Test for \cs{ifFC@appendix}}
+% Plates are defined in the same way, and write to the same auxiliary
+% file as figures. We must first test if there really is a plate counter,
+% otherwise we will have trouble later.
+% \begin{macrocode}
+%<*plates>
+\@ifundefined{c@plate}{\newcounter{plate}}{}
+
+\def\plate{\iffigcaps \let\@tempb=\@zplate \else \let\@tempb=\@float\fi
+ \@tempb{plate}}
+\def\@zplate#1{\begingroup\set@literal\@ifnextchar[{\@plate}{\@plate[]}}
+\def\@plate[#1]{\@ifundefined{tf@pof}{\newwrite\tf@pof
+ \if@filesw\immediate\openout\tf@pof\jobname.\lof\relax
+ \ifFC@appendix\FC@writefile{pof}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{plate}\iffigmark\marginpar{\fbox{\fnum@plate}}\fi
+ \def\@captype{plate}\if@filesw\FC@writefile{pof}{\string\begin{plate}}\fi
+ \@vpla}
+
+\def\endplate{\iffigcaps
+ \endgroup\if@filesw\FC@writefile{pof}{\string\end{plate}}\fi\else
+ \end@float\fi}
+
+\@namedef{plate*}{\iffigcaps \let\@tempb=\@zsplate \else
+ \let\@tempb=\@dblfloat\fi \@tempb{plate}}
+\def\@zsplate#1{\begingroup\set@literal\@ifnextchar[{\@splate}{\@splate[]}}
+\def\@splate[#1]{\@ifundefined{tf@pof}{\newwrite\tf@pof
+ \if@filesw\immediate\openout\tf@pof\jobname.\lof\relax
+ \ifFC@appendix\FC@writefile{pof}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{plate}\iffigmark\marginpar{\fbox{\fnum@plate}}\fi
+ \def\@captype{plate}\if@filesw\FC@writefile{pof}{\string\begin{plate}}\fi
+ \@vspla}
+
+\@namedef{endplate*}{\iffigcaps\endplate\else\end@dblfloat\fi}
+%</plates>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\table}
+% \changes{4.1}{1993 Oct 18}{Add marginal note with \cmd{\iffigmark}}
+% \changes{4.1}{1993 Oct 29}{Add \cmd{\@zfigure} to bring
+% float out of the if clause}
+% \changes{4.5}{1996 Jan 10}{Test for \cs{ifFC@appendix}}
+% \changes{4.5d}{1996 Aug 20}{Add \cs{spew@tblnotes} for AGU}
+% The table environments are made up the same way, but write to {\tt.lot}
+% instead of {\tt.lof}.
+% \begin{macrocode}
+\def\table{\iffigcaps \let\@tempb=\@ztable \else \let\@tempb=\@float\fi
+ \@tempb{table}}
+\def\@ztable#1{\begingroup\set@literal\@ifnextchar[{\@table}{\@table[]}}
+\def\@table[#1]{\@ifundefined{tf@pot}{\newwrite\tf@pot
+ \if@filesw\immediate\openout\tf@pot\jobname.\lot\relax
+ \ifFC@appendix\FC@writefile{pot}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{table}\iffigmark\marginpar{\fbox{\fnum@table}}\fi
+ \def\@captype{table}\if@filesw\FC@writefile{pot}{\string\begin{table}}\fi
+ \@vtab}
+
+\def\endtable{\iffigcaps
+ \endgroup\if@filesw\FC@writefile{pot}{\string\end{table}}\fi\else
+%<agu> \spew@tblnotes
+ \end@float\fi}
+
+\@namedef{table*}{\iffigcaps \let\@tempb=\@zstable \else
+ \let\@tempb=\@dblfloat\fi \@tempb{table}}
+\def\@zstable#1{\begingroup\set@literal\@ifnextchar[{\@stable}{\@stable[]}}
+\def\@stable[#1]{\@ifundefined{tf@pot}{\newwrite\tf@pot
+ \if@filesw\immediate\openout\tf@pot\jobname.\lot\relax
+ \ifFC@appendix\FC@writefile{pot}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{table}\iffigmark\marginpar{\fbox{\fnum@table}}\fi
+ \def\@captype{table}\if@filesw\FC@writefile{pot}
+ {\string\begin{table}}%
+ \fi\@vstab}
+
+\@namedef{endtable*}{\iffigcaps\endtable\else
+%<agu> \spew@tblnotes
+ \end@dblfloat\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\longtable}
+% \changes{4.6}{1998 Sep 14}{Add macro for \texttt{longtable} package}
+% For the \texttt{longtable} package, add environment of same name.
+% This coding to be added after the preamble so that the order of loading
+% \thestyle{} and \texttt{longtable} is unimportant. The \cs{LT@makecaptions}
+% is fixed to use the \cs{\@makecaptions} format that is current.
+% Since it makes sense to use the \texttt{longtable} environment with the
+% \texttt{afterpage} command, but not when the table is moved to the back,
+% switch off that command when moving is active.
+% \begin{macrocode}
+%<*longtab&!209>
+\AtBeginDocument{\let\FC@ltab=\longtable
+ \let\FC@endltab=\endlongtable
+\def\longtable{\iffigcaps \let\@tempb=\@ltable \else
+ \let\@tempb=\FC@ltab\fi \@tempb}
+\def\@ltable{\begingroup\set@literal
+ \@ifundefined{tf@pot}{\newwrite\tf@pot
+ \if@filesw\immediate\openout\tf@pot\jobname.\lot\relax
+ \ifFC@appendix\FC@writefile{pot}{\string\doappendix}\fi\fi}{}%
+ \refstepcounter{table}\iffigmark\marginpar{\fbox{\fnum@table}}\fi
+ \def\@captype{table}\if@filesw\FC@writefile{pot}
+ {\string\begin{longtable}}\fi \@vltab}
+\def\endlongtable{\iffigcaps
+ \endgroup\if@filesw\FC@writefile{pot}{\string\end{longtable}}\fi\else
+ \FC@endltab\fi}
+\@ifpackageloaded{longtable}{%
+\def\LT@makecaption#1#2#3{%
+ \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+ \@makecaption{#1{#2}}{#3}%
+ \endgraf\vskip\baselineskip}%
+ \hss}}}}{}
+\@ifpackageloaded{afterpage}{%
+ \let\FC@afterpage=\afterpage
+ \def\afterpage{\iffigcaps \let\@tempb\relax \else \let\@tempb\FC@afterpage\fi
+ \@tempb}}{}
+ }
+%</longtab&!209>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\planotable}
+% \changes{4.1}{1993 Nov 20}{Add for AGU supplement}
+% \changes{4.5}{1996 Jan 10}{Test for \cs{ifFC@appendix}}
+% For the AGU supplement, we need to add the environment \texttt{planotable}.
+% \begin{macrocode}
+%<agu>\let\aguplano=\planotable
+%<agu>\let\endaguplano=\endplanotable
+%<agu>
+%<agu>\def\planotable{\iffigcaps \let\@tempb=\@ptable \else
+%<agu> \let\@tempb=\aguplano\fi \@tempb}
+%<agu>\def\@ptable{\begingroup\set@literal
+%<agu> \@ifundefined{tf@pot}{\newwrite\tf@pot
+%<agu> \if@filesw\immediate\openout\tf@pot\jobname.\lot\relax
+%<agu> \ifFC@appendix\FC@writefile{pot}{\string\doappendix}\fi\fi}{}%
+%<agu> \refstepcounter{table}\iffigmark\marginpar{\fbox{\fnum@table}}\fi
+%<agu> \def\@captype{table}\if@filesw\FC@writefile{pot}
+%<agu> {\string\begin{planotable}}\fi \@vptab}
+%<agu>
+%<agu>\def\endplanotable{\iffigcaps
+%<agu> \endgroup\if@filesw\FC@writefile{pot}{\string\end{planotable}}\fi\else
+%<agu> \endaguplano\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tableofcontents}
+% \changes{4.4}{1995 Jan 8}{Use \LaTeXe{} warning command}
+% \begin{macro}{\listoffigures}
+% \changes{4.4}{1995 Jan 8}{Use \LaTeXe{} warning command}
+% \begin{macro}{\listoftables}
+% \changes{4.4}{1995 Jan 8}{Use \LaTeXe{} warning command}
+% \begin{macro}{\listofplates}
+% \changes{4.4}{1995 Jan 8}{Use \LaTeXe{} warning command}
+% Unless the \texttt{docstrip} option \texttt{toc} has been selected, turn off
+% the tables of contents commands, because they will interfere with the
+% writing of the auxiliary files.
+% \begin{macrocode}
+%<*!toc>
+\def\tableofcontents{%
+%<209> \@@warning
+%<!209> \PackageWarningNoLine{figcaps}
+ {Ignored: \protect\tableofcontents\space command}}
+\def\listoffigures{%
+%<209> \@@warning
+%<!209> \PackageWarningNoLine{figcaps}
+ {Ignored: \protect\listoffigures\space command}}
+\def\listoftables{%
+%<209> \@@warning
+%<!209> \PackageWarningNoLine{figcaps}
+ {Ignored: \protect\listoftables\space command}}
+%<*plates>
+\def\listofplates{%
+%<209> \@@warning
+%<!209> \PackageWarningNoLine{figcaps}
+ {Ignored: \protect\listofplates\space command}}
+%</plates>
+\def\addtocontents#1#2{\relax}
+\def\addcontentsline#1#2#3{\relax}
+%</!toc>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\set@literal}
+% \changes{3.1}{1992 Oct 14}{Use {\tt\symbol{94}\symbol{94}M!=\protect\bslash
+% relax} in place of {\tt\protect\bslash obeylines} which caused problems
+% with floats inside paragraphs because then
+% {\tt\symbol{94}\symbol{94}M!=\protect\bslash par}}
+% Here is the command that makes all characters literal. It especially
+% makes |^^M| to be active, defined to be |\relax|. In earlier versions,
+% |\obeylines| was used instead, but that sets |^^M| to |\par| and there
+% were problems when the floats appeared in the middle of a paragraph.
+% \begin{macrocode}
+{\catcode`\^^M=\active \gdef\cr@relax{\catcode`\^^M=\active \let^^M=\relax}}
+\def\set@literal{\cr@relax \let\do\@makeother\dospecials}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Commands to Put Saved Text at the End}
+% \begin{macro}{\@figurecaps}
+% \changes{4.1}{1993 Nov 20}{Revisions for AGU supplement}
+% \changes{4.3a}{1994 Jun 6}{Zero \cmd{\parindent} for AGU}
+% \changes{4.5e}{1996 Oct 17}{Zero \cmd{\parindent} generally}
+% Now define the routine to read in the {\tt.lof} auxiliary file with the
+% purpose of listing only the captions. Since the list is to be made under
+% a |\section*|, there may be trouble if |\appendix| has been called
+% already. The redefined |\section*| command may print out |\appendixname|.
+% Thus this name is set to blank if it exists.
+%
+% The |\reset@figtab| command is called to reset the figure, plate, table
+% counters to zero. This is because they are to go through their automatic
+% sequence once more as they are read in. Actually, this is not necessary,
+% since the |\caption|s were never really called in the text part. However,
+% it is better to be certain that the counters are where we expect them.
+%
+% An entry is made to the running heads and to the table of contents.
+% The \texttt{figure} environment is redefined yet again to make use of
+% |\@fcaponly|, and |\addcontentsline| is set to swallow its arguments.
+% This latter is called by the |\@caption| command and we do not want the
+% entries to be made at this point. The |\@makecaption| command must be
+% altered to a special format for the captions list.
+% Finally, the auxiliary file {\tt.lof} is input.
+%
+% For the AGU supplement, the procedure is different. Instead of ignoring
+% everything except the |\caption|, all printable text is contained in
+% a |\figbox|, which here is defined to swallow its argument. (Actually the
+% internal |\@figbox| is redefined.)
+%
+% For AGU, need to call |\noappendix| and to set |\parindent| to zero.
+% This is because the manuscript part of AGU\TeX{} redefines |\@caption|
+% so that this is no longer done there.
+%
+% Also need to zero |\parindent| for EGS. So why not do it generally?
+%
+% Note: no distinction is made between \texttt{figure} and \texttt{figure*},
+% since both environments write the unstarred variant to the auxiliary
+% file. For a list of captions, there is no need for a distinction.
+%
+% \begin{macrocode}
+\def\@figurecaps{\@ifundefined{tf@pof}{}{\if@filesw
+ \immediate\closeout\tf@pof\fi
+ \@ifundefined{appendixname}{}{\def\appendixname{}}
+%<agu> \noappendix
+ \parindent\z@
+ \reset@figtab\clearpage\section*{\figurecapname}\vspace{1cm}%
+ \@mkboth{\uppercase{\figurecapname}}{\uppercase{\figurecapname}}%
+ \addcontentsline{toc}{section}{\figurecapname}%
+ \def\figure{\def\addcontentsline####1####2####3{}%
+ \def\@captype{figure}%
+%<*!agu>
+ \begingroup\set@literal\@fcaponly
+ }\def\endfigure{\endgroup\bigskip}%
+%</!agu>
+%<agu> \vbox\bgroup
+%<agu> }\def\endfigure{\egroup\bigskip}%
+%<*plates>
+ \def\plate{\def\addcontentsline####1####2####3{}%
+ \def\@captype{plate}%
+%<*!agu>
+ \begingroup\set@literal\@pcaponly
+%</!agu>
+%<agu> \vbox\bgroup
+ }\let\endplate=\endfigure
+%</plates>
+ {\let\@makecaption=\@makefcaption
+%<agu> \def\@figbox##1##2##3{\relax}
+ \@input{\jobname.\lof}}%
+ \clearpage}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@tablepage}
+% \changes{4.1}{1993 Oct 22}{For NLINPROC, add explicit
+% {\tt\protect\bslash small}}
+% \changes{4.1}{1993 Nov 20}{Revisions for AGU supplement}
+% \changes{4.2}{1993 Dec 16}{For AGU: suppress floats for \texttt{planotable}}
+% \changes{4.3a}{1994 Jun 6}{Zero \cmd{\parindent} for AGU}
+% \changes{4.5e}{1996 Oct 17}{Zero \cmd{\parindent} generally}
+% The page(s) of tables are written similarly, except no effort is made to
+% list only the captions. The whole set of tables is read in as is,
+% except that the tables are not to `float'.
+% \begin{macrocode}
+\def\@tablepage{\@ifundefined{tf@pot}{}{\if@filesw
+ \immediate\closeout\tf@pot\fi
+ \@ifundefined{appendixname}{}{\def\appendixname{}}
+%<agu> \noappendix
+ \parindent\z@
+ \reset@figtab\clearpage\section*{\tablepagename}
+ \@mkboth{\uppercase{\tablepagename}}{\uppercase{\tablepagename}}%
+ \def\table{\def\@captype{table}\vbox\bgroup
+%<egs> \small
+%<*!agu>
+ }\def\endtable{\egroup\bigskip}%
+%</!agu>
+%<agu> }\def\endtable{\spew@tblnotes\egroup\bigskip}%
+%<agu> \let\planotable=\aguplano \let\endplanotable=\endaguplano
+%<agu> \def\@float##1{\def\@captype{table}\vbox\bgroup}
+%<agu> \let\@dblfloat=\@float \let\clearpage=\newpage
+%<longtab&!209> \def\longtable{\newpage\FC@ltab} \let\endlongtable=\FC@endltab
+ \@input{\jobname.\lot}
+ \clearpage}}
+% \end{macrocode}
+%
+% Note that \texttt{agu} needs to provide for \texttt{planotable}. Since that
+% environment calls |\@float| or |\@dblfloat| explicitly, the only way to
+% turn of the floating mechanism is to redefine those commands. The
+% |\clearpage| is also turned into |\newpage| otherwise \texttt{planotable}
+% tries to eject some pseudo floats when tables are continued, resulting in
+% an unwanted blank page.
+%
+% The \texttt{longtable} environment does not call the floating mechanism,
+% but we do have to restore the original definitions here. But add
+% \cs{newpage} to \cs{longtable} so that each such table starts on a new page.
+% \end{macro}
+%
+% \begin{macro}{\printfigures}
+% A similar page of figures (as opposed to their captions only) is added
+% only optionally if the command |\printfigures| is given in the preamble.
+% \begin{macrocode}
+\def\printfigures{\@figpagetrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@figurepage}
+% \changes{4.1}{1993 Nov 20}{Revisions for AGU supplement}
+% \changes{4.3a}{1994 Jun 6}{Zero \cmd{\parindent} for AGU}
+% \changes{4.3a}{1994 Jun 6}{Add \cmd{\figurewidth} and \cmd{\platewidth} for
+% AGU}
+% The page(s) of figures are much like those for the tables, except that
+% the |\label| command must be switched off. This is because the labels
+% have already been defined during the list of captions. However, any
+% entries to a list of figures will be made here, since
+% |\addtocontentsline| is in effect.
+%
+% For AGU, make the |\figurewidth| and |\platewidth| commands set |\hsize|
+% (as well as |\pt@width|) in order to avoid overfull hboxes.
+% \begin{macrocode}
+\def\@figurepage{\if@figpage\@ifundefined{tf@pof}{}{%
+ \@ifundefined{appendixname}{}{\def\appendixname{}}
+%<agu> \noappendix \parindent\z@
+ \reset@figtab\clearpage\section*{\figurepagename}%
+ \@mkboth{\uppercase{\figurepagename}}{\uppercase{\figurepagename}}%
+ \begingroup
+%<agu> \def\figurewidth##1{\pt@width##1\hsize##1}
+ \def\figure{\def\@captype{figure}\vbox\bgroup}\def\endfigure{\egroup
+ \vspace{20pt}}%
+%<*plates>
+%<agu> \let\platewidth=\figurewidth
+ \def\plate{\def\@captype{plate}\vbox\bgroup}\let\endplate=\endfigure
+%</plates>
+ \def\label##1{}%
+ \@input{\jobname.\lof}\newpage\endgroup}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefcaption}
+% The special caption format for the captions list is defined here. The
+% difference between this and the regular |\@makecaption| is that it is
+% never centered if the text is less than one line. Unfortunately, this may
+% alter the style of the caption. Maybe some better solution can be found.
+% (The specific journals have special definitions of |\@makefcaption|
+% that are given later.)
+% \begin{macrocode}
+%<*!agu&!egs>
+\long\def\@makefcaption#1#2{%
+ \vskip 10pt
+ #1. #2\par }
+%</!agu&!egs>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\reset@figtab}
+% The command to reset the figure and table counters.
+% \begin{macrocode}
+\def\reset@figtab{%
+ \setcounter{figure}{0}\setcounter{table}{0}
+%<*plates>
+ \setcounter{plate}{0}
+%</plates>
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\enddocument}
+% \changes{3.4}{1993 Aug 10}{Change order of pages to tables, figcaps,
+% figures}
+% \changes{4.1}{1993 Nov 15}{For AGU, order is figcaps, tables, figures}
+% The pages of figures, tables, and captions should be printed
+% automatically at the end of the document without any extra commands from
+% the author. To do this, put them into the |\end{document}|.
+% (This can be done much more easily in \LaTeXe.)
+% \begin{macrocode}
+%<*209>
+\let\@nddoc=\enddocument
+%<!agu>\def\enddocument{\iffigcaps\@tablepage\@figurecaps\@figurepage\fi\@nddoc}
+%<agu>\def\enddocument{\iffigcaps\@figurecaps\@tablepage\@figurepage\fi\@nddoc}
+%</209>
+%<*!209>
+%<!agu>\AtEndDocument{\iffigcaps\@tablepage\@figurecaps\@figurepage\fi}
+%<agu>\AtEndDocument{\iffigcaps\@figurecaps\@tablepage\@figurepage\fi}
+%</!209>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Complications with the Appendix}
+% The problem is that the figures etc.\ are stored to auxiliary files
+% {\tt.lof} or {\tt.lot} and then read in later at the end of the paper.
+% Thus these files must know when the |\appendix| has been given and when
+% |\section| commands have been issued (new appendices) in order to keep the
+% number labels straight. It is also necessary to reset things to their
+% previous status. The |\@addtoreset| command must be undone, something that
+% is not normally allowed for.
+%
+% The modifications here are added to the |\appendix| definition that
+% exists \emph{before} this file is read in. The |\appendix| is not
+% defined here, nor need it even include such subnumbering.
+% The following macros merely allow such subnumbering to function properly
+% under this style option.
+%
+% \begin{macro}{\appendix}
+% \changes{3.3}{1993 Jul 23}{Add possibility of subnumbered figures and
+% tables in appendix}
+% \changes{4.2}{1993 Dec 21}{Add auxiliary file switch test for the appendix
+% entries to the \texttt{pof} and \texttt{pot} files}
+% \changes{4.5}{1996 Jan 10}{Add flag to indicate appendix is on}
+% \changes{4.5h}{1997 Nov 18}{Globally \cs{let} some things be redefined}
+% The existing definition of |\appendix| is stored and the new |\appendix|
+% command is defined. It writes |\doappendix| to the auxiliary files,
+% redefines |\section| so that it puts a |\stepcounter{section}| command
+% into the auxiliary files, and executes |\doappendix|.
+% The definition of the |\section| command must be stored at a number of
+% locations: |\@section| is the original non-appendix version, while
+% |\@@section| contains any redinitions made by |\doappendix|, i.e., by the
+% original |\appendix| command.
+%
+% Both |\@section| and |\reset@figtab| are globally set to avoid a problem
+% if the appendix occurs inside an environment. This does occur with the
+% AGU |\begin{article}|\dots|\end{article}| feature.
+%
+% The flag |\ifFC@appendix| is used to test if the appendix is active when
+% the first float appears, so that when the auxiliary file is opened, the
+% |\doappendix| is written immediately to it. Previously, without this, if
+% the first figure or table appeared in the appendix, the listed captions
+% did not have appendix numbering because this command was missing in the
+% captions files.
+%
+% \begin{macrocode}
+\let\@appendix=\appendix
+\newif\ifFC@appendix \FC@appendixfalse
+\def\appendix{\FC@appendixtrue
+ \@ifundefined{tf@pof}{}{\if@filesw\FC@writefile{pof}{\string\doappendix}\fi}%
+ \@ifundefined{tf@pot}{}{\if@filesw\FC@writefile{pot}{\string\doappendix}\fi}%
+ \global\let\@section=\section
+ \doappendix
+ \let\@@section=\section
+ \def\section{%
+ \@ifundefined{tf@pof}{}{\if@filesw\FC@writefile{pof}{\string
+ \stepcounter{section}}\fi}%
+ \@ifundefined{tf@pot}{}{\if@filesw\FC@writefile{pot}{\string
+ \stepcounter{section}}\fi}%
+ \@@section}
+ \global\let\reset@figtab=\@unappendix}
+% \end{macrocode}
+% The last step alters |\reset@figtab| so that appendix features are
+% reset as well as the counters.
+% \end{macro}
+%
+% \begin{macro}{\doappendix}
+% \changes{4.5h}{1997 Nov 18}{Globally \cs{let} some things be redefined}
+% The |\doappendix| contains those commands that must be executed when
+% |\appendix| is given, both in the main text, and when the auxiliary files
+% are reread in. It first saves the current definitions of |\thexxx|
+% and of |\cl@section| (the list of counters that are reset when the section
+% counter is incremented).
+% \begin{macrocode}
+\def\doappendix{%
+ \global\let\@thefigure=\thefigure
+ \global\let\@thetable=\thetable
+%<*plates>
+ \global\let\@theplate=\theplate
+%</plates>
+ \global\let\@cl@section=\cl@section
+ \@appendix
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@unappendix}
+% The |\@unappendix| undoes the changes made by |\doappendix|.
+% It becomes |\reset@figcaps| when |\appendix| is called.
+% It is thus invoked by |\@figurecaps|, |\@tablepage|, and |\@figurepage|.
+% \begin{macrocode}
+\def\@unappendix{\FC@appendixfalse
+ \setcounter{figure}{0}\setcounter{table}{0}
+ \let\thefigure=\@thefigure
+ \let\thetable=\@thetable
+%<*plates>
+ \setcounter{plate}{0}%
+ \let\theplate=\@theplate
+%</plates>
+ \let\cl@section=\@cl@section
+ \let\section=\@section
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Complications with \texttt{sublabel.sty}}
+% \begin{macro}{\sublabon}
+% \changes{3.3}{1993 Jul 23}{Additions to allow for style option {\tt
+% sublabel.sty}}
+% \begin{macro}{\sublaboff}
+% A similar problem exists if the style option \texttt{sublabel} has been
+% activated. This could mean that figures and tables are subnumbered even
+% outside of an appendix. Subnumbering here means e.g., 4{\it a}, 4{\it b},
+% etc. As for the appendix, here too the auxiliary files must know when
+% subnumbering is turned on and off. This means that these commands must be
+% written to the auxiliary files whenever issued.
+%
+% These modifications here can only be made \emph{after}
+% \texttt{sublabel.sty} has been read in, for obvious reasons.
+% \begin{macrocode}
+%<*sublab>
+\let\orisubon=\sublabon
+\let\orisuboff=\sublaboff
+\def\sublabon#1{\orisubon{#1}\if@filesw
+ \iffigcaps\def\@tempb{#1}
+ \def\@tempa{figure}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pof}{\newwrite\tf@pof
+ \immediate\openout\tf@pof\jobname.\lof}{}%
+ \FC@writefile{pof}{\string\orisubon{#1}}\fi
+%<*plates>
+ \def\@tempa{plate}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pof}{\newwrite\tf@pof
+ \immediate\openout\tf@pof\jobname.\lof}{}%
+ \FC@writefile{pof}{\string\orisubon{#1}}\fi
+%</plates>
+ \def\@tempa{table}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pot}{\newwrite\tf@pot
+ \immediate\openout\tf@pot\jobname.\lot}{}%
+ \FC@writefile{pot}{\string\orisubon{#1}}\fi
+\fi\fi}
+\def\sublaboff#1{\orisuboff{#1}\if@filesw
+ \iffigcaps\def\@tempb{#1}
+ \def\@tempa{figure}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pof}{\newwrite\tf@pof
+ \immediate\openout\tf@pof\jobname.\lof}{}%
+ \FC@writefile{pof}{\string\orisuboff{#1}}\fi
+%<*plates>
+ \def\@tempa{plate}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pof}{\newwrite\tf@pof
+ \immediate\openout\tf@pof\jobname.\lof}{}%
+ \FC@writefile{pof}{\string\orisuboff{#1}}\fi
+%</plates>
+ \def\@tempa{table}\ifx\@tempa\@tempb
+ \@ifundefined{tf@pot}{\newwrite\tf@pot
+ \immediate\openout\tf@pot\jobname.\lot}{}%
+ \FC@writefile{pot}{\string\orisuboff{#1}}\fi
+\fi\fi}
+%</sublab>
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \subsection{Journal-Specific Coding}
+% \changes{4.1}{1993 Oct 22}{Add extra coding for JGR, GRL, and NLINPROC}
+% \changes{4.1}{1993 Nov 20}{Add extra coding for AGU supplement}
+% \changes{4.3}{1994 May 19}{Remove obsolete JGR, GRL coding}
+% When \thestyle{} is used as a module to other main styles for specific
+% journals, there are some extra details that must be seen to.
+%
+% \begin{macro}{\figbox}
+% \changes{4.2}{1993 Nov 20}{Add for AGU supplement, to remove figures
+% from list of figure captions}
+% \changes{4.5b}{1996 Jul 22}{Let size fit contents automatically}
+% \changes{4.5c}{1996 Jul 29}{Add starred version for no frame}
+% For the AGU supplement, figures and plates are put into a |\figbox|
+% which reserves space for them, or which can contain a real figure.
+% During the printing of the captions, this command is set to swallow
+% its argument. The normal captions-only system cannot be used for this
+% because there may be additional width commands in the |figure| environment
+% for setting the caption widths, which must be observed, i.e., read in.
+% This box takes three arguments: width, height, and contents, which
+% are centered horizontally and vertically in the box. The box is framed
+% with |\framebox| so the parameters |\fboxsep| and |\fboxrule| may
+% be used to control its appearance.
+% The starred version of this command suppresses the frame without changing
+% the |\framebox| parameters. It actually uses |\makebox| instead.
+% It is better to use |\figbox*| to remove the frame because |\framebox|
+% is also used in the marginal notes for the figures, which always should
+% have the frame.
+%
+% If the first argument (width) is left empty, the box is made to fit its
+% contents, both vertically and horizontally. If only the second argument
+% (width) is left empty, the width will be as given and the height is scaled
+% automatically. This is for use with |\epsfig| and relatives.
+% \begin{macrocode}
+%<agu>\def\figbox{\@ifstar{\let\agubox\makebox\@figbox}
+%<agu> {\let\agubox\framebox\@figbox}}
+%<agu>\def\@figbox#1#2#3{\hbox to \hsize{\hfil
+%<agu> \ifx!#1!\agubox{#3}\else
+%<agu> \agubox[#1][c]{\ifx!#2!#3\else\@tempdima#2\relax
+%<agu> \divide\@tempdima by2\relax
+%<agu> \advance\@tempdima by-\fboxsep \advance\@tempdima by-\fboxrule
+%<agu> \vrule\@height\@tempdima\@depth\@tempdima\@width\z@
+%<agu> \vbox to \z@{\vss\hbox{#3}\vss}\fi}\fi\hfil}}
+% \end{macrocode}
+% \end{macro}
+%
+% The marking of figures and tables with marginal notes should be
+% enabled by default.
+% \begin{macrocode}
+%<agu>\figmarktrue
+% \end{macrocode}
+%
+% For the AGU supplement, the necessary flag is |\if@preprint|. Furthermore,
+% for AGU preprints and manuscripts, we need to turn off the |\figurewidth|
+% and |\platewidth| commands that come with the AGU-supplied macros.
+% \begin{macrocode}
+%<agu>\if@preprint \figcapsfalse
+%<agu> \def\figurewidth#1{\pt@width=\hsize}
+%<agu> \def\platewidth#1{\pt@width=\hsize}
+%<agu>\fi
+%<agu>\if@draft
+%<agu> \def\figurewidth#1{\pt@width=\hsize}
+%<agu> \def\platewidth#1{\pt@width=\hsize}
+%<agu>\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@makefcaption}
+% \changes{4.2}{1993 Nov 20}{Redefine for AGU supplement, to print captions
+% in two widths}
+% \changes{4.3a}{1994 Jun 6}{For AGU, set \cmd{\hsize} to avoid overfull
+% hbox messages}
+% Now define |\@makefcaption|, the special version of |\@makecaption| for
+% the page of captions, for AGU. This is either the supplied version of
+% the macro, or a special version that prints the caption twice, in two
+% widths.
+% \begin{macrocode}
+%<agu>\let\ori@makecap=\@makecaption
+%<agu>\def\@makefcaption#1#2{{\if@dblcap\if@camera\pt@width=\textwidth
+%<agu> \ori@makecap{#1}{#2}
+%<agu> \pt@width=\wpt@width
+%<agu> \hsize=\pt@width
+%<agu> \vskip10pt \def\label##1{}\fi\fi
+%<agu> \ori@makecap{#1}{#2}}
+%<agu>}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\doublecaption}
+% \changes{4.2}{1993 Nov 20}{Add for AGU supplement, to enable doubled captions
+% in two widths}
+% To enable this double caption, one must give |\doublecaption|
+% with the width of the wider caption as argument in the preamble.
+% A normal value for \textsl{AGU} journals is 35~pc.
+% \begin{macrocode}
+%<agu>\newdimen\wpt@width
+%<agu>\newif\if@dblcap \@dblcapfalse
+%<agu>\def\doublecaption#1{\wpt@width=#1\relax\@dblcaptrue}
+% \end{macrocode}
+% \end{macro}
+% Finally, for \emph{EGS}, the regular |\@makecaptions|
+% macro is sufficient. In that journal, all captions are flush-left to
+% begin with, so this might as well be kept for the figure captions too.
+% \begin{macrocode}
+%<egs>\let\@makefcaption=\@makecaption
+% \end{macrocode}
+% The whole figure caption business is activated only for |draft| mode.
+% \begin{macrocode}
+%<egs>\if@draft\figcapstrue\else\figcapsfalse\fi
+% \end{macrocode}
+%
+% This terminates the special coding, and thus the style file.
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \Finale
diff --git a/macros/latex/contrib/preprint/figcaps.ins b/macros/latex/contrib/preprint/figcaps.ins
new file mode 100644
index 0000000000..185de2cf0a
--- /dev/null
+++ b/macros/latex/contrib/preprint/figcaps.ins
@@ -0,0 +1,64 @@
+% File: figcaps.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{figcaps.sty}{\from{figcaps.dtx}{package}}
+ \file{figcaps.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{figcaps.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{******************************************}%
+\Msg{* For documentation, process figcaps.dtx *}%
+\Msg{* or the driver file figcaps.drv *}%
+\Msg{******************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/preprint/figcaps.pdf b/macros/latex/contrib/preprint/figcaps.pdf
new file mode 100644
index 0000000000..68a4578dff
--- /dev/null
+++ b/macros/latex/contrib/preprint/figcaps.pdf
Binary files differ
diff --git a/macros/latex/contrib/preprint/fullpage.dtx b/macros/latex/contrib/preprint/fullpage.dtx
new file mode 100644
index 0000000000..270faa7061
--- /dev/null
+++ b/macros/latex/contrib/preprint/fullpage.dtx
@@ -0,0 +1,387 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {FULLPAGE.DTX}
+%========================================================================
+%</dtx>
+%% Copyright 1994-1999 Patrick W Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpg.de
+%
+% This program 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 is a contributed file to the LaTeX2e system.
+% -------------------------------------------------
+% This is a LaTeX package to set all margins to 1in or 1.5cm
+% Installation:
+% LaTeX this file: creates docstrip installation file fullpage.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX fullpage.ins: creates package files fullpage.sty, and optionally
+% doc driver fullpage.drv
+% (fullpage.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a (LaTeX2e) package .sty file
+% driver - to produce a driver file to print the documentation
+%--------------------------------------------------------------------------
+% *** Identify the package file:-
+%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package>\ProvidesPackage{fullpage}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{fullpage.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{fullpage}
+ [1999/02/23 1.1 (PWD)]
+% \changes{1.0}{1994 Feb 15}{Initial version}
+% \changes{1.0a}{1994 Jun 15}{Documentation as per \LaTeXe: driver at start}
+% \changes{1.0b}{1997 Apr 29}{Conform to new \texttt{docstrip}}
+% \changes{1.1}{1999 Feb 23}{Update copyright notice}
+%
+% \CheckSum{74}
+% \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 \~}
+%
+%\iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run if it
+%^^A does not already exist
+%^^A =============================================
+\begin{filecontents*}{fullpage.ins}
+% File: fullpage.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{fullpage.sty}{\from{fullpage.dtx}{package}}
+ \file{fullpage.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{fullpage.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process fullpage.dtx *}%
+\Msg{* or the driver file fullpage.drv *}%
+\Msg{*******************************************}
+
+\endbatchfile
+\end{filecontents*}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist natbib
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o natbib.gls natbib.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{fullpage.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\texttt,\textbf,\textrm}
+% \DoNotIndex{\textsl,\textsc,\textup,\textit,\textmd,\textsf,\emph}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\addtolength,\pagestyle,\paperheight,\paperwidth}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let,\fi}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \GetFileInfo{fullpage}
+%
+% \title{\bfseries A Package to Set Margins to Full Page}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+% \textsl{It is part of the \texttt{preprint} collection of packages}\\
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{SETTING PAGE MARGINS FOR FULL PAGE}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+%\begin{small}\begin{center}\bfseries Summary\end{center}
+% The stripped version of this file contains the following brief description:
+%\iffalse
+%<*package>
+%\fi
+% \begin{verbatim}
+ % Sets all 4 margins to be either 1 inch or 1.5 cm, and specifies
+ % the page style
+ % Call as \usepackage[options]{fullpage}
+ % Options = in (default) for 1 inch
+ % cm for 1.5 cm
+ % plain (default) sets \pagestyle{plain}
+ % empty sets \pagestyle{empty}
+ % headings sets \pagestyle{headings}
+ % myheadings sets \pagestyle{myheadings}
+% \end{verbatim}
+%\iffalse
+ %-----------------------------------------------------------
+%</package>
+%\fi
+%\end{small}
+%
+% \section{Purpose}
+% This package is called \texttt{\filename}, and it sets the text height
+% and width and the margins such that the page is almost full. It only
+% leaves a uniform margin on all four sides.
+%
+% To do this, it needs to know how big the full page is, whether US letter
+% size ($8\frac{1}{2} \times 11''$) or A4 ($21 \times 29.7$~cm), or some
+% other size. This is given in the parameters |\paperwidth| and
+% |\papersize| that are set by the appropriate option in the
+% |\documentclass| command.
+%
+% The package must also know which page style is being employed. This is
+% because it must leave space for possible headers and footers, if they are
+% present. If not, it may use that space for text.
+%
+% \section{Invoking the Package}
+% The package is called after the |\documentclass| command as e.g.,
+% \begin{quote}
+% |\documentclass[a4paper,landscape]{article}|\\
+% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}|
+% \end{quote}
+% where possible options for \texttt{\filename} are
+% \begin{quote}\begin{description}
+% \item[\tt in] (default) sets the margins to one inch;
+% \item[\tt cm] sets the margins to 1.5~cm (one centimeter is really too
+% little);
+% \item[\tt plain] (default) selects the \texttt{plain} page style, i.e.,
+% with no headers but only a footer;
+% \item[\tt empty] for neither headers nor footers;
+% \item[\tt headings] for both header and footers;
+% \item[\tt myheadings] also for both headers and footers.
+% \end{description}\end{quote}
+% For the last 4 options, the corresponding |\pagestyle| declaration is
+% executed, so that it is not necessary to give it again.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\tt package] to produce a \texttt{.sty} package file with most
+% comments removed;
+% \item[\tt driver] to produce a driver \texttt{.drv} file that will print
+% out the documentation under \LaTeXe. The documentation cannot be
+% printed under \LaTeX~2.09.
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% \begin{macro}{\FP@margin}
+% Define the options with help of the length |\FP@margin|. The options |in|
+% and |cm| select the actual margin size.
+% \begin{macrocode}
+%<*package>
+\newlength{\FP@margin}
+\DeclareOption{in}{\setlength{\FP@margin}{1in}}
+\DeclareOption{cm}{\setlength{\FP@margin}{1.5cm}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifFP@plain}
+% \begin{macro}{\ifFP@empty}
+% The remaining options determine the page style, and need two flags to
+% keep track of whether headers and footers are present.
+% \begin{macrocode}
+\newif\ifFP@plain
+\newif\ifFP@empty
+\DeclareOption{plain}{\FP@plaintrue \FP@emptyfalse
+ \pagestyle{plain}}
+\DeclareOption{empty}{\FP@plaintrue \FP@emptytrue
+ \pagestyle{empty}}
+\DeclareOption{headings}{\FP@plainfalse \FP@emptyfalse
+ \pagestyle{headings}}
+\DeclareOption{myheadings}{\FP@plainfalse \FP@emptyfalse
+ \pagestyle{myheadings}}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% Invoke the default options and then process the requested ones. Use the
+% starred version of |\ProcessOptions| so that the options are executed
+% in the order they were specified (not defined). Thus if someone gives
+% conflicting options (like |in| and |cm|) then the last one in the list
+% counts.
+% \begin{macrocode}
+\ExecuteOptions{in,plain}
+\ProcessOptions*
+% \end{macrocode}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% If there are to be no headers (for options |empty| and |plain|, which both
+% set |\ifFP@plain| to be \meta{true}), zero the appropriate parameters.
+% \begin{macrocode}
+\ifFP@plain
+ \setlength{\headheight}{0pt}
+ \setlength{\headsep}{0pt}
+\fi
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\footskip}
+% If there are to be not footers, zero the |\footskip| parameter. This
+% occurs only for page style |empty|, for although the two |headings|
+% styles do not include a footer, they are often used in conjunction with a
+% |\thispagestyle{plain}| command for the first page of a document.
+% \begin{macrocode}
+\ifFP@empty
+ \setlength{\footskip}{0pt}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textwidth}
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% Calculate the width of the text from |\paperwidth| and set the left and
+% right margins. Recall that \TeX{} automatically leaves a margin of $1''$.
+% \begin{macrocode}
+\setlength{\textwidth}{\paperwidth}
+\addtolength{\textwidth}{-2\FP@margin}
+\setlength{\oddsidemargin}{\FP@margin}
+\addtolength{\oddsidemargin}{-1in}
+\setlength{\evensidemargin}{\oddsidemargin}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\textheight}
+% \begin{macro}{\topmargin}
+% Calculate the height of the text from |\paperwidth|, by removing the
+% margins, headers, and footers. Set the top margin, recalling that \TeX{}
+% automatically leaves $1''$.
+% \begin{macrocode}
+\setlength{\textheight}{\paperheight}
+\addtolength{\textheight}{-\headheight}
+\addtolength{\textheight}{-\headsep}
+\addtolength{\textheight}{-\footskip}
+\addtolength{\textheight}{-2\FP@margin}
+\setlength{\topmargin}{\FP@margin}
+\addtolength{\topmargin}{-1in}
+%</package>
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \Finale
diff --git a/macros/latex/contrib/preprint/fullpage.ins b/macros/latex/contrib/preprint/fullpage.ins
new file mode 100644
index 0000000000..1c022f1dd9
--- /dev/null
+++ b/macros/latex/contrib/preprint/fullpage.ins
@@ -0,0 +1,64 @@
+% File: fullpage.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{fullpage.sty}{\from{fullpage.dtx}{package}}
+ \file{fullpage.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{fullpage.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process fullpage.dtx *}%
+\Msg{* or the driver file fullpage.drv *}%
+\Msg{*******************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/preprint/fullpage.pdf b/macros/latex/contrib/preprint/fullpage.pdf
new file mode 100644
index 0000000000..683394f0c9
--- /dev/null
+++ b/macros/latex/contrib/preprint/fullpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/preprint/sublabel.dtx b/macros/latex/contrib/preprint/sublabel.dtx
new file mode 100644
index 0000000000..7aad1f0ce6
--- /dev/null
+++ b/macros/latex/contrib/preprint/sublabel.dtx
@@ -0,0 +1,729 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {SUBLABEL.DTX}
+%========================================================================
+%</dtx>
+%% Copyright 1993-1999 Patrick W Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpg.de
+%
+% This program 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 is a contributed file to the LaTeX2e system.
+% -------------------------------------------------
+% This is a LaTeX package to permit figures, equations etc to be subnumbered
+% as 4a, 4b, 4c etc.
+% Installation:
+% LaTeX this file: creates docstrip installation file sublabel.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX sublabel.ins: creates package files sublabel.sty, and optionally
+% documentation driver sublabel.drv
+% (sublabel.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a (LaTeX2e) package .sty file
+% driver - to produce a driver file to print the documentation
+% 209 - (with package) for package that runs under LaTeX 2.09
+% subpack - (with package) for coding included in other packages
+% agu - (with package,subpack) for inclusion in aguplus package
+%--------------------------------------------------------------------------
+%<*!subpack>
+%<package&209>\def\ProvidesPackage#1#2]
+%<package&209> {\typeout{Style option `#1'#2]}}
+%
+% *** Identify the package file:-
+%<package&!209>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package>\ProvidesPackage{sublabel}
+%</!subpack>
+%
+% *** Provide command to dislay module version
+%<package&subpack>\def\ModuleVersion#1[#2]{}
+%<package&subpack> \ModuleVersion{sublabel}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{sublabel.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{sublabel}
+ [1999/02/23 4.5 (PWD)]
+% \changes{4.0}{1993 Jun 7}{Completely replacing the version based on
+% art-jgr; made more general and flexible}
+% \changes{4.1}{1993 July 20}{Initial release with {\tt docstrip}}
+% \changes{4.1}{1993 Jul 20}{Discover bug; sub labels previously prefixed
+% with `sub', but conflict with `subsection'}
+% \changes{4.1}{1993 Jul 20}{\cs{stepcounter} tests if subfoo exists}
+% \changes{4.2}{1993 Dec 17}{Adjust \cs{addtocounter} to step subcounter }
+% \changes{4.2a}{1994 Feb 25}{Must use the old \cs{addtocounter} in
+% \cs{endeqnarray}}
+% \changes{4.3}{1994 May 16}{Convert to \LaTeXe}
+% \changes{4.3a}{1994 Jun 22}{Update to first official release of \LaTeXe}
+% \changes{4.3b}{1995 Jan 3}{Update documentation to PWD standard}
+% \changes{4.3c}{1995 Sep 18}{Fix \cs{DeclareOption} for \LaTeX\ of June 1995}
+% \changes{4.3d}{1997 Mar 16}{Fix copyright for subpackage and other minor
+% things}
+% \changes{4.4}{1997 Apr 28}{Fix so it works with other packages that change
+% \texttt{eqnarray}, like \texttt{amsmath}}
+% \changes{4.5}{1999 Feb 23}{Update copyright notice}
+%
+% \CheckSum{209}
+% \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 \~}
+%
+% \iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run if it
+%^^A does not already exist
+%^^A =============================================
+\begin{filecontents*}{sublabel.ins}
+% File: sublabel.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{sublabel.sty}{\from{sublabel.dtx}{package}}
+ \file{sublabel.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{sublabel.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process sublabel.dtx *}%
+\Msg{* or the driver file sublabel.drv *}%
+\Msg{*******************************************}
+
+\endbatchfile
+\end{filecontents*}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist natbib
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o natbib.gls natbib.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{sublabel.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi}
+% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc}
+% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let}
+% \DoNotIndex{\@@warning,\@bsphack,\@currenvir,\@eha,\@esphack,\@ifundefined}
+% \DoNotIndex{\@latexerr,\@nameuse,\@tempa,\@warning,\alph,\bf,\endcsname}
+% \DoNotIndex{\expandafter,\gdef,\global,\it,\newcount,\null,\relax,\thepage}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \GetFileInfo{sublabel}
+%
+% \title{\bfseries A Package to Subnumber \LaTeX{} Counters}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+% \textsl{It is part of the \texttt{preprint} collection of packages}
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{SUBNUMBERING FIGURES, TABLES, EQUATIONS}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+%\begin{small}\begin{center}\textbf{Summary}\end{center}
+% The stripped version of this file contains the following brief description:
+%\iffalse
+%<*package&!subpack>
+%\fi
+% \begin{verbatim}
+ % To change a counter foo so that it has sublabels (4a 4b 4c ...)
+ % give the command \sublabon{foo}... \sublaboff{foo}
+ %
+ % The style of the sublabel is given by command \substyle, which takes one
+ % argument, a counter. It may be redefined in the document to be whatever
+ % style is wanted.
+%<209> % Default is {\it\alph{#1}}, ie italic lowercase numbers.
+%<*!209>
+ % Default is {\itshape\alph{#1}}, ie italic lowercase numbers.
+ %
+ % Options for LaTeX2e:
+ % roman the style of sublabels is small roman letter
+ % italic the style is small italic letter (default)
+%</!209>
+% \end{verbatim}
+%\iffalse
+ %-----------------------------------------------------------
+%</package&!subpack>
+%\fi
+%\end{small}
+%
+% \section{Introduction}
+% The macros in this package allow all counters to be subnumbered, as for
+% example 4{\itshape a}, 4{\itshape b}, 4{\itshape c}, simply by
+% bracketting the objects to be so numbered with appropriate on/off
+% commands. These commands specify which counters are to be subnumbered,
+% and they are of global effect. This means that they will work with any
+% user-defined counters too, and that their effect goes beyond any current
+% environment.
+%
+% \section{Invoking the Package}
+% The macros in this package are included in the main document
+% with the |\usepackage| command of \LaTeXe,
+% \begin{quote}
+% |\documentclass[..]{...}|\\
+% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}|
+% \end{quote}
+% where the possible \emph{options} are:
+% \begin{description}
+% \item[\tt italic] to have subnumbers as italic lowercase letters
+% (default);
+% \item[\tt roman] to have the subnumbers as Roman lowercase letters, as
+% 4{\rmfamily a}.
+% \end{description}
+%
+% Alternatively, the name of the package is added as an option to the
+% |\documentstyle| command in \LaTeX~2.09 compatibility mode, as
+% \begin{quote}
+% |\documentstyle[..|\texttt{\filename}|..]{...}|
+% \end{quote}
+% In this case, no options are possible.
+%
+% \section{Usage}
+% \DescribeMacro{\sublabon}
+% \DescribeMacro{\sublaboff}
+% In order to number equations, figures, plates, and tables automatically
+% with subnumbers (e.g.\ 4{\itshape a}, 4{\itshape b}, 4{\itshape c}) use
+% the commands |\sublabon| and |\sublaboff|. These commands take as
+% argument the name of the counter that is to be subnumbered, i.e.
+% \texttt{equation}, \texttt{figure}, or \texttt{table}. The on and off
+% versions bracket the objects that are to be labelled with the same number
+% but different letters. For example,
+%
+% \begin{quote}
+% \begin{verbatim}
+% \sublabon{figure}
+% \begin{figure}
+% \caption{Text of Fig. 4a}
+% \end{figure}
+% \begin{figure}
+% \caption{Text of Fig. 4b}
+% \end{figure}
+% \sublaboff{figure}
+% \end{verbatim}
+% \end{quote}
+%
+% These commands also work for the |equation| environment in the same way.
+% For the |eqnarray| environment, some care must be taken. The
+% |\sublabon| command is to be given {\em in} the first equation to be
+% bracketted, before the |\label| and |\\| commands, while the
+% |\sublaboff| command is given after the |\\| of the last equation
+% in the group. If necessary, it must come after |\end{eqnarray}|.
+% \begin{quote}
+% \begin{verbatim}
+% \begin{eqnarray}
+% x & = & a \label{eq:x}\\%--> 1
+% \sublabon{equation}
+% y & = & b \label{eq:y}\\%--> 2a
+% z & = & c \label{eq:z}\\%--> 2b
+% \sublaboff{equation}
+% w & = & d \label{eq:w} %--> 3
+% \end{eqnarray}
+% \end{verbatim}
+% \end{quote}
+%
+% If two groups appear adjacently, it is only necessary to give
+% |\sublabon| between them.
+%
+% \DescribeMacro{\substyle}
+% The style in which the sublabels are written is determined by a command
+% |\substyle|. Its default definition is as italic lowercase
+% letters.\footnote{In \LaTeXe, if the option \texttt{roman} is added to
+% the \texttt{\bslash usepackage} command, then the default is upright
+% lowercase letters.} If
+% one wishes, this may be changed in the document itself. It must take an
+% argument that is a counter. For example, to change the style of sublabels
+% to be as 5--A, 5--B, 5--C, give
+% \begin{quote}
+% |\renewcommand{\substyle}[1]{--\Alph{#1}}|
+% \end{quote}
+% \section{Interference with Other Options}
+% If both |sublabel| and |figcaps| packages are to be used together, then
+% |sublabel| must be input first. This is because
+% |figcaps| makes modifications so that the sublabelling also works on the page
+% of figure captions.
+%
+% Other packages (like \texttt{amsmath}) also modify some of the commands
+% redefined here. As of version~4.4, the redefinitions are delayed until
+% after all packages are loaded, so that this conflict is avoided. For
+% earlier versions, things went wrong if \texttt{amsmath} were loaded after
+% \texttt{filename}.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\tt package] to produce a \texttt{.sty} package file with most
+% comments removed;
+% \item[\tt 209] for a package file that will also run under the older
+% \LaTeX~2.09 and not just under the newer (mid-1994) \LaTeXe;
+% \item[\tt subpack] (together with \texttt{package}) for coding that is to
+% be included inside a larger package; even more comments are removed,
+% as well as \LaTeXe{} option handling and identification;
+% \item[\tt agu] (with \texttt{package,subpack}) for special coding for
+% the \textsl{AGU$^{++}$} package;
+% \item[\tt driver] to produce a driver \texttt{.drv} file that will print
+% out the documentation under \LaTeXe. The documentation cannot be
+% printed under \LaTeX~2.09.
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% The \texttt{docstrip} option |<subpack>| should only be called if the
+% coding is to be included as part of another package, in which case the
+% announcement text and \LaTeXe{} options are suppressed.
+%
+% An inferior version of this coding is provided for running as a
+% style file under \LaTeX~2.09. Code lines belonging to this are
+% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|.
+%
+% There is a problem if \texttt{\filename} is used with the package
+% \texttt{figcaps}, which makes modifications to the sublabelling
+% commands. Thus \texttt{\filename} must be read in \emph{before}
+% \texttt{figcaps}. This is tested with the existence of the command
+% |\iffigcaps|, which should not be defined at this point.
+% \begin{macrocode}
+%<*package>
+\@ifundefined{iffigcaps}{}
+%<*!209>
+ {\PackageWarningNoLine{sublabel}
+ {***********************************\MessageBreak
+ This package read in after `figcaps'\MessageBreak
+ There could be problems with sublabelled\MessageBreak
+ figure and table numbers.\MessageBreak
+ ***********************************}}
+%</!209>
+%<*209>
+ {\@@warning
+ {^^J ********************************^^J
+ `sublabel' read in after `figcaps'^^J
+ There could be problems with sublabelled^^J
+ figure and table numbers.^^J
+ ********************************}}
+%</209>
+% \end{macrocode}
+%
+% \begin{macro}{\substyle}
+% \changes{4.3d}{1997 Mar 16}{Remove some superfluous lines}
+% The style of the sublabel, or subnumbering, is defined by |\substyle|. A
+% default definition is provided as italic lowercase letters: 4{\itshape
+% a}, 4{\itshape b}, 4{\itshape b}, etc. This command may be redefined by
+% the user in the document or in a calling style.
+%
+% For the \textsl{AGU$^{++}$} package, the default is upright letters.
+%
+% \begin{macrocode}
+\newcommand{\substyle}{}
+%<*!subpack>
+%<209>\def\substyle#1{\it\alph{#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\DeclareOption}
+% \changes{4.3}{1994 May 16}{Add options \texttt{roman} and \texttt{italic}.}
+% \changes{4.3c}{1995 Sep 18}{Fix options \texttt{roman} and \texttt{italic}
+% for kernel changes of 1995/06/01}
+% In \LaTeXe, the default depends on the option in the |\usepackage| command.
+%
+% Prior to \LaTeX\ of 1995/06/01, one needed |##| to specify arguments in the
+% |\DeclareOption| statement, but now only a single |#| is needed.
+% \begin{macrocode}
+%<*!209>
+ \DeclareOption{italic}{\def\substyle#1{\itshape\alph{#1}}}
+ \DeclareOption{roman}{\def\substyle#1{\alph{#1}}}
+ \ExecuteOptions{italic}
+ \ProcessOptions
+%</!209>
+%</!subpack>
+%<subpack&!agu&209>\def\substyle#1{\it\alph{#1}}
+%<subpack&!agu&!209>\def\substyle#1{\itshape\alph{#1}}
+%<subpack&agu>\def\substyle#1{\alph{#1}}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\sublabon}
+% \changes{4.3a}{1994 Jun 22}{Use \cs{newcommand}}
+% The basic principle of this macro is that when |\sublabon{|\emph{ctr}|}|
+% is called, then a new counter called |sb@|\emph{ctr} is created, if it
+% does not already exist. That is, its internal name is |\c@sb@|\emph{ctr},
+% as is standard for \LaTeX{} counters. Its value is set to $0$ and the main
+% counter \emph{ctr} is incremented. The command that formats and prints
+% out the value of the main counter, |\the|\emph{ctr} is redefined to be
+% \begin{quote}
+% |\@ldthe|\emph{ctr}|{\substyle{sb@|\emph{ctr}|}}|
+% \end{quote}
+% where |\@ldthe|\emph{ctr} is the stored definition |\the|\emph{ctr} and
+% |\substyle| is a command that operates on a counter to format it.
+%
+% First |\sublabon| tests if there really is a counter with the given
+% name.
+% \begin{macrocode}
+\newcommand{\sublabon}[1]{\@bsphack
+\@ifundefined{c@#1}{%
+%<209> \@latexerr
+%<!209> \PackageError{sublabel}
+ {\protect\sublabon\space called for a non-existent counter}{\@eha}}
+% \end{macrocode}
+% Now test for the subcounter |sb@|\emph{ctr} and if it does not exist,
+% create it and set its value to $-1$.
+% \begin{macrocode}
+ {\@ifundefined{c@sb@#1}{\expandafter\newcount\csname c@sb@#1\endcsname
+ \setcounter{sb@#1}{-1}}{}%
+% \end{macrocode}
+% The value $-1$ means that the subcounter has not yet been used. This
+% value is set on creation, or by |\sublaboff| if the subcounter was never
+% stepped. This is the trick that allows multiple calls to |\sublabon|
+% without intervening |\sublaboff| calls. We have to avoid calling
+% |\sublaboff| when there was no stepping. Call it only if the current
+% value of the subcounter is 0 or more.
+% \begin{macrocode}
+\ifnum\@nameuse{c@sb@#1}<0\else\sublaboff{#1}\fi
+% \end{macrocode}
+% Set the counters \emph{ctr} and |sb@|\emph{ctr}.
+% \begin{macrocode}
+\stepcounter{#1}%
+\setcounter{sb@#1}{0}%
+% \end{macrocode}
+% A correction must be made for the |eqnarray| environment which
+% increments the |equation| counter immediately on entry and then after
+% each equation. That is, the |equation| counter already holds the value of
+% the \emph{next} equation. Thus we must set the two counters to the
+% values that they should have for the next equation. For example, let us
+% suppose the following:
+% \begin{quote}
+% We are outside the |eqnarray| environment, the last equation was
+% number~3, so the |equation| counter has the value |3|.
+%
+% We enter |eqnarray|; the |equation| counter is incremented immediately to
+% |4|.
+%
+% We write an equation; it obtains the number~4, and |equation| goes to
+% |5|.
+%
+% We call |\sublabon{equation}|, and |equation| is set to |6| and
+% |sb@equation| to |0| (so far). Since the counter is stepped only
+% \emph{after} the equation in this environment, this would mean that the next
+% equation would be numbered 6-0 instead of the desired 5-1.
+%
+% Hence the correction: decrement |equation| and set |sb@equation| to 1.
+% \end{quote}
+% \begin{macrocode}
+\def\@tempa{eqnarray}\ifx \@tempa\@currenvir
+ \addtocounter{equation}{-1}\setcounter{sb@equation}{1}\fi
+% \end{macrocode}
+% Note that the above does not test if |#1| really is |equation|. However,
+% if |\sublabon| is used within |eqnarray|, then it only makes sense to
+% subnumber equations.
+%
+% Now save the definition of |\the|\emph{ctr} as |\@ldthe|\emph{ctr}.
+% (This combination of |\expandafter| is necessary. I have experimented
+% with many other variations.)
+% \begin{macrocode}
+\global\expandafter\let\csname @ldthe#1\expandafter\endcsname
+ \csname the#1\endcsname
+% \end{macrocode}
+% and redefine |\the|\emph{ctr} to add |\substyle| with the subcounter.
+% \begin{macrocode}
+\expandafter\gdef\csname the#1\endcsname{%
+ \@nameuse{@ldthe#1}{\substyle{sb@#1}}}
+}\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sublaboff}
+% \changes{4.3a}{1994 Jun 22}{Use \cs{newcommand}}
+% The command that turns off the sublabelling tests if there is such a
+% counter, and if there exists a subcounter for it. If both tests pass,
+% then it checks that the subcounter has a non-negative value, for if it
+% does not, then there was no corresponding |\sublabon| command. That is,
+% the on/off commands are not nested properly. These tests are necessary to
+% check for typing errors.
+% \begin{macrocode}
+\newcommand{\sublaboff}[1]{\@bsphack
+\@ifundefined{c@#1}{%
+%<209> \@latexerr
+%<!209> \PackageError{sublabel}
+ {\protect\sublaboff\space called for a non-existent counter}{\@eha}}
+ {\@ifundefined{c@sb@#1}{%
+%<209> \@warning
+%<!209> \PackageWarning{sublabel}
+ {\protect\sublaboff{#1} called without any previous
+%<209> ^^J
+%<!209> \MessageBreak
+ \protect\sublabon{#1} command}}
+ {\ifnum\@nameuse{c@sb@#1}<0
+%<209> \@warning
+%<!209> \PackageWarning{sublabel}
+ {\protect\sublaboff{#1} called without a previous
+%<209> ^^J
+%<!209> \MessageBreak
+ \protect\sublabon{#1} command being active}\else
+% \end{macrocode}
+% However, if the subcounter has a 0 value, then |\sublabon| was indeed
+% called, but the counter was never stepped with |\stepcounter|. This is
+% not an error, but it means that the old value of \emph{ctr} should be
+% restored. The subcounter is set to $-1$ to indicate this to the next
+% call to |\sublabon|. The numbering goes on as if |\sublabon| and
+% |\sublaboff| had never been given.
+% \begin{macrocode}
+\ifnum\@nameuse{c@sb@#1}=0\addtocounter{#1}{-1}\fi
+\setcounter{sb@#1}{-1}%
+% \end{macrocode}
+% Re-establish the definition of |\the|\emph{ctr} stored in
+% |\@ldthe|\emph{ctr}.
+% \begin{macrocode}
+\global\expandafter\let\csname the#1\expandafter\endcsname
+ \csname @ldthe#1\endcsname
+% \end{macrocode}
+% Finally, if |\sublaboff| is called within the |eqnarray| environment,
+% then the |equation| counter must be corrected again, to hold the number
+% for the next equation.
+% \begin{macrocode}
+\def\@tempa{eqnarray}\ifx \@tempa\@currenvir
+ \stepcounter{equation}\fi
+\fi}}\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ref}
+% \changes{4.3}{1994 May 16}{Use definition from \LaTeXe{} for NFSS with 2.09}
+% \begin{macro}{\pageref}
+% \changes{4.3}{1994 May 16}{Use definition from \LaTeXe{} for NFSS with 2.09}
+%
+% The font command within |\substyle| means that it is transferred to the
+% auxiliary file in a |\newlabel| command. This causes problems under the
+% New Font Selection Scheme (NFSS) when all the tokens are expanded too
+% early. This problem does not exist with \LaTeX~2.09 without NFSS, nor
+% with the NFSS in \LaTeXe. To get around this, I add the revised
+% definitions of |\ref| and |\pageref| from \LaTeXe, but implement them
+% only for NFSS under 2.09.
+% \begin{macrocode}
+%<*209>
+\@ifundefined{selectfont}{}{%
+\def\@setref#1#2#3{%
+ \ifx#1\relax {\reset@font\bf ??}%
+ \@warning{Reference `#3' on page \thepage \space undefined}%
+ \else
+ \expandafter#2#1\null
+ \fi}
+\def\ref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
+\def\pageref#1{\expandafter\@setref\csname r@#1\endcsname
+ \@secondoftwo{#1}}
+\def\@firstoftwo#1#2{#1}
+\def\@secondoftwo#1#2{#2}
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\reset@font}
+% For older implementations of \LaTeX~2.09 (before December, 1991) the
+% |\reset@font| command does not exist. It is defined to be |\relax| under
+% normal \LaTeX{}, but does more under NFSS. In case it is not defined, add
+% it here.
+% \begin{macrocode}
+\@ifundefined{reset@font}{\def\reset@font{\relax}}{}
+%</209>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\stepcounter}
+% \changes{4.3a}{1994 Jun 22}{Use \cs{renewcommand}}
+% \changes{4.4}{1997 Apr 28}{Put into \cs{AtBeginDocument}}
+% A very important matter has still to be done: redefine |\stepcounter| so
+% that it increments the subcounter and not the main one. It is not
+% necessary to redefine |\refstepcounter| since it calls |\stepcounter|
+% itself. The existing definition of |\stepcounter| is saved and used in
+% the new definition.
+%
+% This is done at the start of the document, not immediately, in case some
+% other package is loaded that alters |\setcounter|. This also applies to
+% |\addtocounter| and |\endeqnarray|. For example, the \texttt{amsmath}
+% package makes such changes, so if it is loaded after \texttt{\filename}
+% it clobbers these new definitions if they are not delayed. (This used to
+% happen when \textsl{AGU$^{++}$} is used with \texttt{amsmath}.)
+% Do this only for \LaTeXe.
+%
+% \begin{macrocode}
+%<!209>\AtBeginDocument{%
+\let\@ldstepcounter=\stepcounter
+\renewcommand{\stepcounter}[1]
+ {\@ifundefined{c@sb@#1}{\@ldstepcounter{#1}}{\ifnum
+ \@nameuse{c@sb@#1}<0\relax
+ \@ldstepcounter{#1}\else \@ldstepcounter{sb@#1}\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtocounter}
+% \changes{4.2}{1993 Dec 17}{Add to allow for macros that might fiddle with
+% counters}
+% \changes{4.3a}{1994 Jun 22}{Use \cs{renewcommand}}
+% \changes{4.4}{1997 Apr 28}{Put into \cs{AtBeginDocument}}
+% A similar refinement must be done to |\addtocounter| to allow for any
+% macros that fiddle with counters. (The \texttt{planotable} environment of
+% the AGU styles does this, for example.) If the fiddling is done
+% explicitly (by giving |\c@|\emph{ctr} a new value) then we are lost.
+% It might also be necessary to refine |\setcounter|, but at the moment I
+% cannot foresee any reason for using that command where sublabels might be
+% used.
+% \begin{macrocode}
+\let\@ldaddtoctr=\addtocounter
+\renewcommand{\addtocounter}[2]
+ {\@ifundefined{c@sb@#1}{\@ldaddtoctr{#1}{#2}}{\ifnum
+ \@nameuse{c@sb@#1}<0\relax
+ \@ldaddtoctr{#1}{#2}\else \@ldaddtoctr{sb@#1}{#2}\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endeqnarray}
+% Lastly, the |eqnarray| environment itself must be altered to allow for
+% the case where it is ended while |\sublabon{equation}| is
+% active. (The example above was for when |\sublabon| is given within the
+% environment.) The normal |\endeqnarray| command explicitly decrements the
+% |equation| counter (not with |\stepcounter|) so that it now points to the
+% last equation, as usual. However if the subnumbering is on at this point,
+% the |equation| must be re-incremented and |sb@equation| decremented
+% instead.
+% \changes{4.2a}{1994 Feb 25}{Use original \cs{addtocounter}}
+% \changes{4.3a}{1994 Jun 22}{Use \cs{renewcommand}}
+% \changes{4.4}{1997 Apr 28}{Put into \cs{AtBeginDocument}}
+% \begin{macrocode}
+\let\@ldendeqnarray=\endeqnarray
+\renewcommand{\endeqnarray}{\@ldendeqnarray
+ \@ifundefined{c@sb@equation}{}{\ifnum\c@sb@equation<0\else
+ \@ldaddtoctr{equation}{1}\@ldaddtoctr{sb@equation}{-1}\fi}}
+%<!209>}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
diff --git a/macros/latex/contrib/preprint/sublabel.ins b/macros/latex/contrib/preprint/sublabel.ins
new file mode 100644
index 0000000000..a61d318d6f
--- /dev/null
+++ b/macros/latex/contrib/preprint/sublabel.ins
@@ -0,0 +1,64 @@
+% File: sublabel.ins
+% Copyright 1999 Patrick W. Daly
+%
+% 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.
+%
+% It is an installation file for extracting package and driver
+% files from the original source file. Simply process it under
+% TeX or LaTeX.
+
+\input docstrip
+
+\preamble
+=============================================
+IMPORTANT NOTICE:
+
+This program 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 is a generated file.
+It may not be distributed without the original source file \inFileName.
+
+Full documentation can be obtained by LaTeXing that original file.
+Only a few abbreviated comments remain here to describe the usage.
+=============================================
+\endpreamble
+\postamble
+
+<<<<< End of generated file <<<<<<
+\endpostamble
+
+\declarepreamble\driver
+============================================
+This is the driver file to produce the LaTeX documentation
+from the original source file \inFileName.
+
+Make changes to it as needed. (Never change the file \inFileName!)
+============================================
+\endpreamble
+
+\declarepostamble\driverq
+
+End of documentation driver file.
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{\file{sublabel.sty}{\from{sublabel.dtx}{package}}
+ \file{sublabel.drv}{\usepreamble\driver\usepostamble\driverq
+ \from{sublabel.dtx}{driver}}
+ }
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process sublabel.dtx *}%
+\Msg{* or the driver file sublabel.drv *}%
+\Msg{*******************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/preprint/sublabel.pdf b/macros/latex/contrib/preprint/sublabel.pdf
new file mode 100644
index 0000000000..687db87de1
--- /dev/null
+++ b/macros/latex/contrib/preprint/sublabel.pdf
Binary files differ