%%
%% This is file `fmtcount.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% fmtcount.dtx  (with options: `fmtcount.sty,package')
%% Copyright (C) 2007 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}[2007/01/06 v1.06]
\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\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
\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
\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}%
\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]{\@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'}{%
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}

\@ifpackageloaded{babel}{
\ifthenelse{\equal{\languagename}{nohyphenation}\or\equal{languagename}{english}}{\@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}}
}}{%
\@setdef@ultfmtcount}
\let\@ordinal=\@ordinalM
\let\@ordinalstring=\@ordinalstringM
\let\@Ordinalstring=\@OrdinalstringM
\let\@numberstring=\@numberstringM
\let\@Numberstring=\@NumberstringM
\endinput
%%
%% End of file `fmtcount.sty'.
