docs/Development-Case

annotate chngcntr.sty @ 0:662d647b9e94

initial commit
author meillo@marmaro.de
date Mon, 14 Jan 2008 06:44:49 +0100
parents
children
rev   line source
meillo@0 1 % chngcntr.sty
meillo@0 2 %
meillo@0 3 % Provides commands to change the resetting of counters.
meillo@0 4 % Instructions for use are at the end of this file.
meillo@0 5 %
meillo@0 6 % author: Peter Wilson (CUA)
meillo@0 7 % (now at peter.r.wilson@boeing.com)
meillo@0 8 % Released under the Latex Project Public License
meillo@0 9 %
meillo@0 10 %
meillo@0 11 \NeedsTeXFormat{LaTeX2e}
meillo@0 12 \ProvidesPackage{chngcntr}[2001/03/30 v1.0 change counter resetting]
meillo@0 13 %
meillo@0 14 % This package uses David Carlisle's \@removefromreset command as
meillo@0 15 % specified in the remreset package available from CTAN as
meillo@0 16 % macros/latex/contrib/supported/carlisle/remreset.sty
meillo@0 17 % It is \provided here as a convenience to the user, and with
meillo@0 18 % David Carlisle's permission.
meillo@0 19 % START OF DAVID CARLISLE'S CODE
meillo@0 20 \providecommand{\@removefromreset}[2]{{%
meillo@0 21 \expandafter\let\csname c@#1\endcsname\@removefromreset
meillo@0 22 \def\@elt##1{%
meillo@0 23 \expandafter\ifx\csname c@##1\endcsname\@removefromreset
meillo@0 24 \else
meillo@0 25 \noexpand\@elt{##1}%
meillo@0 26 \fi}%
meillo@0 27 \expandafter\xdef\csname cl@#2\endcsname{%
meillo@0 28 \csname cl@#2\endcsname}}}
meillo@0 29 % END OF DAVID CARLISLE'S CODE
meillo@0 30
meillo@0 31 %%\@ifbothc@t@s{<package>}{<counter>}{<within>}{<code when both are counters>}
meillo@0 32 \newcommand{\@ifbothc@t@s}[4]{%
meillo@0 33 \@ifundefined{c@#2}{% counter undefined
meillo@0 34 \PackageError{#1}{#2 is not a counter}{\@eha}}%
meillo@0 35 {% else counter is defined
meillo@0 36 \@ifundefined{c@#3}{% within undefined
meillo@0 37 \PackageError{#1}{#3 is not a counter}{\@eha}}%
meillo@0 38 {% else both counter and within are defined
meillo@0 39 #4}}}
meillo@0 40
meillo@0 41 %%\counterwithout*{<counter>}{<within>}
meillo@0 42 \newcommand{\counterwithout}{\@ifstar{\c@t@soutstar}{\c@t@sout}}
meillo@0 43 \newcommand{\c@t@soutstar}[2]{%
meillo@0 44 \@ifbothc@t@s{chngcntr}{#1}{#2}{\@removefromreset{#1}{#2}}}
meillo@0 45 \newcommand{\c@t@sout}[2]{%
meillo@0 46 \@ifbothc@t@s{chngcntr}{#1}{#2}{\@removefromreset{#1}{#2}%
meillo@0 47 \@namedef{the#1}{\arabic{#1}}}}
meillo@0 48
meillo@0 49
meillo@0 50 %%\counterwithin*{<counter>}{<within>}
meillo@0 51 \newcommand{\counterwithin}{\@ifstar{\c@t@sinstar}{\c@t@sin}}
meillo@0 52 \newcommand{\c@t@sinstar}[2]{%
meillo@0 53 \@ifbothc@t@s{chngcntr}{#1}{#2}{\@addtoreset{#1}{#2}}}
meillo@0 54 \newcommand{\c@t@sin}[2]{%
meillo@0 55 \@ifbothc@t@s{chngcntr}{#1}{#2}{\@addtoreset{#1}{#2}%
meillo@0 56 \@namedef{the#1}{\@nameuse{the#2}.\arabic{#1}}}}
meillo@0 57
meillo@0 58
meillo@0 59 \endinput
meillo@0 60
meillo@0 61 %%%%%%%%%%%%%%%%%%
meillo@0 62 % USAGE
meillo@0 63 %%%%%%%%%%%%%%%%%%
meillo@0 64 %
meillo@0 65 % In LaTeX, a new counter called, say `ctr', is created by the command
meillo@0 66 % \newcounter{ctr}[within]. If the optional within argument is given
meillo@0 67 % the the counter `ctr' is reset to zero each time the counter `within'
meillo@0 68 % changes. The command \thectr typesets the value of the counter ctr.
meillo@0 69 % This is automatically defined by \newcounter and is initialised
meillo@0 70 % to typeset arabic numerals.
meillo@0 71 %
meillo@0 72 %%%%%%%%%%%%%%%%%
meillo@0 73 % \counterwithin
meillo@0 74 % \counterwithin*
meillo@0 75 %%%%%%%%%%%%%%%%%
meillo@0 76 % It is sometimes desireable to change a counter that has been defined
meillo@0 77 % by \newcounter{ctr} to act as though it had been defined as
meillo@0 78 % \newcounter{ctr}[within]. The package provides the command
meillo@0 79 % \counterwithin{ctr}{within} that accomplishes this. By default,
meillo@0 80 % it also redefines the \thectr command so that it typesets values
meillo@0 81 % in the style \thewithin.\arabic{ctr}. The starred version of the
meillo@0 82 % command suppresses the redefinition of \thectr
meillo@0 83 % (e.g., \counterwithin*{ctr}{within}).
meillo@0 84 %
meillo@0 85 %%%%%%%%%%%%%%%%%%
meillo@0 86 % \counterwithout
meillo@0 87 % \counterwithout*
meillo@0 88 %%%%%%%%%%%%%%%%%%
meillo@0 89 % Likewise, the command \counterwithout{ctr}{within} changes a
meillo@0 90 % counter that has been created by \newcounter{ctr}[within] to act
meillo@0 91 % as though it had been created by \newcounter{ctr}. By default it
meillo@0 92 % also redefines the \thectr command so that it just typesets an arabic
meillo@0 93 % numeral. The starred version of the command suppresses the redefinition
meillo@0 94 % of \thectr.
meillo@0 95 %
meillo@0 96 % Any number of \counterwithin{ctr}{...} and \counterwithout{ctr}{...}
meillo@0 97 % commands can be issued for a given counter, ctr, if you wish to toggle
meillo@0 98 % between the two styles. The current value of ctr is unaffected by
meillo@0 99 % \counterwithin and \counterwithout. If you want to change the value
meillo@0 100 % after one of these commands, use \setcounter{ctr}{...}, and to change
meillo@0 101 % the typeseting style use \renewcommand{\thectr}{...}.
meillo@0 102 %
meillo@0 103 %
meillo@0 104 % Peter W.
meillo@0 105 % 2001/03/30
meillo@0 106 %
meillo@0 107