From 55b6d1e036cbf4eb905dd1438723d091232649cf Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 21 Apr 2014 22:17:31 +0000
Subject: babel-french (21apr14)

git-svn-id: svn://tug.org/texlive/trunk@33601 c570f23f-e606-0410-a88d-b1316a301751
---
 .../source/generic/babel-french/frenchb.dtx        | 306 +++++++++++++--------
 1 file changed, 196 insertions(+), 110 deletions(-)

(limited to 'Master/texmf-dist/source/generic/babel-french/frenchb.dtx')

diff --git a/Master/texmf-dist/source/generic/babel-french/frenchb.dtx b/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
index 2bb07d3ce57..1ab4c36a678 100644
--- a/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
+++ b/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
@@ -1,4 +1,4 @@
-%\CheckSum{3066}
+%\CheckSum{3084}
 %
 %\iffalse
 %    Tell the \LaTeX\ system who we are and write an entry on the
@@ -13,14 +13,14 @@
 %<ldf>\ProvidesLanguage{frenchb}
 %\ProvidesFile{frenchb.dtx}
 %<*!lua>
-         [2014/03/14 v3.0b French support from the babel system]
+         [2014/04/18 v3.0c French support from the babel system]
 %</!lua>
 %<*internal>
 \iffalse
 %</internal>
 %<*lua>
 --
---  File `frenchb.lua' generated from frenchb.dtx [2014/03/14 v3.0b]
+--  File `frenchb.lua' generated from frenchb.dtx [2014/04/18 v3.0c]
 --
 --  Copyright (C) 2014 Daniel Flipo <daniel.flipo at free.fr>
 --  License LPPL: see frenchb.dtx.
@@ -111,7 +111,8 @@
 %    ISBN-2-11-081075-0.
 %
 %    First version released: 1.1 (May 1996) as part of
-%    \babel-3.6beta. Version~2.0a was released in February 2007.
+%    \babel-3.6beta. Version~2.0a was released in February 2007 and
+%    version~3.0a in February 2014.
 %
 %    \frenchb{} has been improved using helpful suggestions from many
 %    people, mainly from Jacques André, Michel Bovani, Thierry Bouche,
@@ -169,8 +170,7 @@
 %    Regarding local typography, the command |\selectlanguage{french}|
 %    switches to the French language\footnote{%
 %      \cs{selectlanguage\{francais\}} and
-%      \cs{selectlanguage\{frenchb\}} are kept for backward
-%      compatibility but should no longer be used.},
+%      \cs{selectlanguage\{frenchb\}} are no longer supported.},
 %    with the following effects:
 %    \begin{enumerate}
 %    \item French hyphenation patterns are made active;
@@ -186,7 +186,7 @@
 %    \item the space after |\dots| is removed in French.
 %    \end{enumerate}
 %
-%    Some commands are provided in \frenchb{} to make typesetting
+%    Some commands are provided by \frenchb{} to make typesetting
 %    easier:
 %    \begin{enumerate}
 %    \item French quotation marks can be entered using the commands
@@ -194,8 +194,12 @@
 %          their appearance depending on what is available to draw
 %          them; even if you use \LaTeXe{} \emph{and} |T1|-encoding,
 %          you should refrain from entering them as
-%          |<<~French quotation marks~>>|: |\og| and |\fg| provide
-%          better horizontal spacing.
+%          |<<~French quotation~>>|: |\og| and |\fg| provide
+%          better horizontal spacing (controlled by |\FBguillspace|).
+%          If French quote characters are available on your keyboard,
+%          you can use them, to get proper spacing in \LaTeXe{} see
+%          option \fbo{og=«, fg=»} p.~\pageref{option-og-fg}.
+%
 %          |\og| and |\fg| can be used outside French, they typeset
 %          then English quotes `` and ''.
 %    \item A command |\up| is provided to typeset superscripts like
@@ -255,7 +259,7 @@
 %     (after loading \babel).
 %
 %  \subsubsection[\textbackslash frenchbsetup{}]
-%     {\fbsetup{\marg{options}}}
+%     {\fbsetup{options}}
 %  \label{sssec-frenchbsetup}
 %
 %     \vspace{.5\baselineskip}
@@ -332,7 +336,7 @@
 %           \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
+%       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}
@@ -363,16 +367,18 @@
 %       \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 add a |\thinspace| before `|;|' `|!|' `|?|' and a
-%       normal (unbreakable) space before~`|:|' as recommended by
-%       the French Imprimerie nationale.  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, \fbo{AutoSpacePunctuation}
-%       is locally switched to \fbo{false}, no spurious space is added
-%       in that case, so the default behaviour of of \frenchb{} in that
-%       area should be fine in most circumstances.
+%       automatically typeset nobreakspaces the width of which is
+%       either |\FBthinspace| (defauts to |\thinspace|) 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, \fbo{AutoSpacePunctuation} is locally
+%       switched to \fbo{false}, no spurious space is added in that
+%       case, 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 will be added before `|:;!?|' \emph{if and only
@@ -386,6 +392,11 @@
 %       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 [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 [LowercaseSuperscripts=false (true)]; by default \frenchb{}
 %       inhibits the uppercasing of superscripts (for instance when
 %       they are moved to page headers).  Making this option
@@ -414,7 +425,7 @@
 %       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
+%       type either \label{option-og-fg}
 %       \texttt{\guillemotleft{} guillemets \guillemotright} or
 %       \texttt{\guillemotleft{}guillemets\guillemotright} (with or
 %       without spaces) to get properly typeset French quotes.
@@ -549,6 +560,11 @@
 %        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.
+%
 %  \subsubsection*{What's new in version 2.6?}
 %
 %      The way \frenchb{} handles list environments has been completely
@@ -710,38 +726,13 @@
 % \changes{v3.0a}{2014/02/28}{Support for options frenchb, francais,
 %    canadien, acadian changed.}
 %
-%    First make sure that |\l@french| is defined (possibly as 0).
-%    In Plain formats, \texttt{@} catcode is not `letter';
-%    LuaTeX and XeTeX formats set |\lang@<languagename>| instead of
-%    |\l@<languagename>|.
-%    \begin{macrocode}
-\chardef\atcatcode=\catcode`\@
-\catcode`\@=11\relax
-\def\FB@nopatterns{%
-   \ifx\l@nohyphenation\@undefined
-      \edef\bbl@nulllanguage{\string\language=0}%
-      \adddialect\l@french0
-   \else
-      \adddialect\l@french\l@nohyphenation
-      \edef\bbl@nulllanguage{\string\language=nohyphenation}%
-   \fi
-   \@nopatterns{French}}
-\ifx\l@french\@undefined
-   \ifx\lang@french\@undefined
-      \FB@nopatterns
-   \else
-      \ifnum\lang@french>0
-         \let\l@french\lang@french
-      \else
-         \FB@nopatterns{French}
-      \fi
-   \fi
-\fi
-%    \end{macrocode}
 %    If \file{frenchb.ldf} was loaded with \babel{}'s options
 %    \Lopt{francais} or \Lopt{frenchb}, we make it behave as if
 %    \Lopt{french} was specified.
+%    In Plain formats, \texttt{@} catcode is not `letter'.
 %    \begin{macrocode}
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
 \def\bbl@tempa{francais}
 \ifx\CurrentOption\bbl@tempa
   \let\l@francais\l@french
@@ -775,19 +766,25 @@
 \LdfInit\CurrentOption\captionsfrench
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/02/18}{frenchb requires babel-3.9.}
+% \changes{v3.0c}{2014/03/30}{No need to define \cs{l@french} as
+%    \cs{lang@french}, babel.def (3.9j) takes care for this.}
 %
-%    Quit if \babel's version is less than 3.9.
+%    Make sure that |\l@french| is defined (possibly as 0).
+%    \file{babel.def} now (3.9i) defines |\l@<languagename>| also for
+%    eTeX, LuaTeX and XeTeX formats which set |\lang@<languagename>|.
 %    \begin{macrocode}
-\let\bbl@tempa\relax
-\ifx\StartBabelCommands\@undefined
-   \let\bbl@tempa\endinput
-   \PackageError{frenchb.ldf}
-        {frenchb requires babel v.3.9.\MessageBreak
-         Aborting here}
-        {Please upgrade Babel!}
+\def\FB@nopatterns{%
+   \ifx\l@nohyphenation\@undefined
+      \edef\bbl@nulllanguage{\string\language=0}%
+      \adddialect\l@french0
+   \else
+      \adddialect\l@french\l@nohyphenation
+      \edef\bbl@nulllanguage{\string\language=nohyphenation}%
+   \fi
+   \@nopatterns{French}}
+\ifx\l@french\@undefined
+   \FB@nopatterns
 \fi
-\bbl@tempa
 %    \end{macrocode}
 %
 % \changes{v2.1d}{2008/05/04}{Avoid warning ``\cs{end} occurred
@@ -814,6 +811,53 @@
 %    \end{macrocode}
 %  \end{macro}
 %
+% \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|
+%    and |\PackageInfo| not defined in Plain:
+%    \begin{macrocode}
+\def\fb@error#1#2{%
+    \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J(frenchb.ldf) }%
+      \errhelp{#2}\errmessage{\\#1}%
+    \endgroup}
+\def\fb@warning#1{%
+   \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J(frenchb.ldf) }%
+      \message{\\#1}%
+   \endgroup}
+\def\fb@info#1{%
+   \begingroup
+      \newlinechar=`\^^J
+      \def\\{^^J}%
+      \wlog{#1}%
+   \endgroup}
+%    \end{macrocode}
+%
+% \changes{v3.0c}{2014/03/30}{frenchb requires babel-3.9i.}
+%
+%    Quit if \babel's version is less than 3.9i.
+%    \begin{macrocode}
+\let\bbl@tempa\relax
+\ifx\babeltags\@undefined
+   \let\bbl@tempa\endinput
+   \ifLaTeXe
+      \PackageError{frenchb.ldf}
+         {frenchb requires babel v.3.9i.\MessageBreak
+          Aborting here}
+         {Please upgrade Babel!}
+   \else
+      \fb@error{frenchb requires babel v.3.9i.\\
+                Aborting here}
+               {Please upgrade Babel!}
+   \fi
+\fi
+\bbl@tempa
+%    \end{macrocode}
+%
 %    \file{frenchb.ldf} can be loaded with options \Lopt{canadien} or
 %    \Lopt{acadian}, which both stand for Canadian French.  Internally,
 %    \Lopt{acadian} will be the name of the corresponding \babel's
@@ -844,26 +888,6 @@
 \fi
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/02/15}{In Plain, provide a substitute for
-%    \cs{PackageWarning} and \cs{PackageInfo}.}
-%
-%    Let's provide a substitute for |\PackageWarning| and |\PackageInfo|
-%    not defined in Plain:
-%    \begin{macrocode}
-\def\fb@warning#1{%
-   \begingroup
-      \newlinechar=`\^^J
-      \def\\{^^J(frenchb.ldf) }%
-      \message{\\#1}%
-   \endgroup}
-\def\fb@info#1{%
-   \begingroup
-      \newlinechar=`\^^J
-      \def\\{^^J}%
-      \wlog{#1}%
-   \endgroup}
-%    \end{macrocode}
-%
 %    French uses the standard values of |\lefthyphenmin| (2)
 %    and |\righthyphenmin| (3); let's provide their values though,
 %    as required by \babel.
@@ -1079,6 +1103,9 @@
 % \changes{v3.0b}{2014/02/13}{Require luatexbase with LaTeXe in case
 %    fontspec has not been loaded before babel.}
 %
+% \changes{v3.0c}{2014/03/26}{Just load luatexbase.sty instead of
+%    luaotfload.sty with plain formats.}
+%
 %    We define two LuaTeX attributes to control spacing in French
 %    for `high punctuation' and quotes, making sure that
 %    |\newluatexattribute| is defined.
@@ -1096,7 +1123,7 @@
   \else
     \begingroup\expandafter\expandafter\expandafter\endgroup
     \expandafter\ifx\csname newluatexattribute\endcsname\relax
-      \input luaotfload.sty
+      \input luatexbase.sty
       \newluatexattribute\FB@addDPspace   \FB@addDPspace=1 \relax
       \newluatexattribute\FB@addGUILspace \FB@addGUILspace=0 \relax
       \fb@info{No need for active punctuation characters\\
@@ -1222,7 +1249,7 @@ local has_attribute = node.has_attribute
 %    in the list starting at |head| and checks the language attributes
 %    of the current glyph: nothing is done if the current language is
 %    not French and only specific punctuation characters (those for
-%    which |FB_punct_left| or |FB_punct_rigt| is true) need a special
+%    which |FB_punct_left| 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
@@ -1244,7 +1271,23 @@ local function french_punctuation (head)
              prev_char = prev.char
           end
        end
+%    \end{macrocode}
+%
+% \changes{v3.0c}{2014/04/18}{Bug correction: null glues should not
+%    trigger space insertion before high ponctuation.  Bug pointed out
+%    by Benoit Rivet for the `lstlisting' environment of the listings
+%    package.}
+%
+%    If the previous item is a glue, check its natural width,
+%    only positive glues are to be replaced by a nobreakspace.
+%    \begin{macrocode}
        local glue = prev_id == GLUE and prev_subtype == 0
+       local glue_wd
+       if glue then
+          glue_spec = prev.spec
+          glue_wd = glue_spec.width
+       end
+       glue = glue and glue_wd > 0
 %    \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
@@ -1260,6 +1303,10 @@ local function french_punctuation (head)
 %               |FB_punct_null| (this avoids spurious spaces in strings
 %               like |(!)| or |??|),
 %               c) the punctuation mark does not start a paragraph.
+%
+% \changes{v3.0c}{2014/04/18}{Missing pair of braces after `and' in the
+%    definition of `auto'.}
+%
 %    \begin{macrocode}
        if FB_punct_thin[char] or FB_punct_thick[char] then
           local SBDP = has_attribute(item, addDPspace)
@@ -1271,8 +1318,9 @@ local function french_punctuation (head)
           end
           local auto =
               SBDP and SBDP > 0 and
-             (prev_char and not FB_punct_null[prev_char]) or
-             (not prev_char and (prev_id ~= 0 or prev_subtype ~= 3))
+              ((prev_char and not FB_punct_null[prev_char]) or
+               (not prev_char and (prev_id ~= 0 or prev_subtype ~= 3))
+              )
           if glue or auto then
              if glue then
                 head = remove_node(head,prev,true)
@@ -1319,6 +1367,11 @@ local function french_punctuation (head)
           end
        end
        local glue = next_id == GLUE and next_subtype == 0
+       if glue then
+          glue_spec = next.spec
+          glue_wd = glue_spec.width
+       end
+       glue = glue and glue_wd > 0
        if glue or (next_char and not FB_guil_null[next_char]) then
           if glue then
              head = remove_node(head,next,true)
@@ -1479,6 +1532,7 @@ return french_punctuation
            #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}}%
    \fi
 %    \end{macrocode}
+%
 % \changes{v2.5i}{2012/04/20}{Temporary fix: as long as
 %    \file{xeCJK.sty} will not use \cs{newXeTeXintercharclass} to
 %    allocate its classes, we will have to define 3 fake classes.}
@@ -1568,15 +1622,15 @@ return french_punctuation
      \XeTeXinterchartoks 255 \FB@punctthin = {%
                      \ifhmode\unskip\penalty\@M\FBthinspace\fi}%
      \XeTeXinterchartoks \FB@guilo \z@ = {%
-                \ifFBAutoSpaceGuill\FBguill@spacing\fi}%
+                \ifFBAutoSpaceGuill\FBguillspace\fi}%
      \XeTeXinterchartoks \FB@guilo 255 = {%
-                \ifFBAutoSpaceGuill\FBguill@spacing\ignorespaces\fi}%
+                \ifFBAutoSpaceGuill\FBguillspace\ignorespaces\fi}%
      \XeTeXinterchartoks \z@ \FB@guilf = {%
-                \ifFBAutoSpaceGuill\FBguill@spacing\fi}%
+                \ifFBAutoSpaceGuill\FBguillspace\fi}%
      \XeTeXinterchartoks \FB@punctthin \FB@guilf = {%
-                \ifFBAutoSpaceGuill\FBguill@spacing\fi}%
+                \ifFBAutoSpaceGuill\FBguillspace\fi}%
      \XeTeXinterchartoks 255 \FB@guilf = {%
-                \ifFBAutoSpaceGuill\unskip\FBguill@spacing\fi}%
+                \ifFBAutoSpaceGuill\unskip\FBguillspace\fi}%
 %    \end{macrocode}
 %    This will avoid spurious spaces in (!), [?] and with Unicode
 %    nobreakspaces (U+00A0, U+202F):
@@ -1819,9 +1873,6 @@ return french_punctuation
 %
 %    \begin{macrocode}
 \ifLaTeXe
-    %\let\ttfamilyORI\ttfamily
-    %\let\rmfamilyORI\rmfamily
-    %\let\sffamilyORI\sffamily
     \DeclareRobustCommand\ttfamilyFB{%
          \FBAutoSpaceGuillfalse
          \ifFB@luatex@punct\FB@addGUILspace=0 \fi
@@ -1935,7 +1986,7 @@ return french_punctuation
 %    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.
-%    |\FBguill@spacing| which does the spacing, has been fine tuned by
+%    |\FBguillspace| which does the spacing, has been fine tuned by
 %    Thierry Bouche to 80\% of an inter-word space but with reduced
 %    stretchability.  French quotes (including spacing) are printed by
 %    |\FB@og| and |\FB@fg|, the expansion of the top level commands
@@ -1951,17 +2002,20 @@ return french_punctuation
 % \changes{v3.0a}{2014/01/10}{Added explicit \cs{FBguillskip}
 %    for LuaTeX.}
 %
+% \changes{v3.0c}{2014/04/18}{Changed \cs{FBguill@spacing} (internal)
+%    to \cs{FBguillspace} (public).}
+%
 %    LuaTeX which requires skips; |\FBguillskip| is computed from
-%    |\FBguill@spacing| for the |lmr10| font, its dimensions will
+%    |\FBguillspace| for the |lmr10| font, its dimensions will
 %    be scaled by \file{frenchb.lua} for the current font.
 %    \begin{macrocode}
 \newskip\FBguillskip
 \FBguillskip=2.664pt plus 0.500pt minus 0.888pt \relax
-\newcommand*{\FBguill@spacing}{\penalty\@M\hskip.8\fontdimen2\font
-                                            plus.3\fontdimen3\font
-                                           minus.8\fontdimen4\font}
+\newcommand*{\FBguillspace}{\penalty\@M\hskip.8\fontdimen2\font
+                                         plus.3\fontdimen3\font
+                                        minus.8\fontdimen4\font}
 %    \end{macrocode}
-%    |\FBguill@spacing| is not used with LuaTeX.
+%    |\FBguillspace| is not used with LuaTeX.
 %    \begin{macrocode}
 \ifFB@luatex@punct
   \DeclareRobustCommand*{\FB@og}{\leavevmode
@@ -1978,17 +2032,17 @@ return french_punctuation
 \ifFB@xetex@punct
   \DeclareRobustCommand*{\FB@og}{\leavevmode
         \bgroup\FBAutoSpaceGuillfalse\guillemotleft\egroup
-        \FBguill@spacing}
+        \FBguillspace}
   \DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguill@spacing
+        \FBguillspace
         \bgroup\FBAutoSpaceGuillfalse\guillemotright\egroup\xspace}
 \fi
 \ifFB@active@punct
   \DeclareRobustCommand*{\FB@og}{\leavevmode
         \guillemotleft
-        \FBguill@spacing}
+        \FBguillspace}
   \DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
-        \FBguill@spacing
+        \FBguillspace
         \guillemotright\xspace}
 \fi
 %    \end{macrocode}
@@ -2002,7 +2056,7 @@ return french_punctuation
 %    correctly in English when using XeTeX or LuaTeX, fixed by using
 %    \cs{textquotedblleft} and \cs{textquotedblright} defined above.}
 %
-% \changes{v3.0a}{2010/08/20}{\cs{bbl@nonfrenchguillemets} deleted,
+% \changes{v3.0a}{2014/01/10}{\cs{bbl@nonfrenchguillemets} deleted,
 %    use \cs{babel@save} instead.}
 %
 %    \begin{macrocode}
@@ -2025,8 +2079,9 @@ return french_punctuation
 %
 % \begin{macro}{\datefrench}
 %    The macro |\datefrench| redefines the command |\today| to
-%    produce French dates. This new implementation requires \babel~3.9
-%    or newer.
+%    produce French dates. This new implementation requires \babel~3.9i
+%    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.}
@@ -2037,6 +2092,9 @@ return french_punctuation
 % \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}.}
+%
 %    \begin{macrocode}
 \ifLaTeXe
   \def\BabelLanguages{french,acadian}
@@ -2940,6 +2998,8 @@ return french_punctuation
 % \changes{v3.0a}{2014/02/28}{New options OldFigTabCaptions and
 %    CustomiseFigTabCaptions.}
 %
+% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.}
+%
 %    \begin{macrocode}
 \newcommand*{\frenchbsetup}[1]{%
   \setkeys{FB}{#1}%
@@ -2966,6 +3026,7 @@ return french_punctuation
 \newif\ifFBAutoSpaceFootnotes       \FBAutoSpaceFootnotesfalse
 \newif\ifFBOriginalTypewriter       \FBOriginalTypewriterfalse
 \newif\ifFBThinColonSpace           \FBThinColonSpacefalse
+\newif\ifFBINGuillSpace             \FBINGuillSpacefalse
 \newif\ifFBThinSpaceInFrenchNumbers \FBThinSpaceInFrenchNumbersfalse
 \newif\ifFBFrenchSuperscripts       \FBFrenchSuperscriptstrue
 \newif\ifFBLowercaseSuperscripts    \FBLowercaseSuperscriptstrue
@@ -2985,6 +3046,8 @@ return french_punctuation
 %    looking layout for the whole document (even in parts written in
 %    languages other than French); the end-user will then be able to
 %    customise the values of all these flags with \fbsetup{}.
+%    When the \cls{beamer} is loaded, lists are not customised at all
+%    to ensure compatibility.
 %
 % \changes{v2.5b}{2010/10/30}{Do not use the
 %    test \cs{iflanguage}\{french\} to check whether French is the
@@ -2994,15 +3057,22 @@ return french_punctuation
 %    In this case \cs{l@french} and \cs{l@english} are 0.
 %    Pointed out by Günter Milde.}
 %
+% \changes{v3.0c}{2014/03/30}{Activate option StandardLists when beamer
+%    class is loaded.}
+%
 %    \begin{macrocode}
 \edef\FB@french{\CurrentOption}
 \AtEndOfPackage{%
   \ifx\bbl@main@language\FB@french
     \FBGlobalLayoutFrenchtrue
-    \FBReduceListSpacingtrue
-    \FBStandardItemizeEnvfalse
-    \FBStandardEnumerateEnvfalse
-    \FBStandardItemLabelsfalse
+    \@ifclassloaded{beamer}%
+      {\PackageInfo{frenchb.ldf}{%
+          No list customisation for the beamer class,%
+          \MessageBreak reported}}%
+      {\FBReduceListSpacingtrue
+       \FBStandardItemizeEnvfalse
+       \FBStandardEnumerateEnvfalse
+       \FBStandardItemLabelsfalse}%
     \FBIndentFirsttrue
     \FBFrenchFootnotestrue
     \FBAutoSpaceFootnotestrue
@@ -3114,6 +3184,8 @@ return french_punctuation
                       {\csname FBOriginalTypewriter#1\endcsname}%
   \define@key{FB}{ThinColonSpace}[true]%
                       {\csname FBThinColonSpace#1\endcsname}%
+  \define@key{FB}{INGuillSpace}[true]%
+                      {\csname FBINGuillSpace#1\endcsname}%
   \define@key{FB}{ThinSpaceInFrenchNumbers}[true]%
                       {\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
   \define@key{FB}{FrenchSuperscripts}[true]%
@@ -3435,7 +3507,19 @@ return french_punctuation
     \ifFB@luatex@punct
        \FBcolonskip=\FBthinskip\relax
     \else
-      \renewcommand*{\FBcolonspace}{\FBthinspace}%
+       \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@luatex@punct
+       \FBguillskip=3.33pt plus 1.665pt minus 1.11pt \relax
+    \else
+       \renewcommand*{\FBguillspace}{\space}%
     \fi
   \fi
 %    \end{macrocode}
@@ -3551,12 +3635,14 @@ return french_punctuation
      AutoSpacePunctuation=false [true]\MessageBreak
      OriginalTypewriter=true [false]\MessageBreak
      ThinColonSpace=true [false]\MessageBreak
+     INGuillSpace=true [false]\MessageBreak
      ThinSpaceInFrenchNumbers=true [false]\MessageBreak
      FrenchSuperscripts=false [true]\MessageBreak
      LowercaseSuperscripts=false [true]\MessageBreak
      PartNameFull=false [true]\MessageBreak
      SuppressWarning=true [false]\MessageBreak
      CustomiseFigTabCaptions=false [true]\MessageBreak
+     OldFigTabCaptions=true [false]\MessageBreak
      og= <left quote character>, fg= <right quote character>%
      \MessageBreak
      *********************************************%
-- 
cgit v1.2.3

