texlive[44615] Master/texmf-dist: fmtcount (16jun17)

commits+karl at tug.org commits+karl at tug.org
Sat Jun 17 00:08:02 CEST 2017


Revision: 44615
          http://tug.org/svn/texlive?view=revision&revision=44615
Author:   karl
Date:     2017-06-17 00:08:02 +0200 (Sat, 17 Jun 2017)
Log Message:
-----------
fmtcount (16jun17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/fmtcount/CHANGES
    trunk/Master/texmf-dist/doc/latex/fmtcount/README
    trunk/Master/texmf-dist/doc/latex/fmtcount/fmtcount.pdf
    trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.dtx
    trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.ins
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-american.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-british.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-english.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-german.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def
    trunk/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty
    trunk/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty
    trunk/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/fmtcount/fc-frlargenum.tex
    trunk/Master/texmf-dist/doc/latex/fmtcount/fc-samp.tex

Modified: trunk/Master/texmf-dist/doc/latex/fmtcount/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fmtcount/CHANGES	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/doc/latex/fmtcount/CHANGES	2017-06-16 22:08:02 UTC (rev 44615)
@@ -1,5 +1,18 @@
 fmtcount package versions:
 
+Version 3.02:
+
+* Fix issue #24 (Capitalization in French).
+
+* Fix issue #11 (Make lang definition .def files loadable from within
+  a group).
+	
+* Fix issue #18 (no impact for end user, code optimization for
+  \storeordinal definition).
+	
+* Make robust \FCordinal, \storeordinal, \ordinalnum, and
+  \storeordinalnum
+	
 Version 3.01:
 
  * Make fmtord option language dependant

Modified: trunk/Master/texmf-dist/doc/latex/fmtcount/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fmtcount/README	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/doc/latex/fmtcount/README	2017-06-16 22:08:02 UTC (rev 44615)
@@ -1,6 +1,6 @@
-LaTeX Package : fmtcount v3.01
+LaTeX Package : fmtcount v3.02
 
-Last Modified : 2015-05-05
+Last Modified : 2017-06-15
 
 Author        : Nicola Talbot and Vincent Belaïche
 

Deleted: trunk/Master/texmf-dist/doc/latex/fmtcount/fc-frlargenum.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fmtcount/fc-frlargenum.tex	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/doc/latex/fmtcount/fc-frlargenum.tex	2017-06-16 22:08:02 UTC (rev 44615)
@@ -1,130 +0,0 @@
- % This file is public domain
-
-\documentclass{article}
-\usepackage[french]{babel}
-\usepackage{fmtcount}
-\usepackage{array}
-\usepackage{amsmath}
-\usepackage{xcolor}
-\usepackage[T1]{fontenc}
-\newcommand*\formatterundertest[1]{}
-\makeatletter
-\newcommand*{\printrow}[2]{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\@empty\else
-  \texttt{\textbackslash fmtsetoptions\{french=\{#1\}\}}\newline
-  \fmtcountsetoptions{french={#1}}%
-  \fi
-  \begin{tabular}{@{}>{\raggedleft\arraybackslash}p{\dimexpr0.3\linewidth-\tabcolsep}>{\raggedright\arraybackslash}p{\dimexpr0.7\linewidth-\tabcolsep}@{}}%
-    #2&$\rangle$\formatterundertest{#2}$\langle$\\\hline
-  \end{tabular}\newline
-  \def\@tempb{%
-    \ifx\@tempa\space
-      \expandafter\@gobble
-    \fi
-  }%
-  \futurelet\@tempa\@tempb
-}
-\def\fc at frenchoptions@submillion at dos{$\bullet$\-$\bullet$}
-\def\fc at frenchoptions@supermillion at dos{$\star$\-$\star$}
-
-\makeatother
-\newcommand*\test{\noindent
-\printrow{all plural}{1}
-\printrow{}{2}
-\printrow{}{3}
-\printrow{}{4}
-\printrow{}{5}
-\printrow{}{6}
-\printrow{}{7}
-\printrow{}{8}
-\printrow{}{9}
-\printrow{}{10}
-\printrow{}{11}
-\printrow{}{12}
-\printrow{}{13}
-\printrow{}{14}
-\printrow{}{15}
-\printrow{}{16}
-\printrow{}{17}
-\printrow{}{18}
-\printrow{}{19}
-\printrow{}{20}
-\printrow{}{21}
-\printrow{}{22}
-\printrow{}{29}
-\printrow{scale=long}{1 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{scale=short}{1 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{scale=recursive}{1 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{1 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{1 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{1 000 000 000 000 000 000 000 000 000 000}
-\printrow{scale=long}{2 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{scale=short}{2 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{scale=recursive}{2 000 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{2 000 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{2 000 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{2 000 000 000 000 000 000 000 000 000 000}
-\printrow{}{156 404 724 555 428 769 499 217 321 941}
-\printrow{}{4 171 764 135 702 262 349 567 001 574 584}
-\printrow{}{97 415 427 916 562 250 398 973 107 371 704}
-\printrow{}{80}
-\printrow{}{81}
-\printrow{}{21}
-\printrow{}{31}
-\printrow{}{200}
-\printrow{}{201}
-\printrow{}{200 000}
-\printrow{}{200 000 000}
-\printrow{}{201 000 000}
-\printrow{}{80 000}
-\printrow{}{80 000 000}
-\printrow{}{81 000}
-\printrow{}{81 000 000}
-\printrow{all plural,mil plural=multiple}{1000}
-\printrow{}{2000}
-\printrow{}{1001}
-\printrow{}{2001}
-\printrow{}{1900}
-\printrow{}{2012}
-\printrow{}{900}
-\printrow{all plural,mil plural=multiple,mil plural mark=s}{2000}
-}
-
-\begin{document}
-
-\section{\textbackslash numberstringnum\{\#1\}}
-\def\formatterundertest#1{\numberstringnum{#1}}
-\test
-
-\section{\textbackslash numberstringnum\{\#1\}[f]}
-\def\formatterundertest#1{\numberstringnum{#1}[f]}
-\test
-
-\section{\textbackslash ordinalstringnum\{\#1\}}
-\def\formatterundertest#1{\ordinalstringnum{#1}}
-\test
-
-\section{\textbackslash ordinalstringnum\{\#1\}[f]}
-\def\formatterundertest#1{\ordinalstringnum{#1}[f]}
-\test
-
-\section{\textbackslash Numberstringnum\{\#1\}}
-\def\formatterundertest#1{\Numberstringnum{#1}}
-\test
-
-\section{\textbackslash Numberstringnum\{\#1\}[f]}
-\def\formatterundertest#1{\Numberstringnum{#1}[f]}
-\test
-
-\section{\textbackslash Ordinalstringnum\{\#1\}}
-\def\formatterundertest#1{\Ordinalstringnum{#1}}
-\test
-
-\section{\textbackslash Ordinalstringnum\{\#1\}[f]}
-\def\formatterundertest#1{\Ordinalstringnum{#1}[f]}
-\test
-
-
-
-\end{document}

Deleted: trunk/Master/texmf-dist/doc/latex/fmtcount/fc-samp.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fmtcount/fc-samp.tex	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/doc/latex/fmtcount/fc-samp.tex	2017-06-16 22:08:02 UTC (rev 44615)
@@ -1,103 +0,0 @@
- % This file is public domain
-\documentclass[a4paper]{article}
-
-\usepackage{fmtcount}
-% FCloadlang
-\newcounter{N}
-
-\padzeroes[5]
-
-\newcommand{\printrow}[1]{%
-  \newline
-  \setcounter{N}{#1}
-  \makebox[0.75in][r]{\decimal{N}\quad}
-  \makebox[0.75in][r]{\hexadecimal{N}\quad}
-  \makebox[0.75in][r]{\ordinal{N}\quad}
-  \makebox[2in][l]{\numberstring{N}}
-}
-
-\renewcommand{\thesection}{\ordinal{section}}
-
-\begin{document}
-
-\section{Displaying the value of a counter}
-\label{ex}
-
-\begin{ttfamily}
-\noindent
-\makebox[0.75in][c]{decimal}
-\makebox[0.75in][c]{hexadecimal}
-\makebox[0.75in][c]{ordinal}
-numberstring
-\printrow{0}
-\printrow{1}
-\printrow{2}
-\printrow{3}
-\printrow{4}
-\printrow{5}
-\printrow{6}
-\printrow{7}
-\printrow{8}
-\printrow{9}
-\printrow{10}
-\printrow{11}
-\printrow{12}
-\printrow{13}
-\printrow{14}
-\printrow{15}
-\printrow{16}
-\printrow{17}
-\printrow{18}
-\printrow{19}
-\printrow{20}
-\printrow{21}
-\printrow{22}
-\printrow{23}
-\printrow{24}
-\printrow{25}
-\printrow{30}
-\printrow{40}
-\printrow{50}
-\printrow{60}
-\printrow{70}
-\printrow{71}
-\printrow{75}
-\printrow{80}
-\printrow{81}
-\printrow{85}
-\printrow{90}
-\printrow{91}
-\printrow{95}
-\printrow{100}
-\printrow{101}
-\printrow{110}
-\printrow{125}
-\printrow{150}
-\printrow{170}
-\printrow{180}
-\printrow{190}
-\printrow{200}
-\printrow{250}
-\printrow{300}
-\printrow{400}
-\printrow{500}
-\printrow{600}
-\printrow{700}
-\printrow{800}
-\printrow{900}
-\printrow{1000}
-\printrow{99999}
-\end{ttfamily}
-
-\section{Cross-Referencing}
-
-Referencing a label: \ref{ex}.
-
-Passing numbers explicitly:
-\ordinalnum{10},
-\Numberstringnum{10},
-\NUMBERstringnum{10},
-\Ordinalstringnum{10},
-\ORDINALstringnum{10}.
-
-\end{document}

Modified: trunk/Master/texmf-dist/doc/latex/fmtcount/fmtcount.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.dtx	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.dtx	2017-06-16 22:08:02 UTC (rev 44615)
@@ -5,7 +5,7 @@
 %   -doc "fmtcount-manual.tex"
 %   -author "Nicola Talbot and Vincent Belaïche"
 %   fmtcount
-% Created on 2015/5/8 16:50
+% Created on 2017/6/15 19:28
 %\fi
 %\iffalse
 %<*package>
@@ -28,7 +28,7 @@
 %\fi
 % \iffalse
 % Doc-Source file to use with LaTeX2e
-% Copyright (C) 2015 Nicola Talbot and Vincent Belaïche, all rights reserved.
+% Copyright (C) 2017 Nicola Talbot and Vincent Belaïche, all rights reserved.
 % \fi
 % \iffalse
 %<*driver>
@@ -49,20 +49,19 @@
 \newcommand*{\LanguagePackageOptionList}{{%
  \def\@tempf##1{\texttt{##1}}% how to format each option
  % we don't use \cs{newtoks} because anyway this is within a group
- \toks0{}%
- \def\@tempd{\toks0}% token in which we accumulate result
- \def\@tempc{\toks1}% token in which we place next dialect
+ \toks0{}% token in which we accumulate result
+ %  \toks1 token in which we place next dialect
  \count0 0 % to distinguish first and second iteration, we need to do tricks because we want to insert `and'
            % before the last item in the list.
  \def\@tempb##1{%
    \ifnum\count0=0 %
    \else\ifnum\count0=1 %
-     \expandafter\@tempd\expandafter{\the\toks1}%
+     \toks0\toks1 %
    \else
      \edef\@tempa{\the\toks0, \the\toks1}%
-     \expandafter\@tempd\expandafter{\@tempa}%
+     \toks0\expandafter{\@tempa}%
    \fi\fi
-   \expandafter\@tempc\expandafter{\@tempf{##1}}%
+   \toks1\expandafter{\@tempf{##1}}%
    \advance\count0 by 1 %
  }%
  \fc at iterate@on at languages\@tempb
@@ -78,11 +77,19 @@
             pdftitle={fmtcount.sty: Displaying the Values of LaTeX Counters},
             pdfkeywords={LaTeX,counter}]{hyperref}
 
-\CheckSum{9930}
+\CheckSum{10157}
 
 \doxitem{Option}{option}{options}
 
 \newlength{\tabcolwidth}
+\newlength{\coliwidth}
+\newcommand*\cnab{\centering\arraybackslash}
+\newcommand*\ColIRI[1]{}
+\csname @ifpackageloaded\endcsname{tex4ht}{%
+\newcommand*\ColIRII[1]{\parbox{\coliwidth}{\cnab #1}}
+}{%
+\newcommand*\ColIRII[1]{\multirow{-2}{\coliwidth}{\cnab #1}}
+}
 
 \begin{document}
 \DocInput{fmtcount.dtx}
@@ -97,7 +104,7 @@
 % \url{www.dickimaw-books.com}
 % \and
 % Vincent Bela\"iche}
-% \date{2015-05-05 (version 3.01)\relax
+% \date{2016-01-12 (version 3.02)\relax
 %}
 % \maketitle
 % \tableofcontents
@@ -712,24 +719,24 @@
 %\setlength{\tabcolwidth}{\linewidth}
 %\addtolength{\tabcolwidth}{-10\tabcolsep}
 %\addtolength{\tabcolwidth}{-6\arrayrulewidth}
+%\setlength{\coliwidth}{0.398\tabcolwidth}
+%\addtolength{\coliwidth}{\arrayrulewidth}
+%\addtolength{\coliwidth}{2\tabcolsep}
 %\noindent\begin{tabular*}{\linewidth}{|%
 %    >{\centering\arraybackslash\ttfamily}p{\dimexpr0.204\tabcolwidth-\arrayrulewidth-\doublerulesep}||%
 %    *{4}{>{\centering\arraybackslash\ttfamily}p{0.199\tabcolwidth}|}}\hline
 %  \textrm{\meta{x} dans ``\meta{x} }plural\textrm{''}&traditional&reformed&traditional o&reformed o\\\hline
 %  \hline
-%  vingt&\multicolumn{2}{c|}{}&\multicolumn{2}{c|}{}\\\cline{1-1}
+%  vingt&\multicolumn{2}{c|}{\ColIRI{multiple l-last}}&\multicolumn{2}{c|}{\ColIRI{multiple lng-last}}\\\cline{1-1}
 %  cent&%
-%  \multicolumn{2}{c|}{\multirow{-2}{\dimexpr0.398\tabcolwidth+\arrayrulewidth+2\tabcolsep}{\centering 
-%      multiple l-last}}&%
-%  \multicolumn{2}{c|}{\multirow{-2}{\dimexpr0.398\tabcolwidth+\arrayrulewidth+2\tabcolsep}{\centering 
-%      multiple lng-last}}\\\hline
+%  \multicolumn{2}{c|}{\ColIRII{multiple l-last}}&%
+%  \multicolumn{2}{c|}{\ColIRII{multiple lng-last}}\\\hline
 %  mil&\multicolumn{4}{c|}{always}\\\hline
-%  n-illion&\multicolumn{2}{c|}{}&\multicolumn{2}{c|}{}\\\cline{1-1}
+%  n-illion&\multicolumn{2}{c|}{\ColIRI{multiple}}&%
+%           \multicolumn{2}{c|}{\ColIRI{multiple ng-last}}\\\cline{1-1}
 %  n-illiard&%
-%  \multicolumn{2}{c|}{\multirow{-2}{\dimexpr0.398\tabcolwidth+\arrayrulewidth+2\tabcolsep}{\centering 
-%      multiple}}&%
-%  \multicolumn{2}{c|}{\multirow{-2}{\dimexpr0.398\tabcolwidth+\arrayrulewidth+2\tabcolsep}{\centering 
-%      multiple ng-last}}\\\hline
+%  \multicolumn{2}{c|}{\ColIRII{multiple}}&%
+%  \multicolumn{2}{c|}{\ColIRII{multiple ng-last}}\\\hline
 %\end{tabular*}
 %
 %Les configurations qui respectent les règles d'orthographe sont les suivantes~:
@@ -889,10 +896,11 @@
 %<*fc-american.def>
 %    \end{macrocode}
 %\fi
+% \subsection{Language definition files}
 % \subsubsection{fc-american.def}
 % American English definitions
 %    \begin{macrocode}
-\ProvidesFCLanguage{american}[2013/08/17]%
+\ProvidesFCLanguage{american}[2016/01/12]%
 %    \end{macrocode}
 % Loaded fc-USenglish.def if not already loaded
 %    \begin{macrocode}
@@ -899,7 +907,7 @@
 \FCloadlang{USenglish}%
 %    \end{macrocode}
 % These are all just synonyms for the commands provided by
-% fc-USenglish.def.
+% \styfmt{fc-USenglish.def}.
 %    \begin{macrocode}
 \global\let\@ordinalMamerican\@ordinalMUSenglish
 \global\let\@ordinalFamerican\@ordinalMUSenglish
@@ -917,6 +925,9 @@
 \global\let\@OrdinalstringFamerican\@OrdinalstringMUSenglish
 \global\let\@OrdinalstringNamerican\@OrdinalstringMUSenglish
 %    \end{macrocode}
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 %\iffalse
 %    \begin{macrocode}
 %</fc-american.def>
@@ -968,7 +979,7 @@
 % \subsubsection{fc-english.def}
 % English definitions
 %    \begin{macrocode}
-\ProvidesFCLanguage{english}[2013/08/17]%
+\ProvidesFCLanguage{english}[2016/01/12]%
 %    \end{macrocode}
 % Define macro that converts a number or count register (first 
 % argument) to an ordinal, and stores the result in the 
@@ -1213,10 +1224,15 @@
 }%
 \global\let\@@numberstringenglish\@@numberstringenglish
 %    \end{macrocode}
-% All lower case version, the second argument must be a 
-% control sequence.
+% All lower case version, the second argument must be a control
+% sequence.%
+% \changes{3.02}{2016/01/12}{Replace \cs{DeclareRobustCommand} by
+% \cs{newcommand*} as robustness is handled now at top level in
+% \texttt{fmtcount.sty}, and we don't need \cs{long} macros. Concerned
+% macros are \cs{@numberstringMenglish}, \cs{@ordinalstringMenglish},
+% and \cs{@OrdinalstringMenglish}}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringMenglish}[2]{%
+\newcommand*{\@numberstringMenglish}[2]{%
   \let\@unitstring=\@@unitstringenglish
   \let\@teenstring=\@@teenstringenglish
   \let\@tenstring=\@@tenstringenglish
@@ -1485,7 +1501,7 @@
 % All lower case version. Again, the second argument must be a
 % control sequence in which the resulting text is stored.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringMenglish}[2]{%
+\newcommand*{\@ordinalstringMenglish}[2]{%
   \let\@unitthstring=\@@unitthstringenglish
   \let\@teenthstring=\@@teenthstringenglish
   \let\@tenthstring=\@@tenthstringenglish
@@ -1507,7 +1523,7 @@
 %    \end{macrocode}
 % First letter of each word in upper case:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringMenglish}[2]{%
+\newcommand*{\@OrdinalstringMenglish}[2]{%
   \let\@unitthstring=\@@Unitthstringenglish
   \let\@teenthstring=\@@Teenthstringenglish
   \let\@tenthstring=\@@Tenthstringenglish
@@ -1527,6 +1543,9 @@
 \global\let\@OrdinalstringFenglish=\@OrdinalstringMenglish
 \global\let\@OrdinalstringNenglish=\@OrdinalstringMenglish
 %    \end{macrocode}
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 %\iffalse
 %    \begin{macrocode}
 %</fc-english.def>
@@ -1574,13 +1593,38 @@
 % \subsubsection{fc-french.def}
 % Definitions for French.
 %    \begin{macrocode}
-\ProvidesFCLanguage{french}[2012/10/24]%
+\ProvidesFCLanguage{french}[2017/06/15]%
 %    \end{macrocode}
-% Package \styfmt{fcprefix} is needed to format the prefix \meta{$n$} in \meta{$n$}illion or
-% \meta{$n$}illiard.  Big numbers were developped based on reference:
-% \uref{http://www.alain.be/boece/noms\_de\_nombre.html}
-% (Package now loaded by \styfmt{fmtcount})
+% Package \styfmt{fcprefix} is needed to format the prefix \meta{$n$}
+% in \meta{$n$}illion or \meta{$n$}illiard.  Big numbers were
+% developped based on reference: \uref
+% {http://www.alain.be/boece/noms\_de\_nombre.html}. Package \styfmt
+% {fcprefix} is now loaded by \styfmt{fmtcount}.
 %
+% First of all we define two macros \cs{fc at gl@let} and \cs{fc at gl@def}
+% used in place of \cs{let} and \cs{def} within options setting
+% macros. This way we can control from outside these macros whether
+% the respective \cs{let} or \cs{def} is group-local or global. By
+% default they are defined to be group-local.
+% \changes{3.02}{2016/01/12}{First of all, make command definitions, as well as
+% options initial setting global. That is mainly a matter of:
+% \protect\begin{itemize}
+% \protect\item using \cs{gdef} instead of \cs{def},
+% \protect\item using \cs{global}\cs{let} instead of \cs{let}, and
+% \protect\item following \cs{newcommand*}\cs{\meta{foo}} by \cs{global}\cs{let}\cs{\meta{foo}}\cs{\meta{foo}}.
+% \protect\item using \cs{fc at gl@let} and \cs{fc at gl@def} in place of \cs{let}
+% \protect\item and \cs{def} within options setting macros in order to make intial
+% \protect\item setting global.
+% \protect\end{itemize}
+% Second, replace any \cs{DeclareRobustCommand} by \cs{newcommand*}
+% }
+%    \begin{macrocode}
+\ifcsundef{fc at gl@let}{\global\let\fc at gl@let\let}{\PackageError{fmtcount}{Command already defined}{Command
+\protect\fc at gl@let\space already defined.}}
+\ifcsundef{fc at gl@def}{\global\let\fc at gl@def\def}{\PackageError{fmtcount}{Command already defined}{Command
+\protect\fc at gl@def\space already defined.}}
+%    \end{macrocode}
+%
 % Options for controlling plural mark. First of all we define some temporary macro \cs{fc at french@set at plural}
 % in order to factorize code that defines an plural mark option:\newline\noindent
 % \begin{tabularx}{\linewidth}{@{}>{\raggedleft\arraybackslash\ttfamily}rX@{}}
@@ -1592,45 +1636,45 @@
 % \#6&configuration index for `\texttt{traditional o}'.
 % \end{tabularx}
 %    \begin{macrocode}
-\def\fc at french@set at plural#1#2#3#4#5#6{%
+\gdef\fc at french@set at plural#1#2#3#4#5#6{%
   \ifthenelse{\equal{#2}{reformed}}{%
-    \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#3}%
+    \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#3}%
   }{%
     \ifthenelse{\equal{#2}{traditional}}{%
-      \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#4}%
+      \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#4}%
     }{%
       \ifthenelse{\equal{#2}{reformed o}}{%
-        \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#5}%
+        \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#5}%
       }{%
         \ifthenelse{\equal{#2}{traditional o}}{%
-          \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#6}%
+          \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#6}%
         }{%
           \ifthenelse{\equal{#2}{always}}{%
-            \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{0}%
+            \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{0}%
           }{%
             \ifthenelse{\equal{#2}{never}}{%
-              \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{1}%
+              \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{1}%
             }{%
               \ifthenelse{\equal{#2}{multiple}}{%
-                \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{2}%
+                \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{2}%
               }{%
                 \ifthenelse{\equal{#2}{multiple g-last}}{%
-                  \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{3}%
+                  \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{3}%
                 }{%
                   \ifthenelse{\equal{#2}{multiple l-last}}{%
-                    \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{4}%
+                    \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{4}%
                   }{%
                     \ifthenelse{\equal{#2}{multiple lng-last}}{%
-                      \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{5}%
+                      \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{5}%
                     }{%
                       \ifthenelse{\equal{#2}{multiple ng-last}}{%
-                        \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{6}%
+                        \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at 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'.%
-                        }}}}}}}}}}}}}
+                        }}}}}}}}}}}}}%
 %    \end{macrocode}
 % Now a shorthand \cs{@tempa} is defined just to define all the options controlling plural mark. This
 % shorthand takes into account that `\texttt{reformed}' and `\texttt{traditional}' have the same effect, and
@@ -1640,7 +1684,17 @@
   \define at key{fcfrench}{#1 plural}[reformed]{%
     \fc at french@set at plural{#1}{##1}{#2}{#2}{#3}{#3}%
   }%
-}
+%    \end{macrocode}
+% Macro \cs{@tempb} takes a macro as argument, and makes its current
+% definition global. Like here it is useful when the macro name
+% contains non-letters, and we have to resort to the
+% \cs{csname}\ldots\cs{endcsname} construct.
+%    \begin{macrocode}
+  \expandafter\@tempb\csname KV at fcfrench@#1 plural\endcsname
+}%
+\def\@tempb#1{%
+  \global\let#1#1
+}%
 \@tempa{vingt}{4}{5}
 \@tempa{cent}{4}{5}
 \@tempa{mil}{0}{0}
@@ -1656,7 +1710,8 @@
   \csname KV at fcfrench@mil plural\endcsname{#1}%
   \csname KV at fcfrench@n-illion plural\endcsname{#1}%
   \csname KV at fcfrench@n-illiard plural\endcsname{#1}%
-}
+}%
+\expandafter\@tempb\csname KV at fcfrench@all plural\endcsname
 %    \end{macrocode}
 % Now options `\texttt{dash or space}', we have three possible key values:\newline\noindent
 % \begin{tabularx}{\linewidth}{@{}>{\raggedleft\arraybackslash\ttfamily}rX@{}}
@@ -1685,7 +1740,7 @@
       }%
     }%
   }%
-}
+}%
 %    \end{macrocode}
 % Option `\texttt{scale}', can take 3 possible values:\newline\noindent
 % \begin{tabularx}{\linewidth}{@{}>{\raggedleft\arraybackslash\ttfamily}rX@{}}
@@ -1712,7 +1767,7 @@
       }%
     }%
   }%
-}
+}%
 %    \end{macrocode}
 % Option `\texttt{n-illiard upto}' is ignored if `\texttt{scale}' is different from `\texttt{long}'. It can
 % take the following values:\newline\noindent
@@ -1737,7 +1792,7 @@
       \fi
       \def\fc at longscale@nilliard at upto{#1}%
     }}%
-}
+}%
 %    \end{macrocode}
 % Now, the options `\texttt{france}', `\texttt{swiss}' and `\texttt{belgian}' are defined to select the
 % dialect to use. Macro \cs{@tempa} is just a local shorthand to define each one of this option.
@@ -1746,8 +1801,8 @@
   \define at key{fcfrench}{#1}[]{%
     \PackageError{fmtcount}{Unexpected argument}{French option with key `#1' does not take
       any value}}%
-  \expandafter\def\csname KV at fcfrench@#1 at default\endcsname{%
-    \def\fmtcount at french{#1}}%
+  \csgdef{KV at fcfrench@#1 at default}{%
+    \fc at gl@def\fmtcount at french{#1}}%
 }%
 \@tempa{france}\@tempa{swiss}\@tempa{belgian}%
 %    \end{macrocode}
@@ -1754,7 +1809,7 @@
 % Make `\texttt{france}' the default dialect for `\texttt{french}' language
 % \changes{3.01}{2014-12-18}{Move French specific stuff from \styfmt{fmtcount.sty} to \styfmt{fc-french.def}.}
 %    \begin{macrocode}
-\def\fmtcount at french{france}%
+\gdef\fmtcount at french{france}%
 %    \end{macrocode}
 % Now, option `\texttt{dialect}' is now defined so that `\texttt{france}', `\texttt{swiss}' and
 % `\texttt{belgian}' can also be used as key values, which is more conventional although less concise.
@@ -1766,7 +1821,8 @@
     \def\fmtcount at french{#1}}{%
     \PackageError{fmtcount}{Invalid value `#1' to french option dialect key}
     {Option `french' can only take the values `france',
-      `belgian' or `swiss'}}}
+      `belgian' or `swiss'}}}%
+\expandafter\@tempb\csname KV at fcfrench@dialect\endcsname
 %    \end{macrocode}
 % The option \texttt{mil plural mark} allows to make the plural of \texttt{mil} to be regular,
 % i.e. \texttt{mils}, instead of \texttt{mille}. By default it is `\texttt{le}'.
@@ -1773,22 +1829,53 @@
 %    \begin{macrocode}
 \define at key{fcfrench}{mil plural mark}[le]{%
   \def\fc at frenchoptions@mil at plural@mark{#1}}
+\expandafter\@tempb\csname KV at fcfrench@mil plural mark\endcsname
 %    \end{macrocode}
 % Definition of case handling macros. This should be moved somewhere else to be commonalized between all
-% languages.
+% languages.\newline
+% \DescribeMacro{\fc at UpperCaseFirstLetter}The macro \cs{fc at UpperCaseFirstLetter} is such that
+% \cs{fc at UpperCaseFirstLetter}\meta{word}\cs{@nil} expands to \cs{word} with first letter capitalized and
+% remainder unchanged.
 %    \begin{macrocode}
-\def\fc at UpperCaseFirstLetter#1#2\@nil{%
+\gdef\fc at UpperCaseFirstLetter#1#2\@nil{%
   \uppercase{#1}#2}
-
-\def\fc at CaseIden#1\@nil{%
+%    \end{macrocode}
+% \DescribeMacro{\fc at CaseIden}The macro \cs{fc at CaseIden} is such that \cs{fc at CaseIden}\meta{word}\cs{@nil}
+% expands to \cs{word} unchanged.
+%    \begin{macrocode}
+\gdef\fc at CaseIden#1\@nil{%
   #1%
-}
-\def\fc at UpperCaseAll#1\@nil{%
+}%
+%    \end{macrocode}
+% \DescribeMacro{\fc at UpperCaseAll}The macro \cs{fc at UpperCaseAll} is such that \cs{fc at UpperCaseAll}\meta{word}\cs{@nil}
+% expands to \cs{word} all capitalized.
+%    \begin{macrocode}
+\gdef\fc at UpperCaseAll#1\@nil{%
   \uppercase{#1}%
+}%
+%    \end{macrocode}
+% \DescribeMacro{\fc at wcase}The macro \cs{fc at wcase} is the capitalizing macro for word-by-word
+% capitalization. By default we set it to identity, ie.\ no capitalization.
+%    \begin{macrocode}
+\global\let\fc at wcase\fc at CaseIden
+%    \end{macrocode}
+% \DescribeMacro{\fc at gcase}The macro \cs{fc at gcase} is the capitalizing macro for global (the completed number)
+% capitalization.  By default we set it to identity, ie.\ no capitalization.
+% \changes{3.02}{2017/06/15}{Create new macro \cs{fc at gcase} for solving
+% \uref{http://github.com/nlct/fmtcount/issues/24}{Issue \#24} about capitalization in French.}
+%    \begin{macrocode}
+\global\let\fc at gcase\fc at CaseIden
+%    \end{macrocode}
+% \DescribeMacro{\fc at apply@gcase}The macro \cs{fc at apply@gcase} simply applies \cs{fc at gcase} to \cs{@tempa},
+% knowing that \cs{@tempa} is the macro containing the result of formatting.
+%    \begin{macrocode}
+\gdef\fc at apply@gcase{%
+%    \end{macrocode}
+% First of all we expand whatever \cs{fc at wcase}\ldots\cs{@nil} found within \cs{@tempa}.
+%    \begin{macrocode}
+  \protected at edef\@tempa{\@tempa}%
+  \protected at edef\@tempa{\expandafter\fc at gcase\@tempa\@nil}%
 }
-
-\let\fc at case\fc at CaseIden
-
 %    \end{macrocode}
 % \DescribeMacro{\@ordinalMfrench}
 % \changes{3.01}{2014-11-12}{Protect \cs{`}, for solving
@@ -1814,6 +1901,7 @@
     \protected at edef#2{\number#1\relax\noexpand\fmtord{\protect\`eme}}%
   \fi
 \fi}
+\global\let\@ordinalMfrench\@ordinalMfrench
 %    \end{macrocode}
 % \DescribeMacro{\@ordinalFfrench}
 % \changes{3.01}{2014-11-10}{Protect \cs{`}, for solving
@@ -1838,15 +1926,16 @@
      \protected at edef#2{\number#1\relax\noexpand\fmtord{\protect\`eme}}%
   \fi
 \fi}
+\global\let\@ordinalFfrench\@ordinalFfrench
 %    \end{macrocode}
 % In French neutral gender and masculine gender are formally identical.
 %    \begin{macrocode}
-\let\@ordinalNfrench\@ordinalMfrench
+\global\let\@ordinalNfrench\@ordinalMfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@unitstringfrench}
 %    \begin{macrocode}
 \newcommand*{\@@unitstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
 z\'ero%
 \or un%
@@ -1860,12 +1949,13 @@
 \or neuf%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@unitstringfrench\@@unitstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@tenstringfrench}
 %    \begin{macrocode}
 \newcommand*{\@@tenstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
 \or dix%
 \or vingt%
@@ -1879,12 +1969,13 @@
 \or cent%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@tenstringfrench\@@tenstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@teenstringfrench}
 %    \begin{macrocode}
 \newcommand*{\@@teenstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
     dix%
 \or onze%
@@ -1893,12 +1984,13 @@
 \or quatorze%
 \or quinze%
 \or seize%
-\or dix\noexpand\@nil-\noexpand\fc at case sept%
-\or dix\noexpand\@nil-\noexpand\fc at case huit%
-\or dix\noexpand\@nil-\noexpand\fc at case neuf%
+\or dix\noexpand\@nil-\noexpand\fc at wcase sept%
+\or dix\noexpand\@nil-\noexpand\fc at wcase huit%
+\or dix\noexpand\@nil-\noexpand\fc at wcase neuf%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@teenstringfrench\@@teenstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@seventiesfrench}
 %    \begin{macrocode}
@@ -1910,7 +2002,8 @@
 -%
 \fi
 \@teenstring{#1}%
-}
+}%
+\global\let\@@seventiesfrench\@@seventiesfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@eightiesfrench}Macro \cs{@@eightiesfrench} is used to format numbers in the interval
 % \([80\intv 89]\). Argument as follows:\newline
@@ -1928,7 +2021,7 @@
 % \end{tabularx}
 %    \begin{macrocode}
 \newcommand*\@@eightiesfrench[1]{%
-\fc at case quatre\@nil-\noexpand\fc at case vingt%
+\fc at wcase quatre\@nil-\noexpand\fc at wcase vingt%
 \ifnum#1>0 %
   \ifnum\fc at frenchoptions@vingt at plural=0 % vingt plural=always
   s%
@@ -1967,49 +2060,56 @@
   \fi
   \noexpand\@nil
 \fi
-}
+}%
+\global\let\@@eightiesfrench\@@eightiesfrench
 \newcommand*{\@@ninetiesfrench}[1]{%
-\fc at case quatre\@nil-\noexpand\fc at case vingt%
+\fc at wcase quatre\@nil-\noexpand\fc at wcase vingt%
 \ifnum\fc at frenchoptions@vingt at plural=0 % vingt plural=always
   s%
 \fi
 \noexpand\@nil
 -\@teenstring{#1}%
-}
+}%
+\global\let\@@ninetiesfrench\@@ninetiesfrench
 \newcommand*{\@@seventiesfrenchswiss}[1]{%
 \@tenstring{7}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@seventiesfrenchswiss\@@seventiesfrenchswiss
 \newcommand*{\@@eightiesfrenchswiss}[1]{%
 \@tenstring{8}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@eightiesfrenchswiss\@@eightiesfrenchswiss
 \newcommand*{\@@ninetiesfrenchswiss}[1]{%
 \@tenstring{9}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@ninetiesfrenchswiss\@@ninetiesfrenchswiss
 %    \end{macrocode}
 % \DescribeMacro{\fc at french@common}Macro \cs{fc at french@common} does all the preliminary settings common to all
 % French dialects \& formatting options.
 %    \begin{macrocode}
 \newcommand*\fc at french@common{%
+  \let\fc at wcase\fc at CaseIden
   \let\@unitstring=\@@unitstringfrench
   \let\@teenstring=\@@teenstringfrench
   \let\@tenstring=\@@tenstringfrench
   \def\@hundred{cent}%
   \def\@andname{et}%
-}
+}%
+\global\let\fc at french@common\fc at french@common
 %    \end{macrocode}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringMfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
+\newcommand*{\@numberstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
@@ -2016,9 +2116,10 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringMfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringMfrenchswiss\@numberstringMfrenchswiss
+\newcommand*{\@numberstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -2025,9 +2126,10 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringMfrenchfrance\@numberstringMfrenchfrance
+\newcommand*{\@numberstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -2034,10 +2136,11 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
+\global\let\@numberstringMfrenchbelgian\@numberstringMfrenchbelgian
 \let\@numberstringMfrench=\@numberstringMfrenchfrance
-\DeclareRobustCommand{\@numberstringFfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
+\newcommand*{\@numberstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
@@ -2044,9 +2147,10 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringFfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringFfrenchswiss\@numberstringFfrenchswiss
+\newcommand*{\@numberstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -2053,9 +2157,10 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringFfrenchfrance\@numberstringFfrenchfrance
+\newcommand*{\@numberstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -2062,184 +2167,205 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\let\@numberstringFfrench=\@numberstringFfrenchfrance
-\let\@ordinalstringNfrench\@ordinalstringMfrench
-\DeclareRobustCommand{\@NumberstringMfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@numberstringFfrenchbelgian\@numberstringFfrenchbelgian
+\global\let\@numberstringFfrench=\@numberstringFfrenchfrance
+\global\let\@ordinalstringNfrench\@ordinalstringMfrench
+\newcommand*{\@NumberstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringMfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchswiss\@NumberstringMfrenchswiss
+\newcommand*{\@NumberstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchfrance\@NumberstringMfrenchfrance
+\newcommand*{\@NumberstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\let\@NumberstringMfrench=\@NumberstringMfrenchfrance
-\DeclareRobustCommand{\@NumberstringFfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchbelgian\@NumberstringMfrenchbelgian
+\global\let\@NumberstringMfrench=\@NumberstringMfrenchfrance
+\newcommand*{\@NumberstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringFfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringFfrenchswiss\@NumberstringFfrenchswiss
+\newcommand*{\@NumberstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringFfrenchfrance\@NumberstringFfrenchfrance
+\newcommand*{\@NumberstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\let\@NumberstringFfrench=\@NumberstringFfrenchfrance
-\let\@NumberstringNfrench\@NumberstringMfrench
-\DeclareRobustCommand{\@ordinalstringMfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
-\let\fc at first=\fc@@firstfrench
+\global\let\@NumberstringFfrenchbelgian\@NumberstringFfrenchbelgian
+\global\let\@NumberstringFfrench=\@NumberstringFfrenchfrance
+\global\let\@NumberstringNfrench\@NumberstringMfrench
+\newcommand*{\@ordinalstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
+}%
+\global\let\@ordinalstringMfrenchswiss\@ordinalstringMfrenchswiss
 \newcommand*\fc@@firstfrench{premier}
+\global\let\fc@@firstfrench\fc@@firstfrench
 %    \end{macrocode}
 % \changes{3.01}{2014-11-10}{Protect \cs{`}, for solving
 % \uref{http://github.com/nlct/fmtcount/issues/15}{Issue \#15}}
 %    \begin{macrocode}
 \newcommand*\fc@@firstFfrench{premi\protect\`ere}
-\DeclareRobustCommand{\@ordinalstringMfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\fc@@firstFfrench\fc@@firstFfrench
+\newcommand*{\@ordinalstringMfrenchfrance}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@ordinalstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@ordinalstringMfrenchfrance\@ordinalstringMfrenchfrance
+\newcommand*{\@ordinalstringMfrenchbelgian}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance
-\DeclareRobustCommand{\@ordinalstringFfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@ordinalstringMfrenchbelgian\@ordinalstringMfrenchbelgian
+\global\let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance
+\newcommand*{\@ordinalstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@ordinalstringFfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+}%
+\global\let\@ordinalstringFfrenchswiss\@ordinalstringFfrenchswiss
+\newcommand*{\@ordinalstringFfrenchfrance}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstFfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@ordinalstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+}%
+\global\let\@ordinalstringFfrenchfrance\@ordinalstringFfrenchfrance
+\newcommand*{\@ordinalstringFfrenchbelgian}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstFfrench
-\fc at 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 at case\fc at UpperCaseFirstLetter
+}%
+\global\let\@ordinalstringFfrenchbelgian\@ordinalstringFfrenchbelgian
+\global\let\@ordinalstringFfrench=\@ordinalstringFfrenchfrance
+\global\let\@ordinalstringNfrench\@ordinalstringMfrench
+\newcommand*{\@OrdinalstringMfrenchswiss}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringMfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchswiss\@OrdinalstringMfrenchswiss
+\newcommand*{\@OrdinalstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchfrance\@OrdinalstringMfrenchfrance
+\newcommand*{\@OrdinalstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance
-\DeclareRobustCommand{\@OrdinalstringFfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchbelgian\@OrdinalstringMfrenchbelgian
+\global\let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance
+\newcommand*{\@OrdinalstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringFfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@OrdinalstringFfrenchswiss\@OrdinalstringFfrenchswiss
+\newcommand*{\@OrdinalstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@OrdinalstringFfrenchfrance\@OrdinalstringFfrenchfrance
+\newcommand*{\@OrdinalstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance
-\let\@OrdinalstringNfrench\@OrdinalstringMfrench
+}%
+\global\let\@OrdinalstringFfrenchbelgian\@OrdinalstringFfrenchbelgian
+\global\let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance
+\global\let\@OrdinalstringNfrench\@OrdinalstringMfrench
 %    \end{macrocode}
 % \DescribeMacro{\fc@@do at plural@mark}Macro \cs{fc@@do at plural@mark} will expand to the plural mark of
 % \meta{$n$}illiard, \meta{$n$}illion, mil, cent or vingt, whichever is applicable. First check that the macro
@@ -2301,7 +2427,8 @@
        \fi
      \fi
   \fi
-}
+}%
+\global\let\fc@@do at plural@mark\fc@@do at plural@mark
 %    \end{macrocode}
 % \DescribeMacro{\fc@@nbrstr at Fpreamble}Macro \cs{fc@@nbrstr at Fpreamble} do the necessary preliminaries before
 % formatting a cardinal with feminine gender.
@@ -2315,24 +2442,26 @@
 \def\fc@@nbrstr at Fpreamble{%
   \fc at read@unit{\count1}{0}%
   \ifnum\count1=1 %
-      \let\fc at case@save\fc at case
-      \def\fc at case{\noexpand\fc at case}%
+      \let\fc at wcase@save\fc at wcase
+      \def\fc at wcase{\noexpand\fc at wcase}%
       \def\@nil{\noexpand\@nil}%
      \let\fc at nbrstr@postamble\fc@@nbrstr at Fpostamble
   \fi
-}
+}%
+\global\let\fc@@nbrstr at Fpreamble\fc@@nbrstr at Fpreamble
 %    \end{macrocode}
 % \DescribeMacro{\fc@@nbrstr at Fpostamble}
 %    \begin{macrocode}
 \def\fc@@nbrstr at Fpostamble{%
-  \let\fc at case\fc at case@save
+  \let\fc at wcase\fc at wcase@save
   \expandafter\fc at get@last at word\expandafter{\@tempa}\@tempb\@tempc
   \def\@tempd{un}%
   \ifx\@tempc\@tempd
     \let\@tempc\@tempa
-    \edef\@tempa{\@tempb\fc at case une\@nil}%
+    \edef\@tempa{\@tempb\fc at wcase une\@nil}%
   \fi
-}
+}%
+\global\let\fc@@nbrstr at Fpostamble\fc@@nbrstr at Fpostamble
 %    \end{macrocode}
 % \DescribeMacro{\fc@@pot at longscalefrench}Macro \cs{fc@@pot at longscalefrench} is used to produce
 % powers of ten with long scale convention. The long scale convention is correct for French and elsewhere in
@@ -2431,7 +2560,7 @@
 %    \begin{macrocode}
           \count10=\fc at frenchoptions@mil at plural\space
           \edef\@tempe{%
-            \noexpand\fc at case
+            \noexpand\fc at wcase
              mil%
              \fc@@do at plural@mark\fc at frenchoptions@mil at plural@mark
             \noexpand\@nil
@@ -2448,7 +2577,7 @@
              \count10=\csname fc at frenchoptions@n-illion at plural\endcsname\space
           \fi
           \edef\@tempe{%
-            \noexpand\fc at case
+            \noexpand\fc at wcase
             \@tempg
             \the\toks10 %
             \fc@@do at plural@mark s%
@@ -2479,7 +2608,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at longscalefrench\fc@@pot at longscalefrench
 %    \end{macrocode}
 % \DescribeMacro{\fc@@pot at shortscalefrench}Macro \cs{fc@@pot at shortscalefrench} is used to produce
 % powers of ten with short scale convention. This convention is the US convention and is not correct for
@@ -2529,7 +2659,7 @@
            \expandafter\fc@@latin at cardinal@pefix\expandafter{\the\count2}\@tempg
            \count10=\csname fc at frenchoptions@n-illion at plural\endcsname\space
            \edef\@tempe{%
-             \noexpand\fc at case
+             \noexpand\fc at wcase
              \@tempg
              illion%
              \fc@@do at plural@mark s%
@@ -2558,7 +2688,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at shortscalefrench\fc@@pot at shortscalefrench
 %    \end{macrocode}
 % \DescribeMacro{\fc@@pot at recursivefrench}Macro \cs{fc@@pot at recursivefrench} is used to produce
 % power of tens that are of the form ``million de milliards de milliards'' for \(10^{24}\). First we check
@@ -2592,7 +2723,7 @@
       \advance\count2 by -1 %
       \let\@tempe\@empty
       \edef\@tempf{\fc at frenchoptions@supermillion at dos
-        de\fc at frenchoptions@supermillion at dos\fc at case milliards\@nil}%
+        de\fc at frenchoptions@supermillion at dos\fc at wcase milliards\@nil}%
       \count11\count0 %
       \ifnum\count2>0 %
         \count3\count2 %
@@ -2649,16 +2780,16 @@
         \or
           mil\fc@@do at plural@mark\fc at frenchoptions@mil at plural@mark
           \noexpand\@nil\fc at frenchoptions@supermillion at dos
-          \noexpand\fc at case milliards% 4
+          \noexpand\fc at wcase milliards% 4
         \or
           million\fc@@do at plural@mark s%
           \noexpand\@nil\fc at frenchoptions@supermillion at dos
-          de\fc at frenchoptions@supermillion at dos\noexpand\fc at case  milliards% 5
+          de\fc at frenchoptions@supermillion at dos\noexpand\fc at wcase  milliards% 5
         \fi
       }%
       \edef\@tempe{%
         \ifx\@tempf\@empty\else
-         \expandafter\fc at case\@tempf\@nil
+         \expandafter\fc at wcase\@tempf\@nil
         \fi
         \@tempg
       }%
@@ -2667,7 +2798,7 @@
        \let\@tempe\@empty
     \fi
 %    \end{macrocode}
-% now place into \@cs{@tempa} the assignment of results \cs{@temph} and \cs{@tempe} to to \texttt{\#2} and
+% Now place into \@cs{@tempa} the assignment of results \cs{@temph} and \cs{@tempe} to \texttt{\#2} and
 % \texttt{\#3} for further propagation after closing brace.
 %    \begin{macrocode}
     \expandafter\toks\expandafter1\expandafter{\@tempe}%
@@ -2675,7 +2806,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at recursivefrench\fc@@pot at recursivefrench
 %    \end{macrocode}
 % \DescribeMacro{\fc at muladdfrench}Macro \cs{fc at muladdfrench} is used to format the sum of a number \(a\) and
 % the product of a number \(d\) by a power of ten \(10^w\). Number \(d\) is made of three consecutive digits
@@ -2773,6 +2905,7 @@
     \expandafter
   }\@tempa
 }%
+\global\let\fc at muladdfrench\fc at muladdfrench
 %    \end{macrocode}
 % \DescribeMacro{\fc at lthundredstringfrench}Macro \cs{fc at lthundredstringfrench} is used to format a number in
 % interval \([0 \intv 99]\). First we check that it is not already defined.
@@ -2875,7 +3008,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc at lthundredstringfrench\fc at lthundredstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\fc at ltthousandstringfrench}Macro \cs{fc at ltthousandstringfrench} is used to format a number in
 % interval \([0 \intv 999]\). First we check that it is not already defined.
@@ -2939,10 +3073,10 @@
        \ifnum\count2=0 %
        \else
          \ifnum\count2=1 %
-           \expandafter\fc at case\@hundred\@nil
+           \expandafter\fc at wcase\@hundred\@nil
          \else
            \@unitstring{\count2}\fc at frenchoptions@submillion at dos
-           \noexpand\fc at case\@hundred\@temps\noexpand\@nil
+           \noexpand\fc at wcase\@hundred\@temps\noexpand\@nil
          \fi
          \@tempb
        \fi
@@ -2956,7 +3090,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc at ltthousandstringfrench\fc at ltthousandstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\@@numberstringfrench}Macro \cs{@@numberstringfrench} is the main engine for formatting
 % cadinal numbers in French. First we check that the control sequence is not yet defined.
@@ -2987,7 +3122,7 @@
 % \cs{fc at sign@case} expands to `\texttt{0}', then \cs{@tempa} is defined to `' (i.e. empty) rather than to
 % `\cs{relax}'.
 %    \begin{macrocode}
-    \edef\@tempa{\ifcase\fc at sign@case\space\or\fc at case plus\@nil\or\fc at case moins\@nil\fi}%
+    \edef\@tempa{\ifcase\fc at sign@case\space\or\fc at wcase plus\@nil\or\fc at wcase moins\@nil\fi}%
     \fc at nbrstr@preamble
     \fc@@nbrstrfrench at inner
     \fc at nbrstr@postamble
@@ -2998,7 +3133,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\@@numberstringfrench\@@numberstringfrench
 %    \end{macrocode}
 % \DescribeMacro{\fc@@nbrstrfrench at inner}Common part of \cs{@@numberstringfrench} and \cs
 % {@@ordinalstringfrench}. Arguments are as follows:\newline\noindent
@@ -3055,7 +3191,8 @@
        \advance\count0 by -3 %
        \ifnum\count6>\count0 \else
     \repeat
-}
+}%
+\global\let\fc@@nbrstrfrench at inner\fc@@nbrstrfrench at inner
 %    \end{macrocode}
 % \DescribeMacro{\@@ordinalstringfrench}Macro \cs{@@ordinalstringfrench} is the main engine for formatting
 % ordinal numbers in French. First check it is not yet defined.
@@ -3103,7 +3240,7 @@
 % \changes{3.01}{2014-11-10}{Protect \cs{`}, for solving
 % \uref{http://github.com/nlct/fmtcount/issues/15}{Issue \#15}}
 %    \begin{macrocode}
-      \protected at edef\@tempa{\expandafter\fc at case\fc at first\@nil}%
+      \protected at edef\@tempa{\expandafter\fc at wcase\fc at first\@nil}%
     \else
 %    \end{macrocode}
 % Now we tamper a little bit with the plural handling options to ensure that there is no final plural mark.
@@ -3133,10 +3270,10 @@
       \@tempa{n-illion}%
       \@tempa{n-illiard}%
 %    \end{macrocode}
-% Now make \cs{fc at case} and \cs{@nil} non expandable
+% Now make \cs{fc at wcase} and \cs{@nil} non expandable
 %    \begin{macrocode}
-      \let\fc at case@save\fc at case
-      \def\fc at case{\noexpand\fc at case}%
+      \let\fc at wcase@save\fc at wcase
+      \def\fc at wcase{\noexpand\fc at wcase}%
       \def\@nil{\noexpand\@nil}%
 %    \end{macrocode}
 % In the sequel, \cs{@tempa} is used to accumulate the formatted number.
@@ -3144,9 +3281,9 @@
       \let\@tempa\@empty
       \fc@@nbrstrfrench at inner
 %    \end{macrocode}
-% Now restore \cs{fc at case}
+% Now restore \cs{fc at wcase}
 %    \begin{macrocode}
-     \let\fc at case\fc at case@save
+     \let\fc at wcase\fc at wcase@save
 %    \end{macrocode}
 % Now we add the ``i\`eme'' ending
 % \changes{3.01}{2014-11-10}{Protect \cs{`}, for solving
@@ -3156,22 +3293,26 @@
       \expandafter\fc at get@last at letter\expandafter{\@tempc}\@tempd\@tempe
       \def\@tempf{e}%
       \ifx\@tempe\@tempf
-        \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd i\protect\`eme\@nil}%
+        \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd i\protect\`eme\@nil}%
       \else
         \def\@tempf{q}%
         \ifx\@tempe\@tempf
-          \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd qui\protect\`eme\@nil}%
+          \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd qui\protect\`eme\@nil}%
         \else
           \def\@tempf{f}%
           \ifx\@tempe\@tempf
-            \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd vi\protect\`eme\@nil}%
+            \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd vi\protect\`eme\@nil}%
           \else
-            \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempc i\protect\`eme\@nil}%
+            \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempc i\protect\`eme\@nil}%
           \fi
         \fi
       \fi
     \fi
 %    \end{macrocode}
+% Apply \cs{fc at gcase} to the result.
+%    \begin{macrocode}
+    \fc at apply@gcase
+%    \end{macrocode}
 % Propagate the result --- i.e. expansion of \cs{@tempa} --- into macro \texttt{\#2} after closing brace.
 %    \begin{macrocode}
     \def\@tempb##1{\def\@tempa{\def#2{##1}}}%
@@ -3178,33 +3319,39 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\@@ordinalstringfrench\@@ordinalstringfrench
 %    \end{macrocode}
 % Macro \cs{fc at frenchoptions@setdefaults} allows to set all options to default for the French.
 %    \begin{macrocode}
 \newcommand*\fc at frenchoptions@setdefaults{%
   \csname KV at fcfrench@all plural\endcsname{reformed}%
-  \def\fc at frenchoptions@submillion at dos{-}%
-  \let\fc at frenchoptions@supermillion at dos\space
-  \let\fc at u@in at duo\@empty% Could be `u'
-  % \let\fc at poweroften\fc@@pot at longscalefrench
-  \let\fc at poweroften\fc@@pot at recursivefrench
-  \def\fc at longscale@nilliard at upto{0}% infinity
-  \def\fc at frenchoptions@mil at plural@mark{le}%
-}
-\fc at frenchoptions@setdefaults
+  \fc at gl@def\fc at frenchoptions@submillion at dos{-}%
+  \fc at gl@let\fc at frenchoptions@supermillion at dos\space
+  \fc at gl@let\fc at u@in at duo\@empty% Could be `u'
+  % \fc at gl@let\fc at poweroften\fc@@pot at longscalefrench
+  \fc at gl@let\fc at poweroften\fc@@pot at recursivefrench
+  \fc at gl@def\fc at longscale@nilliard at upto{0}% infinity
+  \fc at gl@def\fc at frenchoptions@mil at plural@mark{le}%
+}%
+\global\let\fc at frenchoptions@setdefaults\fc at frenchoptions@setdefaults
+{%
+  \let\fc at gl@def\gdef
+  \def\fc at gl@let{\global\let}%
+  \fc at frenchoptions@setdefaults
+}%
 %    \end{macrocode}
 % Make some indirection to call the current French dialect corresponding macro.
 % \changes{3.01}{2014-12-18}{Move French specific stuff from \styfmt{fmtcount.sty} to \styfmt{fc-french.def}.}
 %    \begin{macrocode}
-\def\@ordinalstringMfrench{\csuse{@ordinalstringMfrench\fmtcount at french}}%
-\def\@ordinalstringFfrench{\csuse{@ordinalstringFfrench\fmtcount at french}}%
-\def\@OrdinalstringMfrench{\csuse{@OrdinalstringMfrench\fmtcount at french}}%
-\def\@OrdinalstringFfrench{\csuse{@OrdinalstringFfrench\fmtcount at french}}%
-\def\@numberstringMfrench{\csuse{@numberstringMfrench\fmtcount at french}}%
-\def\@numberstringFfrench{\csuse{@numberstringFfrench\fmtcount at french}}%
-\def\@NumberstringMfrench{\csuse{@NumberstringMfrench\fmtcount at french}}%
-\def\@NumberstringFfrench{\csuse{@NumberstringFfrench\fmtcount at french}}%
+\gdef\@ordinalstringMfrench{\csuse{@ordinalstringMfrench\fmtcount at french}}%
+\gdef\@ordinalstringFfrench{\csuse{@ordinalstringFfrench\fmtcount at french}}%
+\gdef\@OrdinalstringMfrench{\csuse{@OrdinalstringMfrench\fmtcount at french}}%
+\gdef\@OrdinalstringFfrench{\csuse{@OrdinalstringFfrench\fmtcount at french}}%
+\gdef\@numberstringMfrench{\csuse{@numberstringMfrench\fmtcount at french}}%
+\gdef\@numberstringFfrench{\csuse{@numberstringFfrench\fmtcount at french}}%
+\gdef\@NumberstringMfrench{\csuse{@NumberstringMfrench\fmtcount at french}}%
+\gdef\@NumberstringFfrench{\csuse{@NumberstringFfrench\fmtcount at french}}%
 %    \end{macrocode}
 \iffalse Local variables: \fi
 \iffalse mode: docTeX     \fi
@@ -3257,7 +3404,7 @@
 % German definitions (thank you to K. H. Fricke for supplying
 % this information)
 %    \begin{macrocode}
-\ProvidesFCLanguage{german}[2014/06/09]%
+\ProvidesFCLanguage{german}[2016/01/12]%
 %    \end{macrocode}
 % Define macro that converts a number or count register (first
 % argument) to an ordinal, and stores the result in the
@@ -3349,10 +3496,17 @@
 }%
 \global\let\@@teenstringgerman\@@teenstringgerman
 %    \end{macrocode}
-% The results are stored in the second argument, but doesn't 
-% display anything.
+% The results are stored in the second argument, but doesn't display
+% anything.%
+% \changes{3.02}{2016/01/12}{Replace \cs{DeclareRobustCommand} by
+% \cs{newcommand*} as robustness is handled now at top level in
+% \texttt{fmtcount.sty}, and we don't need \cs{long} macros. Concerned
+% macros are \cs{@numberstringMgerman}, \cs{@NumberstringMgerman},
+% \cs{@ordinalstringMgerman}, \cs{@ordinalstringFgerman},
+% \cs{@ordinalstringNgerman}, \cs{@OrdinalstringMgerman},
+% \cs{@OrdinalstringFgerman}, and \cs{@OrdinalstringNgerman}.}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringMgerman}[2]{%
+\newcommand*{\@numberstringMgerman}[2]{%
   \let\@unitstring=\@@unitstringgerman
   \let\@teenstring=\@@teenstringgerman
   \let\@tenstring=\@@tenstringgerman
@@ -3367,7 +3521,7 @@
 %    \end{macrocode}
 % As above, but initial letters in upper case:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@NumberstringMgerman}[2]{%
+\newcommand*{\@NumberstringMgerman}[2]{%
   \@numberstringMgerman{#1}{\@@num at str}%
   \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -3380,7 +3534,7 @@
 %    \end{macrocode}
 % As above, but for ordinals.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringMgerman}[2]{%
+\newcommand*{\@ordinalstringMgerman}[2]{%
   \let\@unitthstring=\@@unitthstringMgerman
   \let\@teenthstring=\@@teenthstringMgerman
   \let\@tenthstring=\@@tenthstringMgerman
@@ -3395,7 +3549,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringFgerman}[2]{%
+\newcommand*{\@ordinalstringFgerman}[2]{%
   \let\@unitthstring=\@@unitthstringFgerman
   \let\@teenthstring=\@@teenthstringFgerman
   \let\@tenthstring=\@@tenthstringFgerman
@@ -3410,7 +3564,7 @@
 %    \end{macrocode}
 % Neuter form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringNgerman}[2]{%
+\newcommand*{\@ordinalstringNgerman}[2]{%
   \let\@unitthstring=\@@unitthstringNgerman
   \let\@teenthstring=\@@teenthstringNgerman
   \let\@tenthstring=\@@tenthstringNgerman
@@ -3425,7 +3579,7 @@
 %    \end{macrocode}
 % As above, but with initial letters in upper case.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringMgerman}[2]{%
+\newcommand*{\@OrdinalstringMgerman}[2]{%
  \@ordinalstringMgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -3433,7 +3587,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringFgerman}[2]{%
+\newcommand*{\@OrdinalstringFgerman}[2]{%
  \@ordinalstringFgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -3441,7 +3595,7 @@
 %    \end{macrocode}
 % Neuter form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringNgerman}[2]{%
+\newcommand*{\@OrdinalstringNgerman}[2]{%
  \@ordinalstringNgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -3824,7 +3978,9 @@
 %    \begin{macrocode}
 \FCloadlang{germanb}%
 %    \end{macrocode}
-
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 %\iffalse
 %    \begin{macrocode}
 %</fc-german.def>
@@ -4018,7 +4174,7 @@
 % \subsubsection{fc-portuges.def}
 % Portuguse definitions
 %    \begin{macrocode}
-\ProvidesFCLanguage{portuges}[2014/06/09]%
+\ProvidesFCLanguage{portuges}[2016/01/12]%
 %    \end{macrocode}
 % Define macro that converts a number or count register (first
 % argument) to an ordinal, and stores the result in the second
@@ -4270,8 +4426,15 @@
 % anything. Since it only affects internal macros, it shouldn't
 % affect documents created with older versions. (These internal
 % macros are not meant for use in documents.)
+% \changes{3.02}{2016/01/12}{Replace \cs{DeclareRobustCommand} by %
+\cs{newcommand*} as robustness is handled now at top level in %
+\texttt{fmtcount.sty}, and we don't need \cs{long} macros. Concerned %
+macros are \cs{@numberstringMportuges}, \cs{@numberstringFportuges},
+\cs{@NumberstringMportuges}, \cs{@NumberstringFportuges},
+\cs{@ordinalstringMportuges}, \cs{@ordinalstringFportuges},
+\cs{@OrdinalstringMportuges}, and \cs{@OrdinalstringFportuges}.}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringMportuges}[2]{%
+\newcommand*{\@numberstringMportuges}[2]{%
   \let\@unitstring=\@@unitstringportuges
   \let\@teenstring=\@@teenstringportuges
   \let\@tenstring=\@@tenstringportuges
@@ -4284,7 +4447,7 @@
 %    \end{macrocode}
 % As above, but feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringFportuges}[2]{%
+\newcommand*{\@numberstringFportuges}[2]{%
   \let\@unitstring=\@@unitstringFportuges
   \let\@teenstring=\@@teenstringportuges
   \let\@tenstring=\@@tenstringportuges
@@ -4301,7 +4464,7 @@
 %    \end{macrocode}
 % As above, but initial letters in upper case:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@NumberstringMportuges}[2]{%
+\newcommand*{\@NumberstringMportuges}[2]{%
   \let\@unitstring=\@@Unitstringportuges
   \let\@teenstring=\@@Teenstringportuges
   \let\@tenstring=\@@Tenstringportuges
@@ -4314,7 +4477,7 @@
 %    \end{macrocode}
 % As above, but feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@NumberstringFportuges}[2]{%
+\newcommand*{\@NumberstringFportuges}[2]{%
   \let\@unitstring=\@@UnitstringFportuges
   \let\@teenstring=\@@Teenstringportuges
   \let\@tenstring=\@@Tenstringportuges
@@ -4331,7 +4494,7 @@
 %    \end{macrocode}
 % As above, but for ordinals.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringMportuges}[2]{%
+\newcommand*{\@ordinalstringMportuges}[2]{%
   \let\@unitthstring=\@@unitthstringportuges
   \let\@unitstring=\@@unitstringportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -4344,7 +4507,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringFportuges}[2]{%
+\newcommand*{\@ordinalstringFportuges}[2]{%
   \let\@unitthstring=\@@unitthstringFportuges
   \let\@unitstring=\@@unitstringFportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -4361,7 +4524,7 @@
 %    \end{macrocode}
 % As above, but initial letters in upper case (masculine):
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringMportuges}[2]{%
+\newcommand*{\@OrdinalstringMportuges}[2]{%
   \let\@unitthstring=\@@Unitthstringportuges
   \let\@unitstring=\@@Unitstringportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -4374,7 +4537,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringFportuges}[2]{%
+\newcommand*{\@OrdinalstringFportuges}[2]{%
   \let\@unitthstring=\@@UnitthstringFportuges
   \let\@unitstring=\@@UnitstringFportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -4815,6 +4978,9 @@
 }%
 \global\let\@@ordinalstringportuges\@@ordinalstringportuges
 %    \end{macrocode}
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 %\iffalse
 %    \begin{macrocode}
 %</fc-portuges.def>
@@ -4865,7 +5031,7 @@
 % \subsubsection{fc-spanish.def}
 % Spanish definitions
 %    \begin{macrocode}
-\ProvidesFCLanguage{spanish}[2013/08/17]%
+\ProvidesFCLanguage{spanish}[2016/01/12]%
 %    \end{macrocode}
 % Define macro that converts a number or count register (first
 % argument) to an ordinal, and stores the result in the
@@ -5183,8 +5349,15 @@
 % Since it only affects internal macros, it shouldn't affect
 % documents created with older versions. (These internal macros
 % are not meant for use in documents.)
+% \changes{3.02}{2016/01/12}{Replace \cs{DeclareRobustCommand} by
+% \cs{newcommand*} as robustness is handled now at top level in
+% \texttt{fmtcount.sty}, and we don't need \cs{long} macros. Concerned
+% macros as \cs{@numberstringMspanish}, \cs{@numberstringFspanish},
+% \cs{@NumberstringFspanish}, \cs{@ordinalstringMspanish},
+% \cs{@ordinalstringFspanish}, \cs{@OrdinalstringMspanish}, and
+% \cs{@OrdinalstringFspanish}.}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringMspanish}[2]{%
+\newcommand*{\@numberstringMspanish}[2]{%
   \let\@unitstring=\@@unitstringspanish
   \let\@teenstring=\@@teenstringspanish
   \let\@tenstring=\@@tenstringspanish
@@ -5200,7 +5373,7 @@
 %\changes{2.0}{2012-06-18}{changed andname to `b' (correction
 %provided by Fernando Maldonado)}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@numberstringFspanish}[2]{%
+\newcommand*{\@numberstringFspanish}[2]{%
   \let\@unitstring=\@@unitstringFspanish
   \let\@teenstring=\@@teenstringspanish
   \let\@tenstring=\@@tenstringspanish
@@ -5218,7 +5391,7 @@
 %    \end{macrocode}
 % As above, but initial letters in upper case:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@NumberstringMspanish}[2]{%
+\newcommand*{\@NumberstringMspanish}[2]{%
   \let\@unitstring=\@@Unitstringspanish
   \let\@teenstring=\@@Teenstringspanish
   \let\@tenstring=\@@Tenstringspanish
@@ -5234,7 +5407,7 @@
 %\changes{2.0}{2012-06-18}{changed andname to `b' (correction
 %provided by Fernando Maldonado)}
 %    \begin{macrocode}
-\DeclareRobustCommand{\@NumberstringFspanish}[2]{%
+\newcommand*{\@NumberstringFspanish}[2]{%
   \let\@unitstring=\@@UnitstringFspanish
   \let\@teenstring=\@@Teenstringspanish
   \let\@tenstring=\@@Tenstringspanish
@@ -5252,7 +5425,7 @@
 %    \end{macrocode}
 % As above, but for ordinals.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringMspanish}[2]{%
+\newcommand*{\@ordinalstringMspanish}[2]{%
   \let\@unitthstring=\@@unitthstringspanish
   \let\@unitstring=\@@unitstringspanish
   \let\@teenthstring=\@@teenthstringspanish
@@ -5265,7 +5438,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@ordinalstringFspanish}[2]{%
+\newcommand*{\@ordinalstringFspanish}[2]{%
   \let\@unitthstring=\@@unitthstringFspanish
   \let\@unitstring=\@@unitstringFspanish
   \let\@teenthstring=\@@teenthstringFspanish
@@ -5282,7 +5455,7 @@
 %    \end{macrocode}
 % As above, but with initial letters in upper case.
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringMspanish}[2]{%
+\newcommand*{\@OrdinalstringMspanish}[2]{%
   \let\@unitthstring=\@@Unitthstringspanish
   \let\@unitstring=\@@Unitstringspanish
   \let\@teenthstring=\@@Teenthstringspanish
@@ -5295,7 +5468,7 @@
 %    \end{macrocode}
 % Feminine form:
 %    \begin{macrocode}
-\DeclareRobustCommand{\@OrdinalstringFspanish}[2]{%
+\newcommand*{\@OrdinalstringFspanish}[2]{%
   \let\@unitthstring=\@@UnitthstringFspanish
   \let\@unitstring=\@@UnitstringFspanish
   \let\@teenthstring=\@@TeenthstringFspanish
@@ -5804,8 +5977,9 @@
 }%
 \global\let\@@ordinalstringspanish\@@ordinalstringspanish
 %    \end{macrocode}
-
-%\iffalse
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi%\iffalse
 %    \begin{macrocode}
 %</fc-spanish.def>
 %    \end{macrocode}
@@ -5895,7 +6069,7 @@
 %\subsection{fcnumparser.sty}
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fcnumparser}[2012/09/28]
+\ProvidesPackage{fcnumparser}[2017/06/15]
 %    \end{macrocode}
 % \cs{fc at counter@parser} is just a shorthand to parse a number held in a counter.
 %    \begin{macrocode}
@@ -6368,26 +6542,26 @@
 \def\fc at get@last at word#1#2#3{%
   {%
 %    \end{macrocode}
-% First we split \texttt{\#1} into two parts: everything that is upto \cs{fc at case} exclusive goes to
-% \cs{toks0}, and evrything from \cs{fc at case} exclusive upto the final \cs{@nil} exclusive goes to \cs{toks1}.
+% First we split \texttt{\#1} into two parts: everything that is upto \cs{fc at wcase} exclusive goes to
+% \cs{toks0}, and evrything from \cs{fc at wcase} exclusive upto the final \cs{@nil} exclusive goes to \cs{toks1}.
 %    \begin{macrocode}
-    \def\@tempa##1\fc at case##2\@nil\fc at end{%
+    \def\@tempa##1\fc at wcase##2\@nil\fc at end{%
       \toks0{##1}%
 %    \end{macrocode}
-% Actually a dummy \cs{fc at case} is appended to \cs{toks1}, because that makes easier further checking that it
-% does not contains any other \cs{fc at case}.
+% Actually a dummy \cs{fc at wcase} is appended to \cs{toks1}, because that makes easier further checking that it
+% does not contains any other \cs{fc at wcase}.
 %    \begin{macrocode}
-      \toks1{##2\fc at case}%
+      \toks1{##2\fc at wcase}%
     }%
     \@tempa#1\fc at end
 %    \end{macrocode}
 % Now leading part upto last word should be in \cs{toks0}, and last word should be in \cs{toks1}. However we
-% need to check that this is really the last word, i.e. we need to check that there is no \cs{fc at case} inside
+% need to check that this is really the last word, i.e. we need to check that there is no \cs{fc at wcase} inside
 % \cs{toks1} other than the tailing dummy one. To that purpose we will loop while we find that \cs{toks1}
-% contains some \cs{fc at case}. First we define \cs{@tempa} to split \cs{the}\cs{toks1} between parts before and
-% after some potential \cs{fc at case}.
+% contains some \cs{fc at wcase}. First we define \cs{@tempa} to split \cs{the}\cs{toks1} between parts before and
+% after some potential \cs{fc at wcase}.
 %    \begin{macrocode}
-    \def\@tempa##1\fc at case##2\fc at end{%
+    \def\@tempa##1\fc at wcase##2\fc at end{%
       \toks2{##1}%
       \def\@tempb{##2}%
       \toks3{##2}%
@@ -6403,7 +6577,7 @@
       \expandafter\@tempa\the\toks1 \fc at end
       \ifx\@tempb\@empty
 %    \end{macrocode}
-% \cs{@tempb} empty means that the only \cs{fc at case} found in \cs{the}\cs{toks1} is the dummy one. So we end
+% \cs{@tempb} empty means that the only \cs{fc at wcase} found in \cs{the}\cs{toks1} is the dummy one. So we end
 % the loop here, \cs{toks2} contains the last word.
 %    \begin{macrocode}
         \let\next\relax
@@ -6414,7 +6588,7 @@
          \expandafter\expandafter\expandafter\@tempt
          \expandafter\expandafter\expandafter{%
            \expandafter\the\expandafter\@tempt
-           \expandafter\fc at case\the\toks2}%
+           \expandafter\fc at wcase\the\toks2}%
          \toks1\toks3 %
       \fi
       \next
@@ -7081,11 +7255,12 @@
 %<*fmtcount.sty>
 %    \end{macrocode}
 %\fi
+
 %\subsection{fmtcount.sty}
 % This section deals with the code for |fmtcount.sty|
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fmtcount}[2015/05/05 v3.01]
+\ProvidesPackage{fmtcount}[2016/01/12 v3.02]
 \RequirePackage{ifthen}
 %    \end{macrocode}
 % \changes{3.01}{2014-12-18}{Use \styfmt{xkeyval} instead of \styfmt{keyval}, so that we do not get in trouble
@@ -7463,7 +7638,7 @@
 %\end{option}
 %\begin{macro}{\fmtcountsetoptions}
 % Define command to set options.
-% \changes{3.01}{2014-12-18}{ Move French specific stuff to \styfmt{french.def}.}
+% \changes{3.01}{2014-12-18}{Move French specific stuff to \styfmt{french.def}.}
 %    \begin{macrocode}
 \def\fmtcountsetoptions{%
   \def\fmtcount at fmtord{}%
@@ -7569,8 +7744,9 @@
 %    \end{macrocode}
 %\begin{macro}{\binarynum}
 % Converts a decimal number to binary, and display.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@binary}[1]{%
+\newrobustcmd*{\@binary}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=17\relax
   \@strctr=\@DT at loopN
@@ -7600,8 +7776,9 @@
 %\end{macro}
 %\begin{macro}{\octalnum}
 % Converts a decimal number to octal, and displays.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@octal}[1]{%
+\newrobustcmd*{\@octal}[1]{%
   \ifnum#1>32768
     \PackageError{fmtcount}%
     {Value of counter too large for \protect\@octal}
@@ -7645,8 +7822,9 @@
 %\begin{macro}{\hexadecimalnum}
 % Converts a decimal number to a lowercase hexadecimal number, 
 % and displays it.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@hexadecimal}[1]{%
+\newrobustcmd*{\@hexadecimal}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=5\relax
   \@strctr=\@DT at loopN
@@ -7683,8 +7861,9 @@
 %\end{macro}
 %\begin{macro}{\Hexadecimalnum}
 % Uppercase hexadecimal
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@Hexadecimal}[1]{%
+\newrobustcmd*{\@Hexadecimal}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=5\relax
   \@strctr=\@DT at loopN
@@ -7713,8 +7892,9 @@
 %\end{macro}
 %\begin{macro}{\aaalphnum}
 % Lowercase alphabetical representation (a \ldots\ z aa \ldots\ zz)
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@aaalph}[1]{%
+\newrobustcmd*{\@aaalph}[1]{%
   \@DT at loopN=#1\relax
   \advance\@DT at loopN by -1\relax
   \divide\@DT at loopN by 26\relax
@@ -7737,8 +7917,9 @@
 %\end{macro}
 %\begin{macro}{\AAAlphnum}
 % Uppercase alphabetical representation (a \ldots\ z aa \ldots\ zz)
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@AAAlph}[1]{%
+\newrobustcmd*{\@AAAlph}[1]{%
   \@DT at loopN=#1\relax
   \advance\@DT at loopN by -1\relax
   \divide\@DT at loopN by 26\relax
@@ -7761,8 +7942,9 @@
 %\end{macro}
 %\begin{macro}{\abalphnum}
 % Lowercase alphabetical representation
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@abalph}[1]{%
+\newrobustcmd*{\@abalph}[1]{%
   \ifnum#1>17576\relax
     \PackageError{fmtcount}%
     {Value of counter too large for \protect\@abalph}%
@@ -7794,8 +7976,9 @@
 %\end{macro}
 %\begin{macro}{\ABAlphnum}
 % Uppercase alphabetical representation
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\@ABAlph}[1]{%
+\newrobustcmd*{\@ABAlph}[1]{%
   \ifnum#1>17576\relax
     \PackageError{fmtcount}%
    {Value of counter too large for \protect\@ABAlph}%
@@ -7840,8 +8023,9 @@
 %\begin{macro}{\@decimal}
 %\changes{1.31}{2009/10/02}{fixed unwanted space.}
 % Format number as a decimal, possibly padded with zeroes in front.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand{\@decimal}[1]{%
+\newrobustcmd*{\@decimal}[1]{%
   \@strctr=0\relax
   \expandafter\@fmtc at count\number#1\relax
   \@DT at loopN=\c at padzeroesN
@@ -7875,10 +8059,12 @@
 % argument is omitted.
 % Version 1.04 changed \cs{ordinal} to \cs{FCordinal}
 % to prevent it clashing with the memoir class. 
+% \changes{3.02}{2015/08/01}{Suppress useless \cs{expandafter}'s and and use \cs{value} instead tweaking with
+% \cs{csname}. Do not use any longer \cs{protect} as \cs{ordinalnum} is made robust.}
 %    \begin{macrocode}
 \newcommand{\FCordinal}[1]{%
-  \expandafter\protect\expandafter\ordinalnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \ordinalnum{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -7903,8 +8089,9 @@
 % count register instead of a counter:
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+% \changes{3.02}{2015-08-01}{Make \cs{ordinalnum} robust.}
 %    \begin{macrocode}
-\newcommand*{\ordinalnum}[1]{%
+\DeclareRobustCommand*{\ordinalnum}[1]{%
   \new at ifnextchar[%
   {\@ordinalnum{#1}}%
   {\@ordinalnum{#1}[m]}%
@@ -7947,10 +8134,16 @@
 %\begin{macro}{\storeordinal}
 % Store the ordinal (first argument
 % is identifying name, second argument is a counter.)
+% \changes{3.02}{2015-08-01}{Suppress useless \cs{expandafter}'s and and use \cs{value} instead tweaking with
+% \cs{csname}. Do not use any longer \cs{protect} as \cs{storeordinalnum} is made robust.}
+% \changes{3.02}{2016/01/08}{Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before passing to \cs{storeordinalnum}}
 %    \begin{macrocode}
 \newcommand*{\storeordinal}[2]{%
-  \expandafter\protect\expandafter\storeordinalnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeordinalnum{#1}}%
+    \expandafter
+   }\the\toks0\expandafter{%
+    \the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -7958,8 +8151,9 @@
 % Store ordinal (first argument
 % is identifying name, second argument is a number or
 % count register.)
+% \changes{3.02}{2016/01/08}{Make \cs{storeordinalnum} robust with etoolbox \cs{newrobustcmd}.}
 %    \begin{macrocode}
-\newcommand*{\storeordinalnum}[2]{%
+\newrobustcmd*{\storeordinalnum}[2]{%
   \@ifnextchar[%
   {\@storeordinalnum{#1}{#2}}%
   {\@storeordinalnum{#1}{#2}[m]}%
@@ -8001,11 +8195,16 @@
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\ordinalstring}
-% Display ordinal as a string (argument is a counter)
+%  Display ordinal as a string (argument is a counter)
+%  \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+%  and use \cs{value} instead tweaking with \cs{csname}. Do not use
+%  any longer \cs{protect} as \cs{ordinalstringnum} is made
+%  robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+%  passing to \cs{ordinalstringnum}}
 %    \begin{macrocode}
 \newcommand*{\ordinalstring}[1]{%
-  \expandafter\protect\expandafter\ordinalstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\ordinalstringnum\expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8015,8 +8214,9 @@
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
 %\changes{1.33}{2009/10/15}{Made robust}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand{\ordinalstringnum}[1]{%
+\newrobustcmd*{\ordinalstringnum}[1]{%
   \new at ifnextchar[%
   {\@ordinal at string{#1}}%
   {\@ordinal at string{#1}[m]}%
@@ -8060,10 +8260,17 @@
 % Store textual representation of number. First argument is 
 % identifying name, second argument is the counter set to the 
 % required number.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storeordinalstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before
+% passing to \cs{storeordinalstringnum}}
 %    \begin{macrocode}
 \newcommand*{\storeordinalstring}[2]{%
-  \expandafter\protect\expandafter\storeordinalstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeordinalstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8070,8 +8277,9 @@
 %\begin{macro}{\storeordinalstringnum}
 % Store textual representation of number. First argument is 
 % identifying name, second argument is a count register or number.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\storeordinalstringnum}[2]{%
+\newrobustcmd*{\storeordinalstringnum}[2]{%
   \@ifnextchar[%
   {\@store at ordinal@string{#1}{#2}}%
   {\@store at ordinal@string{#1}{#2}[m]}%
@@ -8111,10 +8319,15 @@
 %\begin{macro}{\Ordinalstring}
 % Display ordinal as a string with initial letters in upper case
 % (argument is a counter)
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{Ordinalstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{Ordinalstringnum}}
 %    \begin{macrocode}
 \newcommand*{\Ordinalstring}[1]{%
-  \expandafter\protect\expandafter\Ordinalstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\Ordinalstringnum\expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8123,8 +8336,9 @@
 % (argument is a number or count register)
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\Ordinalstringnum}[1]{%
+\newrobustcmd*{\Ordinalstringnum}[1]{%
   \new at ifnextchar[%
   {\@Ordinal at string{#1}}%
   {\@Ordinal at string{#1}[m]}%
@@ -8167,10 +8381,17 @@
 % upper case. First argument is identifying name, second argument 
 % is the counter set to the 
 % required number.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storeOrdinalstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{storeOrdinalstringnum}}
 %    \begin{macrocode}
 \newcommand*{\storeOrdinalstring}[2]{%
-  \expandafter\protect\expandafter\storeOrdinalstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeOrdinalstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8178,8 +8399,9 @@
 % Store textual representation of number, with initial letters in 
 % upper case. First argument is identifying name, second argument 
 % is a count register or number.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\storeOrdinalstringnum}[2]{%
+\newrobustcmd*{\storeOrdinalstringnum}[2]{%
   \@ifnextchar[%
   {\@store at Ordinal@string{#1}{#2}}%
   {\@store at Ordinal@string{#1}{#2}[m]}%
@@ -8219,10 +8441,17 @@
 %\begin{macro}{\storeORDINALstring}
 % Store upper case textual representation of ordinal. The first 
 % argument is identifying name, the second argument is a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storeORDINALstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before
+% passing to \cs{storeORDINALstringnum}.}
 %    \begin{macrocode}
 \newcommand*{\storeORDINALstring}[2]{%
-  \expandafter\protect\expandafter\storeORDINALstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeORDINALstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8229,8 +8458,9 @@
 %\begin{macro}{\storeORDINALstringnum}
 % As above, but the second argument is a count register or a
 % number.
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\storeORDINALstringnum}[2]{%
+\newrobustcmd*{\storeORDINALstringnum}[2]{%
   \@ifnextchar[%
   {\@store at ORDINAL@string{#1}{#2}}%
   {\@store at ORDINAL@string{#1}{#2}[m]}%
@@ -8273,10 +8503,15 @@
 %\begin{macro}{\ORDINALstring}
 % Display upper case textual representation of an ordinal. The
 % argument must be a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{ORDINALstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{ORDINALstringnum}}
 %    \begin{macrocode}
 \newcommand*{\ORDINALstring}[1]{%
-  \expandafter\protect\expandafter\ORDINALstringnum{%
-    \expandafter\the\csname c@#1\endcsname
+  \expandafter\ORDINALstringnum\expandafter{%
+    \the\value{#1}%
   }%
 }
 %    \end{macrocode}
@@ -8285,8 +8520,9 @@
 % As above, but the argument is a count register or a number.
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\ORDINALstringnum}[1]{%
+\newrobustcmd*{\ORDINALstringnum}[1]{%
   \new at ifnextchar[%
   {\@ORDINAL at string{#1}}%
   {\@ORDINAL at string{#1}[m]}%
@@ -8327,10 +8563,15 @@
 % Convert number to textual respresentation, and store. First 
 % argument is the identifying name, second argument is a counter 
 % containing the number.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storenumberstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before
+% passing to \cs{storenumberstringnum}}
 %    \begin{macrocode}
 \newcommand*{\storenumberstring}[2]{%
   \expandafter\protect\expandafter\storenumberstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+    \expandafter\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8375,10 +8616,15 @@
 %\begin{macro}{\numberstring}
 % Display textual representation of a number. The argument
 % must be a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{numberstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{numberstringnum}}
 %    \begin{macrocode}
 \newcommand*{\numberstring}[1]{%
-  \expandafter\protect\expandafter\numberstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\numberstringnum\expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8386,8 +8632,9 @@
 % As above, but the argument is a count register or a number.
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\numberstringnum}[1]{%
+\newrobustcmd*{\numberstringnum}[1]{%
   \new at ifnextchar[%
   {\@number at string{#1}}%
   {\@number at string{#1}[m]}%
@@ -8428,10 +8675,17 @@
 %\begin{macro}{\storeNumberstring}
 % Store textual representation of number. First argument is 
 % identifying name, second argument is a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storeNumberstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before
+% passing to \cs{storeNumberstringnum}}
 %    \begin{macrocode}
 \newcommand*{\storeNumberstring}[2]{%
-  \expandafter\protect\expandafter\storeNumberstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeNumberstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8476,10 +8730,15 @@
 %\begin{macro}{\Numberstring}
 % Display textual representation of number. The argument must be
 % a counter. 
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{Numberstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{Numberstringnum}}
 %    \begin{macrocode}
 \newcommand*{\Numberstring}[1]{%
-  \expandafter\protect\expandafter\Numberstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\Numberstringnum\expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8487,8 +8746,9 @@
 % As above, but the argument is a count register or number.
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\Numberstringnum}[1]{%
+\newrobustcmd*{\Numberstringnum}[1]{%
   \new at ifnextchar[%
   {\@Number at string{#1}}%
   {\@Number at string{#1}[m]}%
@@ -8528,10 +8788,17 @@
 %\begin{macro}{\storeNUMBERstring}
 % Store upper case textual representation of number. The first 
 % argument is identifying name, the second argument is a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{storeNUMBERstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#2\}} once before
+% passing to \cs{storeNUMBERstringnum}.}
 %    \begin{macrocode}
 \newcommand{\storeNUMBERstring}[2]{%
-  \expandafter\protect\expandafter\storeNUMBERstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeNUMBERstringnum{#1}}%
+    \expandafter
+    }\the\toks0\expandafter{\the\value{#2}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8579,10 +8846,15 @@
 %\begin{macro}{\NUMBERstring}
 % Display upper case textual representation of a number. The
 % argument must be a counter.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{NUMBERstringnum} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{NUMBERstringnum}.}
 %    \begin{macrocode}
 \newcommand*{\NUMBERstring}[1]{%
-  \expandafter\protect\expandafter\NUMBERstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\NUMBERstringnum\expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8590,8 +8862,9 @@
 % As above, but the argument is a count register or a number.
 %\changes{1.31}{2009/10/02}{replaced \cs{@ifnextchar} with
 %\cs{new at ifnextchar}}
+%\changes{3.02}{2016/01/08}{Made robust using \texttt{etoolbox} \cs{newrobustcmd}}
 %    \begin{macrocode}
-\newcommand*{\NUMBERstringnum}[1]{%
+\newrobustcmd*{\NUMBERstringnum}[1]{%
   \new at ifnextchar[%
   {\@NUMBER at string{#1}}%
   {\@NUMBER at string{#1}[m]}%
@@ -8630,10 +8903,16 @@
 %\end{macro}
 %\begin{macro}{\binary}
 % Number representations in other bases. Binary:
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@binary} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@binary}}
 %    \begin{macrocode}
 \providecommand*{\binary}[1]{%
-  \expandafter\protect\expandafter\@binary{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@binary
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8640,19 +8919,31 @@
 %\begin{macro}{\aaalph}
 % Like \ics{alph}, but goes beyond 26.
 % (a \ldots\ z aa \ldots zz \ldots)
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@aaalph} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@aaalph}.}
 %    \begin{macrocode}
 \providecommand*{\aaalph}[1]{%
-  \expandafter\protect\expandafter\@aaalph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@aaalph
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\AAAlph}
 % As before, but upper case.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@AAAlph} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@AAAlph}.}
 %    \begin{macrocode}
 \providecommand*{\AAAlph}[1]{%
-  \expandafter\protect\expandafter\@AAAlph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@AAAlph
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -8659,60 +8950,96 @@
 %\begin{macro}{\abalph}
 % Like \ics{alph}, but goes beyond 26. 
 % (a \ldots\ z ab \ldots az \ldots)
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@abalph} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@abalph}.}
 %    \begin{macrocode}
 \providecommand*{\abalph}[1]{%
-  \expandafter\protect\expandafter\@abalph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@abalph
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\ABAlph}
 % As above, but upper case.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@ABAlph} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@ABAlph}.}
 %    \begin{macrocode}
 \providecommand*{\ABAlph}[1]{%
-  \expandafter\protect\expandafter\@ABAlph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@ABAlph
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\hexadecimal}
 % Hexadecimal:
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@hexadecimal} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@hexadecimal}.}
 %    \begin{macrocode}
 \providecommand*{\hexadecimal}[1]{%
-  \expandafter\protect\expandafter\@hexadecimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@hexadecimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\Hexadecimal}
 % As above, but in upper case.
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@Hexadecimal} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@Hexadecimal}.}
 %    \begin{macrocode}
 \providecommand*{\Hexadecimal}[1]{%
-  \expandafter\protect\expandafter\@Hexadecimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@Hexadecimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\octal}
 % Octal:
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@octal} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@octal}}
 %    \begin{macrocode}
 \providecommand*{\octal}[1]{%
-  \expandafter\protect\expandafter\@octal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@octal
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\decimal}
 % Decimal:
+% \changes{3.02}{2016/01/08}{Suppress useless \cs{expandafter}'s and
+% and use \cs{value} instead tweaking with \cs{csname}. Do not use any
+% longer \cs{protect} as \cs{@decimal} is made
+% robust. Expand \cs{the}\cs{value}\texttt{\{\#1\}} once before
+% passing to \cs{@decimal}}
 %    \begin{macrocode}
 \providecommand*{\decimal}[1]{%
-  \expandafter\protect\expandafter\@decimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@decimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
 %
-%\subsection{Multilinguage Definitions}
+%\subsubsection{Multilinguage Definitions}
 %\begin{macro}{\@setdef at ultfmtcount}
 % If multilingual support is provided, make \cs{@numberstring}
 % etc use the correct language (if defined).

Modified: trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.ins	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/source/latex/fmtcount/fmtcount.ins	2017-06-16 22:08:02 UTC (rev 44615)
@@ -1,10 +1,10 @@
-% fmtcount.ins generated using makedtx version 0.94b 2015/5/8 16:50
+% fmtcount.ins generated using makedtx version 0.94b 2017/6/15 19:28
 \input docstrip
 
 \preamble
 
  fmtcount.dtx
- Copyright 2015 Nicola Talbot and Vincent Belaïche
+ Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-UKenglish.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-USenglish.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-american.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-american.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-american.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-american.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,7 +51,7 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{american}[2013/08/17]%
+\ProvidesFCLanguage{american}[2016/01/12]%
 \FCloadlang{USenglish}%
 \global\let\@ordinalMamerican\@ordinalMUSenglish
 \global\let\@ordinalFamerican\@ordinalMUSenglish
@@ -68,6 +68,9 @@
 \global\let\@OrdinalstringMamerican\@OrdinalstringMUSenglish
 \global\let\@OrdinalstringFamerican\@OrdinalstringMUSenglish
 \global\let\@OrdinalstringNamerican\@OrdinalstringMUSenglish
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 \endinput
 %%
 %% End of file `fc-american.def'.

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-british.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-british.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-british.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-british.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-english.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-english.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-english.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-english.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,7 +51,7 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{english}[2013/08/17]%
+\ProvidesFCLanguage{english}[2016/01/12]%
 \newcommand*\@ordinalMenglish[2]{%
 \def\@fc at ord{}%
 \@orgargctr=#1\relax
@@ -256,7 +256,7 @@
 \fi
 }%
 \global\let\@@numberstringenglish\@@numberstringenglish
-\DeclareRobustCommand{\@numberstringMenglish}[2]{%
+\newcommand*{\@numberstringMenglish}[2]{%
   \let\@unitstring=\@@unitstringenglish
   \let\@teenstring=\@@teenstringenglish
   \let\@tenstring=\@@tenstringenglish
@@ -478,7 +478,7 @@
 \fi
 }%
 \global\let\@@ordinalstringenglish\@@ordinalstringenglish
-\DeclareRobustCommand{\@ordinalstringMenglish}[2]{%
+\newcommand*{\@ordinalstringMenglish}[2]{%
   \let\@unitthstring=\@@unitthstringenglish
   \let\@teenthstring=\@@teenthstringenglish
   \let\@tenthstring=\@@tenthstringenglish
@@ -493,7 +493,7 @@
 \global\let\@ordinalstringMenglish\@ordinalstringMenglish
 \global\let\@ordinalstringFenglish=\@ordinalstringMenglish
 \global\let\@ordinalstringNenglish=\@ordinalstringMenglish
-\DeclareRobustCommand{\@OrdinalstringMenglish}[2]{%
+\newcommand*{\@OrdinalstringMenglish}[2]{%
   \let\@unitthstring=\@@Unitthstringenglish
   \let\@teenthstring=\@@Teenthstringenglish
   \let\@tenthstring=\@@Tenthstringenglish
@@ -508,6 +508,9 @@
 \global\let\@OrdinalstringMenglish\@OrdinalstringMenglish
 \global\let\@OrdinalstringFenglish=\@OrdinalstringMenglish
 \global\let\@OrdinalstringNenglish=\@OrdinalstringMenglish
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 \endinput
 %%
 %% End of file `fc-english.def'.

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-francais.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-french.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-french.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-french.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,51 +51,59 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{french}[2012/10/24]%
-\def\fc at french@set at plural#1#2#3#4#5#6{%
+\ProvidesFCLanguage{french}[2017/06/15]%
+\ifcsundef{fc at gl@let}{\global\let\fc at gl@let\let}{\PackageError{fmtcount}{Command already defined}{Command
+\protect\fc at gl@let\space already defined.}}
+\ifcsundef{fc at gl@def}{\global\let\fc at gl@def\def}{\PackageError{fmtcount}{Command already defined}{Command
+\protect\fc at gl@def\space already defined.}}
+\gdef\fc at french@set at plural#1#2#3#4#5#6{%
   \ifthenelse{\equal{#2}{reformed}}{%
-    \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#3}%
+    \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#3}%
   }{%
     \ifthenelse{\equal{#2}{traditional}}{%
-      \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#4}%
+      \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#4}%
     }{%
       \ifthenelse{\equal{#2}{reformed o}}{%
-        \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#5}%
+        \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#5}%
       }{%
         \ifthenelse{\equal{#2}{traditional o}}{%
-          \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{#6}%
+          \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{#6}%
         }{%
           \ifthenelse{\equal{#2}{always}}{%
-            \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{0}%
+            \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{0}%
           }{%
             \ifthenelse{\equal{#2}{never}}{%
-              \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{1}%
+              \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{1}%
             }{%
               \ifthenelse{\equal{#2}{multiple}}{%
-                \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{2}%
+                \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{2}%
               }{%
                 \ifthenelse{\equal{#2}{multiple g-last}}{%
-                  \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{3}%
+                  \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{3}%
                 }{%
                   \ifthenelse{\equal{#2}{multiple l-last}}{%
-                    \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{4}%
+                    \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{4}%
                   }{%
                     \ifthenelse{\equal{#2}{multiple lng-last}}{%
-                      \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{5}%
+                      \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at plural\endcsname{5}%
                     }{%
                       \ifthenelse{\equal{#2}{multiple ng-last}}{%
-                        \expandafter\def\csname fc at frenchoptions@#1 at plural\endcsname{6}%
+                        \expandafter\fc at gl@def\csname fc at frenchoptions@#1 at 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 at key{fcfrench}{#1 plural}[reformed]{%
     \fc at french@set at plural{#1}{##1}{#2}{#2}{#3}{#3}%
   }%
-}
+  \expandafter\@tempb\csname KV at fcfrench@#1 plural\endcsname
+}%
+\def\@tempb#1{%
+  \global\let#1#1
+}%
 \@tempa{vingt}{4}{5}
 \@tempa{cent}{4}{5}
 \@tempa{mil}{0}{0}
@@ -107,7 +115,8 @@
   \csname KV at fcfrench@mil plural\endcsname{#1}%
   \csname KV at fcfrench@n-illion plural\endcsname{#1}%
   \csname KV at fcfrench@n-illiard plural\endcsname{#1}%
-}
+}%
+\expandafter\@tempb\csname KV at fcfrench@all plural\endcsname
 \define at key{fcfrench}{dash or space}[reformed]{%
   \ifthenelse{\equal{#1}{traditional}}{%
     \let\fc at frenchoptions@supermillion at dos\space%
@@ -127,7 +136,7 @@
       }%
     }%
   }%
-}
+}%
 \define at key{fcfrench}{scale}[recursive]{%
   \ifthenelse{\equal{#1}{long}}{%
       \let\fc at poweroften\fc@@pot at longscalefrench
@@ -144,7 +153,7 @@
       }%
     }%
   }%
-}
+}%
 \define at key{fcfrench}{n-illiard upto}[infinity]{%
   \ifthenelse{\equal{#1}{infinity}}{%
       \def\fc at longscale@nilliard at upto{0}%
@@ -159,16 +168,16 @@
       \fi
       \def\fc at longscale@nilliard at upto{#1}%
     }}%
-}
+}%
 \def\@tempa#1{%
   \define at key{fcfrench}{#1}[]{%
     \PackageError{fmtcount}{Unexpected argument}{French option with key `#1' does not take
       any value}}%
-  \expandafter\def\csname KV at fcfrench@#1 at default\endcsname{%
-    \def\fmtcount at french{#1}}%
+  \csgdef{KV at fcfrench@#1 at default}{%
+    \fc at gl@def\fmtcount at french{#1}}%
 }%
 \@tempa{france}\@tempa{swiss}\@tempa{belgian}%
-\def\fmtcount at french{france}%
+\gdef\fmtcount at french{france}%
 \define at key{fcfrench}{dialect}[france]{%
   \ifthenelse{\equal{#1}{france}
     \or\equal{#1}{swiss}
@@ -176,21 +185,25 @@
     \def\fmtcount at french{#1}}{%
     \PackageError{fmtcount}{Invalid value `#1' to french option dialect key}
     {Option `french' can only take the values `france',
-      `belgian' or `swiss'}}}
+      `belgian' or `swiss'}}}%
+\expandafter\@tempb\csname KV at fcfrench@dialect\endcsname
 \define at key{fcfrench}{mil plural mark}[le]{%
   \def\fc at frenchoptions@mil at plural@mark{#1}}
-\def\fc at UpperCaseFirstLetter#1#2\@nil{%
+\expandafter\@tempb\csname KV at fcfrench@mil plural mark\endcsname
+\gdef\fc at UpperCaseFirstLetter#1#2\@nil{%
   \uppercase{#1}#2}
-
-\def\fc at CaseIden#1\@nil{%
+\gdef\fc at CaseIden#1\@nil{%
   #1%
-}
-\def\fc at UpperCaseAll#1\@nil{%
+}%
+\gdef\fc at UpperCaseAll#1\@nil{%
   \uppercase{#1}%
+}%
+\global\let\fc at wcase\fc at CaseIden
+\global\let\fc at gcase\fc at CaseIden
+\gdef\fc at apply@gcase{%
+  \protected at edef\@tempa{\@tempa}%
+  \protected at edef\@tempa{\expandafter\fc at gcase\@tempa\@nil}%
 }
-
-\let\fc at case\fc at CaseIden
-
 \newcommand*{\@ordinalMfrench}[2]{%
 \iffmtord at abbrv
   \ifnum#1=1 %
@@ -207,6 +220,7 @@
     \protected at edef#2{\number#1\relax\noexpand\fmtord{\protect\`eme}}%
   \fi
 \fi}
+\global\let\@ordinalMfrench\@ordinalMfrench
 \newcommand*{\@ordinalFfrench}[2]{%
 \iffmtord at abbrv
   \ifnum#1=1 %
@@ -223,9 +237,10 @@
      \protected at edef#2{\number#1\relax\noexpand\fmtord{\protect\`eme}}%
   \fi
 \fi}
-\let\@ordinalNfrench\@ordinalMfrench
+\global\let\@ordinalFfrench\@ordinalFfrench
+\global\let\@ordinalNfrench\@ordinalMfrench
 \newcommand*{\@@unitstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
 z\'ero%
 \or un%
@@ -239,9 +254,10 @@
 \or neuf%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@unitstringfrench\@@unitstringfrench
 \newcommand*{\@@tenstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
 \or dix%
 \or vingt%
@@ -255,9 +271,10 @@
 \or cent%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@tenstringfrench\@@tenstringfrench
 \newcommand*{\@@teenstringfrench}[1]{%
-\noexpand\fc at case
+\noexpand\fc at wcase
 \ifcase#1 %
     dix%
 \or onze%
@@ -266,12 +283,13 @@
 \or quatorze%
 \or quinze%
 \or seize%
-\or dix\noexpand\@nil-\noexpand\fc at case sept%
-\or dix\noexpand\@nil-\noexpand\fc at case huit%
-\or dix\noexpand\@nil-\noexpand\fc at case neuf%
+\or dix\noexpand\@nil-\noexpand\fc at wcase sept%
+\or dix\noexpand\@nil-\noexpand\fc at wcase huit%
+\or dix\noexpand\@nil-\noexpand\fc at wcase neuf%
 \fi
 \noexpand\@nil
-}
+}%
+\global\let\@@teenstringfrench\@@teenstringfrench
 \newcommand*{\@@seventiesfrench}[1]{%
 \@tenstring{6}%
 \ifnum#1=1 %
@@ -280,9 +298,10 @@
 -%
 \fi
 \@teenstring{#1}%
-}
+}%
+\global\let\@@seventiesfrench\@@seventiesfrench
 \newcommand*\@@eightiesfrench[1]{%
-\fc at case quatre\@nil-\noexpand\fc at case vingt%
+\fc at wcase quatre\@nil-\noexpand\fc at wcase vingt%
 \ifnum#1>0 %
   \ifnum\fc at frenchoptions@vingt at plural=0 % vingt plural=always
   s%
@@ -321,43 +340,50 @@
   \fi
   \noexpand\@nil
 \fi
-}
+}%
+\global\let\@@eightiesfrench\@@eightiesfrench
 \newcommand*{\@@ninetiesfrench}[1]{%
-\fc at case quatre\@nil-\noexpand\fc at case vingt%
+\fc at wcase quatre\@nil-\noexpand\fc at wcase vingt%
 \ifnum\fc at frenchoptions@vingt at plural=0 % vingt plural=always
   s%
 \fi
 \noexpand\@nil
 -\@teenstring{#1}%
-}
+}%
+\global\let\@@ninetiesfrench\@@ninetiesfrench
 \newcommand*{\@@seventiesfrenchswiss}[1]{%
 \@tenstring{7}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@seventiesfrenchswiss\@@seventiesfrenchswiss
 \newcommand*{\@@eightiesfrenchswiss}[1]{%
 \@tenstring{8}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@eightiesfrenchswiss\@@eightiesfrenchswiss
 \newcommand*{\@@ninetiesfrenchswiss}[1]{%
 \@tenstring{9}%
 \ifnum#1=1\ \@andname\ \fi
 \ifnum#1>1-\fi
 \ifnum#1>0 \@unitstring{#1}\fi
-}
+}%
+\global\let\@@ninetiesfrenchswiss\@@ninetiesfrenchswiss
 \newcommand*\fc at french@common{%
+  \let\fc at wcase\fc at CaseIden
   \let\@unitstring=\@@unitstringfrench
   \let\@teenstring=\@@teenstringfrench
   \let\@tenstring=\@@tenstringfrench
   \def\@hundred{cent}%
   \def\@andname{et}%
-}
-\DeclareRobustCommand{\@numberstringMfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
+}%
+\global\let\fc at french@common\fc at french@common
+\newcommand*{\@numberstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
@@ -364,9 +390,10 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringMfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringMfrenchswiss\@numberstringMfrenchswiss
+\newcommand*{\@numberstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -373,9 +400,10 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringMfrenchfrance\@numberstringMfrenchfrance
+\newcommand*{\@numberstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -382,10 +410,11 @@
 \let\fc at nbrstr@preamble\@empty
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
+\global\let\@numberstringMfrenchbelgian\@numberstringMfrenchbelgian
 \let\@numberstringMfrench=\@numberstringMfrenchfrance
-\DeclareRobustCommand{\@numberstringFfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
+\newcommand*{\@numberstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
@@ -392,9 +421,10 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringFfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringFfrenchswiss\@numberstringFfrenchswiss
+\newcommand*{\@numberstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -401,9 +431,10 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@numberstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@numberstringFfrenchfrance\@numberstringFfrenchfrance
+\newcommand*{\@numberstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
@@ -410,180 +441,201 @@
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
 \let\fc at nbrstr@postamble\@empty
 \@@numberstringfrench{#1}{#2}}
-\let\@numberstringFfrench=\@numberstringFfrenchfrance
-\let\@ordinalstringNfrench\@ordinalstringMfrench
-\DeclareRobustCommand{\@NumberstringMfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@numberstringFfrenchbelgian\@numberstringFfrenchbelgian
+\global\let\@numberstringFfrench=\@numberstringFfrenchfrance
+\global\let\@ordinalstringNfrench\@ordinalstringMfrench
+\newcommand*{\@NumberstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringMfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchswiss\@NumberstringMfrenchswiss
+\newcommand*{\@NumberstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchfrance\@NumberstringMfrenchfrance
+\newcommand*{\@NumberstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\@empty
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\let\@NumberstringMfrench=\@NumberstringMfrenchfrance
-\DeclareRobustCommand{\@NumberstringFfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringMfrenchbelgian\@NumberstringMfrenchbelgian
+\global\let\@NumberstringMfrench=\@NumberstringMfrenchfrance
+\newcommand*{\@NumberstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringFfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringFfrenchswiss\@NumberstringFfrenchswiss
+\newcommand*{\@NumberstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@NumberstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
+\global\let\@NumberstringFfrenchfrance\@NumberstringFfrenchfrance
+\newcommand*{\@NumberstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \let\fc at nbrstr@preamble\fc@@nbrstr at Fpreamble
-\let\fc at nbrstr@postamble\@empty
+\let\fc at nbrstr@postamble\fc at apply@gcase
 \@@numberstringfrench{#1}{#2}}
-\let\@NumberstringFfrench=\@NumberstringFfrenchfrance
-\let\@NumberstringNfrench\@NumberstringMfrench
-\DeclareRobustCommand{\@ordinalstringMfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
-\let\fc at first=\fc@@firstfrench
+\global\let\@NumberstringFfrenchbelgian\@NumberstringFfrenchbelgian
+\global\let\@NumberstringFfrench=\@NumberstringFfrenchfrance
+\global\let\@NumberstringNfrench\@NumberstringMfrench
+\newcommand*{\@ordinalstringMfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
+}%
+\global\let\@ordinalstringMfrenchswiss\@ordinalstringMfrenchswiss
 \newcommand*\fc@@firstfrench{premier}
+\global\let\fc@@firstfrench\fc@@firstfrench
 \newcommand*\fc@@firstFfrench{premi\protect\`ere}
-\DeclareRobustCommand{\@ordinalstringMfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\fc@@firstFfrench\fc@@firstFfrench
+\newcommand*{\@ordinalstringMfrenchfrance}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}}
-\DeclareRobustCommand{\@ordinalstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+\global\let\@ordinalstringMfrenchfrance\@ordinalstringMfrenchfrance
+\newcommand*{\@ordinalstringMfrenchbelgian}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance
-\DeclareRobustCommand{\@ordinalstringFfrenchswiss}[2]{%
-\let\fc at case\fc at CaseIden
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@ordinalstringMfrenchbelgian\@ordinalstringMfrenchbelgian
+\global\let\@ordinalstringMfrench=\@ordinalstringMfrenchfrance
+\newcommand*{\@ordinalstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at CaseIden
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@ordinalstringFfrenchfrance}[2]{%
-\let\fc at case\fc at CaseIden
+}%
+\global\let\@ordinalstringFfrenchswiss\@ordinalstringFfrenchswiss
+\newcommand*{\@ordinalstringFfrenchfrance}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstFfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@ordinalstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at CaseIden
+}%
+\global\let\@ordinalstringFfrenchfrance\@ordinalstringFfrenchfrance
+\newcommand*{\@ordinalstringFfrenchbelgian}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at CaseIden
 \let\fc at first=\fc@@firstFfrench
-\fc at 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 at case\fc at UpperCaseFirstLetter
+}%
+\global\let\@ordinalstringFfrenchbelgian\@ordinalstringFfrenchbelgian
+\global\let\@ordinalstringFfrench=\@ordinalstringFfrenchfrance
+\global\let\@ordinalstringNfrench\@ordinalstringMfrench
+\newcommand*{\@OrdinalstringMfrenchswiss}[2]{%
+\fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
 \let\fc at first=\fc@@firstfrench
-\fc at french@common
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringMfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchswiss\@OrdinalstringMfrenchswiss
+\newcommand*{\@OrdinalstringMfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringMfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchfrance\@OrdinalstringMfrenchfrance
+\newcommand*{\@OrdinalstringMfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance
-\DeclareRobustCommand{\@OrdinalstringFfrenchswiss}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstfrench
+}%
+\global\let\@OrdinalstringMfrenchbelgian\@OrdinalstringMfrenchbelgian
+\global\let\@OrdinalstringMfrench=\@OrdinalstringMfrenchfrance
+\newcommand*{\@OrdinalstringFfrenchswiss}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstfrench
 \let\@seventies=\@@seventiesfrenchswiss
 \let\@eighties=\@@eightiesfrenchswiss
 \let\@nineties=\@@ninetiesfrenchswiss
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringFfrenchfrance}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@OrdinalstringFfrenchswiss\@OrdinalstringFfrenchswiss
+\newcommand*{\@OrdinalstringFfrenchfrance}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\DeclareRobustCommand{\@OrdinalstringFfrenchbelgian}[2]{%
-\let\fc at case\fc at UpperCaseFirstLetter
-\let\fc at first=\fc@@firstFfrench
+}%
+\global\let\@OrdinalstringFfrenchfrance\@OrdinalstringFfrenchfrance
+\newcommand*{\@OrdinalstringFfrenchbelgian}[2]{%
 \fc at french@common
+\let\fc at gcase\fc at UpperCaseFirstLetter
+\let\fc at first\fc@@firstFfrench
 \let\@seventies=\@@seventiesfrench
 \let\@eighties=\@@eightiesfrench
 \let\@nineties=\@@ninetiesfrench
 \@@ordinalstringfrench{#1}{#2}%
-}
-\let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance
-\let\@OrdinalstringNfrench\@OrdinalstringMfrench
+}%
+\global\let\@OrdinalstringFfrenchbelgian\@OrdinalstringFfrenchbelgian
+\global\let\@OrdinalstringFfrench=\@OrdinalstringFfrenchfrance
+\global\let\@OrdinalstringNfrench\@OrdinalstringMfrench
 \ifcsundef{fc@@do at plural@mark}{}%
 {\PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc@@do at plural@mark'}}
@@ -624,7 +676,8 @@
        \fi
      \fi
   \fi
-}
+}%
+\global\let\fc@@do at plural@mark\fc@@do at plural@mark
 \ifcsundef{fc@@nbrstr at Fpreamble}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc@@nbrstr at Fpreamble'}}
@@ -631,21 +684,23 @@
 \def\fc@@nbrstr at Fpreamble{%
   \fc at read@unit{\count1}{0}%
   \ifnum\count1=1 %
-      \let\fc at case@save\fc at case
-      \def\fc at case{\noexpand\fc at case}%
+      \let\fc at wcase@save\fc at wcase
+      \def\fc at wcase{\noexpand\fc at wcase}%
       \def\@nil{\noexpand\@nil}%
      \let\fc at nbrstr@postamble\fc@@nbrstr at Fpostamble
   \fi
-}
+}%
+\global\let\fc@@nbrstr at Fpreamble\fc@@nbrstr at Fpreamble
 \def\fc@@nbrstr at Fpostamble{%
-  \let\fc at case\fc at case@save
+  \let\fc at wcase\fc at wcase@save
   \expandafter\fc at get@last at word\expandafter{\@tempa}\@tempb\@tempc
   \def\@tempd{un}%
   \ifx\@tempc\@tempd
     \let\@tempc\@tempa
-    \edef\@tempa{\@tempb\fc at case une\@nil}%
+    \edef\@tempa{\@tempb\fc at wcase une\@nil}%
   \fi
-}
+}%
+\global\let\fc@@nbrstr at Fpostamble\fc@@nbrstr at Fpostamble
 \ifcsundef{fc@@pot at longscalefrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc@@pot at longscalefrench'}}
@@ -683,7 +738,7 @@
         \ifnum\@temph=1 %
           \count10=\fc at frenchoptions@mil at plural\space
           \edef\@tempe{%
-            \noexpand\fc at case
+            \noexpand\fc at wcase
              mil%
              \fc@@do at plural@mark\fc at frenchoptions@mil at plural@mark
             \noexpand\@nil
@@ -700,7 +755,7 @@
              \count10=\csname fc at frenchoptions@n-illion at plural\endcsname\space
           \fi
           \edef\@tempe{%
-            \noexpand\fc at case
+            \noexpand\fc at wcase
             \@tempg
             \the\toks10 %
             \fc@@do at plural@mark s%
@@ -720,7 +775,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at longscalefrench\fc@@pot at longscalefrench
 \ifcsundef{fc@@pot at shortscalefrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc@@pot at shortscalefrench'}}
@@ -746,7 +802,7 @@
            \expandafter\fc@@latin at cardinal@pefix\expandafter{\the\count2}\@tempg
            \count10=\csname fc at frenchoptions@n-illion at plural\endcsname\space
            \edef\@tempe{%
-             \noexpand\fc at case
+             \noexpand\fc at wcase
              \@tempg
              illion%
              \fc@@do at plural@mark s%
@@ -766,7 +822,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at shortscalefrench\fc@@pot at shortscalefrench
 \ifcsundef{fc@@pot at recursivefrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc@@pot at recursivefrench'}}
@@ -781,7 +838,7 @@
       \advance\count2 by -1 %
       \let\@tempe\@empty
       \edef\@tempf{\fc at frenchoptions@supermillion at dos
-        de\fc at frenchoptions@supermillion at dos\fc at case milliards\@nil}%
+        de\fc at frenchoptions@supermillion at dos\fc at wcase milliards\@nil}%
       \count11\count0 %
       \ifnum\count2>0 %
         \count3\count2 %
@@ -838,16 +895,16 @@
         \or
           mil\fc@@do at plural@mark\fc at frenchoptions@mil at plural@mark
           \noexpand\@nil\fc at frenchoptions@supermillion at dos
-          \noexpand\fc at case milliards% 4
+          \noexpand\fc at wcase milliards% 4
         \or
           million\fc@@do at plural@mark s%
           \noexpand\@nil\fc at frenchoptions@supermillion at dos
-          de\fc at frenchoptions@supermillion at dos\noexpand\fc at case  milliards% 5
+          de\fc at frenchoptions@supermillion at dos\noexpand\fc at wcase  milliards% 5
         \fi
       }%
       \edef\@tempe{%
         \ifx\@tempf\@empty\else
-         \expandafter\fc at case\@tempf\@nil
+         \expandafter\fc at wcase\@tempf\@nil
         \fi
         \@tempg
       }%
@@ -860,7 +917,8 @@
     \edef\@tempa{\the\toks0 \@temph \def\noexpand#3{\the\toks1}}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc@@pot at recursivefrench\fc@@pot at recursivefrench
 \ifcsundef{fc at muladdfrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc at muladdfrench'}}
@@ -909,6 +967,7 @@
     \expandafter
   }\@tempa
 }%
+\global\let\fc at muladdfrench\fc at muladdfrench
 \ifcsundef{fc at lthundredstringfrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc at lthundredstringfrench'}}
@@ -978,7 +1037,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc at lthundredstringfrench\fc at lthundredstringfrench
 \ifcsundef{fc at ltthousandstringfrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `fc at ltthousandstringfrench'}}
@@ -1016,10 +1076,10 @@
        \ifnum\count2=0 %
        \else
          \ifnum\count2=1 %
-           \expandafter\fc at case\@hundred\@nil
+           \expandafter\fc at wcase\@hundred\@nil
          \else
            \@unitstring{\count2}\fc at frenchoptions@submillion at dos
-           \noexpand\fc at case\@hundred\@temps\noexpand\@nil
+           \noexpand\fc at wcase\@hundred\@temps\noexpand\@nil
          \fi
          \@tempb
        \fi
@@ -1030,7 +1090,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\fc at ltthousandstringfrench\fc at ltthousandstringfrench
 \ifcsundef{@@numberstringfrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro `@@numberstringfrench'}}
 \def\@@numberstringfrench#1#2{%
@@ -1041,7 +1102,7 @@
        \PackageError{fmtcount}{Out of range}%
           {This macro does not work with fractional numbers}%
     \fi
-    \edef\@tempa{\ifcase\fc at sign@case\space\or\fc at case plus\@nil\or\fc at case moins\@nil\fi}%
+    \edef\@tempa{\ifcase\fc at sign@case\space\or\fc at wcase plus\@nil\or\fc at wcase moins\@nil\fi}%
     \fc at nbrstr@preamble
     \fc@@nbrstrfrench at inner
     \fc at nbrstr@postamble
@@ -1049,7 +1110,8 @@
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\@@numberstringfrench\@@numberstringfrench
 \def\fc@@nbrstrfrench at inner{%
     \count0=\fc at max@weight
     \divide\count0 by 3 %
@@ -1070,7 +1132,8 @@
        \advance\count0 by -3 %
        \ifnum\count6>\count0 \else
     \repeat
-}
+}%
+\global\let\fc@@nbrstrfrench at inner\fc@@nbrstrfrench at inner
 \ifcsundef{@@ordinalstringfrench}{}{%
   \PackageError{fmtcount}{Duplicate definition}{Redefinition of macro
     `@@ordinalstringfrench'}}
@@ -1096,7 +1159,7 @@
       \count0=0 %
     \fi
     \ifnum\count0=1 %
-      \protected at edef\@tempa{\expandafter\fc at case\fc at first\@nil}%
+      \protected at edef\@tempa{\expandafter\fc at wcase\fc at first\@nil}%
     \else
       \def\@tempa##1{%
         \expandafter\edef\csname fc at frenchoptions@##1 at plural\endcsname{%
@@ -1122,55 +1185,62 @@
       \@tempa{mil}%
       \@tempa{n-illion}%
       \@tempa{n-illiard}%
-      \let\fc at case@save\fc at case
-      \def\fc at case{\noexpand\fc at case}%
+      \let\fc at wcase@save\fc at wcase
+      \def\fc at wcase{\noexpand\fc at wcase}%
       \def\@nil{\noexpand\@nil}%
       \let\@tempa\@empty
       \fc@@nbrstrfrench at inner
-     \let\fc at case\fc at case@save
+     \let\fc at wcase\fc at wcase@save
       \expandafter\fc at get@last at word\expandafter{\@tempa}\@tempb\@tempc
       \expandafter\fc at get@last at letter\expandafter{\@tempc}\@tempd\@tempe
       \def\@tempf{e}%
       \ifx\@tempe\@tempf
-        \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd i\protect\`eme\@nil}%
+        \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd i\protect\`eme\@nil}%
       \else
         \def\@tempf{q}%
         \ifx\@tempe\@tempf
-          \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd qui\protect\`eme\@nil}%
+          \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd qui\protect\`eme\@nil}%
         \else
           \def\@tempf{f}%
           \ifx\@tempe\@tempf
-            \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempd vi\protect\`eme\@nil}%
+            \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempd vi\protect\`eme\@nil}%
           \else
-            \protected at edef\@tempa{\@tempb\expandafter\fc at case\@tempc i\protect\`eme\@nil}%
+            \protected at edef\@tempa{\@tempb\expandafter\fc at wcase\@tempc i\protect\`eme\@nil}%
           \fi
         \fi
       \fi
     \fi
+    \fc at apply@gcase
     \def\@tempb##1{\def\@tempa{\def#2{##1}}}%
     \expandafter\@tempb\expandafter{\@tempa}%
     \expandafter
   }\@tempa
-}
+}%
+\global\let\@@ordinalstringfrench\@@ordinalstringfrench
 \newcommand*\fc at frenchoptions@setdefaults{%
   \csname KV at fcfrench@all plural\endcsname{reformed}%
-  \def\fc at frenchoptions@submillion at dos{-}%
-  \let\fc at frenchoptions@supermillion at dos\space
-  \let\fc at u@in at duo\@empty% Could be `u'
-  % \let\fc at poweroften\fc@@pot at longscalefrench
-  \let\fc at poweroften\fc@@pot at recursivefrench
-  \def\fc at longscale@nilliard at upto{0}% infinity
-  \def\fc at frenchoptions@mil at plural@mark{le}%
-}
-\fc at frenchoptions@setdefaults
-\def\@ordinalstringMfrench{\csuse{@ordinalstringMfrench\fmtcount at french}}%
-\def\@ordinalstringFfrench{\csuse{@ordinalstringFfrench\fmtcount at french}}%
-\def\@OrdinalstringMfrench{\csuse{@OrdinalstringMfrench\fmtcount at french}}%
-\def\@OrdinalstringFfrench{\csuse{@OrdinalstringFfrench\fmtcount at french}}%
-\def\@numberstringMfrench{\csuse{@numberstringMfrench\fmtcount at french}}%
-\def\@numberstringFfrench{\csuse{@numberstringFfrench\fmtcount at french}}%
-\def\@NumberstringMfrench{\csuse{@NumberstringMfrench\fmtcount at french}}%
-\def\@NumberstringFfrench{\csuse{@NumberstringFfrench\fmtcount at french}}%
+  \fc at gl@def\fc at frenchoptions@submillion at dos{-}%
+  \fc at gl@let\fc at frenchoptions@supermillion at dos\space
+  \fc at gl@let\fc at u@in at duo\@empty% Could be `u'
+  % \fc at gl@let\fc at poweroften\fc@@pot at longscalefrench
+  \fc at gl@let\fc at poweroften\fc@@pot at recursivefrench
+  \fc at gl@def\fc at longscale@nilliard at upto{0}% infinity
+  \fc at gl@def\fc at frenchoptions@mil at plural@mark{le}%
+}%
+\global\let\fc at frenchoptions@setdefaults\fc at frenchoptions@setdefaults
+{%
+  \let\fc at gl@def\gdef
+  \def\fc at gl@let{\global\let}%
+  \fc at frenchoptions@setdefaults
+}%
+\gdef\@ordinalstringMfrench{\csuse{@ordinalstringMfrench\fmtcount at french}}%
+\gdef\@ordinalstringFfrench{\csuse{@ordinalstringFfrench\fmtcount at french}}%
+\gdef\@OrdinalstringMfrench{\csuse{@OrdinalstringMfrench\fmtcount at french}}%
+\gdef\@OrdinalstringFfrench{\csuse{@OrdinalstringFfrench\fmtcount at french}}%
+\gdef\@numberstringMfrench{\csuse{@numberstringMfrench\fmtcount at french}}%
+\gdef\@numberstringFfrench{\csuse{@numberstringFfrench\fmtcount at french}}%
+\gdef\@NumberstringMfrench{\csuse{@NumberstringMfrench\fmtcount at french}}%
+\gdef\@NumberstringFfrench{\csuse{@NumberstringFfrench\fmtcount at french}}%
 \iffalse Local variables: \fi
 \iffalse mode: docTeX     \fi
 \iffalse End:             \fi

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-frenchb.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-german.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-german.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-german.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-german.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,7 +51,7 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{german}[2014/06/09]%
+\ProvidesFCLanguage{german}[2016/01/12]%
 \newcommand{\@ordinalMgerman}[2]{%
   \edef#2{\number#1\relax.}%
 }%
@@ -113,7 +113,7 @@
   \fi
 }%
 \global\let\@@teenstringgerman\@@teenstringgerman
-\DeclareRobustCommand{\@numberstringMgerman}[2]{%
+\newcommand*{\@numberstringMgerman}[2]{%
   \let\@unitstring=\@@unitstringgerman
   \let\@teenstring=\@@teenstringgerman
   \let\@tenstring=\@@tenstringgerman
@@ -122,7 +122,7 @@
 \global\let\@numberstringMgerman\@numberstringMgerman
 \global\let\@numberstringFgerman=\@numberstringMgerman
 \global\let\@numberstringNgerman=\@numberstringMgerman
-\DeclareRobustCommand{\@NumberstringMgerman}[2]{%
+\newcommand*{\@NumberstringMgerman}[2]{%
   \@numberstringMgerman{#1}{\@@num at str}%
   \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -129,7 +129,7 @@
 \global\let\@NumberstringMgerman\@NumberstringMgerman
 \global\let\@NumberstringFgerman=\@NumberstringMgerman
 \global\let\@NumberstringNgerman=\@NumberstringMgerman
-\DeclareRobustCommand{\@ordinalstringMgerman}[2]{%
+\newcommand*{\@ordinalstringMgerman}[2]{%
   \let\@unitthstring=\@@unitthstringMgerman
   \let\@teenthstring=\@@teenthstringMgerman
   \let\@tenthstring=\@@tenthstringMgerman
@@ -141,7 +141,7 @@
   \@@ordinalstringgerman{#1}{#2}%
 }%
 \global\let\@ordinalstringMgerman\@ordinalstringMgerman
-\DeclareRobustCommand{\@ordinalstringFgerman}[2]{%
+\newcommand*{\@ordinalstringFgerman}[2]{%
   \let\@unitthstring=\@@unitthstringFgerman
   \let\@teenthstring=\@@teenthstringFgerman
   \let\@tenthstring=\@@tenthstringFgerman
@@ -153,7 +153,7 @@
   \@@ordinalstringgerman{#1}{#2}%
 }%
 \global\let\@ordinalstringFgerman\@ordinalstringFgerman
-\DeclareRobustCommand{\@ordinalstringNgerman}[2]{%
+\newcommand*{\@ordinalstringNgerman}[2]{%
   \let\@unitthstring=\@@unitthstringNgerman
   \let\@teenthstring=\@@teenthstringNgerman
   \let\@tenthstring=\@@tenthstringNgerman
@@ -165,17 +165,17 @@
   \@@ordinalstringgerman{#1}{#2}%
 }%
 \global\let\@ordinalstringNgerman\@ordinalstringNgerman
-\DeclareRobustCommand{\@OrdinalstringMgerman}[2]{%
+\newcommand*{\@OrdinalstringMgerman}[2]{%
  \@ordinalstringMgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
 \global\let\@OrdinalstringMgerman\@OrdinalstringMgerman
-\DeclareRobustCommand{\@OrdinalstringFgerman}[2]{%
+\newcommand*{\@OrdinalstringFgerman}[2]{%
  \@ordinalstringFgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
 \global\let\@OrdinalstringFgerman\@OrdinalstringFgerman
-\DeclareRobustCommand{\@OrdinalstringNgerman}[2]{%
+\newcommand*{\@OrdinalstringNgerman}[2]{%
  \@ordinalstringNgerman{#1}{\@@num at str}%
  \edef#2{\noexpand\MakeUppercase\expandonce\@@num at str}%
 }%
@@ -470,7 +470,9 @@
 }%
 \global\let\@@ordinalstringgerman\@@ordinalstringgerman
 \FCloadlang{germanb}%
-
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 \endinput
 %%
 %% End of file `fc-german.def'.

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-germanb.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-italian.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-ngerman.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-ngermanb.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-portuges.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,7 +51,7 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{portuges}[2014/06/09]%
+\ProvidesFCLanguage{portuges}[2016/01/12]%
 \newcommand*\@ordinalMportuges[2]{%
   \ifnum#1=0\relax
     \edef#2{\number#1}%
@@ -245,7 +245,13 @@
   \fi
 }%
 \global\let\@@HundredstringFportuges\@@HundredstringFportuges
-\DeclareRobustCommand{\@numberstringMportuges}[2]{%
+\cs{newcommand*} as robustness is handled now at top level in %
+\texttt{fmtcount.sty}, and we don't need \cs{long} macros. Concerned %
+macros are \cs{@numberstringMportuges}, \cs{@numberstringFportuges},
+\cs{@NumberstringMportuges}, \cs{@NumberstringFportuges},
+\cs{@ordinalstringMportuges}, \cs{@ordinalstringFportuges},
+\cs{@OrdinalstringMportuges}, and \cs{@OrdinalstringFportuges}.}
+\newcommand*{\@numberstringMportuges}[2]{%
   \let\@unitstring=\@@unitstringportuges
   \let\@teenstring=\@@teenstringportuges
   \let\@tenstring=\@@tenstringportuges
@@ -255,7 +261,7 @@
   \@@numberstringportuges{#1}{#2}%
 }%
 \global\let\@numberstringMportuges\@numberstringMportuges
-\DeclareRobustCommand{\@numberstringFportuges}[2]{%
+\newcommand*{\@numberstringFportuges}[2]{%
   \let\@unitstring=\@@unitstringFportuges
   \let\@teenstring=\@@teenstringportuges
   \let\@tenstring=\@@tenstringportuges
@@ -266,7 +272,7 @@
 }%
 \global\let\@numberstringFportuges\@numberstringFportuges
 \global\let\@numberstringNportuges\@numberstringMportuges
-\DeclareRobustCommand{\@NumberstringMportuges}[2]{%
+\newcommand*{\@NumberstringMportuges}[2]{%
   \let\@unitstring=\@@Unitstringportuges
   \let\@teenstring=\@@Teenstringportuges
   \let\@tenstring=\@@Tenstringportuges
@@ -276,7 +282,7 @@
   \@@numberstringportuges{#1}{#2}%
 }%
 \global\let\@NumberstringMportuges\@NumberstringMportuges
-\DeclareRobustCommand{\@NumberstringFportuges}[2]{%
+\newcommand*{\@NumberstringFportuges}[2]{%
   \let\@unitstring=\@@UnitstringFportuges
   \let\@teenstring=\@@Teenstringportuges
   \let\@tenstring=\@@Tenstringportuges
@@ -287,7 +293,7 @@
 }%
 \global\let\@NumberstringFportuges\@NumberstringFportuges
 \global\let\@NumberstringNportuges\@NumberstringMportuges
-\DeclareRobustCommand{\@ordinalstringMportuges}[2]{%
+\newcommand*{\@ordinalstringMportuges}[2]{%
   \let\@unitthstring=\@@unitthstringportuges
   \let\@unitstring=\@@unitstringportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -297,7 +303,7 @@
   \@@ordinalstringportuges{#1}{#2}%
 }%
 \global\let\@ordinalstringMportuges\@ordinalstringMportuges
-\DeclareRobustCommand{\@ordinalstringFportuges}[2]{%
+\newcommand*{\@ordinalstringFportuges}[2]{%
   \let\@unitthstring=\@@unitthstringFportuges
   \let\@unitstring=\@@unitstringFportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -308,7 +314,7 @@
 }%
 \global\let\@ordinalstringFportuges\@ordinalstringFportuges
 \global\let\@ordinalstringNportuges\@ordinalstringMportuges
-\DeclareRobustCommand{\@OrdinalstringMportuges}[2]{%
+\newcommand*{\@OrdinalstringMportuges}[2]{%
   \let\@unitthstring=\@@Unitthstringportuges
   \let\@unitstring=\@@Unitstringportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -318,7 +324,7 @@
   \@@ordinalstringportuges{#1}{#2}%
 }%
 \global\let\@OrdinalstringMportuges\@OrdinalstringMportuges
-\DeclareRobustCommand{\@OrdinalstringFportuges}[2]{%
+\newcommand*{\@OrdinalstringFportuges}[2]{%
   \let\@unitthstring=\@@UnitthstringFportuges
   \let\@unitstring=\@@UnitstringFportuges
   \let\@teenthstring=\@@teenthstringportuges
@@ -702,6 +708,9 @@
 \fi
 }%
 \global\let\@@ordinalstringportuges\@@ordinalstringportuges
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi
 \endinput
 %%
 %% End of file `fc-portuges.def'.

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-portuguese.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fc-spanish.def,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,7 +51,7 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
-\ProvidesFCLanguage{spanish}[2013/08/17]%
+\ProvidesFCLanguage{spanish}[2016/01/12]%
 \newcommand*\@ordinalMspanish[2]{%
   \edef#2{\number#1\relax\noexpand\fmtord{o}}%
 }%
@@ -297,7 +297,7 @@
   \fi
 }%
 \global\let\@@HundredstringFspanish\@@HundredstringFspanish
-\DeclareRobustCommand{\@numberstringMspanish}[2]{%
+\newcommand*{\@numberstringMspanish}[2]{%
   \let\@unitstring=\@@unitstringspanish
   \let\@teenstring=\@@teenstringspanish
   \let\@tenstring=\@@tenstringspanish
@@ -308,7 +308,7 @@
   \@@numberstringspanish{#1}{#2}%
 }%
 \global\let\@numberstringMspanish\@numberstringMspanish
-\DeclareRobustCommand{\@numberstringFspanish}[2]{%
+\newcommand*{\@numberstringFspanish}[2]{%
   \let\@unitstring=\@@unitstringFspanish
   \let\@teenstring=\@@teenstringspanish
   \let\@tenstring=\@@tenstringspanish
@@ -320,7 +320,7 @@
 }%
 \global\let\@numberstringFspanish\@numberstringFspanish
 \global\let\@numberstringNspanish\@numberstringMspanish
-\DeclareRobustCommand{\@NumberstringMspanish}[2]{%
+\newcommand*{\@NumberstringMspanish}[2]{%
   \let\@unitstring=\@@Unitstringspanish
   \let\@teenstring=\@@Teenstringspanish
   \let\@tenstring=\@@Tenstringspanish
@@ -331,7 +331,7 @@
   \@@numberstringspanish{#1}{#2}%
 }%
 \global\let\@NumberstringMspanish\@NumberstringMspanish
-\DeclareRobustCommand{\@NumberstringFspanish}[2]{%
+\newcommand*{\@NumberstringFspanish}[2]{%
   \let\@unitstring=\@@UnitstringFspanish
   \let\@teenstring=\@@Teenstringspanish
   \let\@tenstring=\@@Tenstringspanish
@@ -343,7 +343,7 @@
 }%
 \global\let\@NumberstringFspanish\@NumberstringFspanish
 \global\let\@NumberstringNspanish\@NumberstringMspanish
-\DeclareRobustCommand{\@ordinalstringMspanish}[2]{%
+\newcommand*{\@ordinalstringMspanish}[2]{%
   \let\@unitthstring=\@@unitthstringspanish
   \let\@unitstring=\@@unitstringspanish
   \let\@teenthstring=\@@teenthstringspanish
@@ -353,7 +353,7 @@
   \@@ordinalstringspanish{#1}{#2}%
 }%
 \global\let\@ordinalstringMspanish\@ordinalstringMspanish
-\DeclareRobustCommand{\@ordinalstringFspanish}[2]{%
+\newcommand*{\@ordinalstringFspanish}[2]{%
   \let\@unitthstring=\@@unitthstringFspanish
   \let\@unitstring=\@@unitstringFspanish
   \let\@teenthstring=\@@teenthstringFspanish
@@ -364,7 +364,7 @@
 }%
 \global\let\@ordinalstringFspanish\@ordinalstringFspanish
 \global\let\@ordinalstringNspanish\@ordinalstringMspanish
-\DeclareRobustCommand{\@OrdinalstringMspanish}[2]{%
+\newcommand*{\@OrdinalstringMspanish}[2]{%
   \let\@unitthstring=\@@Unitthstringspanish
   \let\@unitstring=\@@Unitstringspanish
   \let\@teenthstring=\@@Teenthstringspanish
@@ -374,7 +374,7 @@
   \@@ordinalstringspanish{#1}{#2}%
 }
 \global\let\@OrdinalstringMspanish\@OrdinalstringMspanish
-\DeclareRobustCommand{\@OrdinalstringFspanish}[2]{%
+\newcommand*{\@OrdinalstringFspanish}[2]{%
   \let\@unitthstring=\@@UnitthstringFspanish
   \let\@unitstring=\@@UnitstringFspanish
   \let\@teenthstring=\@@TeenthstringFspanish
@@ -811,7 +811,9 @@
 \fi
 }%
 \global\let\@@ordinalstringspanish\@@ordinalstringspanish
-
+\iffalse Local variables: \fi
+\iffalse mode: docTeX     \fi
+\iffalse End:             \fi%\iffalse
 \endinput
 %%
 %% End of file `fc-spanish.def'.

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fcnumparser.sty,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -52,7 +52,7 @@
 %% coding: utf-8
 %% End:
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fcnumparser}[2012/09/28]
+\ProvidesPackage{fcnumparser}[2017/06/15]
 \def\fc at counter@parser#1{%
   \expandafter\fc at number@parser\expandafter{\the#1.}%
 }
@@ -332,12 +332,12 @@
     of macro `fc at get@last at word'}}%
 \def\fc at get@last at word#1#2#3{%
   {%
-    \def\@tempa##1\fc at case##2\@nil\fc at end{%
+    \def\@tempa##1\fc at wcase##2\@nil\fc at end{%
       \toks0{##1}%
-      \toks1{##2\fc at case}%
+      \toks1{##2\fc at wcase}%
     }%
     \@tempa#1\fc at end
-    \def\@tempa##1\fc at case##2\fc at end{%
+    \def\@tempa##1\fc at wcase##2\fc at end{%
       \toks2{##1}%
       \def\@tempb{##2}%
       \toks3{##2}%
@@ -351,7 +351,7 @@
          \expandafter\expandafter\expandafter\@tempt
          \expandafter\expandafter\expandafter{%
            \expandafter\the\expandafter\@tempt
-           \expandafter\fc at case\the\toks2}%
+           \expandafter\fc at wcase\the\toks2}%
          \toks1\toks3 %
       \fi
       \next

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fcprefix.sty,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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

Modified: trunk/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty	2017-06-16 08:53:43 UTC (rev 44614)
+++ trunk/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty	2017-06-16 22:08:02 UTC (rev 44615)
@@ -7,7 +7,7 @@
 %% fmtcount.dtx  (with options: `fmtcount.sty,package')
 %% 
 %%  fmtcount.dtx
-%%  Copyright 2015 Nicola Talbot and Vincent Belaïche
+%%  Copyright 2017 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
@@ -51,8 +51,9 @@
 %% Local Variables:
 %% coding: utf-8
 %% End:
+
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fmtcount}[2015/05/05 v3.01]
+\ProvidesPackage{fmtcount}[2016/01/12 v3.02]
 \RequirePackage{ifthen}
 \RequirePackage{xkeyval}
 \RequirePackage{etoolbox}
@@ -277,7 +278,7 @@
 \newif\if at DT@padzeroes
 \newcount\@DT at loopN
 \newcount\@DT at X
-\newcommand*{\@binary}[1]{%
+\newrobustcmd*{\@binary}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=17\relax
   \@strctr=\@DT at loopN
@@ -303,7 +304,7 @@
 }
 
 \let\binarynum=\@binary
-\newcommand*{\@octal}[1]{%
+\newrobustcmd*{\@octal}[1]{%
   \ifnum#1>32768
     \PackageError{fmtcount}%
     {Value of counter too large for \protect\@octal}
@@ -337,7 +338,7 @@
   \ifcase#10\or1\or2\or3\or4\or5\or
   6\or7\or8\or9\or a\or b\or c\or d\or e\or f\fi
 }
-\newcommand*{\@hexadecimal}[1]{%
+\newrobustcmd*{\@hexadecimal}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=5\relax
   \@strctr=\@DT at loopN
@@ -365,7 +366,7 @@
   \ifcase#10\or1\or2\or3\or4\or5\or6\or
   7\or8\or9\or A\or B\or C\or D\or E\or F\fi
 }
-\newcommand*{\@Hexadecimal}[1]{%
+\newrobustcmd*{\@Hexadecimal}[1]{%
   \@DT at padzeroestrue
   \@DT at loopN=5\relax
   \@strctr=\@DT at loopN
@@ -390,7 +391,7 @@
 }
 
 \let\Hexadecimalnum=\@Hexadecimal
-\newcommand*{\@aaalph}[1]{%
+\newrobustcmd*{\@aaalph}[1]{%
   \@DT at loopN=#1\relax
   \advance\@DT at loopN by -1\relax
   \divide\@DT at loopN by 26\relax
@@ -409,7 +410,7 @@
 }
 
 \let\aaalphnum=\@aaalph
-\newcommand*{\@AAAlph}[1]{%
+\newrobustcmd*{\@AAAlph}[1]{%
   \@DT at loopN=#1\relax
   \advance\@DT at loopN by -1\relax
   \divide\@DT at loopN by 26\relax
@@ -428,7 +429,7 @@
 }
 
 \let\AAAlphnum=\@AAAlph
-\newcommand*{\@abalph}[1]{%
+\newrobustcmd*{\@abalph}[1]{%
   \ifnum#1>17576\relax
     \PackageError{fmtcount}%
     {Value of counter too large for \protect\@abalph}%
@@ -456,7 +457,7 @@
 }
 
 \let\abalphnum=\@abalph
-\newcommand*{\@ABAlph}[1]{%
+\newrobustcmd*{\@ABAlph}[1]{%
   \ifnum#1>17576\relax
     \PackageError{fmtcount}%
    {Value of counter too large for \protect\@ABAlph}%
@@ -490,7 +491,7 @@
     \@fmtc at count#2\relax
   \fi
 }
-\newcommand{\@decimal}[1]{%
+\newrobustcmd*{\@decimal}[1]{%
   \@strctr=0\relax
   \expandafter\@fmtc at count\number#1\relax
   \@DT at loopN=\c at padzeroesN
@@ -504,8 +505,8 @@
 
 \let\decimalnum=\@decimal
 \newcommand{\FCordinal}[1]{%
-  \expandafter\protect\expandafter\ordinalnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \ordinalnum{%
+    \the\value{#1}}%
 }
 \ifcsundef{ordinal}
  {\let\ordinal\FCordinal}%
@@ -514,7 +515,7 @@
    {\protect\ordinal \space already defined use
     \protect\FCordinal \space instead.}
  }
-\newcommand*{\ordinalnum}[1]{%
+\DeclareRobustCommand*{\ordinalnum}[1]{%
   \new at ifnextchar[%
   {\@ordinalnum{#1}}%
   {\@ordinalnum{#1}[m]}%
@@ -545,10 +546,13 @@
   }%
 }
 \newcommand*{\storeordinal}[2]{%
-  \expandafter\protect\expandafter\storeordinalnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeordinalnum{#1}}%
+    \expandafter
+   }\the\toks0\expandafter{%
+    \the\value{#2}}%
 }
-\newcommand*{\storeordinalnum}[2]{%
+\newrobustcmd*{\storeordinalnum}[2]{%
   \@ifnextchar[%
   {\@storeordinalnum{#1}{#2}}%
   {\@storeordinalnum{#1}{#2}[m]}%
@@ -578,10 +582,10 @@
 }
 \newcommand*{\FMCuse}[1]{\csname @fcs@#1\endcsname}
 \newcommand*{\ordinalstring}[1]{%
-  \expandafter\protect\expandafter\ordinalstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\ordinalstringnum\expandafter{%
+    \the\value{#1}}%
 }
-\newcommand{\ordinalstringnum}[1]{%
+\newrobustcmd*{\ordinalstringnum}[1]{%
   \new at ifnextchar[%
   {\@ordinal at string{#1}}%
   {\@ordinal at string{#1}[m]}%
@@ -612,10 +616,12 @@
   }%
 }
 \newcommand*{\storeordinalstring}[2]{%
-  \expandafter\protect\expandafter\storeordinalstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeordinalstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
-\newcommand*{\storeordinalstringnum}[2]{%
+\newrobustcmd*{\storeordinalstringnum}[2]{%
   \@ifnextchar[%
   {\@store at ordinal@string{#1}{#2}}%
   {\@store at ordinal@string{#1}{#2}[m]}%
@@ -644,10 +650,10 @@
   \expandafter\let\csname @fcs@#1\endcsname\@fc at ordstr
 }
 \newcommand*{\Ordinalstring}[1]{%
-  \expandafter\protect\expandafter\Ordinalstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\Ordinalstringnum\expandafter{%
+    \the\value{#1}}%
 }
-\newcommand*{\Ordinalstringnum}[1]{%
+\newrobustcmd*{\Ordinalstringnum}[1]{%
   \new at ifnextchar[%
   {\@Ordinal at string{#1}}%
   {\@Ordinal at string{#1}[m]}%
@@ -678,10 +684,12 @@
   }%
 }
 \newcommand*{\storeOrdinalstring}[2]{%
-  \expandafter\protect\expandafter\storeOrdinalstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeOrdinalstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
-\newcommand*{\storeOrdinalstringnum}[2]{%
+\newrobustcmd*{\storeOrdinalstringnum}[2]{%
   \@ifnextchar[%
   {\@store at Ordinal@string{#1}{#2}}%
   {\@store at Ordinal@string{#1}{#2}[m]}%
@@ -710,10 +718,12 @@
   \expandafter\let\csname @fcs@#1\endcsname\@fc at ordstr
 }
 \newcommand*{\storeORDINALstring}[2]{%
-  \expandafter\protect\expandafter\storeORDINALstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeORDINALstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
-\newcommand*{\storeORDINALstringnum}[2]{%
+\newrobustcmd*{\storeORDINALstringnum}[2]{%
   \@ifnextchar[%
   {\@store at ORDINAL@string{#1}{#2}}%
   {\@store at ORDINAL@string{#1}{#2}[m]}%
@@ -744,11 +754,11 @@
   }%
 }
 \newcommand*{\ORDINALstring}[1]{%
-  \expandafter\protect\expandafter\ORDINALstringnum{%
-    \expandafter\the\csname c@#1\endcsname
+  \expandafter\ORDINALstringnum\expandafter{%
+    \the\value{#1}%
   }%
 }
-\newcommand*{\ORDINALstringnum}[1]{%
+\newrobustcmd*{\ORDINALstringnum}[1]{%
   \new at ifnextchar[%
   {\@ORDINAL at string{#1}}%
   {\@ORDINAL at string{#1}[m]}%
@@ -780,7 +790,7 @@
 }
 \newcommand*{\storenumberstring}[2]{%
   \expandafter\protect\expandafter\storenumberstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+    \expandafter\the\value{#2}}%
 }
 \newcommand{\storenumberstringnum}[2]{%
   \@ifnextchar[%
@@ -811,10 +821,10 @@
   \expandafter\let\csname @fcs@#1\endcsname\@fc at numstr
 }
 \newcommand*{\numberstring}[1]{%
-  \expandafter\protect\expandafter\numberstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\numberstringnum\expandafter{%
+    \the\value{#1}}%
 }
-\newcommand*{\numberstringnum}[1]{%
+\newrobustcmd*{\numberstringnum}[1]{%
   \new at ifnextchar[%
   {\@number at string{#1}}%
   {\@number at string{#1}[m]}%
@@ -845,8 +855,10 @@
   }%
 }
 \newcommand*{\storeNumberstring}[2]{%
-  \expandafter\protect\expandafter\storeNumberstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeNumberstringnum{#1}}%
+    \expandafter
+  }\the\toks0\expandafter{\the\value{#2}}%
 }
 \newcommand{\storeNumberstringnum}[2]{%
   \@ifnextchar[%
@@ -877,10 +889,10 @@
   \expandafter\let\csname @fcs@#1\endcsname\@fc at numstr
 }
 \newcommand*{\Numberstring}[1]{%
-  \expandafter\protect\expandafter\Numberstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\Numberstringnum\expandafter{%
+    \the\value{#1}}%
 }
-\newcommand*{\Numberstringnum}[1]{%
+\newrobustcmd*{\Numberstringnum}[1]{%
   \new at ifnextchar[%
   {\@Number at string{#1}}%
   {\@Number at string{#1}[m]}%
@@ -911,8 +923,10 @@
   }%
 }
 \newcommand{\storeNUMBERstring}[2]{%
-  \expandafter\protect\expandafter\storeNUMBERstringnum{#1}{%
-    \expandafter\the\csname c@#2\endcsname}%
+  {%
+    \toks0{\storeNUMBERstringnum{#1}}%
+    \expandafter
+    }\the\toks0\expandafter{\the\value{#2}}%
 }
 \newcommand{\storeNUMBERstringnum}[2]{%
   \@ifnextchar[%
@@ -945,10 +959,10 @@
   }%
 }
 \newcommand*{\NUMBERstring}[1]{%
-  \expandafter\protect\expandafter\NUMBERstringnum{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\NUMBERstringnum\expandafter{%
+    \the\value{#1}}%
 }
-\newcommand*{\NUMBERstringnum}[1]{%
+\newrobustcmd*{\NUMBERstringnum}[1]{%
   \new at ifnextchar[%
   {\@NUMBER at string{#1}}%
   {\@NUMBER at string{#1}[m]}%
@@ -979,40 +993,49 @@
   }%
 }
 \providecommand*{\binary}[1]{%
-  \expandafter\protect\expandafter\@binary{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@binary
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\aaalph}[1]{%
-  \expandafter\protect\expandafter\@aaalph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@aaalph
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\AAAlph}[1]{%
-  \expandafter\protect\expandafter\@AAAlph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@AAAlph
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\abalph}[1]{%
-  \expandafter\protect\expandafter\@abalph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@abalph
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\ABAlph}[1]{%
-  \expandafter\protect\expandafter\@ABAlph{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@ABAlph
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\hexadecimal}[1]{%
-  \expandafter\protect\expandafter\@hexadecimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@hexadecimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\Hexadecimal}[1]{%
-  \expandafter\protect\expandafter\@Hexadecimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@Hexadecimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\octal}[1]{%
-  \expandafter\protect\expandafter\@octal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@octal
+  \expandafter{%
+    \the\value{#1}}%
 }
 \providecommand*{\decimal}[1]{%
-  \expandafter\protect\expandafter\@decimal{%
-    \expandafter\the\csname c@#1\endcsname}%
+  \expandafter\@decimal
+  \expandafter{%
+    \the\value{#1}}%
 }
 \def\@setdef at ultfmtcount{%
   \ifcsundef{@ordinalMenglish}{\FCloadlang{english}}{}%



More information about the tex-live-commits mailing list