%%
%% 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 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}
         [2018/09/13 v3.5c French support from the babel system]
%%
%%  Babel package for LaTeX version 2e
%%  Copyright © 1996-2018
%%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
%%
\LdfInit\CurrentOption{FBclean@on@exit}
\def\fb@error#1#2{%
    \begingroup
      \newlinechar=`\^^J
      \def\\{^^J(french.ldf) }%
      \errhelp{#2}\errmessage{\\#1^^J}%
    \endgroup}
\def\fb@warning#1{%
   \begingroup
      \newlinechar=`\^^J
      \def\\{^^J(french.ldf) }%
      \message{\\#1^^J}%
   \endgroup}
\def\fb@info#1{%
   \begingroup
      \newlinechar=`\^^J
      \def\\{^^J}%
      \wlog{#1}%
   \endgroup}
\let\bbl@tempa\relax
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname eTeXversion\endcsname\relax
  \let\bbl@tempa\endinput
  \fb@error{babel-french requires eTeX.\\
            Aborting here}
           {Orignal PlainTeX is not supported,\\
            please use LuaTeX or XeTeX engines.}
\fi
\bbl@tempa
\let\bbl@tempa\relax
\ifdefined\babeltags
\else
   \let\bbl@tempa\endinput
   \ifdefined\PackageError
      \PackageError{french.ldf}
         {babel-french requires babel v.3.16.\MessageBreak
          Aborting here}
         {Please upgrade Babel!}
   \else
      \fb@error{babel-french requires babel v.3.16.\\
                Aborting here}
               {Please upgrade Babel!}
   \fi
\fi
\bbl@tempa
\def\FB@nopatterns{%
   \ifdefined\l@nohyphenation
      \adddialect\l@french\l@nohyphenation
      \edef\bbl@nulllanguage{\string\language=nohyphenation}%
   \else
      \edef\bbl@nulllanguage{\string\language=0}%
      \adddialect\l@french0
   \fi
   \@nopatterns{French}}
\ifdefined\l@french \else \FB@nopatterns \fi
\ifdefined\l@acadian \else \adddialect\l@acadian\l@french \fi
\providehyphenmins{french}{\tw@\thr@@}
\providehyphenmins{acadian}{\tw@\thr@@}
\newif\ifLaTeXe
\let\bbl@tempa\relax
\ifdefined\magnification
\else
   \ifdefined\@compatibilitytrue
     \LaTeXetrue
   \else
     \PackageError{french.ldf}
        {LaTeX-2.09 format is no longer supported.\MessageBreak
         Aborting here}
        {Please upgrade to LaTeX2e!}
     \let\bbl@tempa\endinput
   \fi
\fi
\bbl@tempa
\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
\def\extrasfrench{%
     \FBfrenchtrue
     \babel@savevariable{\lccode"27}%
     \lccode"27="27
     \ifFBunicode
       \babel@savevariable{\lccode"2019}%
       \lccode"2019="2019
     \fi
}
\def\noextrasfrench{\FBfrenchfalse}
\addto\extrasfrench{\bbl@frenchspacing}
\addto\noextrasfrench{\bbl@nonfrenchspacing}
\newif\ifFB@active@punct \FB@active@puncttrue
\newif\ifFB@luatex@punct
\ifFBLuaTeX
  \ifnum\luatexversion<100
    \ifx\PackageWarning\@undefined
      \fb@warning{Please upgrade LuaTeX to version 1.0.4 or above!\\%
         babel-french will make high punctuation characters (;:!?)\\%
         active with LuaTeX < 1.0.4.}%
    \else
      \PackageWarning{french.ldf}{Please upgrade LuaTeX
         to version 1.0.4 or above!\MessageBreak
         babel-french will make high punctuation characters%
         \MessageBreak (;:!?) active with LuaTeX < 1.0.4;%
         \MessageBreak reported}%
    \fi
  \else
    \FB@luatex@puncttrue\FB@active@punctfalse
  \fi
\fi
\newcount\FB@nonchar
\newif\ifFB@xetex@punct
\ifdefined\XeTeXinterchartokenstate
  \FB@xetex@puncttrue\FB@active@punctfalse
  \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt
    \FB@nonchar=255 \relax
  \else
    \FB@nonchar=4095 \relax
  \fi
\fi
\newcommand*{\FBguillspace}{\hskip .8\fontdimen2\font
                              plus .3\fontdimen3\font
                             minus .8\fontdimen4\font \relax}
\newcommand*{\FBcolonspace}{\space}
\newcommand*{\FBthinspace}{\hskip .5\fontdimen2\font \relax}
\ifLaTeXe
  \newcommand*{\FBsetspaces}[5][french]{%
    \def\bbl@tempa{french}\def\bbl@tempb{#1}%
    \ifx\bbl@tempa\bbl@tempb \def\bbl@tempb{}\fi
    \@namedef{\bbl@tempb FB#2space}{\hskip #3\fontdimen2\font
                                      plus #4\fontdimen3\font
                                     minus #5\fontdimen4\font \relax}%
    \ifFB@luatex@punct
      \ifx\bbl@tempb\FB@acadian
        \directlua{
          FBsp.#2.gl.ac[1] = #3
          FBsp.#2.gl.ac[2] = #4
          FBsp.#2.gl.ac[3] = #5
          if #3 > 0.6 then
             FBsp.#2.ch.ac = 0xA0
          elseif #3 > 0.2 then
             FBsp.#2.ch.ac = 0x202F
          else
             FBsp.#2.ch.ac = 0x200B
          end
        }%
      \fi
    \fi
  }
  \@onlypreamble\FBsetspaces
\fi
\ifLaTeXe
  \addto\extrasfrench{%
    \ifFB@luatex@punct
      \edef\bbl@tempa{\detokenize\expandafter{\languagename}}%
      \edef\bbl@tempb{\detokenize{french}}%
      \ifx\bbl@tempa\bbl@tempb \FB@dialect=0 \relax
      \else                    \FB@dialect=1 \relax
      \fi
      \ifdefined\FB@once\else
        \set@glue@table{colon}%
        \set@glue@table{thin}%
        \set@glue@table{guill}%
        \def\FB@once{}%
      \fi
    \fi
    \ifcsname\languagename FBthinspace\endcsname
      \babel@save\FBthinspace
      \renewcommand*{\FBthinspace}{%
              \csname\languagename FBthinspace\endcsname}%
    \fi
    \ifcsname\languagename FBcolonspace\endcsname
      \babel@save\FBcolonspace
      \renewcommand*{\FBcolonspace}{%
              \csname\languagename FBcolonspace\endcsname}%
    \fi
    \ifcsname\languagename FBguillspace\endcsname
      \babel@save\FBguillspace
      \renewcommand*{\FBguillspace}{%
              \csname\languagename FBguillspace\endcsname}%
    \fi
  }
\fi
\newif\ifFB@spacing \FB@spacingtrue
\newcommand*{\FB@spacing@on}{%
  \ifFB@luatex@punct
    \FB@spacing=1 \relax
  \else
    \FB@spacingtrue
  \fi}
\newcommand*{\FB@spacing@off}{%
  \ifFB@luatex@punct
    \FB@spacing=0 \relax
  \else
    \FB@spacingfalse
  \fi}
\ifFB@luatex@punct
  \ifdefined\newluafunction\else
    \input ltluatex.tex
  \fi
  \newattribute\FB@spacing      \FB@spacing=1 \relax
  \newattribute\FB@addDPspace   \FB@addDPspace=1 \relax
  \newattribute\FB@addGUILspace \FB@addGUILspace=0 \relax
  \newattribute\FB@ucsNBSP      \FB@ucsNBSP=0 \relax
  \newattribute\FB@dialect      \FB@dialect=0 \relax
  \ifLaTeXe
    \PackageInfo{french.ldf}{No need for active punctuation
                 characters\MessageBreak with this version
                 of LuaTeX!\MessageBreak reported}
  \else
    \fb@info{No need for active punctuation characters\\
             with this version of LuaTeX!}
  \fi
  \newcommand*{\set@glue@table}[1]{%
    \directlua {
      local s = token.get_meaning("FB#1space")
      local t = FBget_glue(s)
      if t then
         FBsp.#1.gl.fr = t
         if not FBsp.#1.gl.ac[1] then
            FBsp.#1.gl.ac =  t
         end
         if FBsp.#1.gl.fr[1] > 0.6 then
            FBsp.#1.ch.fr = 0xA0
         elseif FBsp.#1.gl.fr[1] > 0.2 then
            FBsp.#1.ch.fr = 0x202F
         else
            FBsp.#1.ch.fr = 0x200B
         end
         if not FBsp.#1.ch.ac then
            FBsp.#1.ch.ac = FBsp.#1.ch.fr
         end
      else
         texio.write_nl('term and log', '')
         texio.write_nl('term and log',
           '*** french.ldf warning: Unexpected syntax in FB#1space,')
         texio.write_nl('term and log',
           '*** french.ldf warning: LuaTeX table FBsp unchanged.')
         texio.write_nl('term and log',
           '*** french.ldf warning: Consider using FBsetspaces to ')
         texio.write('term and log', 'customise FB#1space.')
         texio.write_nl('term and log', '')
      end
    }%
  }
\fi
\ifFB@luatex@punct
  \newcommand*{\FB@luatex@punct@french}{%
     \babel@save\shorthandon
     \babel@save\shorthandoff
     \def\shorthandoff##1{%
        \ifx\PackageWarning\@undefined
          \fb@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{}%
  }
  \addto\extrasfrench{\FB@luatex@punct@french}
  \def\activate@luatexpunct{%
    \directlua{%
      FR_fr = \the\l@french ; FR_ca = \the\l@acadian ;
      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@xetex@punct
   \ifLaTeXe
    \PackageInfo{french.ldf}{No need for active punctuation characters%
                    \MessageBreak with this version of XeTeX!%
                    \MessageBreak reported}
   \else
    \fb@info{No need for active punctuation characters\\
             with this version of XeTeX!}
   \fi
   \newXeTeXintercharclass\FB@punctthick
   \newXeTeXintercharclass\FB@punctthin
   \newXeTeXintercharclass\FB@punctnul
   \newXeTeXintercharclass\FB@guilo
   \newXeTeXintercharclass\FB@guilf
   \newXeTeXintercharclass\FB@guilnul
   \def\FBsavevariable@loop#1#2{\begingroup
     \toks@\expandafter{\originalTeX #1}%
     \edef\x{\endgroup
       \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}%
     \x}
   \def\FB@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@xetex@punct@french}{%
     \babel@savevariable{\XeTeXinterchartokenstate}%
     \babel@save{\shorthandon}%
     \babel@save{\shorthandoff}%
     \bbl@for\FB@char\FB@charlist
          {\FBsavevariable@loop{\XeTeXcharclass}{\FB@char}}%
     \def\shorthandoff##1{%
       \ifx\PackageWarning\@undefined
         \fb@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@punctthick
     \XeTeXinterchartoks \z@ \FB@punctthick = {%
           \ifFB@spacing\ifhmode\FDP@colonspace\fi\fi}%
     \XeTeXinterchartoks \FB@guilf \FB@punctthick = {%
           \ifFB@spacing\FDP@colonspace\fi}%
     \XeTeXinterchartoks \FB@nonchar \FB@punctthick = {%
           \ifFB@spacing
             \ifhmode
               \ifdim\lastskip>1sp
                 \unskip\penalty\@M\FBcolonspace
               \else
                 \FDP@colonspace
               \fi
             \fi
           \fi}%
     \bbl@for\FB@char
             {`\;,`\!,`\?}%
             {\XeTeXcharclass\FB@char=\FB@punctthin}%
     \XeTeXinterchartoks \z@ \FB@punctthin = {%
           \ifFB@spacing\ifhmode\FDP@thinspace\fi\fi}%
     \XeTeXinterchartoks \FB@guilf \FB@punctthin = {%
           \ifFB@spacing\FDP@thinspace\fi}%
     \XeTeXinterchartoks \FB@nonchar \FB@punctthin = {%
           \ifFB@spacing
             \ifhmode
               \ifdim\lastskip>1sp
                 \unskip\penalty\@M\FBthinspace
               \else
                 \FDP@thinspace
               \fi
             \fi
           \fi}%
     \XeTeXinterchartoks \FB@guilo \z@ = {%
           \ifFB@spacing\FB@guillspace\fi}%
     \XeTeXinterchartoks \FB@guilo \FB@nonchar = {%
           \ifFB@spacing\FB@guillspace\ignorespaces\fi}%
     \XeTeXinterchartoks \z@ \FB@guilf = {%
           \ifFB@spacing\FB@guillspace\fi}%
     \XeTeXinterchartoks \FB@punctthin \FB@guilf = {%
           \ifFB@spacing\FB@guillspace\fi}%
     \XeTeXinterchartoks \FB@nonchar \FB@guilf = {%
           \ifFB@spacing\unskip\FB@guillspace\fi}%
     \bbl@for\FB@char
             {`\[,`\(,"A0,"202F}%
             {\XeTeXcharclass\FB@char=\FB@punctnul}%
     \bbl@for\FB@char
             {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
             {\XeTeXcharclass\FB@char=\z@}%
   }
   \addto\extrasfrench{\FB@xetex@punct@french}
\fi
\ifFB@active@punct
  \initiate@active@char{:}%
  \initiate@active@char{;}%
  \initiate@active@char{!}%
  \initiate@active@char{?}%
  \declare@shorthand{french}{;}{%
    \ifFB@spacing
      \ifhmode
        \ifdim\lastskip>1sp
          \unskip\penalty\@M\FBthinspace
        \else
          \FDP@thinspace
        \fi
      \fi
    \fi
    \string;}
  \declare@shorthand{french}{!}{%
    \ifFB@spacing
      \ifhmode
        \ifdim\lastskip>1sp
          \unskip\penalty\@M\FBthinspace
        \else
          \FDP@thinspace
        \fi
      \fi
    \fi
    \string!}
  \declare@shorthand{french}{?}{%
    \ifFB@spacing
      \ifhmode
        \ifdim\lastskip>1sp
          \unskip\penalty\@M\FBthinspace
        \else
          \FDP@thinspace
        \fi
      \fi
    \fi
    \string?}
  \declare@shorthand{french}{:}{%
    \ifFB@spacing
      \ifhmode
        \ifdim\lastskip>1sp
          \unskip\penalty\@M\FBcolonspace
        \else
          \FDP@colonspace
        \fi
      \fi
    \fi
    \string:}
  \declare@shorthand{system}{:}{\string:}
  \declare@shorthand{system}{!}{\string!}
  \declare@shorthand{system}{?}{\string?}
  \declare@shorthand{system}{;}{\string;}
  \addto\extrasfrench{\languageshorthands{french}%
    \bbl@activate{:}\bbl@activate{;}%
    \bbl@activate{!}\bbl@activate{?}%
  }
  \addto\noextrasfrench{%
    \bbl@deactivate{:}\bbl@deactivate{;}%
    \bbl@deactivate{!}\bbl@deactivate{?}%
  }
\fi
\newif\ifFBAutoSpacePunctuation  \FBAutoSpacePunctuationtrue
\def\autospace@beforeFDP{%
  \ifFB@luatex@punct\FB@addDPspace=1 \fi
  \def\FDP@thinspace{\penalty\@M\FBthinspace}%
  \def\FDP@colonspace{\penalty\@M\FBcolonspace}}
\def\noautospace@beforeFDP{%
  \ifFB@luatex@punct\FB@addDPspace=0 \fi
  \let\FDP@thinspace\@empty
  \let\FDP@colonspace\@empty}
\ifLaTeXe
  \def\AutoSpaceBeforeFDP{\autospace@beforeFDP
                          \FBAutoSpacePunctuationtrue}
  \def\NoAutoSpaceBeforeFDP{\noautospace@beforeFDP
                            \FBAutoSpacePunctuationfalse}
  \AtEndOfPackage{\AutoSpaceBeforeFDP}
\else
  \let\AutoSpaceBeforeFDP\autospace@beforeFDP
  \let\NoAutoSpaceBeforeFDP\noautospace@beforeFDP
  \AutoSpaceBeforeFDP
\fi
\ifLaTeXe
  \DeclareRobustCommand\ttfamilyFB{\FB@spacing@off \ttfamilyORI}
  \DeclareRobustCommand\rmfamilyFB{\FB@spacing@on  \rmfamilyORI}
  \DeclareRobustCommand\sffamilyFB{\FB@spacing@on  \sffamilyORI}
\fi
\DeclareRobustCommand*{\NoAutoSpacing}{%
  \FB@spacing@off
  \ifFB@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*{\FB@guillspace}{\penalty\@M\FBguillspace}
\newcommand*{\FBgspchar}{\char"A0\relax}
\newif\ifFBucsNBSP
\ifFB@luatex@punct
  \DeclareRobustCommand*{\FB@og}{\leavevmode
          \bgroup\FB@spacing=0 \guillemotleft\egroup
          \ifFBucsNBSP\FBgspchar\else\FB@guillspace\fi}
  \DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
          \ifFBucsNBSP\FBgspchar\else\FB@guillspace\fi
          \bgroup\FB@spacing=0 \guillemotright\egroup}
\fi
\ifFB@xetex@punct
  \DeclareRobustCommand*{\FB@og}{\leavevmode
        \bgroup\FB@spacingfalse\guillemotleft\egroup
        \FB@guillspace}
  \DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
        \FB@guillspace
        \bgroup\FB@spacingfalse\guillemotright\egroup}
\fi
\ifFB@active@punct
  \DeclareRobustCommand*{\FB@og}{\leavevmode
        \guillemotleft
        \FB@guillspace}
  \DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
        \FB@guillspace
        \guillemotright}
\fi
\newcommand*{\og}{\@empty}
\newcommand*{\fg}{\@empty}
\ifLaTeXe
  \def\bbl@frenchguillemets{\renewcommand*{\og}{\FB@og}%
                            \renewcommand*{\fg}{\FB@fg\xspace}}
  \renewcommand*{\og}{\textquotedblleft}
  \renewcommand*{\fg}{\ifdim\lastskip>\z@\unskip\fi
                      \textquotedblright\xspace}
\else
  \def\bbl@frenchguillemets{\let\og\FB@og
                            \let\fg\FB@fg}
  \def\og{\textquotedblleft}
  \def\fg{\ifdim\lastskip>\z@\unskip\fi\textquotedblright}
\fi
\addto\extrasfrench{\babel@save\og \babel@save\fg \bbl@frenchguillemets}
\newcommand*{\ogi}{\FB@og}
\newcommand*{\fgi}{\FB@fg}
\newcommand*{\ogii}{\textquotedblleft}
\newcommand*{\fgii}{\textquotedblright}
\newcount\FBguill@level
\newtoks\FBold@everypar
\def\FB@addquote@everypar{%
  \let\FBnew@everypar\everypar
  \FBold@everypar=\expandafter{\the\everypar}%
  \FBnew@everypar={\the\FBold@everypar\FBeverypar@quote}%
  \let\everypar\FBold@everypar
  \let\FB@addquote@everypar\relax
}
\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
\let\FBeverypar@quote\relax
\let\FBeveryline@quote\empty
\ifLaTeXe
  \DeclareRobustCommand\frquote{%
       \@ifstar{\FBcloseguillfalse\fr@quote}%
               {\FBcloseguilltrue\fr@quote}}
\else
  \newcommand\frquote[1]{\fr@quote{#1}}
\fi
\newcommand{\fr@quote}[1]{%
  \leavevmode
  \advance\FBguill@level by \@ne
  \ifcase\FBguill@level
  \or
    \ifx\FBeveryparguill\FBguillnone
    \else
      \def\FBeverypar@quote{\FBeveryparguill\FB@guillspace}%
      \FB@addquote@everypar
    \fi
    \ogi #1\fgi
  \or
    \ifx\FBeverylineguill\FBguillopen
      \def\FBeveryline@quote{\guillemotleft\FB@guillspace}%
      \localleftbox{\FBeveryline@quote}%
      \let\FBeverypar@quote\relax
      \ogi #1\ifFBcloseguill\fgi\fi
    \else
      \ifx\FBeverylineguill\FBguillclose
        \def\FBeveryline@quote{\guillemotright\FB@guillspace}%
        \localleftbox{\FBeveryline@quote}%
        \let\FBeverypar@quote\relax
        \ogi #1\ifFBcloseguill\fgi\fi
      \else
        \let\FBeverypar@quote\relax
        \ifFBInnerGuillSingle
          \def\ogii{\leavevmode
                    \guilsinglleft\FB@guillspace}%
          \def\fgii{\ifdim\lastskip>\z@\unskip\fi
                    \FB@guillspace\guilsinglright}%
          \ifx\FBeveryparguill\FBguillopen
            \def\FBeverypar@quote{\guilsinglleft\FB@guillspace}%
          \fi
          \ifx\FBeveryparguill\FBguillclose
            \def\FBeverypar@quote{\guilsinglright\FB@guillspace}%
          \fi
        \fi
        \ogii #1\ifFBcloseguill \fgii \fi
      \fi
    \fi
  \else
    \ifx\PackageWarning\@undefined
      \fb@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@level by \m@ne
  \let\FBeverypar@quote\relax
  \let\FBeveryline@quote\empty
  \ifx\FBeverylineguill\FBguillnone\else\localleftbox{}\fi
}
\def\BabelLanguages{french,acadian}
\StartBabelCommands*{\BabelLanguages}{date}
    [unicode, fontenc=TU 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{\FB@date{\year}{\month}{\day}}
\EndBabelCommands
\newcommand*{\FB@date}[3]{%
  {{\number#3}\ifnum1=#3{\ier}\fi\FBdatespace
  \csname month\romannumeral#2name\endcsname
  \ifx#1\@empty\else\FBdatespace\number#1\fi}}
\newcommand*{\FBdatebox}{\hbox}
\newcommand*{\FBdatespace}{\space}
\newcommand*{\frenchdate}{\FBdatebox\FB@date}
\newcommand*{\acadiandate}{\FBdatebox\FB@date}
\newif\ifFB@poorman
\newdimen\FB@Mht
\ifLaTeXe
  \AtEndOfPackage{\RequirePackage{scalefnt}}
  \newcommand*{\FBsupR}{-0.12}
  \newcommand*{\FBsupS}{0.65}
  \newcommand*{\FB@lc}[1]{\MakeLowercase{#1}}
  \DeclareRobustCommand*{\FB@up@fake}[1]{%
    \settoheight{\FB@Mht}{M}%
    \addtolength{\FB@Mht}{\FBsupR \FB@Mht}%
    \addtolength{\FB@Mht}{-\FBsupS ex}%
    \raisebox{\FB@Mht}{\scalefont{\FBsupS}{\FB@lc{#1}}}%
    }
  \def\FB@split#1#2#3#4\@nil{\def\FB@firstthree{#1#2#3}%
                             \def\FB@suffix{#4}}
  \def\FB@x{x}
  \def\FB@j{j}
  \DeclareRobustCommand*{\FB@up}[1]{%
    \bgroup \FB@poormantrue
      \expandafter\FB@split\f@family\@nil
      \edef\reserved@a{\lowercase{%
         \noexpand\IfFileExists{\f@encoding\FB@firstthree -sup.fd}}}%
      \reserved@a
        {\ifx\FB@suffix\FB@x \FB@poormanfalse\fi
         \ifx\FB@suffix\FB@j \FB@poormanfalse\fi
         \ifFB@poorman \FB@up@fake{#1}%
         \else         \FB@up@real{#1}%
         \fi}%
        {\FB@up@fake{#1}}%
    \egroup}
  \newcommand*{\FB@up@real}[1]{\bgroup
       \fontfamily{\FB@firstthree -sup}\selectfont \FB@lc{#1}\egroup}
  \DeclareRobustCommand*{\fup}[1]{%
    \ifx\realsuperscript\@undefined
      \FB@up{#1}%
    \else
      \bgroup\let\fakesuperscript\FB@up@fake
             \realsuperscript{\FB@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*{\FBmedkern}{\kern+.2em}
\newcommand*{\FBthickkern}{\kern+.3em}
\newcommand*{\FrenchEnumerate}[1]{#1\up{o}\FBthickkern}
\newcommand*{\FrenchPopularEnumerate}[1]{#1\up{o})\FBthickkern}
\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}\FBmedkern}
\DeclareRobustCommand*{\no}{n\up{o}\FBmedkern}
\DeclareRobustCommand*{\Nos}{N\up{os}\FBmedkern}
\DeclareRobustCommand*{\nos}{n\up{os}\FBmedkern}
\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@one{T1}
    \ifx\f@encoding\T@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@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@degree@TSone
                       \global\let\Warning@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@icomma
\newcount\mc@charclass
\newcount\mc@charfam
\newcount\mc@charslot
\newcount\std@mcc
\newcount\dec@mcc
\ifFBLuaTeX
  \mc@charclass=\Umathcharclass`\,
  \newcommand*{\dec@math@comma}{%
    \mc@charfam=\Umathcharfam`\,
    \mc@charslot=\Umathcharslot`\,
    \Umathcode`\,= 0 \mc@charfam \mc@charslot
  }
  \newcommand*{\std@math@comma}{%
    \mc@charfam=\Umathcharfam`\,
    \mc@charslot=\Umathcharslot`\,
    \Umathcode`\,= \mc@charclass \mc@charfam \mc@charslot
  }
\else
  \std@mcc=\mathcode`\,
  \dec@mcc=\std@mcc
  \@tempcnta=\std@mcc
  \divide\@tempcnta by "1000
  \multiply\@tempcnta by "1000
  \advance\dec@mcc by -\@tempcnta
  \newcommand*{\dec@math@comma}{\mathcode`\,=\dec@mcc}
  \newcommand*{\std@math@comma}{\mathcode`\,=\std@mcc}
\fi
\newcommand*{\DecimalMathComma}{%
  \ifFBfrench\dec@math@comma\fi
  \ifFB@icomma\else\addto\extrasfrench{\dec@math@comma}\fi
}
\newcommand*{\StandardMathComma}{%
  \std@math@comma
  \ifFB@icomma\else\addto\extrasfrench{\std@math@comma}\fi
}
\ifLaTeXe
  \AtBeginDocument{\@ifpackageloaded{icomma}%
                      {\FB@icommatrue}%
                      {\addto\noextrasfrench{\std@math@comma}}%
  }
\else
  \addto\noextrasfrench{\std@math@comma}
\fi
\newcommand*{\nombre}[1]{{#1}\fb@warning{*** \noexpand\nombre
                                no longer formats numbers\string! ***}}
\ifFB@luatex@punct
  \activate@luatexpunct
\fi
\let\FBstop@here\relax
\def\FBclean@on@exit{%
  \let\ifLaTeXe\undefined
  \let\LaTeXetrue\undefined
  \let\LaTeXefalse\undefined
  \let\FB@llc\loadlocalcfg
  \let\loadlocalcfg\@gobble}
\ifx\magnification\@undefined
\else
  \def\FBstop@here{%
    \FBclean@on@exit
    \ldf@finish\CurrentOption
    \let\loadlocalcfg\FB@llc
    \endinput}
\fi
\FBstop@here
\renewcommand*{\nombre}[1]{\Warning@nombre{#1}}
\newcommand*{\Warning@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@nombre\relax
     {#1}%
   \fi
}
\newcommand*{\FBthousandsep}{\kern \fontdimen2\font \relax}
\providecommand*{\FBfigtabshape}{\scshape}
\StartBabelCommands*{\BabelLanguages}{captions}
      [unicode, fontenc=TU EU1 EU2, 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}{%
     \partfirst,\partsecond,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@emptypart}{\def\thepart{}}%
     \DeclareRobustCommand*{\FB@partname}{%
        \ifFBPartNameFull
          \csname ordinal\romannumeral\value{part}\endcsname\space
          \partnameord\FB@emptypart
        \else
          Partie%
        \fi}%
    }
   \SetString{\partname}{\FB@partname}
\EndBabelCommands
\newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}}
\bgroup
  \catcode`:=12 \catcode`>=12 \relax
  \long\gdef\STD@makecaption#1#2{%
    \vskip\abovecaptionskip
    \sbox\@tempboxa{#1: #2}%
    \ifdim \wd\@tempboxa >\hsize
      #1: #2\par
    \else
      \global \@minipagefalse
      \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
    \fi
    \vskip\belowcaptionskip}
\egroup
\newif\if@FBwarning@capsep
\ifFB@active@punct\@FBwarning@capseptrue\fi
\newcommand*{\CaptionSeparator}{\space\textendash\space}
\def\FBCaption@Separator{: }
\long\def\FB@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1\FBCaption@Separator #2}%
  \ifdim \wd\@tempboxa >\hsize
    #1\FBCaption@Separator #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\@ifclassloaded{acmart}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{amsart}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{amsbook}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{amsdtx}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{amsldoc}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{amproc}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{smfart}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{smfbook}{\@FBwarning@capsepfalse}{}
\newif\ifFB@koma
\@ifclassloaded{memoir}{\@FBwarning@capsepfalse}{}
\@ifclassloaded{scrartcl}{\@FBwarning@capsepfalse\FB@komatrue}{}
\@ifclassloaded{scrbook}{\@FBwarning@capsepfalse\FB@komatrue}{}
\@ifclassloaded{scrreprt}{\@FBwarning@capsepfalse\FB@komatrue}{}
\@ifclassloaded{beamer}{\@FBwarning@capsepfalse}{}
\ifdefined\@makecaption\else\@FBwarning@capsepfalse\fi
\newcounter{FBcaption@count}
\@ifpackageloaded{caption3}{\addtocounter{FBcaption@count}{4}}{}
\@ifpackageloaded{subcaption}{\addtocounter{FBcaption@count}{2}}{}
\@ifpackageloaded{floatrow}{\stepcounter{FBcaption@count}}{}
\AtBeginDocument{%
  \ifx\@makecaption\STD@makecaption
    \global\let\@makecaption\FB@makecaption
    \ifFBOldFigTabCaptions
    \else
      \def\FBCaption@Separator{\ifFBfrench\space\fi : }%
    \fi
    \ifFBCustomiseFigTabCaptions
       \ifFB@mainlanguage@FR
        \def\FBCaption@Separator{\CaptionSeparator}%
      \fi
    \fi
    \@FBwarning@capsepfalse
  \fi
  \@ifpackageloaded{caption3}{%
    \ifnum\value{FBcaption@count}=0 \@FBwarning@capsepfalse\fi
    }{}%
  \if@FBwarning@capsep
    \ifnum\value{FBcaption@count}>0
      \FBWarning
       {Figures' and tables' captions might look like\MessageBreak
        `Figure 1:' in French instead of `Figure 1 :'.\MessageBreak
        If you have loaded any of the packages caption,\MessageBreak
        subcaption or floatrow BEFORE babel/french,\MessageBreak
        please move them AFTER babel/french.\MessageBreak
        If one of them is loaded by your class,\MessageBreak
        you can still add AFTER babel/french\MessageBreak
        \protect\usepackage[labelsep=period]{caption} or\MessageBreak
        \protect\usepackage[labelsep=endash]{caption} or\MessageBreak
        ... live with it; reported}%
    \else
      \FBWarning
       {Figures' and tables' captions might look like\MessageBreak
        `Figure 1:' in French instead of `Figure 1 :'.\MessageBreak
        If it happens, see your class documentation to\MessageBreak
        fix this issue or add AFTER babel/french\MessageBreak
        \protect\usepackage[labelsep=period]{caption} or\MessageBreak
        \protect\usepackage[labelsep=endash]{caption} or\MessageBreak
        or ... live with it; reported}%
    \fi
  \fi
  \let\FB@makecaption\relax
  \let\STD@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@frenchdots{\babel@save\Tdots@ \let\Tdots@\FBtextellipsis}
\addto\extrasfrench{\bbl@frenchdots}
\ifFB@active@punct
   \@ifpackageloaded{listings}
      {\AtBeginDocument{%
         \FBWarning{Please load the "listings" package\MessageBreak
                    AFTER babel/french; reported}}%
      }{}
\fi
\newif\if@FBwarning@natbib
\ifFB@active@punct
  \@ifpackageloaded{natbib}{}{\@FBwarning@natbibtrue}
\fi
\AtBeginDocument{%
   \if@FBwarning@natbib
     \@ifpackageloaded{natbib}{}{\@FBwarning@natbibfalse}%
   \fi
   \if@FBwarning@natbib
     \FBWarning{Please load the "natbib" package\MessageBreak
                BEFORE babel/french; reported}%
   \fi
}
\newif\if@FBwarning@beamerarticle
\@ifpackageloaded{beamerarticle}{}{\@FBwarning@beamerarticletrue}
\AtBeginDocument{%
   \if@FBwarning@beamerarticle
     \@ifpackageloaded{beamerarticle}{}%
                                     {\@FBwarning@beamerarticlefalse}%
   \fi
   \if@FBwarning@beamerarticle
     \FBWarning{Please load the "beamerarticle" package\MessageBreak
                BEFORE babel/french; reported}%
   \fi
}
\newcommand*{\frenchsetup}[1]{%
  \setkeys{FB}{#1}%
}%
\@onlypreamble\frenchsetup
\let\frenchbsetup\frenchsetup
\@onlypreamble\frenchbsetup
\newif\ifFBShowOptions
\newif\ifFBStandardLayout           \FBStandardLayouttrue
\newif\ifFBGlobalLayoutFrench       \FBGlobalLayoutFrenchtrue
\newif\ifFBReduceListSpacing
\newif\ifFBListOldLayout
\newif\ifFBListItemsAsPar
\newif\ifFBCompactItemize
\newif\ifFBStandardItemizeEnv       \FBStandardItemizeEnvtrue
\newif\ifFBStandardEnumerateEnv     \FBStandardEnumerateEnvtrue
\newif\ifFBStandardItemLabels       \FBStandardItemLabelstrue
\newif\ifFBStandardLists            \FBStandardListstrue
\newif\ifFBIndentFirst
\newif\ifFBFrenchFootnotes
\newif\ifFBAutoSpaceFootnotes
\newif\ifFBOriginalTypewriter
\newif\ifFBThinColonSpace
\newif\ifFBThinSpaceInFrenchNumbers
\newif\ifFBFrenchSuperscripts       \FBFrenchSuperscriptstrue
\newif\ifFBLowercaseSuperscripts    \FBLowercaseSuperscriptstrue
\newif\ifFBPartNameFull             \FBPartNameFulltrue
\newif\ifFBCustomiseFigTabCaptions
\newif\ifFBOldFigTabCaptions
\newif\ifFBSmallCapsFigTabCaptions  \FBSmallCapsFigTabCaptionstrue
\newif\ifFBSuppressWarning
\newif\ifFBINGuillSpace
\ifFB@koma
  \ifdefined\partformat
    \def\FB@partformat@fix{%
           \ifFBPartNameFull
             \babel@save\partformat
             \renewcommand*{\partformat}{\partname}%
           \fi}
    \addto\extrasfrench{\FB@partformat@fix}%
  \fi
\fi
\def\FB@french{french}
\def\FB@acadian{acadian}
\newif\ifFB@mainlanguage@FR
\AtEndOfPackage{%
  \ifx\bbl@main@language\FB@french \FB@mainlanguage@FRtrue
  \else \ifx\bbl@main@language\FB@acadian \FB@mainlanguage@FRtrue \fi
  \fi
  \ifFB@mainlanguage@FR
    \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@key{FB}{ShowOptions}[true]%
          {\csname FBShowOptions#1\endcsname}%
  \define@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@key{FB}{GlobalLayoutFrench}[true]%
          {\csname FBGlobalLayoutFrench#1\endcsname
           \ifFBGlobalLayoutFrench
             \ifFB@mainlanguage@FR
             \else
               \FBGlobalLayoutFrenchfalse
               \PackageWarning{french.ldf}%
                  {Option `GlobalLayoutFrench' skipped:\MessageBreak
                   French is *not* babel's last option.\MessageBreak
                   Reported}%
             \fi
           \fi}%
  \define@key{FB}{ReduceListSpacing}[true]%
          {\csname FBReduceListSpacing#1\endcsname}%
  \define@key{FB}{ListOldLayout}[true]%
          {\csname FBListOldLayout#1\endcsname
           \ifFBListOldLayout
             \FBStandardEnumerateEnvtrue
             \renewcommand*{\FrenchLabelItem}{\textendash}%
           \fi}%
  \define@key{FB}{CompactItemize}[true]%
          {\csname FBCompactItemize#1\endcsname
           \ifFBCompactItemize
             \FBStandardItemizeEnvfalse
             \FBStandardEnumerateEnvfalse
           \else
             \FBStandardItemizeEnvtrue
             \FBStandardEnumerateEnvtrue
           \fi}%
  \define@key{FB}{StandardItemizeEnv}[true]%
          {\csname FBStandardItemizeEnv#1\endcsname}%
  \define@key{FB}{StandardEnumerateEnv}[true]%
          {\csname FBStandardEnumerateEnv#1\endcsname}%
  \define@key{FB}{StandardItemLabels}[true]%
          {\csname FBStandardItemLabels#1\endcsname}%
  \define@key{FB}{ItemLabels}%
          {\renewcommand*{\FrenchLabelItem}{#1}}%
  \define@key{FB}{ItemLabeli}%
          {\renewcommand*{\Frlabelitemi}{#1}}%
  \define@key{FB}{ItemLabelii}%
          {\renewcommand*{\Frlabelitemii}{#1}}%
  \define@key{FB}{ItemLabeliii}%
          {\renewcommand*{\Frlabelitemiii}{#1}}%
  \define@key{FB}{ItemLabeliv}%
          {\renewcommand*{\Frlabelitemiv}{#1}}%
  \define@key{FB}{StandardLists}[true]%
          {\csname FBStandardLists#1\endcsname
           \ifFBStandardLists
             \FBReduceListSpacingfalse
             \FBCompactItemizefalse
             \FBStandardItemizeEnvtrue
             \FBStandardEnumerateEnvtrue
             \FBStandardItemLabelstrue
           \else
             \FBReduceListSpacingtrue
             \FBCompactItemizetrue
             \FBStandardItemizeEnvfalse
             \FBStandardEnumerateEnvfalse
             \FBStandardItemLabelsfalse
           \fi}%
  \define@key{FB}{ListItemsAsPar}[true]%
          {\csname FBListItemsAsPar#1\endcsname}
  \define@key{FB}{IndentFirst}[true]%
          {\csname FBIndentFirst#1\endcsname}%
  \define@key{FB}{FrenchFootnotes}[true]%
          {\csname FBFrenchFootnotes#1\endcsname}%
  \define@key{FB}{AutoSpaceFootnotes}[true]%
          {\csname FBAutoSpaceFootnotes#1\endcsname}%
  \define@key{FB}{AutoSpacePunctuation}[true]%
          {\csname FBAutoSpacePunctuation#1\endcsname}%
  \define@key{FB}{OriginalTypewriter}[true]%
          {\csname FBOriginalTypewriter#1\endcsname}%
  \define@key{FB}{ThinColonSpace}[true]%
          {\csname FBThinColonSpace#1\endcsname
           \ifFBThinColonSpace
             \renewcommand*{\FBcolonspace}{\FBthinspace}%
           \fi}%
  \define@key{FB}{ThinSpaceInFrenchNumbers}[true]%
          {\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
  \define@key{FB}{FrenchSuperscripts}[true]%
          {\csname FBFrenchSuperscripts#1\endcsname}
  \define@key{FB}{LowercaseSuperscripts}[true]%
          {\csname FBLowercaseSuperscripts#1\endcsname}
  \define@key{FB}{PartNameFull}[true]%
          {\csname FBPartNameFull#1\endcsname}%
  \define@key{FB}{CustomiseFigTabCaptions}[true]%
          {\csname FBCustomiseFigTabCaptions#1\endcsname}%
  \define@key{FB}{OldFigTabCaptions}[true]%
          {\csname FBOldFigTabCaptions#1\endcsname
           \ifFBOldFigTabCaptions
             \def\FB@capsep@fix{\babel@save\FBCaption@Separator
                    \def\FBCaption@Separator{\CaptionSeparator}}%
             \addto\extrasfrench{\FB@capsep@fix}%
             \ifdefined\extrasacadian
               \addto\extrasacadian{\FB@capsep@fix}%
             \fi
           \fi}%
  \define@key{FB}{SmallCapsFigTabCaptions}[true]%
          {\csname FBSmallCapsFigTabCaptions#1\endcsname
           \ifFBSmallCapsFigTabCaptions
             \let\FBfigtabshape\scshape
           \else
             \let\FBfigtabshape\relax
           \fi}%
  \define@key{FB}{SuppressWarning}[true]%
          {\csname FBSuppressWarning#1\endcsname
           \ifFBSuppressWarning
             \renewcommand{\FBWarning}[1]{}%
           \fi}%
  \define@key{FB}{INGuillSpace}[true]%
          {\csname FBINGuillSpace#1\endcsname
           \ifFBINGuillSpace
             \renewcommand*{\FBguillspace}{\space}%
           \fi}%
  \define@key{FB}{InnerGuillSingle}[true]%
          {\csname FBInnerGuillSingle#1\endcsname}%
  \define@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
                       \FBWarning{Wrong value for `EveryParGuill':
                                  try `open',\MessageBreak
                                  `close' or `none'. Reported}%
                     \fi
                \fi
           \fi}%
  \define@key{FB}{EveryLineGuill}[open]%
          {\ifFB@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@key{FB}{UnicodeNoBreakSpaces}[true]%
          {\ifFB@luatex@punct
             \csname FBucsNBSP#1\endcsname
             \ifFBucsNBSP \FB@ucsNBSP=1 \fi
           \else
             \FBWarning{Option `UnicodeNoBreakSpaces' skipped:%
                        \MessageBreak this option is for
                        LuaTeX *only*.\MessageBreak Reported}%
           \fi
          }%
  \def\FB@parse#1#2\endparse{\def\FB@second{#2}}%
  \define@key{FB}{og}%
          {\ifFBunicode
             \ifFB@luatex@punct
               \FB@addGUILspace=1 \relax
             \fi
             \ifFB@xetex@punct
               \XeTeXcharclass"13   = \FB@guilo
               \XeTeXcharclass"AB   = \FB@guilo
               \XeTeXcharclass"A0   = \FB@guilnul
               \XeTeXcharclass"202F = \FB@guilnul
             \fi
             \ifFB@active@punct
               \FBWarning{Option og=« not supported with this version
                          of\MessageBreak LuaTeX/XeTeX; reported}%
             \fi
           \else
             \newcommand*{\FB@@og}{%
                \ifFBfrench
                  \ifFB@spacing\FB@og\ignorespaces
                  \else\guillemotleft
                  \fi
                \else\guillemotleft\fi}%
             \AtBeginDocument{%
                \ifdefined\uc@dclc
                  \uc@dclc{171}{default}{\FB@@og}%
                \else
                  \FB@parse#1\endparse
                  \ifx\FB@second\@empty
                    \ifdefined\mule@def
                      \mule@def{11}{\FB@@og}%
                    \else
                      \ifdefined\DeclareInputText
                        \@tempcnta`#1\relax
                        \DeclareInputText{\the\@tempcnta}{\FB@@og}%
                      \else
                        \FBWarning{Option `og' requires package
                                   inputenc;\MessageBreak reported}%
                      \fi
                    \fi
                  \else
                    \DeclareUnicodeCharacter{00AB}{\FB@@og}%
                  \fi
                \fi}%
           \fi
          }%
  \define@key{FB}{fg}%
          {\ifFBunicode
             \ifFB@luatex@punct
               \FB@addGUILspace=1 \relax
             \fi
             \ifFB@xetex@punct
               \XeTeXcharclass"14   = \FB@guilf
               \XeTeXcharclass"BB   = \FB@guilf
               \XeTeXcharclass"A0   = \FB@guilnul
               \XeTeXcharclass"202F = \FB@guilnul
             \fi
             \ifFB@active@punct
               \FBWarning{Option fg=» not supported with this version
                          of\MessageBreak LuaTeX/XeTeX; reported}%
             \fi
           \else
             \newcommand*{\FB@@fg}{%
                \ifFBfrench
                  \ifFB@spacing\FB@fg
                  \else\guillemotright
                  \fi
                \else\guillemotright\fi}%
             \AtBeginDocument{%
                \ifdefined\uc@dclc
                  \uc@dclc{187}{default}{\FB@@fg}%
                \else
                  \FB@parse#1\endparse
                  \ifx\FB@second\@empty
                    \ifdefined\mule@def
                      \mule@def{27}{{\FB@@fg}}%
                    \else
                      \ifdefined\DeclareInputText
                        \@tempcnta`#1\relax
                        \DeclareInputText{\the\@tempcnta}{\FB@@fg}%
                      \else
                        \FBWarning{Option `fg' requires package
                                   inputenc;\MessageBreak reported}%
                      \fi
                    \fi
                  \else
                    \DeclareUnicodeCharacter{00BB}{\FB@@fg}%
                  \fi
                \fi}%
           \fi
          }%
}
\newcommand*{\FBprocess@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@ufl{\update@frenchlists}
  \ifFB@mainlanguage@FR
    \update@frenchlists
  \fi
  \ifFBAutoSpacePunctuation
    \autospace@beforeFDP
  \else
    \noautospace@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@autolanguage
       \providecommand*{\npstylefrench}{}%
       \ifFBThinSpaceInFrenchNumbers
         \renewcommand*{\FBthousandsep}{\,}%
       \fi
       \g@addto@macro\npstylefrench{\npthousandsep{\FBthousandsep}}%
     \fi
    }{}%
  \ifFBFrenchSuperscripts
    \DeclareRobustCommand*{\up}{\@ifstar{\FB@up@fake}{\fup}}%
  \else
    \DeclareRobustCommand*{\up}{\@ifstar{\FB@up@fake}%
                                        {\textsuperscript}}%
  \fi
  \ifFBLowercaseSuperscripts
  \else
    \renewcommand*{\FB@lc}[1]{##1}%
  \fi
  \ifFBCustomiseFigTabCaptions
    \ifFB@koma
      \renewcommand*{\captionformat}{\CaptionSeparator}%
    \fi
    \@ifclassloaded{memoir}%
       {\captiondelim{\CaptionSeparator}}{}%
    \@ifclassloaded{beamer}%
       {\defbeamertemplate{caption label separator}{FBcustom}{%
            \CaptionSeparator}%
        \setbeamertemplate{caption label separator}[FBcustom]}{}%
  \else
    \ifFB@koma
      \renewcommand*{\captionformat}{{\autospace@beforeFDP : }}%
    \fi
    \@ifclassloaded{memoir}%
       {\captiondelim{{\autospace@beforeFDP : }}%
       }{}%
    \@ifclassloaded{beamer}%
       {\defbeamertemplate{caption label separator}{FBcolon}{%
             {\autospace@beforeFDP : }}%
        \setbeamertemplate{caption label separator}[FBcolon]%
       }{}%
  \fi
  \ifFBShowOptions
    \GenericWarning{* }{%
     ***** List of possible options for babel-french ****\MessageBreak
     [Default values between brackets when french is loaded *LAST*]%
     \MessageBreak
     ShowOptions=true [false]\MessageBreak
     StandardLayout=true [false]\MessageBreak
     GlobalLayoutFrench=false [true]\MessageBreak
     PartNameFull=false [true]\MessageBreak
     IndentFirst=false [true]\MessageBreak
     ListItemsAsPar=true [false]\MessageBreak
     ReduceListSpacing=false [true]\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
     StandardLists=true [false]\MessageBreak
     ListOldLayout=true [false]\MessageBreak
     CompactItemize=false [true]\MessageBreak
     FrenchFootnotes=false [true]\MessageBreak
     AutoSpaceFootnotes=false [true]\MessageBreak
     AutoSpacePunctuation=false [true]\MessageBreak
     ThinColonSpace=true [false]\MessageBreak
     OriginalTypewriter=true [false]\MessageBreak
     UnicodeNoBreakSpaces=true [false]\MessageBreak
     og= <left quote character>, fg= <right quote character>%
     INGuillSpace=true [false]\MessageBreak
     EveryParGuill=open, close, none [open]\MessageBreak
     EveryLineGuill=open, close, none
                   [open in LuaTeX, none otherwise]\MessageBreak
     InnerGuillSingle=true [false]\MessageBreak
     ThinSpaceInFrenchNumbers=true [false]\MessageBreak
     SmallCapsFigTabCaptions=false [true]\MessageBreak
     CustomiseFigTabCaptions=false [true]\MessageBreak
     OldFigTabCaptions=true [false]\MessageBreak
     FrenchSuperscripts=false [true]\MessageBreak
     LowercaseSuperscripts=false [true]\MessageBreak
     SuppressWarning=true [false]\MessageBreak
     \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@og{\guillemotleft\space}%
        \def\FB@fg{\space\guillemotright}%
        \def\at{@}%
        \def\circonflexe{\string^}%
        \def\tild{\string~}%
        \def\boi{\textbackslash}%
        \let\bsc\textsc
      }%
   \fi
   \FBprocess@options
   \ifFBucsNBSP
     \renewcommand*{\FBmedkern}{\char"202F\relax}%
     \renewcommand*{\FBthickkern}{\char"A0\relax}%
     \ifFBThinSpaceInFrenchNumbers
       \renewcommand*{\FBthousandsep}{\char"202F\relax}%
     \else
       \renewcommand*{\FBthousandsep}{\char"A0\relax}%
     \fi
   \fi
   \begingroup
     \newcommand{\FBOTone}{OT1}%
     \ifx\encodingdefault\FBOTone
       \FBWarning{OT1 encoding should not be used for French.%
                  \MessageBreak
                  Add \protect\usepackage[T1]{fontenc} to the
                  preamble\MessageBreak of your document; reported}%
     \fi
   \endgroup
}
\let\listORI\list
\let\endlistORI\endlist
\def\FB@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@listVsettings #2}}
\let\endlistFB\endlist
\newcommand*{\FrenchLabelItem}{\textemdash}
\newcommand*{\Frlabelitemi}{\FrenchLabelItem}
\newcommand*{\Frlabelitemii}{\FrenchLabelItem}
\newcommand*{\Frlabelitemiii}{\FrenchLabelItem}
\newcommand*{\Frlabelitemiv}{\FrenchLabelItem}
\newdimen\listindentFB
\setlength{\listindentFB}{-1pt}
\newdimen\descindentFB
\setlength{\descindentFB}{-1pt}
\newdimen\labelindentFB
\setlength{\labelindentFB}{-1pt}
\newdimen\labelwidthFB
\setlength{\labelwidthFB}{-1pt}
\newdimen\leftmarginFB
\def\FB@listHsettings{%
  \ifFBListItemsAsPar
    \itemindent=\labelindentFB
    \advance\itemindent by \labelwidthFB
    \advance\itemindent by \labelsep
    \leftmargini\z@
    \bbl@for\FB@dp {2, 3, 4, 5, 6}%
      {\csname leftmargin\romannumeral\FB@dp\endcsname=\labelindentFB}%
  \else
    \leftmarginFB=\labelwidthFB
    \advance\leftmarginFB by \labelsep
    \bbl@for\FB@dp {1, 2, 3, 4, 5, 6}%
      {\csname leftmargin\romannumeral\FB@dp\endcsname=\leftmarginFB}%
    \advance\leftmargini by \listindentFB
  \fi
  \leftmargin=\csname leftmargin\ifnum\@listdepth=\@ne i\else
                                                      ii\fi\endcsname
}
\def\FB@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@listHsettings
    \fi
}
\def\itemizeFB{%
    \ifnum \@itemdepth >\thr@@\@toodeep\else
      \advance\@itemdepth by \@ne
      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
      \expandafter
      \listORI
      \csname\@itemitem\endcsname
      \FB@itemizesettings
    \fi
}
\let\enditemizeFB\endlistORI
\def\setlabelitemsFB{%
  \let\labelitemi\Frlabelitemi
  \let\labelitemii\Frlabelitemii
  \let\labelitemiii\Frlabelitemiii
  \let\labelitemiv\Frlabelitemiv
  \ifdim\labelwidthFB<\z@
    \settowidth{\labelwidthFB}{\FrenchLabelItem}%
  \fi
}
\def\setlistindentFB{%
  \ifdim\labelindentFB<\z@
    \ifdim\parindent=\z@
      \setlength{\labelindentFB}{1.5em}%
    \else
      \setlength{\labelindentFB}{\parindent}%
    \fi
  \fi
  \ifdim\listindentFB<\z@
    \ifdim\parindent=\z@
      \setlength{\listindentFB}{1.5em}%
    \else
      \setlength{\listindentFB}{\parindent}%
    \fi
  \fi
  \ifdim\descindentFB<\z@
    \ifFBListItemsAsPar
      \setlength{\descindentFB}{\labelindentFB}%
    \else
      \setlength{\descindentFB}{\listindentFB}%
    \fi
  \fi
}
\def\enumerateFB{%
  \ifnum \@enumdepth >\thr@@\@toodeep\else
    \advance\@enumdepth by \@ne
    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
    \expandafter
    \list
      \csname label\@enumctr\endcsname
      {\FB@listHsettings
       \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
  \fi
}
\let\endenumerateFB\endlistORI
\def\descriptionFB{%
      \list{}{\FB@listHsettings
              \labelwidth=\z@
              \ifFBListItemsAsPar
                \itemindent=\descindentFB
              \else
                \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
              \fi
              \let\makelabel\descriptionlabel}%
}
\let\enddescriptionFB\endlistORI
\def\update@frenchlists{%
  \setlistindentFB
  \ifFBReduceListSpacing \let\list\listFB \fi
  \ifFBStandardItemizeEnv
  \else \let\itemize\itemizeFB \fi
  \ifFBStandardItemLabels
  \else \setlabelitemsFB \fi
  \ifFBStandardEnumerateEnv
  \else \let\enumerate\enumerateFB \let\description\descriptionFB \fi
}
\def\FB@ufl{\relax}
\def\bbl@frenchlistlayout{%
  \ifFBGlobalLayoutFrench
  \else
    \babel@save\list         \babel@save\itemize
    \babel@save\enumerate    \babel@save\description
    \babel@save\labelitemi   \babel@save\labelitemii
    \babel@save\labelitemiii \babel@save\labelitemiv
    \FB@ufl
  \fi
}
\addto\extrasfrench{\bbl@frenchlistlayout}
\def\bbl@frenchindent{%
  \ifFBGlobalLayoutFrench
  \else
    \babel@save\@afterindentfalse
  \fi
  \ifFBIndentFirst
    \let\@afterindentfalse\@afterindenttrue
    \@afterindenttrue
  \fi}
\def\bbl@nonfrenchindent{%
  \ifFBGlobalLayoutFrench
    \ifFBIndentFirst
      \@afterindenttrue
    \fi
  \fi}
\addto\extrasfrench{\bbl@frenchindent}
\addto\noextrasfrench{\bbl@nonfrenchindent}
\AtBeginDocument{\@ifpackageloaded{bigfoot}%
                   {\PackageInfo{french.ldf}%
                     {bigfoot package in use.\MessageBreak
                      babel-french 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}
\newdimen\FBfnindent
\ifFB@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}
\providecommand\localleftbox[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@koma
         \let\@@makefnmarkORI\@@makefnmark
         \long\def\@makefntext#1{%
           \localleftbox{}%
           \let\FBeverypar@save\FBeverypar@quote
           \let\FBeverypar@quote\relax
           \ifFBFrenchFootnotes
             \ifx\footnote\thanks
               \let\@@makefnmark\@@makefnmarkTH
               \@makefntextTH{#1}
             \else
               \let\@@makefnmark\@@makefnmarkFB
               \@makefntextFB{#1}
             \fi
           \else
             \let\@@makefnmark\@@makefnmarkORI
             \@makefntextORI{#1}%
           \fi
           \let\FBeverypar@quote\FBeverypar@save
           \localleftbox{\FBeveryline@quote}}%
       \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{%
           \localleftbox{}%
           \let\FBeverypar@save\FBeverypar@quote
           \let\FBeverypar@quote\relax
           \ifFBFrenchFootnotes
             \@makefntextFB{#1}%
           \else
             \@makefntextORI{#1}%
           \fi
           \let\FBeverypar@quote\FBeverypar@save
           \localleftbox{\FBeveryline@quote}}%
       \fi
    }%
}
\newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue}
\newcommand*{\FrenchFootnotes}{\FBFrenchFootnotestrue}
\newcommand*{\StandardFootnotes}{\FBFrenchFootnotesfalse}
\FBclean@on@exit
\ldf@finish\CurrentOption
\let\loadlocalcfg\FB@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'.
