summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-05-09 21:16:56 +0000
committerKarl Berry <karl@freefriends.org>2017-05-09 21:16:56 +0000
commitab7e88889752839c4c564b3f931b2ee0c906bf2e (patch)
treeacd700dbb34a25fbb4a841c33549fe1215f58aa8 /Master/texmf-dist/source/generic/babel-french/frenchb.dtx
parent2d42acb5090a08806f0533c9688b548b064b0324 (diff)
babel-french (8may17)
git-svn-id: svn://tug.org/texlive/trunk@44270 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-french/frenchb.dtx')
-rw-r--r--Master/texmf-dist/source/generic/babel-french/frenchb.dtx1672
1 files changed, 859 insertions, 813 deletions
diff --git a/Master/texmf-dist/source/generic/babel-french/frenchb.dtx b/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
index 3d10d08f94e..f4b263f49d0 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{3472}
+%\CheckSum{3486}
%
%\iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
@@ -7,20 +7,20 @@
\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
%</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,230 +309,240 @@
% |\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}
%
% \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}
-% 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},
+% \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|.
+%
+% \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.
-%
-% 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).
+% \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 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,14 +577,14 @@
% 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
% \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@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@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).
-%
-% \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.
-%
-% \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.
-%
-% \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 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}
-%
-% 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.
+% 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.
+%
+% 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?}
+%
+% 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?}
+%
+% 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.
+%
+% 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.
%
% \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@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@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@acadian\@undefined
\ifx\l@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@savevariable} to handle apostrophe's \cs{lccode}.}
+% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s
+% \cs{babel@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@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@addto{extras}{\bbl@frenchspacing}
\FB@addto{noextras}{\bbl@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@luatex@punct} for
-% `high punctuation' management with LuaTeX engines.}
+% `high punctuation’ management with LuaTeX engines.}
%
% \begin{macro}{\ifFB@active@punct}
% \begin{macrocode}
@@ -1024,11 +1051,11 @@
%
% \begin{macro}{\ifFB@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@luatex@punct
\ifFBLuaTeX
@@ -1052,11 +1079,11 @@
%
% \begin{macro}{\ifFB@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@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@spacing|
+% together with `high punctuation’; the conditional |\ifFB@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@spacing@off}
% \begin{macro}{\FB@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@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@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@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@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@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@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@spacing \FB@spacing=1 \relax
\newattribute\FB@addDPspace \FB@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_thin =
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 @@ local FB_punct_null =
[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_before = node.insert_before
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
-% \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|):
+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}
+% 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 @@ local guilsh = guil10.shrink/65536/1.11
%
% \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 @@ local function new_glue_scaled (fid,width,stretch,shrink)
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 @@ local function new_glue_scaled (fid,width,stretch,shrink)
end
end
% \end{macrocode}
-% Let's catch LuaTeX attributes |\FB@spacing|, |\FB@addDPspace|
-% and |\FB@addGUILspace|. Constant |FR=lang.id(french)| is
-% defined by command |\activate@luatexpunct|.
+% Let’s catch LuaTeX attributes |\FB@spacing|, |\FB@addDPspace|
+% and |\FB@addGUILspace|.
% \begin{macrocode}
local FBspacing = luatexbase.attributes['FB@spacing']
local addDPspace = luatexbase.attributes['FB@addDPspace']
@@ -1401,7 +1423,8 @@ local has_attribute = node.has_attribute
% 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@luatexpunct|.
%
% \changes{v3.1b}{2014/09/16}{Add a check for null fid
% in french\_punctuation (Tikz \cs{nullfont}).
@@ -1430,17 +1453,16 @@ local function french_punctuation (head)
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 @@ local function french_punctuation (head)
% \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 @@ local function french_punctuation (head)
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 @@ local function french_punctuation (head)
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 @@ local function french_punctuation (head)
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 @@ local function french_punctuation (head)
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 @@ local function french_punctuation (head)
% (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,15 +1613,15 @@ local function french_punctuation (head)
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
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 @@ return french_punctuation
% 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 @@ return french_punctuation
% \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 @@ return french_punctuation
% and |\FB@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 @@ return french_punctuation
%
% \changes{v2.6g}{2013/12/09}{U+00A0 (Unicode nobreakspace) and U+202F
% (Unicode nobreakthinspace) added to class \cs{FB@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@guilnul} for characters
% U+00A0 (Unicode nobreakspace) and U+202F (Unicode
@@ -1764,7 +1786,7 @@ return french_punctuation
% \changes{v3.1l}{2016/02/07}{Add a variant of \cs{babel@savevariable}
% to save \cs{XeTeXcharclass}(es) in a loop.}
%
-% As |\babel@savevariable| doesn't work inside a |\bbl@for| loop,
+% As |\babel@savevariable| doesn’t work inside a |\bbl@for| loop,
% we define a variant to save the |\XeTeXcharclass| values which
% will be modified in French.
% \begin{macrocode}
@@ -1807,12 +1829,12 @@ return french_punctuation
%
% \changes{v2.5g}{2011/12/31}{XeTeXcharclass(es) for French quotes will
% be set to \cs{FB@guilo} and \cs{FB@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@xetex@punct@nonfrench} below.}
@@ -1848,7 +1870,7 @@ return french_punctuation
\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@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 @@ return french_punctuation
\XeTeXinterchartoks \FB@guilf \FB@punctthick = {%
\ifFB@spacing\FDP@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@nonchar| isn't specific to glue tokens (this
+% |\XeTeXcharclass=\FB@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 @@ return french_punctuation
\fi
\fi}%
\XeTeXinterchartoks \FB@guilo \z@ = {%
- \ifFB@spacing\FBguillspace\fi}%
+ \ifFB@spacing\FB@guillspace\fi}%
\XeTeXinterchartoks \FB@guilo \FB@nonchar = {%
- \ifFB@spacing\FBguillspace\ignorespaces\fi}%
+ \ifFB@spacing\FB@guillspace\ignorespaces\fi}%
\XeTeXinterchartoks \z@ \FB@guilf = {%
- \ifFB@spacing\FBguillspace\fi}%
+ \ifFB@spacing\FB@guillspace\fi}%
\XeTeXinterchartoks \FB@punctthin \FB@guilf = {%
- \ifFB@spacing\FBguillspace\fi}%
+ \ifFB@spacing\FB@guillspace\fi}%
\XeTeXinterchartoks \FB@nonchar \FB@guilf = {%
- \ifFB@spacing\unskip\FBguillspace\fi}%
+ \ifFB@spacing\unskip\FB@guillspace\fi}%
% \end{macrocode}
% This will avoid spurious spaces in (!), [?] and with Unicode
% nobreakspaces (U+00A0, U+202F):
@@ -1915,7 +1937,7 @@ return french_punctuation
{\XeTeXcharclass\FB@char=\FB@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@for\FB@char
{`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
@@ -1934,7 +1956,7 @@ return french_punctuation
% \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@active@punct
\initiate@active@char{:}%
@@ -1946,10 +1968,10 @@ return french_punctuation
% \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@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 @@ return french_punctuation
\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@shorthand{system}{:}{\string:}
@@ -2026,8 +2048,8 @@ return french_punctuation
% \begin{macrocode}
\FB@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@activate{:}\bbl@activate{;}%
@@ -2043,9 +2065,9 @@ return french_punctuation
% \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 @@ return french_punctuation
% \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 @@ return french_punctuation
% 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 @@ return french_punctuation
% 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 @@ return french_punctuation
% \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 @@ return french_punctuation
%
% \begin{macro}{\FB@og}
% \begin{macro}{\FB@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@og| and |\FB@fg|, the expansion of the top level commands
% |\og| and |\og| is different in and outside French.
@@ -2232,67 +2255,64 @@ return french_punctuation
% \changes{v3.0a}{2014/01/10}{Definitions of \cs{FB@og} and \cs{FB@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@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@guillspace}{\penalty\@M\FBguillspace}
+\newtoks\FBguillsp
% \end{macrocode}
-% For efficiency reasons, |\FB@og| and |\FB@fg| relie on
-% |\FBguillspace| with LuaTeX engines (|\FB@spacing| is set
-% to~0 locally).
+% The definitions of |\FB@og| and |\FB@fg| need some engine-dependent
+% tuning: for LuaTeX, |\FB@spacing| is set to~0 locally to prevent
+% the quotes characters from adding space when option
+% \fbo{og=«, fg=»} is set.
% \begin{macrocode}
\ifFB@luatex@punct
\DeclareRobustCommand*{\FB@og}{\leavevmode
\bgroup\FB@spacing=0 \guillemotleft\egroup
- \FBguillspace}
+ \FB@guillspace}
\DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
- \FBguillspace
+ \FB@guillspace
\bgroup\FB@spacing=0 \guillemotright\egroup}
\fi
% \end{macrocode}
-% With XeTeX, |\ifFB@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@spacing| is set to |false| locally for the
+% same reason.
% \begin{macrocode}
\ifFB@xetex@punct
\DeclareRobustCommand*{\FB@og}{\leavevmode
\bgroup\FB@spacingfalse\guillemotleft\egroup
- \FBguillspace}
+ \FB@guillspace}
\DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
- \FBguillspace
+ \FB@guillspace
\bgroup\FB@spacingfalse\guillemotright\egroup}
\fi
\ifFB@active@punct
\DeclareRobustCommand*{\FB@og}{\leavevmode
\guillemotleft
- \FBguillspace}
+ \FB@guillspace}
\DeclareRobustCommand*{\FB@fg}{\ifdim\lastskip>\z@\unskip\fi
- \FBguillspace
+ \FB@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 @@ return french_punctuation
% 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 @@ return french_punctuation
% 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@og}
@@ -2395,17 +2416,15 @@ return french_punctuation
% \changes{v3.1j}{2015/11/21}{\cs{PackageWarning} is undefined in
% Plain, use \cs{fb@warning} instead.}
%
+% \changes{v3.3a}{2017/04/30}{\cs{FB@quotespace} (kern), changed
+% into \cs{FB@guillspace}.}
+%
% The internal command |\fr@quote| takes one (long) argument: the
% quotation text.
% \begin{macrocode}
\newcommand{\fr@quote}[1]{%
\leavevmode
\advance\FBguill@level by \@ne
-% \end{macrocode}
-% Kern used inside French quotes; must match the fixed part of
-% |\FBguillspace|.
-% \begin{macrocode}
- \def\FB@quotespace{\kern.8\fontdimen2\font}%
\ifcase\FBguill@level
\or
% \end{macrocode}
@@ -2416,28 +2435,27 @@ return french_punctuation
\FB@everypar=\everypar
\ifx\FBeveryparguill\FBguillnone
\else
- \def\FBeverypar@quote{\FBeveryparguill\FB@quotespace}%
+ \def\FBeverypar@quote{\FBeveryparguill\FB@guillspace}%
\everypar=\expandafter{\the\everypar \FBeverypar@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.}
%
% \begin{macrocode}
\ifx\FBeverylineguill\FBguillopen
- \localleftbox{\guillemotleft\FB@quotespace}%
+ \localleftbox{\guillemotleft\FB@guillspace}%
\let\FBeverypar@quote\relax
\ogi #1\ifFBcloseguill\fgi\fi
\else
\ifx\FBeverylineguill\FBguillclose
- \localleftbox{\guillemotright\FB@quotespace}%
+ \localleftbox{\guillemotright\FB@guillspace}%
\let\FBeverypar@quote\relax
\ogi #1\ifFBcloseguill\fgi\fi
\else
@@ -2448,14 +2466,14 @@ return french_punctuation
\let\FBeverypar@quote\relax
\ifFBInnerGuillSingle
\def\ogii{\leavevmode
- \guilsinglleft\FBguillspace}%
+ \guilsinglleft\FB@guillspace}%
\def\fgii{\ifdim\lastskip>\z@\unskip\fi
- \FBguillspace\guilsinglright}%
+ \FB@guillspace\guilsinglright}%
\ifx\FBeveryparguill\FBguillopen
- \def\FBeverypar@quote{\guilsinglleft\FB@quotespace}%
+ \def\FBeverypar@quote{\guilsinglleft\FB@guillspace}%
\fi
\ifx\FBeveryparguill\FBguillclose
- \def\FBeverypar@quote{\guilsinglright\FB@quotespace}%
+ \def\FBeverypar@quote{\guilsinglright\FB@guillspace}%
\fi
\fi
\ogii #1\ifFBcloseguill \fgii \fi
@@ -2466,11 +2484,11 @@ return french_punctuation
% Warn if |\FBguill@level| $\ge 3$:
% \begin{macrocode}
\ifx\PackageWarning\@undefined
- \fb@warning{\noexpand\frquote\space accepts no more than
+ \fb@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 @@ return french_punctuation
% \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 @@ return french_punctuation
%
% \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 @@ return french_punctuation
%
% \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 @@ return french_punctuation
% 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 @@ return french_punctuation
% 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 @@ return french_punctuation
% \end{macrocode}
% |\FB@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 @@ return french_punctuation
% 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@up| checks whether the current font is a Type1 `Expert'
-% (or `Pro') font with real superscripts or not (the code works
+% |\FB@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@family| (family name of
% the current font) is split by |\FB@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@firstthree| and the rest stored
-% in |\FB@suffix| which is expected to be `|x|' or `|j|' for expert
+% in |\FB@suffix| which is expected to be `|x|’ or `|j|’ for expert
% fonts.
% \begin{macrocode}
\def\FB@split#1#2#3#4\@nil{\def\FB@firstthree{#1#2#3}%
@@ -2681,13 +2699,13 @@ return french_punctuation
\realsuperscript{\FB@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 @@ return french_punctuation
% \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,14 +2761,14 @@ return french_punctuation
#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}
\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 @@ return french_punctuation
\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 @@ return french_punctuation
% 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 @@ return french_punctuation
% \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 @@ return french_punctuation
%
% \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@TS1} is no longer relevant, let's change it.}
+% about \cs{M@TS1} is no longer relevant, let’s change it.}
%
% \begin{macrocode}
\ifLaTeXe
@@ -2907,11 +2925,11 @@ return french_punctuation
% |\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 @@ return french_punctuation
% \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@french| is
% not properly set by \babel~3.9h with Plain LuaTeX format.
%
@@ -3032,8 +3050,8 @@ return french_punctuation
% \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@options}.}
+% numprint’s command \cs{npstylefrench}, it will be redefined
+% `AtBeginDocument’ by \cs{FBprocess@options}.}
%
% \subsection{Caption names}
% \label{ssec-captions}
@@ -3042,26 +3060,29 @@ return french_punctuation
% 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,21 +3090,23 @@ return french_punctuation
\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}
\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 @@ return french_punctuation
\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@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@emptypart}{\def\thepart{}}%
- \DeclareRobustCommand*{\FB@partname}{%
- \ifFBPartNameFull
- \csname ordinal\romannumeral\value{part}\endcsname\space
- partie\FB@emptypart
- \else
- Partie%
- \fi}%
- }
+ \DeclareRobustCommand*{\FB@emptypart}{\def\thepart{}}%
+ \DeclareRobustCommand*{\FB@partname}{%
+ \ifFBPartNameFull
+ \csname ordinal\romannumeral\value{part}\endcsname\space
+ \frenchpartnameord\FB@emptypart
+ \else
+ Partie%
+ \fi}%
+ }
\SetString{\partname}{\FB@partname}
\EndBabelCommands
% \end{macrocode}
@@ -3165,44 +3192,44 @@ return french_punctuation
% 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@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@Separator| to |\@makecaption|; |\FBCaption@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@Separator};
-% Newif \cs{if@FBwarning@capsep} added.}
+% has been renamed as \cs{FBCaption@Separator};
+% Newif \cs{if@FBwarning@capsep} added.}
%
% \changes{v2.6h}{2014/01/03}{No active catcodes in
-% \cs{STD@makecaption}'s definition.}
+% \cs{STD@makecaption}’s definition.}
%
% \changes{v3.0a}{2014/02/28}{Remove \cs{CaptionSeparatorORI}, use
% \cs{babel@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 @@ return french_punctuation
% \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 @@ return french_punctuation
% 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 @@ return french_punctuation
% a warning in case it has been changed by a class or package not
% (yet) compatible with \frenchb; then change the definition of
% |\FBCaption@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@Separator} changed when
% option CustomiseFigTabCaptions is set to false.}
@@ -3354,7 +3381,7 @@ return french_punctuation
\global\let\@makecaption\FB@makecaption
% \end{macrocode}
% Do not overwrite |\FBCaption@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,23 +3411,23 @@ return french_punctuation
% \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.
% 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,
% 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 @@ return french_punctuation
% \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 @@ return french_punctuation
% \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 @@ return french_punctuation
%
% 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@save| and |\babel@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@options|.
% \fbsetup{} can only be called in the preamble.
@@ -3535,8 +3562,8 @@ return french_punctuation
% \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 @@ return french_punctuation
% StandardLayout $\to$ StandardLists.}
%
% \changes{v2.0f}{2008/03/23}{StandardLayout option had no
-% effect on lists. Test moved to \cs{FBprocess@options}.}
+% effect on lists. Test moved to \cs{FBprocess@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@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@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@main@language}). Suggested by Ulrike Fischer.}
+% no longer changed when frenchb is not the last option of babel
+% (\cs{bbl@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@main@language}.}
+% default now means `StandardLayout’, they will be changed to
+% `FrenchLayout’ AtEndOfPackage only if french is
+% \cs{bbl@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 @@ return french_punctuation
% \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 @@ return french_punctuation
% The defaults values of these flags have been choosen so that
% \frenchb{} does not change anything regarding the global layout.
% |\bbl@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@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 @@ return french_punctuation
% \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 @@ return french_punctuation
\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 @@ return french_punctuation
% \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@key{FB}{ShowOptions}[true]%
@@ -3730,11 +3774,13 @@ return french_punctuation
% 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@save| will do the job.
+% |\babel@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@main@language\FB@french
\else
+ \FBGlobalLayoutFrenchfalse
\PackageWarning{frenchb.ldf}%
{Option `GlobalLayoutFrench' skipped:\MessageBreak
French is *not* babel's last option.\MessageBreak
@@ -3800,7 +3846,10 @@ return french_punctuation
\define@key{FB}{OriginalTypewriter}[true]%
{\csname FBOriginalTypewriter#1\endcsname}%
\define@key{FB}{ThinColonSpace}[true]%
- {\csname FBThinColonSpace#1\endcsname}%
+ {\csname FBThinColonSpace#1\endcsname
+ \ifFBThinColonSpace
+ \renewcommand*{\FBcolonspace}{\FBthinspace}%
+ \fi}%
\define@key{FB}{ThinSpaceInFrenchNumbers}[true]%
{\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
\define@key{FB}{FrenchSuperscripts}[true]%
@@ -3814,7 +3863,7 @@ return french_punctuation
\define@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@CurOpt| while reading \file{frenchb.ldf}.
% \begin{macrocode}
\ifFBOldFigTabCaptions
@@ -3842,7 +3891,10 @@ return french_punctuation
%
% \begin{macrocode}
\define@key{FB}{INGuillSpace}[true]%
- {\csname FBINGuillSpace#1\endcsname}%
+ {\csname FBINGuillSpace#1\endcsname
+ \ifFBINGuillSpace
+ \renewcommand*{\FBguillspace}{\space}%
+ \fi}%
\define@key{FB}{InnerGuillSingle}[true]%
{\csname FBInnerGuillSingle#1\endcsname}%
\define@key{FB}{EveryParGuill}[open]%
@@ -3855,8 +3907,8 @@ return french_punctuation
\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 @@ return french_punctuation
\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 @@ return french_punctuation
% (see \cs{frenchbsetup}).}
%
% \changes{v2.5g}{2011/12/31}{When \cs{ifFB@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@guilo} and \cs{FB@guilf}. Otherwise French
% quotes behave as normal characters (their XeTeXcharclass is 0).}
%
% \changes{v2.6h}{2014/01/03}{\cs{FG@og} and \cs{FG@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 @@ return french_punctuation
{\ifFBunicode
% \end{macrocode}
% LuaTeX or XeTeX in use, first try modern LuaTeX: we just need
-% to set LuaTeX's attribute |\FB@addGUILspace| to 1,
+% to set LuaTeX’s attribute |\FB@addGUILspace| to 1,
% \begin{macrocode}
\ifFB@luatex@punct
\FB@addGUILspace=1 \relax
@@ -4120,8 +4172,8 @@ return french_punctuation
reported}%
\fi}{}%
% \end{macrocode}
-% Reset |\FB@ufl|'s normal meaning and update lists' settings
-% in case French is the main language: \label{FB@ufl}
+% Reset |\FB@ufl|’s normal meaning and update lists’ settings
+% now in case French is the main language: \label{FB@ufl}
% \begin{macrocode}
\def\FB@ufl{\update@frenchlists}
\ifx\bbl@main@language\FB@french
@@ -4160,34 +4212,8 @@ return french_punctuation
\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@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@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 @@ return french_punctuation
% \fbo{FrenchSuperscripts}: if \fbo{true} |\up=\fup|, else
% |\up=\textsuperscript|. Anyway |\up*=\FB@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 @@ return french_punctuation
{\textsuperscript}}%
\fi
% \end{macrocode}
-% \fbo{LowercaseSuperscripts}: if \fbo{true} let |\FB@lc| be
-% |\lowercase|, else |\FB@lc| is redefined to do nothing.
+% \fbo{LowercaseSuperscripts}: if \fbo{false} |\FB@lc| is redefined
+% to do nothing.
% \begin{macrocode}
\ifFBLowercaseSuperscripts
\else
@@ -4248,7 +4274,7 @@ return french_punctuation
% 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 @@ return french_punctuation
og= <left quote character>, fg= <right quote character>%
\MessageBreak
*********************************************%
- \MessageBreak\protect\frenchbsetup{ShowOptions}}
+ \MessageBreak\protect\frenchsetup{ShowOptions}}
\fi
}
% \end{macrocode}
@@ -4350,7 +4376,7 @@ return french_punctuation
%
% 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@options|, switch
+% \file{hyperref}’s bookmarks, execute |\FBprocess@options|, switch
% LuaTeX punctuation on and issue some warnings if necessary.
% \begin{macrocode}
\AtBeginDocument{%
@@ -4363,7 +4389,7 @@ return french_punctuation
% \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 @@ return french_punctuation
}%
\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@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@luatex@punct
+ \FBcolonsp=\expandafter{\meaning\FBcolonspace}
+ \FBthinsp= \expandafter{\meaning\FBthinspace}
+ \FBguillsp=\expandafter{\meaning\FBguillspace}
\activate@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 @@ return french_punctuation
% \file{luainputenc}, in the latter case |\FB@og| and |\FB@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 @@ return french_punctuation
% 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 @@ return french_punctuation
\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 @@ return french_punctuation
% \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 @@ return french_punctuation
% \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 @@ return french_punctuation
% \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 @@ return french_punctuation
%
% \begin{macro}{\update@frenchlists}
% \begin{macro}{\bbl@frenchlistlayout}
-% \begin{macro}{\bbl@nonfrenchlistlayout}
-% |\update@frenchlists| will set up lists according to the options
-% of \fbsetup{}.
+% |\update@frenchlists| will set up lists according to the final
+% options (default or part of \fbsetup{} eventually overruled in
+% |\FBprocess@options|).
% \begin{macrocode}
\def\update@frenchlists{%
\ifFBReduceListSpacing \let\list\listFB \fi
@@ -4755,12 +4787,24 @@ return french_punctuation
\else \let\enumerate\enumerateFB \let\description\descriptionFB \fi
}
% \end{macrocode}
+%
+% \changes{v3.2h}{2017/02/03}{Execute \cs{update@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@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@frenchlists| should not be included in
-% |\extrasfrench| yet, so we also define |\FB@ufl| as |\relax|,
-% it will be redefined as |\update@frenchlists| in due time
-% `AtBeginDocument' by |\FBprocess@options|,
-% see p.~\pageref{FB@ufl}.
+% the command |\update@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@ufl| as
+% |\relax|, it will be redefined later `AtBeginDocument’ by
+% |\FBprocess@options| as |\update@frenchlists|,
+% see p.~\pageref{FB@ufl}.
% \begin{macrocode}
\def\FB@ufl{\relax}
\def\bbl@frenchlistlayout{%
@@ -4770,20 +4814,13 @@ return french_punctuation
\babel@save\enumerate \babel@save\description
\babel@save\labelitemi \babel@save\labelitemii
\babel@save\labelitemiii \babel@save\labelitemiv
- \fi
- \FB@ufl
-}
-\def\bbl@nonfrenchlistlayout{%
- \ifFBGlobalLayoutFrench
- \update@frenchlists
+ \FB@ufl
\fi
}
\FB@addto{extras}{\bbl@frenchlistlayout}
-\FB@addto{noextras}{\bbl@nonfrenchlistlayout}
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \subsection{French indentation of sections}
% \label{ssec-indent}
@@ -4800,11 +4837,14 @@ return french_punctuation
% like Spanish. Pointed out by Juan José Torrens.}
%
% We will need to save the value of the flag |\if@afterindent|
-% `AtBeginDocument' before eventually changing its value.
+% `AtBeginDocument’ before eventually changing its value.
%
% \begin{macrocode}
\def\bbl@frenchindent{%
- \ifFBGlobalLayoutFrench\else\babel@save\@afterindentfalse\fi
+ \ifFBGlobalLayoutFrench
+ \else
+ \babel@save\@afterindentfalse
+ \fi
\ifFBIndentFirst
\let\@afterindentfalse\@afterindenttrue
\@afterindenttrue
@@ -4825,7 +4865,7 @@ return french_punctuation
% \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 @@ return french_punctuation
% 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 @@ return french_punctuation
}
% \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 @@ return french_punctuation
\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 @@ return french_punctuation
\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 @@ return french_punctuation
% 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,16 +5017,16 @@ return french_punctuation
\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
% 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 @@ return french_punctuation
\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 @@ return french_punctuation
% \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 @@ return french_punctuation
% 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}