texlive[44270] Master/texmf-dist: babel-french (8may17)

commits+karl at tug.org commits+karl at tug.org
Tue May 9 23:16:56 CEST 2017


Revision: 44270
          http://tug.org/svn/texlive?view=revision&revision=44270
Author:   karl
Date:     2017-05-09 23:16:56 +0200 (Tue, 09 May 2017)
Log Message:
-----------
babel-french (8may17)

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

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-05-09 21:16:40 UTC (rev 44269)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2017-05-09 21:16:56 UTC (rev 44270)
@@ -1,4 +1,4 @@
-%\CheckSum{3472}
+%\CheckSum{3486}
 %
 %\iffalse
 %    Tell the \LaTeX\ system who we are and write an entry on the
@@ -7,13 +7,13 @@
 \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.}
+%    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/01/30 v3.2g French support from the babel system]
+         [2017/04/30 v3.3a French support from the babel system]
 %</!lua>
 %<*internal>
 \iffalse
@@ -20,7 +20,7 @@
 %</internal>
 %<*lua>
 --
---  File `frenchb.lua' generated from frenchb.dtx [2017/01/30 v3.2g]
+--  File `frenchb.lua’ generated from frenchb.dtx [2017/04/30 v3.3a]
 --
 --  Copyright © 2014-2017 Daniel Flipo
 --  <daniel (dot) flipo (at) free (dot) fr>
@@ -32,11 +32,11 @@
 %</internal>
 %<*dtx>
 %%
-%%  File `frenchb.dtx'
+%%  File `frenchb.dtx’
 %</dtx>
 %<*ldf>
 %%
-%%  File `frenchb.ldf'
+%%  File `frenchb.ldf’
 %</ldf>
 %<*dtx|ldf>
 %%  Babel package for LaTeX version 2e
@@ -53,15 +53,17 @@
 \documentclass[a4paper]{ltxdoc}
 \usepackage[left=42mm,right=42mm,top=40mm,bottom=40mm]{geometry}
 \usepackage[utf8]{inputenc}
-\usepackage{array,textcomp}
-\usepackage{bera}
-\usepackage[pdftex,dvipsnames]{xcolor}
+\usepackage{bera,textcomp}
+\renewcommand{\rmdefault}{fvs}
+\usepackage{array}
+\usepackage[dvipsnames]{xcolor}
 \def\PrintMacroName#1{%
   \strut\MacroFont\color{Sepia}\normalsize\string#1}
 \usepackage[expansion=true,protrusion=true]{microtype}
 \def\ColorArg{\color{PineGreen}}
 \usepackage{url}
-\usepackage[colorlinks,urlcolor=blue,unicode]{hyperref}
+\usepackage{hypdoc}
+\hypersetup{colorlinks,urlcolor=blue,unicode}
 \newcommand*\babel{\textsf{babel}}
 \newcommand*\frenchb{\textsf{babel-french}}
 \newcommand*\Lopt[1]{\texttt{#1}}
@@ -71,15 +73,15 @@
 \newcommand*\pkg[1]{\texttt{#1}}
 \newcommand*\env[1]{\texttt{#1}}
 \newcommand*\fbo[1]{\texttt{\ColorArg #1}}
-\newcommand*\fbsetup[1]{\cs{frenchbsetup\{\fbo{#1}\}}}
+\newcommand*\fbsetup[1]{\cs{frenchsetup\{\fbo{#1}\}}}
 \renewcommand*\descriptionlabel[1]{%
    \hspace\labelsep \normalfont \fbo{#1}}
 \providecommand*\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
-\makeatletter
-\newcommand*{\FBguillspace}{\penalty\@M\hskip.8\fontdimen2\font
-                                         plus.3\fontdimen3\font
-                                        minus.8\fontdimen4\font}
-\makeatother
+\let\up\textsuperscript
+\newcommand*{\FRguillspace}{\penalty 10000
+                            \hskip.8\fontdimen2\font
+                              plus.3\fontdimen3\font
+                             minus.8\fontdimen4\font}
 \hyphenation{Lua-TeX Lua-LaTeX Xe-LaTeX}
 \lefthyphenmin=2 \righthyphenmin=3
 \RecordChanges
@@ -87,10 +89,11 @@
    \clearpage
    \section{Change History}%
    \GlossaryPrologue{}%
+   Changes are listed in reverse order (latest first) and limited to
+   \frenchb{}~v3.
    \PrintChanges
 }
 \begin{document}
-\sffamily
 \setlength{\parindent}{0pt}
 \GetFileInfo{frenchb.dtx}
 \begin{center}
@@ -117,7 +120,7 @@
 %
 %    Customisation for the French language is achieved following the
 %    book ``Lexique des règles typographiques en usage à
-%    l'Imprimerie Nationale'' troisième édition (1994),
+%    l’Imprimerie Nationale’’ troisième édition (1994),
 %    ISBN-2-11-081075-0.
 %
 %    First version released: 1.1 (May 1996) as part of
@@ -142,14 +145,14 @@
 %  \subsection{Basic interface}
 %
 %    In a multilingual document, some typographic rules are language
-%    dependent, i.e.\ spaces before `high punctuation' (|:| |;| |!|
+%    dependent, i.e.\ spaces before `high punctuation’ (|:| |;| |!|
 %    |?|) in French, others modify the general layout (i.e.\ layout of
 %    lists, footnotes, indentation of first paragraphs of sections) and
 %    should apply to the whole document.
 %
-%    \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
+%    \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
 %    layout of the document (even in parts where French is the current
 %    language): the layout of lists, footnotes, indentation of first
 %    paragraphs of sections are not customised by \frenchb.
@@ -164,16 +167,16 @@
 %    \begin{enumerate}
 %    \item the first paragraph of each section is indented
 %          (\LaTeX{} only);
-%    \item the default items in itemize environment are set to `---'
-%          instead of `\textbullet', and all vertical spacing and glue
-%          is deleted; it is possible to change `---' to something else
-%          (`--' for instance) using \fbsetup{} (see
+%    \item the default items in itemize environment are set to `---’
+%          instead of `\textbullet’, and all vertical spacing and glue
+%          is deleted; it is possible to change `---’ to something else
+%          (`--’ for instance) using \fbsetup{} (see
 %          section~\ref{ssec-custom} p.~\pageref{ssec-custom});
 %    \item vertical spacing in general \LaTeX{} lists is
 %          shortened;
-%    \item footnotes are displayed ``à la française''.
+%    \item footnotes are displayed ``à la française’’.
 %    \item the separator following the table or figure number in
-%          captions is printed as `~--~' instead of `:~'; for changing
+%          captions is printed as `~--~’ instead of `:~’; for changing
 %          this see~\ref{sssec-captions} p.~\pageref{sssec-captions}.
 %    \end{enumerate}
 %
@@ -184,10 +187,10 @@
 %    with the following effects:
 %    \begin{enumerate}
 %    \item French hyphenation patterns are made active;
-%    \item `high punctuation' characters (|:| |;| |!| |?|)
+%    \item `high punctuation’ characters (|:| |;| |!| |?|)
 %           automatically add correct spacing in French; this is
-%           achieved using callbacks in Lua(La)TeX or `XeTeXinterchar'
-%           mechanism in Xe(La)TeX; with TeX'82 and pdf(La)TeX these
+%           achieved using callbacks in Lua(La)TeX or `XeTeXinterchar’
+%           mechanism in Xe(La)TeX; with TeX’82 and pdf(La)TeX these
 %           four characters are made active in the whole document;
 %    \item |\today| prints the date in French;
 %    \item the caption names are translated into French
@@ -211,7 +214,7 @@
 %          option \fbo{og=«, fg=»} p.~\pageref{option-og-fg}.
 %
 %          |\og| and |\fg| can be used outside French, they typeset
-%          then English quotes `` and ''.
+%          then English quotes `` and ’’.
 %
 %          A new command |\frquote{}| has been added in version~3.1 to
 %          enter French quotations.  |\frquote{|\textit{texte}|}| is
@@ -224,13 +227,13 @@
 %          \fbo{=none}, see p.~\pageref{everyparguill}.\label{frquote}
 %
 %          |\frquote| is recommended to enter embedded quotations ``à la
-%          française'', several variants are provided through options.
+%          française’’, several variants are provided through options.
 %          \begin{itemize}
 %          \item with all engines: the inner quotation
-%            is surrounded by double quotes (``\textit{texte}'')
+%            is surrounded by double quotes (``\textit{texte}’’)
 %            unless option \fbo{InnerGuillSingle=true}, then
 %            a) the inner quotation is printed as
-%            \guilsinglleft\FBguillspace\textit{texte}\FBguillspace
+%            \guilsinglleft\FRguillspace\textit{texte}\FRguillspace
 %            \guilsinglright{} and b) if the inner quotation
 %            spreads over more than one paragraph, every paragraph
 %            included in the inner quotation starts with
@@ -251,13 +254,13 @@
 %          which end together with the outer one: using |\frquote*| for
 %          the inner quotation will print only one closing quote
 %          character (the outer one) as recommended by the French
-%          `Imprimerie Nationale'.
+%          `Imprimerie Nationale’.
 %
 %    \item A command |\up| is provided to typeset superscripts like
-%          |M\up{me}| (abbreviation for ``Madame''), |1\up{er}| (for
-%          ``premier'').  Other commands are also provided for
+%          |M\up{me}| (abbreviation for ``Madame’’), |1\up{er}| (for
+%          ``premier’’).  Other commands are also provided for
 %          ordinals: |\ier|, |\iere|, |\iers|, |\ieres|, |\ieme|,
-%          |\iemes| (|3\iemes| prints 3\textsuperscript{es}).
+%          |\iemes| (|3\iemes| prints 3\up{es}).
 %          All these commands take advantage of real superscript
 %          letters when they are available in the current font.
 %
@@ -269,19 +272,17 @@
 %          hyphens, this differs from \frenchb~v.~1.x.
 %
 %    \item Commands |\primo|, |\secundo|, |\tertio| and |\quarto|
-%          print 1\textsuperscript{o}, 2\textsuperscript{o},
-%          3\textsuperscript{o}, 4\textsuperscript{o}.
-%          |\FrenchEnumerate{6}| prints 6\textsuperscript{o}.
-%    \item Abbreviations for ``Numéro(s)'' and ``numéro(s)''
-%          (N\textsuperscript{o} N\textsuperscript{os}
-%          n\textsuperscript{o} and n\textsuperscript{os}~)
-%          are obtained via the commands |\No|, |\Nos|, |\no|, |\nos|.
+%          print 1\up{o}, 2\up{o}, 3\up{o}, 4\up{o}.
+%          |\FrenchEnumerate{6}| prints 6\up{o}.
+%    \item Abbreviations for ``Numéro(s)’’ and ``numéro(s)’’
+%          (N\up{o} N\up{os} n\up{o} and n\up{os}~) are obtained
+%          via the commands |\No|, |\Nos|, |\no|, |\nos|.
 %
 %    \item Two commands are provided to typeset the symbol for
-%          ``degré'': |\degre| prints the raw character and
+%          ``degré’’: |\degre| prints the raw character and
 %          |\degres| should be used to typeset temperatures (e.g.,
-%          ``|20~\degres C|'' with an nobreak space), or for
-%          alcohols'' strengths (e.g., ``|45\degres|'' with \emph{no}
+%          ``|20~\degres C|’’ with an nobreak space), or for
+%          alcohols’’ strengths (e.g., ``|45\degres|’’ with \emph{no}
 %          space in French).
 %
 %    \item In math mode the comma has to be surrounded with
@@ -308,7 +309,7 @@
 %          |\usepackage{xspace}| in the preamble will force macros like
 %          |\fg|, |\ier|, |\ieme|, |\dots|, \dots, to respect the
 %          spaces you type after them, for instance typing
-%          `|1\ier juin|' will print `1\textsuperscript{er} juin'
+%          `|1\ier juin|’ will print `1\up{er} juin’
 %           (no need for a forced space after |1\ier|).
 %    \end{enumerate}
 %
@@ -315,223 +316,233 @@
 %  \subsection{Customisation}
 %  \label{ssec-custom}
 %
-%     Customisation of \frenchb{} relies on command \fbsetup{},
-%     options are entered  using the \file{keyval} syntax.
-%     The command \fbsetup{} is to appear in the preamble only
-%     (after loading \babel).
+%    Customisation of \frenchb{} relies on command \fbsetup{}
+%    (formerly called |\frenchbsetup{}|, the latter name will be kept
+%    for ever to ensure backwards compatibility), options are entered
+%    using the \file{keyval} syntax.
+%    The command \fbsetup{} is to appear in the preamble only
+%    (after loading \babel).
 %
-%  \subsubsection[\textbackslash frenchbsetup{}]
+%     \subsubsection[\textbackslash frenchsetup{}]
 %     {\fbsetup{options}}
 %  \label{sssec-frenchbsetup}
 %
-%     \vspace{.5\baselineskip}
-%     \fbsetup{ShowOptions} prints all available options to
-%     the \file{.log} file, it is just meant as a remainder of the
-%     list of offered options.  As usual with \file{keyval} syntax,
-%     boolean options (as \fbo{ShowOptions}) can be entered as
-%     \fbo{ShowOptions=true} or just \fbo{ShowOptions}, the
-%     \fbo{=true} part can be omitted.
+%    \vspace{.5\baselineskip}
+%    |\frenchsetup{}| and |\frenchbsetup{}| are synonymous;
+%    the latter should be preferred as the language name for
+%    French in \babel{} is no longer |frenchb| but |french|.
 %
-%     \vspace{.5\baselineskip}
-%     The other options are listed below.  Their default value is
-%     shown between braces, sometimes followed be a `\texttt{*}'.
-%     The `\texttt{*}' means that the default shown applies when
-%     \frenchb{} is loaded as the \emph{last} option of \babel{}
-%     ---\babel's \emph{main language}---, and is toggled otherwise.
-%     \begin{description}
-%     \item [StandardLayout=true (false*)] forces \frenchb{} not to
-%       interfere with the layout: no action on any kind of lists,
-%       first paragraphs of sections are not indented (as in English),
-%       no action on footnotes.  This option can be used to avoid
-%       conflicts with classes or packages which customise lists or
-%       footnotes.
-%     \item [GlobalLayoutFrench=false (true*)] should no longer be
-%       used; it was intended to emulate, when French is the main
-%       language, what prior versions of \frenchb{} (pre-2.2) did:
-%       lists, and first paragraphs of sections would be displayed
-%       the standard way in other languages than French, and ``à la
-%       française'' in French.  Note that the layout of footnotes is
-%       language independent anyway (see below \fbo{FrenchFootnotes}
-%       and \fbo{AutoSpaceFootnotes}).
-%     \item [ReduceListSpacing=false (true*)]; \frenchb{} reduces the
-%       values of the vertical spaces used in the \emph{all} list
-%       environments in French (this includes itemize, enumerate,
-%       description, but also abstract, quote, quotation and verse and
-%       possibly others).  Setting this option to \fbo{false}
-%       reverts to the standard settings of the \env{list}
-%       environment.
-%     \item [ListOldLayout=true (false)]; starting with version~2.6a,
-%       the layout of lists has changed regarding leftmargins' sizes
-%       and default itemize label (`---' instead of `--' up to~2.5k).
-%       This option, provided for backward compatibility, displays
-%       lists as they were up to version~2.5k.
-%     \item [CompactItemize=false (true*)]; should no longer be used
-%       (kept only for backward compatibility), it is replaced by the
-%       next two options.
-%     \item [StandardItemizeEnv=true (false*)]; \frenchb{} redefines
-%       the \env{itemize} environment to suppress any vertical space
-%       between items of \env{itemize} lists in French and customises
-%       left margins.  Setting this option to \fbo{false} reverts to
-%       the standard definition of \env{itemize}.
-%     \item [StandardEnumerateEnv=true (false*)]; starting with
-%       version~2.6 \frenchb{} redefines the \env{enumerate} and
-%       \env{description} environments to make left margins match those
-%       of the French version of \env{itemize} lists.  Setting this
-%       option to \fbo{false} reverts to the standard definition of
-%       \env{enumerate} and \env{description}.
-%     \item [StandardItemLabels=true (false*)] when set to \fbo{true}
-%       this option prevents \frenchb{} from changing the labels in
-%       \env{itemize} lists in French.
-%     \item [ItemLabels=\cs{textbullet}, \cs{textendash},
+%    \fbsetup{ShowOptions} prints all available options to
+%    the \file{.log} file, it is just meant as a remainder of the
+%    list of offered options.  As usual with \file{keyval} syntax,
+%    boolean options (as \fbo{ShowOptions}) can be entered as
+%    \fbo{ShowOptions=true} or just \fbo{ShowOptions}, the
+%    \fbo{=true} part can be omitted.
+%
+%    \vspace{.5\baselineskip}
+%    The other options are listed below.  Their default value is
+%    shown between braces, sometimes followed be a `\texttt{*}’.
+%    The `\texttt{*}’ means that the default shown applies when
+%    \frenchb{} is loaded as the \emph{last} option of \babel{}
+%    ---\babel’s \emph{main language}---, and is toggled otherwise.
+%    \begin{description}
+%    \item [StandardLayout=true (false*)] forces \frenchb{} not to
+%      interfere with the layout: no action on any kind of lists,
+%      first paragraphs of sections are not indented (as in English),
+%      no action on footnotes.  This option can be used to avoid
+%      conflicts with classes or packages which customise lists or
+%      footnotes.\par
+%      When French is not the main language, \fbo{StandardLayout=false}
+%      can be misused to ensure French typography (in French only).
+%      This is a \emph{bad practice}: the document layout should not
+%      be altered by language switches.
+%    \item [GlobalLayoutFrench=false (true*)] should no longer be
+%      used; it was intended to emulate, when French is the main
+%      language, what prior versions of \frenchb{} (pre-2.2) did:
+%      lists, and first paragraphs of sections would be displayed
+%      the standard way in other languages than French, and ``à la
+%      française’’ in French.  Note that the layout of footnotes is
+%      language independent anyway (see below \fbo{FrenchFootnotes}
+%      and \fbo{AutoSpaceFootnotes}).
+%    \item [ReduceListSpacing=false (true*)]; \frenchb{} reduces the
+%      values of the vertical spaces used in the \emph{all} list
+%      environments in French (this includes itemize, enumerate,
+%      description, but also abstract, quote, quotation and verse and
+%      possibly others).  Setting this option to \fbo{false}
+%      reverts to the standard settings of the \env{list}
+%      environment.
+%    \item [ListOldLayout=true (false)]; starting with version~2.6a,
+%      the layout of lists has changed regarding leftmargins’ sizes
+%      and default itemize label (`---’ instead of `--’ up to~2.5k).
+%      This option, provided for backward compatibility, displays
+%      lists as they were up to version~2.5k.
+%    \item [CompactItemize=false (true*)]; should no longer be used
+%      (kept only for backward compatibility), it is replaced by the
+%      next two options.
+%    \item [StandardItemizeEnv=true (false*)]; \frenchb{} redefines
+%      the \env{itemize} environment to suppress any vertical space
+%      between items of \env{itemize} lists in French and customises
+%      left margins.  Setting this option to \fbo{false} reverts to
+%      the standard definition of \env{itemize}.
+%    \item [StandardEnumerateEnv=true (false*)]; starting with
+%      version~2.6 \frenchb{} redefines the \env{enumerate} and
+%      \env{description} environments to make left margins match those
+%      of the French version of \env{itemize} lists.  Setting this
+%      option to \fbo{false} reverts to the standard definition of
+%      \env{enumerate} and \env{description}.
+%    \item [StandardItemLabels=true (false*)] when set to \fbo{true}
+%      this option prevents \frenchb{} from changing the labels in
+%      \env{itemize} lists in French.
+%    \item [ItemLabels=\cs{textbullet}, \cs{textendash},
 %           \cs{ding\{43\}},...(\cs{textemdash}*)];\\
-%        when \fbo{StandardItemLabels=false} (the default), this option
-%        enables to choose the label used in French \env{itemize} lists
-%        for all levels.  The next four options do the same but each
-%        one for a specific level only.  Note that the example
-%        |\ding{43}| requires |\usepackage{pifont}|.
-%       \item [ItemLabeli=\cs{textbullet}, \cs{textendash},
+%      when \fbo{StandardItemLabels=false} (the default), this option
+%      enables to choose the label used in French \env{itemize} lists
+%      for all levels.  The next four options do the same but each
+%      one for a specific level only.  Note that the example
+%      |\ding{43}| requires |\usepackage{pifont}|.
+%    \item [ItemLabeli=\cs{textbullet}, \cs{textendash},
 %           \cs{ding\{43\}},...(\cs{textemdash}*)]
-%       \item [ItemLabelii=\cs{textbullet}, \cs{textendash},
+%    \item [ItemLabelii=\cs{textbullet}, \cs{textendash},
 %           \cs{ding\{43\}},...(\cs{textemdash}*)]
-%       \item [ItemLabeliii=\cs{textbullet}, \cs{textendash},
+%    \item [ItemLabeliii=\cs{textbullet}, \cs{textendash},
 %           \cs{ding\{43\}},..(\cs{textemdash}*)]
-%       \item [ItemLabeliv=\cs{textbullet}, \cs{textendash},
+%    \item [ItemLabeliv=\cs{textbullet}, \cs{textendash},
 %           \cs{ding\{43\}},...(\cs{textemdash}*)]
-%     \item [StandardLists=true (false*)] forbids \frenchb{} to
-%       customise any kind of list.  Try the option \fbo{StandardLists}
-%       in case of conflicts with classes or packages that customise
-%       lists too.  This option is just a shorthand setting all four
-%       options \fbo{ReduceListSpacing=false},
-%       \fbo{StandardItemizeEnv=true}, \fbo{StandardEnumerateEnv=true}
-%       and \fbo{StandardItemLabels=true}.
-%     \item [IndentFirst=false (true*)]; set this option to \fbo{false}
-%       if you do not want \frenchb{} to  force indentation of the
-%       first paragraph of sections.  When French is the main language,
-%       this option applies to all languages.
-%     \item [FrenchFootnotes=false (true*)] reverts to the standard
-%       layout of footnotes.  By default \frenchb{} typesets leading
-%       numbers as `1.\hspace{.5em}' instead of `$\hbox{}^1$', but
-%       has no effect on footnotes numbered with symbols (as in the
-%       |\thanks| command).  Two commands |\StandardFootnotes|
-%       and |\FrenchFootnotes| are available to change the layout of
-%       footnotes locally; |\StandardFootnotes| can help when some
-%       footnotes are numbered with letters (inside minipages for
-%       instance).
-%     \item [AutoSpaceFootnotes=false (true*)]; by default \frenchb{}
-%       adds a thin space in the running text before the number or
-%       symbol calling the footnote.  Making this option \fbo{false}
-%       reverts to the standard setting (no space added).
-%     \item [FrenchSuperscripts=false (true)]; then
-%       |\up=\textsuperscript|. % (option added in version 2.1).
-%       Should only be made \fbo{false} to recompile documents written
-%       before 2008 without changes: by default |\up| now relies on
-%       |\fup| designed to produce better looking superscripts.
-%     \item [AutoSpacePunctuation=false (true)]; in French, the user
-%       \emph{should} input a space before the four characters `|:;!?|'
-%       but as many people forget about it (even among native French
-%       writers!), the default behaviour of \frenchb{} is to
-%       automatically typeset nobreak spaces the width of which is
-%       either |\FBthinspace| (defauts to a thin space) before `|;|'
-%       `|!|' `|?|' or |\FBcolonspace| (defauts to |\space|) before
-%       `|:|'; the defaults follow the French `Imprimerie Nationale's
-%       recommendations.  This is convenient in most cases but can lead
-%       to addition of spurious spaces in URLs, in MS-DOS paths or in
-%       timetables (10:55), except if they are typed in |\texttt| or
-%       verbatim mode.  When the current font is a monospaced
-%       (typewriter) font, no spurious space is added in that case%
-%       \footnote{Unless option \fbo{OriginalTypewriter} is set,
-%       \cs{ttfamily} is redefined in French to switch off space
-%       tuning, see below.},
-%       so the default behaviour of of \frenchb{} in that area should
-%       be fine in most circumstances.
+%    \item [StandardLists=true (false*)] forbids \frenchb{} to
+%      customise any kind of list.  Try the option \fbo{StandardLists}
+%      in case of conflicts with classes or packages that customise
+%      lists too.  This option is just a shorthand setting all four
+%      options \fbo{ReduceListSpacing=false},
+%      \fbo{StandardItemizeEnv=true}, \fbo{StandardEnumerateEnv=true}
+%      and \fbo{StandardItemLabels=true}.
+%    \item [IndentFirst=false (true*)]; set this option to \fbo{false}
+%      if you do not want \frenchb{} to  force indentation of the
+%      first paragraph of sections.  When French is the main language,
+%      this option applies to all languages.
+%    \item [FrenchFootnotes=false (true*)] reverts to the standard
+%      layout of footnotes.  By default \frenchb{} typesets leading
+%      numbers as `1.\hspace{.5em}’ instead of `\up{1}’, but
+%      has no effect on footnotes numbered with symbols (as in the
+%      |\thanks| command).  Two commands |\StandardFootnotes|
+%      and |\FrenchFootnotes| are available to change the layout of
+%      footnotes locally; |\StandardFootnotes| can help when some
+%      footnotes are numbered with letters (inside minipages for
+%      instance).
+%    \item [AutoSpaceFootnotes=false (true*)]; by default \frenchb{}
+%      adds a thin space in the running text before the number or
+%      symbol calling the footnote.  Making this option \fbo{false}
+%      reverts to the standard setting (no space added).
+%    \item [FrenchSuperscripts=false (true)]; then
+%      |\up=\textsuperscript|. % (option added in version 2.1).
+%      Should only be made \fbo{false} to recompile documents written
+%      before 2008 without changes: by default |\up| now relies on
+%      |\fup| designed to produce better looking superscripts.
+%    \item [AutoSpacePunctuation=false (true)]; in French, the user
+%      \emph{should} input a space before the four characters `|:;!?|’
+%      but as many people forget about it (even among native French
+%      writers!), the default behaviour of \frenchb{} is to
+%      automatically typeset nobreak spaces the width of which is
+%      either |\FBthinspace| (defauts to a thin space) before `|;|’
+%      `|!|’ `|?|’ or |\FBcolonspace| (defauts to |\space|) before
+%      `|:|’; the defaults follow the French `Imprimerie Nationale’s
+%      recommendations.  This is convenient in most cases but can lead
+%      to addition of spurious spaces in URLs, in MS-DOS paths or in
+%      timetables (10:55), except if they are typed in |\texttt| or
+%      verbatim mode.  When the current font is a monospaced
+%      (typewriter) font, no spurious space is added in that case%
+%      \footnote{Unless option \fbo{OriginalTypewriter} is set,
+%        \cs{ttfamily} is redefined in French to switch off space
+%        tuning, see below.},
+%      so the default behaviour of of \frenchb{} in that area should
+%      be fine in most circumstances.
 %
-%       Choosing \fbo{AutoSpacePunctuation=false} will ensure that
-%       a proper space is added before `|:;!?|' \emph{if and only
-%       if} a (normal) space has been typed in.  Those who are unsure
-%       about their typing in this area should stick to the default
-%       option and use the provided |\NoAutoSpacing| command
-%       inside a group in case an unwanted space is added by \frenchb{}
-%       (i.e.\ |{\NoAutoSpacing 10:55}|).
-%     \item [ThinColonSpace=true (false)] changes the inter-word
-%       unbreakable space added before the colon `:' to a thin space,
-%       so that the same amount of space is added before any of the
-%       four `high punctuation' characters.  The default setting is
-%       supported by the French `Imprimerie Nationale'.
-%     \item [OriginalTypewriter=true (false)] prevents any
-%       customisation of |\ttfamily| and |\texttt{}| in French.
-%     \item [LowercaseSuperscripts=false (true)]; by default \frenchb{}
-%       inhibits the uppercasing of superscripts (for instance when
-%       they are moved to page headers).  Making this option
-%       \fbo{false} will disable this behaviour (not recommended).
-%     \item [PartNameFull=false (true)]; when true, \frenchb{} numbers
-%       the title of |\part{}| commands as ``Première partie'',
-%       ``Deuxième partie'' and so on.  With some classes which
-%       change the |\part{}| command (AMS classes do so), you could
-%       get ``Première partie~1'', ``Deuxième partie~2'' in the toc;
-%       when this occurs, this option should be set to
-%       \fbo{false}, part titles will then be printed as ``Partie I'',
-%       ``Partie II''.
-%     \item [CustomiseFigTabCaptions=false (true*)]; when \fbo{false}
-%       the default separator (colon) is used instead of
-%       |\CaptionSeparator|.  Anyway, \frenchb{} makes sure that the
-%       colon will be typeset with proper preceeding space in French.
-%     \item [OldFigTabCaptions=true (false)] is to be used when
-%       figures' and tables' captions must be typeset as with pre~3.0
-%       versions of \frenchb{} (with |\CaptionSeparator| in French and
-%       colon otherwise). Intended for standard \LaTeX{} classes only.
-%     \item [SmallCapsFigTabCaptions=false (true*)]; when set to
-%       \fbo{false}, |\figurename| and |\tablename| will be printed in
-%       French captions as ``Figure'' and ``Table'' instead of being
-%       printed in small caps (the default).
-%     \item [SuppressWarning=true (false)]; can be turned to \fbo{true}
-%       if you are bored with \frenchb's warnings.
-%     \item [INGuillSpace=true (false)] resets the dimensions of spaces
-%       after opening French quotes and before closing French quotes to
-%       the French `Imprimerie Nationale' standards (inter-word space).
-%       \frenchb's default setting produces slightly narrower spaces
-%       with lesser stretchability.
-%     \item [EveryParGuill=open, close, none (open)]; sets whether
-%       an opening quote (\texttt{«}) or a closing one (\texttt{»}) or
-%       nothing should be printed by |\frquote{}| at the beginning of
-%       every parapraph included in a level 1 (outer) quotation.
-%       This option is also considered for level 2 (inner) quotations
-%       to decide between \texttt{\guilsinglleft} and
-%       \texttt{\guilsinglright} when \fbo{InnerGuillSingle=true}
-%       (see below). \label{everyparguill}
-%     \item [EveryLineGuill=open, close, none (none)]; with LuaTeX
-%       based engines \emph{only}, it is possible to set this option
-%       to \fbo{open} [resp. \fbo{close}]; this ensures that a `«'
-%       [resp. `»'] followed by a proper kern will be inserted at the
-%       beginning of every line of embedded (inner) quotations
-%       spreading over more than one line (provided that both outer
-%       and inner quotations are entered with |\frquote{}|). When
-%       \fbo{EveryLineGuill=open} or \fbo{=close} the inner quotation is
-%       always surrounded by « and », the next option is ineffective.
-%     \item [InnerGuillSingle=true (false)];
-%       if \fbo{InnerGuillSingle=false} (default), inner quotations
-%       entered with |\frquote{}| start with~\texttt{``} and end
-%       with~\texttt{''}.
-%       If \fbo{InnerGuillSingle=true}, \texttt{\guilsinglleft} and
-%       \texttt{\guilsinglright} are used instead of British double
-%       quotes; moreover if option \fbo{EveryParGuill=open} (or
-%       \fbo{close}) is set, a \texttt{\guilsinglleft} (or
-%       \texttt{\guilsinglright}) is added at the beginning of every
-%       parapraph included in the inner quotation.
-%     \item [og=«, fg=»]; when guillemets characters are available on
-%       the keyboard (through a compose key for instance), it is nice
-%       to use them instead of typing |\og| and |\fg|.  This option
-%       tells \frenchb{} which characters are opening and closing
-%       French guillemets (they depend on the input encoding), then
-%       you can type either \label{option-og-fg}
-%       \texttt{« guillemets »} or \texttt{«guillemets»} (with or
-%       without spaces) to get properly typeset French quotes.
-%       This option works with LuaLaTeX and XeLaTeX; with pdfLaTeX it
-%       requires \file{inputenc} to be loaded with a proper encoding:
-%       8-bits encoding (latin1, latin9, ansinew, applemac,\dots) or
-%       multi-byte encoding (utf8, utf8x).
+%      Choosing \fbo{AutoSpacePunctuation=false} will ensure that
+%      a proper space is added before `|:;!?|’ \emph{if and only if}
+%      a (normal) space has been typed in.  Those who are unsure
+%      about their typing in this area should stick to the default
+%      option and use the provided |\NoAutoSpacing| command
+%      inside a group in case an unwanted space is added by \frenchb{}
+%      (i.e.\ |{\NoAutoSpacing 10:55}|).
+%    \item [ThinColonSpace=true (false)] changes the inter-word
+%      unbreakable space added before the colon `:’ to a thin space,
+%      so that the same amount of space is added before any of the
+%      four `high punctuation’ characters.  The default setting is
+%      supported by the French `Imprimerie Nationale’.
+%    \item [OriginalTypewriter=true (false)] prevents any
+%      customisation of |\ttfamily| and |\texttt{}| in French.
+%    \item [LowercaseSuperscripts=false (true)]; by default \frenchb{}
+%      inhibits the uppercasing of superscripts (for instance when
+%      they are moved to page headers).  Making this option
+%      \fbo{false} will disable this behaviour (not recommended).
+%    \item [PartNameFull=false (true)]; when true, \frenchb{} numbers
+%      the title of |\part{}| commands as ``Première partie’’,
+%      ``Deuxième partie’’ and so on.  With some classes which
+%      change the |\part{}| command (AMS classes do so), you could
+%      get ``Première partie~1’’, ``Deuxième partie~2’’ in the toc;
+%      when this occurs, this option should be set to
+%      \fbo{false}, part titles will then be printed as ``Partie I’’,
+%      ``Partie II’’.
+%    \item [CustomiseFigTabCaptions=false (true*)]; when \fbo{false}
+%      the default separator (colon) is used instead of
+%      |\CaptionSeparator|.  Anyway, \frenchb{} makes sure that the
+%      colon will be typeset with proper preceeding space in French.
+%    \item [OldFigTabCaptions=true (false)] is to be used when
+%      figures’ and tables’ captions must be typeset as with pre~3.0
+%      versions of \frenchb{} (with |\CaptionSeparator| in French and
+%      colon otherwise). Intended for standard \LaTeX{} classes only.
+%    \item [SmallCapsFigTabCaptions=false (true*)]; when set to
+%      \fbo{false}, |\figurename| and |\tablename| will be printed in
+%      French captions as ``Figure’’ and ``Table’’ instead of being
+%      printed in small caps (the default).
+%    \item [SuppressWarning=true (false)]; can be turned to \fbo{true}
+%      if you are bored with \frenchb’s warnings.
+%    \item [INGuillSpace=true (false)] resets the dimensions of spaces
+%      after opening French quotes and before closing French quotes to
+%      the French `Imprimerie Nationale’ standards (inter-word space).
+%      \frenchb’s default setting produces slightly narrower spaces
+%      with lesser stretchability.
+%    \item [EveryParGuill=open, close, none (open)]; sets whether
+%      an opening quote (\texttt{«}) or a closing one (\texttt{»}) or
+%      nothing should be printed by |\frquote{}| at the beginning of
+%      every parapraph included in a level 1 (outer) quotation.
+%      This option is also considered for level 2 (inner) quotations
+%      to decide between \texttt{\guilsinglleft} and
+%      \texttt{\guilsinglright} when \fbo{InnerGuillSingle=true}
+%      (see below). \label{everyparguill}
+%    \item [EveryLineGuill=open, close, none (none)]; with LuaTeX
+%      based engines \emph{only}, it is possible to set this option
+%      to \fbo{open} [resp. \fbo{close}]; this ensures that a `«’
+%      [resp. `»’] followed by a proper space will be inserted at the
+%      beginning of every line of embedded (inner) quotations
+%      spreading over more than one line (provided that both outer
+%      and inner quotations are entered with |\frquote{}|). When
+%      \fbo{EveryLineGuill=open} or \fbo{=close} the inner quotation is
+%      always surrounded by « and », the next option is ineffective.
+%    \item [InnerGuillSingle=true (false)];
+%      if \fbo{InnerGuillSingle=false} (default), inner quotations
+%      entered with |\frquote{}| start with~\texttt{``} and end
+%      with~\texttt{’’}.
+%      If \fbo{InnerGuillSingle=true}, \texttt{\guilsinglleft} and
+%      \texttt{\guilsinglright} are used instead of British double
+%      quotes; moreover if option \fbo{EveryParGuill=open} (or
+%      \fbo{close}) is set, a \texttt{\guilsinglleft} (or
+%      \texttt{\guilsinglright}) is added at the beginning of every
+%      parapraph included in the inner quotation.
+%    \item [og=«, fg=»]; when guillemets characters are available on
+%      the keyboard (through a compose key for instance), it is nice
+%      to use them instead of typing |\og| and |\fg|.  This option
+%      tells \frenchb{} which characters are opening and closing
+%      French guillemets (they depend on the input encoding), then
+%      you can type either \label{option-og-fg}
+%      \texttt{« guillemets »} or \texttt{«guillemets»} (with or
+%      without spaces) to get properly typeset French quotes.
+%      This option works with LuaLaTeX and XeLaTeX; with pdfLaTeX it
+%      requires \file{inputenc} to be loaded with a proper encoding:
+%      8-bits encoding (latin1, latin9, ansinew, applemac,\dots) or
+%      multi-byte encoding (utf8, utf8x).
 %    \end{description}
 %
-%    \textbf{Options' order} -- Please remember that options are read
+%    \textbf{Options’ order} -- Please remember that options are read
 %    in the order they appear in the \fbsetup{} command.
 %    Someone wishing that \frenchb{} leaves the layout of lists
 %    and footnotes untouched but caring for indentation of first
@@ -549,13 +560,13 @@
 %    |\def\frenchproofname{Preuve}|.
 %    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
+%    redefine captions, even if \babel{}’s option was entered as
 %    |francais| or |frenchb|.
 %
 %    When French is the main language, by default (see below)
-%    \frenchb{} changes the separator (colon) used in figures' and
-%    tables' captions \emph{for all languages} to |\CaptionSeparator|
-%    which defaults to ` -- ' and can be redefined in the preamble with
+%    \frenchb{} changes the separator (colon) used in figures’ and
+%    tables’ captions \emph{for all languages} to |\CaptionSeparator|
+%    which defaults to ` -- ’ and can be redefined in the preamble with
 %    |\renewcommand*{\CaptionSeparator}{...}|.
 %
 %    When French is not the main language, the colon is preserved for
@@ -566,7 +577,7 @@
 %    set to \fbo{false} the colon will be used as separator in all
 %    languages, with a proper space before the colon in French.
 %    The second option, \fbo{OldFigTabCaptions}, can be set to \fbo{true}
-%    to print figures' and tables' captions as they were with versions
+%    to print figures’ and tables’ captions as they were with versions
 %    pre~3.0 of \frenchb{} (using |\CaptionSeparator| in French and
 %    colon in other languages); this option only makes sense with the
 %    standard \LaTeX{} classes \cls{article}, \cls{report} and
@@ -573,7 +584,7 @@
 %    \cls{book}.
 %    The last option, \fbo{SmallCapsFigTabCaptions}, can be set to
 %    \fbo{false} to typeset |\figurename| and |\tablename| in French as
-%    ``Figure'' and ``Table'' rather than in small caps (the default).
+%    ``Figure’’ and ``Table’’ rather than in small caps (the default).
 %
 %  \subsection{Hyphenation checks}
 %  \label{ssec-hyphen}
@@ -600,11 +611,11 @@
 %      in French you should get with both 7-bit and 8-bit encodings\\
 %      \texttt{si-gnal contai-ner évé-ne-ment al-gèbre}.\\
 %      Do not care about how accented characters are displayed in the
-%      log-file, what matters is the position of the `|-|' hyphen
+%      log-file, what matters is the position of the `|-|’ hyphen
 %      signs \emph{only}.
 %    \end{itemize}
 %    If they are all correct, your installation (probably) works fine,
-%    if one (or more) is (are) wrong, ask a local wizard to see what's
+%    if one (or more) is (are) wrong, ask a local wizard to see what’s
 %    going wrong and perform the test again (or e-mail me about what
 %    happens).\\
 %    Frequent mismatches:
@@ -622,97 +633,113 @@
 %  \subsection{Changes}
 %  \label{ssec-changes}
 %
-%  \subsubsection*{What's new in version 3.2?}
+%  \subsubsection*{What’s new in version 3.3?}
 %
-%      Version 3.2g changes the default behaviour of |\frquote{}|
-%      with LuaTeX based engines, the output is now the same with
-%      all engines; to recover the former behaviour, add option
-%      \fbo{EveryLineGuill=open}.
+%    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;
+%    all three engines now rely on the same commands |\FBcolonspace|,
+%    |\FBthinspace| and |\FBguillspace|.
 %
-%      The handling of footnotes has been redesigned for the
-%      \cls{beamer}, \cls{memoir} and koma-script classes.
-%      The layout of footnotes ``à la française'' should be unchanged
-%      but footnotes' customisations offered by these classes
-%      (i.e.\ font or color changes) are now available even when option
-%      \fbo{FrenchFootnotes} is \fbo{true}.
+%    An alias |\frenchsetup{}| for |\frenchbsetup{}| has been added
+%    in version 3.3a, it might appear more relevant in the future as
+%    the language name |frenchb| should vanish.
 %
-%      A long standing bug regarding the \pkg{xspace} package has been
-%      fixed: |\xspace| has been moved up from the internal command
-%      |\FB at fg| to |\fg|; |\frquote{}| now works properly when the
+%    Further customisation of the |\part{}| command is provided via
+%    three new commands |\frenchpartfirst|, |\frenchpartsecond| and
+%    |\frenchpartnameord|.
+%
+%  \subsubsection*{What’s new in version 3.2?}
+%
+%    Version 3.2g changes the default behaviour of |\frquote{}|
+%    with LuaTeX based engines, the output is now the same with
+%    all engines; to recover the former behaviour, add option
+%    \fbo{EveryLineGuill=open}.
+%
+%    The handling of footnotes has been redesigned for the
+%    \cls{beamer}, \cls{memoir} and koma-script classes.
+%    The layout of footnotes ``à la française’’ should be unchanged
+%    but footnotes’ customisations offered by these classes
+%    (i.e.\ font or color changes) are now available even when option
+%    \fbo{FrenchFootnotes} is \fbo{true}.
+%
+%    A long standing bug regarding the \pkg{xspace} package has been
+%    fixed: |\xspace| has been moved up from the internal command
+%    |\FB at fg| to |\fg|; |\frquote{}| now works properly when the
 %      \pkg{xspace} package is loaded.
 %
-%      Version 3.2b is the first one designed to work with LuaTeX
-%      v.~0.95 as included in TeXLive 2016 (LuaTeX's new glue node
-%      structure is not compatible with previous versions).
+%    Version 3.2b is the first one designed to work with LuaTeX
+%    v.~0.95 as included in TeXLive 2016 (LuaTeX’s new glue node
+%    structure is not compatible with previous versions).
 %
-%      \textbf{Warning to Lua(La)TeX users:} starting with version~3.2b
-%      the lua code included in \file{frenchb.lua} will \emph{not work}
-%      on older installations (TL2015 f.i.), so \frenchb{} reverts to
-%      active characters while handling high punctuation with LuaTeX
-%      engines older than 0.95!
-%      The best way to go is to upgrade to TL2016 or equivalent asap.
-%      Xe(La)TeX and pdf(La)TeX users can safely use \frenchb{} v.~3.2b
-%      and later on older installations too.
+%    \textbf{Warning to Lua(La)TeX users:} starting with version~3.2b
+%    the lua code included in \file{frenchb.lua} will \emph{not work}
+%    on older installations (TL2015 f.i.), so \frenchb{} reverts to
+%    active characters while handling high punctuation with LuaTeX
+%    engines older than 0.95!
+%    The best way to go is to upgrade to TL2016 or equivalent asap.
+%    Xe(La)TeX and pdf(La)TeX users can safely use \frenchb{} v.~3.2b
+%    and later on older installations too.
 %
-%      Tne internals of commands |\NoAutoSpacing|, |\ttfamilyFB|,
-%      |\rmfamilyFB| and |\sffamilyFB| have been completely redesigned
-%      in version~3.2c, they behave now consistently with all engines.
+%    Tne internals of commands |\NoAutoSpacing|, |\ttfamilyFB|,
+%    |\rmfamilyFB| and |\sffamilyFB| have been completely redesigned
+%    in version~3.2c, they behave now consistently with all engines.
 %
-%  \subsubsection*{What's new in version 3.1?}
+%  \subsubsection*{What’s new in version 3.1?}
 %
-%      New command |\frquote{}| meant to enter French quotations,
-%      especially long ones (spreading over several paragraphs) and/or
-%      embedded ones. see p.~\pageref{frquote} for details.
+%    New command |\frquote{}| meant to enter French quotations,
+%    especially long ones (spreading over several paragraphs) and/or
+%    embedded ones. see p.~\pageref{frquote} for details.
 %
-%  \subsubsection*{What's new in version 3.0?}
+%  \subsubsection*{What’s new in version 3.0?}
 %
-%      Many deep changes lead me to step \frenchb's version number
-%      to~3.0a:
-%      \begin{itemize}
-%      \item \babel{}~3.9 is required now to process
-%        \file{frenchb.ldf}, this change allows for cleaner definitions
-%        of dates and captions for the Unicode engines LuaTeX and
-%        XeTeX and also provides a simpler syntax for end-users, see
-%       section~\ref{sssec-captions} p.\pageref{sssec-captions}.
-%      \item \fbsetup{} options management has been completely
-%        reworked; two new options added.
-%      \item Canadian French didn't work as a normal \babel's dialect,
-%        it should now; btw. the French language should now be loaded
-%        as \Lopt{french}, \emph{not as} \Lopt{frenchb} or
-%        \Lopt{francais} and preferably as a \emph{global} option of
-%        |\documentclass|. Some tolerance still exists in v3.0, but
-%        do not rely on it.
-%      \item \frenchb{} no longer loads \file{frenchb.cfg}:
-%        customisation should definitely be done using \fbsetup{}
-%        options.
-%      \item Description lists labels are now indented; try setting
-%        |\descindentFB=0pt| (or |\listindentFB=0pt| for all lists)
-%        in the preamble if you don't like it.
-%      \item The last but not least change affects the (recent)
-%        LuaTeX-based engines, (this means version 0.76 as included in
-%        TL2013 and up): active characters are no longer used in French
-%        for `high punctuation'%
-%        \footnote{The current \frenchb{} version requires LuaTeX
-%        v.~0.95 as included in TL2016, see above.}.
-%        Functionalities and user interface are unchanged.
+%    Many deep changes lead me to step \frenchb’s version number
+%    to~3.0a:
+%    \begin{itemize}
+%    \item \babel{}~3.9 is required now to process
+%      \file{frenchb.ldf}, this change allows for cleaner definitions
+%      of dates and captions for the Unicode engines LuaTeX and
+%      XeTeX and also provides a simpler syntax for end-users, see
+%      section~\ref{sssec-captions} p.\pageref{sssec-captions}.
+%    \item \fbsetup{} options management has been completely
+%      reworked; two new options added.
+%    \item Canadian French didn’t work as a normal \babel’s dialect,
+%      it should now; btw. the French language should now be loaded
+%      as \Lopt{french}, \emph{not as} \Lopt{frenchb} or
+%      \Lopt{francais} and preferably as a \emph{global} option of
+%      |\documentclass|. Some tolerance still exists in v3.0, but
+%      do not rely on it.
+%    \item \frenchb{} no longer loads \file{frenchb.cfg}:
+%      customisation should definitely be done using \fbsetup{}
+%      options.
+%    \item Description lists labels are now indented; try setting
+%      |\descindentFB=0pt| (or |\listindentFB=0pt| for all lists)
+%      in the preamble if you don’t like it.
+%    \item The last but not least change affects the (recent)
+%      LuaTeX-based engines, (this means version 0.76 as included in
+%      TL2013 and up): active characters are no longer used in French
+%      for `high punctuation’%
+%      \footnote{The current \frenchb{} version requires LuaTeX
+%      v.~0.95 as included in TL2016, see above.}.
+%      Functionalities and user interface are unchanged.
 %
-%        Many thanks to Paul Isambert who provided the basis for the
-%        lua code (see his presentation at GUT'2010) and kindly
-%        reviewed my first drafts suggesting significant improvements.
+%      Many thanks to Paul Isambert who provided the basis for the
+%      lua code (see his presentation at GUT’2010) and kindly
+%      reviewed my first drafts suggesting significant improvements.
 %
-%        Please note that this code, still experimental, is likely to
-%        change until LuaTeX itself has reached version~1.0.
-%      \end{itemize}
+%      Please note that this code, still experimental, is likely to
+%      change until LuaTeX itself has reached version~1.0.
+%    \end{itemize}
 %
-%      Starting with version~3.0c, \frenchb{} no longer customises
-%      lists with the \cls{beamer} class and offers a new option
-%      (\fbo{INGuillSpace}) to follow French `Imprimerie Nationale'
-%      recommendations regarding quotes' spacing.
+%    Starting with version~3.0c, \frenchb{} no longer customises
+%    lists with the \cls{beamer} class and offers a new option
+%    (\fbo{INGuillSpace}) to follow French `Imprimerie Nationale’
+%    recommendations regarding quotes’ spacing.
 %
 % \StopEventually{}
 %
 % \changes{v2.6c}{2013/05/20}{Dummy file frenchb.cfg is no longer
-%     generated from frenchb.dtx.}
+%    generated from frenchb.dtx.}
 %
 %  \clearpage
 %  \newgeometry{left=53mm,right=25mm}
@@ -722,9 +749,9 @@
 %  \subsection{Initial setup}
 %
 % \changes{v2.1d}{2008/05/02}{Argument of \cs{ProvidesLanguage} changed
-%     above from `french' to `frenchb' (otherwise \cs{listfiles} prints
-%     no date/version information).  The real name of current language
-%     (french) as to be corrected before calling \cs{LdfInit}.}
+%    above from `french’ to `frenchb’ (otherwise \cs{listfiles} prints
+%    no date/version information).  The real name of current language
+%    (french) as to be corrected before calling \cs{LdfInit}.}
 %
 % \iffalse
 %<*ldf>
@@ -733,10 +760,10 @@
 % \changes{v3.0a}{2014/02/28}{Support for options frenchb, francais,
 %    canadien, acadian changed.}
 %
-%    If \file{frenchb.ldf} was loaded with \babel{}'s options
+%    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'.
+%    In Plain formats, \texttt{@} catcode is not `letter’.
 %    \begin{macrocode}
 \chardef\atcatcode=\catcode`\@
 \catcode`\@=11\relax
@@ -794,8 +821,8 @@
 \fi
 %    \end{macrocode}
 %
-% \changes{v2.1d}{2008/05/04}{Avoid warning ``\cs{end} occurred
-%   when \cs{ifx} ... incomplete'' with LaTeX-2.09.}
+% \changes{v2.1d}{2008/05/04}{Avoid warning `\cs{end} occurred
+%    when \cs{ifx} ... incomplete’ with LaTeX-2.09.}
 %
 %  \begin{macro}{\ifLaTeXe}
 %    No support is provided for late \LaTeX-2.09: issue a warning
@@ -821,7 +848,7 @@
 % \changes{v3.0a}{2014/02/15}{In Plain, provide a substitute for
 %    \cs{PackageWarning} and \cs{PackageInfo}.}
 %
-%    Let's provide a substitute for |\PackageError|, |\PackageWarning|
+%    Let’s provide a substitute for |\PackageError|, |\PackageWarning|
 %    and |\PackageInfo| not defined in Plain:
 %    \begin{macrocode}
 \def\fb at error#1#2{%
@@ -846,7 +873,7 @@
 %
 % \changes{v3.0c}{2014/03/30}{frenchb requires babel-3.9i.}
 %
-%    Quit if \babel's version is less than 3.9i.
+%    Quit if \babel’s version is less than 3.9i.
 %    \begin{macrocode}
 \let\bbl at tempa\relax
 \ifx\babeltags\@undefined
@@ -867,13 +894,13 @@
 %
 %    \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
+%    \Lopt{acadian} will be the name of the corresponding \babel’s
 %    dialect, so we set |\CurrentOption| to \Lopt{acadian} in both
 %    cases.
 %    If no specific hyphenation patterns are available, Canadian French
 %    will use the French ones.
 %
-%    TODO: Canadian French hyphenation doesn't work with LuaTeX.
+%    TODO: Canadian French hyphenation doesn’t work with LuaTeX.
 %    \begin{macrocode}
 \ifx\l at acadian\@undefined
    \ifx\l at canadien\@undefined
@@ -896,7 +923,7 @@
 %    \end{macrocode}
 %
 %    French uses the standard values of |\lefthyphenmin| (2)
-%    and |\righthyphenmin| (3); let's provide their values though,
+%    and |\righthyphenmin| (3); let’s provide their values though,
 %    as required by \babel.
 %
 %    \begin{macrocode}
@@ -908,23 +935,23 @@
 %  \begin{macro}{\ifFBXeTeX}
 %    French hyphenation patterns are now coded in Unicode, see file
 %    \file{hyph-fr.tex}.  XeTeX and LuaTeX engines require some extra
-%    code to deal with the French ``apostrophe''.
-%    Let's define three new `if': |\ifFBLuaTeX|, |\ifFBXeTeX| and
+%    code to deal with the French ``apostrophe’’.
+%    Let’s define three new `if’: |\ifFBLuaTeX|, |\ifFBXeTeX| and
 %    |\ifFBunicode| which will be true for XeTeX and LuaTeX engines
 %    and false for 8-bits engines.
 %
-% \changes{v2.4a}{2009/11/23}{Added a new `if' \cs{FBunicode} and
+% \changes{v2.4a}{2009/11/23}{Added a new `if’ \cs{FBunicode} and
 %    some \cs{lccode} definitions to \cs{extrasfrench} and
 %    \cs{noextrasfrench}.}
 %
-% \changes{v2.5d}{2011/01/17}{Added two new `if' \cs{FBXeTeX} and
+% \changes{v2.5d}{2011/01/17}{Added two new `if’ \cs{FBXeTeX} and
 %    \cs{FBLuaTeX} as XeTeX and behave differently regarding the status
-%     of the French ``apostrophe''.}
+%     of the French `apostrophe’.}
 %
 % \changes{v2.6g}{2013/12/15}{lccode values for the French
-%    ``apostrophe'' are now the same for XeTeX and LuaTeX.}
+%    `apostrophe’ are now the same for XeTeX and LuaTeX.}
 %
-%    We cannot rely on \eTeX's |\ifdefined| at this stage, as it is not
+%    We cannot rely on \eTeX’s |\ifdefined| at this stage, as it is not
 %    defined in Plain \TeX{} format.
 %    \begin{macrocode}
 \newif\ifFBunicode
@@ -946,8 +973,8 @@
 % \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}.}
+% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s
+%    \cs{babel at savevariable} to handle apostrophe’s \cs{lccode}.}
 %
 % \begin{macro}{\noextrasfrench}
 %    The macro |\extrasfrench| will perform all the extra
@@ -955,15 +982,15 @@
 %    The macro |\noextrasfrench| is used to cancel the actions of
 %    |\extrasfrench|.
 %
-%    In French, character ``apostrophe'' is a letter in expressions
-%    like |l'ambulance| (French hyphenation patterns provide entries
+%    In French, character ``apostrophe’’ is a letter in expressions
+%    like |l’ambulance| (French hyphenation patterns provide entries
 %    for this kind of words).  This means that the |\lccode| of
-%    ``apostrophe'' has to be non null in French for proper hyphenation
+%    ``apostrophe’’ has to be non null in French for proper hyphenation
 %    of those expressions, and has to be reset to null when exiting
 %    French.
 %
 %    The following code ensures correct hyphenation of words like
-%    |d'aventure|, |l'utopie|, with all TeX engines (XeTeX, LuaTeX,
+%    |d’aventure|, |l’utopie|, with all TeX engines (XeTeX, LuaTeX,
 %    pdfTeX) using \file{hyph-fr.tex} patterns.
 %
 %    \begin{macrocode}
@@ -979,10 +1006,10 @@
 \@namedef{noextras\CurrentOption}{}
 %    \end{macrocode}
 %
-%    Let's define a handy command for adding stuff to
+%    Let’s define a handy command for adding stuff to
 %    |\extras\CurrentOption|,\linebreak[0] |\noextras\CurrentOption| or
-%    |\captions\CurrentOption| but first let's save the value of
-%    |\CurrentOption| for later use in \fbsetup{} (`AfterEndOfPackage',
+%    |\captions\CurrentOption| but first let’s save the value of
+%    |\CurrentOption| for later use in \fbsetup{} (`AfterEndOfPackage’,
 %    |\CurrentOption| will be lost).
 %    \begin{macrocode}
 \let\FB at CurOpt\CurrentOption
@@ -991,8 +1018,8 @@
 %    \end{macrocode}
 %
 %    One more thing |\extrasfrench| needs to do is to make sure that
-%    ``Frenchspacing'' is in effect.  |\noextrasfrench| will switch
-%    ``Frenchspacing'' off again if necessary.
+%    ``Frenchspacing’’ is in effect.  |\noextrasfrench| will switch
+%    ``Frenchspacing’’ off again if necessary.
 %    \begin{macrocode}
 \FB at addto{extras}{\bbl at frenchspacing}
 \FB at addto{noextras}{\bbl at nonfrenchspacing}
@@ -1007,14 +1034,14 @@
 %    with XeTeX-based engines.}
 %
 %    As long as no better solution is available, the `high
-%    punctuation' characters (|;| |!| |?| and |:|) have to be made
+%    punctuation’ characters (|;| |!| |?| and |:|) have to be made
 %    |\active| for an automatic control of the amount of space to be
 %    inserted before them.  Both XeTeX and LuaTeX provide an
-%    alternative to active characters (`XeTeXinterchar' mechanism and
-%    LuaTeX's callbacks).
+%    alternative to active characters (`XeTeXinterchar’ mechanism and
+%    LuaTeX’s callbacks).
 %
 % \changes{v3.0a}{2014/01/10}{New flag \cs{ifFB at luatex@punct} for
-%    `high punctuation' management with LuaTeX engines.}
+%    `high punctuation’ management with LuaTeX engines.}
 %
 %  \begin{macro}{\ifFB at active@punct}
 %    \begin{macrocode}
@@ -1024,11 +1051,11 @@
 %
 %  \begin{macro}{\ifFB at luatex@punct}
 %    Three internal flags are needed for the three different techniques
-%    used for `high punctuation' management.
+%    used for `high punctuation’ management.
 %
 %    With LuaTeX, starting with version 0.95, callbacks are used to
 %    get rid of active punctuation.  With previous versions, `high
-%    punctuation' characters remain active (see below).
+%    punctuation’ characters remain active (see below).
 %    \begin{macrocode}
 \newif\ifFB at luatex@punct
 \ifFBLuaTeX
@@ -1052,11 +1079,11 @@
 %
 %  \begin{macro}{\ifFB at xetex@punct}
 %    For XeTeX, the availability of |\XeTeXinterchartokenstate|
-%    decides whether the `high punctuation' characters (|;| |!| |?|
+%    decides whether the `high punctuation’ characters (|;| |!| |?|
 %    and |:|) have to be made |\active| or not.
 %
 % \changes{v3.2b}{2016/04/18}{New counter \cs{FB at nonchar} needed for
-%    non characters: it's value will be 4095 for new engines and 255
+%    non characters: it’s value will be 4095 for new engines and 255
 %    for older ones.}
 %
 %    The number of available character classes has been increased
@@ -1094,37 +1121,24 @@
 %    .5\cs{fontdimen2}\cs{font} to get in XeTeX and pdfTeX
 %    the same spacing as in LuaTeX.}
 %
-%    According to the I.N.\ specifications, the `:' requires an
-%    inter-word space before it, the other three require just
-%    a thin space.  We define |\FBcolonspace| as |\space|
-%    (inter-word space) and |\FBthinspace| as an half inter-word space
-%    with no shrink nor stretch, both are user customisable.
+% \changes{v3.3a}{2016/04/30}{Skips \cs{FBcolonskip} and
+%    \cs{FBthinskip} replaced by toks \cs{FBcolonsp} and
+%    \cs{FBthinsp}.}
+%
+%    According to the I.N.\ specifications, the `:’ requires an
+%    inter-word space before it, the other three require just a thin
+%    space.  We define |\FBcolonspace| as |\space| (inter-word space)
+%    and |\FBthinspace| as an half inter-word space with no shrink nor
+%    stretch, both are user customisable in the preamble.
 %    \begin{macrocode}
 \newcommand*{\FBcolonspace}{\space}
 \newcommand*{\FBthinspace}{\hskip.5\fontdimen2\font \relax}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%
-%  \begin{macro}{\FBcolonskip}
-%  \begin{macro}{\FBthinskip}
-% \changes{v3.0a}{2014/01/10}{LuaTeX requires dimensions: two new skips
-%    \cs{FBcolonskip} and \cs{FBthinskip}.}
-%
-% \changes{v3.2d}{2016/07/03}{Corrected typo in \cs{FBthinskip}:
-%    1.66672pt changed to 1.6667pt.}
-%
-%    LuaTeX requires skips instead of commands, so we define
-%    |\FBcolonskip| and |\FBthinskip| to hold the width/stretch/shrink
-%    specifications of |\FBcolonspace| and |\FBthinspace| for the
-%    |lmr10| font; these parameters will be scaled for the current font
-%    by the \file{frenchb.lua} script (see how p.~\pageref{lua-scaling}).
-%    |\FBcolonskip| and |\FBthinskip| are also user customisable.
+%    These commands will be converted into toks `AtBeginDocument’
+%    for LuaTeX.
 %    \begin{macrocode}
-\newskip\FBcolonskip
-\FBcolonskip=3.33pt plus 1.665pt minus 1.11pt \relax
-\newskip\FBthinskip
-\FBthinskip=1.6667pt \relax
+\newtoks\FBcolonsp
+\newtoks\FBthinsp
 %    \end{macrocode}
 %  \end{macro}
 %  \end{macro}
@@ -1134,7 +1148,7 @@
 %    French.}
 %
 %    With LuaTeX and XeTeX engines, \frenchb{} handles French quotes
-%    together with `high punctuation'; the conditional |\ifFB at spacing|
+%    together with `high punctuation’; the conditional |\ifFB at spacing|
 %    will be used by PdfTeX and XeTeX engines to switch on or off space
 %    tuning before high punctuation and inside French quotes.
 %    A matching attribute will be defined later for LuaTeX.
@@ -1145,7 +1159,7 @@
 % \begin{macro}{\FB at spacing@off}
 % \begin{macro}{\FB at spacing@on}
 %    Two internal commands to switch on and off all space tuning
-%    for all six characters `;:!?«»'.
+%    for all six characters `;:!?«»’.
 %    They will be triggered by user command |\NoAutoSpacing| and by
 %    font family switching commands |\ttfamilyFB| |\rmfamilyFB| and
 %    |\sffamilyFB|. These four commands will now behave the same with
@@ -1170,11 +1184,11 @@
 %  \subsubsection{Punctuation with LuaTeX}
 %  \label{sssec-punct-luatex}
 %
-% \changes{v3.0a}{2014/01/10}{New handling of `high punctuation'
+% \changes{v3.0a}{2014/01/10}{New handling of `high punctuation’
 %    through callbacks with LuaTeX engines.}
 %
 %    The following part holds specific code for punctuation with modern
-%    LuaTeX engines (version $\ge 0.76$).
+%    LuaTeX engines, i.e. version 0.95 (included in TL2016) or newer.
 %
 % \changes{v3.0b}{2014/02/13}{Require luatexbase with LaTeXe in case
 %    fontspec has not been loaded before babel.}
@@ -1184,9 +1198,6 @@
 %
 % \changes{v3.1a}{2014/05/30}{Misplaced \cs{fi} for plain formats.}
 %
-% \changes{v3.1i}{2015/10/04}{Compatibility code added due to changes
-%    in the 2015/10/01 LaTeX release, see ltnews23.tex.}
-%
 % \changes{v3.1j}{2015/10/16}{Loading luatexbase.sty is no longer
 %    needed with LaTeX release 2015/10/01 or later.}
 %
@@ -1195,24 +1206,18 @@
 %
 % \changes{v3.2c}{2016/05/14}{New LuaTeX attribute \cs{FB at spacing}.}
 %
-%    The following |\directlua| call ensures compatibility with LaTeX
-%    releases prior to 2015/10/01: the |\localleftbox| primitive%
-%    \footnote{used by \cs{frquote}, see p.~\pageref{cs:localleftbox}.}
-%    introduced by Omega was prefixed with ``luatex'', it should no
-%    longer be, see \file{ltnews23.tex} for details.
-%    \begin{macrocode}
-\ifFB at luatex@punct
-  \directlua{tex.enableprimitives("", tex.extraprimitives("omega"))}
-%    \end{macrocode}
+% \changes{v3.3a}{2017/04/30}{Compatibility code for pre
+%    2015/10/01 LaTeX release removed, see ltnews23.tex.}
 %
 %    We define three LuaTeX attributes to control spacing in French
-%    for `high punctuation' and quotes, making sure that
+%    for `high punctuation’ and quotes, making sure that
 %    |\newattribute| is defined.
 %    \begin{macrocode}
+\ifFB at luatex@punct
   \begingroup\expandafter\expandafter\expandafter\endgroup
   \expandafter\ifx\csname newluafunction\endcsname\relax
 %    \end{macrocode}
-%    This code is for Plain: load\file{ltluatex.tex} if it hasn't been
+%    This code is for Plain: load\file{ltluatex.tex} if it hasn’t been
 %    loaded before \babel.
 %    \begin{macrocode}
     \input ltluatex.tex
@@ -1220,13 +1225,13 @@
 %    \end{macrocode}
 %    |\FB at spacing=0| switches off any space tuning both before high
 %    punctuation characters and inside French quotes (i.e.\ function
-%    |french_punctuation| doesn't alter the node list at all).
+%    |french_punctuation| doesn’t alter the node list at all).
 %    |\FB at addDPspace=0| switches off automatic insertion of spaces
 %    before high punctuation characters (but typed spaces are still
 %    turned into nobreak thin- or word-spaces).
 %    |\FB at addGUILspace| will be set to~1 by option \fbo{og=«, fg=»},
-%    thus enabling automatic insertion of proper spaces after `«' and
-%    before `»'.
+%    thus enabling automatic insertion of proper spaces after `«’ and
+%    before `»’.
 %    \begin{macrocode}
   \newattribute\FB at spacing      \FB at spacing=1 \relax
   \newattribute\FB at addDPspace   \FB at addDPspace=1 \relax
@@ -1247,12 +1252,12 @@
 %<*lua>
 % \fi
 %    This is \file{frenchb.lua}. It holds Lua code to deal with  `high
-%    punctuation' and quotes.  This code is based on suggestions from
+%    punctuation’ and quotes.  This code is based on suggestions from
 %    Paul Isambert.
 %
 %    \begin{macro}{frenchb.lua}
 %    First we define two flags to control spacing before French `high
-%    punctuation' (thin space or inter-word space).
+%    punctuation’ (thin space or inter-word space).
 %
 % \changes{v3.1a}{2014/06/16}{Codes 0x13 and 0x14 added for French
 %    quotes in T1-encoding.}
@@ -1265,13 +1270,13 @@
 local FB_punct_thick =
   {[string.byte(":")] = true}
 %    \end{macrocode}
-%    Managing spacing after `«' (U+00AB) and before `»' (U+00BB) can be
+%    Managing spacing after `«’ (U+00AB) and before `»’ (U+00BB) can be
 %    done by the way; we define two flags, |FB_punct_left| for
 %    characters requiring some space before them and |FB_punct_right|
-%    for `\guillemotleft' which must be followed by some space.
+%    for `\guillemotleft’ which must be followed by some space.
 %    In case LuaTeX is used to output T1-encoded fonts instead of
 %    OpenType fonts, codes \texttt{0x13} and \texttt{0x14}  have to be
-%    added for `«' and `»'.
+%    added for `«’ and `»’.
 %    \begin{macrocode}
 local FB_punct_left =
   {[string.byte("!")] = true,
@@ -1294,7 +1299,7 @@
    [string.byte("(")] = true,
 %    \end{macrocode}
 %    or if the user has typed a nobreak space U+00A0 or a nobreak thin
-%    space U+202F before a `high punctuation' character: no space
+%    space U+202F before a `high punctuation’ character: no space
 %    should be added by \frenchb.  Same is true inside French quotes.
 %    \begin{macrocode}
    [0xA0]             = true,
@@ -1323,29 +1328,47 @@
 local insert_node_after  = node.insert_after
 local remove_node        = node.remove
 %    \end{macrocode}
-%    Some variables to store |\FBthinskip|, |\FBcolonskip| and
-%    |\FBguillskip| (given for |lmr10|); width/stretch/shrink are
-%    stored as fractions of |\fontdimen2|, |\fontdimen3| and
-%    |\fontdimen4| of |lmr10| font respectively\dots
+%    Commands |\FBthinspace|, |\FBcolonspace| and |\FBguillspace| are
+%    converted `AtBeginDocument’ into toks |\FBthinsp|, |\FBcolonsp|
+%    and |\FBguillsp|;
+%    the latter are processed by the next function |get_glue| which
+%    returns a table of three values which are fractions of
+%    |\fontdimen2|, |\fontdimen3| and |\fontdimen4|.
 %    \label{lua-scaling}
 %    \begin{macrocode}
-local thin10 = tex.skip['FBthinskip']
-local thinwd = thin10.width/65536/3.33
-local thinst = thin10.stretch/65536/1.665
-local thinsh = thin10.shrink/65536/1.11
-local coln10 = tex.skip['FBcolonskip']
-local colnwd = coln10.width/65536/3.33
-local colnst = coln10.stretch/65536/1.665
-local colnsh = coln10.shrink/65536/1.11
-local guil10 = tex.skip['FBguillskip']
-local guilwd = guil10.width/65536/3.33
-local guilst = guil10.stretch/65536/1.665
-local guilsh = guil10.shrink/65536/1.11
+local function get_glue(toks)
+  local t = nil
+  local f = string.match(toks, "\092hskip%s*([%d%.]*)%s*\092fontdimen")
+  if f == "" then f = 1 end
+  if f then
+     t = {f, 0, 0}
+     f = string.match(toks, "plus%s*([%d%.]*)%s*\092fontdimen")
+     if f == "" then f = 1 end
+     if f then
+        t[2] = f
+        f = string.match(toks, "minus%s*([%d%.]*)%s*\092fontdimen")
+        if f == "" then f = 1 end
+        if f then
+           t[3] = f
+        end
+     end
+  elseif string.match(toks, "\092F?B?thinspace") then
+     t = {0.5, 0, 0}
+  elseif string.match(toks, "\092space") then
+     t = {1, 1, 1}
+  end
+  return t
+end
+local colngl = get_glue(tex.toks['FBcolonsp']) or {1, 1, 1}
+local thingl = get_glue(tex.toks['FBthinsp'])  or {.5, 0, 0}
+local guilgl = get_glue(tex.toks['FBguillsp']) or {.8, .3, .8}
 %    \end{macrocode}
-%    and a function to scale them for the current font (beware of null
-%    values for fid, see |\nullfont| in TikZ, and of special fonts like
-%    lcircle1.pfb for which |font.getfont(fid)| does not return
-%    a proper font table, in such cases the function returns |nil|):
+%    The next function converts glue sizes returned in fontdimens
+%    by function |get_glue| into sp for the current font;
+%    beware of null values for fid, see |\nullfont| in TikZ, and of
+%    special fonts like lcircle1.pfb for which |font.getfont(fid)|
+%    does not return a proper font table, in such cases the function
+%    returns |nil|.
 %
 % \changes{v3.1l}{2016/02/13}{font.getfont(fid) possibly
 %    returns nil even for a positive fid (i.e. AMS lcircle1.pfb).
@@ -1360,7 +1383,7 @@
 %
 %    \begin{macrocode}
 local font_table = {}
-local function new_glue_scaled (fid,width,stretch,shrink)
+local function new_glue_scaled (fid,table)
   if fid > 0 then
      local fp = font_table[fid]
      if not fp then
@@ -1372,9 +1395,9 @@
      end
      local gl = new_node(GLUE,0)
      if fp then
-        gl.width = width * fp.space
-        gl.stretch = stretch * fp.space_stretch
-        gl.shrink = shrink * fp.space_shrink
+        node.setglue(gl, table[1]*fp.space,
+                         table[2]*fp.space_stretch,
+                         table[3]*fp.space_shrink)
         return gl
      else
         return nil
@@ -1384,9 +1407,8 @@
   end
 end
 %    \end{macrocode}
-%    Let's catch LuaTeX attributes |\FB at spacing|, |\FB at addDPspace|
-%    and |\FB at addGUILspace|.  Constant |FR=lang.id(french)| is
-%    defined by command |\activate at luatexpunct|.
+%    Let’s catch LuaTeX attributes |\FB at spacing|, |\FB at addDPspace|
+%    and |\FB at addGUILspace|.
 %    \begin{macrocode}
 local FBspacing    = luatexbase.attributes['FB at spacing']
 local addDPspace   = luatexbase.attributes['FB at addDPspace']
@@ -1401,7 +1423,8 @@
 %    or |FB_punct_right| is true) need a special treatment.
 %    In French, local variables are defined to hold the properties of
 %    the current glyph (|item|) and of the previous one (|prev|) or the
-%    next one (|next|).
+%    next one (|next|).  Constant |FR=lang.id(french)| is defined by
+%    command |\activate at luatexpunct|.
 %
 % \changes{v3.1b}{2014/09/16}{Add a check for null fid
 %    in french\_punctuation (Tikz \cs{nullfont}).
@@ -1430,17 +1453,16 @@
        end
 %    \end{macrocode}
 %
-% \changes{v3.0c}{2014/04/18}{Null glues should not
-%    trigger space insertion before high ponctuation.  Bug pointed out
-%    by Benoit Rivet for the `lstlisting' environment of the listings
-%    package.}
+% \changes{v3.0c}{2014/04/18}{Null glues should not trigger space
+%    insertion before high ponctuation.  Bug pointed out by Benoit
+%    Rivet for the `lstlisting’ environment of the listings package.}
 %
-% \changes{v3.1c}{2014/10/25}{Previous bug fix for null
-%    glues (v3.0c) did not work properly.  Fixed now (I hope!).
+% \changes{v3.1c}{2014/10/25}{Previous bug fix for null glues
+%    (v3.0c) did not work properly.  Fixed now (I hope!).
 %    Pointed out by Jacques André.}
 %
 %    If the previous item is a glue, check its natural width, only
-%    positive glues (actually glues > 1 sp, for tabular `l'
+%    positive glues (actually glues > 1 sp, for tabular `l’
 %    columns) are to be replaced by a nobreakspace.
 %    \begin{macrocode}
        local is_glue = prev_id == GLUE
@@ -1452,8 +1474,8 @@
 %    \end{macrocode}
 %    For characters for which |FB_punct_thin| or |FB_punct_thick| is
 %    \emph{true}, the amount of spacing to be typeset before them
-%    is controlled by |\FBthinskip| (|thinwd|, |thinst|, |thinsh|) or
-%    |\FBcolonskip| (|colnwd|, |colnst|, |colnsh|) respectively.
+%    is controlled by commands |\FBthinspace| and |\FBcolonspace|
+%    respectively.
 %    Two options: if a space has been typed in before (turned into
 %    \emph{glue} in the node list), we remove the \emph{glue} and add a
 %    nobreak penalty and the required \emph{glue}.
@@ -1480,9 +1502,9 @@
           end
           local fbglue
           if FB_punct_thick[char] then
-             fbglue = new_glue_scaled(fid,colnwd,colnst,colnsh)
+             fbglue = new_glue_scaled(fid,colngl)
           else
-             fbglue = new_glue_scaled(fid,thinwd,thinst,thinsh)
+             fbglue = new_glue_scaled(fid,thingl)
           end
 %    \end{macrocode}
 %    In case |new_glue_scaled| fails (returns |nil|) the node list
@@ -1496,24 +1518,24 @@
              insert_node_before(head, item, copy_node(fbglue))
           end
 %    \end{macrocode}
-%    Let's consider `»' now (the only remaining glyph of
+%    Let’s consider `»’ now (the only remaining glyph of
 %    |FB_punct_left| class): we just have to remove any \emph{glue}
-%    possibly preceeding `»', then to insert the nobreak penalty and
-%    the proper \emph{glue} (controlled by |\FBguillskip|).
-%    This is done only if French quotes have been `activated' by
+%    possibly preceeding `»’, then to insert the nobreak penalty and
+%    the proper \emph{glue} (controlled by |\FBguillspace|).
+%    This is done only if French quotes have been `activated’ by
 %    options \fbo{og=«, fg=»} in \fbsetup{} and can be denied locally
 %    with |\NoAutoSpacing| (this is controlled by the |SIG| flag).
 %    If either a) the preceding glyph is member of |FB_guil_null|, or
-%    b) `»' is the first glyph of an |\hbox{}| or a paragraph, nothing
+%    b) `»’ is the first glyph of an |\hbox{}| or a paragraph, nothing
 %    is done, this is controlled by the |addgl| flag.
 %
 % \changes{v3.1a}{2014/06/18}{Added flag addgl which must also be true
-%    when prev or next is not a char (i.e. kern0 in
+%    when prev or next is not a char (i.e. \cs{kern}0 in
 %    «\cs{texttt}\{a\}»).}
 %
-% \changes{v3.1g}{2015/06/26}{flag addgl set to false for `»'
+% \changes{v3.1g}{2015/06/26}{flag addgl set to false for `»’
 %    at the beginning of an \cs{hbox} or a paragraph or a tabular
-%    `l' and `c' columns.}
+%    `l’ and `c’ columns.}
 %
 %    \begin{macrocode}
        elseif SIG then
@@ -1523,13 +1545,13 @@
                          not (prev_id == HLIST and prev_subtype == 3)
                         )
 %    \end{macrocode}
-%    Correction for tabular `c' (glue 0 plus 1 fil) and `l' (glue 1sp)
+%    Correction for tabular `c’ (glue 0 plus 1 fil) and `l’ (glue 1sp)
 %    columns:
 %    \begin{macrocode}
           if is_glue and glue_wd <= 1 then
              addgl = false
           end
-          local fbglue = new_glue_scaled(fid,guilwd,guilst,guilsh)
+          local fbglue = new_glue_scaled(fid,guilgl)
           if addgl and fbglue then
              if is_glue then
                 head = remove_node(head,prev,true)
@@ -1540,9 +1562,9 @@
        end
     end
 %    \end{macrocode}
-%    Similarly, for `«' (unique member of the |FB_punct_right| class):
+%    Similarly, for `«’ (unique member of the |FB_punct_right| class):
 %    unless either a) the next glyph is member of |FB_guil_null|, or
-%    b) `«' is the last glyph of an |\hbox{}| or a paragraph (then the
+%    b) `«’ is the last glyph of an |\hbox{}| or a paragraph (then the
 %    |addgl| flag is false, nothing is done), we remove any \emph{glue}
 %    possibly following it and insert first the proper \emph{glue} then
 %    a nobreak penalty so that finally the penalty preceeds the
@@ -1552,7 +1574,7 @@
 %    (i.e. in « \cs{texttt}\{a\} »).}
 %
 % \changes{v3.1g}{2015/06/26}{Flag addgl set to false for
-%   `«' at the end of an \cs{hbox} or a paragraph or when followed by
+%   `«’ at the end of an \cs{hbox} or a paragraph or when followed by
 %   a null glue (i.e. springs).}
 %
 %    \begin{macrocode}
@@ -1591,8 +1613,8 @@
        local addgl = (next_char and not FB_guil_null[next_char]) or
                      (next and not next_char)
 %    \end{macrocode}
-%    Correction for tabular `c' columns.  For `r' columns, a final
-%    `«' character needs to be coded as |\mbox{«}| for proper spacing
+%    Correction for tabular `c’ columns.  For `r’ columns, a final
+%    `«’ character needs to be coded as |\mbox{«}| for proper spacing
 %    (|\NoAutoSpacing| is another option).
 %    \begin{macrocode}
        if is_glue and glue_wd == 0 then
@@ -1599,7 +1621,7 @@
           addgl = false
        end
        local fid = item.font
-       local fbglue = new_glue_scaled(fid,guilwd,guilst,guilsh)
+       local fbglue = new_glue_scaled(fid,guilgl)
        if addgl and fbglue then
           if is_glue then
              head = remove_node(head,next,true)
@@ -1655,11 +1677,11 @@
 %    Call function kpse.find\_file first, as suggested by Paul Gaborit.}
 %
 % \changes{v3.1g}{2015/06/17}{Lua function french\_punctuation is now
-%    inserted at the end of the "kerning" callback (no priority)
-%    instead of "hpack\_filter" and "pre\_linebreak\_filter".}
+%    inserted at the end of the `kerning’ callback (no priority)
+%    instead of `hpack\_filter’ and `pre\_linebreak\_filter’.}
 %
 %    In \LaTeXe, file \file{frenchb.lua} will be loaded
-%    `AtBeginDocument' \emph{after} processing options
+%    `AtBeginDocument’ \emph{after} processing options
 %    (\fbo{ThinColonSpace} needs to be taken into account).  The next
 %    definition will be used to activate Lua punctuation: it sets the
 %    language number for French, loads \file{frenchb.lua} and adds
@@ -1691,7 +1713,7 @@
 %  \label{sssec-punct-xetex}
 %
 %    If |\XeTeXinterchartokenstate| is available, we use the
-%    ``inter char'' mechanism to provide correct spacing in French
+%    ``inter char’’ mechanism to provide correct spacing in French
 %    before the four characters |;| |!| |?| and |:|.  The basis of the
 %    following code was borrowed from the \pkg{polyglossia} package,
 %    see \file{gloss-french.ldf}.  We use the same mechanism for French
@@ -1703,7 +1725,7 @@
 %    and |\FB at nonchar| for all other tokens (glues, kerns, math and box
 %    boundaries, etc.).
 %    These defaults should not be changed otherwise the spacing before
-%    the `high punctuation' characters and inside quotes might not be
+%    the `high punctuation’ characters and inside quotes might not be
 %    correct.
 %
 %    We switch |\XeTeXinterchartokenstate| to 1 and change the
@@ -1743,8 +1765,8 @@
 %
 % \changes{v2.6g}{2013/12/09}{U+00A0 (Unicode nobreakspace) and U+202F
 %    (Unicode nobreakthinspace) added to class \cs{FB at punctnul}
-%    to prevent frenchb from adding it's own space before `high
-%    punctuation' characters.}
+%    to prevent frenchb from adding it’s own space before `high
+%    punctuation’ characters.}
 %
 % \changes{v2.6h}{2014/01/03}{New class \cs{FB at guilnul} for characters
 %    U+00A0 (Unicode nobreakspace) and U+202F (Unicode
@@ -1764,7 +1786,7 @@
 % \changes{v3.1l}{2016/02/07}{Add a variant of \cs{babel at savevariable}
 %    to save \cs{XeTeXcharclass}(es) in a loop.}
 %
-%    As |\babel at savevariable| doesn't work inside a |\bbl at for| loop,
+%    As |\babel at savevariable| doesn’t work inside a |\bbl at for| loop,
 %    we define a variant to save the |\XeTeXcharclass| values which
 %    will be modified in French.
 %    \begin{macrocode}
@@ -1807,12 +1829,12 @@
 %
 % \changes{v2.5g}{2011/12/31}{XeTeXcharclass(es) for French quotes will
 %    be set to \cs{FB at guilo} and \cs{FB at guilf} by options
-%    `og' and `fg' in \cs{frenchbsetup}.  French quotes should behave
+%    `og’ and `fg’ in \cs{frenchbsetup}.  French quotes should behave
 %    as normal characters by default in XeLaTeX as in LaTeX.}
 %
 % \changes{v2.5i}{2012/04/20}{\file{xeCJK.sty} changes the
-%    \cs{XeTeXcharclass} of ASCII chars '-' ',' '.' ')' ']' '\}'
-%    '\{' '\%' opening and closing single and double quotes.
+%    \cs{XeTeXcharclass} of ASCII chars `-’ `,’ `.’ `)’ `]’ `\}’
+%    `\{’ `\%’ opening and closing single and double quotes.
 %    We set their class to 0 in French and reset their class
 %    to their original value when leaving French.  See
 %    \cs{FB at xetex@punct at nonfrench} below.}
@@ -1848,7 +1870,7 @@
        \fi}%
       \def\shorthandon##1{}%
 %    \end{macrocode}
-%    Let's now set the classes and interactions between classes.
+%    Let’s now set the classes and interactions between classes.
 %    When false, the flag |\ifFB at spacing| switches off any interaction
 %    between classes (this flag is controlled by user-level command
 %    |\NoAutoSpacing|; this flag is also set to false when the current
@@ -1861,11 +1883,11 @@
      \XeTeXinterchartoks \FB at guilf \FB at punctthick = {%
            \ifFB at spacing\FDP at colonspace\fi}%
 %    \end{macrocode}
-%    Small glues such as ``glue 1sp'' in tabular `l' columns or ``glue
-%    0 plus 1 fil'' in tabular `c' columns or \env{lstlisting}
+%    Small glues such as ``glue 1sp’’ in tabular `l’ columns or ``glue
+%    0 plus 1 fil’’ in tabular `c’ columns or \env{lstlisting}
 %    environment should not trigger any extra space; they will still do
 %    when \fbo{AutoSpacePunctuation} is true: unfortunately
-%    |\XeTeXcharclass=\FB at nonchar| isn't specific to glue tokens (this
+%    |\XeTeXcharclass=\FB at nonchar| isn’t specific to glue tokens (this
 %    class includes box and math boundaries f.i.), so the |\else| part
 %    cannot be omitted.
 %    \begin{macrocode}
@@ -1897,15 +1919,15 @@
              \fi
            \fi}%
      \XeTeXinterchartoks \FB at guilo \z@ = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
-           \ifFB at spacing\FBguillspace\ignorespaces\fi}%
+           \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
      \XeTeXinterchartoks \z@ \FB at guilf = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
-           \ifFB at spacing\unskip\FBguillspace\fi}%
+           \ifFB at spacing\unskip\FB at guillspace\fi}%
 %    \end{macrocode}
 %    This will avoid spurious spaces in (!), [?] and with Unicode
 %    nobreakspaces (U+00A0, U+202F):
@@ -1915,7 +1937,7 @@
              {\XeTeXcharclass\FB at char=\FB at punctnul}%
 %    \end{macrocode}
 %    These characters have their class changed by \file{xeCJK.sty},
-%    let's reset them to 0 in French.
+%    let’s reset them to 0 in French.
 %    \begin{macrocode}
      \bbl at for\FB at char
              {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
@@ -1934,7 +1956,7 @@
 %  \label{sssec-punct-tex}
 %
 %    In standard (pdf)TeX we need to make the four characters |;| |!| |?|
-%    and |:| `active' and provide their definitions.
+%    and |:| `active’ and provide their definitions.
 %    \begin{macrocode}
 \ifFB at active@punct
   \initiate at active@char{:}%
@@ -1946,10 +1968,10 @@
 %    \texttt{!}  \texttt{?} and \texttt{:}.  This should only happen
 %    in horizontal mode, hence the test |\ifhmode|.
 %
-%    In horizontal mode, if a space has been typed before `;' we
+%    In horizontal mode, if a space has been typed before `;’ we
 %    remove it and put an unbreakable |\FBthinspace| instead.  If no
 %    space has been typed, we add |\FDP at thinspace| which will be
-%    defined, up to the user's wishes, as |\FBthinspace|, or as
+%    defined, up to the user’s wishes, as |\FBthinspace|, or as
 %    |\@empty|.
 %
 % \changes{v3.1k}{2015/12/05}{(pdfTeX shorthands) test on \cs{lastskip}
@@ -2012,7 +2034,7 @@
     \string:}
 %    \end{macrocode}
 %    When the active characters appear in an environment where their
-%    French behaviour is not wanted they should give an `expected'
+%    French behaviour is not wanted they should give an `expected’
 %    result.  Therefore we define shorthands at system level as well.
 %    \begin{macrocode}
   \declare at shorthand{system}{:}{\string:}
@@ -2026,8 +2048,8 @@
 %    \begin{macrocode}
   \FB at addto{extras}{\languageshorthands{french}%
 %    \end{macrocode}
-%    These characters are `turned on' once, later their definition may
-%    vary.  Don't misunderstand the following code: they keep being
+%    These characters are `turned on’ once, later their definition may
+%    vary.  Don’t misunderstand the following code: they keep being
 %    active all along the document, even when leaving French.
 %    \begin{macrocode}
     \bbl at activate{:}\bbl at activate{;}%
@@ -2043,9 +2065,9 @@
 %  \subsubsection{Punctuation switches common to all engines}
 %  \label{sssec-punct-switches}
 %
-%    A new `if' |\ifFBAutoSpacePunctuation| needs to be defined now to
-%    control the two possible ways of dealing with `high punctuation'.
-%    it's default value is true, but it can be set to false by
+%    A new `if’ |\ifFBAutoSpacePunctuation| needs to be defined now to
+%    control the two possible ways of dealing with `high punctuation’.
+%    it’s default value is true, but it can be set to false by
 %    \fbsetup{AutoSpacePunctuation=false} for finer control.
 %    \begin{macrocode}
 \newif\ifFBAutoSpacePunctuation  \FBAutoSpacePunctuationtrue
@@ -2096,8 +2118,8 @@
 % \end{macro}
 %
 % \changes{v2.3a}{2008/10/10}{In LaTeX, frenchb no longer adds spaces
-%     before `high punctuation' characters in computer code.
-%     Suggested by Yannis Haralambous.}
+%    before `high punctuation’ characters in computer code.
+%    Suggested by Yannis Haralambous.}
 %
 % \begin{macro}{\rmfamilyFB}
 % \begin{macro}{\sffamilyFB}
@@ -2108,7 +2130,7 @@
 %    pointed out by Manuel Pégourié-Gonnard.}
 %
 %    In \LaTeXe{} |\ttfamily| (and hence |\texttt|) will be redefined
-%    `AtBeginDocument' as |\ttfamilyFB| so that no space
+%    `AtBeginDocument’ as |\ttfamilyFB| so that no space
 %    is added before the four |; : ! ?| characters, even if
 %    \fbo{AutoSpacePunctuation} is \fbo{true}.  When
 %    \fbo{AutoSpacePunctuation} is \fbo{false}, the eventually typed
@@ -2132,7 +2154,7 @@
 %    To be consistent with what is done for the |; : ! ?|
 %    characters, |\ttfamilyFB| also switches off insertion of spaces
 %    inside French guillemets \emph{when they are typed in as
-%    characters} with the `og'/`fg' options in \fbsetup{}.
+%    characters} with the `og’/`fg’ options in \fbsetup{}.
 %    This is also a workaround for the weird behaviour of these
 %    characters in verbatim mode.
 %
@@ -2177,13 +2199,14 @@
 %  \begin{macro}{\guillemotright}
 %  \begin{macro}{\textquoteddblleft}
 %  \begin{macro}{\textquoteddblright}
-%    \LaTeX{} users are supposed to use 8-bit output encodings (T1,
-%    LY1,\dots) to typeset French, those who still stick to OT1 should
-%    call \pkg{aeguill} or a similar package.  In both cases the
-%    commands |\guillemotleft| and |\guillemotright| will print the
-%    French opening and closing quote characters from the output font.
+%    With pdfLaTeX \LaTeX{} users are supposed to use 8-bit output
+%    encodings (T1, LY1,\dots) to typeset French, those who still
+%    stick to OT1 should load \pkg{aeguill} or a similar package.
+%    In both cases the commands |\guillemotleft| and |\guillemotright|
+%    will print the French opening and closing quote characters from
+%    the output font.
 %    For XeLaTeX and LuaLaTeX, |\guillemotleft| and |\guillemotright|
-%    are defined by package \pkg{xunicode} loaded by \pkg{fontspec}.
+%    are defined by package \pkg{fontspec} (v.~2.5d and up).
 %
 % \changes{v2.5a}{2010/08/20}{Change \cs{guillemotleft} and
 %    \cs{guillemotright} definitions for Unicode anf provide
@@ -2219,12 +2242,12 @@
 %
 %  \begin{macro}{\FB at og}
 %  \begin{macro}{\FB at fg}
-%    The next step is to provide correct spacing after |\guillemotleft|
-%    and before |\guillemotright|: a space precedes and follows
-%    quotation marks but no line break is allowed neither \emph{after}
-%    the opening one, nor \emph{before} the closing one.
+%  \begin{macro}{\FBguillspace}
+%    The next step is to provide correct spacing after `«’ and before
+%    `»’; no line break is allowed neither \emph{after} the opening
+%    one, nor \emph{before} the closing one.
 %    |\FBguillspace| which does the spacing, has been fine tuned by
-%    Thierry Bouche to 80\% of an inter-word space but with reduced
+%    Thierry Bouche to 80\% of an inter-word space with reduced
 %    stretchability.  French quotes (including spacing) are printed by
 %    |\FB at og| and |\FB at fg|, the expansion of the top level commands
 %    |\og| and |\og| is different in and outside French.
@@ -2232,67 +2255,64 @@
 % \changes{v3.0a}{2014/01/10}{Definitions of \cs{FB at og} and \cs{FB at fg}
 %    now depend on punctuation handling (LuaTeX / XeTeX / active).}
 %
-% \changes{v3.0a}{2014/01/10}{Added explicit \cs{FBguillskip}
-%    for LuaTeX.}
+% \changes{v3.3a}{2016/04/30}{Skip \cs{FBguillskip} for LuaTeX
+%    replaced by toks \cs{FBguillsp}.}
 %
-% \changes{v3.0c}{2014/04/18}{Changed \cs{FBguill at spacing} (internal)
-%    to \cs{FBguillspace} (public).}
-%
-%    LuaTeX which requires skips; |\FBguillskip| is computed from
-%    |\FBguillspace| for the |lmr10| font, its dimensions will
+%    LuaTeX requires toks; |\FBguillsp| will be computed from
+%    |\FBguillspace| `AtBeginDocument’, its dimensions will
 %    be scaled by \file{frenchb.lua} for the current font and used
-%    after `«' and before `»' when option \fbo{og=«, fg=»} is set.
+%    after `«’ and before `»’.
 %    \begin{macrocode}
-\newskip\FBguillskip
-\FBguillskip=2.664pt plus 0.500pt minus 0.888pt \relax
-\newcommand*{\FBguillspace}{\penalty\@M\hskip.8\fontdimen2\font
-                                         plus.3\fontdimen3\font
-                                        minus.8\fontdimen4\font}
+\newcommand*{\FBguillspace}{\hskip.8\fontdimen2\font
+                              plus.3\fontdimen3\font
+                             minus.8\fontdimen4\font \relax}
+\newcommand*{\FB at guillspace}{\penalty\@M\FBguillspace}
+\newtoks\FBguillsp
 %    \end{macrocode}
-%    For efficiency reasons, |\FB at og| and |\FB at fg| relie on
-%    |\FBguillspace| with LuaTeX engines (|\FB at spacing| is set
-%     to~0 locally).
+%    The definitions of |\FB at og| and |\FB at fg| need some engine-dependent
+%    tuning: for LuaTeX, |\FB at spacing| is set to~0 locally to prevent
+%    the quotes characters from adding space when option
+%    \fbo{og=«, fg=»} is set.
 %    \begin{macrocode}
 \ifFB at luatex@punct
   \DeclareRobustCommand*{\FB at og}{\leavevmode
           \bgroup\FB at spacing=0 \guillemotleft\egroup
-          \FBguillspace}
+          \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-          \FBguillspace
+          \FB at guillspace
           \bgroup\FB at spacing=0 \guillemotright\egroup}
 \fi
 %    \end{macrocode}
-%    With XeTeX, |\ifFB at spacing| is set to |false| locally to
-%    prevent the quotes characters from adding space when option
-%    \fbo{og=«, fg=»} is set.
-%    characters.
+%    With XeTeX, |\ifFB at spacing| is set to |false| locally for the
+%    same reason.
 %    \begin{macrocode}
 \ifFB at xetex@punct
   \DeclareRobustCommand*{\FB at og}{\leavevmode
         \bgroup\FB at spacingfalse\guillemotleft\egroup
-        \FBguillspace}
+        \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguillspace
+        \FB at guillspace
         \bgroup\FB at spacingfalse\guillemotright\egroup}
 \fi
 \ifFB at active@punct
   \DeclareRobustCommand*{\FB at og}{\leavevmode
         \guillemotleft
-        \FBguillspace}
+        \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguillspace
+        \FB at guillspace
         \guillemotright}
 \fi
 %    \end{macrocode}
 %  \end{macro}
 %  \end{macro}
+%  \end{macro}
 %
 %  \begin{macro}{\og}
 %  \begin{macro}{\fg}
 %
 %    The user level macros for quotation marks are named |\og|
-%    (``\underline{o}uvrez \underline{g}uillemets'') and |\fg|
-%    (``\underline{f}ermez \underline{g}uillemets'').
+%    (``\underline{o}uvrez \underline{g}uillemets’’) and |\fg|
+%    (``\underline{f}ermez \underline{g}uillemets’’).
 %    Another option for typesetting quotes in French is to use the
 %    command |\frquote| (see below).
 %    Dummy definition of |\og| and |\fg| just to ensure that this
@@ -2306,7 +2326,7 @@
 %    switched on and off through the |\extrasfrench| |\noextrasfrench|
 %    mechanism.  Outside French, |\og| and |\fg| will typeset standard
 %    English opening and closing double quotes.
-%    We'll try to be smart to users of David~Carlisle's \pkg{xspace}
+%    We’ll try to be smart to users of David~Carlisle’s \pkg{xspace}
 %    package: if this package is loaded there will be no need for |{}|
 %    or |\ | to get a space after |\fg|, otherwise |\xspace| will be
 %    defined as |\relax| (done at the end of this file).
@@ -2348,8 +2368,9 @@
 %    long French quotations.}
 %
 %    \begin{macro}{\frquote}
-%    Maximum two levels are supported by |\frquote{}|.
-%    Let's define the default quote characters to be used for level one
+%    Another way of entering French quotes relies on |\frquote{}|
+%    with supports up to two levels of quotes.
+%    Let’s define the default quote characters to be used for level one
 %    or two of quotes\dots{}
 %    \begin{macrocode}
 \newcommand*{\ogi}{\FB at og}
@@ -2395,6 +2416,9 @@
 % \changes{v3.1j}{2015/11/21}{\cs{PackageWarning} is undefined in
 %    Plain, use \cs{fb at warning} instead.}
 %
+% \changes{v3.3a}{2017/04/30}{\cs{FB at quotespace} (kern), changed
+%    into \cs{FB at guillspace}.}
+%
 %    The internal command |\fr at quote| takes one (long) argument: the
 %    quotation text.
 %    \begin{macrocode}
@@ -2401,11 +2425,6 @@
 \newcommand{\fr at quote}[1]{%
   \leavevmode
   \advance\FBguill at level by \@ne
-%    \end{macrocode}
-%    Kern used inside French quotes; must match the fixed part of
-%    |\FBguillspace|.
-%    \begin{macrocode}
-  \def\FB at quotespace{\kern.8\fontdimen2\font}%
   \ifcase\FBguill at level
   \or
 %    \end{macrocode}
@@ -2416,16 +2435,15 @@
     \FB at everypar=\everypar
     \ifx\FBeveryparguill\FBguillnone
     \else
-      \def\FBeverypar at quote{\FBeveryparguill\FB at quotespace}%
+      \def\FBeverypar at quote{\FBeveryparguill\FB at guillspace}%
       \everypar=\expandafter{\the\everypar \FBeverypar at quote}%
     \fi
     \ogi #1\fgi
   \or
 %    \end{macrocode}
-%    This for level 2 (inner) quotations: Omega's command
-%    |\localleftbox| included in LuaTeX, formerly named
-%    |\luatexlocalleftbox|, is convenient for repeating guillemets
-%    at the beginning of every line.\label{cs:localleftbox}
+%    This for level 2 (inner) quotations: Omega’s command
+%    |\localleftbox| included in LuaTeX, is convenient for repeating
+%    guillemets at the beginning of every line.\label{cs:localleftbox}
 %
 % \changes{v3.1i}{2015/10/04}{\cs{luatexlocalleftbox} changed to
 %    \cs{localleftbox} by new LaTeX release 2015/10/01.}
@@ -2432,12 +2450,12 @@
 %
 %    \begin{macrocode}
     \ifx\FBeverylineguill\FBguillopen
-      \localleftbox{\guillemotleft\FB at quotespace}%
+      \localleftbox{\guillemotleft\FB at guillspace}%
       \let\FBeverypar at quote\relax
       \ogi #1\ifFBcloseguill\fgi\fi
     \else
       \ifx\FBeverylineguill\FBguillclose
-        \localleftbox{\guillemotright\FB at quotespace}%
+        \localleftbox{\guillemotright\FB at guillspace}%
         \let\FBeverypar at quote\relax
         \ogi #1\ifFBcloseguill\fgi\fi
       \else
@@ -2448,14 +2466,14 @@
         \let\FBeverypar at quote\relax
         \ifFBInnerGuillSingle
           \def\ogii{\leavevmode
-                    \guilsinglleft\FBguillspace}%
+                    \guilsinglleft\FB at guillspace}%
           \def\fgii{\ifdim\lastskip>\z@\unskip\fi
-                    \FBguillspace\guilsinglright}%
+                    \FB at guillspace\guilsinglright}%
           \ifx\FBeveryparguill\FBguillopen
-            \def\FBeverypar at quote{\guilsinglleft\FB at quotespace}%
+            \def\FBeverypar at quote{\guilsinglleft\FB at guillspace}%
           \fi
           \ifx\FBeveryparguill\FBguillclose
-            \def\FBeverypar at quote{\guilsinglright\FB at quotespace}%
+            \def\FBeverypar at quote{\guilsinglright\FB at guillspace}%
           \fi
         \fi
         \ogii #1\ifFBcloseguill \fgii \fi
@@ -2466,11 +2484,11 @@
 %    Warn if |\FBguill at level| $\ge 3$:
 %    \begin{macrocode}
     \ifx\PackageWarning\@undefined
-      \fb at warning{\noexpand\frquote\space accepts no more than
+      \fb at warning{\noexpand\frquote\space handles up to
                   two levels.\\ Quotation not printed.}%
     \else
       \PackageWarning{frenchb.ldf}{%
-         \protect\frquote\space accepts no more than two levels
+         \protect\frquote\space handles up to two levels.
          \MessageBreak Quotation not printed.  Reported}
     \fi
   \fi
@@ -2491,17 +2509,17 @@
 % \begin{macro}{\datefrench}
 %    The macro |\datefrench| redefines the command |\today| to
 %    produce French dates. This new implementation requires \babel~3.9i
-%    or newer but, as of 3.9k, doesn't work with Plain based formats,
+%    or newer but, as of 3.9k, doesn’t work with Plain based formats,
 %    so |\date\CurrentOption| is defined the old way for these formats.
 %
-% \changes{v2.0}{2006/11/06}{2 '\cs{relax}' added in
-%    \cs{today}'s definition.}
+% \changes{v2.0}{2006/11/06}{2 `\cs{relax}’ added in
+%    \cs{today}’s definition.}
 %
 % \changes{v2.1a}{2008/03/25}{\cs{today} changed (correction in 2.0
 %    was wrong: \cs{today} was printed without spaces in toc).}
 %
-% \changes{v3.0a}{2014/02/18}{Take advantage of babel's \cs{SetString}
-%    commands for \cs{datefrench}.  Doesn't work with Plain (yet?).}
+% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s \cs{SetString}
+%    commands for \cs{datefrench}.  Doesn’t work with Plain (yet?).}
 %
 % \changes{v3.0c}{2014/03/26}{\cs{SetString} still does not work for
 %    Plain with babel 3.9k.  Need to define \cs{datefrench}.}
@@ -2547,7 +2565,7 @@
 %
 %  \subsection{Extra utilities}
 %
-%    Let's provide the French user with some extra utilities.
+%    Let’s provide the French user with some extra utilities.
 %
 % \changes{v2.1a}{2008/03/24}{Command \cs{fup} added to produce
 %    better superscripts than \cs{textsuperscript}.}
@@ -2556,7 +2574,7 @@
 %
 % \changes{v2.1c}{2008/04/29}{Provide a temporary definition
 %    (hyperref safe) of \cs{up} in case it has to be expanded in
-%    the preamble (by beamer's \cs{title} command for instance).}
+%    the preamble (by beamer’s \cs{title} command for instance).}
 %
 % \changes{v2.4d}{2010/07/28}{Command \cs{up} defined with
 %    \cs{providecommand} instead of \cs{newcommand} as \cs{up} may be
@@ -2572,13 +2590,13 @@
 %    before \cs{ifLaTeXe} to avoid an error with plainTeX.}
 %
 % \changes{v2.3a}{2008/09/30}{\cs{lowercase} changed to
-%    \cs{MakeLowercase} as the former doesn't work for non ASCII
+%    \cs{MakeLowercase} as the former doesn’t work for non ASCII
 %    characters in encodings like applemac, utf-8,\dots}
 %
 %    |\up| eases the typesetting of superscripts like
-%    `1\textsuperscript{er}'.  Up to version 2.0 of \frenchb{} |\up|
-%    was just a shortcut for |\textsuperscript| in \LaTeXe, but several
-%    users complained that |\textsuperscript| typesets superscripts
+%    `1\up{er}’.  Up to version 2.0 of \frenchb{} |\up| was just a
+%    shortcut for |\textsuperscript| in \LaTeXe, but several users
+%    complained that |\textsuperscript| typesets superscripts
 %    too high and too big, so we now define |\fup| as an attempt to
 %    produce better looking superscripts.  |\up| is defined as |\fup|
 %    but \fbsetup{FrenchSuperscripts=false} redefines |\up|
@@ -2588,7 +2606,7 @@
 %    to just use them, otherwise |\fup| has to simulate superscripts
 %    by scaling and raising ordinary letters.  Scaling is done using
 %    package \pkg{scalefnt} which will be loaded at the end of
-%    \babel's loading (\frenchb{} being an option of \babel, it cannot
+%    \babel’s loading (\frenchb{} being an option of \babel, it cannot
 %    load a package while being read).
 %
 %    \begin{macrocode}
@@ -2599,8 +2617,8 @@
 %    \end{macrocode}
 %    |\FB at up@fake| holds the definition of fake superscripts.
 %    The scaling ratio is 0.65, raising is computed to put the top of
-%    lower case letters (like `m') just under the top  of upper case
-%    letters (like `M'), precisely 12\% down.  The chosen settings
+%    lower case letters (like `m’) just under the top  of upper case
+%    letters (like `M’), precisely 12\% down.  The chosen settings
 %    look correct for most fonts, but can be tuned by the end-user
 %    if necessary by changing |\FBsupR| and |\FBsupS| commands.
 %
@@ -2622,19 +2640,19 @@
 %    The only packages I currently know to take advantage of real
 %    superscripts are a) \pkg{realscripts} used in conjunction with
 %    XeLaTeX or LuaLaTeX and OpenType fonts having the font feature
-%    'VerticalPosition=Superior' and b) \pkg{fourier}
+%    `VerticalPosition=Superior’ and b) \pkg{fourier}
 %    (from version 1.6) when Expert Utopia fonts are available.
 %
-%    |\FB at up| checks whether the current font is a Type1 `Expert'
-%    (or `Pro') font with real superscripts or not (the code works
+%    |\FB at up| checks whether the current font is a Type1 `Expert’
+%    (or `Pro’) font with real superscripts or not (the code works
 %    currently only with \file{fourier-1.6} but could work with any
 %    Expert Type1 font with built-in superscripts, see below), and
 %    decides to use real or fake superscripts.
 %    It works as follows: the content of |\f at family| (family name of
 %    the current font) is split by |\FB at split| into two pieces, the
-%    first three characters (`|fut|' for Fourier, `|ppl|' for Adobe's
+%    first three characters (`|fut|’ for Fourier, `|ppl|’ for Adobe’s
 %    Palatino, \dots) stored in |\FB at firstthree| and the rest stored
-%    in |\FB at suffix| which is expected to be `|x|' or `|j|' for expert
+%    in |\FB at suffix| which is expected to be `|x|’ or `|j|’ for expert
 %    fonts.
 %    \begin{macrocode}
   \def\FB at split#1#2#3#4\@nil{\def\FB at firstthree{#1#2#3}%
@@ -2681,13 +2699,13 @@
              \realsuperscript{\FB at lc{#1}}\egroup
     \fi}
 %    \end{macrocode}
-%    Let's provide a temporary definition for |\up| (redefined
-%    `AtBeginDocument' as |\fup| or |\textsuperscript| according to
+%    Let’s provide a temporary definition for |\up| (redefined
+%    `AtBeginDocument’ as |\fup| or |\textsuperscript| according to
 %    \fbsetup{} options).
 %    \begin{macrocode}
   \providecommand*{\up}{\relax}
 %    \end{macrocode}
-%    Poor man's definition of |\up| for Plain.
+%    Poor man’s definition of |\up| for Plain.
 %    \begin{macrocode}
 \else
   \providecommand*{\up}[1]{\leavevmode\raise1ex\hbox{\sevenrm #1}}
@@ -2703,9 +2721,9 @@
 %  \begin{macro}{\iers}
 %  \begin{macro}{\ieres}
 % \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
-%   of \cs{ieme} and co: \cs{up} already does the conversion.}
+%    of \cs{ieme} and co: \cs{up} already does the conversion.}
 %
-%    Some handy macros for those who don't know how to abbreviate
+%    Some handy macros for those who don’t know how to abbreviate
 %    ordinals:
 %    \begin{macrocode}
 \def\ieme{\up{e}\xspace}
@@ -2743,7 +2761,7 @@
                        #1\up{o})\kern+.3em}
 %    \end{macrocode}
 %
-%    Typing |\primo| should result in `$1^{\rm o}$\kern+.3em',
+%    Typing |\primo| should result in `\up{o}\kern+.3em’,
 %    \begin{macrocode}
 \def\primo{\FrenchEnumerate1}
 \def\secundo{\FrenchEnumerate2}
@@ -2750,7 +2768,7 @@
 \def\tertio{\FrenchEnumerate3}
 \def\quarto{\FrenchEnumerate4}
 %    \end{macrocode}
-%    while typing |\fprimo)| gives `1$^{\rm o}$)\kern+.3em.
+%    while typing |\fprimo)| gives `\up{o})\kern+.3em.
 %    \begin{macrocode}
 \def\fprimo){\FrenchPopularEnumerate1}
 \def\fsecundo){\FrenchPopularEnumerate2}
@@ -2758,8 +2776,8 @@
 \def\fquarto){\FrenchPopularEnumerate4}
 %    \end{macrocode}
 %
-%    Let's provide four macros for the common abbreviations
-%    of ``Numéro''.
+%    Let’s provide four macros for the common abbreviations
+%    of ``Numéro’’.
 %    \begin{macrocode}
 \DeclareRobustCommand*{\No}{N\up{o}\kern+.2em}
 \DeclareRobustCommand*{\no}{n\up{o}\kern+.2em}
@@ -2778,7 +2796,7 @@
 %    hyphenated, we provide a command (its name comes from Boxed Small
 %    Caps) to input them easily.  Note that this command has changed
 %    with version~2 of \frenchb: a |\kern0pt| is used instead of |\hbox|
-%    because |\hbox| would break microtype's font expansion; as a
+%    because |\hbox| would break microtype’s font expansion; as a
 %    (positive?) side effect, composed names (such as Dupont-Durand)
 %    can now be hyphenated on explicit hyphens.
 %    Usage: |Jean~\bsc{Duchemin}|.
@@ -2793,7 +2811,7 @@
 %    \end{macrocode}
 %  \end{macro}
 %
-%    Some definitions for special characters.  We won't define |\tilde|
+%    Some definitions for special characters.  We won’t define |\tilde|
 %    as a Text Symbol not to conflict with the macro |\tilde| for math
 %    mode and use the name |\tild| instead.  Note that |\boi| may
 %    \emph{not} be used in math mode, its name in math mode is
@@ -2840,28 +2858,28 @@
 %
 %  \begin{macro}{\degres}
 %    We now define a macro |\degres| for typesetting the abbreviation
-%    for `degrees' (as in `degrees Celsius').  As the bounding box of
-%    the character `degree' has \emph{very} different widths in CM/EC
+%    for `degrees’ (as in `degrees Celsius’).  As the bounding box of
+%    the character `degree’ has \emph{very} different widths in CM/EC
 %    and PostScript fonts, we fix the width of the bounding box of
-%    |\degres| to 0.3\,em, this lets the symbol `degree' stick to the
+%    |\degres| to 0.3\,em, this lets the symbol `degree’ stick to the
 %    preceding (e.g., |45\degres|) or following character
 %    (e.g., |20~\degres C|).
 %
 % \changes{v2.6e}{2013/07/06}{Refrain from redefining \cs{textdegree}
 %    from latin1.def, applemac.def, etc. as \cs{degres} because it
-%    loops in hyperref's bookmarks.  Pointed out by Eddy Flas on fctt.}
+%    loops in hyperref’s bookmarks.  Pointed out by Eddy Flas on fctt.}
 %
 %    If \TeX{} Companion fonts are available (\file{textcomp.sty}),
-%    we pick up |\textdegree| from them instead of emulating `degrees'
+%    we pick up |\textdegree| from them instead of emulating `degrees’
 %    from the |\r{}| accent.  Otherwise we advise the user (once only)
 %    to use TS1-encoding.
 %
 % \changes{v2.1c}{2008/04/29}{Provide a temporary definition (hyperref
 %    safe) of \cs{degres} in case it has to be expanded in the preamble
-%    (by beamer's \cs{title} command for instance).}
+%    (by beamer’s \cs{title} command for instance).}
 %
 % \changes{v2.5h}{2012/03/21}{textcomp.sty has changed.  The test
-%    about \cs{M at TS1} is no longer relevant, let's change it.}
+%    about \cs{M at TS1} is no longer relevant, let’s change it.}
 %
 %    \begin{macrocode}
 \ifLaTeXe
@@ -2907,11 +2925,11 @@
 %    |\StandardMathComma| switches back to the standard behaviour
 %    of the comma.
 %
-%    \changes{v3.2e}{2017/01/09}{\cs{DecimalMathComma} didn’t work
-%       with LuaTeX.  Fixed now.}
+% \changes{v3.2e}{2017/01/09}{\cs{DecimalMathComma} didn’t work
+%    with LuaTeX.  Fixed now.}
 %
-%    \changes{v3.2f}{2017/01/15}{Fixed conflict with the icomma
-%       package.}
+% \changes{v3.2f}{2017/01/15}{Fixed conflict with the icomma
+%    package.}
 %
 %    Unfortunately, |\newcount| inside |\if| breaks Plain formats.
 %    \begin{macrocode}
@@ -2982,7 +3000,7 @@
 %  \end{macro}
 %
 %    The next definitions only make sense for \LaTeXe.
-%    For Plain based formats, let's activate LuaTeX punctuation if
+%    For Plain based formats, let’s activate LuaTeX punctuation if
 %    necessary, then cleanup and exit. Temporary fix: |\l at french| is
 %    not properly set by \babel~3.9h with Plain LuaTeX format.
 %
@@ -3032,8 +3050,8 @@
 %    \end{macrocode}
 %
 % \changes{v2.0c}{2007/06/25}{There is no need to define here
-%    numprint's command \cs{npstylefrench}, it will be redefined
-%    `AtBeginDocument' by \cs{FBprocess at options}.}
+%    numprint’s command \cs{npstylefrench}, it will be redefined
+%    `AtBeginDocument’ by \cs{FBprocess at options}.}
 %
 %  \subsection{Caption names}
 %  \label{ssec-captions}
@@ -3042,26 +3060,29 @@
 %    the \LaTeX{} caption names.
 %
 % \begin{macro}{\captionsfrench}
-%    Let's first define  |\captionsfrench| which sets all strings used
+%    Let’s first define  |\captionsfrench| which sets all strings used
 %    in the four standard document classes provided with \LaTeX.
 %
-% \changes{v2.0}{2006/11/06}{`Fig.' changed to `Figure' and
-%     `Tab.' to `Table'.}
+% \changes{v2.0}{2006/11/06}{`Fig.’ changed to `Figure’ and
+%    `Tab.’ to `Table’.}
 %
 % \changes{v2.5a}{2010/08/16}{\cs{emph} deleted in \cs{seename}
-%     and \cs{alsoname} to match what is done for the other languages.
-%     Suggested by Marc Baudoin.}
+%    and \cs{alsoname} to match what is done for the other languages.
+%    Suggested by Marc Baudoin.}
 %
-% \changes{v3.0a}{2014/02/18}{Take advantage of babel's \cs{SetString}
+% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s \cs{SetString}
 %    commands for captionnames.}
 %
 % \changes{v3.1b}{2014/09/15}{Change \cs{scshape} to customisable
 %    \cs{FBfigtabshape} for \cs{figurename} and \cs{tablename}.}
 %
-% \changes{v3.1g}{2015/05/10}{\cs{partname}'s definition depends now on
+% \changes{v3.1g}{2015/05/10}{\cs{partname}’s definition depends now on
 %    flag PartNameFull.  No need to redefine it in \cs{frenchbsetup}.}
 %
-%   Let's give a chance to a class or a package read before frenchb to
+% \changes{v3.3a}{2017/04/30}{Commands \cs{frenchpartfirst},
+%    \cs{frenchpartsecond} and \cs{frenchpartnameord} added.}
+%
+%   Let’s give a chance to a class or a package read before frenchb to
 %   define |\FBfigtabshape| as |\relax|, otherwise |\FBfigtabshape|
 %   will be defined as |\scshape| (can be changed with
 %    \fbsetup{SmallCapsFigTabCaptions=false}).
@@ -3069,10 +3090,10 @@
 \ifx\FBfigtabshape\@undefined \let\FBfigtabshape\scshape \fi
 %    \end{macrocode}
 %
-%   New implementation for caption names (requires \babel's~3.9 or up).
+%   New implementation for caption names (requires \babel’s~3.9 or up).
 %    \begin{macrocode}
 \StartBabelCommands*{\BabelLanguages}{captions}
-      [unicode, fontenc=EU1 EU2, charset=utf8]
+      [unicode, fontenc=EU1 EU2 TU, charset=utf8]
    \SetString{\refname}{Références}
    \SetString{\abstractname}{Résumé}
    \SetString{\prefacename}{Préface}
@@ -3079,11 +3100,13 @@
    \SetString{\contentsname}{Table des matières}
    \SetString{\ccname}{Copie à }
    \SetString{\proofname}{Démonstration}
+   \SetString{\partfirst}{Première}
+   \SetString{\partsecond}{Deuxième}
    \SetStringLoop{ordinal#1}{%
-       Première,Deuxième,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}
+     \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}
@@ -3107,25 +3130,29 @@
    \SetString{\glossaryname}{Glossaire}
 %    \end{macrocode}
 %   When \fbo{PartNameFull=true} (default), |\part{}| is printed in
-%   French as ``Première partie'' instead of ``Partie I''.
-%   As logic is prohibited inside |\SetString|, let's hide the test
+%   French as ``Première partie’’ instead of ``Partie I’’.
+%   As logic is prohibited inside |\SetString|, let’s hide the test
 %   about \fbo{PartNameFull} in |\FB at partname|.
 %    \begin{macrocode}
+   \SetString{\partfirst}{Premi\`ere}
+   \SetString{\partsecond}{Deuxi\`eme}
+   \SetString{\partnameord}{partie}
    \SetStringLoop{ordinal#1}{%
-       Premi\`ere,Deuxi\`eme,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}
+     \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
-            partie\FB at emptypart
-          \else
-            Partie%
-          \fi}%
-      }
+     \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
 %    \end{macrocode}
@@ -3165,44 +3192,44 @@
 %    and |\captionsacadian| either.
 %
 % \begin{macro}{\CaptionSeparator}
-%    Let's consider now captions in figures and tables.
+%    Let’s consider now captions in figures and tables.
 %    In French, captions in figures and tables should never be printed
-%    as `Figure 1:' which is the default in standard \LaTeXe{} classes;
-%    the `:' is made active too late, no space is added before it.
-%    With LuaLaTeX and XeLaTeX, this glitch doesn't occur, you get
-%    `Figure 1~:' which is correct in French.  With pdfLaTeX \frenchb{}
+%    as `Figure 1:’ which is the default in standard \LaTeXe{} classes;
+%    the `:’ is made active too late, no space is added before it.
+%    With LuaLaTeX and XeLaTeX, this glitch doesn’t occur, you get
+%    `Figure 1~:’ which is correct in French.  With pdfLaTeX \frenchb{}
 %    provides the following workaround.
 %
 %    The standard definition of |\@makecaption| (e.g., the one provided
 %    in article.cls, report.cls, book.cls which is frozen for \LaTeXe{}
 %    according to Frank Mittelbach), is saved in |\STD at makecaption|.
-%    `AtBeginDocument' we compare it to its current definition (some
+%    `AtBeginDocument’ we compare it to its current definition (some
 %    classes like \cls{memoir}, koma-script classes, AMS classes,
 %    ua-thesis.cls\dots change it).
 %    If they are identical, \frenchb{} just adds a hook called
 %    |\FBCaption at Separator| to |\@makecaption|; |\FBCaption at Separator|
-%    defaults to `: ' as in the standard |\@makecaption| and will be
-%    changed to ` : ' in French `AtBeginDocument'; it can be also set to
-%    |\CaptionSeparator| (` -- ') using \fbo{CustomiseFigTabCaptions}.
+%    defaults to `: ’ as in the standard |\@makecaption| and will be
+%    changed to ` : ’ in French `AtBeginDocument’; it can be also set to
+%    |\CaptionSeparator| (` -- ’) using \fbo{CustomiseFigTabCaptions}.
 %
 % \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to
-%     \cs{FBWarning} (in case \cs{@makecaption} has been customised).
-%     \cs{FBWarning} is defined as \cs{PackageWarning} by default but
-%     can be made silent using \cs{frenchbsetup}, (suggested by MPG).}
+%    \cs{FBWarning} (in case \cs{@makecaption} has been customised).
+%    \cs{FBWarning} is defined as \cs{PackageWarning} by default but
+%    can be made silent using \cs{frenchbsetup}, (suggested by MPG).}
 %
 % \changes{v2.6c}{2013/05/18}{Former \cs{CaptionSeparator}
-%     has been renamed as \cs{FBCaption at Separator};
-%     Newif \cs{if at FBwarning@capsep} added.}
+%    has been renamed as \cs{FBCaption at Separator};
+%    Newif \cs{if at FBwarning@capsep} added.}
 %
 % \changes{v2.6h}{2014/01/03}{No active catcodes in
-%    \cs{STD at makecaption}'s definition.}
+%    \cs{STD at makecaption}’s definition.}
 %
 % \changes{v3.0a}{2014/02/28}{Remove \cs{CaptionSeparatorORI}, use
 %    \cs{babel at save} instead.}
 %
 %    While saving the standard definition of |\@makecaption| we have to
-%    make sure that characters `:' and `|>|' have |\catcode| 12
-%    (\frenchb{} makes `:' active and \file{spanish.ldf} makes `|>|'
+%    make sure that characters `:’ and `|>|’ have |\catcode| 12
+%    (\frenchb{} makes `:’ active and \file{spanish.ldf} makes `|>|’
 %    active).
 %    \begin{macrocode}
 \bgroup
@@ -3251,10 +3278,10 @@
 % \end{macro}
 %
 % \changes{v2.6c}{2013/05/18}{No warning about \cs{@makecaption} for
-%     AMS classes.}
+%    AMS classes.}
 %
 % \changes{v3.0a}{2014/02/20}{No warning about \cs{@makecaption} for
-%     SMF classes. No warning either with LuaTeX or XeTeX engines.}
+%    SMF classes. No warning either with LuaTeX or XeTeX engines.}
 %
 %    Disable the standard warning with AMS and SMF classes.
 %    \begin{macrocode}
@@ -3276,7 +3303,7 @@
 %    koma-script classes. \cs{captionformat} customised in French.}
 %
 % \changes{v2.6h}{2014/01/05}{If \cs{@makecaption} is undefined, no
-%     warning.}
+%    warning.}
 %
 %    No warning with \cls{memoir} or koma-script classes: they change
 %    |\@makecaption| but we will manage to customise them in French
@@ -3343,7 +3370,7 @@
 %    a warning in case it has been changed by a class or package not
 %    (yet) compatible with \frenchb; then change the definition of
 %    |\FBCaption at Separator|, taking care that the colon is typeset
-%    correctly in French (\emph{not} `Figure~1: légende').
+%    correctly in French (\emph{not} `Figure~1: légende’).
 %
 % \changes{v3.1f}{2015/05/31}{\cs{FBCaption at Separator} changed when
 %    option CustomiseFigTabCaptions is set to false.}
@@ -3354,7 +3381,7 @@
     \global\let\@makecaption\FB at makecaption
 %    \end{macrocode}
 %    Do not overwrite |\FBCaption at Separator| if already saved
-%    as ': '  for other languages and set to |\CaptionSeparator| by
+%    as `: ’  for other languages and set to |\CaptionSeparator| by
 %    |\extrasfrench| when French is the main language.
 %    \begin{macrocode}
     \ifFBOldFigTabCaptions
@@ -3384,7 +3411,7 @@
 %  \label{ssec-dots}
 %
 %  \begin{macro}{\FBtextellipsis}
-%    \LaTeXe's standard definition of |\dots| in text-mode is
+%    \LaTeXe’s standard definition of |\dots| in text-mode is
 %    |\textellipsis| which includes a |\kern| at the end;
 %    this space is not wanted in some cases (before a closing brace
 %    for instance) and |\kern| breaks hyphenation of the next word.
@@ -3391,9 +3418,9 @@
 %    We define |\FBtextellipsis| for French (in \LaTeXe{} only).
 %
 %    The |\if| construction in the \LaTeXe{} definition of |\dots|
-%    doesn't allow the use of |xspace| (|xspace| is always followed
+%    doesn’t allow the use of |xspace| (|xspace| is always followed
 %    by a |\fi|), so we use the AMS-\LaTeX{} construction of |\dots|;
-%    this has to be done `AtBeginDocument' not to be overwritten
+%    this has to be done `AtBeginDocument’ not to be overwritten
 %    when \file{amsmath.sty} is loaded after \babel.
 %
 % \changes{v2.0}{2006/11/06}{Added special case for LY1 encoding,
@@ -3400,7 +3427,7 @@
 %    see  bug report from Bruno Voisin (2004/05/18).}
 %
 % \changes{v2.5f}{2011/06/18}{Unicode fonts also provide a ready made
-%    character for \cs{textellipsis}, let's just use it!
+%    character for \cs{textellipsis}, let’s just use it!
 %    (reported by Maxime Chupin, 2011/06/04).}
 %
 %    LY1 has a ready made character for |\textellipsis|, it should be
@@ -3418,8 +3445,8 @@
 %    \end{macrocode}
 %    |\Mdots@| and |\Tdots@| hold the definitions of |\dots| in
 %    Math and Text mode.  They default to those of amsmath-2.0, and
-%    will revert to standard \LaTeX{} definitions `AtBeginDocument',
-%    if amsmath has not been loaded.  |\Mdots@| doesn't change when
+%    will revert to standard \LaTeX{} definitions `AtBeginDocument’,
+%    if amsmath has not been loaded.  |\Mdots@| doesn’t change when
 %    switching from/to French, while |\Tdots@| is redefined as
 %    |\FBtextellipsis| in French.
 %    \begin{macrocode}
@@ -3435,12 +3462,12 @@
 %    \end{macrocode}
 %  \end{macro}
 %
-%  \subsection{More checks about packages' loading order}
+%  \subsection{More checks about packages’ loading order}
 %  \label{ssec-loading-order}
 %
 % \changes{v3.1d}{2015/04/06}{New section: issue warnings if packages
-%     listings, numprint and natbib are loaded too early or too late
-%     vs babel.}
+%    listings, numprint and natbib are loaded too early or too late
+%    vs babel.}
 %
 % \changes{v3.1i}{2015/10/03}{Remove restriction about loading
 %    numprint.sty after babel.}
@@ -3511,23 +3538,23 @@
 %
 %    All setup options are handled by command \fbsetup{} using the
 %    keyval syntax.  A list of flags is defined and set to a default
-%    value which will possibly be changed `AtEndOfPackage' if French is
+%    value which will possibly be changed `AtEndOfPackage’ if French is
 %    the main language.  After this, \fbsetup{} eventually modifies the
 %    preset values of these flags.
 %
 %    Option processing can occur either in \fbsetup{}, but \emph{only
-%    for options explicitly set} by \fbsetup{}, or `AtBeginDocument';
+%    for options explicitly set} by \fbsetup{}, or `AtBeginDocument’;
 %    any option affecting |\extrasfrench{}| \emph{must} be processed by
 %    \fbsetup{}: when French is the main language, |\extrasfrench{}| is
 %    executed by \babel{} when it switches the main language and this
 %    occurs \emph{before} reading the stuff postponed by \frenchb{}
-%    `AtBeginDocument'.  Reexecuting |\extrasfrench{}| is an option
+%    `AtBeginDocument’.  Reexecuting |\extrasfrench{}| is an option
 %    which was used up to v2.6h, it has been dropped in v3.0a because
 %    of its side-effects (f.i.\ |\babel at save| and |\babel at savevariable|
 %    did not work for French).
 %
-%  \begin{macro}{\frenchbsetup}
-%    Let's now define this command which reads and sets the options
+%  \begin{macro}{\frenchsetup}
+%    Let’s now define this command which reads and sets the options
 %    to be processed either immediately (i.e.\ just after setting the
 %    key) or later (at |\begin{document}|) by |\FBprocess at options|.
 %    \fbsetup{} can only be called in the preamble.
@@ -3535,8 +3562,8 @@
 % \changes{v2.0c}{2007/06/25}{Option ThinSpaceInFrenchNumbers added.}
 %
 % \changes{v2.0d}{2007/07/15}{Options og and fg changed: limit
-%     the definition to French so that quote characters can be used
-%     in German.}
+%    the definition to French so that quote characters can be used
+%    in German.}
 %
 % \changes{v2.0e}{2007/10/05}{New option: StandardLists.}
 %
@@ -3545,33 +3572,33 @@
 %    StandardLayout $\to$ StandardLists.}
 %
 % \changes{v2.0f}{2008/03/23}{StandardLayout option had no
-%     effect on lists.  Test moved to \cs{FBprocess at options}.}
+%    effect on lists.  Test moved to \cs{FBprocess at options}.}
 %
 % \changes{v2.0g}{2008/03/23}{Revert previous change to
-%     StandardLayout.  This option must set the three flags
-%     \cs{FBReduceListSpacingfalse}, \cs{FBCompactItemizefalse},
-%     and \cs{FBStandardItemLabeltrue} instead of
-%     \cs{FBStandardListstrue}, so that later options can still
-%     change their value before executing \cs{FBprocess at options}.
-%     Same thing for option StandardLists.}
+%    StandardLayout.  This option must set the three flags
+%    \cs{FBReduceListSpacingfalse}, \cs{FBCompactItemizefalse},
+%    and \cs{FBStandardItemLabeltrue} instead of
+%    \cs{FBStandardListstrue}, so that later options can still
+%    change their value before executing \cs{FBprocess at options}.
+%    Same thing for option StandardLists.}
 %
 % \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts
-%     to define \cs{up} as \cs{fup} or as \cs{textsuperscript}.}
+%    to define \cs{up} as \cs{fup} or as \cs{textsuperscript}.}
 %
 % \changes{v2.1a}{2008/03/30}{New option: LowercaseSuperscripts.}
 %
 % \changes{v2.2a}{2008/05/08}{The global layout of the document is
-%     no longer changed when frenchb is not the last option of babel
-%     (\cs{bbl at main@language}).  Suggested by Ulrike Fischer.}
+%    no longer changed when frenchb is not the last option of babel
+%    (\cs{bbl at main@language}).  Suggested by Ulrike Fischer.}
 %
 % \changes{v2.2a}{2008/05/08}{Default values of flags changed:
-%     default now means `StandardLayout', they will be changed to
-%     `FrenchLayout' AtEndOfPackage only if french is
-%     \cs{bbl at main@language}.}
+%    default now means `StandardLayout’, they will be changed to
+%    `FrenchLayout’ AtEndOfPackage only if french is
+%    \cs{bbl at main@language}.}
 %
-% \changes{v2.2a}{2008/05/08}{When frenchb is babel's last option,
-%     French becomes the document's main language, so
-%     GlobalLayoutFrench applies.}
+% \changes{v2.2a}{2008/05/08}{When frenchb is babel’s last option,
+%    French becomes the document’s main language, so
+%    GlobalLayoutFrench applies.}
 %
 % \changes{v2.4a}{2009/11/23}{New option SuppressWarning.}
 %
@@ -3596,10 +3623,21 @@
 % \changes{v3.1g}{2015/05/10}{PartNameFull now just sets the flag,
 %    nothing to add to \cs{captionsfrench} when false.}
 %
+% \changes{v3.3a}{2017/04/30}{\cs{frenchbsetup} is now an alias for
+%    \cs{frenchsetup}.}
+%
+% \changes{v3.3a}{2017/04/30}{Options INGuillSpace, ThinColonSPace no
+%    longer delayed AtBeginDocument.}
+%
 %    \begin{macrocode}
-\newcommand*{\frenchbsetup}[1]{%
+\newcommand*{\frenchsetup}[1]{%
   \setkeys{FB}{#1}%
 }%
+\@onlypreamble\frenchsetup
+%    \end{macrocode}
+%    Keep the former name |\frenchbsetup| working for compatibility.
+%    \begin{macrocode}
+\let\frenchbsetup\frenchsetup
 \@onlypreamble\frenchbsetup
 %    \end{macrocode}
 %
@@ -3636,7 +3674,7 @@
 %    The defaults values of these flags have been choosen so that
 %    \frenchb{} does not change anything regarding the global layout.
 %    |\bbl at main@language|, set by the last option of \babel, controls
-%    the global layout of the document.  `AtEndOfPackage' we check the
+%    the global layout of the document.  `AtEndOfPackage’ we check the
 %    main language in |\bbl at main@language|; if it is French,
 %    the values of some flags have to be changed to ensure a French
 %    looking layout for the whole document (even in parts written in
@@ -3657,6 +3695,9 @@
 % \changes{v3.2g}{2017/01/30}{Minimal list customisation when
 %    beamerarticle.sty is loaded.}
 %
+% \changes{v3.2h}{2017/04/11}{Option GlobalLayoutFrench skipped
+%    when French is not the main language.}
+%
 %    Our list customisation conflicts with the \cls{beamer} class and
 %    with the \pkg{beamerarticle} package.  The patch provided in
 %    \pkg{beamerbasecompatibility} solves the conflict except in case
@@ -3683,6 +3724,9 @@
           \PackageInfo{frenchb.ldf}{%
              Minimal list customisation for the beamerarticle%
              \MessageBreak package; reported}}%
+%    \end{macrocode}
+%    Otherwise customise lists ``à la française’’:
+%    \begin{macrocode}
          {\FBReduceListSpacingtrue
           \FBStandardItemizeEnvfalse
           \FBStandardEnumerateEnvfalse
@@ -3699,7 +3743,7 @@
 %    \frenchb{} being an option of \babel, it cannot load a package
 %    (\pkg{keyval}) while \file{frenchb.ldf} is read, so we defer the
 %    loading of \file{keyval} and the options setup at the end of
-%    \babel's loading.
+%    \babel’s loading.
 %    \begin{macrocode}
   \RequirePackage{keyval}%
   \define at key{FB}{ShowOptions}[true]%
@@ -3730,11 +3774,13 @@
 %    If this key is set to \fbo{true} when French is the main language,
 %    nothing to do: all flags keep their default value.
 %    If this key is set to \fbo{false}, nothing to do either:
-%    |\babel at save| will do the job.
+%    |\babel at save| will do the job.  Warn and reset in case this key
+%    is set to true while the main language is \emph{not} French.
 %    \begin{macrocode}
            \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
@@ -3800,7 +3846,10 @@
   \define at key{FB}{OriginalTypewriter}[true]%
           {\csname FBOriginalTypewriter#1\endcsname}%
   \define at key{FB}{ThinColonSpace}[true]%
-          {\csname FBThinColonSpace#1\endcsname}%
+          {\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]%
@@ -3814,7 +3863,7 @@
   \define at key{FB}{OldFigTabCaptions}[true]%
           {\csname FBOldFigTabCaptions#1\endcsname
 %    \end{macrocode}
-%    |\CurrentOption| no longer defined.  It's value has been saved
+%    |\CurrentOption| no longer defined.  It’s value has been saved
 %    in |\FB at CurOpt| while reading \file{frenchb.ldf}.
 %    \begin{macrocode}
            \ifFBOldFigTabCaptions
@@ -3842,7 +3891,10 @@
 %
 %    \begin{macrocode}
   \define at key{FB}{INGuillSpace}[true]%
-          {\csname FBINGuillSpace#1\endcsname}%
+          {\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]%
@@ -3855,8 +3907,8 @@
                        \let\FBeveryparguill\FBguillopen
                        \PackageWarning{frenchb.ldf}%
                           {Wrong value for `EveryParGuill':
-                           try `open’,\MessageBreak
-                           `close’ or `none’. Reported}%
+                           try `open',\MessageBreak
+                           `close' or `none'. Reported}%
                      \fi
                 \fi
            \fi}%
@@ -3870,8 +3922,8 @@
                        \else
                          \let\FBeverylineguill\FBguillnone
                          \FBWarning{Wrong value for `EveryLineGuill':
-                                    try `open’,\MessageBreak
-                                    `close’ or `none’. Reported}%
+                                    try `open',\MessageBreak
+                                    `close' or `none'. Reported}%
                        \fi
                   \fi
              \fi
@@ -3906,14 +3958,14 @@
 %    (see \cs{frenchbsetup}).}
 %
 % \changes{v2.5g}{2011/12/31}{When \cs{ifFB at xetex@punct} is true,
-%   `og' and `fg' options now set XeTeXcharclasses of these characters
+%   `og’ and `fg’ options now set XeTeXcharclasses of these characters
 %   to \cs{FB at guilo} and \cs{FB at guilf}.  Otherwise French
 %   quotes behave as normal characters (their XeTeXcharclass is 0).}
 %
 % \changes{v2.6h}{2014/01/03}{\cs{FG at og}  and \cs{FG at fg} changed:
-%   former clumsy code removed.}
+%    former clumsy code removed.}
 %
-% \changes{v3.1a}{2014/06/16}{Codes "13 and "14 added for French
+% \changes{v3.1a}{2014/06/16}{Codes 0x13 and 0x14 added for French
 %    quotes in T1-encoding.  Support for older versions of LuaTeX and
 %    XeTeX dropped.}
 %
@@ -3925,7 +3977,7 @@
           {\ifFBunicode
 %    \end{macrocode}
 %    LuaTeX or XeTeX in use, first try modern LuaTeX: we just need
-%    to set LuaTeX's attribute |\FB at addGUILspace| to 1,
+%    to set LuaTeX’s attribute |\FB at addGUILspace| to 1,
 %    \begin{macrocode}
              \ifFB at luatex@punct
                \FB at addGUILspace=1 \relax
@@ -4120,8 +4172,8 @@
            reported}%
      \fi}{}%
 %    \end{macrocode}
-%    Reset |\FB at ufl|'s normal meaning and update lists' settings
-%    in case French is the main language: \label{FB at ufl}
+%    Reset |\FB at ufl|’s normal meaning and update lists’ settings
+%    now in case French is the main language: \label{FB at ufl}
 %    \begin{macrocode}
   \def\FB at ufl{\update at frenchlists}
   \ifx\bbl at main@language\FB at french
@@ -4160,34 +4212,8 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/01/10}{Changed option ThinColonSpace to make it
-%    work also with LuaTeX.}
-%
-%    \fbo{ThinColonSpace} changes the normal unbreakable space typeset
-%    in French before `:' to a thin space.
-%    \begin{macrocode}
-  \ifFBThinColonSpace
-    \ifFB at luatex@punct
-      \FBcolonskip=\FBthinskip\relax
-    \else
-      \renewcommand*{\FBcolonspace}{\FBthinspace}%
-    \fi
-  \fi
-%    \end{macrocode}
-%    When \fbo{true}, \fbo{INGuillSpace} resets the dimensions of skips
-%    after opening French quotes and before closing French quotes to
-%    I.N. standards.
-%    \begin{macrocode}
-  \ifFBINGuillSpace
-    \ifFB at luatex@punct
-      \FBguillskip=3.33pt plus 1.665pt minus 1.11pt \relax
-    \else
-      \renewcommand*{\FBguillspace}{\space}%
-    \fi
-  \fi
-%    \end{macrocode}
 %    When package \pkg{numprint} is loaded with option
-%    \opt{autolanguage}, \pkg{numprint}'s command |\npstylefrench| has
+%    \opt{autolanguage}, \pkg{numprint}’s command |\npstylefrench| has
 %    to be redefined differently according to the value of flag
 %    \fbo{ThinSpaceInFrenchNumbers}.
 %    As |\npstylefrench| was undefined in old versions of
@@ -4221,7 +4247,7 @@
 %    \fbo{FrenchSuperscripts}: if \fbo{true} |\up=\fup|, else
 %    |\up=\textsuperscript|.  Anyway |\up*=\FB at up@fake|.  The star-form
 %    |\up*{}| is provided for fonts that lack some superior letters:
-%    Adobe Jenson Pro and Utopia Expert have no ``g superior'' for
+%    Adobe Jenson Pro and Utopia Expert have no ``g superior’’ for
 %    instance.
 %    \begin{macrocode}
   \ifFBFrenchSuperscripts
@@ -4231,8 +4257,8 @@
                                         {\textsuperscript}}%
   \fi
 %    \end{macrocode}
-%    \fbo{LowercaseSuperscripts}: if \fbo{true} let |\FB at lc| be
-%    |\lowercase|, else |\FB at lc| is redefined to do nothing.
+%    \fbo{LowercaseSuperscripts}: if \fbo{false} |\FB at lc| is redefined
+%    to do nothing.
 %    \begin{macrocode}
   \ifFBLowercaseSuperscripts
   \else
@@ -4248,7 +4274,7 @@
 %    is set to false.}
 %
 % \changes{v3.1f}{2015/05/31}{Bug fix for the beamer class:
-%    figure and table captions are now consistent with frenchb's
+%    figure and table captions are now consistent with frenchb’s
 %    documentation.  Pointed out by Denis Bitouzé.}
 %
 %    Unless \fbo{CustomiseFigTabCaptions} has been set to \fbo{false},
@@ -4333,7 +4359,7 @@
      og= <left quote character>, fg= <right quote character>%
      \MessageBreak
      *********************************************%
-     \MessageBreak\protect\frenchbsetup{ShowOptions}}
+     \MessageBreak\protect\frenchsetup{ShowOptions}}
   \fi
 }
 %    \end{macrocode}
@@ -4350,7 +4376,7 @@
 %
 %    At |\begin{document}|, we have to provide an |\xspace| command
 %    in case the \pkg{xspace} package is not loaded, do some setup for
-%    \file{hyperref}'s bookmarks, execute |\FBprocess at options|, switch
+%    \file{hyperref}’s bookmarks, execute |\FBprocess at options|, switch
 %    LuaTeX punctuation on and issue some warnings if necessary.
 %    \begin{macrocode}
 \AtBeginDocument{%
@@ -4363,7 +4389,7 @@
 % \changes{v3.2g}{2017/01/24}{Add \cs{boi} to redefinitions for
 %    bookmarks.}
 %
-%    Let's redefine some commands in \file{hyperref}'s bookmarks.
+%    Let’s redefine some commands in \file{hyperref}’s bookmarks.
 %    \begin{macrocode}
    \ifdefined\pdfstringdefDisableCommands
      \pdfstringdefDisableCommands{%
@@ -4393,20 +4419,26 @@
       }%
    \fi
 %    \end{macrocode}
-%    It is time to process the options set with \fbsetup{} or later.
+%    Let’s now process the remaining options, either not explicitly
+%    set by \fbsetup{} or possibly modified by packages loaded after
+%    \frenchb.
 %    \begin{macrocode}
    \FBprocess at options
 %    \end{macrocode}
-%    With LuaTeX engines (|\FBthinskip| and |\FBcolonskip| values are
-%    set now), it is time to load file \file{frenchb.lua}.
+%    The final definitions of commands ruling spacing in French
+%    been known, let’s reset the corresponding toks for LuaTeX
+%    and load file \file{frenchb.lua} (LuaTeX only).
 %    \begin{macrocode}
    \ifFB at luatex@punct
+     \FBcolonsp=\expandafter{\meaning\FBcolonspace}
+     \FBthinsp= \expandafter{\meaning\FBthinspace}
+     \FBguillsp=\expandafter{\meaning\FBguillspace}
      \activate at luatexpunct
    \fi
 %    \end{macrocode}
 %
 % \changes{v3.0a}{2014/01/28}{Test \cs{ifXeTeX} changed to
-%    \cs{ifFBunicode} and `xltxtra' changed to `fontspec'.}
+%    \cs{ifFBunicode} and `xltxtra’ changed to `fontspec’.}
 %
 % \changes{v3.1a}{2014/06/14}{fontspec is not required for T1 fonts
 %    used with the luainputenc.sty package.}
@@ -4420,7 +4452,7 @@
 %    \file{luainputenc}, in the latter case |\FB at og| and |\FB at fg|
 %    have to be redefined; with (pdf)\LaTeX, a warning is issued
 %    when OT1 encoding is in use at the |\begin{document}|.
-%    Mind that |\encodingdefault| is defined as `long', defining
+%    Mind that |\encodingdefault| is defined as `long’, defining
 %    |\FBOTone| with |\newcommand*| would fail!
 %    \begin{macrocode}
    \ifFBunicode
@@ -4473,7 +4505,7 @@
 %    paragraph).  IMHO, |\parskip| should be added \emph{only} when
 %    the list starts a new paragraph, so I subtract |\parskip| from
 %    |\topsep| and add it back to |\partopsep|; this will normally
-%    make no difference because |\parskip|'s default value is 0pt, but
+%    make no difference because |\parskip|’s default value is 0pt, but
 %    will be noticeable when |\parskip| is \emph{not} null.
 %
 %    \begin{macrocode}
@@ -4485,9 +4517,9 @@
       \setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}%
       \setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}%
 %    \end{macrocode}
-%    |\parskip| is of type `skip', its mean value only (\emph{not
+%    |\parskip| is of type `skip’, its mean value only (\emph{not
 %    the glue}) should be subtracted from |\topsep| and added to
-%    |\partopsep|, so convert |\parskip| to a `dimen' using
+%    |\partopsep|, so convert |\parskip| to a `dimen’ using
 %    |\@tempdima|.
 %    \begin{macrocode}
       \@tempdima=\parskip
@@ -4501,13 +4533,13 @@
 %  \end{macro}
 %  \end{macro}
 %
-%    Let's now consider French itemize-lists.  They differ from those
+%    Let’s now consider French itemize-lists.  They differ from those
 %    provided by the standard \LaTeXe{} classes:
 %    \begin{itemize}
-%      \item The `\textbullet' is never used in French itemize-lists,
-%          an emdash `---' or an endash  `--' is preferred for all
+%      \item The `\textbullet’ is never used in French itemize-lists,
+%          an emdash `---’ or an endash  `--’ is preferred for all
 %          levels.  The item label to be used in French is stored in
-%          |\FrenchLabelItem}|, it defaults to `---' and can be changed
+%          |\FrenchLabelItem}|, it defaults to `---’ and can be changed
 %          using \fbsetup{} (see section~\ref{ssec-keyval}).
 %      \item Vertical spacing between items, before and after
 %         the list, should be \emph{null} with \emph{no glue} added;
@@ -4517,7 +4549,7 @@
 %            \parindent=1.5em
 %            \def\FBlabel{\textemdash}%
 %            \settowidth{\labelwidth}{\FBlabel}%
-%            Text starting at `parindent' \\
+%            Text starting at `parindent’ \\
 %            \noindent$\Leftarrow$ Leftmargin\\
 %            \hspace*{\parindent}\textemdash{} first item\dots\\
 %            \hspace*{\parindent}\hspace*{\labelwidth}%
@@ -4552,8 +4584,8 @@
 %  \begin{macro}{\listindentFB}
 %  \begin{macro}{\descindentFB}
 %  \begin{macro}{\labelwidthFB}
-%    Let's define three lengths |\listindentFB|, |\descindentFB| and
-%    |\labelwidthFB| to customise lists' horizontal indentations.
+%    Let’s define three lengths |\listindentFB|, |\descindentFB| and
+%    |\labelwidthFB| to customise lists’ horizontal indentations.
 %    They are given silly values here ($-1$\,pt) in order to eventually
 %    enable their customisation in the preamble.  They will get
 %    reasonnable defaults later when entering French (see
@@ -4741,9 +4773,9 @@
 %
 %    \begin{macro}{\update at frenchlists}
 %    \begin{macro}{\bbl at frenchlistlayout}
-%    \begin{macro}{\bbl at nonfrenchlistlayout}
-%    |\update at frenchlists| will set up lists according to the options
-%    of \fbsetup{}.
+%    |\update at frenchlists| will set up lists according to the final
+%    options (default or part of \fbsetup{} eventually overruled in
+%    |\FBprocess at options|).
 %    \begin{macrocode}
 \def\update at frenchlists{%
   \ifFBReduceListSpacing \let\list\listFB \fi
@@ -4755,12 +4787,24 @@
   \else \let\enumerate\enumerateFB \let\description\descriptionFB \fi
 }
 %    \end{macrocode}
+%
+% \changes{v3.2h}{2017/02/03}{Execute \cs{update at frenchlists} only
+%    if GlobalLayoutFrench is false.
+%    Delete stuff for lists in \cs{noextrasfrench}.}
+%
+%    If \fbo{GlobalLayoutFrench=true}, nothing has to be done at
+%    language’s switches regarding lists.  Otherwise, |\extrasfrench|
+%    saves the standard settings for lists and then executes
+%    |\update at frenchlists|. In both cases, there is nothing to do for
+%    lists in |\noextrasfrench|.
+%
 %    In order to ensure compatibility with packages customising lists,
-%    the command |\update at frenchlists| should not be included in
-%    |\extrasfrench| yet, so we also define |\FB at ufl| as |\relax|,
-%    it will be redefined as |\update at frenchlists| in due time
-%    `AtBeginDocument' by |\FBprocess at options|,
-%     see p.~\pageref{FB at ufl}.
+%    the command |\update at frenchlists| should not be included in the
+%    first call to |\extrasfrench| which occurs \emph{before} the
+%    relevant flags are finally set, so we define |\FB at ufl| as
+%    |\relax|, it will be redefined later `AtBeginDocument’ by
+%    |\FBprocess at options| as |\update at frenchlists|,
+%    see p.~\pageref{FB at ufl}.
 %    \begin{macrocode}
 \def\FB at ufl{\relax}
 \def\bbl at frenchlistlayout{%
@@ -4770,20 +4814,13 @@
     \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 ufl
 }
-\def\bbl at nonfrenchlistlayout{%
-  \ifFBGlobalLayoutFrench
-    \update at frenchlists
-  \fi
-}
 \FB at addto{extras}{\bbl at frenchlistlayout}
-\FB at addto{noextras}{\bbl at nonfrenchlistlayout}
 %    \end{macrocode}
 %    \end{macro}
 %    \end{macro}
-%    \end{macro}
 %
 %  \subsection{French indentation of sections}
 %  \label{ssec-indent}
@@ -4800,11 +4837,14 @@
 %    like Spanish.  Pointed out by Juan José Torrens.}
 %
 %    We will need to save the value of the flag |\if at afterindent|
-%    `AtBeginDocument' before eventually changing its value.
+%    `AtBeginDocument’ before eventually changing its value.
 %
 %    \begin{macrocode}
 \def\bbl at frenchindent{%
-  \ifFBGlobalLayoutFrench\else\babel at save\@afterindentfalse\fi
+  \ifFBGlobalLayoutFrench
+  \else
+    \babel at save\@afterindentfalse
+  \fi
   \ifFBIndentFirst
     \let\@afterindentfalse\@afterindenttrue
     \@afterindenttrue
@@ -4825,7 +4865,7 @@
 %  \label{ssec-footnotes}
 %
 % \changes{v2.0}{2006/11/06}{Footnotes are now printed
-%     by default `à la française' for the whole document.}
+%     by default `à la française’ for the whole document.}
 %
 % \changes{v2.0b}{2007/04/18}{Footnotes: Just do nothing
 %    (except warning) when the bigfoot package is loaded.}
@@ -4851,7 +4891,7 @@
 %    controlled by flag |\ifFBAutoSpaceFootnotes|.
 %
 % \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to
-%      \cs{PackageInfo} (when bigfoot package in use).}
+%    \cs{PackageInfo} (when bigfoot package in use).}
 %
 %    \begin{macrocode}
 \AtBeginDocument{\@ifpackageloaded{bigfoot}%
@@ -4868,9 +4908,10 @@
                 }
 %    \end{macrocode}
 %
+%  \begin{macro}{\@makefntextFB}
 %    We then define |\@makefntextFB|, a variant of |\@makefntext|
 %    which is responsible for the layout of footnotes, to match the
-%    specifications of the French `Imprimerie Nationale':  footnotes
+%    specifications of the French `Imprimerie Nationale’:  footnotes
 %    will be indented by |\parindentFFN|, numbers (if any) typeset on
 %    the baseline (instead of superscripts), right aligned on
 %    |\parindentFFN| and followed by a dot and an half quad kern.
@@ -4898,7 +4939,7 @@
 \newdimen\parindentFFN
 \parindentFFN=10in
 %    \end{macrocode}
-%    |\FBfnindent| will be set `AtBeginDocument' to the width of
+%    |\FBfnindent| will be set `AtBeginDocument’ to the width of
 %    the box holding the footnote mark, |\dotFFN| and |\kernFFN|
 %    (flushed right).  It is used by \cls{memoir} and koma-script
 %    classes.
@@ -4907,11 +4948,11 @@
 \newcommand*{\kernFFN}{\kern .5em}
 \newlength\FBfnindent
 %    \end{macrocode}
-%    |\@makefntextFB|'s definition is now tuned according to the
-%    document's class for better compatibility.
+%    |\@makefntextFB|’s definition is now tuned according to the
+%    document’s class for better compatibility.
 %
 %    Koma-script classes provide |\deffootnote|, a handy command
-%    to customise the footnotes' layout (see English manual
+%    to customise the footnotes’ layout (see English manual
 %    \file{scrguien.pdf}); it redefines |\@makefntext| and
 %    |\@@makefnmark|.  First, save the original definitions.
 %    \begin{macrocode}
@@ -4964,6 +5005,10 @@
 %    note that for the \cls{beamer} class footnotes are LR-boxes, not
 %    paragraphs, so |\parindentFFN| is irrelevant.
 %    class.
+%
+% \changes{v3.2h}{2016/04/09}{With beamer.cls, add \cs{llap} to
+%    \cs{@thefnmark} for notes numbered over 99.}
+%
 %    \begin{macrocode}
    {\def\@makefntextFB#1{%
       \def\insertfootnotetext{#1}%
@@ -4972,7 +5017,7 @@
     \def\insertfootnotemarkFB{%
       \usebeamercolor[fg]{footnote mark}%
       \usebeamerfont*{footnote mark}%
-      \@thefnmark\dotFFN\kernFFN}%
+      \llap{\@thefnmark}\dotFFN\kernFFN}%
    }{}
 %    \end{macrocode}
 %    Now the default definition of |\@makefntextFB| for standard LaTeX
@@ -4979,9 +5024,9 @@
 %    and AMS classes.
 %
 %    The next command prints the footnote mark according to the
-%    specifications of the French `Imprimerie Nationale'.
+%    specifications of the French `Imprimerie Nationale’.
 %    Keep in mind that |\@thefnmark| might be empty (i.e.\ in
-%    AMS classes' titles)!
+%    AMS classes’ titles)!
 %    \begin{macrocode}
 \providecommand*{\insertfootnotemarkFB}{%
   \parindent=\parindentFFN
@@ -4992,8 +5037,9 @@
   \fi}
 \providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1}
 %    \end{macrocode}
+%  \end{macro}
 %
-%    The rest of |\@makefntext|'s customisation is done at the
+%    The rest of |\@makefntext|’s customisation is done at the
 %    |\begin{document}|.  We save the original definition of
 %    |\@makefntext|, and then redefine |\@makefntext| according
 %    to the value of flag |\ifFBFrenchFootnotes| (true or false).
@@ -5032,7 +5078,7 @@
 %    \end{macrocode}
 %    Special add-on for the \cls{memoir} class: |\maketitle| redefines
 %    |\@makefntext| as |\makethanksmark| which is customised as follows
-%    to match the other notes' vertical alignment.
+%    to match the other notes’ vertical alignment.
 %    \begin{macrocode}
          \@ifclassloaded{memoir}%
             {\ifFBFrenchFootnotes
@@ -5073,7 +5119,7 @@
 %    dealing with the layout of footnotes in \frenchb{} version~1.6.
 %    \fbsetup{} (see in section \ref{ssec-keyval}) should be
 %    preferred for setting these options.  |\StandardFootnotes| may
-%    still be used locally (in minipages for instance), that's why the
+%    still be used locally (in minipages for instance), that’s why the
 %    test |\ifFBFrenchFootnotes| is done inside |\@makefntext|.
 %    \begin{macrocode}
 \newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue}

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2017-05-09 21:16:40 UTC (rev 44269)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2017-05-09 21:16:56 UTC (rev 44270)
@@ -33,9 +33,9 @@
 %% extension .ins) which are part of the distribution.
 %% 
 \ProvidesLanguage{frenchb}
-         [2017/01/30 v3.2g French support from the babel system]
+         [2017/04/30 v3.3a French support from the babel system]
 %%
-%%  File `frenchb.ldf'
+%%  File `frenchb.ldf’
 %%  Babel package for LaTeX version 2e
 %%  Copyright © 1996 - 2017
 %%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
@@ -200,10 +200,8 @@
 \fi
 \newcommand*{\FBcolonspace}{\space}
 \newcommand*{\FBthinspace}{\hskip.5\fontdimen2\font \relax}
-\newskip\FBcolonskip
-\FBcolonskip=3.33pt plus 1.665pt minus 1.11pt \relax
-\newskip\FBthinskip
-\FBthinskip=1.6667pt \relax
+\newtoks\FBcolonsp
+\newtoks\FBthinsp
 \newif\ifFB at spacing \FB at spacingtrue
 \newcommand*{\FB at spacing@on}{%
   \ifFB at luatex@punct
@@ -218,7 +216,6 @@
     \FB at spacingfalse
   \fi}
 \ifFB at luatex@punct
-  \directlua{tex.enableprimitives("", tex.extraprimitives("omega"))}
   \begingroup\expandafter\expandafter\expandafter\endgroup
   \expandafter\ifx\csname newluafunction\endcsname\relax
     \input ltluatex.tex
@@ -343,15 +340,15 @@
              \fi
            \fi}%
      \XeTeXinterchartoks \FB at guilo \z@ = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
-           \ifFB at spacing\FBguillspace\ignorespaces\fi}%
+           \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
      \XeTeXinterchartoks \z@ \FB at guilf = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
-           \ifFB at spacing\FBguillspace\fi}%
+           \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
-           \ifFB at spacing\unskip\FBguillspace\fi}%
+           \ifFB at spacing\unskip\FB at guillspace\fi}%
      \bbl at for\FB at char
              {`\[,`\(,"A0,"202F}%
              {\XeTeXcharclass\FB at char=\FB at punctnul}%
@@ -469,33 +466,33 @@
   \fi
   \let\xspace\relax
 \fi
-\newskip\FBguillskip
-\FBguillskip=2.664pt plus 0.500pt minus 0.888pt \relax
-\newcommand*{\FBguillspace}{\penalty\@M\hskip.8\fontdimen2\font
-                                         plus.3\fontdimen3\font
-                                        minus.8\fontdimen4\font}
+\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
-          \FBguillspace}
+          \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-          \FBguillspace
+          \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
-        \FBguillspace}
+        \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguillspace
+        \FB at guillspace
         \bgroup\FB at spacingfalse\guillemotright\egroup}
 \fi
 \ifFB at active@punct
   \DeclareRobustCommand*{\FB at og}{\leavevmode
         \guillemotleft
-        \FBguillspace}
+        \FB at guillspace}
   \DeclareRobustCommand*{\FB at fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguillspace
+        \FB at guillspace
         \guillemotright}
 \fi
 \newcommand*{\og}{\@empty}
@@ -536,24 +533,23 @@
 \newcommand{\fr at quote}[1]{%
   \leavevmode
   \advance\FBguill at level by \@ne
-  \def\FB at quotespace{\kern.8\fontdimen2\font}%
   \ifcase\FBguill at level
   \or
     \FB at everypar=\everypar
     \ifx\FBeveryparguill\FBguillnone
     \else
-      \def\FBeverypar at quote{\FBeveryparguill\FB at quotespace}%
+      \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 quotespace}%
+      \localleftbox{\guillemotleft\FB at guillspace}%
       \let\FBeverypar at quote\relax
       \ogi #1\ifFBcloseguill\fgi\fi
     \else
       \ifx\FBeverylineguill\FBguillclose
-        \localleftbox{\guillemotright\FB at quotespace}%
+        \localleftbox{\guillemotright\FB at guillspace}%
         \let\FBeverypar at quote\relax
         \ogi #1\ifFBcloseguill\fgi\fi
       \else
@@ -560,14 +556,14 @@
         \let\FBeverypar at quote\relax
         \ifFBInnerGuillSingle
           \def\ogii{\leavevmode
-                    \guilsinglleft\FBguillspace}%
+                    \guilsinglleft\FB at guillspace}%
           \def\fgii{\ifdim\lastskip>\z@\unskip\fi
-                    \FBguillspace\guilsinglright}%
+                    \FB at guillspace\guilsinglright}%
           \ifx\FBeveryparguill\FBguillopen
-            \def\FBeverypar at quote{\guilsinglleft\FB at quotespace}%
+            \def\FBeverypar at quote{\guilsinglleft\FB at guillspace}%
           \fi
           \ifx\FBeveryparguill\FBguillclose
-            \def\FBeverypar at quote{\guilsinglright\FB at quotespace}%
+            \def\FBeverypar at quote{\guilsinglright\FB at guillspace}%
           \fi
         \fi
         \ogii #1\ifFBcloseguill \fgii \fi
@@ -575,11 +571,11 @@
     \fi
   \else
     \ifx\PackageWarning\@undefined
-      \fb at warning{\noexpand\frquote\space accepts no more than
+      \fb at warning{\noexpand\frquote\space handles up to
                   two levels.\\ Quotation not printed.}%
     \else
       \PackageWarning{frenchb.ldf}{%
-         \protect\frquote\space accepts no more than two levels
+         \protect\frquote\space handles up to two levels.
          \MessageBreak Quotation not printed.  Reported}
     \fi
   \fi
@@ -820,7 +816,7 @@
 }
 \ifx\FBfigtabshape\@undefined \let\FBfigtabshape\scshape \fi
 \StartBabelCommands*{\BabelLanguages}{captions}
-      [unicode, fontenc=EU1 EU2, charset=utf8]
+      [unicode, fontenc=EU1 EU2 TU, charset=utf8]
    \SetString{\refname}{Références}
    \SetString{\abstractname}{Résumé}
    \SetString{\prefacename}{Préface}
@@ -827,11 +823,13 @@
    \SetString{\contentsname}{Table des matières}
    \SetString{\ccname}{Copie à }
    \SetString{\proofname}{Démonstration}
+   \SetString{\partfirst}{Première}
+   \SetString{\partsecond}{Deuxième}
    \SetStringLoop{ordinal#1}{%
-       Première,Deuxième,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}
+     \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}
@@ -853,21 +851,25 @@
    \SetString{\headtoname}{}
    \SetString{\proofname}{D\'emonstration}
    \SetString{\glossaryname}{Glossaire}
+   \SetString{\partfirst}{Premi\`ere}
+   \SetString{\partsecond}{Deuxi\`eme}
+   \SetString{\partnameord}{partie}
    \SetStringLoop{ordinal#1}{%
-       Premi\`ere,Deuxi\`eme,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}
+     \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
-            partie\FB at emptypart
-          \else
-            Partie%
-          \fi}%
-      }
+     \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{%
@@ -1010,9 +1012,11 @@
                 BEFORE babel/frenchb; reported}%
    \fi
 }
-\newcommand*{\frenchbsetup}[1]{%
+\newcommand*{\frenchsetup}[1]{%
   \setkeys{FB}{#1}%
 }%
+\@onlypreamble\frenchsetup
+\let\frenchbsetup\frenchsetup
 \@onlypreamble\frenchbsetup
 \newif\ifFBShowOptions              \FBShowOptionsfalse
 \newif\ifFBStandardLayout           \FBStandardLayouttrue
@@ -1092,6 +1096,7 @@
            \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
@@ -1157,7 +1162,10 @@
   \define at key{FB}{OriginalTypewriter}[true]%
           {\csname FBOriginalTypewriter#1\endcsname}%
   \define at key{FB}{ThinColonSpace}[true]%
-          {\csname FBThinColonSpace#1\endcsname}%
+          {\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]%
@@ -1187,7 +1195,10 @@
              \renewcommand{\FBWarning}[1]{}%
            \fi}%
   \define at key{FB}{INGuillSpace}[true]%
-          {\csname FBINGuillSpace#1\endcsname}%
+          {\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]%
@@ -1200,8 +1211,8 @@
                        \let\FBeveryparguill\FBguillopen
                        \PackageWarning{frenchb.ldf}%
                           {Wrong value for `EveryParGuill':
-                           try `open’,\MessageBreak
-                           `close’ or `none’. Reported}%
+                           try `open',\MessageBreak
+                           `close' or `none'. Reported}%
                      \fi
                 \fi
            \fi}%
@@ -1215,8 +1226,8 @@
                        \else
                          \let\FBeverylineguill\FBguillnone
                          \FBWarning{Wrong value for `EveryLineGuill':
-                                    try `open’,\MessageBreak
-                                    `close’ or `none’. Reported}%
+                                    try `open',\MessageBreak
+                                    `close' or `none'. Reported}%
                        \fi
                   \fi
              \fi
@@ -1382,20 +1393,6 @@
     \let\rmfamily\rmfamilyFB
     \let\sffamily\sffamilyFB
   \fi
-  \ifFBThinColonSpace
-    \ifFB at luatex@punct
-      \FBcolonskip=\FBthinskip\relax
-    \else
-      \renewcommand*{\FBcolonspace}{\FBthinspace}%
-    \fi
-  \fi
-  \ifFBINGuillSpace
-    \ifFB at luatex@punct
-      \FBguillskip=3.33pt plus 1.665pt minus 1.11pt \relax
-    \else
-      \renewcommand*{\FBguillspace}{\space}%
-    \fi
-  \fi
   \@ifpackageloaded{numprint}%
   {\ifnprt at autolanguage
      \providecommand*{\npstylefrench}{}%
@@ -1499,7 +1496,7 @@
      og= <left quote character>, fg= <right quote character>%
      \MessageBreak
      *********************************************%
-     \MessageBreak\protect\frenchbsetup{ShowOptions}}
+     \MessageBreak\protect\frenchsetup{ShowOptions}}
   \fi
 }
 \AtBeginDocument{%
@@ -1533,6 +1530,9 @@
    \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
@@ -1685,18 +1685,15 @@
     \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 ufl
 }
-\def\bbl at nonfrenchlistlayout{%
+\FB at addto{extras}{\bbl at frenchlistlayout}
+\def\bbl at frenchindent{%
   \ifFBGlobalLayoutFrench
-    \update at frenchlists
+  \else
+    \babel at save\@afterindentfalse
   \fi
-}
-\FB at addto{extras}{\bbl at frenchlistlayout}
-\FB at addto{noextras}{\bbl at nonfrenchlistlayout}
-\def\bbl at frenchindent{%
-  \ifFBGlobalLayoutFrench\else\babel at save\@afterindentfalse\fi
   \ifFBIndentFirst
     \let\@afterindentfalse\@afterindenttrue
     \@afterindenttrue
@@ -1756,7 +1753,7 @@
     \def\insertfootnotemarkFB{%
       \usebeamercolor[fg]{footnote mark}%
       \usebeamerfont*{footnote mark}%
-      \@thefnmark\dotFFN\kernFFN}%
+      \llap{\@thefnmark}\dotFFN\kernFFN}%
    }{}
 \providecommand*{\insertfootnotemarkFB}{%
   \parindent=\parindentFFN

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2017-05-09 21:16:40 UTC (rev 44269)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2017-05-09 21:16:56 UTC (rev 44270)
@@ -1,5 +1,5 @@
 --
---  File `frenchb.lua' generated from frenchb.dtx [2017/01/30 v3.2g]
+--  File `frenchb.lua’ generated from frenchb.dtx [2017/04/30 v3.3a]
 --
 --  Copyright © 2014-2017 Daniel Flipo
 --  <daniel (dot) flipo (at) free (dot) fr>
@@ -45,20 +45,34 @@
 local insert_node_before = node.insert_before
 local insert_node_after  = node.insert_after
 local remove_node        = node.remove
-local thin10 = tex.skip['FBthinskip']
-local thinwd = thin10.width/65536/3.33
-local thinst = thin10.stretch/65536/1.665
-local thinsh = thin10.shrink/65536/1.11
-local coln10 = tex.skip['FBcolonskip']
-local colnwd = coln10.width/65536/3.33
-local colnst = coln10.stretch/65536/1.665
-local colnsh = coln10.shrink/65536/1.11
-local guil10 = tex.skip['FBguillskip']
-local guilwd = guil10.width/65536/3.33
-local guilst = guil10.stretch/65536/1.665
-local guilsh = guil10.shrink/65536/1.11
+local function get_glue(toks)
+  local t = nil
+  local f = string.match(toks, "\092hskip%s*([%d%.]*)%s*\092fontdimen")
+  if f == "" then f = 1 end
+  if f then
+     t = {f, 0, 0}
+     f = string.match(toks, "plus%s*([%d%.]*)%s*\092fontdimen")
+     if f == "" then f = 1 end
+     if f then
+        t[2] = f
+        f = string.match(toks, "minus%s*([%d%.]*)%s*\092fontdimen")
+        if f == "" then f = 1 end
+        if f then
+           t[3] = f
+        end
+     end
+  elseif string.match(toks, "\092F?B?thinspace") then
+     t = {0.5, 0, 0}
+  elseif string.match(toks, "\092space") then
+     t = {1, 1, 1}
+  end
+  return t
+end
+local colngl = get_glue(tex.toks['FBcolonsp']) or {1, 1, 1}
+local thingl = get_glue(tex.toks['FBthinsp'])  or {.5, 0, 0}
+local guilgl = get_glue(tex.toks['FBguillsp']) or {.8, .3, .8}
 local font_table = {}
-local function new_glue_scaled (fid,width,stretch,shrink)
+local function new_glue_scaled (fid,table)
   if fid > 0 then
      local fp = font_table[fid]
      if not fp then
@@ -70,9 +84,9 @@
      end
      local gl = new_node(GLUE,0)
      if fp then
-        gl.width = width * fp.space
-        gl.stretch = stretch * fp.space_stretch
-        gl.shrink = shrink * fp.space_shrink
+        node.setglue(gl, table[1]*fp.space,
+                         table[2]*fp.space_stretch,
+                         table[3]*fp.space_shrink)
         return gl
      else
         return nil
@@ -124,9 +138,9 @@
           end
           local fbglue
           if FB_punct_thick[char] then
-             fbglue = new_glue_scaled(fid,colnwd,colnst,colnsh)
+             fbglue = new_glue_scaled(fid,colngl)
           else
-             fbglue = new_glue_scaled(fid,thinwd,thinst,thinsh)
+             fbglue = new_glue_scaled(fid,thingl)
           end
           if (realglue or auto) and fbglue then
              if realglue then
@@ -144,7 +158,7 @@
           if is_glue and glue_wd <= 1 then
              addgl = false
           end
-          local fbglue = new_glue_scaled(fid,guilwd,guilst,guilsh)
+          local fbglue = new_glue_scaled(fid,guilgl)
           if addgl and fbglue then
              if is_glue then
                 head = remove_node(head,prev,true)
@@ -188,7 +202,7 @@
           addgl = false
        end
        local fid = item.font
-       local fbglue = new_glue_scaled(fid,guilwd,guilst,guilsh)
+       local fbglue = new_glue_scaled(fid,guilgl)
        if addgl and fbglue then
           if is_glue then
              head = remove_node(head,next,true)



More information about the tex-live-commits mailing list