diff options
author | Karl Berry <karl@freefriends.org> | 2017-05-09 21:16:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-05-09 21:16:56 +0000 |
commit | ab7e88889752839c4c564b3f931b2ee0c906bf2e (patch) | |
tree | acd700dbb34a25fbb4a841c33549fe1215f58aa8 /Master | |
parent | 2d42acb5090a08806f0533c9688b548b064b0324 (diff) |
babel-french (8may17)
git-svn-id: svn://tug.org/texlive/trunk@44270 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-french/frenchb.pdf | bin | 270559 -> 235679 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/generic/babel-french/frenchb.dtx | 1672 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/frenchb.ldf | 161 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/frenchb.lua | 56 |
4 files changed, 973 insertions, 916 deletions
diff --git a/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf b/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf Binary files differindex 4741974e754..328aff00744 100644 --- a/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf +++ b/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf 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} diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf index 1d689979bc8..b1f5be0de66 100644 --- a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf @@ -33,9 +33,9 @@ %% extension .ins) which are part of the distribution. %% \ProvidesLanguage{frenchb} - [2017/01/30 v3.2g French support from the babel system] + [2017/04/30 v3.3a French support from the babel system] %% -%% File `frenchb.ldf' +%% File `frenchb.ldf’ %% Babel package for LaTeX version 2e %% Copyright © 1996 - 2017 %% by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr> @@ -200,10 +200,8 @@ \fi \newcommand*{\FBcolonspace}{\space} \newcommand*{\FBthinspace}{\hskip.5\fontdimen2\font \relax} -\newskip\FBcolonskip -\FBcolonskip=3.33pt plus 1.665pt minus 1.11pt \relax -\newskip\FBthinskip -\FBthinskip=1.6667pt \relax +\newtoks\FBcolonsp +\newtoks\FBthinsp \newif\ifFB@spacing \FB@spacingtrue \newcommand*{\FB@spacing@on}{% \ifFB@luatex@punct @@ -218,7 +216,6 @@ \FB@spacingfalse \fi} \ifFB@luatex@punct - \directlua{tex.enableprimitives("", tex.extraprimitives("omega"))} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newluafunction\endcsname\relax \input ltluatex.tex @@ -343,15 +340,15 @@ \fi \fi}% \XeTeXinterchartoks \FB@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}% \bbl@for\FB@char {`\[,`\(,"A0,"202F}% {\XeTeXcharclass\FB@char=\FB@punctnul}% @@ -469,33 +466,33 @@ \fi \let\xspace\relax \fi -\newskip\FBguillskip -\FBguillskip=2.664pt plus 0.500pt minus 0.888pt \relax -\newcommand*{\FBguillspace}{\penalty\@M\hskip.8\fontdimen2\font - plus.3\fontdimen3\font - minus.8\fontdimen4\font} +\newcommand*{\FBguillspace}{\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font \relax} +\newcommand*{\FB@guillspace}{\penalty\@M\FBguillspace} +\newtoks\FBguillsp \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 \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 \newcommand*{\og}{\@empty} @@ -536,38 +533,37 @@ \newcommand{\fr@quote}[1]{% \leavevmode \advance\FBguill@level by \@ne - \def\FB@quotespace{\kern.8\fontdimen2\font}% \ifcase\FBguill@level \or \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 \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 \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 @@ -575,11 +571,11 @@ \fi \else \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 @@ -820,18 +816,20 @@ } \ifx\FBfigtabshape\@undefined \let\FBfigtabshape\scshape \fi \StartBabelCommands*{\BabelLanguages}{captions} - [unicode, fontenc=EU1 EU2, charset=utf8] + [unicode, fontenc=EU1 EU2 TU, charset=utf8] \SetString{\refname}{Références} \SetString{\abstractname}{Résumé} \SetString{\prefacename}{Préface} \SetString{\contentsname}{Table des matières} \SetString{\ccname}{Copie à } \SetString{\proofname}{Démonstration} + \SetString{\partfirst}{Première} + \SetString{\partsecond}{Deuxième} \SetStringLoop{ordinal#1}{% - Première,Deuxième,Troisième,Quatrième,Cinquième,% - Sixième,Septième,Huitième,Neuvième,Dixième,Onzième,% - Douzième,Treizième,Quatorzième,Quinzième,Seizième,% - Dix-septième,Dix-huitième,Dix-neuvième,Vingtième} + \frenchpartfirst,\frenchpartsecond,Troisième,Quatrième,% + Cinquième,Sixième,Septième,Huitième,Neuvième,Dixième,Onzième,% + Douzième,Treizième,Quatorzième,Quinzième,Seizième,% + Dix-septième,Dix-huitième,Dix-neuvième,Vingtième} \StartBabelCommands*{\BabelLanguages}{captions} \SetString{\refname}{R\'ef\'erences} \SetString{\abstractname}{R\'esum\'e} @@ -853,21 +851,25 @@ \SetString{\headtoname}{} \SetString{\proofname}{D\'emonstration} \SetString{\glossaryname}{Glossaire} + \SetString{\partfirst}{Premi\`ere} + \SetString{\partsecond}{Deuxi\`eme} + \SetString{\partnameord}{partie} \SetStringLoop{ordinal#1}{% - Premi\`ere,Deuxi\`eme,Troisi\`eme,Quatri\`eme,Cinqui\`eme,% - Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,Onzi\`eme,% - Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,Seizi\`eme,% - Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,Vingti\`eme} + \frenchpartfirst,\frenchpartsecond,Troisi\`eme,Quatri\`eme,% + Cinqui\`eme,Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,% + Onzi\`eme,Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,% + Seizi\`eme,Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,% + Vingti\`eme} \AfterBabelCommands{% - \DeclareRobustCommand*{\FB@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 \AtEndOfPackage{% @@ -1010,9 +1012,11 @@ BEFORE babel/frenchb; reported}% \fi } -\newcommand*{\frenchbsetup}[1]{% +\newcommand*{\frenchsetup}[1]{% \setkeys{FB}{#1}% }% +\@onlypreamble\frenchsetup +\let\frenchbsetup\frenchsetup \@onlypreamble\frenchbsetup \newif\ifFBShowOptions \FBShowOptionsfalse \newif\ifFBStandardLayout \FBStandardLayouttrue @@ -1092,6 +1096,7 @@ \ifFBGlobalLayoutFrench \ifx\bbl@main@language\FB@french \else + \FBGlobalLayoutFrenchfalse \PackageWarning{frenchb.ldf}% {Option `GlobalLayoutFrench' skipped:\MessageBreak French is *not* babel's last option.\MessageBreak @@ -1157,7 +1162,10 @@ \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]% @@ -1187,7 +1195,10 @@ \renewcommand{\FBWarning}[1]{}% \fi}% \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]% @@ -1200,8 +1211,8 @@ \let\FBeveryparguill\FBguillopen \PackageWarning{frenchb.ldf}% {Wrong value for `EveryParGuill': - try `open’,\MessageBreak - `close’ or `none’. Reported}% + try `open',\MessageBreak + `close' or `none'. Reported}% \fi \fi \fi}% @@ -1215,8 +1226,8 @@ \else \let\FBeverylineguill\FBguillnone \FBWarning{Wrong value for `EveryLineGuill': - try `open’,\MessageBreak - `close’ or `none’. Reported}% + try `open',\MessageBreak + `close' or `none'. Reported}% \fi \fi \fi @@ -1382,20 +1393,6 @@ \let\rmfamily\rmfamilyFB \let\sffamily\sffamilyFB \fi - \ifFBThinColonSpace - \ifFB@luatex@punct - \FBcolonskip=\FBthinskip\relax - \else - \renewcommand*{\FBcolonspace}{\FBthinspace}% - \fi - \fi - \ifFBINGuillSpace - \ifFB@luatex@punct - \FBguillskip=3.33pt plus 1.665pt minus 1.11pt \relax - \else - \renewcommand*{\FBguillspace}{\space}% - \fi - \fi \@ifpackageloaded{numprint}% {\ifnprt@autolanguage \providecommand*{\npstylefrench}{}% @@ -1499,7 +1496,7 @@ og= <left quote character>, fg= <right quote character>% \MessageBreak *********************************************% - \MessageBreak\protect\frenchbsetup{ShowOptions}} + \MessageBreak\protect\frenchsetup{ShowOptions}} \fi } \AtBeginDocument{% @@ -1533,6 +1530,9 @@ \fi \FBprocess@options \ifFB@luatex@punct + \FBcolonsp=\expandafter{\meaning\FBcolonspace} + \FBthinsp= \expandafter{\meaning\FBthinspace} + \FBguillsp=\expandafter{\meaning\FBguillspace} \activate@luatexpunct \fi \ifFBunicode @@ -1685,18 +1685,15 @@ \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} \def\bbl@frenchindent{% - \ifFBGlobalLayoutFrench\else\babel@save\@afterindentfalse\fi + \ifFBGlobalLayoutFrench + \else + \babel@save\@afterindentfalse + \fi \ifFBIndentFirst \let\@afterindentfalse\@afterindenttrue \@afterindenttrue @@ -1756,7 +1753,7 @@ \def\insertfootnotemarkFB{% \usebeamercolor[fg]{footnote mark}% \usebeamerfont*{footnote mark}% - \@thefnmark\dotFFN\kernFFN}% + \llap{\@thefnmark}\dotFFN\kernFFN}% }{} \providecommand*{\insertfootnotemarkFB}{% \parindent=\parindentFFN diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua index 45b37a71d3d..f8e10ef8ceb 100644 --- a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua +++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua @@ -1,5 +1,5 @@ -- --- File `frenchb.lua' generated from frenchb.dtx [2017/01/30 v3.2g] +-- File `frenchb.lua’ generated from frenchb.dtx [2017/04/30 v3.3a] -- -- Copyright © 2014-2017 Daniel Flipo -- <daniel (dot) flipo (at) free (dot) fr> @@ -45,20 +45,34 @@ nobreak.penalty = 10000 local insert_node_before = node.insert_before local insert_node_after = node.insert_after local remove_node = node.remove -local thin10 = tex.skip['FBthinskip'] -local thinwd = thin10.width/65536/3.33 -local thinst = thin10.stretch/65536/1.665 -local thinsh = thin10.shrink/65536/1.11 -local coln10 = tex.skip['FBcolonskip'] -local colnwd = coln10.width/65536/3.33 -local colnst = coln10.stretch/65536/1.665 -local colnsh = coln10.shrink/65536/1.11 -local guil10 = tex.skip['FBguillskip'] -local guilwd = guil10.width/65536/3.33 -local guilst = guil10.stretch/65536/1.665 -local guilsh = guil10.shrink/65536/1.11 +local function get_glue(toks) + local t = nil + local f = string.match(toks, "\092hskip%s*([%d%.]*)%s*\092fontdimen") + if f == "" then f = 1 end + if f then + t = {f, 0, 0} + f = string.match(toks, "plus%s*([%d%.]*)%s*\092fontdimen") + if f == "" then f = 1 end + if f then + t[2] = f + f = string.match(toks, "minus%s*([%d%.]*)%s*\092fontdimen") + if f == "" then f = 1 end + if f then + t[3] = f + end + end + elseif string.match(toks, "\092F?B?thinspace") then + t = {0.5, 0, 0} + elseif string.match(toks, "\092space") then + t = {1, 1, 1} + end + return t +end +local colngl = get_glue(tex.toks['FBcolonsp']) or {1, 1, 1} +local thingl = get_glue(tex.toks['FBthinsp']) or {.5, 0, 0} +local guilgl = get_glue(tex.toks['FBguillsp']) or {.8, .3, .8} local font_table = {} -local function new_glue_scaled (fid,width,stretch,shrink) +local function new_glue_scaled (fid,table) if fid > 0 then local fp = font_table[fid] if not fp then @@ -70,9 +84,9 @@ 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 @@ -124,9 +138,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 if (realglue or auto) and fbglue then if realglue then @@ -144,7 +158,7 @@ local function french_punctuation (head) if is_glue and glue_wd <= 1 then addgl = false end - local fbglue = new_glue_scaled(fid,guilwd,guilst,guilsh) + local fbglue = new_glue_scaled(fid,guilgl) if addgl and fbglue then if is_glue then head = remove_node(head,prev,true) @@ -188,7 +202,7 @@ local function french_punctuation (head) 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) |