%% %% 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 2015 Nicola Talbot and Vincent Belaïche %% %% 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 and Vincent Belaïche. %% %% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty. %% %% \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 \~} %%\subsection{Prefixes} %%\label{sec:latin-prefixes} %% %%\begin{definition}[\DescribeMacro{\latinnumeralstring}] %%\cs{latinnumeralstring}\marg{counter}\oarg{prefix options} %%\end{definition} %% %%\begin{definition}[\DescribeMacro{\latinnumeralstringnum}] %%\cs{latinnumeralstringnum}\marg{number}\oarg{prefix options} %%\end{definition} %% Local Variables: %% coding: utf-8 %% End: \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{fmtcount}[2015/05/05 v3.01] \RequirePackage{ifthen} \RequirePackage{xkeyval} \RequirePackage{etoolbox} \RequirePackage{fcprefix} \RequirePackage{ifxetex} \RequirePackage{amsgen} \providecommand*{\fc@orddef@ult}[1]{\fc@textsuperscript{#1}} \providecommand*{\fc@ord@multiling}[1]{% \ifcsundef{fc@\languagename @alias@of}{% \fc@orddef@ult{#1}}{% \expandafter\let\expandafter\@tempa\csname fc@\languagename @alias@of\endcsname \ifcsundef{fc@ord@\@tempa}{% \fc@orddef@ult{#1}}{% \csname fc@ord@\@tempa\endcsname{#1}}}} \newcount\c@padzeroesN \c@padzeroesN=1\relax \providecommand*{\padzeroes}[1][17]{\c@padzeroesN=#1} \newcount\fc@tmpcatcode \def\fc@languages{}% \def\fc@mainlang{}% \newcommand*{\FCloadlang}[1]{% \@FC@iflangloaded{#1}{}% {% \fc@tmpcatcode=\catcode`\@\relax \catcode `\@ 11\relax \InputIfFileExists{fc-#1.def}% {% \ifdefempty{\fc@languages}% {% \gdef\fc@languages{#1}% }% {% \gappto\fc@languages{,#1}% }% \gdef\fc@mainlang{#1}% }% {}% \catcode `\@ \fc@tmpcatcode\relax }% } \newcommand{\@FC@iflangloaded}[3]{% \ifcsundef{ver@fc-#1.def}{#3}{#2}% } \newcommand*{\ProvidesFCLanguage}[1]{% \ProvidesFile{fc-#1.def}% } \newif\iffmtcount@language@option \fmtcount@language@optionfalse \newcommand*\fc@supported@language@list{% english,% UKenglish,% british,% USenglish,% american,% spanish,% portuges,% french,% frenchb,% francais,% german,% germanb,% ngerman,% ngermanb,% italian} \newcommand*\fc@iterate@on@languages[1]{% \ifx\fc@supported@language@list\@empty \PackageError{fmtcount}{Macro `\protect\@fc@iterate@on@languages' is empty}{You should never get here: Something is broken within \texttt{fmtcount}, please report the issue on \texttt{https://github.com/search?q=fmtcount\&ref=cmdform\&type=Issues}}% \else \let\fc@iterate@on@languages@body#1 \expandafter\@fc@iterate@on@languages\fc@supported@language@list,\@nil,% \fi } \def\@fc@iterate@on@languages#1,{% {% \def\@tempa{#1}% \ifx\@tempa\@nnil \let\@tempa\@empty \else \def\@tempa{% \fc@iterate@on@languages@body{#1}% \@fc@iterate@on@languages }% \fi \expandafter }\@tempa }% \newcommand*{\@fc@loadifbabelorpolyglossialdf}[1]{% \ifxetex \IfFileExists{gloss-#1.ldf}{\ifcsundef{#1@loaded}{}{\FCloadlang{#1}}}{}% \else \ifcsundef{ver@#1.ldf}{}{\FCloadlang{#1}}% \fi } \fc@iterate@on@languages\@fc@loadifbabelorpolyglossialdf \def\fc@iterate@on@languages@body#1{% \expandafter\def\csname fc@#1@alias@of\endcsname{#1}} \expandafter\@fc@iterate@on@languages\fc@supported@language@list,\@nil,% \def\@tempa#1#2{% \expandafter\def\csname fc@#1@alias@of\endcsname{#2}% }% \@tempa{frenchb}{french} \@tempa{francais}{french} \@tempa{germanb}{german} \@tempa{ngermanb}{german} \@tempa{ngerman}{german} \@tempa{british}{english} \@tempa{american}{USenglish} \def\fc@iterate@on@languages@body#1{% \define@key{fmtcount}{#1}[]{% \@FC@iflangloaded{#1}% {% \setkeys{fc\csname fc@#1@alias@of\endcsname}{##1}% }{% \PackageError{fmtcount}% {Language `#1' not defined}% {You need to load \ifxetex polyglossia\else babel\fi\space before loading fmtcount}% }% }% \ifthenelse{\equal{\csname fc@#1@alias@of\endcsname}{#1}}{% \define@key{fc\csname fc@#1@alias@of\endcsname}{fmtord}{% \ifthenelse{\equal{##1}{raise}\or\equal{##1}{level}}{% \expandafter\let\expandafter\@tempa\csname fc@set@ord@as@##1\endcsname \expandafter\@tempa\csname fc@ord@#1\endcsname }{% \ifthenelse{\equal{##1}{undefine}}{% \expandafter\let\csname fc@ord@#1\endcsname\undefined }{% \PackageError{fmtcount}% {Invalid value `##1' to fmtord key}% {Option `fmtord' can only take the values `level', `raise' or `undefine'}% }} }% }{% \expandafter\let\expandafter\@tempa\csname KV@\csname fc@#1@alias@of\endcsname @fmtord\endcsname \expandafter\let\csname KV@#1@fmtord\endcsname\@tempa }% } \expandafter\@fc@iterate@on@languages\fc@supported@language@list,\@nil,% \def\fc@set@ord@as@level#1{% \def#1##1{##1}% } \def\fc@set@ord@as@raise#1{% \let#1\fc@textsuperscript } \define@key{fmtcount}{fmtord}{% \ifthenelse{\equal{#1}{level} \or\equal{#1}{raise}}% {% \csname fc@set@ord@as@#1\endcsname\fc@orddef@ult \def\fmtcount@fmtord{#1}% }% {% \PackageError{fmtcount}% {Invalid value `#1' to fmtord key}% {Option `fmtord' can only take the values `level' or `raise'}% }% } \newif\iffmtord@abbrv \fmtord@abbrvtrue \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 `abbrv' can only take the values `true' or `false'}% }% } \define@key{fmtcount}{prefix}[scale=long]{% \RequirePackage{fmtprefix}% \fmtprefixsetoption{#1}% } \def\fmtcountsetoptions{% \def\fmtcount@fmtord{}% \setkeys{fmtcount}}% \InputIfFileExists{fmtcount.cfg}% {% \PackageInfo{fmtcount}{Using configuration file fmtcount.cfg}% }% {% } \newcommand*{\fmtcount@loaded@by@option@lang@list}{} \newcommand*\@fc@declare@language@option[1]{% \DeclareOption{#1}{% \ifx\fmtcount@loaded@by@option@lang@list\@empty \def\fmtcount@loaded@by@option@lang@list{#1}% \else \edef\fmtcount@loaded@by@option@lang@list{\fmtcount@loaded@by@option@lang@list,#1}% \fi }}% \fc@iterate@on@languages\@fc@declare@language@option \DeclareOption{level}{\def\fmtcount@fmtord{level}% \def\fc@orddef@ult#1{#1}} \DeclareOption{raise}{\def\fmtcount@fmtord{raise}% \def\fc@orddef@ult#1{\fc@textsuperscript{#1}}} \ProcessOptions\relax \ifx\fmtcount@loaded@by@option@lang@list\@empty\else \def\fc@iterate@on@languages@body#1{% \@FC@iflangloaded{#1}{}{% \fmtcount@language@optiontrue \FCloadlang{#1}% }} \expandafter\@fc@iterate@on@languages\fmtcount@loaded@by@option@lang@list,\@nil,% \fi \newcount\@DT@modctr \newcommand*{\@FCmodulo}[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}% } \ifcsundef{ordinal} {\let\ordinal\FCordinal}% {% \PackageWarning{fmtcount}% {\protect\ordinal \space already defined use \protect\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 \protect\ordinalstring}% {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' to \protect\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\protected@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{% \ifcsundef{@ordinalMenglish}{\FCloadlang{english}}{}% \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 \let\fmtord\fc@orddef@ult } \newcommand*{\fc@multiling}[2]{% \ifcsundef{@#1#2\languagename}% {% try loading it \FCloadlang{\languagename}% }% {% }% \ifcsundef{@#1#2\languagename}% {% \PackageWarning{fmtcount}% {No support for \expandafter\protect\csname #1\endcsname\space for language '\languagename'}% \ifthenelse{\equal{\languagename}{\fc@mainlang}}% {% \FCloadlang{english}% }% {% }% \ifcsdef{@#1#2\fc@mainlang}% {% \csuse{@#1#2\fc@mainlang}% }% {% \PackageWarningNoLine{fmtcount}% {No languages loaded at all! Loading english definitions}% \FCloadlang{english}% \def\fc@mainlang{english}% \csuse{@#1#2english}% }% }% {% \csuse{@#1#2\languagename}% }% } \def\@set@mulitling@fmtcount{% \def\@numberstringM{% \fc@multiling{numberstring}{M}% }% \def\@numberstringF{% \fc@multiling{numberstring}{F}% }% \def\@numberstringN{% \fc@multiling{numberstring}{N}% }% \def\@NumberstringM{% \fc@multiling{Numberstring}{M}% }% \def\@NumberstringF{% \fc@multiling{Numberstring}{F}% }% \def\@NumberstringN{% \fc@multiling{Numberstring}{N}% }% \def\@ordinalM{% \fc@multiling{ordinal}{M}% }% \def\@ordinalF{% \fc@multiling{ordinal}{F}% }% \def\@ordinalN{% \fc@multiling{ordinal}{N}% }% \def\@ordinalstringM{% \fc@multiling{ordinalstring}{M}% }% \def\@ordinalstringF{% \fc@multiling{ordinalstring}{F}% }% \def\@ordinalstringN{% \fc@multiling{ordinalstring}{N}% }% \def\@OrdinalstringM{% \fc@multiling{Ordinalstring}{M}% }% \def\@OrdinalstringF{% \fc@multiling{Ordinalstring}{F}% }% \def\@OrdinalstringN{% \fc@multiling{Ordinalstring}{N}% }% \let\fmtord\fc@ord@multiling } \expandafter\@ifpackageloaded \expandafter{\ifxetex polyglossia\else babel\fi}% {% \@set@mulitling@fmtcount }% {% \@ifpackageloaded{ngerman}% {% \FCloadlang{ngerman}% \@set@mulitling@fmtcount }% {% \iffmtcount@language@option \@set@mulitling@fmtcount \AtBeginDocument{% \ifcsundef{languagename}% {% \PackageWarning{fmtcount}{% `\protect\languagename' is undefined, you should use package babel/polyglossia when loading a language via package option. Reverting to default language. }% \@setdef@ultfmtcount }{% \@FC@iflangloaded{\languagename}{}{% \PackageWarning{fmtcount}{% Setting `\protect\languagename' to `\fc@mainlang'.\MessageBreak Reason is that `\protect\languagename' was `\languagename',\MessageBreak but `\languagename' was not loaded by fmtcount,\MessageBreak whereas `\fc@mainlang' was the last language loaded by fmtcount ; }% \let\languagename\fc@mainlang } }% } \else \@setdef@ultfmtcount \fi }% } \AtBeginDocument{% \ifcsundef{FBsupR}{\let\fc@textsuperscript\textsuperscript}{\let\fc@textsuperscript\fup}% } \let\@ordinal=\@ordinalM \let\@ordinalstring=\@ordinalstringM \let\@Ordinalstring=\@OrdinalstringM \let\@numberstring=\@numberstringM \let\@Numberstring=\@NumberstringM \iffalse Local variables: \fi \iffalse mode: docTeX \fi \iffalse End: \fi \endinput %% %% End of file `fmtcount.sty'.