diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:56 +0000 |
commit | 6c7621f5f97859c7bec9827d2756a9da8195fd04 (patch) | |
tree | 67e3925bb54d7351dd49244aa5f5ad096e5bc76f /Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty | |
parent | 0fed233a8ca0ae49664e2115038508db416e65f1 (diff) |
fmtcount
git-svn-id: svn://tug.org/texlive/trunk@926 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty | 487 |
1 files changed, 487 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty new file mode 100644 index 00000000000..02fba14a600 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty @@ -0,0 +1,487 @@ +%% +%% This is file `fmtcount.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fmtcount.dtx (with options: `fmtcount.sty,package') +%% Copyright (C) 2005 Nicola Talbot, all rights reserved. +%% If you modify this file, you must change its name first. +%% You are NOT ALLOWED to distribute this file alone. You are NOT +%% ALLOWED to take money for the distribution or use of either this +%% file or a changed version, except for a nominal charge for copying +%% etc. +%% \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 \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{fmtcount}[2005/06/20 v1.03] +\RequirePackage{ifthen} +\RequirePackage{keyval} +\providecommand{\fmtord}[1]{\textsuperscript{#1}} + +\newcount\c@padzeroesN +\c@padzeroesN=1\relax +\providecommand{\padzeroes}[1][17]{\c@padzeroesN=#1} +\@ifundefined{dateenglish}{}{\input{fc-english.def}} +\@ifundefined{datespanish}{}{\input{fc-spanish.def}} +\@ifundefined{dateportuges}{}{\input{fc-portuges.def}} +\@ifundefined{datefrench}{}{\input{fc-french.def}} +\def\fmtcount@french{france} +\define@key{fmtcount}{french}[france]{% +\@ifundefined{datefrench}{% +\PackageError{fmtcount}{Language `french' not defined}{You need +to load babel before loading fmtcount}}{ +\ifthenelse{\equal{#1}{france} + \or\equal{#1}{swiss} + \or\equal{#1}{belgian}}{% + \def\fmtcount@french{#1}}{% +\PackageError{fmtcount}{Invalid value `#1' to french key} +{Option `french' can only take the values `france', +`belgian' or `swiss'}} +}} + +\define@key{fmtcount}{fmtord}{% +\ifthenelse{\equal{#1}{level} + \or\equal{#1}{raise} + \or\equal{#1}{user}}{ + \def\fmtcount@fmtord{#1}}{% +\PackageError{fmtcount}{Invalid value `#1' to fmtord key} +{Option `fmtord' can only take the values `level', `raise' +or `user'}}} + +\newif\iffmtord@abbrv +\fmtord@abbrvfalse +\define@key{fmtcount}{abbrv}[true]{% +\ifthenelse{\equal{#1}{true}\or\equal{#1}{false}}{ + \csname fmtord@abbrv#1\endcsname}{% +\PackageError{fmtcount}{Invalid value `#1' to fmtord key} +{Option `fmtord' can only take the values `true' or +`false'}}} + +\newcommand{\fmtcountsetoptions}[1]{% +\def\fmtcount@fmtord{}% +\setkeys{fmtcount}{#1}% +\@ifundefined{datefrench}{}{% +\edef\@ordinalstringMfrench{\noexpand\csname @ordinalstringMfrench\fmtcount@french\noexpand\endcsname}% +\edef\@ordinalstringFfrench{\noexpand\csname @ordinalstringFfrench\fmtcount@french\noexpand\endcsname}% +\edef\@OrdinalstringMfrench{\noexpand\csname @OrdinalstringMfrench\fmtcount@french\noexpand\endcsname}% +\edef\@OrdinalstringFfrench{\noexpand\csname @OrdinalstringFfrench\fmtcount@french\noexpand\endcsname}% +\edef\@numberstringMfrench{\noexpand\csname @numberstringMfrench\fmtcount@french\noexpand\endcsname}% +\edef\@numberstringFfrench{\noexpand\csname @numberstringFfrench\fmtcount@french\noexpand\endcsname}% +\edef\@NumberstringMfrench{\noexpand\csname @NumberstringMfrench\fmtcount@french\noexpand\endcsname}% +\edef\@NumberstringFfrench{\noexpand\csname @NumberstringFfrench\fmtcount@french\noexpand\endcsname}% +}% +\ifthenelse{\equal{\fmtcount@fmtord}{level}}{% +\renewcommand{\fmtord}[1]{##1}}{% +\ifthenelse{\equal{\fmtcount@fmtord}{raise}}{% +\renewcommand{\fmtord}[1]{\textsuperscript{##1}}}{% +}} +} +\InputIfFileExists{fmtcount.cfg}{% +\typeout{Using configuration file fmtcount.cfg}}{% +\typeout{No configuration file fmtcount.cfg found.}} +\DeclareOption{level}{\def\fmtcount@fmtord{level}% +\def\fmtord#1{#1}} +\DeclareOption{raise}{\def\fmtcount@fmtord{raise}% +\def\fmtord#1{\textsuperscript{#1}}} + +\ProcessOptions + +\newcount\@DT@modctr +\def\@modulo#1#2{% +\@DT@modctr=#1\relax +\divide \@DT@modctr by #2\relax +\multiply \@DT@modctr by #2\relax +\advance #1 by -\@DT@modctr} +\newcount\@ordinalctr +\newcount\@orgargctr +\newcount\@strctr +\newcount\@tmpstrctr +\newif\if@DT@padzeroes +\newcount\@DT@loopN +\newcount\@DT@X +\newcommand{\@binary}[1]{% +\@DT@padzeroestrue +\@DT@loopN=17\relax +\@strctr=\@DT@loopN +\whiledo{\@strctr<\c@padzeroesN}{0\advance\@strctr by 1}% +\@strctr=65536\relax +\@DT@X=#1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}% +\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 2\relax +\advance\@DT@loopN by -1\relax +\ifnum\@strctr>1 +\repeat +\the\@DT@X} + +\let\binarynum=\@binary +\newcommand{\@octal}[1]{% +\ifnum#1>32768 +\PackageError{fmtcount}{Value of counter too large for \protect\@octal}{Maximum value 32768} +\else +\@DT@padzeroestrue +\@DT@loopN=6\relax +\@strctr=\@DT@loopN +\whiledo{\@strctr<\c@padzeroesN}{0\advance\@strctr by 1}% +\@strctr=32768\relax +\@DT@X=#1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}% +\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 8\relax +\advance\@DT@loopN by -1\relax +\ifnum\@strctr>1 +\repeat +\the\@DT@X +\fi} +\let\octalnum=\@octal +\newcommand{\@@hexadecimal}[1]{\ifcase#10\or1\or2\or3\or4\or5\or6\or7\or8\or9\or a\or b\or c\or d\or e\or f\fi} + +\newcommand{\@hexadecimal}[1]{% +\@DT@padzeroestrue +\@DT@loopN=5\relax +\@strctr=\@DT@loopN +\whiledo{\@strctr<\c@padzeroesN}{0\advance\@strctr by 1}% +\@strctr=65536\relax +\@DT@X=#1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\@@hexadecimal\@DT@modctr}% +\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 16\relax +\advance\@DT@loopN by -1\relax +\ifnum\@strctr>1 +\repeat +\@@hexadecimal\@DT@X} + +\let\hexadecimalnum=\@hexadecimal + +\newcommand{\@@Hexadecimal}[1]{\ifcase#10\or1\or2\or3\or4\or5\or6\or7\or8\or9\or A\or B\or C\or D\or E\or F\fi} + +\newcommand{\@Hexadecimal}[1]{% +\@DT@padzeroestrue +\@DT@loopN=5\relax +\@strctr=\@DT@loopN +\whiledo{\@strctr<\c@padzeroesN}{0\advance\@strctr by 1}% +\@strctr=65536\relax +\@DT@X=#1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\@@Hexadecimal\@DT@modctr}% +\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 16\relax +\advance\@DT@loopN by -1\relax +\ifnum\@strctr>1 +\repeat +\@@Hexadecimal\@DT@X} + +\let\Hexadecimalnum=\@Hexadecimal +\newcommand{\@aaalph}[1]{% +\@DT@loopN=#1\relax +\advance\@DT@loopN by -1\relax +\divide\@DT@loopN by 26\relax +\@DT@modctr=\@DT@loopN +\multiply\@DT@modctr by 26\relax +\@DT@X=#1\relax +\advance\@DT@X by -1\relax +\advance\@DT@X by -\@DT@modctr +\advance\@DT@loopN by 1\relax +\advance\@DT@X by 1\relax +\loop +\@alph\@DT@X +\advance\@DT@loopN by -1\relax +\ifnum\@DT@loopN>0 +\repeat +} + +\let\aaalphnum=\@aaalph + +\newcommand{\@AAAlph}[1]{% +\@DT@loopN=#1\relax +\advance\@DT@loopN by -1\relax +\divide\@DT@loopN by 26\relax +\@DT@modctr=\@DT@loopN +\multiply\@DT@modctr by 26\relax +\@DT@X=#1\relax +\advance\@DT@X by -1\relax +\advance\@DT@X by -\@DT@modctr +\advance\@DT@loopN by 1\relax +\advance\@DT@X by 1\relax +\loop +\@Alph\@DT@X +\advance\@DT@loopN by -1\relax +\ifnum\@DT@loopN>0 +\repeat +} + +\let\AAAlphnum=\@AAAlph +\newcommand{\@abalph}[1]{% +\ifnum#1>17576 +\PackageError{fmtcount}{Value of counter too large for \protect\@abalph}{Maximum value 17576} +\else +\@DT@padzeroestrue +\@strctr=17576\relax +\@DT@X=#1\relax +\advance\@DT@X by -1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=1\)}{}{\@alph\@DT@modctr}% +\ifnum\@DT@modctr=1\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 26\relax +\ifnum\@strctr>1 +\repeat +\advance\@DT@X by 1\relax +\@alph\@DT@X +\fi} + +\let\abalphnum=\@abalph + +\newcommand{\@ABAlph}[1]{% +\ifnum#1>17576 +\PackageError{fmtcount}{Value of counter too large for \protect\@ABAlph}{Maximum value 17576} +\else +\@DT@padzeroestrue +\@strctr=17576\relax +\@DT@X=#1\relax +\advance\@DT@X by -1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=1\)}{}{\@Alph\@DT@modctr}% +\ifnum\@DT@modctr=1\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 26\relax +\ifnum\@strctr>1 +\repeat +\advance\@DT@X by 1\relax +\@Alph\@DT@X +\fi} + +\let\ABAlphnum=\@ABAlph + +\newcommand{\@decimal}[1]{% +\ifnum#1>10000 +\PackageError{fmtcount}{Value of counter too large for \protect\@decimal}{Maximum value 10000}\number#1\relax +\else +\@DT@padzeroestrue +\@DT@loopN=6\relax +\@strctr=\@DT@loopN +\whiledo{\(\@strctr<\c@padzeroesN\) \TE@or \(\@strctr=\c@padzeroesN\)}{0\advance\@strctr by 1}% +\@strctr=10000\relax +\@DT@X=#1\relax +\loop +\@DT@modctr=\@DT@X +\divide\@DT@modctr by \@strctr +\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}% +\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi +\multiply\@DT@modctr by \@strctr +\advance\@DT@X by -\@DT@modctr +\divide\@strctr by 10\relax +\advance\@DT@loopN by -1\relax +\ifnum\@strctr>1 +\repeat +\the\@DT@X +\fi} + +\let\decimalnum=\@decimal +\newcommand{\ordinal}[1]{% +\expandafter\protect\expandafter\ordinalnum{% +\expandafter\the\csname c@#1\endcsname}} + +\newcommand{\ordinalnum}[1]{\@ifnextchar[{\@ordinalnum{#1}}{% +\@ordinalnum{#1}[m]}} + +\def\@ordinalnum#1[#2]{% +\ifthenelse{\equal{#2}{f}}{% +\protect\@ordinalF{#1}}{% +\ifthenelse{\equal{#2}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2' to +\string\ordinal}{Available options are m or f}}% +\protect\@ordinalM{#1}}} + +\newcommand{\ordinalstring}[1]{% +\expandafter\protect\expandafter\ordinalstringnum{% +\expandafter\the\csname c@#1\endcsname}} + +\newcommand{\ordinalstringnum}[1]{% +\@ifnextchar[{\@ordinal@string{#1}}{\@ordinal@string{#1}[m]}} + +\def\@ordinal@string#1[#2]{% +\ifthenelse{\equal{#2}{f}}{% +\protect\@ordinalstringF{#1}}{% +\ifthenelse{\equal{#2}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2' to +\string\ordinalstring}{Available options are m or f}}% +\protect\@ordinalstringM{#1}}} + +\newcommand{\Ordinalstring}[1]{% +\expandafter\protect\expandafter\Ordinalstringnum{% +\expandafter\the\csname c@#1\endcsname}} + +\newcommand{\Ordinalstringnum}[1]{% +\@ifnextchar[{\@Ordinal@string{#1}}{\@Ordinal@string{#1}[m]}} + +\def\@Ordinal@string#1[#2]{% +\ifthenelse{\equal{#2}{f}}{% +\protect\@OrdinalstringF{#1}}{% +\ifthenelse{\equal{#2}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2' to +\string\Ordinalstring}{Available options are m or f}}% +\protect\@OrdinalstringM{#1}}} + +\newcommand{\numberstring}[1]{% +\expandafter\protect\expandafter\numberstringnum{% +\expandafter\the\csname c@#1\endcsname}} + +\newcommand{\numberstringnum}[1]{% +\@ifnextchar[{\@number@string{#1}}{\@number@string{#1}[m]}} + +\def\@number@string#1[#2]{% +\ifthenelse{\equal{#2}{f}}{% +\protect\@numberstringF{#1}}{% +\ifthenelse{\equal{#2}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2' to +\string\numberstring}{Available options are m or f}}% +\protect\@numberstringM{#1}}} + +\newcommand{\Numberstring}[1]{% +\expandafter\protect\expandafter\Numberstringnum{% +\expandafter\the\csname c@#1\endcsname}} + +\newcommand{\Numberstringnum}[1]{% +\@ifnextchar[{\@Number@string{#1}}{\@Number@string{#1}[m]}} + +\def\@Number@string#1[#2]{% +\ifthenelse{\equal{#2}{f}}{% +\protect\@NumberstringF{#1}}{% +\ifthenelse{\equal{#2}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2' to +\string\Numberstring}{Available options are m or f}}% +\protect\@NumberstringM{#1}}} + +\providecommand{\binary}[1]{\expandafter\protect\expandafter\@binary{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\aaalph}[1]{\expandafter\protect\expandafter\@aaalph{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\AAAlph}[1]{\expandafter\protect\expandafter\@AAAlph{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\abalph}[1]{\expandafter\protect\expandafter\@abalph{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\ABAlph}[1]{\expandafter\protect\expandafter\@ABAlph{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\hexadecimal}[1]{\expandafter\protect\expandafter\@hexadecimal{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\Hexadecimal}[1]{\expandafter\protect\expandafter\@Hexadecimal{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\octal}[1]{\expandafter\protect\expandafter\@octal{\expandafter\the\csname c@#1\endcsname}} +\providecommand{\decimal}[1]{\expandafter\protect\expandafter\@decimal{\expandafter\the\csname c@#1\endcsname}} +\def\@setdef@ultfmtcount{ +\@ifundefined{@ordinalenglish}{\input{fc-english.def}}{} +\def\@ordinalstringM{\@ordinalstringMenglish} +\let\@ordinalstringF=\@ordinalstringMenglish +\def\@OrdinalstringM{\@OrdinalstringMenglish} +\let\@OrdinalstringF=\@OrdinalstringMenglish +\def\@numberstringM{\@numberstringMenglish} +\let\@numberstringF=\@numberstringMenglish +\def\@NumberstringM{\@NumberstringMenglish} +\let\@NumberstringF=\@NumberstringMenglish +\def\@ordinalM{\@ordinalMenglish} +\let\@ordinalF=\@ordinalM} + +\@ifundefined{languagename}{% +\@setdef@ultfmtcount}{ +\ifthenelse{\equal{\languagename}{nohyphenation}}{\@setdef@ultfmtcount}{ +\def\@numberstringM{\@ifundefined{@numberstringM\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@numberstringM}}{% +\csname @numberstringM\languagename\endcsname}} + +\def\@numberstringF{\@ifundefined{@numberstringF\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@numberstringF}}{% +\csname @numberstringF\languagename\endcsname}} + +\def\@NumberstringM{\@ifundefined{@NumberstringM\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@NumberstringM}}{% +\csname @NumberstringM\languagename\endcsname}} + +\def\@NumberstringF{\@ifundefined{@NumberstringF\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@NumberstringF}}{% +\csname @NumberstringF\languagename\endcsname}} + +\def\@ordinalM{\@ifundefined{@ordinalM\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@ordinalM}}{% +\csname @ordinalM\languagename\endcsname}} + +\def\@ordinalF{\@ifundefined{@ordinalF\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@ordinalF}}{% +\csname @ordinalF\languagename\endcsname}} + +\def\@ordinalstringM{\@ifundefined{@ordinalstringM\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@ordinalstringM}}{% +\csname @ordinalstringM\languagename\endcsname}} + +\def\@ordinalstringF{\@ifundefined{@ordinalstringF\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@ordinalstringF}}{% +\csname @ordinalstringF\languagename\endcsname}} + +\def\@OrdinalstringM{\@ifundefined{@OrdinalstringM\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@OrdinalstringM}}{% +\csname @OrdinalstringM\languagename\endcsname}} + +\def\@OrdinalstringF{\@ifundefined{@OrdinalstringF\languagename}{% +\PackageError{fmtcount}{No support for language '\languagename'}{% +The fmtcount package currently does not support language +'\languagename' for command \string\@OrdinalstringF}}{% +\csname @OrdinalstringF\languagename\endcsname}} +}} +\let\@ordinal=\@ordinalM +\let\@ordinalstring=\@ordinalstringM +\let\@Ordinalstring=\@OrdinalstringM +\let\@numberstring=\@numberstringM +\let\@Numberstring=\@NumberstringM +\endinput +%% +%% End of file `fmtcount.sty'. |