texlive[44782] Master/texmf-dist: babel-french (11jul17)

commits+karl at tug.org commits+karl at tug.org
Fri Jul 14 01:06:11 CEST 2017


Revision: 44782
          http://tug.org/svn/texlive?view=revision&revision=44782
Author:   karl
Date:     2017-07-14 01:06:10 +0200 (Fri, 14 Jul 2017)
Log Message:
-----------
babel-french (11jul17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/babel-french/README
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/README
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2017-07-13 23:05:35 UTC (rev 44781)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2017-07-13 23:06:10 UTC (rev 44782)
@@ -1,4 +1,4 @@
-%\CheckSum{3486}
+%\CheckSum{3473}
 %
 %\iffalse
 %    Tell the \LaTeX\ system who we are and write an entry on the
@@ -6,44 +6,36 @@
 %<*dtx>
 \ProvidesFile{frenchb.dtx}
 %</dtx>
-% \changes{v2.1d}{2008/05/04}{Argument of \cs{ProvidesLanguage} changed
-%    from `french’ to `frenchb’, otherwise \cs{listfiles} prints
-%    no date/version information.  The bug with \cs{listfiles}
-%    (introduced in v.~1.5!), was pointed out by Ulrike Fischer.}
-%<ldf>\ProvidesLanguage{frenchb}
-%\ProvidesFile{frenchb.dtx}
-%<*!lua>
-         [2017/04/30 v3.3a French support from the babel system]
-%</!lua>
+%<acadian>\ProvidesLanguage{acadian}
+%<canadien>\ProvidesLanguage{canadien}
+%<francais>\ProvidesLanguage{francais}
+%<french>\ProvidesLanguage{french}
+%<frenchb>\ProvidesLanguage{frenchb}
+%<lua>--[[
+%<lua>   File `frenchb.lua’ generated from frenchb.dtx
+         [2017/07/08 v3.3b French support from the babel system]
 %<*internal>
 \iffalse
 %</internal>
 %<*lua>
---
---  File `frenchb.lua’ generated from frenchb.dtx [2017/04/30 v3.3a]
---
---  Copyright © 2014-2017 Daniel Flipo
---  <daniel (dot) flipo (at) free (dot) fr>
---  License LPPL: see frenchb.ldf.
---
+   Copyright © 2014-2017 Daniel Flipo
+   <daniel (dot) flipo (at) free (dot) fr>
+   License LPPL: see french.ldf.
+--]]
 %</lua>
 %<*internal>
 \fi
 %</internal>
 %<*dtx>
-%%
 %%  File `frenchb.dtx’
 %</dtx>
-%<*ldf>
+%<*dtx|french>
 %%
-%%  File `frenchb.ldf’
-%</ldf>
-%<*dtx|ldf>
 %%  Babel package for LaTeX version 2e
 %%  Copyright © 1996 - 2017
 %%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
 %%
-%</dtx|ldf>
+%</dtx|french>
 %<*dtx>
 %%  This file is part of the babel system, it provides the source
 %%  code for the French language definition file.
@@ -66,6 +58,7 @@
 \hypersetup{colorlinks,urlcolor=blue,unicode}
 \newcommand*\babel{\textsf{babel}}
 \newcommand*\frenchb{\textsf{babel-french}}
+\newcommand*\langvar{$\langle \it lang \rangle$}
 \newcommand*\Lopt[1]{\texttt{#1}}
 \newcommand*\opt[1]{\texttt{#1}}
 \newcommand*\file[1]{\texttt{#1}}
@@ -150,6 +143,12 @@
 %    lists, footnotes, indentation of first paragraphs of sections) and
 %    should apply to the whole document.
 %
+%    The French language can be loaded with \babel{} by a command like:
+%    \\ |\usepackage[german,spanish,french,british]{babel}|%
+%    \footnote{\emph{Always} use \Lopt{french} as option name for the
+%    French language, former aliases \Lopt{frenchb} or \Lopt{francais}
+%    are \emph{depreciated}; expect them to be removed sooner or later!}
+%
 %    \frenchb{} takes account of \babel’s \emph{main language} defined
 %    as the \emph{last} option at \babel’s loading.  When French is
 %    not \babel’s main language, \frenchb{} does not alter the general
@@ -561,7 +560,7 @@
 %    The older syntax |\addto\captionsfrench{\def\proofname{Preuve}}|
 %    still works. Keep in mind that \emph{only} |french| can be used to
 %    redefine captions, even if \babel{}’s option was entered as
-%    |francais| or |frenchb|.
+%    |frenchb|.
 %
 %    When French is the main language, by default (see below)
 %    \frenchb{} changes the separator (colon) used in figures’ and
@@ -635,6 +634,13 @@
 %
 %  \subsubsection*{What’s new in version 3.3?}
 %
+%    According to current \babel's standards, every dialect should
+%    have it’s own \file{.ldf} file; the main support for French is
+%    now in \file{french.ldf}, portemanteau files \file{frenchb.ldf},
+%    \file{francais.ldf}, \file{acadian.ldf} and \file{canadien.ldf}
+%    have been added.  Recommended options are \Lopt{french} and
+%    \Lopt{acadian}, all other are deprecated.
+%
 %    Release 3.3a is compatible with LuaTeX v.~0.95 (TL2016) and up.
 %    Former skips |\FBcolonskip|, |\FBthinskip| and |\FBguillskip|
 %    controlling punctuation spacings in LuaTeX have been removed;
@@ -754,40 +760,12 @@
 %    (french) as to be corrected before calling \cs{LdfInit}.}
 %
 % \iffalse
-%<*ldf>
+%<*french>
 % \fi
 %
 % \changes{v3.0a}{2014/02/28}{Support for options frenchb, francais,
 %    canadien, acadian changed.}
 %
-%    If \file{frenchb.ldf} was loaded with \babel{}’s options
-%    \Lopt{francais} or \Lopt{frenchb}, we make it behave as if
-%    \Lopt{french} was specified.
-%    In Plain formats, \texttt{@} catcode is not `letter’.
-%    \begin{macrocode}
-\chardef\atcatcode=\catcode`\@
-\catcode`\@=11\relax
-\def\bbl at tempa{francais}
-\ifx\CurrentOption\bbl at tempa
-  \let\l at francais\l at french
-  \def\captionsfrancais{\captionsfrench}
-  \def\datefrancais{\datefrench}
-  \def\extrasfrancais{\extrasfrench}
-  \def\noextrasfrancais{\extrasfrench}
-  \def\CurrentOption{french}
-\fi
-\def\bbl at tempa{frenchb}
-\ifx\CurrentOption\bbl at tempa
-  \let\l at frenchb\l at french
-  \def\captionsfrenchb{\captionsfrench}
-  \def\datefrenchb{\datefrench}
-  \def\extrasfrenchb{\extrasfrench}
-  \def\noextrasfrenchb{\extrasfrench}
-  \def\CurrentOption{french}
-\fi
-\catcode`\@=\atcatcode \let\atcatcode\relax
-%    \end{macrocode}
-%
 % \changes{v3.0a}{2014/02/19}{\cs{LdfInit} checks \cs{datefrench}
 %    instead of \cs{captionsfrench} to avoid a conflict with
 %    papertex.cls which loads datetime.sty.}
@@ -832,7 +810,7 @@
 \let\bbl at tempa\relax
 \ifx\magnification\@undefined
    \ifx\@compatibilitytrue\@undefined
-     \PackageError{frenchb.ldf}
+     \PackageError{french.ldf}
         {LaTeX-2.09 format is no longer supported.\MessageBreak
          Aborting here}
         {Please upgrade to LaTeX2e!}
@@ -854,13 +832,13 @@
 \def\fb at error#1#2{%
     \begingroup
       \newlinechar=`\^^J
-      \def\\{^^J(frenchb.ldf) }%
+      \def\\{^^J(french.ldf) }%
       \errhelp{#2}\errmessage{\\#1^^J}%
     \endgroup}
 \def\fb at warning#1{%
    \begingroup
       \newlinechar=`\^^J
-      \def\\{^^J(frenchb.ldf) }%
+      \def\\{^^J(french.ldf) }%
       \message{\\#1^^J}%
    \endgroup}
 \def\fb at info#1{%
@@ -879,7 +857,7 @@
 \ifx\babeltags\@undefined
    \let\bbl at tempa\endinput
    \ifLaTeXe
-      \PackageError{frenchb.ldf}
+      \PackageError{french.ldf}
          {frenchb requires babel v.3.9i.\MessageBreak
           Aborting here}
          {Please upgrade Babel!}
@@ -892,33 +870,16 @@
 \bbl at tempa
 %    \end{macrocode}
 %
-%    \file{frenchb.ldf} can be loaded with options \Lopt{canadien} or
-%    \Lopt{acadian}, which both stand for Canadian French.  Internally,
-%    \Lopt{acadian} will be the name of the corresponding \babel’s
-%    dialect, so we set |\CurrentOption| to \Lopt{acadian} in both
-%    cases.
+%    Babel’s French language can be loaded with option \Lopt{acadian}
+%    which stands for Canadian French.
 %    If no specific hyphenation patterns are available, Canadian French
 %    will use the French ones.
-%
-%    TODO: Canadian French hyphenation doesn’t work with LuaTeX.
 %    \begin{macrocode}
-\ifx\l at acadian\@undefined
-   \ifx\l at canadien\@undefined
-      \adddialect\l at acadian\l at french
-      \adddialect\l at canadien\l at french
-   \else
-      \adddialect\l at acadian\l at canadien
-   \fi
-\else
-  \adddialect\l at canadien\l at acadian
-\fi
-\def\bbl at tempa{canadien}
+\def\bbl at tempa{acadian}
 \ifx\CurrentOption\bbl at tempa
-  \def\captionscanadien{\captionsacadian}
-  \def\datecanadien{\dateacadian}
-  \def\extrascanadien{\extrasacadian}
-  \def\noextrascanadien{\extrasacadian}
-  \def\CurrentOption{acadian}
+  \ifx\l at acadian\@undefined
+     \adddialect\l at acadian\l at french
+  \fi
 \fi
 %    \end{macrocode}
 %
@@ -930,7 +891,7 @@
 \expandafter\providehyphenmins\expandafter{\CurrentOption}{\tw@\thr@@}
 %    \end{macrocode}
 %
-%  \begin{macro}{\ifFBunicode}
+%\begin{macro}{\ifFBunicode}
 %  \begin{macro}{\ifFBLuaTeX}
 %  \begin{macro}{\ifFBXeTeX}
 %    French hyphenation patterns are now coded in Unicode, see file
@@ -972,6 +933,19 @@
 % \end{macro}
 % \end{macro}
 %
+% \changes{v3.3b}{2017/07/08}{New `if' \cs{ifFBfrench} to replace
+%    \cs{iflanguage} test which is based on patterns.}
+%
+%  \begin{macro}{\ifFBfrench}
+%    True when the current language is French or any of its dialects;
+%    will be set to true by |\extras\CurrentOption| and to false by
+%    |\noextras\CurrentOption|.  Used in |\DecimalMathComma| and
+%    |frenchsetup{og=«, fg=»}|.
+%    \begin{macrocode}
+\newif\ifFBfrench
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\extrasfrench}
 % \changes{v3.0a}{2014/02/18}{Take advantage of babel’s
 %    \cs{babel at savevariable} to handle apostrophe’s \cs{lccode}.}
@@ -995,6 +969,7 @@
 %
 %    \begin{macrocode}
 \@namedef{extras\CurrentOption}{%
+     \FBfrenchtrue
      \babel at savevariable{\lccode`\'}%
      \ifFBunicode
         \babel at savevariable{\lccode"2019}%
@@ -1003,7 +978,7 @@
         \lccode`\'=`\'
      \fi
 }
-\@namedef{noextras\CurrentOption}{}
+\@namedef{noextras\CurrentOption}{\FBfrenchfalse}
 %    \end{macrocode}
 %
 %    Let’s define a handy command for adding stuff to
@@ -1065,7 +1040,7 @@
          frenchb will make high punctuation characters (;:!?) active\\%
          with LuaTeX < 0.95.}%
     \else
-      \PackageWarning{frenchb.ldf}{Please upgrade LuaTeX
+      \PackageWarning{french.ldf}{Please upgrade LuaTeX
          to version 0.95 or above!\MessageBreak
          frenchb will make high punctuation characters\MessageBreak
          (;:!?) active with LuaTeX < 0.95;\MessageBreak reported}%
@@ -1237,7 +1212,7 @@
   \newattribute\FB at addDPspace   \FB at addDPspace=1 \relax
   \newattribute\FB at addGUILspace \FB at addGUILspace=0 \relax
   \ifLaTeXe
-    \PackageInfo{frenchb.ldf}{No need for active punctuation
+    \PackageInfo{french.ldf}{No need for active punctuation
                  characters\MessageBreak with this version
                  of LuaTeX!\MessageBreak reported}
   \else
@@ -1248,8 +1223,7 @@
 %    \end{macrocode}
 %
 % \iffalse
-%</ldf>
-%<*lua>
+%</french>
 % \fi
 %    This is \file{frenchb.lua}. It holds Lua code to deal with  `high
 %    punctuation’ and quotes.  This code is based on suggestions from
@@ -1263,6 +1237,7 @@
 %    quotes in T1-encoding.}
 %
 %    \begin{macrocode}
+%<*lua>
 local FB_punct_thin =
   {[string.byte("!")] = true,
    [string.byte("?")] = true,
@@ -1634,11 +1609,11 @@
   return head
 end
 return french_punctuation
+%</lua>
 %    \end{macrocode}
 %    \end{macro}
 % \iffalse
-%</lua>
-%<*ldf>
+%<*french>
 % \fi
 %
 %  \begin{macro}{\FB at luatex@punct at french}
@@ -1662,7 +1637,7 @@
            LuaTeX,\\ use \noexpand\NoAutoSpacing
            *inside a group* instead.}%
         \else
-          \PackageWarning{frenchb.ldf}{\protect\shorthandoff{;:!?} is
+          \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
            helpless with LuaTeX,\MessageBreak use \protect\NoAutoSpacing
            \space *inside a group* instead;\MessageBreak reported}%
         \fi}%
@@ -1747,7 +1722,7 @@
 %    \begin{macrocode}
 \ifFB at xetex@punct
    \ifLaTeXe
-    \PackageInfo{frenchb.ldf}{No need for active punctuation characters%
+    \PackageInfo{french.ldf}{No need for active punctuation characters%
                     \MessageBreak with this version of XeTeX!%
                     \MessageBreak reported}
    \else
@@ -1864,7 +1839,7 @@
            XeTeX,\\ use \noexpand\NoAutoSpacing
            *inside a group* instead.}%
        \else
-         \PackageWarning{frenchb.ldf}{\protect\shorthandoff{;:!?} is
+         \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
            helpless with XeTeX,\MessageBreak use \protect\NoAutoSpacing
            \space *inside a group* instead;\MessageBreak reported}%
        \fi}%
@@ -2487,7 +2462,7 @@
       \fb at warning{\noexpand\frquote\space handles up to
                   two levels.\\ Quotation not printed.}%
     \else
-      \PackageWarning{frenchb.ldf}{%
+      \PackageWarning{french.ldf}{%
          \protect\frquote\space handles up to two levels.
          \MessageBreak Quotation not printed.  Reported}
     \fi
@@ -2962,7 +2937,7 @@
   \newcommand*{\std at math@comma}{\mathcode`\,=\std at mcc}
 \fi
 \newcommand*{\DecimalMathComma}{%
-  \iflanguage{french}{\dec at math@comma}{}%
+  \ifFBfrench\dec at math@comma\fi
   \ifFB at icomma\else\FB at addto{extras}{\dec at math@comma}\fi
 }
 \newcommand*{\StandardMathComma}{%
@@ -3037,7 +3012,7 @@
    \ifdefined\numprint
      \numprint{#1}%
    \else
-     \PackageWarning{frenchb.ldf}{%
+     \PackageWarning{french.ldf}{%
         \protect\nombre\space now relies on package numprint.sty,%
         \MessageBreak add \protect
         \usepackage[autolanguage]{numprint},\MessageBreak
@@ -3188,8 +3163,8 @@
 %    Up to v2.6h \frenchb{} used to merge |\captionsfrenchb| and
 %    |\captionsfrancais| into |\captionsfrench| at |\begin{document}|.
 %    This is deprecated in favor of the new (much simpler!) syntax
-%    introduced in \babel~3.9.  No need to define |\captionscanadien|
-%    and |\captionsacadian| either.
+%    introduced in \babel~3.9.  No need to define |\captionsacadian|
+%    either.
 %
 % \begin{macro}{\CaptionSeparator}
 %    Let’s consider now captions in figures and tables.
@@ -3261,7 +3236,7 @@
 %    \begin{macrocode}
 \newif\if at FBwarning@capsep
 \@FBwarning at capseptrue
-\newcommand{\FBWarning}[1]{\PackageWarning{frenchb.ldf}{#1}}
+\newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}}
 \newcommand*{\CaptionSeparator}{\space\textendash\space}
 \def\FBCaption at Separator{: }
 \long\def\FB at makecaption#1#2{%
@@ -3715,13 +3690,13 @@
   \ifx\bbl at main@language\FB at french
     \FBGlobalLayoutFrenchtrue
     \@ifclassloaded{beamer}%
-      {\PackageInfo{frenchb.ldf}{%
+      {\PackageInfo{french.ldf}{%
           No list customisation for the beamer class,%
           \MessageBreak reported}}%
       {\@ifpackageloaded{beamerarticle}%
          {\FBStandardItemLabelsfalse
           \FBReduceListSpacingtrue
-          \PackageInfo{frenchb.ldf}{%
+          \PackageInfo{french.ldf}{%
              Minimal list customisation for the beamerarticle%
              \MessageBreak package; reported}}%
 %    \end{macrocode}
@@ -3741,7 +3716,7 @@
   \fi
 %    \end{macrocode}
 %    \frenchb{} being an option of \babel, it cannot load a package
-%    (\pkg{keyval}) while \file{frenchb.ldf} is read, so we defer the
+%    (\pkg{keyval}) while \file{french.ldf} is read, so we defer the
 %    loading of \file{keyval} and the options setup at the end of
 %    \babel’s loading.
 %    \begin{macrocode}
@@ -3781,7 +3756,7 @@
              \ifx\bbl at main@language\FB at french
              \else
                \FBGlobalLayoutFrenchfalse
-               \PackageWarning{frenchb.ldf}%
+               \PackageWarning{french.ldf}%
                   {Option `GlobalLayoutFrench' skipped:\MessageBreak
                    French is *not* babel's last option.\MessageBreak
                    Reported}%
@@ -3864,7 +3839,7 @@
           {\csname FBOldFigTabCaptions#1\endcsname
 %    \end{macrocode}
 %    |\CurrentOption| no longer defined.  It’s value has been saved
-%    in |\FB at CurOpt| while reading \file{frenchb.ldf}.
+%    in |\FB at CurOpt| while reading \file{french.ldf}.
 %    \begin{macrocode}
            \ifFBOldFigTabCaptions
              \FB at addto{extras}{\babel at save\FBCaption at Separator
@@ -3905,7 +3880,7 @@
                 \else\ifx\FBeveryparguill\FBguillnone
                      \else
                        \let\FBeveryparguill\FBguillopen
-                       \PackageWarning{frenchb.ldf}%
+                       \PackageWarning{french.ldf}%
                           {Wrong value for `EveryParGuill':
                            try `open',\MessageBreak
                            `close' or `none'. Reported}%
@@ -4001,7 +3976,7 @@
 %    characters.
 %    \begin{macrocode}
              \ifFB at active@punct
-               \PackageWarning{frenchb.ldf}%
+               \PackageWarning{french.ldf}%
                   {Option og=« not supported with this version
                    of\MessageBreak LuaTeX/XeTeX; reported}%
              \fi
@@ -4010,11 +3985,11 @@
 %    This is for conventional TeX engines:
 %    \begin{macrocode}
              \newcommand*{\FB@@og}{%
-                \iflanguage{french}%
-                  {\ifFB at spacing\FB at og\ignorespaces
-                   \else\guillemotleft
-                   \fi}%
-                  {\guillemotleft}}%
+                \ifFBfrench
+                  \ifFB at spacing\FB at og\ignorespaces
+                  \else\guillemotleft
+                  \fi
+                \else\guillemotleft\fi}%
              \AtBeginDocument{%
                 \ifdefined\DeclareInputText
                   \ifdefined\uc at dclc
@@ -4049,7 +4024,7 @@
 %    \end{macrocode}
 %    Package \pkg{inputenc} not loaded, no way\dots{}
 %    \begin{macrocode}
-                  \PackageWarning{frenchb.ldf}%
+                  \PackageWarning{french.ldf}%
                      {Option `og' requires package inputenc;%
                       \MessageBreak reported}%
                 \fi
@@ -4072,17 +4047,17 @@
                \XeTeXcharclass"202F = \FB at guilnul
              \fi
              \ifFB at active@punct
-               \PackageWarning{frenchb.ldf}%
+               \PackageWarning{french.ldf}%
                   {Option fg=» not supported with this version
                    of\MessageBreak LuaTeX/XeTeX; reported}%
              \fi
            \else
              \newcommand*{\FB@@fg}{%
-                \iflanguage{french}%
-                  {\ifFB at spacing\FB at fg
-                   \else\guillemotright
-                   \fi}%
-                  {\guillemotright}}%
+                \ifFBfrench
+                  \ifFB at spacing\FB at fg
+                  \else\guillemotright
+                  \fi
+                \else\guillemotright\fi}%
              \AtBeginDocument{%
                \ifdefined\DeclareInputText
                  \ifdefined\uc at dclc
@@ -4100,7 +4075,7 @@
                    \fi
                  \fi
                \else
-                 \PackageWarning{frenchb.ldf}%
+                 \PackageWarning{french.ldf}%
                     {Option `fg' requires package inputenc;%
                      \MessageBreak reported}%
                \fi
@@ -4132,7 +4107,7 @@
      \ifFBStandardItemizeEnv
      \else
        \FBStandardItemizeEnvtrue
-       \PackageInfo{frenchb.ldf}%
+       \PackageInfo{french.ldf}%
           {Setting StandardItemizeEnv=true for\MessageBreak
            compatibility with enumitem package,\MessageBreak
            reported}%
@@ -4140,7 +4115,7 @@
      \ifFBStandardEnumerateEnv
      \else
        \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
+       \PackageInfo{french.ldf}%
           {Setting StandardEnumerateEnv=true for\MessageBreak
            compatibility with enumitem package,\MessageBreak
            reported}%
@@ -4149,7 +4124,7 @@
      \ifFBStandardItemizeEnv
      \else
        \FBStandardItemizeEnvtrue
-       \PackageInfo{frenchb.ldf}%
+       \PackageInfo{french.ldf}%
           {Setting StandardItemizeEnv=true for\MessageBreak
            compatibility with paralist package,\MessageBreak
            reported}%
@@ -4157,7 +4132,7 @@
      \ifFBStandardEnumerateEnv
      \else
        \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
+       \PackageInfo{french.ldf}%
           {Setting StandardEnumerateEnv=true for\MessageBreak
            compatibility with paralist package,\MessageBreak
            reported}%
@@ -4166,7 +4141,7 @@
      \ifFBStandardEnumerateEnv
      \else
        \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
+       \PackageInfo{french.ldf}%
           {Setting StandardEnumerateEnv=true for\MessageBreak
            compatibility with enumerate package,\MessageBreak
            reported}%
@@ -4458,7 +4433,7 @@
    \ifFBunicode
      \@ifpackageloaded{fontspec}{}%
         {\@ifpackageloaded{luainputenc}{}%
-            {\PackageWarning{frenchb.ldf}%
+            {\PackageWarning{french.ldf}%
                 {Add \protect\usepackage{fontspec} to the\MessageBreak
                  preamble of your document, reported}%
             }%
@@ -4466,7 +4441,7 @@
    \else
      \begingroup \newcommand{\FBOTone}{OT1}%
      \ifx\encodingdefault\FBOTone
-       \PackageWarning{frenchb.ldf}%
+       \PackageWarning{french.ldf}%
           {OT1 encoding should not be used for French.%
            \MessageBreak
            Add \protect\usepackage[T1]{fontenc} to the
@@ -4895,7 +4870,7 @@
 %
 %    \begin{macrocode}
 \AtBeginDocument{\@ifpackageloaded{bigfoot}%
-                   {\PackageInfo{frenchb.ldf}%
+                   {\PackageInfo{french.ldf}%
                      {bigfoot package in use.\MessageBreak
                       frenchb will NOT customise footnotes;%
                       \MessageBreak reported}}%
@@ -5150,9 +5125,90 @@
 \let\loadlocalcfg\FB at llc
 %    \end{macrocode}
 % \iffalse
-%</ldf>
-%<*dtx>
+%</french>
 % \fi
+%
+% \subsection{Files \file{frenchb.ldf}, \file{francais.ldf},
+%                  \file{canadien.ldf} and\\  \file{acadian.ldf}}
+%
+% \changes{v3.3b}{2017/06/28}{Generate portmanteau files
+%    \file{acadian.ldf}, \file{canadien.ldf}, \file{frenchb.ldf},
+%    and \file{francais.ldf} and warn about deprecated options.}
+%
+%    Babel now expects a \file{\langvar{}.ldf} file for each \langvar.
+%    So we create portmanteau \file{.ldf} files for options \texttt{canadien},
+%    \texttt{francais}, \texttt{frenchb} and \texttt{acadian}.
+%    These files themselves only load \file{french.ldf} which does
+%    the real work.
+%    Warn users about options \Lopt{canadien}, \Lopt{frenchb} and
+%    \Lopt{francais} being deprecated and force recommended options
+%    \Lopt{acadian} or \Lopt{french}.
+%    \begin{macrocode}
+%<*canadien>
+\PackageWarning{canadien.ldf}%
+  {Option `canadien' for Babel is *deprecated*,\MessageBreak
+   it might be removed sooner or later.  Please\MessageBreak
+   use `acadian' instead; reported}%
+\let\l at canadien\l at acadian
+\def\CurrentOption{acadian}
+%</canadien>
+%<*francais>
+\PackageWarning{francais.ldf}%
+  {Option `francais' for Babel is *deprecated*,\MessageBreak
+   it might be removed sooner or later.  Please\MessageBreak
+   use `french' instead; reported}%
+\let\l at francais\l at french
+\def\CurrentOption{french}
+%</francais>
+%    \end{macrocode}
+%    Compatibility code for \babel{} pre-3.13: \file{frenchb.ldf}
+%    could be loaded with options \Lopt{acadian}, \Lopt{canadien},
+%    \Lopt{frenchb} or \Lopt{francais}.
+%    \begin{macrocode}
+%<*frenchb>
+\def\bbl at tempa{frenchb}
+\ifx\CurrentOption\bbl at tempa
+  \let\l at frenchb\l at french
+  \def\CurrentOption{french}
+  \PackageWarning{babel-french}%
+    {Option `frenchb' for Babel is *deprecated*,\MessageBreak
+     it might be removed sooner or later.  Please\MessageBreak
+     use `french' instead; reported}
+\else
+  \def\bbl at tempa{francais}
+  \ifx\CurrentOption\bbl at tempa
+    \let\l at francais\l at french
+    \def\CurrentOption{french}
+%    \end{macrocode}
+%    Plain formats: no warning when \file{francais.sty} loads
+%    \file{frenchb.ldf} (\babel{} pre-3.13).
+%    \begin{macrocode}
+    \ifx\magnification\@undefined
+      \PackageWarning{babel-french}%
+        {Option `francais' for Babel is *deprecated*,\MessageBreak
+         it might be removed sooner or later.  Please\MessageBreak
+         use `french' instead; reported}%
+    \fi
+  \else
+    \def\bbl at tempa{canadien}
+    \ifx\CurrentOption\bbl at tempa
+      \let\l at canadien\l at acadian
+      \def\CurrentOption{acadian}
+      \PackageWarning{babel-french}%
+        {Option `canadien' for Babel is *deprecated*,\MessageBreak
+         it might be removed sooner or later.  Please\MessageBreak
+         use `acadian' instead; reported}
+    \fi
+  \fi
+\fi
+%</frenchb>
+%<acadian|canadien|frenchb|francais>\input french.ldf\relax
+%    \end{macrocode}
+%
+% \Finale
+% \iffalse
+%<*!lua>
+% \fi
 %%
 %% \CharacterTable
 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -5171,8 +5227,6 @@
 %%   Right brace   \}     Tilde         \~}
 %%
 % \iffalse
-%</dtx>
+%</!lua>
 % \fi
-%
-% \Finale
 \endinput

Modified: trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins	2017-07-13 23:05:35 UTC (rev 44781)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins	2017-07-13 23:06:10 UTC (rev 44782)
@@ -1,12 +1,12 @@
 %%
-%% This file will generate fast loadable files and documentation
-%% driver files from the doc files in this package when run through
-%% LaTeX or TeX.
+%% This file will generate fast loadable files and documentation driver
+%% files from the doc files in this package when run through LuaTeX.
 %%
 %% Copyright 2001-2017 Daniel Flipo.  All rights reserved.
 %%
-%% This file is part of the Babel system, release 3.9.
-%% ---------------------------------------------------
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
 %%
 %% It may be distributed under the terms of the LaTeX Project Public
 %% License, as described in lppl.txt in the base LaTeX distribution.
@@ -14,7 +14,7 @@
 %%
 %% --------------- start of docstrip commands ------------------
 %%
-\def\filedate{2017/01/09}
+\def\filedate{2017/07/06}
 \def\batchfile{frenchb.ins}
 \input docstrip.tex
 
@@ -34,8 +34,9 @@
 \fi}
 
 \declarepreamble\mainpreamble
-This is a generated file of the Babel system.
----------------------------------------------------------
+This is a generated file part of the the babel-french bundle
+to be used with the Babel system.
+-------------------------------------------------------------
 
 It may be distributed and/or modified under the
 conditions of the LaTeX Project Public License, either version 1.3
@@ -49,41 +50,10 @@
 
 The Current Maintainer of this work is Daniel Flipo.
 
-This file may only be distributed together with a copy of the Babel
-system. You may however distribute the Babel system without
-such generated files.
+Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 
-The list of all files belonging to the Babel distribution is
-given in the file `manifest.bbl'. See also `legal.bbl for additional
-information.
-
-The list of derived (unpacked) files belonging to the distribution
-and covered by LPPL is defined by the unpacking scripts (with
-extension .ins) which are part of the distribution.
-
 \endpreamble
 
-\declarepreamble\fdpreamble
-
-This is a generated file.
-
-Copyright 2001-2017 Daniel Flipo.  All rights reserved.
-
-This file is part of the Babel system, release 3.9.
----------------------------------------------------
-
-It may be distributed under the terms of the LaTeX Project Public
-License, as described in lppl.txt in the base LaTeX distribution.
-Either version 1.3 or, at your option, any later version.
-
-In particular, permission is granted to customize the declarations in
-this file to serve the needs of your installation.
-
-However, NO PERMISSION is granted to distribute a modified version
-of this file under its original name.
-
-\endpreamble
-
 \keepsilent
 \askforoverwritefalse
 
@@ -90,7 +60,12 @@
 \usedir{tex/generic/babel-french}
 
 \usepreamble\mainpreamble
-\generate{\file{frenchb.ldf}{\from{frenchb.dtx}{ldf}}}
+\generate{\file{french.ldf}{\from{frenchb.dtx}{french}}
+          \file{acadian.ldf}{\from{frenchb.dtx}{acadian}}
+          \file{canadien.ldf}{\from{frenchb.dtx}{canadien}}
+          \file{frenchb.ldf}{\from{frenchb.dtx}{frenchb}}
+          \file{francais.ldf}{\from{frenchb.dtx}{francais}}
+          }
 
 \def\MetaPrefix{-- }
 
@@ -109,7 +84,9 @@
 \Msg{* To finish the installation you have to move the following}
 \Msg{* files into a directory searched by TeX:}
 \Msg{*}
-\Msg{* \space\space frenchb.ldf\space\space frenchb.lua}
+\Msg{* \space\space frenchb.lua\space\space french.ldf}
+\Msg{* \space\space frenchb.ldf\space\space francais.ldf}
+\Msg{* \space\space canadian.ldf\space\space and acadian.ldf}
 \Msg{*}
 \Msg{* To produce the documentation run the file frenchb.dtx}
 \Msg{* through pdfLaTeX.}
@@ -118,4 +95,4 @@
 \Msg{***********************************************************}
 }
 
-\endinput
+\endbatchfile

Added: trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	2017-07-13 23:06:10 UTC (rev 44782)
@@ -0,0 +1,48 @@
+%%
+%% This is file `acadian.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% frenchb.dtx  (with options: `acadian')
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is Daniel Flipo.
+%% 
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%% 
+\ProvidesLanguage{acadian}
+         [2017/07/08 v3.3b French support from the babel system]
+\input french.ldf\relax
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+\endinput
+%%
+%% End of file `acadian.ldf'.


Property changes on: trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	2017-07-13 23:06:10 UTC (rev 44782)
@@ -0,0 +1,54 @@
+%%
+%% This is file `canadien.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% frenchb.dtx  (with options: `canadien')
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is Daniel Flipo.
+%% 
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%% 
+\ProvidesLanguage{canadien}
+         [2017/07/08 v3.3b French support from the babel system]
+\PackageWarning{canadien.ldf}%
+  {Option `canadien' for Babel is *deprecated*,\MessageBreak
+   it might be removed sooner or later.  Please\MessageBreak
+   use `acadian' instead; reported}%
+\let\l at canadien\l at acadian
+\def\CurrentOption{acadian}
+\input french.ldf\relax
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+\endinput
+%%
+%% End of file `canadien.ldf'.


Property changes on: trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	2017-07-13 23:06:10 UTC (rev 44782)
@@ -0,0 +1,54 @@
+%%
+%% This is file `francais.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% frenchb.dtx  (with options: `francais')
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is Daniel Flipo.
+%% 
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%% 
+\ProvidesLanguage{francais}
+         [2017/07/08 v3.3b French support from the babel system]
+\PackageWarning{francais.ldf}%
+  {Option `francais' for Babel is *deprecated*,\MessageBreak
+   it might be removed sooner or later.  Please\MessageBreak
+   use `french' instead; reported}%
+\let\l at francais\l at french
+\def\CurrentOption{french}
+\input french.ldf\relax
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+\endinput
+%%
+%% End of file `francais.ldf'.


Property changes on: trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	2017-07-13 23:06:10 UTC (rev 44782)
@@ -0,0 +1,1803 @@
+%%
+%% This is file `french.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% frenchb.dtx  (with options: `french')
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is Daniel Flipo.
+%% 
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%% 
+\ProvidesLanguage{french}
+         [2017/07/08 v3.3b French support from the babel system]
+%%
+%%  Babel package for LaTeX version 2e
+%%  Copyright © 1996 - 2017
+%%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
+%%
+\LdfInit\CurrentOption\captionsfrench
+\def\FB at nopatterns{%
+   \ifx\l at nohyphenation\@undefined
+      \edef\bbl at nulllanguage{\string\language=0}%
+      \adddialect\l at french0
+   \else
+      \adddialect\l at french\l at nohyphenation
+      \edef\bbl at nulllanguage{\string\language=nohyphenation}%
+   \fi
+   \@nopatterns{French}}
+\ifx\l at french\@undefined
+   \FB at nopatterns
+\fi
+\newif\ifLaTeXe
+\let\bbl at tempa\relax
+\ifx\magnification\@undefined
+   \ifx\@compatibilitytrue\@undefined
+     \PackageError{french.ldf}
+        {LaTeX-2.09 format is no longer supported.\MessageBreak
+         Aborting here}
+        {Please upgrade to LaTeX2e!}
+     \let\bbl at tempa\endinput
+   \else
+     \LaTeXetrue
+   \fi
+\fi
+\bbl at tempa
+\def\fb at error#1#2{%
+    \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J(french.ldf) }%
+      \errhelp{#2}\errmessage{\\#1^^J}%
+    \endgroup}
+\def\fb at warning#1{%
+   \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J(french.ldf) }%
+      \message{\\#1^^J}%
+   \endgroup}
+\def\fb at info#1{%
+   \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J}%
+      \wlog{#1}%
+   \endgroup}
+\let\bbl at tempa\relax
+\ifx\babeltags\@undefined
+   \let\bbl at tempa\endinput
+   \ifLaTeXe
+      \PackageError{french.ldf}
+         {frenchb requires babel v.3.9i.\MessageBreak
+          Aborting here}
+         {Please upgrade Babel!}
+   \else
+      \fb at error{frenchb requires babel v.3.9i.\\
+                Aborting here}
+               {Please upgrade Babel!}
+   \fi
+\fi
+\bbl at tempa
+\def\bbl at tempa{acadian}
+\ifx\CurrentOption\bbl at tempa
+  \ifx\l at acadian\@undefined
+     \adddialect\l at acadian\l at french
+  \fi
+\fi
+\expandafter\providehyphenmins\expandafter{\CurrentOption}{\tw@\thr@@}
+\newif\ifFBunicode
+\newif\ifFBLuaTeX
+\newif\ifFBXeTeX
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname luatexversion\endcsname\relax
+\else
+  \FBunicodetrue \FBLuaTeXtrue
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname XeTeXrevision\endcsname\relax
+\else
+  \FBunicodetrue \FBXeTeXtrue
+\fi
+\newif\ifFBfrench
+\@namedef{extras\CurrentOption}{%
+     \FBfrenchtrue
+     \babel at savevariable{\lccode`\'}%
+     \ifFBunicode
+        \babel at savevariable{\lccode"2019}%
+        \lccode`\'="2019\lccode"2019="2019
+     \else
+        \lccode`\'=`\'
+     \fi
+}
+\@namedef{noextras\CurrentOption}{\FBfrenchfalse}
+\let\FB at CurOpt\CurrentOption
+\newcommand*{\FB at addto}[2]{%
+    \expandafter\addto\csname #1\FB at CurOpt\endcsname{#2}}
+\FB at addto{extras}{\bbl at frenchspacing}
+\FB at addto{noextras}{\bbl at nonfrenchspacing}
+\newif\ifFB at active@punct \FB at active@puncttrue
+\newif\ifFB at luatex@punct
+\ifFBLuaTeX
+  \ifnum\luatexversion<95
+    \ifx\PackageWarning\@undefined
+      \fb at warning{Please upgrade LuaTeX to version 0.95 or above!\\%
+         frenchb will make high punctuation characters (;:!?) active\\%
+         with LuaTeX < 0.95.}%
+    \else
+      \PackageWarning{french.ldf}{Please upgrade LuaTeX
+         to version 0.95 or above!\MessageBreak
+         frenchb will make high punctuation characters\MessageBreak
+         (;:!?) active with LuaTeX < 0.95;\MessageBreak reported}%
+    \fi
+  \else
+    \FB at luatex@puncttrue\FB at active@punctfalse
+  \fi
+\fi
+\newcount\FB at nonchar
+\newif\ifFB at xetex@punct
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname XeTeXinterchartokenstate\endcsname\relax
+\else
+  \FB at xetex@puncttrue\FB at active@punctfalse
+  \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt
+    \FB at nonchar=255 \relax
+  \else
+    \FB at nonchar=4095 \relax
+  \fi
+\fi
+\newcommand*{\FBcolonspace}{\space}
+\newcommand*{\FBthinspace}{\hskip.5\fontdimen2\font \relax}
+\newtoks\FBcolonsp
+\newtoks\FBthinsp
+\newif\ifFB at spacing \FB at spacingtrue
+\newcommand*{\FB at spacing@on}{%
+  \ifFB at luatex@punct
+    \FB at spacing=1 \relax
+  \else
+    \FB at spacingtrue
+  \fi}
+\newcommand*{\FB at spacing@off}{%
+  \ifFB at luatex@punct
+    \FB at spacing=0 \relax
+  \else
+    \FB at spacingfalse
+  \fi}
+\ifFB at luatex@punct
+  \begingroup\expandafter\expandafter\expandafter\endgroup
+  \expandafter\ifx\csname newluafunction\endcsname\relax
+    \input ltluatex.tex
+  \fi
+  \newattribute\FB at spacing      \FB at spacing=1 \relax
+  \newattribute\FB at addDPspace   \FB at addDPspace=1 \relax
+  \newattribute\FB at addGUILspace \FB at addGUILspace=0 \relax
+  \ifLaTeXe
+    \PackageInfo{french.ldf}{No need for active punctuation
+                 characters\MessageBreak with this version
+                 of LuaTeX!\MessageBreak reported}
+  \else
+    \fb at info{No need for active punctuation characters\\
+             with this version of LuaTeX!}
+  \fi
+\fi
+\ifFB at luatex@punct
+  \newcommand*{\FB at luatex@punct at french}{%
+     \babel at save{\shorthandon}%
+     \babel at save{\shorthandoff}%
+     \def\shorthandoff##1{%
+        \ifx\PackageWarning\@undefined
+          \fb at warning{\noexpand\shorthandoff{;:!?} is helpless with
+           LuaTeX,\\ use \noexpand\NoAutoSpacing
+           *inside a group* instead.}%
+        \else
+          \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
+           helpless with LuaTeX,\MessageBreak use \protect\NoAutoSpacing
+           \space *inside a group* instead;\MessageBreak reported}%
+        \fi}%
+     \def\shorthandon##1{}%
+  }
+  \FB at addto{extras}{\FB at luatex@punct at french}
+  \def\activate at luatexpunct{%
+    \directlua{%
+      FR = \the\l at french
+      local path = kpse.find_file("frenchb.lua", "lua")
+      if path then
+         local f = dofile(path)
+         luatexbase.add_to_callback("kerning",
+                    f, "frenchb.french_punctuation")
+      else
+         texio.write_nl('')
+         texio.write_nl('*****************************')
+         texio.write_nl('Error: frenchb.lua not found.')
+         texio.write_nl('*****************************')
+         texio.write_nl('')
+      end
+     }%
+  }
+\fi
+\ifFB at xetex@punct
+   \ifLaTeXe
+    \PackageInfo{french.ldf}{No need for active punctuation characters%
+                    \MessageBreak with this version of XeTeX!%
+                    \MessageBreak reported}
+   \else
+    \fb at info{No need for active punctuation characters\\
+             with this version of XeTeX!}
+   \fi
+   \newXeTeXintercharclass\FB at punctthick
+   \newXeTeXintercharclass\FB at punctthin
+   \newXeTeXintercharclass\FB at punctnul
+   \newXeTeXintercharclass\FB at guilo
+   \newXeTeXintercharclass\FB at guilf
+   \newXeTeXintercharclass\FB at guilnul
+   \def\FBsavevariable at loop#1#2{\begingroup
+     \toks@\expandafter{\originalTeX #1}%
+     \edef\x{\endgroup
+       \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}%
+     \x}
+   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F,%
+                    "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}
+   \newcommand*{\FB at xetex@punct at french}{%
+     \babel at savevariable{\XeTeXinterchartokenstate}%
+     \babel at save{\shorthandon}%
+     \babel at save{\shorthandoff}%
+     \bbl at for\FB at char\FB at charlist
+          {\FBsavevariable at loop{\XeTeXcharclass}{\FB at char}}%
+     \def\shorthandoff##1{%
+       \ifx\PackageWarning\@undefined
+         \fb at warning{\noexpand\shorthandoff{;:!?} is helpless with
+           XeTeX,\\ use \noexpand\NoAutoSpacing
+           *inside a group* instead.}%
+       \else
+         \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
+           helpless with XeTeX,\MessageBreak use \protect\NoAutoSpacing
+           \space *inside a group* instead;\MessageBreak reported}%
+       \fi}%
+      \def\shorthandon##1{}%
+     \XeTeXinterchartokenstate=1
+     \XeTeXcharclass `\: = \FB at punctthick
+     \XeTeXinterchartoks \z@ \FB at punctthick = {%
+           \ifFB at spacing\ifhmode\FDP at colonspace\fi\fi}%
+     \XeTeXinterchartoks \FB at guilf \FB at punctthick = {%
+           \ifFB at spacing\FDP at colonspace\fi}%
+     \XeTeXinterchartoks \FB at nonchar \FB at punctthick = {%
+           \ifFB at spacing
+             \ifhmode
+               \ifdim\lastskip>1sp
+                 \unskip\penalty\@M\FBcolonspace
+               \else
+                 \FDP at colonspace
+               \fi
+             \fi
+           \fi}%
+     \bbl at for\FB at char
+             {`\;,`\!,`\?}%
+             {\XeTeXcharclass\FB at char=\FB at punctthin}%
+     \XeTeXinterchartoks \z@ \FB at punctthin = {%
+           \ifFB at spacing\ifhmode\FDP at thinspace\fi\fi}%
+     \XeTeXinterchartoks \FB at guilf \FB at punctthin = {%
+           \ifFB at spacing\FDP at thinspace\fi}%
+     \XeTeXinterchartoks \FB at nonchar \FB at punctthin = {%
+           \ifFB at spacing
+             \ifhmode
+               \ifdim\lastskip>1sp
+                 \unskip\penalty\@M\FBthinspace
+               \else
+                 \FDP at thinspace
+               \fi
+             \fi
+           \fi}%
+     \XeTeXinterchartoks \FB at guilo \z@ = {%
+           \ifFB at spacing\FB at guillspace\fi}%
+     \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
+           \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
+     \XeTeXinterchartoks \z@ \FB at guilf = {%
+           \ifFB at spacing\FB at guillspace\fi}%
+     \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
+           \ifFB at spacing\FB at guillspace\fi}%
+     \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
+           \ifFB at spacing\unskip\FB at guillspace\fi}%
+     \bbl at for\FB at char
+             {`\[,`\(,"A0,"202F}%
+             {\XeTeXcharclass\FB at char=\FB at punctnul}%
+     \bbl at for\FB at char
+             {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
+             {\XeTeXcharclass\FB at char=\z@}%
+   }
+   \FB at addto{extras}{\FB at xetex@punct at french}
+\fi
+\ifFB at active@punct
+  \initiate at active@char{:}%
+  \initiate at active@char{;}%
+  \initiate at active@char{!}%
+  \initiate at active@char{?}%
+  \declare at shorthand{french}{;}{%
+    \ifFB at spacing
+      \ifhmode
+        \ifdim\lastskip>1sp
+          \unskip\penalty\@M\FBthinspace
+        \else
+          \FDP at thinspace
+        \fi
+      \fi
+    \fi
+    \string;}
+  \declare at shorthand{french}{!}{%
+    \ifFB at spacing
+      \ifhmode
+        \ifdim\lastskip>1sp
+          \unskip\penalty\@M\FBthinspace
+        \else
+          \FDP at thinspace
+        \fi
+      \fi
+    \fi
+    \string!}
+  \declare at shorthand{french}{?}{%
+    \ifFB at spacing
+      \ifhmode
+        \ifdim\lastskip>1sp
+          \unskip\penalty\@M\FBthinspace
+        \else
+          \FDP at thinspace
+        \fi
+      \fi
+    \fi
+    \string?}
+  \declare at shorthand{french}{:}{%
+    \ifFB at spacing
+      \ifhmode
+        \ifdim\lastskip>1sp
+          \unskip\penalty\@M\FBcolonspace
+        \else
+          \FDP at colonspace
+        \fi
+      \fi
+    \fi
+    \string:}
+  \declare at shorthand{system}{:}{\string:}
+  \declare at shorthand{system}{!}{\string!}
+  \declare at shorthand{system}{?}{\string?}
+  \declare at shorthand{system}{;}{\string;}
+  \FB at addto{extras}{\languageshorthands{french}%
+    \bbl at activate{:}\bbl at activate{;}%
+    \bbl at activate{!}\bbl at activate{?}%
+  }
+  \FB at addto{noextras}{%
+    \bbl at deactivate{:}\bbl at deactivate{;}%
+    \bbl at deactivate{!}\bbl at deactivate{?}%
+  }
+\fi
+\newif\ifFBAutoSpacePunctuation  \FBAutoSpacePunctuationtrue
+\def\autospace at beforeFDP{%
+         \ifFB at luatex@punct\FB at addDPspace=1 \fi
+         \def\FDP at thinspace{\penalty\@M\FBthinspace}%
+         \def\FDP at colonspace{\penalty\@M\FBcolonspace}}
+\def\noautospace at beforeFDP{%
+         \ifFB at luatex@punct\FB at addDPspace=0 \fi
+         \let\FDP at thinspace\@empty
+         \let\FDP at colonspace\@empty}
+\ifLaTeXe
+    \def\AutoSpaceBeforeFDP{\autospace at beforeFDP
+                            \FBAutoSpacePunctuationtrue}
+    \def\NoAutoSpaceBeforeFDP{\noautospace at beforeFDP
+                              \FBAutoSpacePunctuationfalse}
+    \AtEndOfPackage{\AutoSpaceBeforeFDP}
+\else
+    \let\AutoSpaceBeforeFDP\autospace at beforeFDP
+    \let\NoAutoSpaceBeforeFDP\noautospace at beforeFDP
+    \AutoSpaceBeforeFDP
+\fi
+\ifLaTeXe
+  \DeclareRobustCommand\ttfamilyFB{\FB at spacing@off \ttfamilyORI}
+  \DeclareRobustCommand\rmfamilyFB{\FB at spacing@on  \rmfamilyORI}
+  \DeclareRobustCommand\sffamilyFB{\FB at spacing@on  \sffamilyORI}
+\fi
+\DeclareRobustCommand*{\NoAutoSpacing}{%
+  \FB at spacing@off
+  \ifFB at active@punct\shorthandoff{;:!?}\fi
+}
+\ifLaTeXe
+\else
+  \ifFBunicode
+    \def\guillemotleft{{\char"00AB}}
+    \def\guillemotright{{\char"00BB}}
+    \def\textquotedblleft{{\char"201C}}
+    \def\textquotedblright{{\char"201D}}
+  \else
+    \def\guillemotleft{\leavevmode\raise0.25ex
+                       \hbox{$\scriptscriptstyle\ll$}}
+    \def\guillemotright{\raise0.25ex
+                        \hbox{$\scriptscriptstyle\gg$}}
+    \def\textquotedblleft{``}
+    \def\textquotedblright{''}
+  \fi
+  \let\xspace\relax
+\fi
+\newcommand*{\FBguillspace}{\hskip.8\fontdimen2\font
+                              plus.3\fontdimen3\font
+                             minus.8\fontdimen4\font \relax}
+\newcommand*{\FB at guillspace}{\penalty\@M\FBguillspace}
+\newtoks\FBguillsp
+\ifFB at luatex@punct
+  \DeclareRobustCommand*{\FB at og}{\leavevmode
+          \bgroup\FB at spacing=0 \guillemotleft\egroup
+          \FB at guillspace}
+  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
+          \FB at guillspace
+          \bgroup\FB at spacing=0 \guillemotright\egroup}
+\fi
+\ifFB at xetex@punct
+  \DeclareRobustCommand*{\FB at og}{\leavevmode
+        \bgroup\FB at spacingfalse\guillemotleft\egroup
+        \FB at guillspace}
+  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
+        \FB at guillspace
+        \bgroup\FB at spacingfalse\guillemotright\egroup}
+\fi
+\ifFB at active@punct
+  \DeclareRobustCommand*{\FB at og}{\leavevmode
+        \guillemotleft
+        \FB at guillspace}
+  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
+        \FB at guillspace
+        \guillemotright}
+\fi
+\newcommand*{\og}{\@empty}
+\newcommand*{\fg}{\@empty}
+\ifLaTeXe
+  \def\bbl at frenchguillemets{\renewcommand*{\og}{\FB at og}%
+                            \renewcommand*{\fg}{\FB at fg\xspace}}
+  \renewcommand*{\og}{\textquotedblleft}
+  \renewcommand*{\fg}{\ifdim\lastskip>\z@\unskip\fi
+                      \textquotedblright\xspace}
+\else
+  \def\bbl at frenchguillemets{\let\og\FB at og
+                            \let\fg\FB at fg}
+  \def\og{\textquotedblleft}
+  \def\fg{\ifdim\lastskip>\z@\unskip\fi\textquotedblright}
+\fi
+\FB at addto{extras}{\babel at save\og \babel at save\fg \bbl at frenchguillemets}
+\newcommand*{\ogi}{\FB at og}
+\newcommand*{\fgi}{\FB at fg}
+\newcommand*{\ogii}{\textquotedblleft}
+\newcommand*{\fgii}{\textquotedblright}
+\newcount\FBguill at level
+\newtoks\FB at everypar
+\newif\ifFBcloseguill  \FBcloseguilltrue
+\newif\ifFBInnerGuillSingle
+\def\FBguillopen{\bgroup\NoAutoSpacing\guillemotleft\egroup}
+\def\FBguillclose{\bgroup\NoAutoSpacing\guillemotright\egroup}
+\let\FBguillnone\empty
+\let\FBeveryparguill\FBguillopen
+\let\FBeverylineguill\FBguillnone
+\ifLaTeXe
+  \DeclareRobustCommand\frquote{%
+       \@ifstar{\FBcloseguillfalse\fr at quote}%
+               {\FBcloseguilltrue\fr at quote}}
+\else
+  \newcommand\frquote[1]{\fr at quote{#1}}
+\fi
+\newcommand{\fr at quote}[1]{%
+  \leavevmode
+  \advance\FBguill at level by \@ne
+  \ifcase\FBguill at level
+  \or
+    \FB at everypar=\everypar
+    \ifx\FBeveryparguill\FBguillnone
+    \else
+      \def\FBeverypar at quote{\FBeveryparguill\FB at guillspace}%
+      \everypar=\expandafter{\the\everypar \FBeverypar at quote}%
+    \fi
+    \ogi #1\fgi
+  \or
+    \ifx\FBeverylineguill\FBguillopen
+      \localleftbox{\guillemotleft\FB at guillspace}%
+      \let\FBeverypar at quote\relax
+      \ogi #1\ifFBcloseguill\fgi\fi
+    \else
+      \ifx\FBeverylineguill\FBguillclose
+        \localleftbox{\guillemotright\FB at guillspace}%
+        \let\FBeverypar at quote\relax
+        \ogi #1\ifFBcloseguill\fgi\fi
+      \else
+        \let\FBeverypar at quote\relax
+        \ifFBInnerGuillSingle
+          \def\ogii{\leavevmode
+                    \guilsinglleft\FB at guillspace}%
+          \def\fgii{\ifdim\lastskip>\z@\unskip\fi
+                    \FB at guillspace\guilsinglright}%
+          \ifx\FBeveryparguill\FBguillopen
+            \def\FBeverypar at quote{\guilsinglleft\FB at guillspace}%
+          \fi
+          \ifx\FBeveryparguill\FBguillclose
+            \def\FBeverypar at quote{\guilsinglright\FB at guillspace}%
+          \fi
+        \fi
+        \ogii #1\ifFBcloseguill \fgii \fi
+      \fi
+    \fi
+  \else
+    \ifx\PackageWarning\@undefined
+      \fb at warning{\noexpand\frquote\space handles up to
+                  two levels.\\ Quotation not printed.}%
+    \else
+      \PackageWarning{french.ldf}{%
+         \protect\frquote\space handles up to two levels.
+         \MessageBreak Quotation not printed.  Reported}
+    \fi
+  \fi
+  \advance\FBguill at level by \m at ne
+  \ifx\FBeverylineguill\FBguillnone\else\localleftbox{}\fi
+  \ifx\FBeveryparguill\FBguillnone\else\everypar=\FB at everypar\fi
+}
+\ifLaTeXe
+  \def\BabelLanguages{french,acadian}
+  \StartBabelCommands*{\BabelLanguages}{date}
+      [unicode, fontenc=EU1 EU2, charset=utf8]
+    \SetString\monthiiname{février}
+    \SetString\monthviiiname{août}
+    \SetString\monthxiiname{décembre}
+  \StartBabelCommands*{\BabelLanguages}{date}
+    \SetStringLoop{month#1name}{%
+        janvier,f\'evrier,mars,avril,mai,juin,juillet,%
+        ao\^ut,septembre,octobre,novembre,d\'ecembre}
+    \SetString\today{{\number\day}\ifnum1=\day {\ier}\fi\space
+        \csname month\romannumeral\month name\endcsname \space
+        \number\year
+       }
+  \EndBabelCommands
+\else
+  \ifFBunicode
+    \@namedef{date\CurrentOption}{%
+      \def\today{{\number\day}\ifnum1=\day {\ier}\fi \space
+          \ifcase\month
+            \or janvier\or février\or mars\or avril\or mai\or
+            juin\or juillet\or août\or septembre\or
+            octobre\or novembre\or décembre\fi
+          \space \number\year}}
+  \else
+    \@namedef{date\CurrentOption}{%
+      \def\today{{\number\day}\ifnum1=\day {\ier}\fi \space
+        \ifcase\month
+          \or janvier\or f\'evrier\or mars\or avril\or mai\or
+          juin\or juillet\or ao\^ut\or septembre\or
+          octobre\or novembre\or d\'ecembre\fi
+        \space \number\year}}
+  \fi
+\fi
+\newif\ifFB at poorman
+\newdimen\FB at Mht
+\ifLaTeXe
+  \AtEndOfPackage{\RequirePackage{scalefnt}}
+  \newcommand*{\FBsupR}{-0.12}
+  \newcommand*{\FBsupS}{0.65}
+  \newcommand*{\FB at lc}[1]{\MakeLowercase{#1}}
+  \DeclareRobustCommand*{\FB at up@fake}[1]{%
+    \settoheight{\FB at Mht}{M}%
+    \addtolength{\FB at Mht}{\FBsupR \FB at Mht}%
+    \addtolength{\FB at Mht}{-\FBsupS ex}%
+    \raisebox{\FB at Mht}{\scalefont{\FBsupS}{\FB at lc{#1}}}%
+    }
+  \def\FB at split#1#2#3#4\@nil{\def\FB at firstthree{#1#2#3}%
+                             \def\FB at suffix{#4}}
+  \def\FB at x{x}
+  \def\FB at j{j}
+  \DeclareRobustCommand*{\FB at up}[1]{%
+    \bgroup \FB at poormantrue
+      \expandafter\FB at split\f at family\@nil
+      \edef\reserved at a{\lowercase{%
+         \noexpand\IfFileExists{\f at encoding\FB at firstthree -sup.fd}}}%
+      \reserved at a
+        {\ifx\FB at suffix\FB at x \FB at poormanfalse\fi
+         \ifx\FB at suffix\FB at j \FB at poormanfalse\fi
+         \ifFB at poorman \FB at up@fake{#1}%
+         \else         \FB at up@real{#1}%
+         \fi}%
+        {\FB at up@fake{#1}}%
+    \egroup}
+  \newcommand*{\FB at up@real}[1]{\bgroup
+       \fontfamily{\FB at firstthree -sup}\selectfont \FB at lc{#1}\egroup}
+  \DeclareRobustCommand*{\fup}[1]{%
+    \ifx\realsuperscript\@undefined
+      \FB at up{#1}%
+    \else
+      \bgroup\let\fakesuperscript\FB at up@fake
+             \realsuperscript{\FB at lc{#1}}\egroup
+    \fi}
+  \providecommand*{\up}{\relax}
+\else
+  \providecommand*{\up}[1]{\leavevmode\raise1ex\hbox{\sevenrm #1}}
+\fi
+\def\ieme{\up{e}\xspace}
+\def\iemes{\up{es}\xspace}
+\def\ier{\up{er}\xspace}
+\def\iers{\up{ers}\xspace}
+\def\iere{\up{re}\xspace}
+\def\ieres{\up{res}\xspace}
+\newcommand*{\FrenchEnumerate}[1]{%
+                       #1\up{o}\kern+.3em}
+\newcommand*{\FrenchPopularEnumerate}[1]{%
+                       #1\up{o})\kern+.3em}
+\def\primo{\FrenchEnumerate1}
+\def\secundo{\FrenchEnumerate2}
+\def\tertio{\FrenchEnumerate3}
+\def\quarto{\FrenchEnumerate4}
+\def\fprimo){\FrenchPopularEnumerate1}
+\def\fsecundo){\FrenchPopularEnumerate2}
+\def\ftertio){\FrenchPopularEnumerate3}
+\def\fquarto){\FrenchPopularEnumerate4}
+\DeclareRobustCommand*{\No}{N\up{o}\kern+.2em}
+\DeclareRobustCommand*{\no}{n\up{o}\kern+.2em}
+\DeclareRobustCommand*{\Nos}{N\up{os}\kern+.2em}
+\DeclareRobustCommand*{\nos}{n\up{os}\kern+.2em}
+\DeclareRobustCommand*{\bsc}[1]{\leavevmode\begingroup\kern0pt
+                                           \scshape #1\endgroup}
+\ifLaTeXe\else\let\scshape\relax\fi
+\ifFBunicode
+  \newcommand*{\at}{{\char"0040}}
+  \newcommand*{\circonflexe}{{\char"005E}}
+  \newcommand*{\tild}{{\char"007E}}
+  \newcommand*{\boi}{{\char"005C}}
+  \newcommand*{\degre}{{\char"00B0}}
+\else
+  \ifLaTeXe
+    \DeclareTextSymbol{\at}{T1}{64}
+    \DeclareTextSymbol{\circonflexe}{T1}{94}
+    \DeclareTextSymbol{\tild}{T1}{126}
+    \DeclareTextSymbolDefault{\at}{T1}
+    \DeclareTextSymbolDefault{\circonflexe}{T1}
+    \DeclareTextSymbolDefault{\tild}{T1}
+    \DeclareRobustCommand*{\boi}{\textbackslash}
+    \DeclareRobustCommand*{\degre}{\r{}}
+  \else
+    \def\T at one{T1}
+    \ifx\f at encoding\T at one
+      \newcommand*{\degre}{{\char6}}
+    \else
+      \newcommand*{\degre}{{\char23}}
+    \fi
+    \newcommand*{\at}{{\char64}}
+    \newcommand*{\circonflexe}{{\char94}}
+    \newcommand*{\tild}{{\char126}}
+    \newcommand*{\boi}{$\backslash$}
+  \fi
+\fi
+\ifLaTeXe
+  \newcommand*{\degres}{\degre}
+  \ifFBunicode
+    \DeclareRobustCommand*{\degres}{\degre}
+  \else
+    \def\Warning at degree@TSone{\FBWarning
+             {Degrees would look better in TS1-encoding:%
+              \MessageBreak add \protect
+              \usepackage{textcomp} to the preamble.%
+              \MessageBreak Degrees used}}
+    \AtBeginDocument{\ifx\DeclareEncodingSubset\@undefined
+                       \DeclareRobustCommand*{\degres}{%
+                          \leavevmode\hbox to 0.3em{\hss\degre\hss}%
+                       \Warning at degree@TSone
+                       \global\let\Warning at degree@TSone\relax}%
+                     \else
+                       \DeclareRobustCommand*{\degres}{%
+                          \hbox{\UseTextSymbol{TS1}{\textdegree}}}%
+                     \fi
+                     }
+  \fi
+\else
+  \newcommand*{\degres}{%
+    \leavevmode\hbox to 0.3em{\hss\degre\hss}}
+\fi
+\newif\ifFB at icomma
+\newcount\mc at charclass
+\newcount\mc at charfam
+\newcount\mc at charslot
+\newcount\std at mcc
+\newcount\dec at mcc
+\ifFBLuaTeX
+  \mc at charclass=\Umathcharclass`\,
+  \newcommand*{\dec at math@comma}{%
+    \mc at charfam=\Umathcharfam`\,
+    \mc at charslot=\Umathcharslot`\,
+    \Umathcode`\,= 0 \mc at charfam \mc at charslot
+  }
+  \newcommand*{\std at math@comma}{%
+    \mc at charfam=\Umathcharfam`\,
+    \mc at charslot=\Umathcharslot`\,
+    \Umathcode`\,= \mc at charclass \mc at charfam \mc at charslot
+  }
+\else
+  \std at mcc=\mathcode`\,
+  \dec at mcc=\std at mcc
+  \@tempcnta=\std at mcc
+  \divide\@tempcnta by "1000
+  \multiply\@tempcnta by "1000
+  \advance\dec at mcc by -\@tempcnta
+  \newcommand*{\dec at math@comma}{\mathcode`\,=\dec at mcc}
+  \newcommand*{\std at math@comma}{\mathcode`\,=\std at mcc}
+\fi
+\newcommand*{\DecimalMathComma}{%
+  \ifFBfrench\dec at math@comma\fi
+  \ifFB at icomma\else\FB at addto{extras}{\dec at math@comma}\fi
+}
+\newcommand*{\StandardMathComma}{%
+  \std at math@comma
+  \ifFB at icomma\else\FB at addto{extras}{\std at math@comma}\fi
+}
+\ifLaTeXe
+  \AtBeginDocument{\@ifpackageloaded{icomma}%
+                      {\FB at icommatrue}%
+                      {\FB at addto{noextras}{\std at math@comma}}%
+  }
+\else
+  \FB at addto{noextras}{\std at math@comma}
+\fi
+\newcommand*{\nombre}[1]{{#1}\fb at warning{*** \noexpand\nombre
+                                no longer formats numbers\string! ***}}
+\let\FBstop at here\relax
+\def\FBclean at on@exit{\let\ifLaTeXe\undefined
+                     \let\LaTeXetrue\undefined
+                     \let\LaTeXefalse\undefined}
+\ifx\magnification\@undefined
+\else
+  \def\FBstop at here{\ifFB at luatex@punct
+                     \activate at luatexpunct
+                   \fi
+                   \FBclean at on@exit
+                   \ldf at quit\CurrentOption\endinput}
+\fi
+\FBstop at here
+\renewcommand*{\nombre}[1]{\Warning at nombre{#1}}
+\newcommand*{\Warning at nombre}[1]{%
+   \ifdefined\numprint
+     \numprint{#1}%
+   \else
+     \PackageWarning{french.ldf}{%
+        \protect\nombre\space now relies on package numprint.sty,%
+        \MessageBreak add \protect
+        \usepackage[autolanguage]{numprint},\MessageBreak
+        see file numprint.pdf for more options.\MessageBreak
+        \protect\nombre\space called}%
+     \global\let\Warning at nombre\relax
+     {#1}%
+   \fi
+}
+\ifx\FBfigtabshape\@undefined \let\FBfigtabshape\scshape \fi
+\StartBabelCommands*{\BabelLanguages}{captions}
+      [unicode, fontenc=EU1 EU2 TU, charset=utf8]
+   \SetString{\refname}{Références}
+   \SetString{\abstractname}{Résumé}
+   \SetString{\prefacename}{Préface}
+   \SetString{\contentsname}{Table des matières}
+   \SetString{\ccname}{Copie à }
+   \SetString{\proofname}{Démonstration}
+   \SetString{\partfirst}{Première}
+   \SetString{\partsecond}{Deuxième}
+   \SetStringLoop{ordinal#1}{%
+     \frenchpartfirst,\frenchpartsecond,Troisième,Quatrième,%
+     Cinquième,Sixième,Septième,Huitième,Neuvième,Dixième,Onzième,%
+     Douzième,Treizième,Quatorzième,Quinzième,Seizième,%
+     Dix-septième,Dix-huitième,Dix-neuvième,Vingtième}
+\StartBabelCommands*{\BabelLanguages}{captions}
+   \SetString{\refname}{R\'ef\'erences}
+   \SetString{\abstractname}{R\'esum\'e}
+   \SetString{\bibname}{Bibliographie}
+   \SetString{\prefacename}{Pr\'eface}
+   \SetString{\chaptername}{Chapitre}
+   \SetString{\appendixname}{Annexe}
+   \SetString{\contentsname}{Table des mati\`eres}
+   \SetString{\listfigurename}{Table des figures}
+   \SetString{\listtablename}{Liste des tableaux}
+   \SetString{\indexname}{Index}
+   \SetString{\figurename}{{\FBfigtabshape Figure}}
+   \SetString{\tablename}{{\FBfigtabshape Table}}
+   \SetString{\pagename}{page}
+   \SetString{\seename}{voir}
+   \SetString{\alsoname}{voir aussi}
+   \SetString{\enclname}{P.~J. }
+   \SetString{\ccname}{Copie \`a }
+   \SetString{\headtoname}{}
+   \SetString{\proofname}{D\'emonstration}
+   \SetString{\glossaryname}{Glossaire}
+   \SetString{\partfirst}{Premi\`ere}
+   \SetString{\partsecond}{Deuxi\`eme}
+   \SetString{\partnameord}{partie}
+   \SetStringLoop{ordinal#1}{%
+     \frenchpartfirst,\frenchpartsecond,Troisi\`eme,Quatri\`eme,%
+     Cinqui\`eme,Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,%
+     Onzi\`eme,Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,%
+     Seizi\`eme,Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,%
+     Vingti\`eme}
+   \AfterBabelCommands{%
+     \DeclareRobustCommand*{\FB at emptypart}{\def\thepart{}}%
+     \DeclareRobustCommand*{\FB at partname}{%
+        \ifFBPartNameFull
+          \csname ordinal\romannumeral\value{part}\endcsname\space
+          \frenchpartnameord\FB at emptypart
+        \else
+          Partie%
+        \fi}%
+    }
+   \SetString{\partname}{\FB at partname}
+\EndBabelCommands
+\AtEndOfPackage{%
+   \ifFB at koma
+     \ifdefined\partformat
+       \FB at addto{captions}{%
+           \ifFBPartNameFull
+             \babel at save\partformat
+             \renewcommand*{\partformat}{\partname}%
+           \fi}%
+     \fi
+   \fi
+}
+\bgroup
+  \catcode`:=12 \catcode`>=12 \relax
+  \long\gdef\STD at makecaption#1#2{%
+    \vskip\abovecaptionskip
+    \sbox\@tempboxa{#1: #2}%
+    \ifdim \wd\@tempboxa >\hsize
+      #1: #2\par
+    \else
+      \global \@minipagefalse
+      \hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
+    \fi
+    \vskip\belowcaptionskip}
+\egroup
+\newif\if at FBwarning@capsep
+\@FBwarning at capseptrue
+\newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}}
+\newcommand*{\CaptionSeparator}{\space\textendash\space}
+\def\FBCaption at Separator{: }
+\long\def\FB at makecaption#1#2{%
+  \vskip\abovecaptionskip
+  \sbox\@tempboxa{#1\FBCaption at Separator #2}%
+  \ifdim \wd\@tempboxa >\hsize
+    #1\FBCaption at Separator #2\par
+  \else
+    \global \@minipagefalse
+    \hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
+  \fi
+  \vskip\belowcaptionskip}
+\@ifclassloaded{amsart}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{amsbook}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{amsdtx}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{amsldoc}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{amproc}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{smfart}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{smfbook}{\@FBwarning at capsepfalse}{}
+\ifFB at active@punct\else\@FBwarning at capsepfalse\fi
+\newif\ifFB at koma
+\@ifclassloaded{memoir}{\@FBwarning at capsepfalse}{}
+\@ifclassloaded{scrartcl}{\@FBwarning at capsepfalse\FB at komatrue}{}
+\@ifclassloaded{scrbook}{\@FBwarning at capsepfalse\FB at komatrue}{}
+\@ifclassloaded{scrreprt}{\@FBwarning at capsepfalse\FB at komatrue}{}
+\@ifclassloaded{beamer}{\@FBwarning at capsepfalse}{}
+\ifdefined\@makecaption\else\@FBwarning at capsepfalse\fi
+\@ifpackageloaded{caption}
+   {\FBWarning{Please load the "caption" package\MessageBreak
+               AFTER babel/frenchb; reported}%
+    \@FBwarning at capsepfalse}%
+   {}
+\@ifpackageloaded{subcaption}
+   {\FBWarning{Please load the "subcaption" package\MessageBreak
+               AFTER babel/frenchb; reported}%
+    \@FBwarning at capsepfalse}%
+   {}
+\@ifpackageloaded{floatrow}
+   {\FBWarning{Please load the "floatrow" package\MessageBreak
+               AFTER babel/frenchb; reported}%
+    \@FBwarning at capsepfalse}%
+   {}
+\AtBeginDocument{%
+  \ifx\@makecaption\STD at makecaption
+    \global\let\@makecaption\FB at makecaption
+    \ifFBOldFigTabCaptions
+    \else
+      \def\FBCaption at Separator{{\autospace at beforeFDP : }}%
+    \fi
+    \ifFBCustomiseFigTabCaptions
+      \ifx\bbl at main@language\FB at french
+        \def\FBCaption at Separator{\CaptionSeparator}%
+      \fi
+    \fi
+    \@FBwarning at capsepfalse
+  \fi
+  \if at FBwarning@capsep
+    \FBWarning
+       {Figures' and tables' captions might look like\MessageBreak
+        `Figure 1:' which is wrong in French.\MessageBreak
+        Check your class or packages to change this;\MessageBreak
+        reported}%
+  \fi
+  \let\FB at makecaption\relax
+  \let\STD at makecaption\relax
+}
+\ifFBunicode
+  \let\FBtextellipsis\textellipsis
+\else
+  \DeclareTextSymbol{\FBtextellipsis}{LY1}{133}
+  \DeclareTextCommandDefault{\FBtextellipsis}{%
+    .\kern\fontdimen3\font.\kern\fontdimen3\font.\xspace}
+\fi
+\newcommand*{\Tdots@}{\@xp\textellipsis}
+\newcommand*{\Mdots@}{\@xp\mdots@}
+\AtBeginDocument{\DeclareRobustCommand*{\dots}{\relax
+                 \csname\ifmmode M\else T\fi dots@\endcsname}%
+                 \ifdefined\@xp\else\let\@xp\relax\fi
+                 \ifdefined\mdots@\else\let\Mdots@\mathellipsis\fi
+                }
+\def\bbl at frenchdots{\babel at save\Tdots@ \let\Tdots@\FBtextellipsis}
+\FB at addto{extras}{\bbl at frenchdots}
+\ifFB at active@punct
+   \@ifpackageloaded{listings}
+      {\FBWarning{Please load the "listings" package\MessageBreak
+                  AFTER babel/frenchb; reported}%
+      }{}
+\fi
+\newif\if at FBwarning@natbib
+\ifFB at active@punct
+  \@ifpackageloaded{natbib}{}{\@FBwarning at natbibtrue}
+\fi
+\AtBeginDocument{%
+   \if at FBwarning@natbib
+     \@ifpackageloaded{natbib}{}{\@FBwarning at natbibfalse}%
+   \fi
+   \if at FBwarning@natbib
+     \FBWarning{Please load the "natbib" package\MessageBreak
+                BEFORE babel/frenchb; reported}%
+   \fi
+}
+\newif\if at FBwarning@beamerarticle
+\@ifpackageloaded{beamerarticle}{}{\@FBwarning at beamerarticletrue}
+\AtBeginDocument{%
+   \if at FBwarning@beamerarticle
+     \@ifpackageloaded{beamerarticle}{}%
+                                     {\@FBwarning at beamerarticlefalse}%
+   \fi
+   \if at FBwarning@beamerarticle
+     \FBWarning{Please load the "beamerarticle" package\MessageBreak
+                BEFORE babel/frenchb; reported}%
+   \fi
+}
+\newcommand*{\frenchsetup}[1]{%
+  \setkeys{FB}{#1}%
+}%
+\@onlypreamble\frenchsetup
+\let\frenchbsetup\frenchsetup
+\@onlypreamble\frenchbsetup
+\newif\ifFBShowOptions              \FBShowOptionsfalse
+\newif\ifFBStandardLayout           \FBStandardLayouttrue
+\newif\ifFBGlobalLayoutFrench       \FBGlobalLayoutFrenchtrue
+\newif\ifFBReduceListSpacing        \FBReduceListSpacingfalse
+\newif\ifFBListOldLayout            \FBListOldLayoutfalse
+\newif\ifFBCompactItemize           \FBCompactItemizefalse
+\newif\ifFBStandardItemizeEnv       \FBStandardItemizeEnvtrue
+\newif\ifFBStandardEnumerateEnv     \FBStandardEnumerateEnvtrue
+\newif\ifFBStandardItemLabels       \FBStandardItemLabelstrue
+\newif\ifFBStandardLists            \FBStandardListstrue
+\newif\ifFBIndentFirst              \FBIndentFirstfalse
+\newif\ifFBFrenchFootnotes          \FBFrenchFootnotesfalse
+\newif\ifFBAutoSpaceFootnotes       \FBAutoSpaceFootnotesfalse
+\newif\ifFBOriginalTypewriter       \FBOriginalTypewriterfalse
+\newif\ifFBThinColonSpace           \FBThinColonSpacefalse
+\newif\ifFBThinSpaceInFrenchNumbers \FBThinSpaceInFrenchNumbersfalse
+\newif\ifFBFrenchSuperscripts       \FBFrenchSuperscriptstrue
+\newif\ifFBLowercaseSuperscripts    \FBLowercaseSuperscriptstrue
+\newif\ifFBPartNameFull             \FBPartNameFulltrue
+\newif\ifFBCustomiseFigTabCaptions  \FBCustomiseFigTabCaptionsfalse
+\newif\ifFBOldFigTabCaptions        \FBOldFigTabCaptionsfalse
+\newif\ifFBSmallCapsFigTabCaptions  \FBSmallCapsFigTabCaptionstrue
+\newif\ifFBSuppressWarning          \FBSuppressWarningfalse
+\newif\ifFBINGuillSpace             \FBINGuillSpacefalse
+\edef\FB at french{\CurrentOption}
+\AtEndOfPackage{%
+  \ifx\bbl at main@language\FB at french
+    \FBGlobalLayoutFrenchtrue
+    \@ifclassloaded{beamer}%
+      {\PackageInfo{french.ldf}{%
+          No list customisation for the beamer class,%
+          \MessageBreak reported}}%
+      {\@ifpackageloaded{beamerarticle}%
+         {\FBStandardItemLabelsfalse
+          \FBReduceListSpacingtrue
+          \PackageInfo{french.ldf}{%
+             Minimal list customisation for the beamerarticle%
+             \MessageBreak package; reported}}%
+         {\FBReduceListSpacingtrue
+          \FBStandardItemizeEnvfalse
+          \FBStandardEnumerateEnvfalse
+          \FBStandardItemLabelsfalse}%
+      }
+    \FBIndentFirsttrue
+    \FBFrenchFootnotestrue
+    \FBAutoSpaceFootnotestrue
+    \FBCustomiseFigTabCaptionstrue
+  \else
+    \FBGlobalLayoutFrenchfalse
+  \fi
+  \RequirePackage{keyval}%
+  \define at key{FB}{ShowOptions}[true]%
+          {\csname FBShowOptions#1\endcsname}%
+  \define at key{FB}{StandardLayout}[true]%
+          {\csname FBStandardLayout#1\endcsname
+           \ifFBStandardLayout
+             \FBReduceListSpacingfalse
+             \FBStandardItemizeEnvtrue
+             \FBStandardItemLabelstrue
+             \FBStandardEnumerateEnvtrue
+             \FBIndentFirstfalse
+             \FBFrenchFootnotesfalse
+             \FBAutoSpaceFootnotesfalse
+             \FBGlobalLayoutFrenchfalse
+           \else
+             \FBReduceListSpacingtrue
+             \FBStandardItemizeEnvfalse
+             \FBStandardItemLabelsfalse
+             \FBStandardEnumerateEnvfalse
+             \FBIndentFirsttrue
+             \FBFrenchFootnotestrue
+             \FBAutoSpaceFootnotestrue
+           \fi}%
+  \define at key{FB}{GlobalLayoutFrench}[true]%
+          {\csname FBGlobalLayoutFrench#1\endcsname
+           \ifFBGlobalLayoutFrench
+             \ifx\bbl at main@language\FB at french
+             \else
+               \FBGlobalLayoutFrenchfalse
+               \PackageWarning{french.ldf}%
+                  {Option `GlobalLayoutFrench' skipped:\MessageBreak
+                   French is *not* babel's last option.\MessageBreak
+                   Reported}%
+             \fi
+           \fi}%
+  \define at key{FB}{ReduceListSpacing}[true]%
+          {\csname FBReduceListSpacing#1\endcsname}%
+  \define at key{FB}{ListOldLayout}[true]%
+          {\csname FBListOldLayout#1\endcsname
+           \ifFBListOldLayout
+             \FBStandardEnumerateEnvtrue
+             \renewcommand*{\FrenchLabelItem}{\textendash}%
+           \fi}%
+  \define at key{FB}{CompactItemize}[true]%
+          {\csname FBCompactItemize#1\endcsname
+           \ifFBCompactItemize
+             \FBStandardItemizeEnvfalse
+             \FBStandardEnumerateEnvfalse
+           \else
+             \FBStandardItemizeEnvtrue
+             \FBStandardEnumerateEnvtrue
+           \fi}%
+  \define at key{FB}{StandardItemizeEnv}[true]%
+          {\csname FBStandardItemizeEnv#1\endcsname}%
+  \define at key{FB}{StandardEnumerateEnv}[true]%
+          {\csname FBStandardEnumerateEnv#1\endcsname}%
+  \define at key{FB}{StandardItemLabels}[true]%
+          {\csname FBStandardItemLabels#1\endcsname}%
+  \define at key{FB}{ItemLabels}%
+          {\renewcommand*{\FrenchLabelItem}{#1}}%
+  \define at key{FB}{ItemLabeli}%
+          {\renewcommand*{\Frlabelitemi}{#1}}%
+  \define at key{FB}{ItemLabelii}%
+          {\renewcommand*{\Frlabelitemii}{#1}}%
+  \define at key{FB}{ItemLabeliii}%
+          {\renewcommand*{\Frlabelitemiii}{#1}}%
+  \define at key{FB}{ItemLabeliv}%
+          {\renewcommand*{\Frlabelitemiv}{#1}}%
+  \define at key{FB}{StandardLists}[true]%
+          {\csname FBStandardLists#1\endcsname
+           \ifFBStandardLists
+             \FBReduceListSpacingfalse
+             \FBCompactItemizefalse
+             \FBStandardItemizeEnvtrue
+             \FBStandardEnumerateEnvtrue
+             \FBStandardItemLabelstrue
+           \else
+             \FBReduceListSpacingtrue
+             \FBCompactItemizetrue
+             \FBStandardItemizeEnvfalse
+             \FBStandardEnumerateEnvfalse
+             \FBStandardItemLabelsfalse
+           \fi}%
+  \define at key{FB}{IndentFirst}[true]%
+          {\csname FBIndentFirst#1\endcsname}%
+  \define at key{FB}{FrenchFootnotes}[true]%
+          {\csname FBFrenchFootnotes#1\endcsname}%
+  \define at key{FB}{AutoSpaceFootnotes}[true]%
+          {\csname FBAutoSpaceFootnotes#1\endcsname}%
+  \define at key{FB}{AutoSpacePunctuation}[true]%
+          {\csname FBAutoSpacePunctuation#1\endcsname}%
+  \define at key{FB}{OriginalTypewriter}[true]%
+          {\csname FBOriginalTypewriter#1\endcsname}%
+  \define at key{FB}{ThinColonSpace}[true]%
+          {\csname FBThinColonSpace#1\endcsname
+           \ifFBThinColonSpace
+             \renewcommand*{\FBcolonspace}{\FBthinspace}%
+          \fi}%
+  \define at key{FB}{ThinSpaceInFrenchNumbers}[true]%
+          {\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
+  \define at key{FB}{FrenchSuperscripts}[true]%
+          {\csname FBFrenchSuperscripts#1\endcsname}
+  \define at key{FB}{LowercaseSuperscripts}[true]%
+          {\csname FBLowercaseSuperscripts#1\endcsname}
+  \define at key{FB}{PartNameFull}[true]%
+          {\csname FBPartNameFull#1\endcsname}%
+  \define at key{FB}{CustomiseFigTabCaptions}[true]%
+          {\csname FBCustomiseFigTabCaptions#1\endcsname}%
+  \define at key{FB}{OldFigTabCaptions}[true]%
+          {\csname FBOldFigTabCaptions#1\endcsname
+           \ifFBOldFigTabCaptions
+             \FB at addto{extras}{\babel at save\FBCaption at Separator
+                      \def\FBCaption at Separator{\CaptionSeparator}}%
+           \fi}%
+  \define at key{FB}{SmallCapsFigTabCaptions}[true]%
+          {\csname FBSmallCapsFigTabCaptions#1\endcsname
+           \ifFBSmallCapsFigTabCaptions
+             \let\FBfigtabshape\scshape
+           \else
+             \let\FBfigtabshape\relax
+           \fi}%
+  \define at key{FB}{SuppressWarning}[true]%
+          {\csname FBSuppressWarning#1\endcsname
+           \ifFBSuppressWarning
+             \renewcommand{\FBWarning}[1]{}%
+           \fi}%
+  \define at key{FB}{INGuillSpace}[true]%
+          {\csname FBINGuillSpace#1\endcsname
+           \ifFBINGuillSpace
+             \renewcommand*{\FBguillspace}{\space}%
+           \fi}%
+  \define at key{FB}{InnerGuillSingle}[true]%
+          {\csname FBInnerGuillSingle#1\endcsname}%
+  \define at key{FB}{EveryParGuill}[open]%
+          {\expandafter\let\expandafter
+             \FBeveryparguill\csname FBguill#1\endcsname
+           \ifx\FBeveryparguill\FBguillopen
+           \else\ifx\FBeveryparguill\FBguillclose
+                \else\ifx\FBeveryparguill\FBguillnone
+                     \else
+                       \let\FBeveryparguill\FBguillopen
+                       \PackageWarning{french.ldf}%
+                          {Wrong value for `EveryParGuill':
+                           try `open',\MessageBreak
+                           `close' or `none'. Reported}%
+                     \fi
+                \fi
+           \fi}%
+  \define at key{FB}{EveryLineGuill}[open]%
+          {\ifFB at luatex@punct
+             \expandafter\let\expandafter
+               \FBeverylineguill\csname FBguill#1\endcsname
+             \ifx\FBeverylineguill\FBguillopen
+             \else\ifx\FBeverylineguill\FBguillclose
+                  \else\ifx\FBeverylineguill\FBguillnone
+                       \else
+                         \let\FBeverylineguill\FBguillnone
+                         \FBWarning{Wrong value for `EveryLineGuill':
+                                    try `open',\MessageBreak
+                                    `close' or `none'. Reported}%
+                       \fi
+                  \fi
+             \fi
+           \else
+             \FBWarning{Option `EveryLineGuill' skipped:%
+                        \MessageBreak this option is for
+                        LuaTeX *only*.\MessageBreak Reported}%
+           \fi}%
+  \define at key{FB}{og}%
+          {\ifFBunicode
+             \ifFB at luatex@punct
+               \FB at addGUILspace=1 \relax
+             \fi
+             \ifFB at xetex@punct
+               \XeTeXcharclass"13   = \FB at guilo
+               \XeTeXcharclass"AB   = \FB at guilo
+               \XeTeXcharclass"A0   = \FB at guilnul
+               \XeTeXcharclass"202F = \FB at guilnul
+             \fi
+             \ifFB at active@punct
+               \PackageWarning{french.ldf}%
+                  {Option og=« not supported with this version
+                   of\MessageBreak LuaTeX/XeTeX; reported}%
+             \fi
+           \else
+             \newcommand*{\FB@@og}{%
+                \ifFBfrench
+                  \ifFB at spacing\FB at og\ignorespaces
+                  \else\guillemotleft
+                  \fi
+                \else\guillemotleft\fi}%
+             \AtBeginDocument{%
+                \ifdefined\DeclareInputText
+                  \ifdefined\uc at dclc
+                    \uc at dclc{171}{default}{\FB@@og}%
+                  \else
+                    \ifdefined\DeclareUnicodeCharacter
+                      \DeclareUnicodeCharacter{00AB}{\FB@@og}%
+                    \else
+                      \@tempcnta`#1\relax
+                      \ifdefined\mule at def
+                        \mule at def{11}{\FB@@og}%
+                      \else
+                        \DeclareInputText{\the\@tempcnta}{\FB@@og}%
+                      \fi
+                    \fi
+                  \fi
+                \else
+                  \PackageWarning{french.ldf}%
+                     {Option `og' requires package inputenc;%
+                      \MessageBreak reported}%
+                \fi
+              }%
+           \fi
+          }%
+  \define at key{FB}{fg}%
+          {\ifFBunicode
+             \ifFB at luatex@punct
+               \FB at addGUILspace=1 \relax
+             \fi
+             \ifFB at xetex@punct
+               \XeTeXcharclass"14   = \FB at guilf
+               \XeTeXcharclass"BB   = \FB at guilf
+               \XeTeXcharclass"A0   = \FB at guilnul
+               \XeTeXcharclass"202F = \FB at guilnul
+             \fi
+             \ifFB at active@punct
+               \PackageWarning{french.ldf}%
+                  {Option fg=» not supported with this version
+                   of\MessageBreak LuaTeX/XeTeX; reported}%
+             \fi
+           \else
+             \newcommand*{\FB@@fg}{%
+                \ifFBfrench
+                  \ifFB at spacing\FB at fg
+                  \else\guillemotright
+                  \fi
+                \else\guillemotright\fi}%
+             \AtBeginDocument{%
+               \ifdefined\DeclareInputText
+                 \ifdefined\uc at dclc
+                   \uc at dclc{187}{default}{\FB@@fg}%
+                 \else
+                   \ifdefined\DeclareUnicodeCharacter
+                     \DeclareUnicodeCharacter{00BB}{\FB@@fg}%
+                   \else
+                     \@tempcnta`#1\relax
+                     \ifdefined\mule at def
+                       \mule at def{27}{{\FB@@fg}}%
+                     \else
+                       \DeclareInputText{\the\@tempcnta}{\FB@@fg}%
+                     \fi
+                   \fi
+                 \fi
+               \else
+                 \PackageWarning{french.ldf}%
+                    {Option `fg' requires package inputenc;%
+                     \MessageBreak reported}%
+               \fi
+              }%
+           \fi
+          }%
+}
+\newcommand*{\FBprocess at options}{%
+  \@ifpackageloaded{enumitem}{%
+     \ifFBStandardItemizeEnv
+     \else
+       \FBStandardItemizeEnvtrue
+       \PackageInfo{french.ldf}%
+          {Setting StandardItemizeEnv=true for\MessageBreak
+           compatibility with enumitem package,\MessageBreak
+           reported}%
+     \fi
+     \ifFBStandardEnumerateEnv
+     \else
+       \FBStandardEnumerateEnvtrue
+       \PackageInfo{french.ldf}%
+          {Setting StandardEnumerateEnv=true for\MessageBreak
+           compatibility with enumitem package,\MessageBreak
+           reported}%
+     \fi}{}%
+  \@ifpackageloaded{paralist}{%
+     \ifFBStandardItemizeEnv
+     \else
+       \FBStandardItemizeEnvtrue
+       \PackageInfo{french.ldf}%
+          {Setting StandardItemizeEnv=true for\MessageBreak
+           compatibility with paralist package,\MessageBreak
+           reported}%
+     \fi
+     \ifFBStandardEnumerateEnv
+     \else
+       \FBStandardEnumerateEnvtrue
+       \PackageInfo{french.ldf}%
+          {Setting StandardEnumerateEnv=true for\MessageBreak
+           compatibility with paralist package,\MessageBreak
+           reported}%
+     \fi}{}%
+  \@ifpackageloaded{enumerate}{%
+     \ifFBStandardEnumerateEnv
+     \else
+       \FBStandardEnumerateEnvtrue
+       \PackageInfo{french.ldf}%
+          {Setting StandardEnumerateEnv=true for\MessageBreak
+           compatibility with enumerate package,\MessageBreak
+           reported}%
+     \fi}{}%
+  \def\FB at ufl{\update at frenchlists}
+  \ifx\bbl at main@language\FB at french
+    \update at frenchlists
+  \fi
+  \ifFBAutoSpacePunctuation
+    \autospace at beforeFDP
+  \else
+    \noautospace at beforeFDP
+  \fi
+  \ifFBOriginalTypewriter
+  \else
+    \let\ttfamilyORI\ttfamily
+    \let\rmfamilyORI\rmfamily
+    \let\sffamilyORI\sffamily
+    \let\ttfamily\ttfamilyFB
+    \let\rmfamily\rmfamilyFB
+    \let\sffamily\sffamilyFB
+  \fi
+  \@ifpackageloaded{numprint}%
+  {\ifnprt at autolanguage
+     \providecommand*{\npstylefrench}{}%
+     \ifFBThinSpaceInFrenchNumbers
+       \renewcommand*\npstylefrench{%
+          \npthousandsep{\,}%
+          \npdecimalsign{,}%
+          \npproductsign{\cdot}%
+          \npunitseparator{\,}%
+          \npdegreeseparator{}%
+          \nppercentseparator{\nprt at unitsep}%
+          }%
+     \else
+       \renewcommand*\npstylefrench{%
+          \npthousandsep{~}%
+          \npdecimalsign{,}%
+          \npproductsign{\cdot}%
+          \npunitseparator{\,}%
+          \npdegreeseparator{}%
+          \nppercentseparator{\nprt at unitsep}%
+          }%
+     \fi
+     \npaddtolanguage{french}{french}%
+   \fi}{}%
+  \ifFBFrenchSuperscripts
+    \DeclareRobustCommand*{\up}{\@ifstar{\FB at up@fake}{\fup}}%
+  \else
+    \DeclareRobustCommand*{\up}{\@ifstar{\FB at up@fake}%
+                                        {\textsuperscript}}%
+  \fi
+  \ifFBLowercaseSuperscripts
+  \else
+    \renewcommand*{\FB at lc}[1]{##1}%
+  \fi
+  \ifFBCustomiseFigTabCaptions
+    \ifFB at koma
+      \renewcommand*{\captionformat}{\CaptionSeparator}%
+    \fi
+    \@ifclassloaded{memoir}%
+       {\captiondelim{\CaptionSeparator}}{}%
+    \@ifclassloaded{beamer}%
+       {\defbeamertemplate{caption label separator}{FBcustom}{%
+            \CaptionSeparator}%
+        \setbeamertemplate{caption label separator}[FBcustom]}{}%
+  \else
+    \ifFB at koma
+      \renewcommand*{\captionformat}{{\autospace at beforeFDP : }}%
+    \fi
+    \@ifclassloaded{memoir}%
+       {\captiondelim{{\autospace at beforeFDP : }}%
+       }{}%
+    \@ifclassloaded{beamer}%
+       {\defbeamertemplate{caption label separator}{FBcolon}{%
+             {\autospace at beforeFDP : }}%
+        \setbeamertemplate{caption label separator}[FBcolon]%
+       }{}%
+  \fi
+  \ifFBShowOptions
+    \GenericWarning{* }{%
+     * **** List of possible options for frenchb ****\MessageBreak
+     [Default values between brackets when frenchb is loaded *LAST*]%
+     \MessageBreak
+     ShowOptions=true [false]\MessageBreak
+     StandardLayout=true [false]\MessageBreak
+     GlobalLayoutFrench=false [true]\MessageBreak
+     StandardLists=true [false]\MessageBreak
+     IndentFirst=false [true]\MessageBreak
+     ReduceListSpacing=false [true]\MessageBreak
+     ListOldLayout=true [false]\MessageBreak
+     StandardItemizeEnv=true [false]\MessageBreak
+     StandardEnumerateEnv=true [false]\MessageBreak
+     StandardItemLabels=true [false]\MessageBreak
+     ItemLabels=\textemdash, \textbullet,
+        \protect\ding{43},... [\textendash]\MessageBreak
+     ItemLabeli=\textemdash, \textbullet,
+        \protect\ding{43},... [\textendash]\MessageBreak
+     ItemLabelii=\textemdash, \textbullet,
+        \protect\ding{43},... [\textendash]\MessageBreak
+     ItemLabeliii=\textemdash, \textbullet,
+        \protect\ding{43},... [\textendash]\MessageBreak
+     ItemLabeliv=\textemdash, \textbullet,
+        \protect\ding{43},... [\textendash]\MessageBreak
+     FrenchFootnotes=false [true]\MessageBreak
+     AutoSpaceFootnotes=false [true]\MessageBreak
+     AutoSpacePunctuation=false [true]\MessageBreak
+     OriginalTypewriter=true [false]\MessageBreak
+     ThinColonSpace=true [false]\MessageBreak
+     ThinSpaceInFrenchNumbers=true [false]\MessageBreak
+     FrenchSuperscripts=false [true]\MessageBreak
+     LowercaseSuperscripts=false [true]\MessageBreak
+     PartNameFull=false [true]\MessageBreak
+     SuppressWarning=true [false]\MessageBreak
+     CustomiseFigTabCaptions=false [true]\MessageBreak
+     OldFigTabCaptions=true [false]\MessageBreak
+     SmallCapsFigTabCaptions=false [true]\MessageBreak
+     INGuillSpace=true [false]\MessageBreak
+     InnerGuillSingle=true [false]\MessageBreak
+     EveryParGuill=open, close, none [open]\MessageBreak
+     EveryLineGuill=open, close, none
+                   [open in LuaTeX, none otherwise]\MessageBreak
+     og= <left quote character>, fg= <right quote character>%
+     \MessageBreak
+     *********************************************%
+     \MessageBreak\protect\frenchsetup{ShowOptions}}
+  \fi
+}
+\AtBeginDocument{%
+   \providecommand*{\xspace}{\relax}%
+   \ifdefined\pdfstringdefDisableCommands
+     \pdfstringdefDisableCommands{%
+        \let\up\relax
+        \let\fup\relax
+        \let\degre\textdegree
+        \let\degres\textdegree
+        \def\ieme{e\xspace}%
+        \def\iemes{es\xspace}%
+        \def\ier{er\xspace}%
+        \def\iers{ers\xspace}%
+        \def\iere{re\xspace}%
+        \def\ieres{res\xspace}%
+        \def\FrenchEnumerate#1{#1\degre\space}%
+        \def\FrenchPopularEnumerate#1{#1\degre)\space}%
+        \def\No{N\degre\space}%
+        \def\no{n\degre\space}%
+        \def\Nos{N\degre\space}%
+        \def\nos{n\degre\space}%
+        \def\FB at og{\guillemotleft\space}%
+        \def\FB at fg{\space\guillemotright}%
+        \def\at{@}%
+        \def\circonflexe{\string^}%
+        \def\tild{\string~}%
+        \def\boi{\textbackslash}%
+        \let\bsc\textsc
+      }%
+   \fi
+   \FBprocess at options
+   \ifFB at luatex@punct
+     \FBcolonsp=\expandafter{\meaning\FBcolonspace}
+     \FBthinsp= \expandafter{\meaning\FBthinspace}
+     \FBguillsp=\expandafter{\meaning\FBguillspace}
+     \activate at luatexpunct
+   \fi
+   \ifFBunicode
+     \@ifpackageloaded{fontspec}{}%
+        {\@ifpackageloaded{luainputenc}{}%
+            {\PackageWarning{french.ldf}%
+                {Add \protect\usepackage{fontspec} to the\MessageBreak
+                 preamble of your document, reported}%
+            }%
+        }
+   \else
+     \begingroup \newcommand{\FBOTone}{OT1}%
+     \ifx\encodingdefault\FBOTone
+       \PackageWarning{french.ldf}%
+          {OT1 encoding should not be used for French.%
+           \MessageBreak
+           Add \protect\usepackage[T1]{fontenc} to the
+           preamble\MessageBreak of your document; reported}%
+     \fi
+     \endgroup
+   \fi
+}
+\let\listORI\list
+\let\endlistORI\endlist
+\def\FB at listVsettings{%
+      \setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}%
+      \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}%
+      \setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}%
+      \setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}%
+      \@tempdima=\parskip
+      \addtolength{\topsep}{-\@tempdima}%
+      \addtolength{\partopsep}{\@tempdima}%
+}
+\def\listFB#1#2{\listORI{#1}{\FB at listVsettings #2}}
+\let\endlistFB\endlist
+\newcommand*{\FrenchLabelItem}{\textemdash}
+\newcommand*{\Frlabelitemi}{\FrenchLabelItem}
+\newcommand*{\Frlabelitemii}{\FrenchLabelItem}
+\newcommand*{\Frlabelitemiii}{\FrenchLabelItem}
+\newcommand*{\Frlabelitemiv}{\FrenchLabelItem}
+\newlength\listindentFB
+\setlength{\listindentFB}{-1pt}
+\newlength\descindentFB
+\setlength{\descindentFB}{-1pt}
+\newlength\labelwidthFB
+\setlength{\labelwidthFB}{-1pt}
+\newlength\leftmarginFB
+\def\FB at listHsettings{%
+   \leftmarginFB\labelwidthFB
+   \advance\leftmarginFB \labelsep
+   \bbl at for\FB at dp {1, 2, 3, 4, 5, 6}%
+     {\csname leftmargin\romannumeral\FB at dp\endcsname \leftmarginFB}%
+   \advance\leftmargini \listindentFB
+   \leftmargin\csname leftmargin\ifnum\@listdepth=\@ne i\else
+                                                      ii\fi\endcsname
+}
+\def\FB at itemizesettings{%
+    \ifFBReduceListSpacing
+      \setlength{\itemsep}{\z@}%
+      \setlength{\parsep}{\z@}%
+      \setlength{\topsep}{\z@}%
+      \setlength{\partopsep}{\z@}%
+      \@tempdima=\parskip
+      \addtolength{\topsep}{-\@tempdima}%
+      \addtolength{\partopsep}{\@tempdima}%
+    \fi
+    \settowidth{\labelwidth}{\csname\@itemitem\endcsname}%
+    \ifFBListOldLayout
+      \setlength{\leftmargin}{\labelwidth}%
+      \addtolength{\leftmargin}{\labelsep}%
+      \addtolength{\leftmargin}{\parindent}%
+    \else
+      \FB at listHsettings
+    \fi
+}
+\def\itemizeFB{%
+    \ifnum \@itemdepth >\thr@@\@toodeep\else
+      \advance\@itemdepth\@ne
+      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+      \expandafter
+      \listORI
+      \csname\@itemitem\endcsname
+      \FB at itemizesettings
+    \fi
+}
+\let\enditemizeFB\endlistORI
+\def\labelitemsFB{%
+    \let\labelitemi\Frlabelitemi
+    \let\labelitemii\Frlabelitemii
+    \let\labelitemiii\Frlabelitemiii
+    \let\labelitemiv\Frlabelitemiv
+    \ifdim\labelwidthFB<\z@
+      \settowidth{\labelwidthFB}{\FrenchLabelItem}%
+    \fi
+    \ifdim\listindentFB<\z@
+      \ifdim\parindent=\z@
+        \setlength{\listindentFB}{1.5em}%
+      \else
+        \setlength{\listindentFB}{\parindent}%
+      \fi
+    \fi
+    \ifdim\descindentFB<\z@
+      \setlength{\descindentFB}{\listindentFB}%
+    \fi
+}
+\def\enumerateFB{%
+  \ifnum \@enumdepth >\thr@@\@toodeep\else
+    \advance\@enumdepth\@ne
+    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+    \expandafter
+    \list
+      \csname label\@enumctr\endcsname
+      {\FB at listHsettings
+       \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
+  \fi
+}
+\let\endenumerateFB\endlistORI
+\def\descriptionFB{%
+      \list{}{\FB at listHsettings
+              \labelwidth\z@
+              \itemindent-\leftmargin
+              \ifnum\@listdepth=1
+                \ifdim\descindentFB=\z@
+                  \ifdim\listindentFB>\z@
+                    \leftmargini\listindentFB
+                    \leftmargin\leftmargini
+                    \itemindent-\leftmargin
+                  \fi
+                \else
+                  \advance\itemindent by \descindentFB
+                \fi
+              \fi
+              \let\makelabel\descriptionlabel}%
+}
+\let\enddescriptionFB\endlistORI
+\def\update at frenchlists{%
+  \ifFBReduceListSpacing \let\list\listFB \fi
+  \ifFBStandardItemizeEnv
+  \else \let\itemize\itemizeFB \fi
+  \ifFBStandardItemLabels
+  \else \labelitemsFB \fi
+  \ifFBStandardEnumerateEnv
+  \else \let\enumerate\enumerateFB \let\description\descriptionFB \fi
+}
+\def\FB at ufl{\relax}
+\def\bbl at frenchlistlayout{%
+  \ifFBGlobalLayoutFrench
+  \else
+    \babel at save\list         \babel at save\itemize
+    \babel at save\enumerate    \babel at save\description
+    \babel at save\labelitemi   \babel at save\labelitemii
+    \babel at save\labelitemiii \babel at save\labelitemiv
+    \FB at ufl
+  \fi
+}
+\FB at addto{extras}{\bbl at frenchlistlayout}
+\def\bbl at frenchindent{%
+  \ifFBGlobalLayoutFrench
+  \else
+    \babel at save\@afterindentfalse
+  \fi
+  \ifFBIndentFirst
+    \let\@afterindentfalse\@afterindenttrue
+    \@afterindenttrue
+  \fi}
+\def\bbl at nonfrenchindent{%
+  \ifFBGlobalLayoutFrench
+    \ifFBIndentFirst
+      \@afterindenttrue
+    \fi
+  \fi}
+\FB at addto{extras}{\bbl at frenchindent}
+\FB at addto{noextras}{\bbl at nonfrenchindent}
+\AtBeginDocument{\@ifpackageloaded{bigfoot}%
+                   {\PackageInfo{french.ldf}%
+                     {bigfoot package in use.\MessageBreak
+                      frenchb will NOT customise footnotes;%
+                      \MessageBreak reported}}%
+                   {\let\@footnotemarkORI\@footnotemark
+                    \def\@footnotemarkFB{\leavevmode\unskip\unkern
+                                         \,\@footnotemarkORI}%
+                    \ifFBAutoSpaceFootnotes
+                      \let\@footnotemark\@footnotemarkFB
+                    \fi}%
+                }
+\newdimen\parindentFFN
+\parindentFFN=10in
+\newcommand*{\dotFFN}{.}
+\newcommand*{\kernFFN}{\kern .5em}
+\newlength\FBfnindent
+\ifFB at koma
+  \let\@makefntextORI\@makefntext
+  \let\@@makefnmarkORI\@@makefnmark
+  \deffootnote[\FBfnindent]{0pt}{\parindentFFN}%
+              {\thefootnotemark\dotFFN\kernFFN}
+  \let\@makefntextFB\@makefntext
+  \let\@@makefnmarkFB\@@makefnmark
+  \deffootnote[\parindentFFN]{0pt}{\parindentFFN}%
+              {\textsuperscript{\thefootnotemark}}
+  \let\@makefntextTH\@makefntext
+  \let\@@makefnmarkTH\@@makefnmark
+  \let\@makefntext\@makefntextORI
+  \let\@@makefnmark\@@makefnmarkORI
+\fi
+\@ifclassloaded{memoir}
+   {\newcommand{\@makefntextFB}[1]{%
+      \def\footscript##1{##1\dotFFN\kernFFN}%
+      \setlength{\footmarkwidth}{\FBfnindent}%
+      \setlength{\footmarksep}{-\footmarkwidth}%
+      \setlength{\footparindent}{\parindentFFN}%
+      \makefootmark #1}%
+   }{}
+\@ifclassloaded{beamer}
+   {\def\@makefntextFB#1{%
+      \def\insertfootnotetext{#1}%
+      \def\insertfootnotemark{\insertfootnotemarkFB}%
+      \usebeamertemplate***{footnote}}%
+    \def\insertfootnotemarkFB{%
+      \usebeamercolor[fg]{footnote mark}%
+      \usebeamerfont*{footnote mark}%
+      \llap{\@thefnmark}\dotFFN\kernFFN}%
+   }{}
+\providecommand*{\insertfootnotemarkFB}{%
+  \parindent=\parindentFFN
+  \rule\z@\footnotesep
+  \setbox\@tempboxa\hbox{\@thefnmark}%
+  \ifdim\wd\@tempboxa>\z@
+    \llap{\@thefnmark}\dotFFN\kernFFN
+  \fi}
+\providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1}
+\AtBeginDocument{%
+   \@ifpackageloaded{bigfoot}{}%
+      {\ifdim\parindentFFN<10in
+       \else
+         \parindentFFN=\parindent
+         \ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi
+       \fi
+       \settowidth{\FBfnindent}{\dotFFN\kernFFN}%
+       \addtolength{\FBfnindent}{\parindentFFN}%
+       \let\@makefntextORI\@makefntext
+       \ifFB at koma
+         \let\@@makefnmarkORI\@@makefnmark
+         \long\def\@makefntext#1{%
+                \ifFBFrenchFootnotes
+                  \ifx\footnote\thanks
+                    \let\@@makefnmark\@@makefnmarkTH
+                    \@makefntextTH{#1}%
+                  \else
+                    \let\@@makefnmark\@@makefnmarkFB
+                    \@makefntextFB{#1}%
+                  \fi
+                \else
+                  \let\@@makefnmark\@@makefnmarkORI
+                  \@makefntextORI{#1}%
+                \fi}%
+       \else
+         \@ifclassloaded{memoir}%
+            {\ifFBFrenchFootnotes
+               \setlength{\thanksmarkwidth}{\parindentFFN}%
+               \setlength{\thanksmarksep}{-\thanksmarkwidth}%
+             \fi
+            }{}%
+         \@ifclassloaded{beamer}%
+            {\ifFBFrenchFootnotes
+               \ifdim\parindentFFN=1.5em\else
+                 \FBWarning{%
+                    \protect\parindentFFN\space is ineffective%
+                    \MessageBreak within the beamer class.%
+                    \MessageBreak Reported}%
+               \fi
+             \fi
+            }{}%
+         \long\def\@makefntext#1{%
+                 \ifFBFrenchFootnotes
+                   \@makefntextFB{#1}%
+                 \else
+                   \@makefntextORI{#1}%
+                 \fi}%
+       \fi
+    }%
+}
+\newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue}
+\newcommand*{\FrenchFootnotes}{\FBFrenchFootnotestrue}
+\newcommand*{\StandardFootnotes}{\FBFrenchFootnotesfalse}
+\FBclean at on@exit
+\let\FB at llc\loadlocalcfg
+\let\loadlocalcfg\@gobble
+\ldf at finish\CurrentOption
+\let\loadlocalcfg\FB at llc
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+\endinput
+%%
+%% End of file `french.ldf'.


Property changes on: trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2017-07-13 23:05:35 UTC (rev 44781)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2017-07-13 23:06:10 UTC (rev 44782)
@@ -4,9 +4,10 @@
 %%
 %% The original source files were:
 %%
-%% frenchb.dtx  (with options: `ldf')
-%% This is a generated file of the Babel system.
-%% ---------------------------------------------------------
+%% frenchb.dtx  (with options: `frenchb')
+%% This is a generated file part of the the babel-french bundle
+%% to be used with the Babel system.
+%% -------------------------------------------------------------
 %% 
 %% It may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,1808 +21,59 @@
 %% 
 %% The Current Maintainer of this work is Daniel Flipo.
 %% 
-%% This file may only be distributed together with a copy of the Babel
-%% system. You may however distribute the Babel system without
-%% such generated files.
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
-%% The list of all files belonging to the Babel distribution is
-%% given in the file `manifest.bbl'. See also `legal.bbl for additional
-%% information.
-%% 
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
-%% 
 \ProvidesLanguage{frenchb}
-         [2017/04/30 v3.3a French support from the babel system]
-%%
-%%  File `frenchb.ldf’
-%%  Babel package for LaTeX version 2e
-%%  Copyright © 1996 - 2017
-%%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
-%%
-\chardef\atcatcode=\catcode`\@
-\catcode`\@=11\relax
-\def\bbl at tempa{francais}
-\ifx\CurrentOption\bbl at tempa
-  \let\l at francais\l at french
-  \def\captionsfrancais{\captionsfrench}
-  \def\datefrancais{\datefrench}
-  \def\extrasfrancais{\extrasfrench}
-  \def\noextrasfrancais{\extrasfrench}
-  \def\CurrentOption{french}
-\fi
+         [2017/07/08 v3.3b French support from the babel system]
 \def\bbl at tempa{frenchb}
 \ifx\CurrentOption\bbl at tempa
   \let\l at frenchb\l at french
-  \def\captionsfrenchb{\captionsfrench}
-  \def\datefrenchb{\datefrench}
-  \def\extrasfrenchb{\extrasfrench}
-  \def\noextrasfrenchb{\extrasfrench}
   \def\CurrentOption{french}
-\fi
-\catcode`\@=\atcatcode \let\atcatcode\relax
-\LdfInit\CurrentOption\captionsfrench
-\def\FB at nopatterns{%
-   \ifx\l at nohyphenation\@undefined
-      \edef\bbl at nulllanguage{\string\language=0}%
-      \adddialect\l at french0
-   \else
-      \adddialect\l at french\l at nohyphenation
-      \edef\bbl at nulllanguage{\string\language=nohyphenation}%
-   \fi
-   \@nopatterns{French}}
-\ifx\l at french\@undefined
-   \FB at nopatterns
-\fi
-\newif\ifLaTeXe
-\let\bbl at tempa\relax
-\ifx\magnification\@undefined
-   \ifx\@compatibilitytrue\@undefined
-     \PackageError{frenchb.ldf}
-        {LaTeX-2.09 format is no longer supported.\MessageBreak
-         Aborting here}
-        {Please upgrade to LaTeX2e!}
-     \let\bbl at tempa\endinput
-   \else
-     \LaTeXetrue
-   \fi
-\fi
-\bbl at tempa
-\def\fb at error#1#2{%
-    \begingroup
-      \newlinechar=`\^^J
-      \def\\{^^J(frenchb.ldf) }%
-      \errhelp{#2}\errmessage{\\#1^^J}%
-    \endgroup}
-\def\fb at warning#1{%
-   \begingroup
-      \newlinechar=`\^^J
-      \def\\{^^J(frenchb.ldf) }%
-      \message{\\#1^^J}%
-   \endgroup}
-\def\fb at info#1{%
-   \begingroup
-      \newlinechar=`\^^J
-      \def\\{^^J}%
-      \wlog{#1}%
-   \endgroup}
-\let\bbl at tempa\relax
-\ifx\babeltags\@undefined
-   \let\bbl at tempa\endinput
-   \ifLaTeXe
-      \PackageError{frenchb.ldf}
-         {frenchb requires babel v.3.9i.\MessageBreak
-          Aborting here}
-         {Please upgrade Babel!}
-   \else
-      \fb at error{frenchb requires babel v.3.9i.\\
-                Aborting here}
-               {Please upgrade Babel!}
-   \fi
-\fi
-\bbl at tempa
-\ifx\l at acadian\@undefined
-   \ifx\l at canadien\@undefined
-      \adddialect\l at acadian\l at french
-      \adddialect\l at canadien\l at french
-   \else
-      \adddialect\l at acadian\l at canadien
-   \fi
+  \PackageWarning{babel-french}%
+    {Option `frenchb' for Babel is *deprecated*,\MessageBreak
+     it might be removed sooner or later.  Please\MessageBreak
+     use `french' instead; reported}
 \else
-  \adddialect\l at canadien\l at acadian
-\fi
-\def\bbl at tempa{canadien}
-\ifx\CurrentOption\bbl at tempa
-  \def\captionscanadien{\captionsacadian}
-  \def\datecanadien{\dateacadian}
-  \def\extrascanadien{\extrasacadian}
-  \def\noextrascanadien{\extrasacadian}
-  \def\CurrentOption{acadian}
-\fi
-\expandafter\providehyphenmins\expandafter{\CurrentOption}{\tw@\thr@@}
-\newif\ifFBunicode
-\newif\ifFBLuaTeX
-\newif\ifFBXeTeX
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname luatexversion\endcsname\relax
-\else
-  \FBunicodetrue \FBLuaTeXtrue
-\fi
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname XeTeXrevision\endcsname\relax
-\else
-  \FBunicodetrue \FBXeTeXtrue
-\fi
-\@namedef{extras\CurrentOption}{%
-     \babel at savevariable{\lccode`\'}%
-     \ifFBunicode
-        \babel at savevariable{\lccode"2019}%
-        \lccode`\'="2019\lccode"2019="2019
-     \else
-        \lccode`\'=`\'
-     \fi
-}
-\@namedef{noextras\CurrentOption}{}
-\let\FB at CurOpt\CurrentOption
-\newcommand*{\FB at addto}[2]{%
-    \expandafter\addto\csname #1\FB at CurOpt\endcsname{#2}}
-\FB at addto{extras}{\bbl at frenchspacing}
-\FB at addto{noextras}{\bbl at nonfrenchspacing}
-\newif\ifFB at active@punct \FB at active@puncttrue
-\newif\ifFB at luatex@punct
-\ifFBLuaTeX
-  \ifnum\luatexversion<95
-    \ifx\PackageWarning\@undefined
-      \fb at warning{Please upgrade LuaTeX to version 0.95 or above!\\%
-         frenchb will make high punctuation characters (;:!?) active\\%
-         with LuaTeX < 0.95.}%
-    \else
-      \PackageWarning{frenchb.ldf}{Please upgrade LuaTeX
-         to version 0.95 or above!\MessageBreak
-         frenchb will make high punctuation characters\MessageBreak
-         (;:!?) active with LuaTeX < 0.95;\MessageBreak reported}%
+  \def\bbl at tempa{francais}
+  \ifx\CurrentOption\bbl at tempa
+    \let\l at francais\l at french
+    \def\CurrentOption{french}
+    \ifx\magnification\@undefined
+      \PackageWarning{babel-french}%
+        {Option `francais' for Babel is *deprecated*,\MessageBreak
+         it might be removed sooner or later.  Please\MessageBreak
+         use `french' instead; reported}%
     \fi
   \else
-    \FB at luatex@puncttrue\FB at active@punctfalse
-  \fi
-\fi
-\newcount\FB at nonchar
-\newif\ifFB at xetex@punct
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname XeTeXinterchartokenstate\endcsname\relax
-\else
-  \FB at xetex@puncttrue\FB at active@punctfalse
-  \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt
-    \FB at nonchar=255 \relax
-  \else
-    \FB at nonchar=4095 \relax
-  \fi
-\fi
-\newcommand*{\FBcolonspace}{\space}
-\newcommand*{\FBthinspace}{\hskip.5\fontdimen2\font \relax}
-\newtoks\FBcolonsp
-\newtoks\FBthinsp
-\newif\ifFB at spacing \FB at spacingtrue
-\newcommand*{\FB at spacing@on}{%
-  \ifFB at luatex@punct
-    \FB at spacing=1 \relax
-  \else
-    \FB at spacingtrue
-  \fi}
-\newcommand*{\FB at spacing@off}{%
-  \ifFB at luatex@punct
-    \FB at spacing=0 \relax
-  \else
-    \FB at spacingfalse
-  \fi}
-\ifFB at luatex@punct
-  \begingroup\expandafter\expandafter\expandafter\endgroup
-  \expandafter\ifx\csname newluafunction\endcsname\relax
-    \input ltluatex.tex
-  \fi
-  \newattribute\FB at spacing      \FB at spacing=1 \relax
-  \newattribute\FB at addDPspace   \FB at addDPspace=1 \relax
-  \newattribute\FB at addGUILspace \FB at addGUILspace=0 \relax
-  \ifLaTeXe
-    \PackageInfo{frenchb.ldf}{No need for active punctuation
-                 characters\MessageBreak with this version
-                 of LuaTeX!\MessageBreak reported}
-  \else
-    \fb at info{No need for active punctuation characters\\
-             with this version of LuaTeX!}
-  \fi
-\fi
-\ifFB at luatex@punct
-  \newcommand*{\FB at luatex@punct at french}{%
-     \babel at save{\shorthandon}%
-     \babel at save{\shorthandoff}%
-     \def\shorthandoff##1{%
-        \ifx\PackageWarning\@undefined
-          \fb at warning{\noexpand\shorthandoff{;:!?} is helpless with
-           LuaTeX,\\ use \noexpand\NoAutoSpacing
-           *inside a group* instead.}%
-        \else
-          \PackageWarning{frenchb.ldf}{\protect\shorthandoff{;:!?} is
-           helpless with LuaTeX,\MessageBreak use \protect\NoAutoSpacing
-           \space *inside a group* instead;\MessageBreak reported}%
-        \fi}%
-     \def\shorthandon##1{}%
-  }
-  \FB at addto{extras}{\FB at luatex@punct at french}
-  \def\activate at luatexpunct{%
-    \directlua{%
-      FR = \the\l at french
-      local path = kpse.find_file("frenchb.lua", "lua")
-      if path then
-         local f = dofile(path)
-         luatexbase.add_to_callback("kerning",
-                    f, "frenchb.french_punctuation")
-      else
-         texio.write_nl('')
-         texio.write_nl('*****************************')
-         texio.write_nl('Error: frenchb.lua not found.')
-         texio.write_nl('*****************************')
-         texio.write_nl('')
-      end
-     }%
-  }
-\fi
-\ifFB at xetex@punct
-   \ifLaTeXe
-    \PackageInfo{frenchb.ldf}{No need for active punctuation characters%
-                    \MessageBreak with this version of XeTeX!%
-                    \MessageBreak reported}
-   \else
-    \fb at info{No need for active punctuation characters\\
-             with this version of XeTeX!}
-   \fi
-   \newXeTeXintercharclass\FB at punctthick
-   \newXeTeXintercharclass\FB at punctthin
-   \newXeTeXintercharclass\FB at punctnul
-   \newXeTeXintercharclass\FB at guilo
-   \newXeTeXintercharclass\FB at guilf
-   \newXeTeXintercharclass\FB at guilnul
-   \def\FBsavevariable at loop#1#2{\begingroup
-     \toks@\expandafter{\originalTeX #1}%
-     \edef\x{\endgroup
-       \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}%
-     \x}
-   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F,%
-                    "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}
-   \newcommand*{\FB at xetex@punct at french}{%
-     \babel at savevariable{\XeTeXinterchartokenstate}%
-     \babel at save{\shorthandon}%
-     \babel at save{\shorthandoff}%
-     \bbl at for\FB at char\FB at charlist
-          {\FBsavevariable at loop{\XeTeXcharclass}{\FB at char}}%
-     \def\shorthandoff##1{%
-       \ifx\PackageWarning\@undefined
-         \fb at warning{\noexpand\shorthandoff{;:!?} is helpless with
-           XeTeX,\\ use \noexpand\NoAutoSpacing
-           *inside a group* instead.}%
-       \else
-         \PackageWarning{frenchb.ldf}{\protect\shorthandoff{;:!?} is
-           helpless with XeTeX,\MessageBreak use \protect\NoAutoSpacing
-           \space *inside a group* instead;\MessageBreak reported}%
-       \fi}%
-      \def\shorthandon##1{}%
-     \XeTeXinterchartokenstate=1
-     \XeTeXcharclass `\: = \FB at punctthick
-     \XeTeXinterchartoks \z@ \FB at punctthick = {%
-           \ifFB at spacing\ifhmode\FDP at colonspace\fi\fi}%
-     \XeTeXinterchartoks \FB at guilf \FB at punctthick = {%
-           \ifFB at spacing\FDP at colonspace\fi}%
-     \XeTeXinterchartoks \FB at nonchar \FB at punctthick = {%
-           \ifFB at spacing
-             \ifhmode
-               \ifdim\lastskip>1sp
-                 \unskip\penalty\@M\FBcolonspace
-               \else
-                 \FDP at colonspace
-               \fi
-             \fi
-           \fi}%
-     \bbl at for\FB at char
-             {`\;,`\!,`\?}%
-             {\XeTeXcharclass\FB at char=\FB at punctthin}%
-     \XeTeXinterchartoks \z@ \FB at punctthin = {%
-           \ifFB at spacing\ifhmode\FDP at thinspace\fi\fi}%
-     \XeTeXinterchartoks \FB at guilf \FB at punctthin = {%
-           \ifFB at spacing\FDP at thinspace\fi}%
-     \XeTeXinterchartoks \FB at nonchar \FB at punctthin = {%
-           \ifFB at spacing
-             \ifhmode
-               \ifdim\lastskip>1sp
-                 \unskip\penalty\@M\FBthinspace
-               \else
-                 \FDP at thinspace
-               \fi
-             \fi
-           \fi}%
-     \XeTeXinterchartoks \FB at guilo \z@ = {%
-           \ifFB at spacing\FB at guillspace\fi}%
-     \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
-           \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
-     \XeTeXinterchartoks \z@ \FB at guilf = {%
-           \ifFB at spacing\FB at guillspace\fi}%
-     \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
-           \ifFB at spacing\FB at guillspace\fi}%
-     \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
-           \ifFB at spacing\unskip\FB at guillspace\fi}%
-     \bbl at for\FB at char
-             {`\[,`\(,"A0,"202F}%
-             {\XeTeXcharclass\FB at char=\FB at punctnul}%
-     \bbl at for\FB at char
-             {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
-             {\XeTeXcharclass\FB at char=\z@}%
-   }
-   \FB at addto{extras}{\FB at xetex@punct at french}
-\fi
-\ifFB at active@punct
-  \initiate at active@char{:}%
-  \initiate at active@char{;}%
-  \initiate at active@char{!}%
-  \initiate at active@char{?}%
-  \declare at shorthand{french}{;}{%
-    \ifFB at spacing
-      \ifhmode
-        \ifdim\lastskip>1sp
-          \unskip\penalty\@M\FBthinspace
-        \else
-          \FDP at thinspace
-        \fi
-      \fi
+    \def\bbl at tempa{canadien}
+    \ifx\CurrentOption\bbl at tempa
+      \let\l at canadien\l at acadian
+      \def\CurrentOption{acadian}
+      \PackageWarning{babel-french}%
+        {Option `canadien' for Babel is *deprecated*,\MessageBreak
+         it might be removed sooner or later.  Please\MessageBreak
+         use `acadian' instead; reported}
     \fi
-    \string;}
-  \declare at shorthand{french}{!}{%
-    \ifFB at spacing
-      \ifhmode
-        \ifdim\lastskip>1sp
-          \unskip\penalty\@M\FBthinspace
-        \else
-          \FDP at thinspace
-        \fi
-      \fi
-    \fi
-    \string!}
-  \declare at shorthand{french}{?}{%
-    \ifFB at spacing
-      \ifhmode
-        \ifdim\lastskip>1sp
-          \unskip\penalty\@M\FBthinspace
-        \else
-          \FDP at thinspace
-        \fi
-      \fi
-    \fi
-    \string?}
-  \declare at shorthand{french}{:}{%
-    \ifFB at spacing
-      \ifhmode
-        \ifdim\lastskip>1sp
-          \unskip\penalty\@M\FBcolonspace
-        \else
-          \FDP at colonspace
-        \fi
-      \fi
-    \fi
-    \string:}
-  \declare at shorthand{system}{:}{\string:}
-  \declare at shorthand{system}{!}{\string!}
-  \declare at shorthand{system}{?}{\string?}
-  \declare at shorthand{system}{;}{\string;}
-  \FB at addto{extras}{\languageshorthands{french}%
-    \bbl at activate{:}\bbl at activate{;}%
-    \bbl at activate{!}\bbl at activate{?}%
-  }
-  \FB at addto{noextras}{%
-    \bbl at deactivate{:}\bbl at deactivate{;}%
-    \bbl at deactivate{!}\bbl at deactivate{?}%
-  }
-\fi
-\newif\ifFBAutoSpacePunctuation  \FBAutoSpacePunctuationtrue
-\def\autospace at beforeFDP{%
-         \ifFB at luatex@punct\FB at addDPspace=1 \fi
-         \def\FDP at thinspace{\penalty\@M\FBthinspace}%
-         \def\FDP at colonspace{\penalty\@M\FBcolonspace}}
-\def\noautospace at beforeFDP{%
-         \ifFB at luatex@punct\FB at addDPspace=0 \fi
-         \let\FDP at thinspace\@empty
-         \let\FDP at colonspace\@empty}
-\ifLaTeXe
-    \def\AutoSpaceBeforeFDP{\autospace at beforeFDP
-                            \FBAutoSpacePunctuationtrue}
-    \def\NoAutoSpaceBeforeFDP{\noautospace at beforeFDP
-                              \FBAutoSpacePunctuationfalse}
-    \AtEndOfPackage{\AutoSpaceBeforeFDP}
-\else
-    \let\AutoSpaceBeforeFDP\autospace at beforeFDP
-    \let\NoAutoSpaceBeforeFDP\noautospace at beforeFDP
-    \AutoSpaceBeforeFDP
-\fi
-\ifLaTeXe
-  \DeclareRobustCommand\ttfamilyFB{\FB at spacing@off \ttfamilyORI}
-  \DeclareRobustCommand\rmfamilyFB{\FB at spacing@on  \rmfamilyORI}
-  \DeclareRobustCommand\sffamilyFB{\FB at spacing@on  \sffamilyORI}
-\fi
-\DeclareRobustCommand*{\NoAutoSpacing}{%
-  \FB at spacing@off
-  \ifFB at active@punct\shorthandoff{;:!?}\fi
-}
-\ifLaTeXe
-\else
-  \ifFBunicode
-    \def\guillemotleft{{\char"00AB}}
-    \def\guillemotright{{\char"00BB}}
-    \def\textquotedblleft{{\char"201C}}
-    \def\textquotedblright{{\char"201D}}
-  \else
-    \def\guillemotleft{\leavevmode\raise0.25ex
-                       \hbox{$\scriptscriptstyle\ll$}}
-    \def\guillemotright{\raise0.25ex
-                        \hbox{$\scriptscriptstyle\gg$}}
-    \def\textquotedblleft{``}
-    \def\textquotedblright{''}
   \fi
-  \let\xspace\relax
 \fi
-\newcommand*{\FBguillspace}{\hskip.8\fontdimen2\font
-                              plus.3\fontdimen3\font
-                             minus.8\fontdimen4\font \relax}
-\newcommand*{\FB at guillspace}{\penalty\@M\FBguillspace}
-\newtoks\FBguillsp
-\ifFB at luatex@punct
-  \DeclareRobustCommand*{\FB at og}{\leavevmode
-          \bgroup\FB at spacing=0 \guillemotleft\egroup
-          \FB at guillspace}
-  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-          \FB at guillspace
-          \bgroup\FB at spacing=0 \guillemotright\egroup}
-\fi
-\ifFB at xetex@punct
-  \DeclareRobustCommand*{\FB at og}{\leavevmode
-        \bgroup\FB at spacingfalse\guillemotleft\egroup
-        \FB at guillspace}
-  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FB at guillspace
-        \bgroup\FB at spacingfalse\guillemotright\egroup}
-\fi
-\ifFB at active@punct
-  \DeclareRobustCommand*{\FB at og}{\leavevmode
-        \guillemotleft
-        \FB at guillspace}
-  \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FB at guillspace
-        \guillemotright}
-\fi
-\newcommand*{\og}{\@empty}
-\newcommand*{\fg}{\@empty}
-\ifLaTeXe
-  \def\bbl at frenchguillemets{\renewcommand*{\og}{\FB at og}%
-                            \renewcommand*{\fg}{\FB at fg\xspace}}
-  \renewcommand*{\og}{\textquotedblleft}
-  \renewcommand*{\fg}{\ifdim\lastskip>\z@\unskip\fi
-                      \textquotedblright\xspace}
-\else
-  \def\bbl at frenchguillemets{\let\og\FB at og
-                            \let\fg\FB at fg}
-  \def\og{\textquotedblleft}
-  \def\fg{\ifdim\lastskip>\z@\unskip\fi\textquotedblright}
-\fi
-\FB at addto{extras}{\babel at save\og \babel at save\fg \bbl at frenchguillemets}
-\newcommand*{\ogi}{\FB at og}
-\newcommand*{\fgi}{\FB at fg}
-\newcommand*{\ogii}{\textquotedblleft}
-\newcommand*{\fgii}{\textquotedblright}
-\newcount\FBguill at level
-\newtoks\FB at everypar
-\newif\ifFBcloseguill  \FBcloseguilltrue
-\newif\ifFBInnerGuillSingle
-\def\FBguillopen{\bgroup\NoAutoSpacing\guillemotleft\egroup}
-\def\FBguillclose{\bgroup\NoAutoSpacing\guillemotright\egroup}
-\let\FBguillnone\empty
-\let\FBeveryparguill\FBguillopen
-\let\FBeverylineguill\FBguillnone
-\ifLaTeXe
-  \DeclareRobustCommand\frquote{%
-       \@ifstar{\FBcloseguillfalse\fr at quote}%
-               {\FBcloseguilltrue\fr at quote}}
-\else
-  \newcommand\frquote[1]{\fr at quote{#1}}
-\fi
-\newcommand{\fr at quote}[1]{%
-  \leavevmode
-  \advance\FBguill at level by \@ne
-  \ifcase\FBguill at level
-  \or
-    \FB at everypar=\everypar
-    \ifx\FBeveryparguill\FBguillnone
-    \else
-      \def\FBeverypar at quote{\FBeveryparguill\FB at guillspace}%
-      \everypar=\expandafter{\the\everypar \FBeverypar at quote}%
-    \fi
-    \ogi #1\fgi
-  \or
-    \ifx\FBeverylineguill\FBguillopen
-      \localleftbox{\guillemotleft\FB at guillspace}%
-      \let\FBeverypar at quote\relax
-      \ogi #1\ifFBcloseguill\fgi\fi
-    \else
-      \ifx\FBeverylineguill\FBguillclose
-        \localleftbox{\guillemotright\FB at guillspace}%
-        \let\FBeverypar at quote\relax
-        \ogi #1\ifFBcloseguill\fgi\fi
-      \else
-        \let\FBeverypar at quote\relax
-        \ifFBInnerGuillSingle
-          \def\ogii{\leavevmode
-                    \guilsinglleft\FB at guillspace}%
-          \def\fgii{\ifdim\lastskip>\z@\unskip\fi
-                    \FB at guillspace\guilsinglright}%
-          \ifx\FBeveryparguill\FBguillopen
-            \def\FBeverypar at quote{\guilsinglleft\FB at guillspace}%
-          \fi
-          \ifx\FBeveryparguill\FBguillclose
-            \def\FBeverypar at quote{\guilsinglright\FB at guillspace}%
-          \fi
-        \fi
-        \ogii #1\ifFBcloseguill \fgii \fi
-      \fi
-    \fi
-  \else
-    \ifx\PackageWarning\@undefined
-      \fb at warning{\noexpand\frquote\space handles up to
-                  two levels.\\ Quotation not printed.}%
-    \else
-      \PackageWarning{frenchb.ldf}{%
-         \protect\frquote\space handles up to two levels.
-         \MessageBreak Quotation not printed.  Reported}
-    \fi
-  \fi
-  \advance\FBguill at level by \m at ne
-  \ifx\FBeverylineguill\FBguillnone\else\localleftbox{}\fi
-  \ifx\FBeveryparguill\FBguillnone\else\everypar=\FB at everypar\fi
-}
-\ifLaTeXe
-  \def\BabelLanguages{french,acadian}
-  \StartBabelCommands*{\BabelLanguages}{date}
-      [unicode, fontenc=EU1 EU2, charset=utf8]
-    \SetString\monthiiname{février}
-    \SetString\monthviiiname{août}
-    \SetString\monthxiiname{décembre}
-  \StartBabelCommands*{\BabelLanguages}{date}
-    \SetStringLoop{month#1name}{%
-        janvier,f\'evrier,mars,avril,mai,juin,juillet,%
-        ao\^ut,septembre,octobre,novembre,d\'ecembre}
-    \SetString\today{{\number\day}\ifnum1=\day {\ier}\fi\space
-        \csname month\romannumeral\month name\endcsname \space
-        \number\year
-       }
-  \EndBabelCommands
-\else
-  \ifFBunicode
-    \@namedef{date\CurrentOption}{%
-      \def\today{{\number\day}\ifnum1=\day {\ier}\fi \space
-          \ifcase\month
-            \or janvier\or février\or mars\or avril\or mai\or
-            juin\or juillet\or août\or septembre\or
-            octobre\or novembre\or décembre\fi
-          \space \number\year}}
-  \else
-    \@namedef{date\CurrentOption}{%
-      \def\today{{\number\day}\ifnum1=\day {\ier}\fi \space
-        \ifcase\month
-          \or janvier\or f\'evrier\or mars\or avril\or mai\or
-          juin\or juillet\or ao\^ut\or septembre\or
-          octobre\or novembre\or d\'ecembre\fi
-        \space \number\year}}
-  \fi
-\fi
-\newif\ifFB at poorman
-\newdimen\FB at Mht
-\ifLaTeXe
-  \AtEndOfPackage{\RequirePackage{scalefnt}}
-  \newcommand*{\FBsupR}{-0.12}
-  \newcommand*{\FBsupS}{0.65}
-  \newcommand*{\FB at lc}[1]{\MakeLowercase{#1}}
-  \DeclareRobustCommand*{\FB at up@fake}[1]{%
-    \settoheight{\FB at Mht}{M}%
-    \addtolength{\FB at Mht}{\FBsupR \FB at Mht}%
-    \addtolength{\FB at Mht}{-\FBsupS ex}%
-    \raisebox{\FB at Mht}{\scalefont{\FBsupS}{\FB at lc{#1}}}%
-    }
-  \def\FB at split#1#2#3#4\@nil{\def\FB at firstthree{#1#2#3}%
-                             \def\FB at suffix{#4}}
-  \def\FB at x{x}
-  \def\FB at j{j}
-  \DeclareRobustCommand*{\FB at up}[1]{%
-    \bgroup \FB at poormantrue
-      \expandafter\FB at split\f at family\@nil
-      \edef\reserved at a{\lowercase{%
-         \noexpand\IfFileExists{\f at encoding\FB at firstthree -sup.fd}}}%
-      \reserved at a
-        {\ifx\FB at suffix\FB at x \FB at poormanfalse\fi
-         \ifx\FB at suffix\FB at j \FB at poormanfalse\fi
-         \ifFB at poorman \FB at up@fake{#1}%
-         \else         \FB at up@real{#1}%
-         \fi}%
-        {\FB at up@fake{#1}}%
-    \egroup}
-  \newcommand*{\FB at up@real}[1]{\bgroup
-       \fontfamily{\FB at firstthree -sup}\selectfont \FB at lc{#1}\egroup}
-  \DeclareRobustCommand*{\fup}[1]{%
-    \ifx\realsuperscript\@undefined
-      \FB at up{#1}%
-    \else
-      \bgroup\let\fakesuperscript\FB at up@fake
-             \realsuperscript{\FB at lc{#1}}\egroup
-    \fi}
-  \providecommand*{\up}{\relax}
-\else
-  \providecommand*{\up}[1]{\leavevmode\raise1ex\hbox{\sevenrm #1}}
-\fi
-\def\ieme{\up{e}\xspace}
-\def\iemes{\up{es}\xspace}
-\def\ier{\up{er}\xspace}
-\def\iers{\up{ers}\xspace}
-\def\iere{\up{re}\xspace}
-\def\ieres{\up{res}\xspace}
-\newcommand*{\FrenchEnumerate}[1]{%
-                       #1\up{o}\kern+.3em}
-\newcommand*{\FrenchPopularEnumerate}[1]{%
-                       #1\up{o})\kern+.3em}
-\def\primo{\FrenchEnumerate1}
-\def\secundo{\FrenchEnumerate2}
-\def\tertio{\FrenchEnumerate3}
-\def\quarto{\FrenchEnumerate4}
-\def\fprimo){\FrenchPopularEnumerate1}
-\def\fsecundo){\FrenchPopularEnumerate2}
-\def\ftertio){\FrenchPopularEnumerate3}
-\def\fquarto){\FrenchPopularEnumerate4}
-\DeclareRobustCommand*{\No}{N\up{o}\kern+.2em}
-\DeclareRobustCommand*{\no}{n\up{o}\kern+.2em}
-\DeclareRobustCommand*{\Nos}{N\up{os}\kern+.2em}
-\DeclareRobustCommand*{\nos}{n\up{os}\kern+.2em}
-\DeclareRobustCommand*{\bsc}[1]{\leavevmode\begingroup\kern0pt
-                                           \scshape #1\endgroup}
-\ifLaTeXe\else\let\scshape\relax\fi
-\ifFBunicode
-  \newcommand*{\at}{{\char"0040}}
-  \newcommand*{\circonflexe}{{\char"005E}}
-  \newcommand*{\tild}{{\char"007E}}
-  \newcommand*{\boi}{{\char"005C}}
-  \newcommand*{\degre}{{\char"00B0}}
-\else
-  \ifLaTeXe
-    \DeclareTextSymbol{\at}{T1}{64}
-    \DeclareTextSymbol{\circonflexe}{T1}{94}
-    \DeclareTextSymbol{\tild}{T1}{126}
-    \DeclareTextSymbolDefault{\at}{T1}
-    \DeclareTextSymbolDefault{\circonflexe}{T1}
-    \DeclareTextSymbolDefault{\tild}{T1}
-    \DeclareRobustCommand*{\boi}{\textbackslash}
-    \DeclareRobustCommand*{\degre}{\r{}}
-  \else
-    \def\T at one{T1}
-    \ifx\f at encoding\T at one
-      \newcommand*{\degre}{{\char6}}
-    \else
-      \newcommand*{\degre}{{\char23}}
-    \fi
-    \newcommand*{\at}{{\char64}}
-    \newcommand*{\circonflexe}{{\char94}}
-    \newcommand*{\tild}{{\char126}}
-    \newcommand*{\boi}{$\backslash$}
-  \fi
-\fi
-\ifLaTeXe
-  \newcommand*{\degres}{\degre}
-  \ifFBunicode
-    \DeclareRobustCommand*{\degres}{\degre}
-  \else
-    \def\Warning at degree@TSone{\FBWarning
-             {Degrees would look better in TS1-encoding:%
-              \MessageBreak add \protect
-              \usepackage{textcomp} to the preamble.%
-              \MessageBreak Degrees used}}
-    \AtBeginDocument{\ifx\DeclareEncodingSubset\@undefined
-                       \DeclareRobustCommand*{\degres}{%
-                          \leavevmode\hbox to 0.3em{\hss\degre\hss}%
-                       \Warning at degree@TSone
-                       \global\let\Warning at degree@TSone\relax}%
-                     \else
-                       \DeclareRobustCommand*{\degres}{%
-                          \hbox{\UseTextSymbol{TS1}{\textdegree}}}%
-                     \fi
-                     }
-  \fi
-\else
-  \newcommand*{\degres}{%
-    \leavevmode\hbox to 0.3em{\hss\degre\hss}}
-\fi
-\newif\ifFB at icomma
-\newcount\mc at charclass
-\newcount\mc at charfam
-\newcount\mc at charslot
-\newcount\std at mcc
-\newcount\dec at mcc
-\ifFBLuaTeX
-  \mc at charclass=\Umathcharclass`\,
-  \newcommand*{\dec at math@comma}{%
-    \mc at charfam=\Umathcharfam`\,
-    \mc at charslot=\Umathcharslot`\,
-    \Umathcode`\,= 0 \mc at charfam \mc at charslot
-  }
-  \newcommand*{\std at math@comma}{%
-    \mc at charfam=\Umathcharfam`\,
-    \mc at charslot=\Umathcharslot`\,
-    \Umathcode`\,= \mc at charclass \mc at charfam \mc at charslot
-  }
-\else
-  \std at mcc=\mathcode`\,
-  \dec at mcc=\std at mcc
-  \@tempcnta=\std at mcc
-  \divide\@tempcnta by "1000
-  \multiply\@tempcnta by "1000
-  \advance\dec at mcc by -\@tempcnta
-  \newcommand*{\dec at math@comma}{\mathcode`\,=\dec at mcc}
-  \newcommand*{\std at math@comma}{\mathcode`\,=\std at mcc}
-\fi
-\newcommand*{\DecimalMathComma}{%
-  \iflanguage{french}{\dec at math@comma}{}%
-  \ifFB at icomma\else\FB at addto{extras}{\dec at math@comma}\fi
-}
-\newcommand*{\StandardMathComma}{%
-  \std at math@comma
-  \ifFB at icomma\else\FB at addto{extras}{\std at math@comma}\fi
-}
-\ifLaTeXe
-  \AtBeginDocument{\@ifpackageloaded{icomma}%
-                      {\FB at icommatrue}%
-                      {\FB at addto{noextras}{\std at math@comma}}%
-  }
-\else
-  \FB at addto{noextras}{\std at math@comma}
-\fi
-\newcommand*{\nombre}[1]{{#1}\fb at warning{*** \noexpand\nombre
-                                no longer formats numbers\string! ***}}
-\let\FBstop at here\relax
-\def\FBclean at on@exit{\let\ifLaTeXe\undefined
-                     \let\LaTeXetrue\undefined
-                     \let\LaTeXefalse\undefined}
-\ifx\magnification\@undefined
-\else
-  \def\FBstop at here{\ifFB at luatex@punct
-                     \activate at luatexpunct
-                   \fi
-                   \FBclean at on@exit
-                   \ldf at quit\CurrentOption\endinput}
-\fi
-\FBstop at here
-\renewcommand*{\nombre}[1]{\Warning at nombre{#1}}
-\newcommand*{\Warning at nombre}[1]{%
-   \ifdefined\numprint
-     \numprint{#1}%
-   \else
-     \PackageWarning{frenchb.ldf}{%
-        \protect\nombre\space now relies on package numprint.sty,%
-        \MessageBreak add \protect
-        \usepackage[autolanguage]{numprint},\MessageBreak
-        see file numprint.pdf for more options.\MessageBreak
-        \protect\nombre\space called}%
-     \global\let\Warning at nombre\relax
-     {#1}%
-   \fi
-}
-\ifx\FBfigtabshape\@undefined \let\FBfigtabshape\scshape \fi
-\StartBabelCommands*{\BabelLanguages}{captions}
-      [unicode, fontenc=EU1 EU2 TU, charset=utf8]
-   \SetString{\refname}{Références}
-   \SetString{\abstractname}{Résumé}
-   \SetString{\prefacename}{Préface}
-   \SetString{\contentsname}{Table des matières}
-   \SetString{\ccname}{Copie à }
-   \SetString{\proofname}{Démonstration}
-   \SetString{\partfirst}{Première}
-   \SetString{\partsecond}{Deuxième}
-   \SetStringLoop{ordinal#1}{%
-     \frenchpartfirst,\frenchpartsecond,Troisième,Quatrième,%
-     Cinquième,Sixième,Septième,Huitième,Neuvième,Dixième,Onzième,%
-     Douzième,Treizième,Quatorzième,Quinzième,Seizième,%
-     Dix-septième,Dix-huitième,Dix-neuvième,Vingtième}
-\StartBabelCommands*{\BabelLanguages}{captions}
-   \SetString{\refname}{R\'ef\'erences}
-   \SetString{\abstractname}{R\'esum\'e}
-   \SetString{\bibname}{Bibliographie}
-   \SetString{\prefacename}{Pr\'eface}
-   \SetString{\chaptername}{Chapitre}
-   \SetString{\appendixname}{Annexe}
-   \SetString{\contentsname}{Table des mati\`eres}
-   \SetString{\listfigurename}{Table des figures}
-   \SetString{\listtablename}{Liste des tableaux}
-   \SetString{\indexname}{Index}
-   \SetString{\figurename}{{\FBfigtabshape Figure}}
-   \SetString{\tablename}{{\FBfigtabshape Table}}
-   \SetString{\pagename}{page}
-   \SetString{\seename}{voir}
-   \SetString{\alsoname}{voir aussi}
-   \SetString{\enclname}{P.~J. }
-   \SetString{\ccname}{Copie \`a }
-   \SetString{\headtoname}{}
-   \SetString{\proofname}{D\'emonstration}
-   \SetString{\glossaryname}{Glossaire}
-   \SetString{\partfirst}{Premi\`ere}
-   \SetString{\partsecond}{Deuxi\`eme}
-   \SetString{\partnameord}{partie}
-   \SetStringLoop{ordinal#1}{%
-     \frenchpartfirst,\frenchpartsecond,Troisi\`eme,Quatri\`eme,%
-     Cinqui\`eme,Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,%
-     Onzi\`eme,Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,%
-     Seizi\`eme,Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,%
-     Vingti\`eme}
-   \AfterBabelCommands{%
-     \DeclareRobustCommand*{\FB at emptypart}{\def\thepart{}}%
-     \DeclareRobustCommand*{\FB at partname}{%
-        \ifFBPartNameFull
-          \csname ordinal\romannumeral\value{part}\endcsname\space
-          \frenchpartnameord\FB at emptypart
-        \else
-          Partie%
-        \fi}%
-    }
-   \SetString{\partname}{\FB at partname}
-\EndBabelCommands
-\AtEndOfPackage{%
-   \ifFB at koma
-     \ifdefined\partformat
-       \FB at addto{captions}{%
-           \ifFBPartNameFull
-             \babel at save\partformat
-             \renewcommand*{\partformat}{\partname}%
-           \fi}%
-     \fi
-   \fi
-}
-\bgroup
-  \catcode`:=12 \catcode`>=12 \relax
-  \long\gdef\STD at makecaption#1#2{%
-    \vskip\abovecaptionskip
-    \sbox\@tempboxa{#1: #2}%
-    \ifdim \wd\@tempboxa >\hsize
-      #1: #2\par
-    \else
-      \global \@minipagefalse
-      \hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
-    \fi
-    \vskip\belowcaptionskip}
-\egroup
-\newif\if at FBwarning@capsep
-\@FBwarning at capseptrue
-\newcommand{\FBWarning}[1]{\PackageWarning{frenchb.ldf}{#1}}
-\newcommand*{\CaptionSeparator}{\space\textendash\space}
-\def\FBCaption at Separator{: }
-\long\def\FB at makecaption#1#2{%
-  \vskip\abovecaptionskip
-  \sbox\@tempboxa{#1\FBCaption at Separator #2}%
-  \ifdim \wd\@tempboxa >\hsize
-    #1\FBCaption at Separator #2\par
-  \else
-    \global \@minipagefalse
-    \hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
-  \fi
-  \vskip\belowcaptionskip}
-\@ifclassloaded{amsart}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{amsbook}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{amsdtx}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{amsldoc}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{amproc}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{smfart}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{smfbook}{\@FBwarning at capsepfalse}{}
-\ifFB at active@punct\else\@FBwarning at capsepfalse\fi
-\newif\ifFB at koma
-\@ifclassloaded{memoir}{\@FBwarning at capsepfalse}{}
-\@ifclassloaded{scrartcl}{\@FBwarning at capsepfalse\FB at komatrue}{}
-\@ifclassloaded{scrbook}{\@FBwarning at capsepfalse\FB at komatrue}{}
-\@ifclassloaded{scrreprt}{\@FBwarning at capsepfalse\FB at komatrue}{}
-\@ifclassloaded{beamer}{\@FBwarning at capsepfalse}{}
-\ifdefined\@makecaption\else\@FBwarning at capsepfalse\fi
-\@ifpackageloaded{caption}
-   {\FBWarning{Please load the "caption" package\MessageBreak
-               AFTER babel/frenchb; reported}%
-    \@FBwarning at capsepfalse}%
-   {}
-\@ifpackageloaded{subcaption}
-   {\FBWarning{Please load the "subcaption" package\MessageBreak
-               AFTER babel/frenchb; reported}%
-    \@FBwarning at capsepfalse}%
-   {}
-\@ifpackageloaded{floatrow}
-   {\FBWarning{Please load the "floatrow" package\MessageBreak
-               AFTER babel/frenchb; reported}%
-    \@FBwarning at capsepfalse}%
-   {}
-\AtBeginDocument{%
-  \ifx\@makecaption\STD at makecaption
-    \global\let\@makecaption\FB at makecaption
-    \ifFBOldFigTabCaptions
-    \else
-      \def\FBCaption at Separator{{\autospace at beforeFDP : }}%
-    \fi
-    \ifFBCustomiseFigTabCaptions
-      \ifx\bbl at main@language\FB at french
-        \def\FBCaption at Separator{\CaptionSeparator}%
-      \fi
-    \fi
-    \@FBwarning at capsepfalse
-  \fi
-  \if at FBwarning@capsep
-    \FBWarning
-       {Figures' and tables' captions might look like\MessageBreak
-        `Figure 1:' which is wrong in French.\MessageBreak
-        Check your class or packages to change this;\MessageBreak
-        reported}%
-  \fi
-  \let\FB at makecaption\relax
-  \let\STD at makecaption\relax
-}
-\ifFBunicode
-  \let\FBtextellipsis\textellipsis
-\else
-  \DeclareTextSymbol{\FBtextellipsis}{LY1}{133}
-  \DeclareTextCommandDefault{\FBtextellipsis}{%
-    .\kern\fontdimen3\font.\kern\fontdimen3\font.\xspace}
-\fi
-\newcommand*{\Tdots@}{\@xp\textellipsis}
-\newcommand*{\Mdots@}{\@xp\mdots@}
-\AtBeginDocument{\DeclareRobustCommand*{\dots}{\relax
-                 \csname\ifmmode M\else T\fi dots@\endcsname}%
-                 \ifdefined\@xp\else\let\@xp\relax\fi
-                 \ifdefined\mdots@\else\let\Mdots@\mathellipsis\fi
-                }
-\def\bbl at frenchdots{\babel at save\Tdots@ \let\Tdots@\FBtextellipsis}
-\FB at addto{extras}{\bbl at frenchdots}
-\ifFB at active@punct
-   \@ifpackageloaded{listings}
-      {\FBWarning{Please load the "listings" package\MessageBreak
-                  AFTER babel/frenchb; reported}%
-      }{}
-\fi
-\newif\if at FBwarning@natbib
-\ifFB at active@punct
-  \@ifpackageloaded{natbib}{}{\@FBwarning at natbibtrue}
-\fi
-\AtBeginDocument{%
-   \if at FBwarning@natbib
-     \@ifpackageloaded{natbib}{}{\@FBwarning at natbibfalse}%
-   \fi
-   \if at FBwarning@natbib
-     \FBWarning{Please load the "natbib" package\MessageBreak
-                BEFORE babel/frenchb; reported}%
-   \fi
-}
-\newif\if at FBwarning@beamerarticle
-\@ifpackageloaded{beamerarticle}{}{\@FBwarning at beamerarticletrue}
-\AtBeginDocument{%
-   \if at FBwarning@beamerarticle
-     \@ifpackageloaded{beamerarticle}{}%
-                                     {\@FBwarning at beamerarticlefalse}%
-   \fi
-   \if at FBwarning@beamerarticle
-     \FBWarning{Please load the "beamerarticle" package\MessageBreak
-                BEFORE babel/frenchb; reported}%
-   \fi
-}
-\newcommand*{\frenchsetup}[1]{%
-  \setkeys{FB}{#1}%
-}%
-\@onlypreamble\frenchsetup
-\let\frenchbsetup\frenchsetup
-\@onlypreamble\frenchbsetup
-\newif\ifFBShowOptions              \FBShowOptionsfalse
-\newif\ifFBStandardLayout           \FBStandardLayouttrue
-\newif\ifFBGlobalLayoutFrench       \FBGlobalLayoutFrenchtrue
-\newif\ifFBReduceListSpacing        \FBReduceListSpacingfalse
-\newif\ifFBListOldLayout            \FBListOldLayoutfalse
-\newif\ifFBCompactItemize           \FBCompactItemizefalse
-\newif\ifFBStandardItemizeEnv       \FBStandardItemizeEnvtrue
-\newif\ifFBStandardEnumerateEnv     \FBStandardEnumerateEnvtrue
-\newif\ifFBStandardItemLabels       \FBStandardItemLabelstrue
-\newif\ifFBStandardLists            \FBStandardListstrue
-\newif\ifFBIndentFirst              \FBIndentFirstfalse
-\newif\ifFBFrenchFootnotes          \FBFrenchFootnotesfalse
-\newif\ifFBAutoSpaceFootnotes       \FBAutoSpaceFootnotesfalse
-\newif\ifFBOriginalTypewriter       \FBOriginalTypewriterfalse
-\newif\ifFBThinColonSpace           \FBThinColonSpacefalse
-\newif\ifFBThinSpaceInFrenchNumbers \FBThinSpaceInFrenchNumbersfalse
-\newif\ifFBFrenchSuperscripts       \FBFrenchSuperscriptstrue
-\newif\ifFBLowercaseSuperscripts    \FBLowercaseSuperscriptstrue
-\newif\ifFBPartNameFull             \FBPartNameFulltrue
-\newif\ifFBCustomiseFigTabCaptions  \FBCustomiseFigTabCaptionsfalse
-\newif\ifFBOldFigTabCaptions        \FBOldFigTabCaptionsfalse
-\newif\ifFBSmallCapsFigTabCaptions  \FBSmallCapsFigTabCaptionstrue
-\newif\ifFBSuppressWarning          \FBSuppressWarningfalse
-\newif\ifFBINGuillSpace             \FBINGuillSpacefalse
-\edef\FB at french{\CurrentOption}
-\AtEndOfPackage{%
-  \ifx\bbl at main@language\FB at french
-    \FBGlobalLayoutFrenchtrue
-    \@ifclassloaded{beamer}%
-      {\PackageInfo{frenchb.ldf}{%
-          No list customisation for the beamer class,%
-          \MessageBreak reported}}%
-      {\@ifpackageloaded{beamerarticle}%
-         {\FBStandardItemLabelsfalse
-          \FBReduceListSpacingtrue
-          \PackageInfo{frenchb.ldf}{%
-             Minimal list customisation for the beamerarticle%
-             \MessageBreak package; reported}}%
-         {\FBReduceListSpacingtrue
-          \FBStandardItemizeEnvfalse
-          \FBStandardEnumerateEnvfalse
-          \FBStandardItemLabelsfalse}%
-      }
-    \FBIndentFirsttrue
-    \FBFrenchFootnotestrue
-    \FBAutoSpaceFootnotestrue
-    \FBCustomiseFigTabCaptionstrue
-  \else
-    \FBGlobalLayoutFrenchfalse
-  \fi
-  \RequirePackage{keyval}%
-  \define at key{FB}{ShowOptions}[true]%
-          {\csname FBShowOptions#1\endcsname}%
-  \define at key{FB}{StandardLayout}[true]%
-          {\csname FBStandardLayout#1\endcsname
-           \ifFBStandardLayout
-             \FBReduceListSpacingfalse
-             \FBStandardItemizeEnvtrue
-             \FBStandardItemLabelstrue
-             \FBStandardEnumerateEnvtrue
-             \FBIndentFirstfalse
-             \FBFrenchFootnotesfalse
-             \FBAutoSpaceFootnotesfalse
-             \FBGlobalLayoutFrenchfalse
-           \else
-             \FBReduceListSpacingtrue
-             \FBStandardItemizeEnvfalse
-             \FBStandardItemLabelsfalse
-             \FBStandardEnumerateEnvfalse
-             \FBIndentFirsttrue
-             \FBFrenchFootnotestrue
-             \FBAutoSpaceFootnotestrue
-           \fi}%
-  \define at key{FB}{GlobalLayoutFrench}[true]%
-          {\csname FBGlobalLayoutFrench#1\endcsname
-           \ifFBGlobalLayoutFrench
-             \ifx\bbl at main@language\FB at french
-             \else
-               \FBGlobalLayoutFrenchfalse
-               \PackageWarning{frenchb.ldf}%
-                  {Option `GlobalLayoutFrench' skipped:\MessageBreak
-                   French is *not* babel's last option.\MessageBreak
-                   Reported}%
-             \fi
-           \fi}%
-  \define at key{FB}{ReduceListSpacing}[true]%
-          {\csname FBReduceListSpacing#1\endcsname}%
-  \define at key{FB}{ListOldLayout}[true]%
-          {\csname FBListOldLayout#1\endcsname
-           \ifFBListOldLayout
-             \FBStandardEnumerateEnvtrue
-             \renewcommand*{\FrenchLabelItem}{\textendash}%
-           \fi}%
-  \define at key{FB}{CompactItemize}[true]%
-          {\csname FBCompactItemize#1\endcsname
-           \ifFBCompactItemize
-             \FBStandardItemizeEnvfalse
-             \FBStandardEnumerateEnvfalse
-           \else
-             \FBStandardItemizeEnvtrue
-             \FBStandardEnumerateEnvtrue
-           \fi}%
-  \define at key{FB}{StandardItemizeEnv}[true]%
-          {\csname FBStandardItemizeEnv#1\endcsname}%
-  \define at key{FB}{StandardEnumerateEnv}[true]%
-          {\csname FBStandardEnumerateEnv#1\endcsname}%
-  \define at key{FB}{StandardItemLabels}[true]%
-          {\csname FBStandardItemLabels#1\endcsname}%
-  \define at key{FB}{ItemLabels}%
-          {\renewcommand*{\FrenchLabelItem}{#1}}%
-  \define at key{FB}{ItemLabeli}%
-          {\renewcommand*{\Frlabelitemi}{#1}}%
-  \define at key{FB}{ItemLabelii}%
-          {\renewcommand*{\Frlabelitemii}{#1}}%
-  \define at key{FB}{ItemLabeliii}%
-          {\renewcommand*{\Frlabelitemiii}{#1}}%
-  \define at key{FB}{ItemLabeliv}%
-          {\renewcommand*{\Frlabelitemiv}{#1}}%
-  \define at key{FB}{StandardLists}[true]%
-          {\csname FBStandardLists#1\endcsname
-           \ifFBStandardLists
-             \FBReduceListSpacingfalse
-             \FBCompactItemizefalse
-             \FBStandardItemizeEnvtrue
-             \FBStandardEnumerateEnvtrue
-             \FBStandardItemLabelstrue
-           \else
-             \FBReduceListSpacingtrue
-             \FBCompactItemizetrue
-             \FBStandardItemizeEnvfalse
-             \FBStandardEnumerateEnvfalse
-             \FBStandardItemLabelsfalse
-           \fi}%
-  \define at key{FB}{IndentFirst}[true]%
-          {\csname FBIndentFirst#1\endcsname}%
-  \define at key{FB}{FrenchFootnotes}[true]%
-          {\csname FBFrenchFootnotes#1\endcsname}%
-  \define at key{FB}{AutoSpaceFootnotes}[true]%
-          {\csname FBAutoSpaceFootnotes#1\endcsname}%
-  \define at key{FB}{AutoSpacePunctuation}[true]%
-          {\csname FBAutoSpacePunctuation#1\endcsname}%
-  \define at key{FB}{OriginalTypewriter}[true]%
-          {\csname FBOriginalTypewriter#1\endcsname}%
-  \define at key{FB}{ThinColonSpace}[true]%
-          {\csname FBThinColonSpace#1\endcsname
-           \ifFBThinColonSpace
-             \renewcommand*{\FBcolonspace}{\FBthinspace}%
-          \fi}%
-  \define at key{FB}{ThinSpaceInFrenchNumbers}[true]%
-          {\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
-  \define at key{FB}{FrenchSuperscripts}[true]%
-          {\csname FBFrenchSuperscripts#1\endcsname}
-  \define at key{FB}{LowercaseSuperscripts}[true]%
-          {\csname FBLowercaseSuperscripts#1\endcsname}
-  \define at key{FB}{PartNameFull}[true]%
-          {\csname FBPartNameFull#1\endcsname}%
-  \define at key{FB}{CustomiseFigTabCaptions}[true]%
-          {\csname FBCustomiseFigTabCaptions#1\endcsname}%
-  \define at key{FB}{OldFigTabCaptions}[true]%
-          {\csname FBOldFigTabCaptions#1\endcsname
-           \ifFBOldFigTabCaptions
-             \FB at addto{extras}{\babel at save\FBCaption at Separator
-                      \def\FBCaption at Separator{\CaptionSeparator}}%
-           \fi}%
-  \define at key{FB}{SmallCapsFigTabCaptions}[true]%
-          {\csname FBSmallCapsFigTabCaptions#1\endcsname
-           \ifFBSmallCapsFigTabCaptions
-             \let\FBfigtabshape\scshape
-           \else
-             \let\FBfigtabshape\relax
-           \fi}%
-  \define at key{FB}{SuppressWarning}[true]%
-          {\csname FBSuppressWarning#1\endcsname
-           \ifFBSuppressWarning
-             \renewcommand{\FBWarning}[1]{}%
-           \fi}%
-  \define at key{FB}{INGuillSpace}[true]%
-          {\csname FBINGuillSpace#1\endcsname
-           \ifFBINGuillSpace
-             \renewcommand*{\FBguillspace}{\space}%
-           \fi}%
-  \define at key{FB}{InnerGuillSingle}[true]%
-          {\csname FBInnerGuillSingle#1\endcsname}%
-  \define at key{FB}{EveryParGuill}[open]%
-          {\expandafter\let\expandafter
-             \FBeveryparguill\csname FBguill#1\endcsname
-           \ifx\FBeveryparguill\FBguillopen
-           \else\ifx\FBeveryparguill\FBguillclose
-                \else\ifx\FBeveryparguill\FBguillnone
-                     \else
-                       \let\FBeveryparguill\FBguillopen
-                       \PackageWarning{frenchb.ldf}%
-                          {Wrong value for `EveryParGuill':
-                           try `open',\MessageBreak
-                           `close' or `none'. Reported}%
-                     \fi
-                \fi
-           \fi}%
-  \define at key{FB}{EveryLineGuill}[open]%
-          {\ifFB at luatex@punct
-             \expandafter\let\expandafter
-               \FBeverylineguill\csname FBguill#1\endcsname
-             \ifx\FBeverylineguill\FBguillopen
-             \else\ifx\FBeverylineguill\FBguillclose
-                  \else\ifx\FBeverylineguill\FBguillnone
-                       \else
-                         \let\FBeverylineguill\FBguillnone
-                         \FBWarning{Wrong value for `EveryLineGuill':
-                                    try `open',\MessageBreak
-                                    `close' or `none'. Reported}%
-                       \fi
-                  \fi
-             \fi
-           \else
-             \FBWarning{Option `EveryLineGuill' skipped:%
-                        \MessageBreak this option is for
-                        LuaTeX *only*.\MessageBreak Reported}%
-           \fi}%
-  \define at key{FB}{og}%
-          {\ifFBunicode
-             \ifFB at luatex@punct
-               \FB at addGUILspace=1 \relax
-             \fi
-             \ifFB at xetex@punct
-               \XeTeXcharclass"13   = \FB at guilo
-               \XeTeXcharclass"AB   = \FB at guilo
-               \XeTeXcharclass"A0   = \FB at guilnul
-               \XeTeXcharclass"202F = \FB at guilnul
-             \fi
-             \ifFB at active@punct
-               \PackageWarning{frenchb.ldf}%
-                  {Option og=« not supported with this version
-                   of\MessageBreak LuaTeX/XeTeX; reported}%
-             \fi
-           \else
-             \newcommand*{\FB@@og}{%
-                \iflanguage{french}%
-                  {\ifFB at spacing\FB at og\ignorespaces
-                   \else\guillemotleft
-                   \fi}%
-                  {\guillemotleft}}%
-             \AtBeginDocument{%
-                \ifdefined\DeclareInputText
-                  \ifdefined\uc at dclc
-                    \uc at dclc{171}{default}{\FB@@og}%
-                  \else
-                    \ifdefined\DeclareUnicodeCharacter
-                      \DeclareUnicodeCharacter{00AB}{\FB@@og}%
-                    \else
-                      \@tempcnta`#1\relax
-                      \ifdefined\mule at def
-                        \mule at def{11}{\FB@@og}%
-                      \else
-                        \DeclareInputText{\the\@tempcnta}{\FB@@og}%
-                      \fi
-                    \fi
-                  \fi
-                \else
-                  \PackageWarning{frenchb.ldf}%
-                     {Option `og' requires package inputenc;%
-                      \MessageBreak reported}%
-                \fi
-              }%
-           \fi
-          }%
-  \define at key{FB}{fg}%
-          {\ifFBunicode
-             \ifFB at luatex@punct
-               \FB at addGUILspace=1 \relax
-             \fi
-             \ifFB at xetex@punct
-               \XeTeXcharclass"14   = \FB at guilf
-               \XeTeXcharclass"BB   = \FB at guilf
-               \XeTeXcharclass"A0   = \FB at guilnul
-               \XeTeXcharclass"202F = \FB at guilnul
-             \fi
-             \ifFB at active@punct
-               \PackageWarning{frenchb.ldf}%
-                  {Option fg=» not supported with this version
-                   of\MessageBreak LuaTeX/XeTeX; reported}%
-             \fi
-           \else
-             \newcommand*{\FB@@fg}{%
-                \iflanguage{french}%
-                  {\ifFB at spacing\FB at fg
-                   \else\guillemotright
-                   \fi}%
-                  {\guillemotright}}%
-             \AtBeginDocument{%
-               \ifdefined\DeclareInputText
-                 \ifdefined\uc at dclc
-                   \uc at dclc{187}{default}{\FB@@fg}%
-                 \else
-                   \ifdefined\DeclareUnicodeCharacter
-                     \DeclareUnicodeCharacter{00BB}{\FB@@fg}%
-                   \else
-                     \@tempcnta`#1\relax
-                     \ifdefined\mule at def
-                       \mule at def{27}{{\FB@@fg}}%
-                     \else
-                       \DeclareInputText{\the\@tempcnta}{\FB@@fg}%
-                     \fi
-                   \fi
-                 \fi
-               \else
-                 \PackageWarning{frenchb.ldf}%
-                    {Option `fg' requires package inputenc;%
-                     \MessageBreak reported}%
-               \fi
-              }%
-           \fi
-          }%
-}
-\newcommand*{\FBprocess at options}{%
-  \@ifpackageloaded{enumitem}{%
-     \ifFBStandardItemizeEnv
-     \else
-       \FBStandardItemizeEnvtrue
-       \PackageInfo{frenchb.ldf}%
-          {Setting StandardItemizeEnv=true for\MessageBreak
-           compatibility with enumitem package,\MessageBreak
-           reported}%
-     \fi
-     \ifFBStandardEnumerateEnv
-     \else
-       \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
-          {Setting StandardEnumerateEnv=true for\MessageBreak
-           compatibility with enumitem package,\MessageBreak
-           reported}%
-     \fi}{}%
-  \@ifpackageloaded{paralist}{%
-     \ifFBStandardItemizeEnv
-     \else
-       \FBStandardItemizeEnvtrue
-       \PackageInfo{frenchb.ldf}%
-          {Setting StandardItemizeEnv=true for\MessageBreak
-           compatibility with paralist package,\MessageBreak
-           reported}%
-     \fi
-     \ifFBStandardEnumerateEnv
-     \else
-       \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
-          {Setting StandardEnumerateEnv=true for\MessageBreak
-           compatibility with paralist package,\MessageBreak
-           reported}%
-     \fi}{}%
-  \@ifpackageloaded{enumerate}{%
-     \ifFBStandardEnumerateEnv
-     \else
-       \FBStandardEnumerateEnvtrue
-       \PackageInfo{frenchb.ldf}%
-          {Setting StandardEnumerateEnv=true for\MessageBreak
-           compatibility with enumerate package,\MessageBreak
-           reported}%
-     \fi}{}%
-  \def\FB at ufl{\update at frenchlists}
-  \ifx\bbl at main@language\FB at french
-    \update at frenchlists
-  \fi
-  \ifFBAutoSpacePunctuation
-    \autospace at beforeFDP
-  \else
-    \noautospace at beforeFDP
-  \fi
-  \ifFBOriginalTypewriter
-  \else
-    \let\ttfamilyORI\ttfamily
-    \let\rmfamilyORI\rmfamily
-    \let\sffamilyORI\sffamily
-    \let\ttfamily\ttfamilyFB
-    \let\rmfamily\rmfamilyFB
-    \let\sffamily\sffamilyFB
-  \fi
-  \@ifpackageloaded{numprint}%
-  {\ifnprt at autolanguage
-     \providecommand*{\npstylefrench}{}%
-     \ifFBThinSpaceInFrenchNumbers
-       \renewcommand*\npstylefrench{%
-          \npthousandsep{\,}%
-          \npdecimalsign{,}%
-          \npproductsign{\cdot}%
-          \npunitseparator{\,}%
-          \npdegreeseparator{}%
-          \nppercentseparator{\nprt at unitsep}%
-          }%
-     \else
-       \renewcommand*\npstylefrench{%
-          \npthousandsep{~}%
-          \npdecimalsign{,}%
-          \npproductsign{\cdot}%
-          \npunitseparator{\,}%
-          \npdegreeseparator{}%
-          \nppercentseparator{\nprt at unitsep}%
-          }%
-     \fi
-     \npaddtolanguage{french}{french}%
-   \fi}{}%
-  \ifFBFrenchSuperscripts
-    \DeclareRobustCommand*{\up}{\@ifstar{\FB at up@fake}{\fup}}%
-  \else
-    \DeclareRobustCommand*{\up}{\@ifstar{\FB at up@fake}%
-                                        {\textsuperscript}}%
-  \fi
-  \ifFBLowercaseSuperscripts
-  \else
-    \renewcommand*{\FB at lc}[1]{##1}%
-  \fi
-  \ifFBCustomiseFigTabCaptions
-    \ifFB at koma
-      \renewcommand*{\captionformat}{\CaptionSeparator}%
-    \fi
-    \@ifclassloaded{memoir}%
-       {\captiondelim{\CaptionSeparator}}{}%
-    \@ifclassloaded{beamer}%
-       {\defbeamertemplate{caption label separator}{FBcustom}{%
-            \CaptionSeparator}%
-        \setbeamertemplate{caption label separator}[FBcustom]}{}%
-  \else
-    \ifFB at koma
-      \renewcommand*{\captionformat}{{\autospace at beforeFDP : }}%
-    \fi
-    \@ifclassloaded{memoir}%
-       {\captiondelim{{\autospace at beforeFDP : }}%
-       }{}%
-    \@ifclassloaded{beamer}%
-       {\defbeamertemplate{caption label separator}{FBcolon}{%
-             {\autospace at beforeFDP : }}%
-        \setbeamertemplate{caption label separator}[FBcolon]%
-       }{}%
-  \fi
-  \ifFBShowOptions
-    \GenericWarning{* }{%
-     * **** List of possible options for frenchb ****\MessageBreak
-     [Default values between brackets when frenchb is loaded *LAST*]%
-     \MessageBreak
-     ShowOptions=true [false]\MessageBreak
-     StandardLayout=true [false]\MessageBreak
-     GlobalLayoutFrench=false [true]\MessageBreak
-     StandardLists=true [false]\MessageBreak
-     IndentFirst=false [true]\MessageBreak
-     ReduceListSpacing=false [true]\MessageBreak
-     ListOldLayout=true [false]\MessageBreak
-     StandardItemizeEnv=true [false]\MessageBreak
-     StandardEnumerateEnv=true [false]\MessageBreak
-     StandardItemLabels=true [false]\MessageBreak
-     ItemLabels=\textemdash, \textbullet,
-        \protect\ding{43},... [\textendash]\MessageBreak
-     ItemLabeli=\textemdash, \textbullet,
-        \protect\ding{43},... [\textendash]\MessageBreak
-     ItemLabelii=\textemdash, \textbullet,
-        \protect\ding{43},... [\textendash]\MessageBreak
-     ItemLabeliii=\textemdash, \textbullet,
-        \protect\ding{43},... [\textendash]\MessageBreak
-     ItemLabeliv=\textemdash, \textbullet,
-        \protect\ding{43},... [\textendash]\MessageBreak
-     FrenchFootnotes=false [true]\MessageBreak
-     AutoSpaceFootnotes=false [true]\MessageBreak
-     AutoSpacePunctuation=false [true]\MessageBreak
-     OriginalTypewriter=true [false]\MessageBreak
-     ThinColonSpace=true [false]\MessageBreak
-     ThinSpaceInFrenchNumbers=true [false]\MessageBreak
-     FrenchSuperscripts=false [true]\MessageBreak
-     LowercaseSuperscripts=false [true]\MessageBreak
-     PartNameFull=false [true]\MessageBreak
-     SuppressWarning=true [false]\MessageBreak
-     CustomiseFigTabCaptions=false [true]\MessageBreak
-     OldFigTabCaptions=true [false]\MessageBreak
-     SmallCapsFigTabCaptions=false [true]\MessageBreak
-     INGuillSpace=true [false]\MessageBreak
-     InnerGuillSingle=true [false]\MessageBreak
-     EveryParGuill=open, close, none [open]\MessageBreak
-     EveryLineGuill=open, close, none
-                   [open in LuaTeX, none otherwise]\MessageBreak
-     og= <left quote character>, fg= <right quote character>%
-     \MessageBreak
-     *********************************************%
-     \MessageBreak\protect\frenchsetup{ShowOptions}}
-  \fi
-}
-\AtBeginDocument{%
-   \providecommand*{\xspace}{\relax}%
-   \ifdefined\pdfstringdefDisableCommands
-     \pdfstringdefDisableCommands{%
-        \let\up\relax
-        \let\fup\relax
-        \let\degre\textdegree
-        \let\degres\textdegree
-        \def\ieme{e\xspace}%
-        \def\iemes{es\xspace}%
-        \def\ier{er\xspace}%
-        \def\iers{ers\xspace}%
-        \def\iere{re\xspace}%
-        \def\ieres{res\xspace}%
-        \def\FrenchEnumerate#1{#1\degre\space}%
-        \def\FrenchPopularEnumerate#1{#1\degre)\space}%
-        \def\No{N\degre\space}%
-        \def\no{n\degre\space}%
-        \def\Nos{N\degre\space}%
-        \def\nos{n\degre\space}%
-        \def\FB at og{\guillemotleft\space}%
-        \def\FB at fg{\space\guillemotright}%
-        \def\at{@}%
-        \def\circonflexe{\string^}%
-        \def\tild{\string~}%
-        \def\boi{\textbackslash}%
-        \let\bsc\textsc
-      }%
-   \fi
-   \FBprocess at options
-   \ifFB at luatex@punct
-     \FBcolonsp=\expandafter{\meaning\FBcolonspace}
-     \FBthinsp= \expandafter{\meaning\FBthinspace}
-     \FBguillsp=\expandafter{\meaning\FBguillspace}
-     \activate at luatexpunct
-   \fi
-   \ifFBunicode
-     \@ifpackageloaded{fontspec}{}%
-        {\@ifpackageloaded{luainputenc}{}%
-            {\PackageWarning{frenchb.ldf}%
-                {Add \protect\usepackage{fontspec} to the\MessageBreak
-                 preamble of your document, reported}%
-            }%
-        }
-   \else
-     \begingroup \newcommand{\FBOTone}{OT1}%
-     \ifx\encodingdefault\FBOTone
-       \PackageWarning{frenchb.ldf}%
-          {OT1 encoding should not be used for French.%
-           \MessageBreak
-           Add \protect\usepackage[T1]{fontenc} to the
-           preamble\MessageBreak of your document; reported}%
-     \fi
-     \endgroup
-   \fi
-}
-\let\listORI\list
-\let\endlistORI\endlist
-\def\FB at listVsettings{%
-      \setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}%
-      \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}%
-      \setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}%
-      \setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}%
-      \@tempdima=\parskip
-      \addtolength{\topsep}{-\@tempdima}%
-      \addtolength{\partopsep}{\@tempdima}%
-}
-\def\listFB#1#2{\listORI{#1}{\FB at listVsettings #2}}
-\let\endlistFB\endlist
-\newcommand*{\FrenchLabelItem}{\textemdash}
-\newcommand*{\Frlabelitemi}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemii}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemiii}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemiv}{\FrenchLabelItem}
-\newlength\listindentFB
-\setlength{\listindentFB}{-1pt}
-\newlength\descindentFB
-\setlength{\descindentFB}{-1pt}
-\newlength\labelwidthFB
-\setlength{\labelwidthFB}{-1pt}
-\newlength\leftmarginFB
-\def\FB at listHsettings{%
-   \leftmarginFB\labelwidthFB
-   \advance\leftmarginFB \labelsep
-   \bbl at for\FB at dp {1, 2, 3, 4, 5, 6}%
-     {\csname leftmargin\romannumeral\FB at dp\endcsname \leftmarginFB}%
-   \advance\leftmargini \listindentFB
-   \leftmargin\csname leftmargin\ifnum\@listdepth=\@ne i\else
-                                                      ii\fi\endcsname
-}
-\def\FB at itemizesettings{%
-    \ifFBReduceListSpacing
-      \setlength{\itemsep}{\z@}%
-      \setlength{\parsep}{\z@}%
-      \setlength{\topsep}{\z@}%
-      \setlength{\partopsep}{\z@}%
-      \@tempdima=\parskip
-      \addtolength{\topsep}{-\@tempdima}%
-      \addtolength{\partopsep}{\@tempdima}%
-    \fi
-    \settowidth{\labelwidth}{\csname\@itemitem\endcsname}%
-    \ifFBListOldLayout
-      \setlength{\leftmargin}{\labelwidth}%
-      \addtolength{\leftmargin}{\labelsep}%
-      \addtolength{\leftmargin}{\parindent}%
-    \else
-      \FB at listHsettings
-    \fi
-}
-\def\itemizeFB{%
-    \ifnum \@itemdepth >\thr@@\@toodeep\else
-      \advance\@itemdepth\@ne
-      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-      \expandafter
-      \listORI
-      \csname\@itemitem\endcsname
-      \FB at itemizesettings
-    \fi
-}
-\let\enditemizeFB\endlistORI
-\def\labelitemsFB{%
-    \let\labelitemi\Frlabelitemi
-    \let\labelitemii\Frlabelitemii
-    \let\labelitemiii\Frlabelitemiii
-    \let\labelitemiv\Frlabelitemiv
-    \ifdim\labelwidthFB<\z@
-      \settowidth{\labelwidthFB}{\FrenchLabelItem}%
-    \fi
-    \ifdim\listindentFB<\z@
-      \ifdim\parindent=\z@
-        \setlength{\listindentFB}{1.5em}%
-      \else
-        \setlength{\listindentFB}{\parindent}%
-      \fi
-    \fi
-    \ifdim\descindentFB<\z@
-      \setlength{\descindentFB}{\listindentFB}%
-    \fi
-}
-\def\enumerateFB{%
-  \ifnum \@enumdepth >\thr@@\@toodeep\else
-    \advance\@enumdepth\@ne
-    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-    \expandafter
-    \list
-      \csname label\@enumctr\endcsname
-      {\FB at listHsettings
-       \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
-  \fi
-}
-\let\endenumerateFB\endlistORI
-\def\descriptionFB{%
-      \list{}{\FB at listHsettings
-              \labelwidth\z@
-              \itemindent-\leftmargin
-              \ifnum\@listdepth=1
-                \ifdim\descindentFB=\z@
-                  \ifdim\listindentFB>\z@
-                    \leftmargini\listindentFB
-                    \leftmargin\leftmargini
-                    \itemindent-\leftmargin
-                  \fi
-                \else
-                  \advance\itemindent by \descindentFB
-                \fi
-              \fi
-              \let\makelabel\descriptionlabel}%
-}
-\let\enddescriptionFB\endlistORI
-\def\update at frenchlists{%
-  \ifFBReduceListSpacing \let\list\listFB \fi
-  \ifFBStandardItemizeEnv
-  \else \let\itemize\itemizeFB \fi
-  \ifFBStandardItemLabels
-  \else \labelitemsFB \fi
-  \ifFBStandardEnumerateEnv
-  \else \let\enumerate\enumerateFB \let\description\descriptionFB \fi
-}
-\def\FB at ufl{\relax}
-\def\bbl at frenchlistlayout{%
-  \ifFBGlobalLayoutFrench
-  \else
-    \babel at save\list         \babel at save\itemize
-    \babel at save\enumerate    \babel at save\description
-    \babel at save\labelitemi   \babel at save\labelitemii
-    \babel at save\labelitemiii \babel at save\labelitemiv
-    \FB at ufl
-  \fi
-}
-\FB at addto{extras}{\bbl at frenchlistlayout}
-\def\bbl at frenchindent{%
-  \ifFBGlobalLayoutFrench
-  \else
-    \babel at save\@afterindentfalse
-  \fi
-  \ifFBIndentFirst
-    \let\@afterindentfalse\@afterindenttrue
-    \@afterindenttrue
-  \fi}
-\def\bbl at nonfrenchindent{%
-  \ifFBGlobalLayoutFrench
-    \ifFBIndentFirst
-      \@afterindenttrue
-    \fi
-  \fi}
-\FB at addto{extras}{\bbl at frenchindent}
-\FB at addto{noextras}{\bbl at nonfrenchindent}
-\AtBeginDocument{\@ifpackageloaded{bigfoot}%
-                   {\PackageInfo{frenchb.ldf}%
-                     {bigfoot package in use.\MessageBreak
-                      frenchb will NOT customise footnotes;%
-                      \MessageBreak reported}}%
-                   {\let\@footnotemarkORI\@footnotemark
-                    \def\@footnotemarkFB{\leavevmode\unskip\unkern
-                                         \,\@footnotemarkORI}%
-                    \ifFBAutoSpaceFootnotes
-                      \let\@footnotemark\@footnotemarkFB
-                    \fi}%
-                }
-\newdimen\parindentFFN
-\parindentFFN=10in
-\newcommand*{\dotFFN}{.}
-\newcommand*{\kernFFN}{\kern .5em}
-\newlength\FBfnindent
-\ifFB at koma
-  \let\@makefntextORI\@makefntext
-  \let\@@makefnmarkORI\@@makefnmark
-  \deffootnote[\FBfnindent]{0pt}{\parindentFFN}%
-              {\thefootnotemark\dotFFN\kernFFN}
-  \let\@makefntextFB\@makefntext
-  \let\@@makefnmarkFB\@@makefnmark
-  \deffootnote[\parindentFFN]{0pt}{\parindentFFN}%
-              {\textsuperscript{\thefootnotemark}}
-  \let\@makefntextTH\@makefntext
-  \let\@@makefnmarkTH\@@makefnmark
-  \let\@makefntext\@makefntextORI
-  \let\@@makefnmark\@@makefnmarkORI
-\fi
-\@ifclassloaded{memoir}
-   {\newcommand{\@makefntextFB}[1]{%
-      \def\footscript##1{##1\dotFFN\kernFFN}%
-      \setlength{\footmarkwidth}{\FBfnindent}%
-      \setlength{\footmarksep}{-\footmarkwidth}%
-      \setlength{\footparindent}{\parindentFFN}%
-      \makefootmark #1}%
-   }{}
-\@ifclassloaded{beamer}
-   {\def\@makefntextFB#1{%
-      \def\insertfootnotetext{#1}%
-      \def\insertfootnotemark{\insertfootnotemarkFB}%
-      \usebeamertemplate***{footnote}}%
-    \def\insertfootnotemarkFB{%
-      \usebeamercolor[fg]{footnote mark}%
-      \usebeamerfont*{footnote mark}%
-      \llap{\@thefnmark}\dotFFN\kernFFN}%
-   }{}
-\providecommand*{\insertfootnotemarkFB}{%
-  \parindent=\parindentFFN
-  \rule\z@\footnotesep
-  \setbox\@tempboxa\hbox{\@thefnmark}%
-  \ifdim\wd\@tempboxa>\z@
-    \llap{\@thefnmark}\dotFFN\kernFFN
-  \fi}
-\providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1}
-\AtBeginDocument{%
-   \@ifpackageloaded{bigfoot}{}%
-      {\ifdim\parindentFFN<10in
-       \else
-         \parindentFFN=\parindent
-         \ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi
-       \fi
-       \settowidth{\FBfnindent}{\dotFFN\kernFFN}%
-       \addtolength{\FBfnindent}{\parindentFFN}%
-       \let\@makefntextORI\@makefntext
-       \ifFB at koma
-         \let\@@makefnmarkORI\@@makefnmark
-         \long\def\@makefntext#1{%
-                \ifFBFrenchFootnotes
-                  \ifx\footnote\thanks
-                    \let\@@makefnmark\@@makefnmarkTH
-                    \@makefntextTH{#1}%
-                  \else
-                    \let\@@makefnmark\@@makefnmarkFB
-                    \@makefntextFB{#1}%
-                  \fi
-                \else
-                  \let\@@makefnmark\@@makefnmarkORI
-                  \@makefntextORI{#1}%
-                \fi}%
-       \else
-         \@ifclassloaded{memoir}%
-            {\ifFBFrenchFootnotes
-               \setlength{\thanksmarkwidth}{\parindentFFN}%
-               \setlength{\thanksmarksep}{-\thanksmarkwidth}%
-             \fi
-            }{}%
-         \@ifclassloaded{beamer}%
-            {\ifFBFrenchFootnotes
-               \ifdim\parindentFFN=1.5em\else
-                 \FBWarning{%
-                    \protect\parindentFFN\space is ineffective%
-                    \MessageBreak within the beamer class.%
-                    \MessageBreak Reported}%
-               \fi
-             \fi
-            }{}%
-         \long\def\@makefntext#1{%
-                 \ifFBFrenchFootnotes
-                   \@makefntextFB{#1}%
-                 \else
-                   \@makefntextORI{#1}%
-                 \fi}%
-       \fi
-    }%
-}
-\newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue}
-\newcommand*{\FrenchFootnotes}{\FBFrenchFootnotestrue}
-\newcommand*{\StandardFootnotes}{\FBFrenchFootnotesfalse}
-\FBclean at on@exit
-\let\FB at llc\loadlocalcfg
-\let\loadlocalcfg\@gobble
-\ldf at finish\CurrentOption
-\let\loadlocalcfg\FB at llc
+\input french.ldf\relax
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
 \endinput
 %%
 %% End of file `frenchb.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2017-07-13 23:05:35 UTC (rev 44781)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2017-07-13 23:06:10 UTC (rev 44782)
@@ -1,10 +1,10 @@
---
---  File `frenchb.lua’ generated from frenchb.dtx [2017/04/30 v3.3a]
---
---  Copyright © 2014-2017 Daniel Flipo
---  <daniel (dot) flipo (at) free (dot) fr>
---  License LPPL: see frenchb.ldf.
---
+--[[
+   File `frenchb.lua’ generated from frenchb.dtx
+         [2017/07/08 v3.3b French support from the babel system]
+   Copyright © 2014-2017 Daniel Flipo
+   <daniel (dot) flipo (at) free (dot) fr>
+   License LPPL: see french.ldf.
+--]]
 local FB_punct_thin =
   {[string.byte("!")] = true,
    [string.byte("?")] = true,



More information about the tex-live-commits mailing list