summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/fmtcount/fc-french.def')
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-french.def1616
1 files changed, 876 insertions, 740 deletions
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-french.def b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
index dedfca9b0c3..2d268659dd4 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-french.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2009 Nicola Talbot
+%% Copyright 2012 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fmtcount.sty, fc-british.def, fc-english.def, fc-french.def, fc-german.def, fc-italian.def, fc-portuges.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fmtcount.perl, fc-lang.tex, fc-samp.tex.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fcnumparser.sty, fcprefix.sty, fmtcount.sty, 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-spanish.def, fc-UKenglish.def, fc-USenglish.def.
%%
%% \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
@@ -38,7 +38,156 @@
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
-\ProvidesFile{fc-french.def}[2007/05/26]
+%%\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}
+\ProvidesFCLanguage{french}[2012/06/18]
+\RequirePackage{fcprefix}
+\def\fc@french@set@plural#1#2#3#4#5#6{%
+ \ifthenelse{\equal{#2}{reformed}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{#3}%
+ }{%
+ \ifthenelse{\equal{#2}{traditional}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{#4}%
+ }{%
+ \ifthenelse{\equal{#2}{reformed o}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{#5}%
+ }{%
+ \ifthenelse{\equal{#2}{traditional o}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{#6}%
+ }{%
+ \ifthenelse{\equal{#2}{always}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{0}%
+ }{%
+ \ifthenelse{\equal{#2}{never}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{1}%
+ }{%
+ \ifthenelse{\equal{#2}{multiple}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{2}%
+ }{%
+ \ifthenelse{\equal{#2}{multiple g-last}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{3}%
+ }{%
+ \ifthenelse{\equal{#2}{multiple l-last}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{4}%
+ }{%
+ \ifthenelse{\equal{#2}{multiple lng-last}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{5}%
+ }{%
+ \ifthenelse{\equal{#2}{multiple ng-last}}{%
+ \expandafter\def\csname fc@frenchoptions@#1@plural\endcsname{6}%
+ }{%
+ \PackageError{fmtcount}{Unexpected argument}{%
+ `#2' was unexpected: french option `#1 plural' expects `reformed', `traditional',
+ `reformed o', `traditional o', `always', `never', `multiple', `multiple g-last',
+ `multiple l-last', `multiple lng-last', or `multiple ng-last'.%
+ }}}}}}}}}}}}}
+\def\@tempa#1#2#3{%
+ \define@key{fcfrench}{#1 plural}[reformed]{%
+ \fc@french@set@plural{#1}{##1}{#2}{#2}{#3}{#3}%
+ }%
+}
+\@tempa{vingt}{4}{5}
+\@tempa{cent}{4}{5}
+\@tempa{mil}{0}{0}
+\@tempa{n-illion}{2}{6}
+\@tempa{n-illiard}{2}{6}
+\define@key{fcfrench}{all plural}[reformed]{%
+ \csname KV@fcfrench@vingt plural\endcsname{#1}%
+ \csname KV@fcfrench@cent plural\endcsname{#1}%
+ \csname KV@fcfrench@mil plural\endcsname{#1}%
+ \csname KV@fcfrench@n-illion plural\endcsname{#1}%
+ \csname KV@fcfrench@n-illiard plural\endcsname{#1}%
+}
+\define@key{fcfrench}{dash or space}[reformed]{%
+ \ifthenelse{\equal{#1}{traditional}}{%
+ \let\fc@frenchoptions@supermillion@dos\space%
+ \let\fc@frenchoptions@submillion@dos\space
+ }{%
+ \ifthenelse{\equal{#1}{reformed}\or\equal{#1}{1990}}{%
+ \let\fc@frenchoptions@supermillion@dos\space
+ \def\fc@frenchoptions@submillion@dos{-}%
+ }{%
+ \ifthenelse{\equal{#1}{always}}{%
+ \def\fc@frenchoptions@supermillion@dos{-}%
+ \def\fc@frenchoptions@submillion@dos{-}%
+ }{%
+ \PackageError{fmtcount}{Unexpected argument}{%
+ French option `dash or space' expects `always', `reformed' or `traditional'
+ }
+ }%
+ }%
+ }%
+}
+\define@key{fcfrench}{scale}[recursive]{%
+ \ifthenelse{\equal{#1}{long}}{%
+ \let\fc@poweroften\fc@@pot@longscalefrench
+ }{%
+ \ifthenelse{\equal{#1}{recursive}}{%
+ \let\fc@poweroften\fc@@pot@recursivefrench
+ }{%
+ \ifthenelse{\equal{#1}{short}}{%
+ \let\fc@poweroften\fc@@pot@shortscalefrench
+ }{%
+ \PackageError{fmtcount}{Unexpected argument}{%
+ French option `scale' expects `long', `recursive' or `short'
+ }
+ }%
+ }%
+ }%
+}
+\define@key{fcfrench}{n-illiard upto}[infinity]{%
+ \ifthenelse{\equal{#1}{infinity}}{%
+ \def\fc@longscale@nilliard@upto{0}%
+ }{%
+ \ifthenelse{\equal{#1}{infty}}{%
+ \def\fc@longscale@nilliard@upto{0}%
+ }{%
+ \if Q\ifnum9<1#1Q\fi\else
+ \PackageError{fmtcount}{Unexpected argument}{%
+ French option `milliard threshold' expects `infinity', or equivalently `infty', or a non negative
+ integer.}%
+ \fi
+ \def\fc@longscale@nilliard@upto{#1}%
+ }}%
+}
+\def\@tempa#1{%
+ \define@key{fcfrench}{#1}[]{%
+ \PackageError{fmtcount}{Unexpected argument}{French option with key `#1' does not take
+ any value}}%
+ \expandafter\def\csname KV@fcfrench@#1@default\endcsname{%
+ \def\fmtcount@french{#1}}%
+}%
+\@tempa{france}\@tempa{swiss}\@tempa{belgian}%
+\define@key{fcfrench}{dialect}[france]{%
+ \ifthenelse{\equal{#1}{france}
+ \or\equal{#1}{swiss}
+ \or\equal{#1}{belgian}}{%
+ \def\fmtcount@french{#1}}{%
+ \PackageError{fmtcount}{Invalid value `#1' to french option dialect key}
+ {Option `french' can only take the values `france',
+ `belgian' or `swiss'}}}
+\define@key{fcfrench}{mil plural mark}[le]{%
+ \def\fc@frenchoptions@mil@plural@mark{#1}}
+\def\fc@UpperCaseFirstLetter#1#2\@nil{%
+ \uppercase{#1}#2}
+
+\def\fc@CaseIden#1\@nil{%
+ #1%
+}
+\def\fc@UpperCaseAll#1\@nil{%
+ \uppercase{#1}%
+}
+
+\let\fc@case\fc@CaseIden
+
\newcommand*{\@ordinalMfrench}[2]{%
\iffmtord@abbrv
\edef#2{\number#1\relax\noexpand\fmtord{e}}%
@@ -53,16 +202,17 @@
\iffmtord@abbrv
\edef#2{\number#1\relax\noexpand\fmtord{e}}%
\else
- \ifnum#1=1\relax
- \edef#2{\number#1\relax\noexpand\fmtord{ere}}%
+ \ifnum#1=1 %
+ \edef#2{\number#1\relax\noexpand\fmtord{i\`ere}}%
\else
- \edef#2{\number#1\relax\noexpand\fmtord{eme}}%
+ \edef#2{\number#1\relax\noexpand\fmtord{i\`eme}}%
\fi
\fi}
\let\@ordinalNfrench\@ordinalMfrench
\newcommand*{\@@unitstringfrench}[1]{%
-\ifcase#1\relax
-zero%
+\noexpand\fc@case
+\ifcase#1 %
+z\'ero%
\or un%
\or deux%
\or trois%
@@ -73,947 +223,933 @@ zero%
\or huit%
\or neuf%
\fi
-}
-\newcommand*{\@@unitstringFfrench}[1]{%
-\ifnum#1=1\relax
-une%
-\else\@@unitstringfrench{#1}%
-\fi
+\noexpand\@nil
}
\newcommand*{\@@tenstringfrench}[1]{%
-\ifcase#1\relax
+\noexpand\fc@case
+\ifcase#1 %
\or dix%
\or vingt%
\or trente%
\or quarante%
\or cinquante%
\or soixante%
-\or septente%
+\or septante%
\or huitante%
-\or nonente%
+\or nonante%
\or cent%
\fi
+\noexpand\@nil
}
\newcommand*{\@@teenstringfrench}[1]{%
-\ifcase#1\relax
-dix%
+\noexpand\fc@case
+\ifcase#1 %
+ dix%
\or onze%
\or douze%
\or treize%
\or quatorze%
\or quinze%
\or seize%
-\or dix-sept%
-\or dix-huit%
-\or dix-neuf%
+\or dix\noexpand\@nil-\noexpand\fc@case sept%
+\or dix\noexpand\@nil-\noexpand\fc@case huit%
+\or dix\noexpand\@nil-\noexpand\fc@case neuf%
\fi
+\noexpand\@nil
}
\newcommand*{\@@seventiesfrench}[1]{%
\@tenstring{6}%
-\ifnum#1=1\relax
-\ \@andname\
+\ifnum#1=1 %
+\fc@frenchoptions@submillion@dos\@andname\fc@frenchoptions@submillion@dos
\else
-%
\fi
\@teenstring{#1}%
}
-\newcommand*{\@@eightiesfrench}[1]{%
-\@unitstring{4}-\@tenstring{2}%
-\ifnum#1>0
--\@unitstring{#1}%
+\newcommand*\@@eightiesfrench[1]{%
+\fc@case quatre\@nil-\noexpand\fc@case vingt%
+\ifnum#1>0 %
+ \ifnum\fc@frenchoptions@vingt@plural=0 % vingt plural=always
+ s%
+ \fi
+ \noexpand\@nil
+ -\@unitstring{#1}%
\else
-s%
+ \ifcase\fc@frenchoptions@vingt@plural\space
+ s% 0: always
+ \or
+ % 1: never
+ \or
+ s% 2: multiple
+ \or
+ % 3: multiple g-last
+ \ifnum\count0=\count6\ifnum\count9=0 s\fi\fi
+ \or
+ % 4: multiple l-last
+ \ifnum\count9=1 %
+ \else
+ s%
+ \fi
+ \or
+ % 5: multiple lng-last
+ \ifnum\count9=1 %
+ \else
+ \ifnum\count0>0 %
+ s%
+ \fi
+ \fi
+ \or
+ % or 6: multiple ng-last
+ \ifnum\count0>0 %
+ s%
+ \fi
+ \fi
+ \noexpand\@nil
\fi
}
\newcommand*{\@@ninetiesfrench}[1]{%
-\@unitstring{4}-\@tenstring{2}-\@teenstring{#1}%
+\fc@case quatre\@nil-\noexpand\fc@case vingt%
+\ifnum\fc@frenchoptions@vingt@plural=0 % vingt plural=always
+ s%
+\fi
+\noexpand\@nil
+-\@teenstring{#1}%
}
\newcommand*{\@@seventiesfrenchswiss}[1]{%
\@tenstring{7}%
\ifnum#1=1\ \@andname\ \fi
\ifnum#1>1-\fi
-\ifnum#1>0\@unitstring{#1}\fi
+\ifnum#1>0 \@unitstring{#1}\fi
}
\newcommand*{\@@eightiesfrenchswiss}[1]{%
\@tenstring{8}%
\ifnum#1=1\ \@andname\ \fi
\ifnum#1>1-\fi
-\ifnum#1>0\@unitstring{#1}\fi
+\ifnum#1>0 \@unitstring{#1}\fi
}
\newcommand*{\@@ninetiesfrenchswiss}[1]{%
\@tenstring{9}%
\ifnum#1=1\ \@andname\ \fi
\ifnum#1>1-\fi
-\ifnum#1>0\@unitstring{#1}\fi
-}
-\newcommand*{\@@Unitstringfrench}[1]{%
-\ifcase#1\relax
-Zero%
-\or Un%
-\or Deux%
-\or Trois%
-\or Quatre%
-\or Cinq%
-\or Six%
-\or Sept%
-\or Huit%
-\or Neuf%
-\fi
-}
-\newcommand*{\@@UnitstringFfrench}[1]{%
-\ifnum#1=1\relax
-Une%
-\else \@@Unitstringfrench{#1}%
-\fi
-}
-\newcommand*{\@@Tenstringfrench}[1]{%
-\ifcase#1\relax
-\or Dix%
-\or Vingt%
-\or Trente%
-\or Quarante%
-\or Cinquante%
-\or Soixante%
-\or Septente%
-\or Huitante%
-\or Nonente%
-\or Cent%
-\fi
+\ifnum#1>0 \@unitstring{#1}\fi
}
-\newcommand*{\@@Teenstringfrench}[1]{%
-\ifcase#1\relax
-Dix%
-\or Onze%
-\or Douze%
-\or Treize%
-\or Quatorze%
-\or Quinze%
-\or Seize%
-\or Dix-Sept%
-\or Dix-Huit%
-\or Dix-Neuf%
-\fi
+\newcommand*\fc@french@common{%
+ \let\@unitstring=\@@unitstringfrench
+ \let\@teenstring=\@@teenstringfrench
+ \let\@tenstring=\@@tenstringfrench
+ \def\@hundred{cent}%
+ \def\@andname{et}%
}
\DeclareRobustCommand{\@numberstringMfrenchswiss}[2]{%
-\let\@unitstring=\@@unitstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@numberstringMfrenchfrance}[2]{%
-\let\@unitstring=\@@unitstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@numberstringMfrenchbelgian}[2]{%
-\let\@unitstring=\@@unitstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\let\@numberstringMfrench=\@numberstringMfrenchfrance
\DeclareRobustCommand{\@numberstringFfrenchswiss}[2]{%
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@numberstringFfrenchfrance}[2]{%
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@numberstringFfrenchbelgian}[2]{%
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenstring=\@@tenstringfrench
+\let\fc@case\fc@CaseIden
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{cent}\def\@thousand{mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\let\@numberstringFfrench=\@numberstringFfrenchfrance
\let\@ordinalstringNfrench\@ordinalstringMfrench
\DeclareRobustCommand{\@NumberstringMfrenchswiss}[2]{%
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@NumberstringMfrenchfrance}[2]{%
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@NumberstringMfrenchbelgian}[2]{%
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\@empty
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\let\@NumberstringMfrench=\@NumberstringMfrenchfrance
\DeclareRobustCommand{\@NumberstringFfrenchswiss}[2]{%
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@NumberstringFfrenchfrance}[2]{%
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\DeclareRobustCommand{\@NumberstringFfrenchbelgian}[2]{%
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenstring=\@@Tenstringfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\def\@hundred{Cent}\def\@thousand{Mille}%
-\def\@andname{et}%
+\let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble
+\let\fc@nbrstr@postamble\@empty
\@@numberstringfrench{#1}{#2}}
\let\@NumberstringFfrench=\@NumberstringFfrenchfrance
\let\@NumberstringNfrench\@NumberstringMfrench
\DeclareRobustCommand{\@ordinalstringMfrenchswiss}[2]{%
-\ifnum#1=1\relax
-\def#2{premier}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrenchswiss
-\let\@ninetieths=\@@ninetiethsfrenchswiss
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
+\newcommand*\fc@@firstfrench{premier}
+\newcommand*\fc@@firstFfrench{premi\`ere}
\DeclareRobustCommand{\@ordinalstringMfrenchfrance}[2]{%
-\ifnum#1=1\relax
-\def#2{premier}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrench
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@teenstringfrench
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
-\@@ordinalstringfrench{#1}{#2}%
-\fi}
+\@@ordinalstringfrench{#1}{#2}}
\DeclareRobustCommand{\@ordinalstringMfrenchbelgian}[2]{%
-\ifnum#1=1\relax
-\def#2{premier}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrenchswiss
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@teenstringfrench
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance
\DeclareRobustCommand{\@ordinalstringFfrenchswiss}[2]{%
-\ifnum#1=1\relax
-\def#2{premi\`ere}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrenchswiss
-\let\@ninetieths=\@@ninetiethsfrenchswiss
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstFfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@ordinalstringFfrenchfrance}[2]{%
-\ifnum#1=1\relax
-\def#2{premi\`ere}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrench
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstFfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@teenstringfrench
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@ordinalstringFfrenchbelgian}[2]{%
-\ifnum#1=1\relax
-\def#2{premi\`ere}%
-\else
-\let\@unitthstring=\@@unitthstringfrench
-\let\@unitstring=\@@unitstringFfrench
-\let\@teenthstring=\@@teenthstringfrench
-\let\@teenstring=\@@teenstringfrench
-\let\@tenthstring=\@@tenthstringfrench
-\let\@tenstring=\@@tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@CaseIden
+\let\fc@first=\fc@@firstFfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@teenstringfrench
-\def\@hundredth{centi\`eme}\def\@hundred{cent}%
-\def\@thousandth{mili\`eme}\def\@thousand{mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\let\@ordinalstringFfrench=\@ordinalstringFfrenchfrance
\let\@ordinalstringNfrench\@ordinalstringMfrench
\DeclareRobustCommand{\@OrdinalstringMfrenchswiss}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrenchswiss
-\let\@ninetieths=\@@ninetiethsfrenchswiss
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@OrdinalstringMfrenchfrance}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrench
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@Teenstringfrench
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@OrdinalstringMfrenchbelgian}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@Unitstringfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@Teenstringfrench
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance
\DeclareRobustCommand{\@OrdinalstringFfrenchswiss}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrenchswiss
-\let\@ninetieths=\@@ninetiethsfrenchswiss
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrenchswiss
\let\@eighties=\@@eightiesfrenchswiss
\let\@nineties=\@@ninetiesfrenchswiss
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@OrdinalstringFfrenchfrance}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrench
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstFfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@Teenstringfrench
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\DeclareRobustCommand{\@OrdinalstringFfrenchbelgian}[2]{%
-\ifnum#1=1\relax
-\def#2{Premi\`ere}%
-\else
-\let\@unitthstring=\@@Unitthstringfrench
-\let\@unitstring=\@@UnitstringFfrench
-\let\@teenthstring=\@@Teenthstringfrench
-\let\@teenstring=\@@Teenstringfrench
-\let\@tenthstring=\@@Tenthstringfrench
-\let\@tenstring=\@@Tenstringfrench
-\let\@seventieths=\@@seventiethsfrenchswiss
-\let\@eightieths=\@@eightiethsfrench
-\let\@ninetieths=\@@ninetiethsfrench
+\let\fc@case\fc@UpperCaseFirstLetter
+\let\fc@first=\fc@@firstFfrench
+\fc@french@common
\let\@seventies=\@@seventiesfrench
\let\@eighties=\@@eightiesfrench
\let\@nineties=\@@ninetiesfrench
-\let\@teenstring=\@@Teenstringfrench
-\def\@hundredth{Centi\`eme}\def\@hundred{Cent}%
-\def\@thousandth{Mili\`eme}\def\@thousand{Mille}%
-\def\@andname{et}%
\@@ordinalstringfrench{#1}{#2}%
-\fi}
+}
\let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance
\let\@OrdinalstringNfrench\@OrdinalstringMfrench
-\newcommand*{\@@unitthstringfrench}[1]{%
-\ifcase#1\relax
-zero%
-\or uni\`eme%
-\or deuxi\`eme%
-\or troisi\`eme%
-\or quatri\`eme%
-\or cinqui\`eme%
-\or sixi\`eme%
-\or septi\`eme%
-\or huiti\`eme%
-\or neuvi\`eme%
-\fi
-}
-\newcommand*{\@@tenthstringfrench}[1]{%
-\ifcase#1\relax
-\or dixi\`eme%
-\or vingti\`eme%
-\or trentri\`eme%
-\or quaranti\`eme%
-\or cinquanti\`eme%
-\or soixanti\`eme%
-\or septenti\`eme%
-\or huitanti\`eme%
-\or nonenti\`eme%
-\fi
-}
-\newcommand*{\@@teenthstringfrench}[1]{%
-\ifcase#1\relax
-dixi\`eme%
-\or onzi\`eme%
-\or douzi\`eme%
-\or treizi\`eme%
-\or quatorzi\`eme%
-\or quinzi\`eme%
-\or seizi\`eme%
-\or dix-septi\`eme%
-\or dix-huiti\`eme%
-\or dix-neuvi\`eme%
-\fi
-}
-\newcommand*{\@@seventiethsfrenchswiss}[1]{%
-\ifcase#1\relax
-\@tenthstring{7}%
-\or
-\@tenstring{7} \@andname\ \@unitthstring{1}%
-\else
-\@tenstring{7}-\@unitthstring{#1}%
-\fi}
-\newcommand*{\@@eightiethsfrenchswiss}[1]{%
-\ifcase#1\relax
-\@tenthstring{8}%
-\or
-\@tenstring{8} \@andname\ \@unitthstring{1}%
-\else
-\@tenstring{8}-\@unitthstring{#1}%
-\fi}
-\newcommand*{\@@ninetiethsfrenchswiss}[1]{%
-\ifcase#1\relax
-\@tenthstring{9}%
-\or
-\@tenstring{9} \@andname\ \@unitthstring{1}%
-\else
-\@tenstring{9}-\@unitthstring{#1}%
-\fi}
-\newcommand*{\@@seventiethsfrench}[1]{%
-\ifnum#1=0\relax
-\@tenstring{6}%
--%
-\else
-\@tenstring{6}%
-\ \@andname\
-\fi
-\@teenthstring{#1}%
-}
-\newcommand*{\@@eightiethsfrench}[1]{%
-\ifnum#1>0\relax
-\@unitstring{4}-\@tenstring{2}%
--\@unitthstring{#1}%
-\else
-\@unitstring{4}-\@tenthstring{2}%
-\fi
-}
-\newcommand*{\@@ninetiethsfrench}[1]{%
-\@unitstring{4}-\@tenstring{2}-\@teenthstring{#1}%
-}
-\newcommand*{\@@Unitthstringfrench}[1]{%
-\ifcase#1\relax
-Zero%
-\or Uni\`eme%
-\or Deuxi\`eme%
-\or Troisi\`eme%
-\or Quatri\`eme%
-\or Cinqui\`eme%
-\or Sixi\`eme%
-\or Septi\`eme%
-\or Huiti\`eme%
-\or Neuvi\`eme%
-\fi
+\@ifundefined{fc@@do@plural@mark}{}{\PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@@do@plural@mark'}}
+\def\fc@@do@plural@mark#1{%
+ \ifcase\count10 %
+ #1% 0=always
+ \or% 1=never
+ \or% 2=multiple
+ \ifnum\count1>1 %
+ #1%
+ \fi
+ \or% 3= multiple g-last
+ \ifnum\count1>1 %
+ \ifnum\count0=\count6 %
+ #1%
+ \fi
+ \fi
+ \or% 4= multiple l-last
+ \ifnum\count1>1 %
+ \ifnum\count9=1 %
+ \else
+ #1%
+ \fi
+ \fi
+ \or% 5= multiple lng-last
+ \ifnum\count1>1 %
+ \ifnum\count9=1 %
+ \else
+ \if\count0>\count6 %
+ #1%
+ \fi
+ \fi
+ \fi
+ \or% 6= multiple ng-last
+ \ifnum\count1>1 %
+ \ifnum\count0>\count6 %
+ #1%
+ \fi
+ \fi
+ \fi
}
-\newcommand*{\@@Tenthstringfrench}[1]{%
-\ifcase#1\relax
-\or Dixi\`eme%
-\or Vingti\`eme%
-\or Trentri\`eme%
-\or Quaranti\`eme%
-\or Cinquanti\`eme%
-\or Soixanti\`eme%
-\or Septenti\`eme%
-\or Huitanti\`eme%
-\or Nonenti\`eme%
-\fi
+\@ifundefined{fc@@nbrstr@Fpreamble}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@@nbrstr@Fpreamble'}}
+\def\fc@@nbrstr@Fpreamble{%
+ \fc@read@unit{\count1}{0}%
+ \ifnum\count1=1 %
+ \let\fc@case@save\fc@case
+ \def\fc@case{\noexpand\fc@case}%
+ \def\@nil{\noexpand\@nil}%
+ \let\fc@nbrstr@postamble\fc@@nbrstr@Fpostamble
+ \fi
}
-\newcommand*{\@@Teenthstringfrench}[1]{%
-\ifcase#1\relax
-Dixi\`eme%
-\or Onzi\`eme%
-\or Douzi\`eme%
-\or Treizi\`eme%
-\or Quatorzi\`eme%
-\or Quinzi\`eme%
-\or Seizi\`eme%
-\or Dix-Septi\`eme%
-\or Dix-Huiti\`eme%
-\or Dix-Neuvi\`eme%
-\fi
+\def\fc@@nbrstr@Fpostamble{%
+ \let\fc@case\fc@case@save
+ \expandafter\fc@get@last@word\expandafter{\@tempa}\@tempb\@tempc
+ \def\@tempd{un}%
+ \ifx\@tempc\@tempd
+ \let\@tempc\@tempa
+ \edef\@tempa{\@tempb\fc@case une\@nil}%
+ \fi
}
-\newcommand*{\@@numberstringfrench}[2]{%
-\ifnum#1>99999
-\PackageError{fmtcount}{Out of range}%
-{This macro only works for values less than 100000}%
-\else
-\ifnum#1<0
-\PackageError{fmtcount}{Negative numbers not permitted}%
-{This macro does not work for negative numbers, however
-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\relax
- \@tmpstrctr=\@strctr
- \divide\@strctr by 10\relax
- \ifnum\@strctr>1\relax
- \ifthenelse{\(\@strctr>6\)\and\(\@strctr<10\)}{%
- \@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}}%
+\@ifundefined{fc@@pot@longscalefrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@@pot@longscalefrench'}}
+\def\fc@@pot@longscalefrench#1#2#3{%
+ {%
+ \edef\@tempb{\number#1}%
+ \count1=\@tempb
+ \count2\count0 %
+ \divide\count2 by 6 %
+ \count3\count2 %
+ \multiply\count3 by 6 %
+ \count3-\count3 %
+ \advance\count3 by \count0 %
+ \ifnum\count0>0 %
+ \ifnum\count1>0 %
+ \edef\@temph{%
+ \ifnum\count2=0 % weight=3
+ 1%
+ \else
+ \ifnum\count3>2 %
+ \ifnum\fc@longscale@nilliard@upto=0 %
+ 2%
+ \else
+ \ifnum\count2>\fc@longscale@nilliard@upto
+ 1%
+ \else
+ 2%
+ \fi
+ \fi
+ \else
+ 2%
+ \fi
+ \fi
+ }%
+ \ifnum\@temph=1 %
+ \count10=\fc@frenchoptions@mil@plural\space
+ \edef\@tempe{%
+ \noexpand\fc@case
+ mil%
+ \fc@@do@plural@mark\fc@frenchoptions@mil@plural@mark
+ \noexpand\@nil
+ }%
\else
- \ifnum\@strctr<10\relax
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\@nineties{\@tmpstrctr}}%
+ % weight >= 6
+ \expandafter\fc@@latin@cardinal@pefix\expandafter{\the\count2}\@tempg
+ % now form the xxx-illion(s) or xxx-illiard(s) word
+ \ifnum\count3>2 %
+ \toks10{illiard}%
+ \count10=\csname fc@frenchoptions@n-illiard@plural\endcsname\space
+ \else
+ \toks10{illion}%
+ \count10=\csname fc@frenchoptions@n-illion@plural\endcsname\space
\fi
+ \edef\@tempe{%
+ \noexpand\fc@case
+ \@tempg
+ \the\toks10 %
+ \fc@@do@plural@mark s%
+ \noexpand\@nil
+ }%
\fi
- \fi
- }{%
- \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
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}%
- \fi
- }%
- \else
- \@strctr=#1\relax
- \divide\@strctr by 1000
- \@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\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\relax
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\ }%
- \fi
- \@tmpstrctr=#1\relax
- \@modulo{\@tmpstrctr}{1000}\relax
- \ifnum\@tmpstrctr=100\relax
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\@tenstring{10}}%
- \else
- \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
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\ }%
- \else
- \ifnum\@tmpstrctr>0\relax
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr s}%
- \fi%
- \fi
-\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}}%
+ \let\@tempe\@empty
+ \def\@temph{0}%
\fi
+ \else
+ \let\@tempe\@empty
+ \def\@temph{0}%
\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\ }%
+ \expandafter\toks\expandafter1\expandafter{\@tempe}%
+ \toks0{#2}%
+ \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
+ \expandafter
+ }\@tempa
+}
+\@ifundefined{fc@@pot@shortscalefrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@@pot@shortscalefrench'}}
+\def\fc@@pot@shortscalefrench#1#2#3{%
+ {%
+ \edef\@tempb{\number#1}%
+ \count1=\@tempb
+ \count2\count0 %
+ \divide\count2 by 3 %
+ \advance\count2 by -1 %
+ \ifnum\count0>0 % If weight>=3, i.e we do have to append thousand or n-illion(s)/n-illiard(s)
+ \ifnum\count1>0 % we have at least one thousand/n-illion/n-illiard
+ \ifnum\count2=0 %
+ \def\@temph{1}%
+ \count1=\fc@frenchoptions@mil@plural\space
+ \edef\@tempe{%
+ mil%
+ \fc@@do@plural@mark\fc@frenchoptions@mil@plural@mark
+ }%
+ \else
+ \def\@temph{2}%
+ % weight >= 6
+ \expandafter\fc@@latin@cardinal@pefix\expandafter{\the\count2}\@tempg
+ \count10=\csname fc@frenchoptions@n-illion@plural\endcsname\space
+ \edef\@tempe{%
+ \noexpand\fc@case
+ \@tempg
+ illion%
+ \fc@@do@plural@mark s%
+ \noexpand\@nil
+ }%
+ \fi
\else
- \edef#2{\@@fc@numstr-}%
+ \def\@temph{0}%
+ \let\@tempe\@empty
\fi
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\@unitstring{\@strctr}}%
+ \else
+ \def\@temph{0}%
+ \let\@tempe\@empty
\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}}%
+ \expandafter\toks\expandafter1\expandafter{\@tempe}%
+ \toks0{#2}%
+ \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
+ \expandafter
+ }\@tempa
+}
+\@ifundefined{fc@@pot@recursivefrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@@pot@recursivefrench'}}
+\def\fc@@pot@recursivefrench#1#2#3{%
+ {%
+ \edef\@tempb{\number#1}%
+ \let\@tempa\@@tempa
+ \count1=\@tempb\space
+ \ifnum\count1>0 %
+ \count2\count0 %
+ \divide\count2 by 9 %
+ \advance\count2 by -1 %
+ \let\@tempe\@empty
+ \edef\@tempf{\fc@frenchoptions@supermillion@dos
+ de\fc@frenchoptions@supermillion@dos\fc@case milliards\@nil}%
+ \count11\count0 %
+ \ifnum\count2>0 %
+ \count3\count2 %
+ \count3-\count3 %
+ \multiply\count3 by 9 %
+ \advance\count11 by \count3 %
+ \loop
+ % (\count2, \count3) <- (\count2 div 2, \count2 mod 2)
+ \count3\count2 %
+ \divide\count3 by 2 %
+ \multiply\count3 by 2 %
+ \count3-\count3 %
+ \advance\count3 by \count2 %
+ \divide\count2 by 2 %
+ \ifnum\count3=1 %
+ \let\@tempg\@tempe
+ \edef\@tempe{\@tempg\@tempf}%
+ \fi
+ \let\@tempg\@tempf
+ \edef\@tempf{\@tempg\@tempg}%
+ \ifnum\count2>0 %
+ \repeat
+ \fi
+ \divide\count11 by 3 %
+ \ifcase\count11 % 0 .. 5
+ % 0 => d milliard(s) (de milliards)*
+ \def\@temph{2}%
+ \count10=\csname fc@frenchoptions@n-illiard@plural\endcsname\space
+ \or % 1 => d mille milliard(s) (de milliards)*
+ \def\@temph{1}%
+ \count10=\fc@frenchoptions@mil@plural\space
+ \or % 2 => d million(s) (de milliards)*
+ \def\@temph{2}%
+ \count10=\csname fc@frenchoptions@n-illion@plural\endcsname\space
+ \or % 3 => d milliard(s) (de milliards)*
+ \def\@temph{2}%
+ \count10=\csname fc@frenchoptions@n-illiard@plural\endcsname\space
+ \or % 4 => d mille milliards (de milliards)*
+ \def\@temph{1}%
+ \count10=\fc@frenchoptions@mil@plural\space
+ \else % 5 => d million(s) (de milliards)*
+ \def\@temph{2}%
+ \count10=\csname fc@frenchoptions@n-illion@plural\endcsname\space
\fi
- \else%(>0,<10)
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\@unitstring{\@strctr}}%
+ \let\@tempg\@tempe
+ \edef\@tempf{%
+ \ifcase\count11 % 0 .. 5
+ \or
+ mil\fc@@do@plural@mark \fc@frenchoptions@mil@plural@mark
+ \or
+ million\fc@@do@plural@mark s%
+ \or
+ milliard\fc@@do@plural@mark s%
+ \or
+ mil\fc@@do@plural@mark\fc@frenchoptions@mil@plural@mark
+ \noexpand\@nil\fc@frenchoptions@supermillion@dos
+ \noexpand\fc@case milliards% 4
+ \or
+ million\fc@@do@plural@mark s%
+ \noexpand\@nil\fc@frenchoptions@supermillion@dos
+ de\fc@frenchoptions@supermillion@dos\noexpand\fc@case milliards% 5
+ \fi
+ }%
+ \edef\@tempe{%
+ \ifx\@tempf\@empty\else
+ \expandafter\fc@case\@tempf\@nil
+ \fi
+ \@tempg
+ }%
+ \else
+ \def\@temph{0}%
+ \let\@tempe\@empty
\fi
- \else%>10
- \@modulo{\@strctr}{10}%
- \let\@@fc@numstr#2\relax
- \edef#2{\@@fc@numstr\@teenstring{\@strctr}}%
- \fi
-\fi
+ \expandafter\toks\expandafter1\expandafter{\@tempe}%
+ \toks0{#2}%
+ \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
+ \expandafter
+ }\@tempa
}
-\newcommand*{\@@ordinalstringfrench}[2]{%
-\ifnum#1>99999
-\PackageError{fmtcount}{Out of range}%
-{This macro only works for values less than 100000}%
-\else
-\ifnum#1<0
-\PackageError{fmtcount}{Negative numbers not permitted}%
-{This macro does not work for negative numbers, however
-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
- \divide\@strctr by 10\relax
- \ifnum\@strctr>1\relax
- \ifthenelse{\@strctr>6}{%
- \@modulo{\@tmpstrctr}{10}%
- \ifnum\@strctr=7\relax
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@seventies{\@tmpstrctr}}%
+\@ifundefined{fc@muladdfrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@muladdfrench'}}
+\def\fc@muladdfrench#1#2#3{%
+ {%
+ \edef\@@tempc{#1}%
+ \edef\@@tempd{#2}%
+ \edef\@tempf{#3}%
+ \let\@tempc\@@tempc
+ \let\@tempd\@@tempd
+ \ifnum\@tempc=1 %
+ \ifnum\count9=1 %
+ \let\@tempd\@empty
+ \fi
+ \fi
+ \edef\@tempg{%
+ \@tempd
+ \ifx\@tempd\@empty\else
+ \ifx\@tempf\@empty\else
+ \ifcase\count9 %
+ \or
+ \fc@frenchoptions@submillion@dos
+ \or
+ \fc@frenchoptions@supermillion@dos
+ \fi
+ \fi
+ \fi
+ \@tempf
+ }%
+ \edef\@temph{%
+ \@tempa
+ \ifx\@tempa\@empty\else
+ \ifx\@tempg\@empty\else
+ \ifcase\count8 %
+ \or
+ \fc@frenchoptions@submillion@dos
+ \or
+ \fc@frenchoptions@supermillion@dos
+ \fi
+ \fi
+ \fi
+ \@tempg
+ }%
+ \def\@tempb##1{\def\@tempa{\def\@tempa{##1}}}%
+ \expandafter\@tempb\expandafter{\@temph}%
+ \expandafter
+ }\@tempa
+}%
+\@ifundefined{fc@lthundredstringfrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@lthundredstringfrench'}}
+\def\fc@lthundredstringfrench#1{%
+ {%
+ \let\@tempc#1%
+ \fc@read@unit{\count1}{\count0}%
+ \count3\count0 %
+ \advance\count3 1 %
+ \fc@read@unit{\count2}{\count3}%
+ \edef\@tempa{%
+ \@tempc
+ \ifnum\count2>1 %
+ % 20 .. 99
+ \ifnum\count2>6 %
+ % 70 .. 99
+ \ifnum\count2<8 %
+ % 70 .. 79
+ \@seventies{\count1}%
+ \else
+ % 80..99
+ \ifnum\count2<9 %
+ % 80 .. 89
+ \@eighties{\count1}%
+ \else
+ % 90 .. 99
+ \@nineties{\count1}%
+ \fi
+ \fi
+ \else
+ % 20..69
+ \@tenstring{\count2}%
+ \ifnum\count1>0 %
+ % x1 .. x0
+ \ifnum\count1=1 %
+ % x1
+ \fc@frenchoptions@submillion@dos\@andname\fc@frenchoptions@submillion@dos
+ \else
+ % x2 .. x9
+ -%
+ \fi
+ \@unitstring{\count1}%
+ \fi
+ \fi
\else
- \ifnum\@strctr=8\relax
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@eighties{\@tmpstrctr}}%
+ % 0 .. 19
+ \ifnum\count2=0 % when tens = 0
+ % 0 .. 9
+ \ifnum\count1=0 % when units = 0
+ % \count3=1 when #1 = 0, i.e. only for the unit of the top level number
+ \ifnum\count3=1 %
+ \ifnum\fc@max@weight=0 %
+ \@unitstring{0}%
+ \fi
+ \fi
+ \else
+ % 1 .. 9
+ \@unitstring{\count1}%
+ \fi
\else
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@nineties{\@tmpstrctr}}%
+ % 10 .. 19
+ \@teenstring{\count1}%
\fi
\fi
- }{%
- \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\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}}%
+ }%
+ \def\@tempb##1{\def\@tempa{\def#1{##1}}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \expandafter
+ }\@tempa
+}
+\@ifundefined{fc@ltthousandstringfrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `fc@ltthousandstringfrench'}}
+\def\fc@ltthousandstringfrench#1{%
+ {%
+ \count4\count0 %
+ \advance\count4 by 2 %
+ \fc@read@unit{\count2 }{\count4 }%
+ \advance\count4 by -1 %
+ \count3\count4 %
+ \advance\count3 by -1 %
+ \fc@check@nonzeros{\count3 }{\count4 }\@tempa
+ \edef\@temps{%
+ \ifcase\fc@frenchoptions@cent@plural\space
+ % 0 => always
+ s%
+ \or
+ % 1 => never
+ \or
+ % 2 => multiple
+ \ifnum\count2>1s\fi
+ \or
+ % 3 => multiple g-last
+ \ifnum\count2>1 \ifnum\@tempa=0 \ifnum\count0=\count6s\fi\fi\fi
+ \or
+ % 4 => multiple l-last
+ \ifnum\count2>1 \ifnum\@tempa=0 \ifnum\count9=0s\else\ifnum\count9=2s\fi\fi\fi\fi
\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
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@unitstring{\@strctr}}%
- \@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}%
+ % compute spacing after cent(s?) into \@tempb
+ \expandafter\let\expandafter\@tempb
+ \ifnum\@tempa>0 \fc@frenchoptions@submillion@dos\else\@empty\fi
+ % now place into \@tempa the hundreds
+ \edef\@tempa{%
+ \ifnum\count2=0 %
+ \else
+ \ifnum\count2=1 %
+ \expandafter\fc@case\@hundred\@nil
+ \else
+ \@unitstring{\count2}\fc@frenchoptions@submillion@dos
+ \noexpand\fc@case\@hundred\@temps\noexpand\@nil
+ \fi
+ \@tempb
+ \fi
+ }%
+ % now append to \@tempa the ten and unit
+ \fc@lthundredstringfrench\@tempa
+ \def\@tempb##1{\def\@tempa{\def#1{##1}}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \expandafter
+ }\@tempa
+}
+\@ifundefined{@@numberstringfrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro `@@numberstringfrench'}}
+\def\@@numberstringfrench#1#2{%
+ {%
+ \edef\@tempa{#1}%
+ \expandafter\fc@number@parser\expandafter{\@tempa}%
+ \ifnum\fc@min@weight<0 %
+ \PackageError{fmtcount}{Out of range}%
+ {This macro does not work with fractional numbers}%
\fi
- \fi
-\fi
-\@strctr=#1\relax \@modulo{\@strctr}{1000}%
-\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\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}}%
+ \edef\@tempa{\ifcase\fc@sign@case\space\or\fc@case plus\@nil\or\fc@case moins\@nil\fi}%
+ \fc@nbrstr@preamble
+ \fc@@nbrstrfrench@inner
+ \fc@nbrstr@postamble
+ \def\@tempb##1{\def\@tempa{\def#2{##1}}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \expandafter
+ }\@tempa
+}
+\def\fc@@nbrstrfrench@inner{%
+ \count0=\fc@max@weight
+ \divide\count0 by 3 %
+ \multiply\count0 by 3 %
+ \fc@intpart@find@last{\count5 }%
+ \count6\count5 %
+ \divide\count6 3 %
+ \multiply\count6 3 %
+ \count8=0 %
+ \loop
+ \count1\count0 %
+ \advance\count1 by 2 %
+ \fc@check@nonzeros{\count0 }{\count1 }\@tempt
+ \fc@poweroften\@tempt{\count9 }\@tempb
+ \fc@ltthousandstringfrench\@tempd
+ \fc@muladdfrench\@tempt\@tempd\@tempb
+ \count8\count9 %
+ \advance\count0 by -3 %
+ \ifnum\count6>\count0 \else
+ \repeat
+}
+\@ifundefined{@@ordinalstringfrench}{}{%
+ \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
+ `@@ordinalstringfrench'}}
+\def\@@ordinalstringfrench#1#2{%
+ {%
+ \edef\@tempa{#1}%
+ \expandafter\fc@number@parser\expandafter{\@tempa}%
+ \ifnum\fc@min@weight<0 %
+ \PackageError{fmtcount}{Out of range}%
+ {This macro does not work with fractional numbers}%
+ \fi
+ \ifnum\fc@sign@case>0 %
+ \PackageError{fmtcount}{Out of range}%
+ {This macro does with negative or explicitly marked as positive numbers}%
+ \fi
+ \ifnum\fc@max@weight=0 %
+ \ifnum\csname fc@digit@0\endcsname=1 %
+ \count0=1 %
\else
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@ninetieths{\@tmpstrctr}}%
+ \count0=0 %
\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}}%
+ \count0=0 %
\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
+ \ifnum\count0=1 %
+ \edef\@tempa{\expandafter\fc@case\fc@first\@nil}%
\else
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@unitthstring{\@strctr}}%
+ \def\@tempa##1{%
+ \expandafter\edef\csname fc@frenchoptions@##1@plural\endcsname{%
+ \ifcase\csname fc@frenchoptions@##1@plural\endcsname\space
+ 0% 0: always => always
+ \or
+ 1% 1: never => never
+ \or
+ 6% 2: multiple => multiple ng-last
+ \or
+ 1% 3: multiple g-last => never
+ \or
+ 5% 4: multiple l-last => multiple lng-last
+ \or
+ 5% 5: multiple lng-last => multiple lng-last
+ \or
+ 6% 6: multiple ng-last => multiple ng-last
+ \fi
+ }%
+ }%
+ \@tempa{vingt}%
+ \@tempa{cent}%
+ \@tempa{mil}%
+ \@tempa{n-illion}%
+ \@tempa{n-illiard}%
+ \let\fc@case@save\fc@case
+ \def\fc@case{\noexpand\fc@case}%
+ \def\@nil{\noexpand\@nil}%
+ \let\@tempa\@empty
+ \fc@@nbrstrfrench@inner
+ \let\fc@case\fc@case@save
+ \expandafter\fc@get@last@word\expandafter{\@tempa}\@tempb\@tempc
+ \expandafter\fc@get@last@letter\expandafter{\@tempc}\@tempd\@tempe
+ \def\@tempf{e}%
+ \ifx\@tempe\@tempf
+ \edef\@tempa{\@tempb\expandafter\fc@case\@tempd i\`eme\@nil}%
+ \else
+ \def\@tempf{q}%
+ \ifx\@tempe\@tempf
+ \edef\@tempa{\@tempb\expandafter\fc@case\@tempd qui\`eme\@nil}%
+ \else
+ \def\@tempf{f}%
+ \ifx\@tempe\@tempf
+ \edef\@tempa{\@tempb\expandafter\fc@case\@tempd vi\`eme\@nil}%
+ \else
+ \edef\@tempa{\@tempb\expandafter\fc@case\@tempc i\`eme\@nil}%
+ \fi
+ \fi
+ \fi
\fi
- \else
- \@modulo{\@strctr}{10}%
- \let\@@fc@ordstr#2\relax
- \edef#2{\@@fc@ordstr\@teenthstring{\@strctr}}%
- \fi
-\fi
+ \def\@tempb##1{\def\@tempa{\def#2{##1}}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \expandafter
+ }\@tempa
+}
+\newcommand*\fc@frenchoptions@setdefaults{%
+ \csname KV@fcfrench@all plural\endcsname{reformed}%
+ \def\fc@frenchoptions@submillion@dos{-}%
+ \let\fc@frenchoptions@supermillion@dos\space
+ \let\fc@u@in@duo\@empty% Could be `u'
+ % \let\fc@poweroften\fc@@pot@longscalefrench
+ \let\fc@poweroften\fc@@pot@recursivefrench
+ \def\fc@longscale@nilliard@upto{0}% infinity
+ \def\fc@frenchoptions@mil@plural@mark{le}%
}
+\fc@frenchoptions@setdefaults
+\iffalse Local variables: \fi
+\iffalse mode: docTeX \fi
+\iffalse End: \fi%\iffalse
\endinput
%%
%% End of file `fc-french.def'.