From c65c25c59074eaa09621f4fd782362b2c5227e32 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 24 Apr 2007 23:55:24 +0000 Subject: fmtcount 1.09 (24apr07) git-svn-id: svn://tug.org/texlive/trunk@4182 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/fmtcount/fc-english.def | 345 +++++++------ Master/texmf-dist/tex/latex/fmtcount/fc-french.def | 572 +++++++++++---------- .../texmf-dist/tex/latex/fmtcount/fc-portuges.def | 323 +++++++----- .../texmf-dist/tex/latex/fmtcount/fc-spanish.def | 266 +++++----- Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty | 223 ++++++-- 5 files changed, 1008 insertions(+), 721 deletions(-) (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-english.def b/Master/texmf-dist/tex/latex/fmtcount/fc-english.def index 4ee468d0dc5..2acb6582348 100644 --- a/Master/texmf-dist/tex/latex/fmtcount/fc-english.def +++ b/Master/texmf-dist/tex/latex/fmtcount/fc-english.def @@ -26,37 +26,37 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} -\ProvidesFile{fc-english}[2005/04/29] -\newcommand{\@ordinalMenglish}[1]{% +\ProvidesFile{fc-english}[2007/04/20] +\newcommand*{\@ordinalMenglish}[2]{% +\def\@fc@ord{}% \@orgargctr=#1\relax \@ordinalctr=#1% \@modulo{\@ordinalctr}{100}% -\ifnum\@ordinalctr=11 -\the\@orgargctr\fmtord{th}% +\ifnum\@ordinalctr=11\relax + \def\@fc@ord{th}% \else -\ifnum\@ordinalctr=12 -\the\@orgargctr\fmtord{th}% -\else -\ifnum\@ordinalctr=13 -\the\@orgargctr\fmtord{th}% -\else -\@modulo{\@ordinalctr}{10}% -\ifcase\@ordinalctr -\the\@orgargctr\fmtord{th}% case 0 -\or \the\@orgargctr\fmtord{st}% case 1 -\or \the\@orgargctr\fmtord{nd}% case 2 -\or \the\@orgargctr\fmtord{rd}% case 3 -\else -\the\@orgargctr\fmtord{th}% default case -\fi -\fi -\fi -\fi + \ifnum\@ordinalctr=12\relax + \def\@fc@ord{th}% + \else + \ifnum\@ordinalctr=13\relax + \def\@fc@ord{th}% + \else + \@modulo{\@ordinalctr}{10}% + \ifcase\@ordinalctr + \def\@fc@ord{th}% case 0 + \or \def\@fc@ord{st}% case 1 + \or \def\@fc@ord{nd}% case 2 + \or \def\@fc@ord{rd}% case 3 + \else + \def\@fc@ord{th}% default case + \fi + \fi + \fi +\fi +\edef#2{\number#1\relax\noexpand\fmtord{\@fc@ord}}% } \let\@ordinalFenglish=\@ordinalMenglish -\providecommand{\andname}{and} - -\newcommand{\@@unitstringenglish}[1]{% +\newcommand*{\@@unitstringenglish}[1]{% \ifcase#1\relax zero% \or one% @@ -70,8 +70,7 @@ zero% \or nine% \fi } - -\newcommand{\@@tenstringenglish}[1]{% +\newcommand*{\@@tenstringenglish}[1]{% \ifcase#1\relax \or ten% \or twenty% @@ -84,8 +83,7 @@ zero% \or ninety% \fi } - -\newcommand{\@@teenstringenglish}[1]{% +\newcommand*{\@@teenstringenglish}[1]{% \ifcase#1\relax ten% \or eleven% @@ -99,8 +97,7 @@ ten% \or nineteen% \fi } - -\newcommand{\@@Unitstringenglish}[1]{% +\newcommand*{\@@Unitstringenglish}[1]{% \ifcase#1\relax Zero% \or One% @@ -114,8 +111,7 @@ Zero% \or Nine% \fi } - -\newcommand{\@@Tenstringenglish}[1]{% +\newcommand*{\@@Tenstringenglish}[1]{% \ifcase#1\relax \or Ten% \or Twenty% @@ -128,8 +124,7 @@ Zero% \or Ninety% \fi } - -\newcommand{\@@Teenstringenglish}[1]{% +\newcommand*{\@@Teenstringenglish}[1]{% \ifcase#1\relax Ten% \or Eleven% @@ -143,8 +138,7 @@ Ten% \or Nineteen% \fi } - -\newcommand{\@@numberstringenglish}[1]{% +\newcommand*{\@@numberstringenglish}[2]{% \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% {This macro only works for values less than 100000}% @@ -156,70 +150,96 @@ you can try typing "minus" first, and then pass the modulus of this number}% \fi \fi +\def#2{}% \@strctr=#1\relax \divide\@strctr by 1000\relax \ifnum\@strctr>9 -\divide\@strctr by 10 -\ifnum\@strctr>1 -\@tenstring{\@strctr}% -\@strctr=#1 \divide\@strctr by 1000\relax -\@modulo{\@strctr}{10}% -\ifnum\@strctr>0 -\@unitstring{\@strctr}\fi -\else -\@strctr=#1\relax -\divide\@strctr by 1000 -\@modulo{\@strctr}{10}% -\@teenstring{\@strctr}% -\fi -\ \@thousand% + \divide\@strctr by 10 + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% + \@strctr=#1 \divide\@strctr by 1000\relax + \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr-\@unitstring{\@strctr}}% + \fi + \else + \@strctr=#1\relax + \divide\@strctr by 1000\relax + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@thousand}% \else -\ifnum\@strctr>0 \@unitstring{\@strctr}\ \@thousand\fi + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ \@thousand}% + \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% \divide\@strctr by 100 -\ifnum\@strctr>0 -\ifnum#1>1000 \ \fi\@unitstring{\@strctr}\ \@hundred% +\ifnum\@strctr>0\relax + \ifnum#1>1000\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ }% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ \@hundred}% \fi \@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum#1>100 \ifnum\@strctr>0 \ \andname\ \fi\fi -\ifnum\@strctr>19 -\divide\@strctr by 10 -\@tenstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr>0 --\@unitstring{\@strctr}% -\fi +\ifnum#1>100\relax + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname\ }% + \fi +\fi +\ifnum\@strctr>19\relax + \divide\@strctr by 10\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr-\@unitstring{\@strctr}}% + \fi \else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitstring{\@strctr}\fi -\else -\@unitstring{\@strctr}% -\fi -\else -\@modulo{\@strctr}{10}% -\@teenstring{\@strctr}% -\fi + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% + \fi \fi } - -\newcommand{\@numberstringMenglish}[1]{% +\DeclareRobustCommand{\@numberstringMenglish}[2]{% \let\@unitstring=\@@unitstringenglish \let\@teenstring=\@@teenstringenglish \let\@tenstring=\@@tenstringenglish \def\@hundred{hundred}\def\@thousand{thousand}% -\@@numberstringenglish{#1}} - +\def\@andname{and}% +\@@numberstringenglish{#1}{#2}% +} \let\@numberstringFenglish=\@numberstringMenglish - -\newcommand{\@NumberstringMenglish}[1]{% +\newcommand*{\@NumberstringMenglish}[2]{% \let\@unitstring=\@@Unitstringenglish \let\@teenstring=\@@Teenstringenglish \let\@tenstring=\@@Tenstringenglish \def\@hundred{Hundred}\def\@thousand{Thousand}% -\@@numberstringenglish{#1}} - +\def\@andname{and}% +\@@numberstringenglish{#1}{#2}} \let\@NumberstringFenglish=\@NumberstringMenglish -\newcommand{\@@unitthstringenglish}[1]{% +\newcommand*{\@@unitthstringenglish}[1]{% \ifcase#1\relax zeroth% \or first% @@ -233,8 +253,7 @@ zeroth% \or ninth% \fi } - -\newcommand{\@@tenthstringenglish}[1]{% +\newcommand*{\@@tenthstringenglish}[1]{% \ifcase#1\relax \or tenth% \or twentieth% @@ -247,8 +266,7 @@ zeroth% \or ninetieth% \fi } - -\newcommand{\@@teenthstringenglish}[1]{% +\newcommand*{\@@teenthstringenglish}[1]{% \ifcase#1\relax tenth% \or eleventh% @@ -262,8 +280,7 @@ tenth% \or nineteenth% \fi } - -\newcommand{\@@Unitthstringenglish}[1]{% +\newcommand*{\@@Unitthstringenglish}[1]{% \ifcase#1\relax Zeroth% \or First% @@ -277,8 +294,7 @@ Zeroth% \or Ninth% \fi } - -\newcommand{\@@Tenthstringenglish}[1]{% +\newcommand*{\@@Tenthstringenglish}[1]{% \ifcase#1\relax \or Tenth% \or Twentieth% @@ -291,8 +307,7 @@ Zeroth% \or Ninetieth% \fi } - -\newcommand{\@@Teenthstringenglish}[1]{% +\newcommand*{\@@Teenthstringenglish}[1]{% \ifcase#1\relax Tenth% \or Eleventh% @@ -306,8 +321,7 @@ Tenth% \or Nineteenth% \fi } - -\newcommand{\@@ordinalstringenglish}[1]{% +\newcommand*{\@@ordinalstringenglish}[2]{% \@strctr=#1\relax \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% @@ -319,88 +333,129 @@ Tenth% you can try typing "minus" first, and then pass the modulus of this number}% \fi +\def#2{}% \fi \@strctr=#1\relax \divide\@strctr by 1000\relax -\ifnum\@strctr>9 -\divide\@strctr by 10 -\ifnum\@strctr>1\relax - \@tenstring{\@strctr}% - \@strctr=#1\relax - \divide\@strctr by 1000\relax - \@modulo{\@strctr}{10}% - \ifnum\@strctr>0 -\@unitstring{\@strctr}\fi -\else - \@strctr=#1\relax \divide\@strctr by 1000\relax - \@modulo{\@strctr}{10}% - \@teenstring{\@strctr}% -\fi -\@strctr=#1\relax \@modulo{\@strctr}{1000}% -\ifnum\@strctr=0\ \@thousandth\else\ \@thousand \fi +\ifnum\@strctr>9\relax + \divide\@strctr by 10 + \ifnum\@strctr>1\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenstring{\@strctr}}% + \@strctr=#1\relax + \divide\@strctr by 1000\relax + \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr-\@unitstring{\@strctr}}% + \fi + \else + \@strctr=#1\relax \divide\@strctr by 1000\relax + \@modulo{\@strctr}{10}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenstring{\@strctr}}% + \fi + \@strctr=#1\relax \@modulo{\@strctr}{1000}% + \ifnum\@strctr=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousandth}% + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousand}% + \fi \else -\ifnum\@strctr>0\relax -\@unitstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{1000}% -\ifnum\@strctr=0\ \@thousandth\else\ \@thousand\fi -\fi + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{1000}% + \let\@@fc@ordstr#2\relax + \ifnum\@strctr=0\relax + \edef#2{\@@fc@ordstr\ \@thousandth}% + \else + \edef#2{\@@fc@ordstr\ \@thousand}% + \fi + \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% \divide\@strctr by 100 -\ifnum\@strctr>0 -\ifnum#1>1000 \ \fi\@unitstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum\@strctr=0\ \@hundredth\else\ \@hundred\fi +\ifnum\@strctr>0\relax + \ifnum#1>1000\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ }% + \fi + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{100}% + \let\@@fc@ordstr#2\relax + \ifnum\@strctr=0\relax + \edef#2{\@@fc@ordstr\ \@hundredth}% + \else + \edef#2{\@@fc@ordstr\ \@hundred}% + \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum#1>100 \ifnum\@strctr>0\ and \fi\fi -\ifnum\@strctr>19 -\@tmpstrctr=\@strctr -\divide\@strctr by 10 -\@modulo{\@tmpstrctr}{10}% -\ifnum\@tmpstrctr=0 \@tenthstring{\@strctr}\else \@tenstring{\@strctr}\fi -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr>0 --\@unitthstring{\@strctr}% -\fi -\else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitthstring{\@strctr}\fi +\ifnum#1>100\relax + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@andname\ }% + \fi +\fi +\ifnum\@strctr>19\relax + \@tmpstrctr=\@strctr + \divide\@strctr by 10\relax + \@modulo{\@tmpstrctr}{10}% + \let\@@fc@ordstr#2\relax + \ifnum\@tmpstrctr=0\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@strctr}}% + \else + \edef#2{\@@fc@ordstr\@tenstring{\@strctr}}% + \fi + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr-\@unitthstring{\@strctr}}% + \fi \else -\@unitthstring{\@strctr}% -\fi -\else -\@modulo{\@strctr}{10}% -\@teenthstring{\@strctr}% -\fi + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi + \else + \@modulo{\@strctr}{10}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenthstring{\@strctr}}% + \fi \fi } - -\newcommand{\@ordinalstringMenglish}[1]{% +\DeclareRobustCommand{\@ordinalstringMenglish}[2]{% \let\@unitthstring=\@@unitthstringenglish \let\@teenthstring=\@@teenthstringenglish \let\@tenthstring=\@@tenthstringenglish \let\@unitstring=\@@unitstringenglish \let\@teenstring=\@@teenstringenglish \let\@tenstring=\@@tenstringenglish +\def\@andname{and}% \def\@hundred{hundred}\def\@thousand{thousand}% \def\@hundredth{hundredth}\def\@thousandth{thousandth}% -\@@ordinalstringenglish{#1}} - +\@@ordinalstringenglish{#1}{#2}} \let\@ordinalstringFenglish=\@ordinalstringMenglish - -\newcommand{\@OrdinalstringMenglish}[1]{% +\DeclareRobustCommand{\@OrdinalstringMenglish}[2]{% \let\@unitthstring=\@@Unitthstringenglish \let\@teenthstring=\@@Teenthstringenglish \let\@tenthstring=\@@Tenthstringenglish \let\@unitstring=\@@Unitstringenglish \let\@teenstring=\@@Teenstringenglish \let\@tenstring=\@@Tenstringenglish +\def\@andname{and}% \def\@hundred{Hundred}\def\@thousand{Thousand}% \def\@hundredth{Hundredth}\def\@thousandth{Thousandth}% -\@@ordinalstringenglish{#1}} - +\@@ordinalstringenglish{#1}{#2}} \let\@OrdinalstringFenglish=\@OrdinalstringMenglish - \endinput %% %% End of file `fc-english.def'. diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-french.def b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def index f3a10c8fd81..eed31b8a63a 100644 --- a/Master/texmf-dist/tex/latex/fmtcount/fc-french.def +++ b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def @@ -26,8 +26,28 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} -\ProvidesFile{fc-french.def}[2005/04/29] -\newcommand{\@@unitstringfrench}[1]{% +\ProvidesFile{fc-french.def}[2007/04/20] +\newcommand*{\@ordinalMfrench}[2]{% +\iffmtord@abbrv + \edef#2{\number#1\relax\noexpand\fmtord{e}}% +\else + \ifnum#1=1\relax + \edef#2{\number#1\relax\noexpand\fmtord{er}}% + \else + \edef#2{\number#1\relax\noexpand\fmtord{eme}}% + \fi +\fi} +\newcommand*{\@ordinalFfrench}[2]{% +\iffmtord@abbrv + \edef#2{\number#1\relax\noexpand\fmtord{e}}% +\else + \ifnum#1=1\relax + \edef#2{\number#1\relax\noexpand\fmtord{ere}}% + \else + \edef#2{\number#1\relax\noexpand\fmtord{eme}}% + \fi +\fi} +\newcommand*{\@@unitstringfrench}[1]{% \ifcase#1\relax zero% \or un% @@ -41,15 +61,13 @@ zero% \or neuf% \fi } - -\newcommand{\@@unitstringFfrench}[1]{% +\newcommand*{\@@unitstringFfrench}[1]{% \ifnum#1=1\relax une% \else\@@unitstringfrench{#1}% \fi } - -\newcommand{\@@tenstringfrench}[1]{% +\newcommand*{\@@tenstringfrench}[1]{% \ifcase#1\relax \or dix% \or vingt% @@ -63,8 +81,7 @@ une% \or cent% \fi } - -\newcommand{\@@teenstringfrench}[1]{% +\newcommand*{\@@teenstringfrench}[1]{% \ifcase#1\relax dix% \or onze% @@ -78,8 +95,7 @@ dix% \or dix-neuf% \fi } - -\newcommand{\@@seventiesfrench}[1]{% +\newcommand*{\@@seventiesfrench}[1]{% \@tenstring{6}% \ifnum#1=1\relax \ \@andname\ @@ -88,8 +104,7 @@ dix% \fi \@teenstring{#1}% } - -\newcommand{\@@eightiesfrench}[1]{% +\newcommand*{\@@eightiesfrench}[1]{% \@unitstring{4}-\@tenstring{2}% \ifnum#1>0 -\@unitstring{#1}% @@ -97,33 +112,28 @@ dix% s% \fi } - -\newcommand{\@@ninetiesfrench}[1]{% +\newcommand*{\@@ninetiesfrench}[1]{% \@unitstring{4}-\@tenstring{2}-\@teenstring{#1}% } - -\newcommand{\@@seventiesfrenchswiss}[1]{% +\newcommand*{\@@seventiesfrenchswiss}[1]{% \@tenstring{7}% \ifnum#1=1\ \@andname\ \fi \ifnum#1>1-\fi \ifnum#1>0\@unitstring{#1}\fi } - -\newcommand{\@@eightiesfrenchswiss}[1]{% +\newcommand*{\@@eightiesfrenchswiss}[1]{% \@tenstring{8}% \ifnum#1=1\ \@andname\ \fi \ifnum#1>1-\fi \ifnum#1>0\@unitstring{#1}\fi } - -\newcommand{\@@ninetiesfrenchswiss}[1]{% +\newcommand*{\@@ninetiesfrenchswiss}[1]{% \@tenstring{9}% \ifnum#1=1\ \@andname\ \fi \ifnum#1>1-\fi \ifnum#1>0\@unitstring{#1}\fi } - -\newcommand{\@@Unitstringfrench}[1]{% +\newcommand*{\@@Unitstringfrench}[1]{% \ifcase#1\relax Zero% \or Un% @@ -137,15 +147,13 @@ Zero% \or Neuf% \fi } - -\newcommand{\@@UnitstringFfrench}[1]{% +\newcommand*{\@@UnitstringFfrench}[1]{% \ifnum#1=1\relax Une% \else \@@Unitstringfrench{#1}% \fi } - -\newcommand{\@@Tenstringfrench}[1]{% +\newcommand*{\@@Tenstringfrench}[1]{% \ifcase#1\relax \or Dix% \or Vingt% @@ -159,8 +167,7 @@ Une% \or Cent% \fi } - -\newcommand{\@@Teenstringfrench}[1]{% +\newcommand*{\@@Teenstringfrench}[1]{% \ifcase#1\relax Dix% \or Onze% @@ -174,8 +181,7 @@ Dix% \or Dix-Neuf% \fi } - -\newcommand{\@numberstringMfrenchswiss}[1]{% +\DeclareRobustCommand{\@numberstringMfrenchswiss}[2]{% \let\@unitstring=\@@unitstringfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -184,9 +190,8 @@ Dix% \let\@nineties=\@@ninetiesfrenchswiss \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@numberstringMfrenchfrance}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@numberstringMfrenchfrance}[2]{% \let\@unitstring=\@@unitstringfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -195,9 +200,8 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@numberstringMfrenchbelgian}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@numberstringMfrenchbelgian}[2]{% \let\@unitstring=\@@unitstringfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -206,11 +210,9 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - +\@@numberstringfrench{#1}{#2}} \let\@numberstringMfrench=\@numberstringMfrenchfrance - -\newcommand{\@numberstringFfrenchswiss}[1]{% +\DeclareRobustCommand{\@numberstringFfrenchswiss}[2]{% \let\@unitstring=\@@unitstringFfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -219,9 +221,8 @@ Dix% \let\@nineties=\@@ninetiesfrenchswiss \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@numberstringFfrenchfrance}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@numberstringFfrenchfrance}[2]{% \let\@unitstring=\@@unitstringFfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -230,9 +231,8 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@numberstringFfrenchbelgian}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@numberstringFfrenchbelgian}[2]{% \let\@unitstring=\@@unitstringFfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench @@ -241,11 +241,9 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{cent}\def\@thousand{mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - +\@@numberstringfrench{#1}{#2}} \let\@numberstringFfrench=\@numberstringFfrenchfrance - -\newcommand{\@NumberstringMfrenchswiss}[1]{% +\DeclareRobustCommand{\@NumberstringMfrenchswiss}[2]{% \let\@unitstring=\@@Unitstringfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -254,9 +252,8 @@ Dix% \let\@nineties=\@@ninetiesfrenchswiss \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@NumberstringMfrenchfrance}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@NumberstringMfrenchfrance}[2]{% \let\@unitstring=\@@Unitstringfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -265,9 +262,8 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@NumberstringMfrenchbelgian}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@NumberstringMfrenchbelgian}[2]{% \let\@unitstring=\@@Unitstringfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -276,11 +272,9 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - +\@@numberstringfrench{#1}{#2}} \let\@NumberstringMfrench=\@NumberstringMfrenchfrance - -\newcommand{\@NumberstringFfrenchswiss}[1]{% +\DeclareRobustCommand{\@NumberstringFfrenchswiss}[2]{% \let\@unitstring=\@@UnitstringFfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -289,9 +283,8 @@ Dix% \let\@nineties=\@@ninetiesfrenchswiss \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@NumberstringFfrenchfrance}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@NumberstringFfrenchfrance}[2]{% \let\@unitstring=\@@UnitstringFfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -300,9 +293,8 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - -\newcommand{\@NumberstringFfrenchbelgian}[1]{% +\@@numberstringfrench{#1}{#2}} +\DeclareRobustCommand{\@NumberstringFfrenchbelgian}[2]{% \let\@unitstring=\@@UnitstringFfrench \let\@teenstring=\@@Teenstringfrench \let\@tenstring=\@@Tenstringfrench @@ -311,13 +303,11 @@ Dix% \let\@nineties=\@@ninetiesfrench \def\@hundred{Cent}\def\@thousand{Mille}% \def\@andname{et}% -\@@numberstringfrench{#1}} - +\@@numberstringfrench{#1}{#2}} \let\@NumberstringFfrench=\@NumberstringFfrenchfrance - -\newcommand{\@ordinalstringMfrenchswiss}[1]{% +\DeclareRobustCommand{\@ordinalstringMfrenchswiss}[2]{% \ifnum#1=1\relax -premier% +\def#2{premier}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringfrench @@ -334,12 +324,11 @@ premier% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@ordinalstringMfrenchfrance}[1]{% +\DeclareRobustCommand{\@ordinalstringMfrenchfrance}[2]{% \ifnum#1=1\relax -premier% +\def#2{premier}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringfrench @@ -357,12 +346,11 @@ premier% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@ordinalstringMfrenchbelgian}[1]{% +\DeclareRobustCommand{\@ordinalstringMfrenchbelgian}[2]{% \ifnum#1=1\relax -premier% +\def#2{premier}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringfrench @@ -380,14 +368,12 @@ premier% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - \let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance - -\newcommand{\@ordinalstringFfrenchswiss}[1]{% +\DeclareRobustCommand{\@ordinalstringFfrenchswiss}[2]{% \ifnum#1=1\relax -premi\`ere% +\def#2{premi\`ere}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringFfrench @@ -404,12 +390,11 @@ premi\`ere% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@ordinalstringFfrenchfrance}[1]{% +\DeclareRobustCommand{\@ordinalstringFfrenchfrance}[2]{% \ifnum#1=1\relax -premi\`ere% +\def#2{premi\`ere}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringFfrench @@ -427,12 +412,11 @@ premi\`ere% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@ordinalstringFfrenchbelgian}[1]{% +\DeclareRobustCommand{\@ordinalstringFfrenchbelgian}[2]{% \ifnum#1=1\relax -premi\`ere% +\def#2{premi\`ere}% \else \let\@unitthstring=\@@unitthstringfrench \let\@unitstring=\@@unitstringFfrench @@ -450,14 +434,12 @@ premi\`ere% \def\@hundredth{centi\`eme}\def\@hundred{cent}% \def\@thousandth{mili\`eme}\def\@thousand{mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - \let\@ordinalstringFfrench=\@ordinalstringFfrenchfrance - -\newcommand{\@OrdinalstringMfrenchswiss}[1]{% +\DeclareRobustCommand{\@OrdinalstringMfrenchswiss}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@Unitstringfrench @@ -474,12 +456,11 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@OrdinalstringMfrenchfrance}[1]{% +\DeclareRobustCommand{\@OrdinalstringMfrenchfrance}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@Unitstringfrench @@ -497,12 +478,11 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@OrdinalstringMfrenchbelgian}[1]{% +\DeclareRobustCommand{\@OrdinalstringMfrenchbelgian}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@Unitstringfrench @@ -520,14 +500,12 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - \let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance - -\newcommand{\@OrdinalstringFfrenchswiss}[1]{% +\DeclareRobustCommand{\@OrdinalstringFfrenchswiss}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@UnitstringFfrench @@ -544,12 +522,11 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@OrdinalstringFfrenchfrance}[1]{% +\DeclareRobustCommand{\@OrdinalstringFfrenchfrance}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@UnitstringFfrench @@ -567,12 +544,11 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - -\newcommand{\@OrdinalstringFfrenchbelgian}[1]{% +\DeclareRobustCommand{\@OrdinalstringFfrenchbelgian}[2]{% \ifnum#1=1\relax -Premi\`ere% +\def#2{Premi\`ere}% \else \let\@unitthstring=\@@Unitthstringfrench \let\@unitstring=\@@UnitstringFfrench @@ -590,26 +566,10 @@ Premi\`ere% \def\@hundredth{Centi\`eme}\def\@hundred{Cent}% \def\@thousandth{Mili\`eme}\def\@thousand{Mille}% \def\@andname{et}% -\@@ordinalstringfrench{#1}% +\@@ordinalstringfrench{#1}{#2}% \fi} - \let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance - -\newcommand{\@ordinalMfrench}[1]{% -\iffmtord@abbrv -#1\fmtord{e}% -\else -#1\ifnum#1=1\fmtord{er}\else\fmtord{eme}\fi -\fi} - -\newcommand{\@ordinalFfrench}[1]{% -\iffmtord@abbrv -#1\fmtord{e}% -\else -#1\ifnum#1=1\fmtord{ere}\else\fmtord{eme}\fi -\fi} - -\newcommand{\@@unitthstringfrench}[1]{% +\newcommand*{\@@unitthstringfrench}[1]{% \ifcase#1\relax zero% \or uni\`eme% @@ -623,8 +583,7 @@ zero% \or neuvi\`eme% \fi } - -\newcommand{\@@tenthstringfrench}[1]{% +\newcommand*{\@@tenthstringfrench}[1]{% \ifcase#1\relax \or dixi\`eme% \or vingti\`eme% @@ -637,8 +596,7 @@ zero% \or nonenti\`eme% \fi } - -\newcommand{\@@teenthstringfrench}[1]{% +\newcommand*{\@@teenthstringfrench}[1]{% \ifcase#1\relax dixi\`eme% \or onzi\`eme% @@ -652,8 +610,7 @@ dixi\`eme% \or dix-neuvi\`eme% \fi } - -\newcommand{\@@seventiethsfrenchswiss}[1]{% +\newcommand*{\@@seventiethsfrenchswiss}[1]{% \ifcase#1\relax \@tenthstring{7}% \or @@ -661,8 +618,7 @@ dixi\`eme% \else \@tenstring{7}-\@unitthstring{#1}% \fi} - -\newcommand{\@@eightiethsfrenchswiss}[1]{% +\newcommand*{\@@eightiethsfrenchswiss}[1]{% \ifcase#1\relax \@tenthstring{8}% \or @@ -670,8 +626,7 @@ dixi\`eme% \else \@tenstring{8}-\@unitthstring{#1}% \fi} - -\newcommand{\@@ninetiethsfrenchswiss}[1]{% +\newcommand*{\@@ninetiethsfrenchswiss}[1]{% \ifcase#1\relax \@tenthstring{9}% \or @@ -679,8 +634,7 @@ dixi\`eme% \else \@tenstring{9}-\@unitthstring{#1}% \fi} - -\newcommand{\@@seventiethsfrench}[1]{% +\newcommand*{\@@seventiethsfrench}[1]{% \ifnum#1=0\relax \@tenstring{6}% -% @@ -690,8 +644,7 @@ dixi\`eme% \fi \@teenthstring{#1}% } - -\newcommand{\@@eightiethsfrench}[1]{% +\newcommand*{\@@eightiethsfrench}[1]{% \ifnum#1>0\relax \@unitstring{4}-\@tenstring{2}% -\@unitthstring{#1}% @@ -699,12 +652,10 @@ dixi\`eme% \@unitstring{4}-\@tenthstring{2}% \fi } - -\newcommand{\@@ninetiethsfrench}[1]{% +\newcommand*{\@@ninetiethsfrench}[1]{% \@unitstring{4}-\@tenstring{2}-\@teenthstring{#1}% } - -\newcommand{\@@Unitthstringfrench}[1]{% +\newcommand*{\@@Unitthstringfrench}[1]{% \ifcase#1\relax Zero% \or Uni\`eme% @@ -718,8 +669,7 @@ Zero% \or Neuvi\`eme% \fi } - -\newcommand{\@@Tenthstringfrench}[1]{% +\newcommand*{\@@Tenthstringfrench}[1]{% \ifcase#1\relax \or Dixi\`eme% \or Vingti\`eme% @@ -732,8 +682,7 @@ Zero% \or Nonenti\`eme% \fi } - -\newcommand{\@@Teenthstringfrench}[1]{% +\newcommand*{\@@Teenthstringfrench}[1]{% \ifcase#1\relax Dixi\`eme% \or Onzi\`eme% @@ -747,8 +696,7 @@ Dixi\`eme% \or Dix-Neuvi\`eme% \fi } - -\newcommand{\@@numberstringfrench}[1]{% +\newcommand*{\@@numberstringfrench}[2]{% \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% {This macro only works for values less than 100000}% @@ -760,101 +708,142 @@ you can try typing "minus" first, and then pass the modulus of this number}% \fi \fi +\def#2{}% \@strctr=#1\relax \divide\@strctr by 1000\relax -\ifnum\@strctr>9 +\ifnum\@strctr>9\relax \@tmpstrctr=\@strctr - \divide\@strctr by 10 - \ifnum\@strctr>1 + \divide\@strctr by 10\relax + \ifnum\@strctr>1\relax \ifthenelse{\(\@strctr>6\)\and\(\@strctr<10\)}{% \@modulo{\@tmpstrctr}{10}% \ifnum\@strctr<8\relax - \@seventies{\@tmpstrctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@seventies{\@tmpstrctr}}% \else \ifnum\@strctr<9\relax - \@eighties{\@tmpstrctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@eighties{\@tmpstrctr}}% \else - \ifnum\@strctr<10\@nineties{\@tmpstrctr}\fi + \ifnum\@strctr<10\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@nineties{\@tmpstrctr}}% + \fi \fi \fi }{% - \@tenstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% \@strctr=#1\relax \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% \ifnum\@strctr>0\relax - \ \@unitstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}% \fi }% \else \@strctr=#1\relax \divide\@strctr by 1000 \@modulo{\@strctr}{10}% - \@teenstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% \fi - \ \@thousand% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@thousand}% \else - \ifnum\@strctr>0 - \ifnum\@strctr>1\@unitstring{\@strctr}\ \fi - \@thousand + \ifnum\@strctr>0\relax + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ }% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@thousand}% \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% \divide\@strctr by 100 \ifnum\@strctr>0\relax - \ifnum#1>1000 \ \fi + \ifnum#1>1000\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ }% + \fi \@tmpstrctr=#1\relax \@modulo{\@tmpstrctr}{1000}\relax \ifnum\@tmpstrctr=100\relax - \@tenstring{10}\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{10}}% \else - \ifnum\@strctr>1\@unitstring{\@strctr}\ \fi - \@hundred + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ }% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@hundred}% \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{100}% \ifnum#1>100\relax \ifnum\@strctr>0\relax -\ % \ \@andname\ + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ }% \else - \ifnum\@tmpstrctr>0s\fi% + \ifnum\@tmpstrctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr s}% + \fi% \fi \fi -\ifnum\@strctr>19 -\@tmpstrctr=\@strctr -\divide\@strctr by 10 -\ifthenelse{\@strctr>6}{% -\@modulo{\@tmpstrctr}{10}% -\ifnum\@strctr<8 -\@seventies{\@tmpstrctr}% -\else -\ifnum\@strctr<9 -\@eighties{\@tmpstrctr}% -\else -\@nineties{\@tmpstrctr}% -\fi -\fi -}{% -\@tenstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr>0\relax - \ifnum\@strctr=1\ \@andname\ \else-\fi - \@unitstring{\@strctr}% -\fi -}% -\else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitstring{\@strctr}\fi -\else%(>0,<10) -\@unitstring{\@strctr}% -\fi -\else%>10 -\@modulo{\@strctr}{10}% -\@teenstring{\@strctr}% -\fi +\ifnum\@strctr>19\relax + \@tmpstrctr=\@strctr + \divide\@strctr by 10\relax + \ifthenelse{\@strctr>6}{% + \@modulo{\@tmpstrctr}{10}% + \ifnum\@strctr<8\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@seventies{\@tmpstrctr}}% + \else + \ifnum\@strctr<9\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@eighties{\@tmpstrctr}}% + \else + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@nineties{\@tmpstrctr}}% + \fi + \fi + }{% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \ifnum\@strctr=1\relax + \edef#2{\@@fc@numstr\ \@andname\ }% + \else + \edef#2{\@@fc@numstr-}% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + }% +\else + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else%(>0,<10) + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else%>10 + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% + \fi \fi } -\newcommand{\@@ordinalstringfrench}[1]{% +\newcommand*{\@@ordinalstringfrench}[2]{% \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% {This macro only works for values less than 100000}% @@ -866,6 +855,7 @@ you can try typing "minus" first, and then pass the modulus of this number}% \fi \fi +\def#2{}% \@strctr=#1\relax \divide\@strctr by 1000\relax \ifnum\@strctr>9 \@tmpstrctr=\@strctr @@ -874,85 +864,137 @@ this number}% \ifthenelse{\@strctr>6}{% \@modulo{\@tmpstrctr}{10}% \ifnum\@strctr=7\relax - \@seventies{\@tmpstrctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@seventies{\@tmpstrctr}}% \else \ifnum\@strctr=8\relax - \@eighties{\@tmpstrctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@eighties{\@tmpstrctr}}% \else - \@nineties{\@tmpstrctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@nineties{\@tmpstrctr}}% \fi \fi }{% - \@tenstring{\@strctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenstring{\@strctr}}% \@strctr=#1\relax \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% - \ifnum\@strctr=1\ \@andname\fi - \ifnum\@strctr>0\ \@unitstring{\@strctr}\fi + \ifnum\@strctr=1\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@andname}% + \fi + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@unitstring{\@strctr}}% + \fi }% \else \@strctr=#1\relax \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% - \@teenstring{\@strctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenstring{\@strctr}}% \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% - \ifnum\@strctr=0\ \@thousandth\else\ \@thousand \fi + \ifnum\@strctr=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousandth}% + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousand}% + \fi \else \ifnum\@strctr>0\relax - \@unitstring{\@strctr}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% \@strctr=#1\relax \@modulo{\@strctr}{1000}% - \ifnum\@strctr=0\ \@thousandth\else\ \@thousand\fi + \ifnum\@strctr=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousandth}% + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@thousand}% + \fi \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% -\divide\@strctr by 100 -\ifnum\@strctr>0 -\ifnum#1>1000 \ \fi\@unitstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum\@strctr=0\ \@hundredth\else\ \@hundred\fi +\divide\@strctr by 100\relax +\ifnum\@strctr>0\relax + \ifnum#1>1000\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ }% + \fi + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{100}% + \let\@@fc@ordstr#2\relax + \ifnum\@strctr=0\relax + \edef#2{\@@fc@ordstr\ \@hundredth}% + \else + \edef#2{\@@fc@ordstr\ \@hundred}% + \fi \fi \@tmpstrctr=\@strctr \@strctr=#1\relax \@modulo{\@strctr}{100}% \ifnum#1>100\relax -\ifnum\@strctr>0\ \@andname\ \fi\fi -\ifnum\@strctr>19 -\@tmpstrctr=\@strctr -\divide\@strctr by 10 -\@modulo{\@tmpstrctr}{10}% -\ifthenelse{\@strctr>6}{% -\ifnum\@strctr=7\relax -\@seventieths{\@tmpstrctr}% -\else -\ifnum\@strctr=8\relax -\@eightieths{\@tmpstrctr}% -\else -\@ninetieths{\@tmpstrctr}% -\fi -\fi -}{% -\ifnum\@tmpstrctr=0\relax - \@tenthstring{\@strctr}% -\else - \@tenstring{\@strctr}% -\fi -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr=1\ \@andname\fi -\ifnum\@strctr>0 -\ \@unitthstring{\@strctr}% -\fi -}% -\else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitthstring{\@strctr}\fi -\else -\@unitthstring{\@strctr}% -\fi -\else -\@modulo{\@strctr}{10}% -\@teenthstring{\@strctr}% + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@andname\ }% + \fi \fi +\ifnum\@strctr>19\relax + \@tmpstrctr=\@strctr + \divide\@strctr by 10\relax + \@modulo{\@tmpstrctr}{10}% + \ifthenelse{\@strctr>6}{% + \ifnum\@strctr=7\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@seventieths{\@tmpstrctr}}% + \else + \ifnum\@strctr=8\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@eightieths{\@tmpstrctr}}% + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@ninetieths{\@tmpstrctr}}% + \fi + \fi + }{% + \ifnum\@tmpstrctr=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@strctr}}% + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenstring{\@strctr}}% + \fi + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr=1\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@andname}% + \fi + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@unitthstring{\@strctr}}% + \fi + }% +\else + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi + \else + \@modulo{\@strctr}{10}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenthstring{\@strctr}}% + \fi \fi } \endinput diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def index 8a18ff3a74d..7f77a013c15 100644 --- a/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def +++ b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def @@ -26,13 +26,25 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} -\ProvidesFile{fc-portuges.def}[2005/04/29] -\newcommand{\@@unitstringportuges}[1]{% +\ProvidesFile{fc-portuges.def}[2007/04/20] +\newcommand*{\@ordinalMportuges}[2]{% +\ifnum#1=0\relax + \edef#2{\number#1}% +\else + \edef#2{\number#1\relax\noexpand\fmtord{o}}% +\fi} +\newcommand*{\@ordinalFportuges}[2]{% +\ifnum#1=0\relax + \edef#2{\number#1}% +\else + \edef#2{\number#1\relax\noexpand\fmtord{a}}% +\fi} +\newcommand*{\@@unitstringportuges}[1]{% \ifcase#1\relax zero% \or um% \or dois% -\or tr\`es% +\or tr\^es% \or quatro% \or cinco% \or seis% @@ -41,13 +53,12 @@ zero% \or nove% \fi } - -\newcommand{\@@unitstringFportuges}[1]{% +\newcommand*{\@@unitstringFportuges}[1]{% \ifcase#1\relax zero% \or uma% \or duas% -\or tr\`es% +\or tr\^es% \or quatro% \or cinco% \or seis% @@ -56,8 +67,7 @@ zero% \or nove% \fi } - -\newcommand{\@@tenstringportuges}[1]{% +\newcommand*{\@@tenstringportuges}[1]{% \ifcase#1\relax \or dez% \or vinte% @@ -71,8 +81,7 @@ zero% \or cem% \fi } - -\newcommand{\@@teenstringportuges}[1]{% +\newcommand*{\@@teenstringportuges}[1]{% \ifcase#1\relax dez% \or onze% @@ -86,8 +95,7 @@ dez% \or dezenove% \fi } - -\newcommand{\@@hundredstringportuges}[1]{% +\newcommand*{\@@hundredstringportuges}[1]{% \ifcase#1\relax \or cento% \or duzentos% @@ -99,10 +107,9 @@ dez% \or oitocentos% \or novecentos% \fi} - -\newcommand{\@@hundredstringFportuges}[1]{% +\newcommand*{\@@hundredstringFportuges}[1]{% \ifcase#1\relax -\or centa% +\or cento% \or duzentas% \or trezentas% \or quatrocentas% @@ -112,13 +119,12 @@ dez% \or oitocentas% \or novecentas% \fi} - -\newcommand{\@@Unitstringportuges}[1]{% +\newcommand*{\@@Unitstringportuges}[1]{% \ifcase#1\relax Zero% \or Um% \or Dois% -\or Tr\`es% +\or Tr\^es% \or Quatro% \or Cinco% \or Seis% @@ -127,13 +133,12 @@ Zero% \or Nove% \fi } - -\newcommand{\@@UnitstringFportuges}[1]{% +\newcommand*{\@@UnitstringFportuges}[1]{% \ifcase#1\relax Zera% \or Uma% \or Duas% -\or Tr\`es% +\or Tr\^es% \or Quatro% \or Cinco% \or Seis% @@ -142,8 +147,7 @@ Zera% \or Nove% \fi } - -\newcommand{\@@Tenstringportuges}[1]{% +\newcommand*{\@@Tenstringportuges}[1]{% \ifcase#1\relax \or Dez% \or Vinte% @@ -157,8 +161,7 @@ Zera% \or Cem% \fi } - -\newcommand{\@@Teenstringportuges}[1]{% +\newcommand*{\@@Teenstringportuges}[1]{% \ifcase#1\relax Dez% \or Onze% @@ -172,8 +175,7 @@ Dez% \or Dezenove% \fi } - -\newcommand{\@@Hundredstringportuges}[1]{% +\newcommand*{\@@Hundredstringportuges}[1]{% \ifcase#1\relax \or Cento% \or Duzentos% @@ -185,10 +187,9 @@ Dez% \or Oitocentos% \or Novecentos% \fi} - -\newcommand{\@@HundredstringFportuges}[1]{% +\newcommand*{\@@HundredstringFportuges}[1]{% \ifcase#1\relax -\or Centa% +\or Cento% \or Duzentas% \or Trezentas% \or Quatrocentas% @@ -198,85 +199,71 @@ Dez% \or Oitocentas% \or Novecentas% \fi} - -\newcommand{\@numberstringMportuges}[1]{% +\DeclareRobustCommand{\@numberstringMportuges}[2]{% \let\@unitstring=\@@unitstringportuges \let\@teenstring=\@@teenstringportuges \let\@tenstring=\@@tenstringportuges \let\@hundredstring=\@@hundredstringportuges \def\@hundred{cem}\def\@thousand{mil}% \def\@andname{e}% -\@@numberstringportuges{#1}} - -\newcommand{\@numberstringFportuges}[1]{% +\@@numberstringportuges{#1}{#2}} +\DeclareRobustCommand{\@numberstringFportuges}[2]{% \let\@unitstring=\@@unitstringFportuges \let\@teenstring=\@@teenstringportuges \let\@tenstring=\@@tenstringportuges \let\@hundredstring=\@@hundredstringFportuges \def\@hundred{cem}\def\@thousand{mil}% \def\@andname{e}% -\@@numberstringportuges{#1}} - -\newcommand{\@NumberstringMportuges}[1]{% +\@@numberstringportuges{#1}{#2}} +\DeclareRobustCommand{\@NumberstringMportuges}[2]{% \let\@unitstring=\@@Unitstringportuges \let\@teenstring=\@@Teenstringportuges \let\@tenstring=\@@Tenstringportuges \let\@hundredstring=\@@Hundredstringportuges \def\@hundred{Cem}\def\@thousand{Mil}% \def\@andname{e}% -\@@numberstringportuges{#1}} - -\newcommand{\@NumberstringFportuges}[1]{% +\@@numberstringportuges{#1}{#2}} +\DeclareRobustCommand{\@NumberstringFportuges}[2]{% \let\@unitstring=\@@UnitstringFportuges \let\@teenstring=\@@Teenstringportuges \let\@tenstring=\@@Tenstringportuges \let\@hundredstring=\@@HundredstringFportuges \def\@hundred{Cem}\def\@thousand{Mil}% \def\@andname{e}% -\@@numberstringportuges{#1}} - -\newcommand{\@ordinalstringMportuges}[1]{% +\@@numberstringportuges{#1}{#2}} +\DeclareRobustCommand{\@ordinalstringMportuges}[2]{% \let\@unitthstring=\@@unitthstringportuges \let\@unitstring=\@@unitstringportuges \let\@teenthstring=\@@teenthstringportuges \let\@tenthstring=\@@tenthstringportuges \let\@hundredthstring=\@@hundredthstringportuges \def\@thousandth{mil\'esimo}% -\@@ordinalstringportuges{#1}} - -\newcommand{\@ordinalstringFportuges}[1]{% +\@@ordinalstringportuges{#1}{#2}} +\DeclareRobustCommand{\@ordinalstringFportuges}[2]{% \let\@unitthstring=\@@unitthstringFportuges \let\@unitstring=\@@unitstringFportuges \let\@teenthstring=\@@teenthstringportuges \let\@tenthstring=\@@tenthstringFportuges \let\@hundredthstring=\@@hundredthstringFportuges \def\@thousandth{mil\'esima}% -\@@ordinalstringportuges{#1}} - -\newcommand{\@OrdinalstringMportuges}[1]{% +\@@ordinalstringportuges{#1}{#2}} +\DeclareRobustCommand{\@OrdinalstringMportuges}[2]{% \let\@unitthstring=\@@Unitthstringportuges \let\@unitstring=\@@Unitstringportuges \let\@teenthstring=\@@teenthstringportuges \let\@tenthstring=\@@Tenthstringportuges \let\@hundredthstring=\@@Hundredthstringportuges \def\@thousandth{Mil\'esimo}% -\@@ordinalstringportuges{#1}} - -\newcommand{\@OrdinalstringFportuges}[1]{% +\@@ordinalstringportuges{#1}{#2}} +\DeclareRobustCommand{\@OrdinalstringFportuges}[2]{% \let\@unitthstring=\@@UnitthstringFportuges \let\@unitstring=\@@UnitstringFportuges \let\@teenthstring=\@@teenthstringportuges \let\@tenthstring=\@@TenthstringFportuges \let\@hundredthstring=\@@HundredthstringFportuges \def\@thousandth{Mil\'esima}% -\@@ordinalstringportuges{#1}} - -\newcommand{\@ordinalMportuges}[1]{% -#1\ifnum#1=0\else\fmtord{o}\fi} -\newcommand{\@ordinalFportuges}[1]{% -#1\ifnum#1=0\else\fmtord{a}\fi} - -\newcommand{\@@unitthstringportuges}[1]{% +\@@ordinalstringportuges{#1}{#2}} +\newcommand*{\@@unitthstringportuges}[1]{% \ifcase#1\relax zero% \or primeiro% @@ -290,8 +277,7 @@ zero% \or nono% \fi } - -\newcommand{\@@tenthstringportuges}[1]{% +\newcommand*{\@@tenthstringportuges}[1]{% \ifcase#1\relax \or d\'ecimo% \or vig\'esimo% @@ -304,14 +290,12 @@ zero% \or nonag\'esimo% \fi } - -\newcommand{\@@teenthstringportuges}[1]{% +\newcommand*{\@@teenthstringportuges}[1]{% \@tenthstring{1}% \ifnum#1>0\relax -\@unitthstring{#1}% \fi} - -\newcommand{\@@hundredthstringportuges}[1]{% +\newcommand*{\@@hundredthstringportuges}[1]{% \ifcase#1\relax \or cent\'esimo% \or ducent\'esimo% @@ -323,8 +307,7 @@ zero% \or octingent\'esimo% \or nongent\'esimo% \fi} - -\newcommand{\@@unitthstringFportuges}[1]{% +\newcommand*{\@@unitthstringFportuges}[1]{% \ifcase#1\relax zero% \or primeira% @@ -338,8 +321,7 @@ zero% \or nona% \fi } - -\newcommand{\@@tenthstringFportuges}[1]{% +\newcommand*{\@@tenthstringFportuges}[1]{% \ifcase#1\relax \or d\'ecima% \or vig\'esima% @@ -352,8 +334,7 @@ zero% \or nonag\'esima% \fi } - -\newcommand{\@@hundredthstringFportuges}[1]{% +\newcommand*{\@@hundredthstringFportuges}[1]{% \ifcase#1\relax \or cent\'esima% \or ducent\'esima% @@ -365,8 +346,7 @@ zero% \or octingent\'esima% \or nongent\'esima% \fi} - -\newcommand{\@@Unitthstringportuges}[1]{% +\newcommand*{\@@Unitthstringportuges}[1]{% \ifcase#1\relax Zero% \or Primeiro% @@ -380,8 +360,7 @@ Zero% \or Nono% \fi } - -\newcommand{\@@Tenthstringportuges}[1]{% +\newcommand*{\@@Tenthstringportuges}[1]{% \ifcase#1\relax \or D\'ecimo% \or Vig\'esimo% @@ -394,8 +373,7 @@ Zero% \or Nonag\'esimo% \fi } - -\newcommand{\@@Hundredthstringportuges}[1]{% +\newcommand*{\@@Hundredthstringportuges}[1]{% \ifcase#1\relax \or Cent\'esimo% \or Ducent\'esimo% @@ -407,8 +385,7 @@ Zero% \or Octingent\'esimo% \or Nongent\'esimo% \fi} - -\newcommand{\@@UnitthstringFportuges}[1]{% +\newcommand*{\@@UnitthstringFportuges}[1]{% \ifcase#1\relax Zera% \or Primeira% @@ -422,8 +399,7 @@ Zera% \or Nona% \fi } - -\newcommand{\@@TenthstringFportuges}[1]{% +\newcommand*{\@@TenthstringFportuges}[1]{% \ifcase#1\relax \or D\'ecima% \or Vig\'esima% @@ -436,8 +412,7 @@ Zera% \or Nonag\'esima% \fi } - -\newcommand{\@@HundredthstringFportuges}[1]{% +\newcommand*{\@@HundredthstringFportuges}[1]{% \ifcase#1\relax \or Cent\'esima% \or Ducent\'esima% @@ -449,7 +424,7 @@ Zera% \or Octingent\'esima% \or Nongent\'esima% \fi} -\newcommand{\@@numberstringportuges}[1]{% +\newcommand*{\@@numberstringportuges}[2]{% \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% {This macro only works for values less than 100000}% @@ -461,63 +436,102 @@ you can try typing "minus" first, and then pass the modulus of this number}% \fi \fi +\def#2{}% \@strctr=#1\relax \divide\@strctr by 1000\relax \ifnum\@strctr>9 \divide\@strctr by 10 - \ifnum\@strctr>1 - \@tenstring{\@strctr}% + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% \@strctr=#1 \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% \ifnum\@strctr>0 - \ifnum\@strctr=1\ \@andname\fi - \ \@unitstring{\@strctr}% + \ifnum\@strctr=1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname}% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}% \fi \else \@strctr=#1\relax \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% - \@teenstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% \fi - \ \@thousand% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@thousand}% \else - \ifnum\@strctr>0 - \ifnum\@strctr>1\@unitstring{\@strctr}\ \fi - \@thousand + \ifnum\@strctr>0\relax + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ }% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@thousand}% \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% -\divide\@strctr by 100 -\ifnum\@strctr>0 -\ifnum#1>1000 \ \fi -\@tmpstrctr=#1\relax -\@modulo{\@tmpstrctr}{1000}% -\ifnum\@tmpstrctr=100\@tenstring{10}\else\@hundredstring{\@strctr}\fi% +\divide\@strctr by 100\relax +\ifnum\@strctr>0\relax + \ifnum#1>1000 \relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ }% + \fi + \@tmpstrctr=#1\relax + \@modulo{\@tmpstrctr}{1000}% + \let\@@fc@numstr#2\relax + \ifnum\@tmpstrctr=100\relax + \edef#2{\@@fc@numstr\@tenstring{10}}% + \else + \edef#2{\@@fc@numstr\@hundredstring{\@strctr}}% + \fi% \fi \@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum#1>100 \ifnum\@strctr>0\ \@andname\ \fi\fi -\ifnum\@strctr>19 -\divide\@strctr by 10 -\@tenstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr>0 -\ifnum\@strctr=1\ \@andname\else\ifnum#1>100\ \@andname\fi\fi -\ \@unitstring{\@strctr}% +\ifnum#1>100\relax + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname\ }% + \fi \fi +\ifnum\@strctr>19\relax + \divide\@strctr by 10\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr>0 + \ifnum\@strctr=1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname}% + \else + \ifnum#1>100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname}% + \fi + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}% + \fi \else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitstring{\@strctr}\fi -\else%(>0,<10) -\@unitstring{\@strctr}% -\fi -\else%>10 -\@modulo{\@strctr}{10}% -\@teenstring{\@strctr}% -\fi + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else%(>0,<10) + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else%>10 + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% + \fi \fi } - -\newcommand{\@@ordinalstringportuges}[1]{% +\newcommand*{\@@ordinalstringportuges}[2]{% \@strctr=#1\relax \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% @@ -529,6 +543,7 @@ this number}% you can try typing "minus" first, and then pass the modulus of this number}% \else +\def#2{}% \ifnum\@strctr>999\relax \divide\@strctr by 1000\relax \ifnum\@strctr>1\relax @@ -536,43 +551,67 @@ this number}% \@tmpstrctr=\@strctr \ifnum\@strctr<20 \@modulo{\@tmpstrctr}{10}% - \@teenthstring{\@tmpstrctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenthstring{\@tmpstrctr}}% \else \divide\@tmpstrctr by 10\relax - \@tenthstring{\@tmpstrctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@tmpstrctr}}% \@tmpstrctr=\@strctr \@modulo{\@tmpstrctr}{10}% - \ifnum\@tmpstrctr>0\@unitthstring{\@tmpstrctr} \fi + \ifnum\@tmpstrctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@tmpstrctr}}% + \fi \fi \else - \@unitstring{\@strctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% \fi \fi - \@thousandth + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@thousandth}% \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% \ifnum\@strctr>99\relax -\@tmpstrctr=\@strctr -\divide\@tmpstrctr by 100\relax -\ifnum#1>1000-\fi -\@hundredthstring{\@tmpstrctr}% + \@tmpstrctr=\@strctr + \divide\@tmpstrctr by 100\relax + \ifnum#1>1000\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr-}% + \fi + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@hundredthstring{\@tmpstrctr}}% \fi \@modulo{\@strctr}{100}% -\ifnum#1>99\ifnum\@strctr>0-\fi\fi +\ifnum#1>99\relax + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr-}% + \fi +\fi \ifnum\@strctr>9\relax -\@tmpstrctr=\@strctr -\divide\@tmpstrctr by 10\relax -\@tenthstring{\@tmpstrctr}% -\@tmpstrctr=\@strctr -\@modulo{\@tmpstrctr}{10}% -\ifnum\@tmpstrctr>0-\@unitthstring{\@tmpstrctr}\fi -\else -\ifnum\@strctr=0\relax -\ifnum#1=0\@unitstring{0}\fi + \@tmpstrctr=\@strctr + \divide\@tmpstrctr by 10\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@tmpstrctr}}% + \@tmpstrctr=\@strctr + \@modulo{\@tmpstrctr}{10}% + \ifnum\@tmpstrctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr-\@unitthstring{\@tmpstrctr}}% + \fi \else -\@unitthstring{\@strctr}% -\fi + \ifnum\@strctr=0\relax + \ifnum#1=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{0}}% + \fi + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi \fi \fi \fi diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def b/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def index b0315393ae2..04ac0992327 100644 --- a/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def +++ b/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def @@ -26,7 +26,11 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} -\ProvidesFile{fc-spanish.def}[2005/04/29] +\ProvidesFile{fc-spanish.def}[2007/04/20] +\newcommand{\@ordinalMspanish}[2]{% +\edef#2{\number#1\relax\noexpand\fmtord{o}}} +\newcommand{\@ordinalFspanish}[2]{% +\edef#2{\number#1\relax\noexpand\fmtord{a}}} \newcommand{\@@unitstringspanish}[1]{% \ifcase#1\relax cero% @@ -41,7 +45,6 @@ cero% \or nueve% \fi } - \newcommand{\@@unitstringFspanish}[1]{% \ifcase#1\relax cera% @@ -56,7 +59,6 @@ cera% \or nueve% \fi } - \newcommand{\@@tenstringspanish}[1]{% \ifcase#1\relax \or diez% @@ -71,7 +73,6 @@ cera% \or cien% \fi } - \newcommand{\@@teenstringspanish}[1]{% \ifcase#1\relax diez% @@ -86,7 +87,6 @@ diez% \or diecinueve% \fi } - \newcommand{\@@twentystringspanish}[1]{% \ifcase#1\relax veinte% @@ -100,7 +100,6 @@ veinte% \or veintiocho% \or veintinueve% \fi} - \newcommand{\@@twentystringFspanish}[1]{% \ifcase#1\relax veinte% @@ -114,7 +113,6 @@ veinte% \or veintiocho% \or veintinueve% \fi} - \newcommand{\@@hundredstringspanish}[1]{% \ifcase#1\relax \or ciento% @@ -127,7 +125,6 @@ veinte% \or ochocientos% \or novecientos% \fi} - \newcommand{\@@hundredstringFspanish}[1]{% \ifcase#1\relax \or cienta% @@ -140,7 +137,6 @@ veinte% \or ochocientas% \or novecientas% \fi} - \newcommand{\@@Unitstringspanish}[1]{% \ifcase#1\relax Cero% @@ -155,7 +151,6 @@ Cero% \or Nueve% \fi } - \newcommand{\@@UnitstringFspanish}[1]{% \ifcase#1\relax Cera% @@ -170,7 +165,6 @@ Cera% \or Nueve% \fi } - \newcommand{\@@Tenstringspanish}[1]{% \ifcase#1\relax \or Diez% @@ -185,7 +179,6 @@ Cera% \or Cien% \fi } - \newcommand{\@@Teenstringspanish}[1]{% \ifcase#1\relax Diez% @@ -200,7 +193,6 @@ Diez% \or Diecinueve% \fi } - \newcommand{\@@Twentystringspanish}[1]{% \ifcase#1\relax Veinte% @@ -214,7 +206,6 @@ Veinte% \or Veintiocho% \or Veintinueve% \fi} - \newcommand{\@@TwentystringFspanish}[1]{% \ifcase#1\relax Veinte% @@ -228,7 +219,6 @@ Veinte% \or Veintiocho% \or Veintinueve% \fi} - \newcommand{\@@Hundredstringspanish}[1]{% \ifcase#1\relax \or Ciento% @@ -241,7 +231,6 @@ Veinte% \or Ochocientos% \or Novecientos% \fi} - \newcommand{\@@HundredstringFspanish}[1]{% \ifcase#1\relax \or Cienta% @@ -254,8 +243,7 @@ Veinte% \or Ochocientas% \or Novecientas% \fi} - -\newcommand{\@numberstringMspanish}[1]{% +\DeclareRobustCommand{\@numberstringMspanish}[2]{% \let\@unitstring=\@@unitstringspanish \let\@teenstring=\@@teenstringspanish \let\@tenstring=\@@tenstringspanish @@ -263,9 +251,8 @@ Veinte% \let\@hundredstring=\@@hundredstringspanish \def\@hundred{cien}\def\@thousand{mil}% \def\@andname{y}% -\@@numberstringspanish{#1}} - -\newcommand{\@numberstringFspanish}[1]{% +\@@numberstringspanish{#1}{#2}} +\DeclareRobustCommand{\@numberstringFspanish}[2]{% \let\@unitstring=\@@unitstringFspanish \let\@teenstring=\@@teenstringspanish \let\@tenstring=\@@tenstringspanish @@ -273,9 +260,8 @@ Veinte% \let\@hundredstring=\@@hundredstringFspanish \def\@hundred{cien}\def\@thousand{mil}% \def\@andname{y}% -\@@numberstringspanish{#1}} - -\newcommand{\@NumberstringMspanish}[1]{% +\@@numberstringspanish{#1}{#2}} +\DeclareRobustCommand{\@NumberstringMspanish}[2]{% \let\@unitstring=\@@Unitstringspanish \let\@teenstring=\@@Teenstringspanish \let\@tenstring=\@@Tenstringspanish @@ -283,9 +269,8 @@ Veinte% \let\@hundredstring=\@@Hundredstringspanish \def\@andname{y}% \def\@hundred{Cien}\def\@thousand{Mil}% -\@@numberstringspanish{#1}} - -\newcommand{\@NumberstringFspanish}[1]{% +\@@numberstringspanish{#1}{#2}} +\DeclareRobustCommand{\@NumberstringFspanish}[2]{% \let\@unitstring=\@@UnitstringFspanish \let\@teenstring=\@@Teenstringspanish \let\@tenstring=\@@Tenstringspanish @@ -293,47 +278,39 @@ Veinte% \let\@hundredstring=\@@HundredstringFspanish \def\@andname{y}% \def\@hundred{Cien}\def\@thousand{Mil}% -\@@numberstringspanish{#1}} - -\newcommand{\@ordinalstringMspanish}[1]{% +\@@numberstringspanish{#1}{#2}} +\DeclareRobustCommand{\@ordinalstringMspanish}[2]{% \let\@unitthstring=\@@unitthstringspanish \let\@unitstring=\@@unitstringspanish \let\@teenthstring=\@@teenthstringspanish \let\@tenthstring=\@@tenthstringspanish \let\@hundredthstring=\@@hundredthstringspanish \def\@thousandth{mil\'esimo}% -\@@ordinalstringspanish{#1}} - -\newcommand{\@ordinalstringFspanish}[1]{% +\@@ordinalstringspanish{#1}{#2}} +\DeclareRobustCommand{\@ordinalstringFspanish}[2]{% \let\@unitthstring=\@@unitthstringFspanish \let\@unitstring=\@@unitstringFspanish \let\@teenthstring=\@@teenthstringFspanish \let\@tenthstring=\@@tenthstringFspanish \let\@hundredthstring=\@@hundredthstringFspanish \def\@thousandth{mil\'esima}% -\@@ordinalstringspanish{#1}} - -\newcommand{\@OrdinalstringMspanish}[1]{% +\@@ordinalstringspanish{#1}{#2}} +\DeclareRobustCommand{\@OrdinalstringMspanish}[2]{% \let\@unitthstring=\@@Unitthstringspanish \let\@unitstring=\@@Unitstringspanish \let\@teenthstring=\@@Teenthstringspanish \let\@tenthstring=\@@Tenthstringspanish \let\@hundredthstring=\@@Hundredthstringspanish \def\@thousandth{Mil\'esimo}% -\@@ordinalstringspanish{#1}} - -\newcommand{\@OrdinalstringFspanish}[1]{% +\@@ordinalstringspanish{#1}{#2}} +\DeclareRobustCommand{\@OrdinalstringFspanish}[2]{% \let\@unitthstring=\@@UnitthstringFspanish \let\@unitstring=\@@UnitstringFspanish \let\@teenthstring=\@@TeenthstringFspanish \let\@tenthstring=\@@TenthstringFspanish \let\@hundredthstring=\@@HundredthstringFspanish \def\@thousandth{Mil\'esima}% -\@@ordinalstringspanish{#1}} - -\newcommand{\@ordinalMspanish}[1]{#1\fmtord{o}} -\newcommand{\@ordinalFspanish}[1]{#1\fmtord{a}} - +\@@ordinalstringspanish{#1}{#2}} \newcommand{\@@unitthstringspanish}[1]{% \ifcase#1\relax cero% @@ -348,7 +325,6 @@ cero% \or noveno% \fi } - \newcommand{\@@tenthstringspanish}[1]{% \ifcase#1\relax \or d\'ecimo% @@ -362,7 +338,6 @@ cero% \or nonag\'esimo% \fi } - \newcommand{\@@teenthstringspanish}[1]{% \ifcase#1\relax d\'ecimo% @@ -377,7 +352,6 @@ d\'ecimo% \or decimonoveno% \fi } - \newcommand{\@@hundredthstringspanish}[1]{% \ifcase#1\relax \or cent\'esimo% @@ -390,7 +364,6 @@ d\'ecimo% \or octingent\'esimo% \or noningent\'esimo% \fi} - \newcommand{\@@unitthstringFspanish}[1]{% \ifcase#1\relax cera% @@ -405,7 +378,6 @@ cera% \or novena% \fi } - \newcommand{\@@tenthstringFspanish}[1]{% \ifcase#1\relax \or d\'ecima% @@ -419,7 +391,6 @@ cera% \or nonag\'esima% \fi } - \newcommand{\@@teenthstringFspanish}[1]{% \ifcase#1\relax d\'ecima% @@ -434,7 +405,6 @@ d\'ecima% \or decimonovena% \fi } - \newcommand{\@@hundredthstringFspanish}[1]{% \ifcase#1\relax \or cent\'esima% @@ -447,7 +417,6 @@ d\'ecima% \or octingent\'esima% \or noningent\'esima% \fi} - \newcommand{\@@Unitthstringspanish}[1]{% \ifcase#1\relax Cero% @@ -462,7 +431,6 @@ Cero% \or Noveno% \fi } - \newcommand{\@@Tenthstringspanish}[1]{% \ifcase#1\relax \or D\'ecimo% @@ -476,7 +444,6 @@ Cero% \or Nonag\'esimo% \fi } - \newcommand{\@@Teenthstringspanish}[1]{% \ifcase#1\relax D\'ecimo% @@ -491,7 +458,6 @@ D\'ecimo% \or Decimonoveno% \fi } - \newcommand{\@@Hundredthstringspanish}[1]{% \ifcase#1\relax \or Cent\'esimo% @@ -504,7 +470,6 @@ D\'ecimo% \or Octingent\'esimo% \or Noningent\'esimo% \fi} - \newcommand{\@@UnitthstringFspanish}[1]{% \ifcase#1\relax Cera% @@ -519,7 +484,6 @@ Cera% \or Novena% \fi } - \newcommand{\@@TenthstringFspanish}[1]{% \ifcase#1\relax \or D\'ecima% @@ -533,7 +497,6 @@ Cera% \or Nonag\'esima% \fi } - \newcommand{\@@TeenthstringFspanish}[1]{% \ifcase#1\relax D\'ecima% @@ -548,7 +511,6 @@ D\'ecima% \or Decimonovena% \fi } - \newcommand{\@@HundredthstringFspanish}[1]{% \ifcase#1\relax \or Cent\'esima% @@ -562,7 +524,7 @@ D\'ecima% \or Noningent\'esima% \fi} -\newcommand{\@@numberstringspanish}[1]{% +\newcommand{\@@numberstringspanish}[2]{% \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% {This macro only works for values less than 100000}% @@ -574,64 +536,96 @@ you can try typing "minus" first, and then pass the modulus of this number}% \fi \fi +\def#2{}% \@strctr=#1\relax \divide\@strctr by 1000\relax \ifnum\@strctr>9 \divide\@strctr by 10 \ifnum\@strctr>1 - \@tenstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% \@strctr=#1 \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% - \ifnum\@strctr>0\ \@andname\ \@unitstring{\@strctr}\fi + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname\ \@unitstring{\@strctr}}% + \fi \else \@strctr=#1\relax \divide\@strctr by 1000\relax \@modulo{\@strctr}{10}% - \@teenstring{\@strctr}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% \fi - \ \@thousand% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@thousand}% \else - \ifnum\@strctr>0 - \ifnum\@strctr>1\@unitstring{\@strctr}\ \fi - \@thousand + \ifnum\@strctr>0\relax + \ifnum\@strctr>1\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}\ }% + \fi + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@thousand}% \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% -\divide\@strctr by 100 -\ifnum\@strctr>0 -\ifnum#1>1000\ \fi -\@tmpstrctr=#1\relax -\@modulo{\@tmpstrctr}{1000}% -\ifnum\@tmpstrctr=100\@tenstring{10}\else\@hundredstring{\@strctr}\fi% +\divide\@strctr by 100\relax +\ifnum\@strctr>0\relax + \ifnum#1>1000\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ }% + \fi + \@tmpstrctr=#1\relax + \@modulo{\@tmpstrctr}{1000}% + \ifnum\@tmpstrctr=100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{10}}% + \else + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@hundredstring{\@strctr}}% + \fi \fi \@strctr=#1\relax \@modulo{\@strctr}{100}% -\ifnum#1>100 \ifnum\@strctr>0\ \@andname\ \fi\fi -\ifnum\@strctr>29 -\divide\@strctr by 10 -\@tenstring{\@strctr}% -\@strctr=#1\relax \@modulo{\@strctr}{10}% -\ifnum\@strctr>0 -\ \@andname\ \@unitstring{\@strctr}% -\fi -\else -\ifnum\@strctr<10 -\ifnum\@strctr=0 -\ifnum#1<100 \@unitstring{\@strctr}\fi -\else -\@unitstring{\@strctr}% +\ifnum#1>100\relax + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname\ }% + \fi \fi +\ifnum\@strctr>29\relax + \divide\@strctr by 10\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@tenstring{\@strctr}}% + \@strctr=#1\relax \@modulo{\@strctr}{10}% + \ifnum\@strctr>0\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\ \@andname\ \@unitstring{\@strctr}}% + \fi \else -\ifnum\@strctr>19 -\@modulo{\@strctr}{10}% -\@twentystring{\@strctr}% -\else -\@modulo{\@strctr}{10}% -\@teenstring{\@strctr}% -\fi -\fi + \ifnum\@strctr<10\relax + \ifnum\@strctr=0\relax + \ifnum#1<100\relax + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@unitstring{\@strctr}}% + \fi + \else + \ifnum\@strctr>19\relax + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@twentystring{\@strctr}}% + \else + \@modulo{\@strctr}{10}% + \let\@@fc@numstr#2\relax + \edef#2{\@@fc@numstr\@teenstring{\@strctr}}% + \fi + \fi \fi } - -\newcommand{\@@ordinalstringspanish}[1]{% +\newcommand{\@@ordinalstringspanish}[2]{% \@strctr=#1\relax \ifnum#1>99999 \PackageError{fmtcount}{Out of range}% @@ -643,6 +637,7 @@ this number}% you can try typing "minus" first, and then pass the modulus of this number}% \else +\def#2{}% \ifnum\@strctr>999\relax \divide\@strctr by 1000\relax \ifnum\@strctr>1\relax @@ -650,48 +645,73 @@ this number}% \@tmpstrctr=\@strctr \ifnum\@strctr<20 \@modulo{\@tmpstrctr}{10}% - \@teenthstring{\@tmpstrctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenthstring{\@tmpstrctr}}% \else \divide\@tmpstrctr by 10\relax - \@tenthstring{\@tmpstrctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@tmpstrctr}}% \@tmpstrctr=\@strctr \@modulo{\@tmpstrctr}{10}% - \ifnum\@tmpstrctr>0\@unitthstring{\@tmpstrctr} \fi + \ifnum\@tmpstrctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@tmpstrctr}}% + \fi \fi \else - \@unitstring{\@strctr} + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}% \fi \fi - \@thousandth + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@thousandth}% \fi \@strctr=#1\relax \@modulo{\@strctr}{1000}% \ifnum\@strctr>99\relax -\@tmpstrctr=\@strctr -\divide\@tmpstrctr by 100\relax -\ifnum#1>1000\ \fi -\@hundredthstring{\@tmpstrctr}% + \@tmpstrctr=\@strctr + \divide\@tmpstrctr by 100\relax + \ifnum#1>1000\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ }% + \fi + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@hundredthstring{\@tmpstrctr}}% \fi \@modulo{\@strctr}{100}% -\ifnum#1>99\ifnum\@strctr>0\ \fi\fi +\ifnum#1>99\relax + \ifnum\@strctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ }% + \fi +\fi \ifnum\@strctr>19\relax -\@tmpstrctr=\@strctr -\divide\@tmpstrctr by 10\relax -\@tenthstring{\@tmpstrctr}% -\@tmpstrctr=\@strctr -\@modulo{\@tmpstrctr}{10}% -\ifnum\@tmpstrctr>0\ \@unitthstring{\@tmpstrctr}\fi -\else -\ifnum\@strctr>9 -\@modulo{\@strctr}{10}% -\@teenthstring{\@strctr}% -\else -\ifnum\@strctr=0\relax -\ifnum#1=0\@unitstring{0}\fi + \@tmpstrctr=\@strctr + \divide\@tmpstrctr by 10\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@tenthstring{\@tmpstrctr}}% + \@tmpstrctr=\@strctr + \@modulo{\@tmpstrctr}{10}% + \ifnum\@tmpstrctr>0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\ \@unitthstring{\@tmpstrctr}}% + \fi \else -\@unitthstring{\@strctr}% -\fi -\fi + \ifnum\@strctr>9\relax + \@modulo{\@strctr}{10}% + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@teenthstring{\@strctr}}% + \else + \ifnum\@strctr=0\relax + \ifnum#1=0\relax + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitstring{0}}% + \fi + \else + \let\@@fc@ordstr#2\relax + \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}% + \fi + \fi \fi \fi \fi diff --git a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty index 9ca97952fb5..61a1428756a 100644 --- a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty +++ b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty @@ -27,7 +27,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fmtcount}[2007/01/06 v1.06] +\ProvidesPackage{fmtcount}[2007/04/20 v1.09] \RequirePackage{ifthen} \RequirePackage{keyval} \providecommand{\fmtord}[1]{\textsuperscript{#1}} @@ -318,86 +318,217 @@ or `user'}}} \space already defined use \string\FCordinal \space instead.}} \newcommand{\ordinalnum}[1]{\@ifnextchar[{\@ordinalnum{#1}}{% \@ordinalnum{#1}[m]}} - -\def\@ordinalnum#1[#2]{% +\def\@ordinalnum#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% -\protect\@ordinalF{#1}}{% +\protect\@ordinalF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2'}{% Available options are m or f}}% -\protect\@ordinalM{#1}}} - +\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}{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]{% \@ifnextchar[{\@ordinal@string{#1}}{\@ordinal@string{#1}[m]}} - -\def\@ordinal@string#1[#2]{% +\def\@ordinal@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% -\protect\@ordinalstringF{#1}}{% +\protect\@ordinalstringF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% \PackageError{fmtcount}{Invalid gender option `#2' to \string\ordinalstring}{Available options are m or f}}% -\protect\@ordinalstringM{#1}}} - +\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}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#3' to +\string\ordinalstring}{Available options are m or f}}% +\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]{% \@ifnextchar[{\@Ordinal@string{#1}}{\@Ordinal@string{#1}[m]}} - -\def\@Ordinal@string#1[#2]{% +\def\@Ordinal@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% -\protect\@OrdinalstringF{#1}}{% +\protect\@OrdinalstringF{#1}{\@fc@ordstr}}{% \ifthenelse{\equal{#2}{m}}{}{% -\PackageError{fmtcount}{Invalid gender option `#2' to -\string\Ordinalstring}{Available options are m or f}}% -\protect\@OrdinalstringM{#1}}} - +\PackageError{fmtcount}{Invalid gender option `#2'}{% +Available options are m 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}{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}{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]{% +\@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}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2'}{% +Available options are m or f}}% +\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}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#3'}{% +Available options are m or f}}% +\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]{% \@ifnextchar[{\@number@string{#1}}{\@number@string{#1}[m]}} - -\def\@number@string#1[#2]{% +\def\@number@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% -\protect\@numberstringF{#1}}{% +\protect\@numberstringF{#1}{\@fc@numstr}}{% \ifthenelse{\equal{#2}{m}}{}{% -\PackageError{fmtcount}{Invalid gender option `#2' to -\string\numberstring}{Available options are m or f}}% -\protect\@numberstringM{#1}}} - +\PackageError{fmtcount}{Invalid gender option `#2'}{% +Available options are m or f}}% +\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}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#3'}{% +Available options are m or f}}% +\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]{% \@ifnextchar[{\@Number@string{#1}}{\@Number@string{#1}[m]}} - -\def\@Number@string#1[#2]{% +\def\@Number@string#1[#2]{{% \ifthenelse{\equal{#2}{f}}{% -\protect\@NumberstringF{#1}}{% +\protect\@NumberstringF{#1}{\@fc@numstr}}{% \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}} +\PackageError{fmtcount}{Invalid gender option `#2'}{% +Available options are m or f}}% +\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}{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]{% +\@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}{m}}{}{% +\PackageError{fmtcount}{Invalid gender option `#2'}{% +Available options are m or f}}% +\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{@ordinalenglish}{\input{fc-english.def}}{} +\@ifundefined{@ordinalMenglish}{\input{fc-english.def}}{} \def\@ordinalstringM{\@ordinalstringMenglish} \let\@ordinalstringF=\@ordinalstringMenglish \def\@OrdinalstringM{\@OrdinalstringMenglish} -- cgit v1.2.3