% \iffalse THIS IS A META-COMMENT %<*dtx> \ProvidesFile %======================================================================== {SUBLABEL.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> %\def\ProvidesPackage#1#2] % {\typeout{Style option `#1'#2]}} % % *** Identify the package file:- %\NeedsTeXFormat{LaTeX2e}[1995/06/01] %\ProvidesPackage{sublabel} % % % *** Provide command to dislay module version %\def\ModuleVersion#1[#2]{} % \ModuleVersion{sublabel} % % *** Identify the driver file:- %\NeedsTeXFormat{LaTeX2e} %\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*} % %<*driver> \documentclass{ltxdoc} %%\documentclass[twoside]{ltxdoc} %%\documentclass[a4paper]{ltxdoc} %%\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) %% \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) %% \RecordChanges \DisableCrossrefs %May stay; zapped by \EnableCrossrefs \CodelineNumbered %May stay \begin{document} \DocInput{sublabel.dtx} \end{document} % %\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) % % \end{verbatim} %\iffalse %----------------------------------------------------------- % %\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 |%|, which % are indicators to \texttt{docstrip} that this coding belongs to the package % file. % % The \texttt{docstrip} option || 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 ||. % % 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> {\@@warning {^^J ********************************^^J `sublabel' read in after `figcaps'^^J There could be problems with sublabelled^^J figure and table numbers.^^J ********************************}} % % \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 % % %\def\substyle#1{\it\alph{#1}} %\def\substyle#1{\itshape\alph{#1}} %\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 % \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 % \PackageError{sublabel} {\protect\sublaboff\space called for a non-existent counter}{\@eha}} {\@ifundefined{c@sb@#1}{% %<209> \@warning % \PackageWarning{sublabel} {\protect\sublaboff{#1} called without any previous %<209> ^^J % \MessageBreak \protect\sublabon{#1} command}} {\ifnum\@nameuse{c@sb@#1}<0 %<209> \@warning % \PackageWarning{sublabel} {\protect\sublaboff{#1} called without a previous %<209> ^^J % \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}}{} % % \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} %\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}} %} % % \end{macrocode} % \end{macro} % % \Finale