From 8b909865f2b6ffeb4314622e1b9029e64aac7a8e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 11 Jan 2006 23:56:21 +0000 Subject: trunk/Master/texmf-dist/source/latex/preprint git-svn-id: svn://tug.org/texlive/trunk@460 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/preprint/sublabel.dtx | 729 +++++++++++++++++++++ 1 file changed, 729 insertions(+) create mode 100644 Master/texmf-dist/source/latex/preprint/sublabel.dtx (limited to 'Master/texmf-dist/source/latex/preprint/sublabel.dtx') diff --git a/Master/texmf-dist/source/latex/preprint/sublabel.dtx b/Master/texmf-dist/source/latex/preprint/sublabel.dtx new file mode 100644 index 00000000000..7aad1f0ce68 --- /dev/null +++ b/Master/texmf-dist/source/latex/preprint/sublabel.dtx @@ -0,0 +1,729 @@ +% \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 -- cgit v1.2.3