%% %% This is file `fc-french.def', %% generated with the docstrip utility. %% %% The original source files were: %% %% fmtcount.dtx (with options: `fc-french.def,package') %% %% fmtcount.dtx %% Copyright 2013 Nicola Talbot and Vincent Belaïche %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license of (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche. %% %% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files 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 %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %%\subsection{Prefixes} %%\label{sec:latin-prefixes} %% %%\begin{definition}[\DescribeMacro{\latinnumeralstring}] %%\cs{latinnumeralstring}\marg{counter}\oarg{prefix options} %%\end{definition} %% %%\begin{definition}[\DescribeMacro{\latinnumeralstringnum}] %%\cs{latinnumeralstringnum}\marg{number}\oarg{prefix options} %%\end{definition} \ProvidesFCLanguage{french}[2012/10/24]% \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}}% \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 % \edef#2{\number#1\relax\noexpand\fmtord{i\`ere}}% \else \edef#2{\number#1\relax\noexpand\fmtord{i\`eme}}% \fi \fi} \let\@ordinalNfrench\@ordinalMfrench \newcommand*{\@@unitstringfrench}[1]{% \noexpand\fc@case \ifcase#1 % z\'ero% \or un% \or deux% \or trois% \or quatre% \or cinq% \or six% \or sept% \or huit% \or neuf% \fi \noexpand\@nil } \newcommand*{\@@tenstringfrench}[1]{% \noexpand\fc@case \ifcase#1 % \or dix% \or vingt% \or trente% \or quarante% \or cinquante% \or soixante% \or septante% \or huitante% \or nonante% \or cent% \fi \noexpand\@nil } \newcommand*{\@@teenstringfrench}[1]{% \noexpand\fc@case \ifcase#1 % dix% \or onze% \or douze% \or treize% \or quatorze% \or quinze% \or seize% \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 % \fc@frenchoptions@submillion@dos\@andname\fc@frenchoptions@submillion@dos \else -% \fi \@teenstring{#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 \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]{% \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 } \newcommand*{\@@eightiesfrenchswiss}[1]{% \@tenstring{8}% \ifnum#1=1\ \@andname\ \fi \ifnum#1>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*\fc@french@common{% \let\@unitstring=\@@unitstringfrench \let\@teenstring=\@@teenstringfrench \let\@tenstring=\@@tenstringfrench \def\@hundred{cent}% \def\@andname{et}% } \DeclareRobustCommand{\@numberstringMfrenchswiss}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@numberstringMfrenchfrance}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@numberstringMfrenchbelgian}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \let\@numberstringMfrench=\@numberstringMfrenchfrance \DeclareRobustCommand{\@numberstringFfrenchswiss}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@numberstringFfrenchfrance}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@numberstringFfrenchbelgian}[2]{% \let\fc@case\fc@CaseIden \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \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\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@NumberstringMfrenchfrance}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@NumberstringMfrenchbelgian}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\@empty \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \let\@NumberstringMfrench=\@NumberstringMfrenchfrance \DeclareRobustCommand{\@NumberstringFfrenchswiss}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@NumberstringFfrenchfrance}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \DeclareRobustCommand{\@NumberstringFfrenchbelgian}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \let\fc@nbrstr@preamble\fc@@nbrstr@Fpreamble \let\fc@nbrstr@postamble\@empty \@@numberstringfrench{#1}{#2}} \let\@NumberstringFfrench=\@NumberstringFfrenchfrance \let\@NumberstringNfrench\@NumberstringMfrench \DeclareRobustCommand{\@ordinalstringMfrenchswiss}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \@@ordinalstringfrench{#1}{#2}% } \newcommand*\fc@@firstfrench{premier} \newcommand*\fc@@firstFfrench{premi\`ere} \DeclareRobustCommand{\@ordinalstringMfrenchfrance}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}} \DeclareRobustCommand{\@ordinalstringMfrenchbelgian}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance \DeclareRobustCommand{\@ordinalstringFfrenchswiss}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstFfrench \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@ordinalstringFfrenchfrance}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstFfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@ordinalstringFfrenchbelgian}[2]{% \let\fc@case\fc@CaseIden \let\fc@first=\fc@@firstFfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \let\@ordinalstringFfrench=\@ordinalstringFfrenchfrance \let\@ordinalstringNfrench\@ordinalstringMfrench \DeclareRobustCommand{\@OrdinalstringMfrenchswiss}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@OrdinalstringMfrenchfrance}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@OrdinalstringMfrenchbelgian}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance \DeclareRobustCommand{\@OrdinalstringFfrenchswiss}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstfrench \fc@french@common \let\@seventies=\@@seventiesfrenchswiss \let\@eighties=\@@eightiesfrenchswiss \let\@nineties=\@@ninetiesfrenchswiss \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@OrdinalstringFfrenchfrance}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstFfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \DeclareRobustCommand{\@OrdinalstringFfrenchbelgian}[2]{% \let\fc@case\fc@UpperCaseFirstLetter \let\fc@first=\fc@@firstFfrench \fc@french@common \let\@seventies=\@@seventiesfrench \let\@eighties=\@@eightiesfrench \let\@nineties=\@@ninetiesfrench \@@ordinalstringfrench{#1}{#2}% } \let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance \let\@OrdinalstringNfrench\@OrdinalstringMfrench \@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 } \@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 } \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 } \@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 % 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 \else \let\@tempe\@empty \def\@temph{0}% \fi \else \let\@tempe\@empty \def\@temph{0}% \fi \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 \def\@temph{0}% \let\@tempe\@empty \fi \else \def\@temph{0}% \let\@tempe\@empty \fi \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 \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 \expandafter\toks\expandafter1\expandafter{\@tempe}% \toks0{#2}% \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}% \expandafter }\@tempa } \@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 % 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 % 10 .. 19 \@teenstring{\count1}% \fi \fi }% \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 }% % 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 \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 \count0=0 % \fi \else \count0=0 % \fi \ifnum\count0=1 % \edef\@tempa{\expandafter\fc@case\fc@first\@nil}% \else \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 \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 \endinput %% %% End of file `fc-french.def'.