%% %% This is file `fmtcount.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% fmtcount.dtx (with options: `fmtcount.sty,package') %% %% fmtcount.dtx %% Copyright 2009 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license of (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Nicola Talbot. %% %% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fmtcount.sty, fc-british.def, fc-english.def, fc-french.def, fc-german.def, fc-italian.def, fc-portuges.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fmtcount.perl, fc-lang.tex, fc-samp.tex. %% %% \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}[2009/10/02 v1.31] \RequirePackage{ifthen} \RequirePackage{keyval} \RequirePackage{amsgen} \providecommand*{\fmtord}[1]{\textsuperscript{#1}} \newcount\c@padzeroesN \c@padzeroesN=1\relax \providecommand*{\padzeroes}[1][17]{\c@padzeroesN=#1} \@ifundefined{l@english}{}{\input{fc-english.def}} \@ifundefined{l@UKenglish}{}{\input{fc-UKenglish.def}} \@ifundefined{l@british}{}{\input{fc-british.def}} \@ifundefined{l@USenglish}{}{\input{fc-USenglish.def}} \@ifundefined{l@spanish}{}{\input{fc-spanish.def}} \@ifundefined{l@portuges}{}{\input{fc-portuges.def}} \@ifundefined{l@french}{}{\input{fc-french.def}} \@ifundefined{l@german}{% \@ifundefined{l@ngerman}{}{\input{fc-german.def}}}{% \input{fc-german.def}} \@ifundefined{l@italian}{}{\input{fc-italian.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\or 6\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\or 7\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\relax \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\relax \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 \def\@fmtc@count#1#2\relax{% \if\relax#1 \else \advance\@strctr by 1\relax \@fmtc@count#2\relax \fi} \newcommand{\@decimal}[1]{% \@strctr=0\relax \expandafter\@fmtc@count\number#1\relax \@DT@loopN=\c@padzeroesN \advance\@DT@loopN by -\@strctr \ifnum\@DT@loopN>0\relax \@strctr=0\relax \whiledo{\@strctr < \@DT@loopN}{0\advance\@strctr by 1\relax}% \fi \number#1\relax } \let\decimalnum=\@decimal \newcommand{\FCordinal}[1]{% \expandafter\protect\expandafter\ordinalnum{% \expandafter\the\csname c@#1\endcsname}} \@ifundefined{ordinal}{\let\ordinal\FCordinal}{% \PackageWarning{fmtcount}{\string\ordinal \space already defined use \string\FCordinal \space instead.}} \newcommand*{\ordinalnum}[1]{\new@ifnextchar[{\@ordinalnum{#1}}{% \@ordinalnum{#1}[m]}} \def\@ordinalnum#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@ordinalF{#1}{\@fc@ordstr}% }{% \ifthenelse{\equal{#2}{n}}{% \protect\@ordinalN{#1}{\@fc@ordstr}% }{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}% }% \protect\@ordinalM{#1}{\@fc@ordstr}% }% }% \@fc@ordstr }} \newcommand*{\storeordinal}[2]{% \expandafter\protect\expandafter\storeordinalnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand*{\storeordinalnum}[2]{% \@ifnextchar[{\@storeordinalnum{#1}{#2}}{% \@storeordinalnum{#1}{#2}[m]}} \def\@storeordinalnum#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@ordinalF{#2}{\@fc@ord}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@ordinalN{#2}{\@fc@ord}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m or f}}% \protect\@ordinalM{#2}{\@fc@ord}}}% \expandafter\let\csname @fcs@#1\endcsname\@fc@ord} \newcommand*{\FMCuse}[1]{\csname @fcs@#1\endcsname} \newcommand*{\ordinalstring}[1]{% \expandafter\protect\expandafter\ordinalstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand{\ordinalstringnum}[1]{% \new@ifnextchar[{\@ordinal@string{#1}}{\@ordinal@string{#1}[m]}} \def\@ordinal@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@ordinalstringF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@ordinalstringN{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2' to \string\ordinalstring}{Available options are m, f or f}}% \protect\@ordinalstringM{#1}{\@fc@ordstr}}}\@fc@ordstr}} \newcommand*{\storeordinalstring}[2]{% \expandafter\protect\expandafter\storeordinalstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand*{\storeordinalstringnum}[2]{% \@ifnextchar[{\@store@ordinal@string{#1}{#2}}{% \@store@ordinal@string{#1}{#2}[m]}} \def\@store@ordinal@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@ordinalstringF{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@ordinalstringN{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3' to \string\ordinalstring}{Available options are m, f or n}}% \protect\@ordinalstringM{#2}{\@fc@ordstr}}}% \expandafter\let\csname @fcs@#1\endcsname\@fc@ordstr} \newcommand*{\Ordinalstring}[1]{% \expandafter\protect\expandafter\Ordinalstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand*{\Ordinalstringnum}[1]{% \new@ifnextchar[{\@Ordinal@string{#1}}{\@Ordinal@string{#1}[m]}} \def\@Ordinal@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@OrdinalstringF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@OrdinalstringN{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}}% \protect\@OrdinalstringM{#1}{\@fc@ordstr}}}\@fc@ordstr}} \newcommand*{\storeOrdinalstring}[2]{% \expandafter\protect\expandafter\storeOrdinalstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand*{\storeOrdinalstringnum}[2]{% \@ifnextchar[{\@store@Ordinal@string{#1}{#2}}{% \@store@Ordinal@string{#1}{#2}[m]}} \def\@store@Ordinal@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@OrdinalstringF{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@OrdinalstringN{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m or f}}% \protect\@OrdinalstringM{#2}{\@fc@ordstr}}}% \expandafter\let\csname @fcs@#1\endcsname\@fc@ordstr} \newcommand*{\storeORDINALstring}[2]{% \expandafter\protect\expandafter\storeORDINALstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand*{\storeORDINALstringnum}[2]{% \@ifnextchar[{\@store@ORDINAL@string{#1}{#2}}{% \@store@ORDINAL@string{#1}{#2}[m]}} \def\@store@ORDINAL@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@ordinalstringF{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@ordinalstringN{#2}{\@fc@ordstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m or f}}% \protect\@ordinalstringM{#2}{\@fc@ordstr}}}% \expandafter\edef\csname @fcs@#1\endcsname{% \noexpand\MakeUppercase{\@fc@ordstr}}} \newcommand*{\ORDINALstring}[1]{% \expandafter\protect\expandafter\ORDINALstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand*{\ORDINALstringnum}[1]{% \new@ifnextchar[{\@ORDINAL@string{#1}}{\@ORDINAL@string{#1}[m]}} \def\@ORDINAL@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@ordinalstringF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@ordinalstringN{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}}% \protect\@ordinalstringM{#1}{\@fc@ordstr}}}% \MakeUppercase{\@fc@ordstr}}} \newcommand*{\storenumberstring}[2]{% \expandafter\protect\expandafter\storenumberstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand{\storenumberstringnum}[2]{% \@ifnextchar[{\@store@number@string{#1}{#2}}{% \@store@number@string{#1}{#2}[m]}} \def\@store@number@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@numberstringF{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@numberstringN{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m, f or n}}% \protect\@numberstringM{#2}{\@fc@numstr}}}% \expandafter\let\csname @fcs@#1\endcsname\@fc@numstr} \newcommand*{\numberstring}[1]{% \expandafter\protect\expandafter\numberstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand*{\numberstringnum}[1]{% \new@ifnextchar[{\@number@string{#1}}{\@number@string{#1}[m]}% } \def\@number@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@numberstringF{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@numberstringN{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}}% \protect\@numberstringM{#1}{\@fc@numstr}}}\@fc@numstr}} \newcommand*{\storeNumberstring}[2]{% \expandafter\protect\expandafter\storeNumberstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand{\storeNumberstringnum}[2]{% \@ifnextchar[{\@store@Number@string{#1}{#2}}{% \@store@Number@string{#1}{#2}[m]}} \def\@store@Number@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@NumberstringF{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@NumberstringN{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m, f or n}}% \protect\@NumberstringM{#2}{\@fc@numstr}}}% \expandafter\let\csname @fcs@#1\endcsname\@fc@numstr} \newcommand*{\Numberstring}[1]{% \expandafter\protect\expandafter\Numberstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand*{\Numberstringnum}[1]{% \new@ifnextchar[{\@Number@string{#1}}{\@Number@string{#1}[m]}} \def\@Number@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@NumberstringF{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@NumberstringN{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}}% \protect\@NumberstringM{#1}{\@fc@numstr}}}\@fc@numstr}} \newcommand{\storeNUMBERstring}[2]{% \expandafter\protect\expandafter\storeNUMBERstringnum{#1}{% \expandafter\the\csname c@#2\endcsname}} \newcommand{\storeNUMBERstringnum}[2]{% \@ifnextchar[{\@store@NUMBER@string{#1}{#2}}{% \@store@NUMBER@string{#1}{#2}[m]}} \def\@store@NUMBER@string#1#2[#3]{% \ifthenelse{\equal{#3}{f}}{% \protect\@numberstringF{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{n}}{% \protect\@numberstringN{#2}{\@fc@numstr}}{% \ifthenelse{\equal{#3}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#3'}{% Available options are m or f}}% \protect\@numberstringM{#2}{\@fc@numstr}}}% \expandafter\edef\csname @fcs@#1\endcsname{% \noexpand\MakeUppercase{\@fc@numstr}}} \newcommand*{\NUMBERstring}[1]{% \expandafter\protect\expandafter\NUMBERstringnum{% \expandafter\the\csname c@#1\endcsname}} \newcommand*{\NUMBERstringnum}[1]{% \new@ifnextchar[{\@NUMBER@string{#1}}{\@NUMBER@string{#1}[m]}} \def\@NUMBER@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% \protect\@numberstringF{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{n}}{% \protect\@numberstringN{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m, f or n}}% \protect\@numberstringM{#1}{\@fc@numstr}}}% \MakeUppercase{\@fc@numstr}}} \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{@ordinalMenglish}{\input{fc-english.def}}{} \def\@ordinalstringM{\@ordinalstringMenglish} \let\@ordinalstringF=\@ordinalstringMenglish \let\@ordinalstringN=\@ordinalstringMenglish \def\@OrdinalstringM{\@OrdinalstringMenglish} \let\@OrdinalstringF=\@OrdinalstringMenglish \let\@OrdinalstringN=\@OrdinalstringMenglish \def\@numberstringM{\@numberstringMenglish} \let\@numberstringF=\@numberstringMenglish \let\@numberstringN=\@numberstringMenglish \def\@NumberstringM{\@NumberstringMenglish} \let\@NumberstringF=\@NumberstringMenglish \let\@NumberstringN=\@NumberstringMenglish \def\@ordinalM{\@ordinalMenglish} \let\@ordinalF=\@ordinalM \let\@ordinalN=\@ordinalM } \def\@set@mulitling@fmtcount{% \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\@numberstringN{\@ifundefined{@numberstringN\languagename}{% \PackageError{fmtcount}{No support for language '\languagename'}{% The fmtcount package currently does not support language '\languagename' for command \string\@numberstringN}}{% \csname @numberstringN\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\@NumberstringN{\@ifundefined{@NumberstringN\languagename}{% \PackageError{fmtcount}{No support for language '\languagename'}{% The fmtcount package currently does not support language '\languagename' for command \string\@NumberstringN}}{% \csname @NumberstringN\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\@ordinalN{\@ifundefined{@ordinalN\languagename}{% \PackageError{fmtcount}{No support for language '\languagename'}{% The fmtcount package currently does not support language '\languagename' for command \string\@ordinalN}}{% \csname @ordinalN\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\@ordinalstringN{\@ifundefined{@ordinalstringN\languagename}{% \PackageError{fmtcount}{No support for language '\languagename'}{% The fmtcount package currently does not support language '\languagename' for command \string\@ordinalstringN}}{% \csname @ordinalstringN\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\@OrdinalstringN{\@ifundefined{@OrdinalstringN\languagename}{% \PackageError{fmtcount}{No support for language '\languagename'}{% The fmtcount package currently does not support language '\languagename' for command \string\@OrdinalstringN}}{% \csname @OrdinalstringN\languagename\endcsname}} } \@ifpackageloaded{babel}{% \ifthenelse{\equal{\languagename}{nohyphenation}\or \equal{languagename}{english}}{\@setdef@ultfmtcount}{% \@set@mulitling@fmtcount} }{% \@ifpackageloaded{ngerman}{% \@ifundefined{@numberstringMgerman}{% \input{fc-german.def}}{}\@set@mulitling@fmtcount}{% \@setdef@ultfmtcount}} \let\@ordinal=\@ordinalM \let\@ordinalstring=\@ordinalstringM \let\@Ordinalstring=\@OrdinalstringM \let\@numberstring=\@numberstringM \let\@Numberstring=\@NumberstringM \endinput %% %% End of file `fmtcount.sty'.