diff options
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-french/README.md | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf | bin | 190506 -> 208709 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex | 156 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-french/frenchb.pdf | bin | 366313 -> 345330 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/generic/babel-french/frenchb.dtx | 1331 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/acadian.ldf | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/canadien.ldf | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/francais.ldf | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/french.ldf | 676 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/frenchb.ldf | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-french/frenchb.lua | 2 |
11 files changed, 1019 insertions, 1174 deletions
diff --git a/Master/texmf-dist/doc/generic/babel-french/README.md b/Master/texmf-dist/doc/generic/babel-french/README.md index 5f6d25139ab..9706a705790 100644 --- a/Master/texmf-dist/doc/generic/babel-french/README.md +++ b/Master/texmf-dist/doc/generic/babel-french/README.md @@ -23,7 +23,7 @@ The bundle consists of the following files: License ------- -Released under the LaTeX Project Public License v1.3 or later +Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt ## Installation @@ -49,5 +49,5 @@ Changes See the included manual frenchb.pdf, section "Change History". --- -Copyright 1996--2023 Daniel Flipo +Copyright 1996--2024 Daniel Flipo E-mail: daniel (dot) flipo (at) free (dot) fr diff --git a/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf b/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf Binary files differindex 4b901cdf3ea..27f13a814fe 100644 --- a/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf +++ b/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf diff --git a/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex b/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex index 9434072bd62..d1ef9c5a3a0 100644 --- a/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex +++ b/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex @@ -120,7 +120,7 @@ \title{Mode d’emploi du module \ext{babel-french}} \author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}} -\newcommand*{\latestversion}{3.5s} +\newcommand*{\latestversion}{3.6a} \date{Version {\latestversion} -- \today} \begin{document} @@ -135,7 +135,7 @@ trouve à la section~\ref{sec:changes-3.0} p.~\pageref{sec:changes-3.0}. La version actuelle de frenchb (\latestversion), dont le nom officiel est - \ext{babel-french}, est prévue pour fonctionner aussi bien avec les anciens + \ext{babel-french}, est conçue pour fonctionner aussi bien avec les anciens formats TeX comme pdf(La)TeX qu’avec les nouveaux Lua(La)TeX et Xe(La)TeX. Les mises à jour de \ext{babel-french} sont désormais affichées très @@ -157,11 +157,6 @@ \vspace{-\baselineskip}\noindent \descindentFB=0pt \begin{description} - \item[30 avril 2017] Utiliser |\frenchsetup{}| de préférence à - |\frenchbsetup{}|, voir p.~\pageref{sec:Perso}. - Personnalisation de la commande |\part{}|, voir p.~\pageref{ssec:captions}. - \item[31 août 2017] Ajout de l’option \fbo{UnicodeNoBreakSpaces}, - voir p.~\pageref{ucs-nbsp}. \item[30 janvier 2018] Adaptation à la version 3.4a, voir section~\ref{ssec:changes-3.4}. \item[24 février 2018] Regroupement par thèmes des options de \fbsetup{}. @@ -183,6 +178,8 @@ voir p.~\pageref{par-in-lists}. \item[19 déc. 2023] \ext{babel-french} est maintenant compatible avec \pkg{ucharclasses} (XeLaTeX). \file{frenchb.ins} supprimée. + \item[22 mai 2024] Adaptation à la version 3.6a, voir + section~\ref{ssec:changes-3.6}. \end{description} \end{abstract} \egroup @@ -880,8 +877,9 @@ La liste étant longue, les options sont regroupées par thèmes. \item [AutoSpaceFootnotes=false (true*)] supprime l’espace fine insécable ajoutée par défaut avant l’appel de chaque note dans le texte - courant. Cette option affecte la totalité du document. - + courant. Cette option affecte la totalité du document. + L’espace éventuellement ajoutée peut être ajustée, la commande par défaut + est : |\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font}| \end{description} \subsubsection*{Ponctuation haute} @@ -1123,10 +1121,10 @@ La liste étant longue, les options sont regroupées par thèmes. section~\ref{sec:description}, p.~\pageref{sec:description}. \item [LowercaseSuperscripts=false (true)] rend possible d’avoir des lettres - supérieures en capitales (est-ce bien utile ?). Par défaut, la nouvelle - commande |\up| (sauf si elle est redéfinie en |\textsuperscript| par l’option - précédente) empêche le passage en capitales des lettres supérieures dans les - hauts de pages par exemple. + supérieures en capitales (est-ce bien utile ?). Par défaut, la commande + |\up| (sauf si elle est redéfinie en |\textsuperscript| par l’option + précédente) empêche le passage en capitales des lettres supérieures dans + les hauts de pages par exemple. \item [SuppressWarning=true (false)] peut être utilisée pour supprimer les avertissements non essentiels émis par \ext{babel-french}. @@ -1521,10 +1519,28 @@ aurait : } %\newpage -\section{Changements entre les versions 3.5 et 2.6} +\section{Changements entre les versions \latestversion{} et 3.4 (2018)} \label{sec:changes-3.0} -\subsection{Changements entre les versions \latestversion{} et 3.4d} +\subsection{Changements entre les versions \latestversion{} et 3.5s} +\label{ssec:changes-3.6} + +La version 3.6a n’a plus recours à l’extension \pkg{keyval} pour gérer les +options, les commandes internes du noyau LaTeX (\pkg{ltkeys}) +|\DeclareKeys{}| et |\SetKeys{}| sont utilisées.\\ +L’espace fine ajoutée avant l’appel des notes de bas de pages est maintenant +personnalisable (suggestion de Thomas Savary) ; le nom de la commande est +|\FBfnmarkspace{}|, c’est une \emph{vraie} espace fine (demie espace-mot de la +police courante) contrairement à la commande LaTeX |\,| alias |\thinspace|% +\footnote{Elles sont définies pour fonctionner aussi en mode mathématique.} +précédemment utilisée qui chasse toujours 1/6em. Les deux définitions +coïncident pour les polices dont l’espace-mot vaut 1/3em, (cas le plus +courant), l’écart est infime pour celles qui chassent moins : il est par +exemple de $(1/6-1/8)12=0,5$pt en 12pt pour une police dont l’espace-mot +chasse 1/4em. Il est toujours possible de revenir à l’ancien comportement en +codant |\renewcommand\FBfnmarkspace{\,}|. + +\subsection{Changements entre les versions 3.5a et 3.4d} \label{ssec:changes-3.5} La version 3.5a propose une nouvelle option \fbo{ListItemsAsPar} qui permet @@ -1671,116 +1687,6 @@ judicieux de renommer la commande de personnalisation |\frenchbsetup{}| en De nouvelles possibilités de personnalisation de la commande |\part{}| ont été introduites, voir page~\pageref{ssec:captions}. -\subsection{Changements entre les versions 3.2h et 3.1m} -\label{ssec:changes-3.2} - -La version 3.2g modifie le comportement par défaut de la commande |\frquote{}| -sous LuaTeX qui est maintenant le même que sous XeTeX ou pdfTeX. -Il suffit d’ajouter l’option \fbo{EveryLineGuill=open} pour retrouver le -comportement des versions précédentes. - -Depuis la version 3.2f, \ext{babel-french} est compatible avec l’extension -\ext{icomma} qui offre une solution alternative à la commande -|\DecimalMathComma|. - -La construction des notes de bas de page a été revue pour les classes -\cls{beamer}, \cls{memoir} et koma-script (\cls{scrartcl}, \cls{scrreprt} -et \cls{scrbook}). Le rendu final est conservé mais les possibilités de -personnalisation offertes par ces classes pour la présentation des notes de -bas de page (changement de police, de couleur, etc.) sont désormais -disponibles même lorsque l’option \fbo{FrenchFootnotes} est activée. - -Un vieux bug affectant le comportement de |\frquote{}| lorsque l’extension -\ext{xspace} est chargée, a été corrigé. - -Les commandes |\NoAutoSpacing|, |\ttfamilyFB|, |\rmfamilyFB| et |\sffamilyFB| -ont été complètement réécrites dans la version~3.2c afin de leur assurer un -comportement identique quel que soit le moteur utilisé, pdfTeX, XeTeX ou -LuaTeX. - -\textbf{{babel-french} v.3.2b et suivantes, mise en garde pour les - utilisateurs de Lua(La)TeX :} -\nopagebreak -La version~3.2b est la première compatible avec la version~0.95 de LuaTeX -incluse dans TeXLive~2016. Les changements intervenus dans la structure des -nœuds de type \textit{glue} rendent cette nouvelle version de LuaTeX -incompatible avec les précédentes. Le code lua contenu dans les versions 3.2b -et suivantes de \file{frenchb.lua} ne fonctionne pas avec les versions de -LuaTeX antérieures à 0.95, aussi à partir de la version~3.2b \ext{babel-french} -revient aux caractères actifs pour la gestion de la ponctuation haute avec les -moteurs LuaTeX antérieurs à 0.95 ! -La bonne solution consiste à installer rapidement TeXLive~2016 ou une autre -distribution contenant LuaTeX~0.95. -En revanche il n’y a aucun problème de compatibilité ascendante avec les -moteurs XeTeX et pdfTeX. - -\subsection{Changements entre les versions 3.1m et 3.0c} -\label{ssec:changes-3.1} - -{\sloppy - Ajout de la commande |\frquote{}| et de sa variante |\frquote*{}| - recommandées pour saisir les citations, notamment les citations imbriquées - ou celles s’étendant sur plusieurs paragraphes, voir p.~\pageref{frquote} - et les nouvelles options \fbo{EveryParGuill}, \fbo{EveryLineGuill} et - \fbo{InnerGuillSingle}. -\par} - -Nouvelle option \fbo{SmallCapsFigTabCaptions}, voir p.~\pageref{scfigtab}. - -\subsection{Changements entre les versions 3.0c et 2.6h} -\label{ssec:changes-3.0} - -Plusieurs modifications de fond ont motivé le passage à la version~3.0. - -\begin{itemize} - -\item \ext{babel-french} ne fonctionne désormais qu’avec la version~3.9 - de Babel ce qui donne accès à une syntaxe plus agréable pour modifier les - \textit{captions}, voir p.~\pageref{captionsfrench}. - Le séparateur utilisé dans les légendes de figures et de tableaux est - choisi de manière globale pour toutes les langues, voir - p.~\pageref{captionseparator}. - -\item La gestion des options par \fbsetup{} a été complètement remaniée ; deux - nouvelles options ont été ajoutées. - -\item La variante « canadien » du français fonctionne désormais comme un vrai - \textit{dialect} au sens de Babel ; parallèlement le français ne devrait - plus être désigné que sous le nom \opt{french}, à la fois en option de - |\usepackage[...]{babel}|% - \footnote{Le mieux est encore de mettre toutes les déclarations de langues - en option de \cs{documentclass}.} - et en argument de |\selectlanguage{}| et consorts. - Les variantes \opt{frenchb} et \opt{francais} sont encore tolérées mais - sans aucune garantie de pérennité. - -\item \ext{babel-french} ne charge plus le fichier \file{frenchb.cfg} ; la - personnalisation passe par l’utilisation exclusive de \fbsetup{}. - -\item Les étiquettes des listes \env{description} sont positionnées comme - celles des listes \env{itemize} et \env{enumerate} avec un retrait - paramétrable |\listindentFB| par rapport à la marge gauche. - -\item Enfin et c’est probablement le plus important, le recours aux - caractères actifs est supprimé pour la gestion de la ponctuation haute - lorsqu’un format basé sur LuaTeX% - \footnote{C’est déjà le cas pour XeTeX depuis la version~2.5 de - \ext{babel-french}.} - est utilisé (LuaLaTeX par exemple). - Le mécanisme des caractères actifs est remplacé par un appel aux - \textit{callbacks} |pre_linebreak_filter| et |hpack_filter|% - \footnote{Depuis la version 3.1g c’est le\textit{callbacks} \texttt{kerning} - qui est mis en œuvre à la place.}. - - La base du code |lua| se trouve dans l’exposé de Paul Isambert - à la journée GUT’2010. Un grand merci à Paul pour cette source d’inspiration - et pour ses suggestions lors de la relecture finale de \file{frenchb.lua}. - -\end{itemize} - -À partir de la version 3.0c, \ext{babel-french} laisse le contrôle total des -listes à la classe \cls{beamer} (option \fbo{StandardLists} automatiquement -activée) ; nouvelle option \fbo{INGuillSpace} (voir p.~\pageref{INGuillspace}). \subsection{Comment recompiler un document écrit pour {babel-french}~2.x ?} 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 b0ab9ae43b2..d9a61f76819 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 71171ba2bf1..331a0195e04 100644 --- a/Master/texmf-dist/source/generic/babel-french/frenchb.dtx +++ b/Master/texmf-dist/source/generic/babel-french/frenchb.dtx @@ -27,11 +27,11 @@ to be used with the Babel system. ------------------------------------------------------------- It may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 +conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in http://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions of LaTeX +and version 1.3c or later is part of all distributions of LaTeX version 2003/12/01 or later. This work has the LPPL maintenance status "maintained". @@ -75,7 +75,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %<frenchb>\ProvidesLanguage{frenchb} %<lua>--[[ %<lua> File `frenchb.lua’ generated from frenchb.dtx - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] %<lua> Copyright © 2014-2024 Daniel Flipo %<lua> <daniel (dot) flipo (at) free (dot) fr> %<lua> License LPPL: see french.ldf. @@ -101,17 +101,24 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> \usepackage[dvipsnames]{xcolor} \usepackage[no-math]{fontspec} \usepackage{realscripts} -\setmainfont{Vera.ttf}[ - ItalicFont = VeraIt.ttf, - BoldFont = VeraBd.ttf, - BoldItalicFont = VeraBI.ttf, - Scale = 0.92 - ] -\setmonofont{VeraMono.ttf}[ - ItalicFont = VeraMoIt.ttf, - BoldFont = VeraMoBd.ttf, - BoldItalicFont = VeraMoBI.ttf, - Scale = MatchLowercase, +\usepackage{setspace} +\setstretch{1.15} +\setmainfont{SourceSansPro}[ + Scale = 1.13 , + Extension = .otf , + UprightFont = *-Regular , + ItalicFont = *-RegularIt , + BoldFont = *-Bold , + BoldItalicFont = *-BoldIt ] +\setmonofont{iosevka}[% + Scale = MatchLowercase , + FakeStretch = 1.05 , + Extension = .ttf, + UprightFont = *-medium, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, +% RawFeatures = -dlig;-clig % ligature >= (l.1314) ] % \def\PrintMacroName#1{% @@ -149,8 +156,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> \clearpage \section{Change History}% \GlossaryPrologue{}% - Changes are listed in reverse order (latest first) and limited to - \frenchb{}~v3. + Changes listed in reverse order (latest first) and not older + than~v3.3 (2018). \PrintChanges } \begin{document} @@ -298,8 +305,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % the quotation either an opening French guillemet («), or % a closing one (») or nothing depending on option % \fbo{EveryParGuill=open} or \fbo{=close} or \fbo{=none}, -% see p.~\pageref{everyparguill}. -% Command |\NoEveryParQuote| is provided to locally suppress +% see p.~\pageref{everyparguill}.\\ +% The command |\NoEveryParQuote| is provided to locally suppress % unwanted guillemets (typically when lists are embedded in % |\frquote{}|), it is meant to be used inside an environment % or a group. @@ -355,7 +362,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % Usage: |Albert~\bsc{Camus}|. % % \item Commands |\primo|, |\secundo|, |\tertio| and |\quarto| -% print 1\up{o}, 2\up{o}, 3\up{o}, 4\up{o}. +% print 1\up{o}, 2\up{o}, 3\up{o}, 4\up{o}.\linebreak % |\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 @@ -403,7 +410,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % 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. +% using the \file{l3keys} syntax. % The command \fbsetup{} is to appear in the preamble only % (after loading \babel). % @@ -418,7 +425,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % % \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, +% list of offered options. As usual with \file{l3keys} syntax, % boolean options (as \fbo{ShowOptions}) can be entered as % \fbo{ShowOptions=true} or just \fbo{ShowOptions}, the % \fbo{=true} part can be omitted. @@ -453,9 +460,10 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % first paragraph of sections. When French is the main language, % this option applies to all languages. % -% \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 +% \item [PartNameFull=false (true)]; when true (the default), +% \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 @@ -506,9 +514,9 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % you had to set \fbo{ReduceListSpacing=false} to revert to the % class settings which actually reduce list’s spacings even more % than \frenchb! \fbo{StandardListSpacing=true} replaces -% \fbo{ReduceListSpacing=false}.}; \frenchb{} customises +% \fbo{ReduceListSpacing=false}.}; \frenchb{} usually customises % the vertical spaces in the \env{list} environment, this affects -% all lists, including \env{itemize} \env{enumerate}, +% all lists, including \env{itemize}, \env{enumerate}, % \env{description}, but also \env{abstract}, \env{quote}, % \env{quotation}, \env{verse}, etc. which are based on \env{list}. % Setting this option to \fbo{true} reverts to the standard @@ -552,12 +560,14 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % \cs{ding\{43\}} (\cs{textemdash}*)]\hfill % % \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 +% customise any kind of list. The option \fbo{StandardLists=true} +% should be used in case of conflicts with classes or packages that +% customise % lists too. This option is just a shorthand setting all four % options \fbo{StandardListSpacing=true}, -% \fbo{StandardItemizeEnv=true}, \fbo{StandardEnumerateEnv=true} -% and \fbo{StandardItemLabels=true}. +% \fbo{StandardItemizeEnv=true},\linebreak +% \fbo{StandardEnumerateEnv=true} and +% \fbo{StandardItemLabels=true}. % % \item [ListOldLayout=true (false)]; starting with version~2.6a, % the layout of lists has changed regarding leftmargins’ sizes @@ -576,9 +586,11 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % 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). +% adds a (customisable) 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). +% The default definition of this thin space is:\\ +% |\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font}| % % \item [AutoSpacePunctuation=false (true)]; in French, the user % \hlabel{autospacepunctuation} @@ -677,7 +689,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % always surrounded by « and », the next option is ineffective. % % \item [InnerGuillSingle=true (false)]; -% if \fbo{InnerGuillSingle=false} (default), inner quotations +% if \fbo{InnerGuillSingle=false} (the default), inner quotations % entered with |\frquote{}| start with~\texttt{``} and end % with~\texttt{’’}. % If \fbo{InnerGuillSingle=true}, \texttt{\guilsinglleft} and @@ -693,7 +705,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % |\npthousandsep| is defined as a non-breaking space (|~|)% % \footnote{Actually without stretch nor shrink.} in French; % when set to true, this option redefines |\npthousandsep| -% as a thin space (|\,|). +% as a thin space (|\FBthinspace|). % % \item [SmallCapsFigTabCaptions=false (true*)]; when set to % \fbo{false}, |\figurename| and |\tablename| will be printed in @@ -702,8 +714,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % achieved by defining |\FBfigtabshape| as |\relax| before % loading \frenchb{} (in a document class f.i.). % -% \item [CustomiseFigTabCaptions=false (true*)]; when \fbo{false} -% the default separator (colon) is used instead of +% \item [CustomiseFigTabCaptions=false (true*)]; when set to +% \fbo{false} the default separator (colon) is used instead of % |\CaptionSeparator|. Anyway, \frenchb{} tries hard to insert % a proper space before it in French and warns if it fails to do % so. @@ -735,23 +747,23 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % 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 -% paragraph of sections should choose\\ -% \fbsetup{StandardLayout,IndentFirst} to get the expected -% layout. The reverse order -% \fbsetup{IndentFirst,StandardLayout} would lead to option -% \fbo{IndentFirst} being overwritten by \fbo{StandardLayout}. +% paragraph of sections should choose +% \fbsetup{StandardLayout,IndentFirst}\par +% The reverse order \fbsetup{IndentFirst,StandardLayout} +% would lead to option \fbo{IndentFirst} being overwritten by +% \fbo{StandardLayout}. % % \subsubsection{Caption names} % \label{sssec-captions-name} % -% All caption names can easily be customised in French using the -% simplified syntax introduced by \babel~3.9, for instance -% |\def\frenchproofname{Preuve}| or +% {\sloppy All caption names can easily be customised in French +% using the simplified syntax introduced by \babel~3.9, +% for instance |\def\frenchproofname{Preuve}| or % |\def\acadianproofname{Preuve}| for the \opt{acadian} dialect. % 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 -% |frenchb| or |francais|. +% |frenchb| or |francais|.\par} % % \subsubsection{Figure and table captions} % \label{sssec-captions-fig} @@ -839,6 +851,13 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % \subsection{Changes} % \label{ssec-changes} % +% \subsubsection*{What’s new in version 3.6?} +% +% Version 3.6a no longer loads the \pkg{keyval} package, replaced by +% core LaTeX commands (\pkg{ltkeys}). The thin space added before +% footnote’s calls is now customisable (suggested by Thomas Savary), +% the command’s name is |\FBfnmarkspace|. +% % \subsubsection*{What’s new in version 3.5?} % % Version 3.5a offers a new option \fbo{ListItemsAsPar}. The default @@ -864,7 +883,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % kerning was disabled for Type1 fonts since v3.1g (2015). % % Version 3.5j also fixes a long standing bug affecting koma-script, -% \cls{memoir} et \cls{beamer} classes: redefintions of the caption +% \cls{memoir} and \cls{beamer} classes: redefintions of the caption % separator (commands |\captionformat|, |\captiondelim|, etc.) are % now taken into account properly. % @@ -958,92 +977,6 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % 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. -% -% The 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-name} -% p.\pageref{sssec-captions-name}. -% \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 \opt{french}, \emph{not as} \opt{frenchb} or -% \opt{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.~1.0.4 as included in TL2017, 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. -% -% \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 @@ -1217,7 +1150,12 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % \end{macrocode} % \end{macro} % -% \begin{macro}{\ifFBunicode} +% Check LaTeX2e version (support for \pkg{ltkeys} required). +% \begin{macrocode} +\ifLaTeXe \NeedsTeXFormat{LaTeX2e}[2022/06/01] \fi +% \end{macrocode} +% +%\begin{macro}{\ifFBunicode} % \begin{macro}{\ifFBLuaTeX} % \begin{macro}{\ifFBXeTeX} % French hyphenation patterns are now coded in Unicode, see file @@ -1460,8 +1398,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % % \begin{macro}{\FBsetspaces} % This command makes it easy to fine tune |\FBguillspace|, -% |\FBcolonspace| and |\FBthinspace| in French (defaut) or -% independently in a French dialect using the optional argument. +% |\FBcolonspace| and\linebreak |\FBthinspace| in French (defaut) +% or independently in a French dialect using the optional argument. % They are meant for LaTeX2e \emph{only} and can only be used % in the preamble. % Four mandatory arguments are expected besides the optional one: @@ -1469,8 +1407,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> % "thin", the last four are decimal numbers specifying % \textit{width}, \textit{stretch} and \textit{shrink} relative to % \textit{fontdimens}.\hlabel{FBsetspaces} -% For instance |\FBsetspaces[acadian]{colon}{0.5}{0}{0}| defines -% |\acadianFBcolonspace| as a thinspace which will be used for +% For \kern0pt instance |\FBsetspaces[acadian]{colon}{0.5}{0}{0}| +% defines |\acadianFBcolonspace| as a thinspace which will be used for % the Acadian dialect only. When used without optional argument or % with argument `french’, the same command would tune the basic % |\FBcolonspace| command. @@ -1687,13 +1625,16 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr> with this version of LuaTeX!} \fi % \end{macrocode} -% The next command will be used in the first call of |\extrasfrench| -% to convert |\FBcolonspace|, |\FBthinspace| and |\FBguillspace| -% into a table usable by LuaTeX. This way, any customisation done -% in the preamble (by \fbsetup{}, redefinitions or |\FBsetspaces| -% commands) are taken into account. Values not explicitly set for -% Acadian by |\FBsetspaces[|\textit{acadian}|]| commands are copied -% from the French ones. +% +% {\sloppy The next command will be used in the first call of +% |\extrasfrench| to convert |\FBcolonspace|, |\FBthinspace| and +% |\FBguillspace| into a table usable by LuaTeX. +% This way, any customisation done in the preamble (by \fbsetup{}, +% redefinitions or |\FBsetspaces| commands) are taken into account. +% Values not explicitly set for Acadian by +% |\FBsetspaces[|\textit{acadian}|]| commands are copied from the +% French ones.\par} + % In case parsing by the Lua function |FBget_glue| (defined in file % \file{frenchb.lua}) fails due to unexpected syntax in |\FB...space| % the table remains unchanged and a warning is issued. @@ -2744,13 +2685,13 @@ return french_punctuation % tex4ht, pointed out by MPG.} % % {\sloppypar |\autospace@beforeFDP| and |\noautospace@beforeFDP| are -% internal commands. |\autospace@beforeFDP| defines |\FDP@thinspace| -% and |\FDP@colonspace| as non-breaking spaces and sets LuaTeX -% attribute |\FB@addDPspace| to 1 (true), while -% |\noautospace@beforeFDP| lets these spaces empty and sets flag +% internal commands. |\autospace@beforeFDP| defines commands +% |\FDP@thinspace| and |\FDP@colonspace| as non-breaking spaces and +% sets LuaTeX attribute |\FB@addDPspace| to 1 (true), while +% |\noautospace@beforeFDP| makes them no-op and sets flag % |\FB@addDPspace| to 0 (false). User commands |\AutoSpaceBeforeFDP| % and |\NoAutoSpaceBeforeFDP| do the same and take care of the flag -% |\ifFBAutoSpacePunctuation| in \LaTeX{}.\par} +% |\ifFBAutoSpacePunctuation| in LaTeX{}.\par} % % Set the default now for Plain (done later for LaTeX). % \begin{macrocode} @@ -3600,64 +3541,41 @@ return french_punctuation \providecommand*{\textbackslash}{{\char"005C}} \providecommand*{\textasciicircum}{{\char"005E}} \providecommand*{\textasciitilde}{{\char"007E}} - \newcommand*{\FB@degre}{°} + \DeclareRobustCommand*{\degre}{°} \else - \ifLaTeXe - \newcommand*{\FB@degre}{\r{}} - \fi + \DeclareRobustCommand*{\degre}{\textdegree} \fi \DeclareRobustCommand*{\boi}{\textbackslash} \DeclareRobustCommand*{\circonflexe}{\textasciicircum} \DeclareRobustCommand*{\tild}{\textasciitilde} -\DeclareRobustCommand*{\degre}{% - \texorpdfstring{\FB@degre}{\textdegree}} \newcommand*{\at}{@} % \end{macrocode} % % \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 -% 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 -% preceding (e.g., |45\degres|) or following character -% (e.g., |20~\degres C|). |\degres| works in math-mode (angles). +% for `degrees’ (as in `°C’ or `°K’) in text fonts which also works +% in math mode for angles. % % \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.} % -% If \TeX{} Companion fonts are available (\file{textcomp.sty}), -% 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).} % +% \changes{v3.6a}{2024/05/20}{Simplify \cs{degres} definition for text +% and math mode: \cs{textdegree} always defined (TS1) since 2019.} +% % \begin{macrocode} \DeclareRobustCommand*{\degres}{\degre} \ifLaTeXe \AtBeginDocument{% - \@ifpackageloaded{fontspec}{}{% - \ifdefined\DeclareEncodingSubset - \DeclareRobustCommand*{\degres}{% + \@ifpackageloaded{fontspec}{}% + {\DeclareRobustCommand*{\degres}{% \texorpdfstring{\hbox{\UseTextSymbol{TS1}{\textdegree}}}% {\textdegree}}% - \else - \def\Warning@degree@TSone{\FBWarning - {Degrees would look better in TS1-encoding:% - \MessageBreak add \protect - \usepackage{textcomp} to the preamble.% - \MessageBreak Degrees used}} - \DeclareRobustCommand*{\degres}{% - \texorpdfstring{\hbox to 0.3em{\hss\degre\hss}% - \Warning@degree@TSone - \global\let\Warning@degree@TSone\relax}% - {\textdegree}}% - \fi - }% + }% } \fi % \end{macrocode} @@ -4056,9 +3974,10 @@ return french_punctuation % ua-thesis.cls… 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 definition of |\@makecaption| +% and will be changed to `~:~’ in French `AtBeginDocument’; +% it can be also set to |\CaptionSeparator| (` -- ’) using +% \fbo{CustomiseFigTabCaptions}. % % \changes{v2.6c}{2013/05/18}{Former \cs{CaptionSeparator} % has been renamed as \cs{FBCaption@Separator}; @@ -4076,7 +3995,7 @@ return french_punctuation % active). % \begin{macrocode} \bgroup - \catcode`:=12 \catcode`>=12 \relax + \catcode`: =12 \catcode`> =12 \relax \long\gdef\STD@makecaption#1#2{% \vskip\abovecaptionskip \sbox\@tempboxa{#1: #2}% @@ -4256,7 +4175,7 @@ return french_punctuation % with XeTeX and LuaTeX. % % \changes{v2.0}{2006/11/06}{Added special case for LY1 encoding, -% see bug report from Bruno Voisin (2004/05/18).} +% 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! @@ -4345,7 +4264,7 @@ return french_punctuation } % \end{macrocode} % -% \subsection{Setup options: keyval stuff} +% \subsection{Setup options: key/value stuff (ltkeys)} % \label{ssec-keyval} % % \changes{v2.0}{2006/11/06}{New command \cs{frenchbsetup} added @@ -4355,125 +4274,34 @@ return french_punctuation % reorganised, now \cs{babel@save} and\cs{babel@savevariable} are % usable for French.} % -% 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 -% the main language. After this, \fbsetup{} eventually modifies the -% preset values of these flags. +% \changes{v3.6a}{2024/05/16}{Internal `ltkeys’ replaces package +% `keyval’ for options’ management.} +% +% All setup options are handled by command \fbsetup{} based on +% the \file{ltkeys}’ |\SetKeys{}| command. A list of flags is +% defined beforehand and set to default values which will possibly +% be changed `AtEndOfPackage’ in case French is the main language. +% After this, \fbsetup{} eventually modifies the preset values of +% these flags. % -% {\sloppypar Option processing can occur either in \fbsetup{}, but -% \emph{only for options explicitly set} by \fbsetup{}, or +% {\sloppypar Some options processing occurs in \fbsetup{}, +% \emph{only for options explicitly set} by \fbsetup{}, the rest % `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 +% \emph{must} be immediatelt 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 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 +% |\extrasfrench{}| is not an option because of its side-effects +% (f.i.\ |\babel@save| and |\babel@savevariable| did not work for % French).\par} % -% \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. -% -% \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.} -% -% \changes{v2.0e}{2007/10/05}{New option: StandardLists.} -% -% \changes{v2.0f}{2008/03/23}{Two typos corrected in -% option StandardLists.} -% -% \changes{v2.0f}{2008/03/23}{StandardLayout option had no -% 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.} -% -% \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts -% 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.} -% -% \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}.} -% -% \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.} -% -% \changes{v2.6a}{2013/01/30}{New options ListOldLayout, -% StandardItemizeEnv and StandardEnumerateEnv (CompactItemize is -% deprecated).} -% -% \changes{v3.0a}{2014/02/28}{New options OldFigTabCaptions and -% CustomiseFigTabCaptions.} -% -% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.} -% -% \changes{v3.1a}{2014/05/20}{New options InnerGuillSingle, -% EveryParGuill and EveryLineGuill to control \cs{frquote}.} -% -% \changes{v3.1b}{2014/09/15}{New option SmallCapsFigTabCaptions.} -% -% \changes{v3.1e}{2015/04/10}{Corrected typo: SmallCapsFigTabcaptions -% instead of SmallCapsFigTabCaptions. Pointed out by Céline -% Chevalier.} -% -% \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.} -% -% \changes{v3.5a}{2018/07/04}{New option ListItemsAsPar for displaying -% lists’ items ``as paragraphs’’.} -% -% \changes{v3.5d}{2019/01/24}{ReduceListSpacing option depreciated: see -% StandardListSpacing.} -% -% \begin{macrocode} -\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} -% -% We define a collection of conditionals with their defaults -% (true or false). +% We first define a collection of conditionals and set their +% defaults (true or false). % % \begin{macrocode} \newif\ifFBShowOptions \newif\ifFBStandardLayout \FBStandardLayouttrue \newif\ifFBGlobalLayoutFrench \FBGlobalLayoutFrenchtrue -\newif\ifFBReduceListSpacing \newif\ifFBStandardListSpacing \FBStandardListSpacingtrue \newif\ifFBListOldLayout \newif\ifFBListItemsAsPar @@ -4498,25 +4326,6 @@ return french_punctuation \newif\ifFBINGuillSpace % \end{macrocode} % -% 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 -% main language in |\bbl@main@language|; if it is French (or a -% French dialect) the values of some flags have to be changed to -% ensure a French looking layout for the whole document (even in -% parts written in languages other than French); the end-user will -% then be able to customise the values of all these flags with -% \fbsetup{}. -% -% \changes{v2.5b}{2010/10/30}{Do not use the -% test \cs{iflanguage}\{french\} to check whether French is the -% main language or not, as it might be be erroneously positive -% when English is the main language and no hyphenation patterns -% are available for French. -% In this case \cs{l@french} and \cs{l@english} are 0. -% Pointed out by Günter Milde.} -% % \changes{v3.1g}{2015/05/10}{Bug fix for koma-scripts classes: % a spurious dot was added by the \cs{partformat} command.} % @@ -4540,6 +4349,14 @@ return french_punctuation \fi % \end{macrocode} % +% \changes{v2.5b}{2010/10/30}{Do not use the +% test \cs{iflanguage}\{french\} to check whether French is the +% main language or not, as it might be be erroneously positive +% when English is the main language and no hyphenation patterns +% are available for French. +% In this case \cs{l@french} and \cs{l@english} are 0. +% Pointed out by Günter Milde.} +% % \changes{v3.0c}{2014/03/30}{No list customisation when beamer % class is loaded.} % @@ -4553,6 +4370,13 @@ return french_punctuation % options can no longer be toggled when French is not the main % language.} % +% The defaults values of these flags are choosen so that +% \frenchb{} does not change anything regarding the global layout. +% Some of them must be toogled when French (or a French dialect) is +% the main language. The latter (last option of \babel, stored in +% |\bbl@main@language|) will be known `AtEndOfPackage’. +% So we postpone the |\bbl@main@language| checking until then. +% % 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 @@ -4600,206 +4424,304 @@ return french_punctuation \FBAutoSpaceFootnotestrue \FBCustomiseFigTabCaptionstrue \fi +} +% \end{macrocode} +% +% \begin{macro}{\frenchsetup} +% Let’s define the keys to be used in \fbsetup{}. +% \begin{macrocode} +\DeclareKeys[FBsetup] + { + ShowOptions.if = FBShowOptions , + StandardLayout.default:n = {true} , + StandardLayout.code = \FBStandardLayout@setup{#1} , + GlobalLayoutFrench.default:n = {true} , + GlobalLayoutFrench.code = \FBGlobalLayout@setup{#1} , + StandardListSpacing.if = FBStandardListSpacing , + ReduceListSpacing.ifnot = FBStandardListSpacing , + ListOldLayout.default:n = {true} , + ListOldLayout.code = \FBListOldLayout@setup{#1} , + CompactItemize.default:n = {true} , + CompactItemize.code = \FBCompactItemize@setup{#1} , + StandardItemizeEnv.if = FBStandardItemizeEnv , + StandardEnumerateEnv.if = FBStandardEnumerateEnv , + StandardItemLabels.if = FBStandardItemLabels , + ItemLabels.store = \FrenchLabelItem , + ItemLabeli.store = \Frlabelitemi , + ItemLabelii.store = \Frlabelitemii , + ItemLabeliii.store = \Frlabelitemiii , + ItemLabeliv.store = \Frlabelitemiv , + StandardLists.default:n = {true} , + StandardLists.code = \FBStandardLists@setup{#1} , + ListItemsAsPar.if = FBListItemsAsPar , + IndentFirst.if = FBIndentFirst , + FrenchFootnotes.if = FBFrenchFootnotes , + AutoSpaceFootnotes.if = FBAutoSpaceFootnotes , + AutoSpacePunctuation.if = FBAutoSpacePunctuation , + OriginalTypewriter.if = FBOriginalTypewriter , + ThinColonSpace.default:n = {true} , + ThinColonSpace.code = \FBThinColonSpace@setup{#1} , + ThinSpaceInFrenchNumbers.if = FBThinSpaceInFrenchNumbers , + FrenchSuperscripts.if = FBFrenchSuperscripts , + LowercaseSuperscripts.if = FBLowercaseSuperscripts , + PartNameFull.if = FBPartNameFull , + CustomiseFigTabCaptions.if = FBCustomiseFigTabCaptions , + OldFigTabCaptions.default:n = {true} , + OldFigTabCaptions.code = \FBOldFigTabCaptions@setup{#1} , + SmallCapsFigTabCaptions.default:n = {true} , + SmallCapsFigTabCaptions.code = \FBSmallCapsFigTabCaptions@setup{#1} , + SuppressWarning.default:n = {true} , + SuppressWarning.code = \FBSuppressWarning@setup{#1} , + INGuillSpace.default:n = {true} , + INGuillSpace.code = \FBINGuillSpace@setup{#1} , + InnerGuillSingle.if = FBInnerGuillSingle , + EveryParGuill.default:n = {open} , + EveryParGuill.code = \FBEveryParGuill@setup{#1} , + EveryLineGuill.default:n = {open} , + EveryLineGuill.code = \FBEveryLineGuill@setup{#1} , + UnicodeNoBreakSpaces.default:n = {true} , + UnicodeNoBreakSpaces.code = \FBUnicodeNoBreakSpaces@setup{#1} , + og.code = \FBog@setup{#1} , + fg.code = \FBfg@setup{#1} , +} % \end{macrocode} -% \frenchb{} being an option of \babel, it cannot load a package -% (\pkg{keyval}) while \file{french.ldf} is read, so we defer the -% loading of \file{keyval} and the options setup at the end of -% \babel’s loading. +% +% 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. +% +% \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.} +% +% \changes{v2.0e}{2007/10/05}{New option: StandardLists.} +% +% \changes{v2.0f}{2008/03/23}{Two typos corrected in +% option StandardLists.} +% +% \changes{v2.0f}{2008/03/23}{StandardLayout option had no +% 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.} +% +% \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts +% 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.} +% +% \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}.} +% +% \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.} +% +% \changes{v2.6a}{2013/01/30}{New options ListOldLayout, +% StandardItemizeEnv and StandardEnumerateEnv (CompactItemize is +% deprecated).} +% +% \changes{v3.0a}{2014/02/28}{New options OldFigTabCaptions and +% CustomiseFigTabCaptions.} +% +% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.} +% +% \changes{v3.1a}{2014/05/20}{New options InnerGuillSingle, +% EveryParGuill and EveryLineGuill to control \cs{frquote}.} +% +% \changes{v3.1b}{2014/09/15}{New option SmallCapsFigTabCaptions.} +% +% \changes{v3.1e}{2015/04/10}{Corrected typo: SmallCapsFigTabcaptions +% instead of SmallCapsFigTabCaptions. Pointed out by Céline +% Chevalier.} +% +% \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.} +% +% \changes{v3.5a}{2018/07/04}{New option ListItemsAsPar for displaying +% lists’ items ``as paragraphs’’.} +% +% \changes{v3.5d}{2019/01/24}{ReduceListSpacing option depreciated: see +% StandardListSpacing.} +% % \begin{macrocode} - \RequirePackage{keyval}% - \define@key{FB}{ShowOptions}[true]% - {\csname FBShowOptions#1\endcsname}% +\newcommand*{\frenchsetup}[1]{% + \SetKeys[FBsetup]{#1}% +}% +\@onlypreamble\frenchsetup % \end{macrocode} -% The next two keys can only be toggled when French is the main -% language. +% Keep the former name |\frenchbsetup| working for compatibility. % \begin{macrocode} - \define@key{FB}{StandardLayout}[true]% - {\ifFB@mainlanguage@FR - \csname FBStandardLayout#1\endcsname - \else - \PackageWarning{french.ldf}% - {Option `StandardLayout' skipped:\MessageBreak - French is *not* babel's last option.\MessageBreak - Reported}% - \fi - \ifFBStandardLayout - \FBStandardListSpacingtrue - \FBStandardItemizeEnvtrue - \FBStandardItemLabelstrue - \FBStandardEnumerateEnvtrue - \FBIndentFirstfalse - \FBFrenchFootnotesfalse - \FBAutoSpaceFootnotesfalse - \else - \FBStandardListSpacingfalse - \FBStandardItemizeEnvfalse - \FBStandardItemLabelsfalse - \FBStandardEnumerateEnvfalse - \FBIndentFirsttrue - \FBFrenchFootnotestrue - \FBAutoSpaceFootnotestrue - \fi}% - \define@key{FB}{GlobalLayoutFrench}[true]% - {\ifFB@mainlanguage@FR - \csname FBGlobalLayoutFrench#1\endcsname - \else - \PackageWarning{french.ldf}% - {Option `GlobalLayoutFrench' skipped:\MessageBreak - French is *not* babel's last option.\MessageBreak - Reported}% - \fi}% +\let\frenchbsetup\frenchsetup +\@onlypreamble\frenchbsetup % \end{macrocode} -% 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 at every language’s switch. -% \begin{macrocode} - \define@key{FB}{ReduceListSpacing}[true]% - {\csname FBReduceListSpacing#1\endcsname - \ifFBReduceListSpacing \FBStandardListSpacingfalse - \else \FBStandardListSpacingtrue\fi - }% - \define@key{FB}{StandardListSpacing}[true]% - {\csname FBStandardListSpacing#1\endcsname}% - \define@key{FB}{ListOldLayout}[true]% - {\csname FBListOldLayout#1\endcsname - \ifFBListOldLayout - \FBStandardEnumerateEnvtrue - \renewcommand*{\FrenchLabelItem}{\textendash}% - \fi}% - \define@key{FB}{CompactItemize}[true]% - {\csname FBCompactItemize#1\endcsname - \ifFBCompactItemize - \FBStandardItemizeEnvfalse - \FBStandardEnumerateEnvfalse - \else - \FBStandardItemizeEnvtrue - \FBStandardEnumerateEnvtrue - \fi}% - \define@key{FB}{StandardItemizeEnv}[true]% - {\csname FBStandardItemizeEnv#1\endcsname}% - \define@key{FB}{StandardEnumerateEnv}[true]% - {\csname FBStandardEnumerateEnv#1\endcsname}% - \define@key{FB}{StandardItemLabels}[true]% - {\csname FBStandardItemLabels#1\endcsname}% - \define@key{FB}{ItemLabels}% - {\renewcommand*{\FrenchLabelItem}{#1}}% - \define@key{FB}{ItemLabeli}% - {\renewcommand*{\Frlabelitemi}{#1}}% - \define@key{FB}{ItemLabelii}% - {\renewcommand*{\Frlabelitemii}{#1}}% - \define@key{FB}{ItemLabeliii}% - {\renewcommand*{\Frlabelitemiii}{#1}}% - \define@key{FB}{ItemLabeliv}% - {\renewcommand*{\Frlabelitemiv}{#1}}% - \define@key{FB}{StandardLists}[true]% - {\csname FBStandardLists#1\endcsname - \ifFBStandardLists - \FBStandardListSpacingtrue - \FBStandardItemizeEnvtrue - \FBStandardEnumerateEnvtrue - \FBStandardItemLabelstrue - \else - \FBStandardListSpacingfalse - \FBStandardItemizeEnvfalse - \FBStandardEnumerateEnvfalse - \FBStandardItemLabelsfalse - \fi}% - \define@key{FB}{ListItemsAsPar}[true]% - {\csname FBListItemsAsPar#1\endcsname} - \define@key{FB}{IndentFirst}[true]% - {\csname FBIndentFirst#1\endcsname}% - \define@key{FB}{FrenchFootnotes}[true]% - {\csname FBFrenchFootnotes#1\endcsname}% - \define@key{FB}{AutoSpaceFootnotes}[true]% - {\csname FBAutoSpaceFootnotes#1\endcsname}% - \define@key{FB}{AutoSpacePunctuation}[true]% - {\csname FBAutoSpacePunctuation#1\endcsname}% - \define@key{FB}{OriginalTypewriter}[true]% - {\csname FBOriginalTypewriter#1\endcsname}% - \define@key{FB}{ThinColonSpace}[true]% - {\csname FBThinColonSpace#1\endcsname - \ifFBThinColonSpace - \renewcommand*{\FBcolonspace}{\FBthinspace}% - \fi}% - \define@key{FB}{ThinSpaceInFrenchNumbers}[true]% - {\csname FBThinSpaceInFrenchNumbers#1\endcsname}% - \define@key{FB}{FrenchSuperscripts}[true]% - {\csname FBFrenchSuperscripts#1\endcsname} - \define@key{FB}{LowercaseSuperscripts}[true]% - {\csname FBLowercaseSuperscripts#1\endcsname} - \define@key{FB}{PartNameFull}[true]% - {\csname FBPartNameFull#1\endcsname}% - \define@key{FB}{CustomiseFigTabCaptions}[true]% - {\csname FBCustomiseFigTabCaptions#1\endcsname}% - \define@key{FB}{OldFigTabCaptions}[true]% - {\csname FBOldFigTabCaptions#1\endcsname - \ifFBOldFigTabCaptions - \def\FB@capsep@fix{\babel@save\FBCaption@Separator - \def\FBCaption@Separator{\CaptionSeparator}}% +% +% The following commands, defined with property |.code| in +% |DeclareKeys{}|, execute some post-treatment required to +% immediately take the flags value into account. +% \begin{macrocode} +\newcommand*{\FBStandardLayout@setup}[1]% + {\ifFB@mainlanguage@FR + \csname FBStandardLayout#1\endcsname + \else + \PackageWarning{french.ldf}% + {Option `StandardLayout' skipped:\MessageBreak + French is *not* babel's last option.\MessageBreak + Reported}% + \fi + \ifFBStandardLayout + \FBStandardListSpacingtrue + \FBStandardItemizeEnvtrue + \FBStandardItemLabelstrue + \FBStandardEnumerateEnvtrue + \FBIndentFirstfalse + \FBFrenchFootnotesfalse + \FBAutoSpaceFootnotesfalse + \else + \FBStandardListSpacingfalse + \FBStandardItemizeEnvfalse + \FBStandardItemLabelsfalse + \FBStandardEnumerateEnvfalse + \FBIndentFirsttrue + \FBFrenchFootnotestrue + \FBAutoSpaceFootnotestrue + \fi + } +\newcommand*{\FBGlobalLayout@setup}[1]% + {\ifFB@mainlanguage@FR + \csname FBGlobalLayoutFrench#1\endcsname + \else + \PackageWarning{french.ldf}% + {Option `GlobalLayoutFrench' skipped:\MessageBreak + French is *not* babel's last option.\MessageBreak + Reported}% + \fi + } +\newcommand*{\FB@ListOldLayout@setup}[1]% + {\csname FBListOldLayout#1\endcsname + \ifFBListOldLayout + \FBStandardEnumerateEnvtrue + \renewcommand*{\FrenchLabelItem}{\textendash}% + \fi + } +\newcommand*{\FB@CompactItemize@setup}[1]% + {\csname FBCompactItemize#1\endcsname + \ifFBCompactItemize + \FBStandardItemizeEnvfalse + \FBStandardEnumerateEnvfalse + \else + \FBStandardItemizeEnvtrue + \FBStandardEnumerateEnvtrue + \fi + } +\newcommand*{\FBStandardLists@setup}[1]% + {\csname FBStandardLists#1\endcsname + \ifFBStandardLists + \FBStandardListSpacingtrue + \FBStandardItemizeEnvtrue + \FBStandardEnumerateEnvtrue + \FBStandardItemLabelstrue + \else + \FBStandardListSpacingfalse + \FBStandardItemizeEnvfalse + \FBStandardEnumerateEnvfalse + \FBStandardItemLabelsfalse + \fi + } +\newcommand*{\FBThinColonSpace@setup}[1]% + {\csname FBThinColonSpace#1\endcsname + \ifFBThinColonSpace + \renewcommand*{\FBcolonspace}{\FBthinspace}% + \fi + } +\newcommand*{\FBOldFigTabCaptions@setup}[1]% + {\csname FBOldFigTabCaptions#1\endcsname + \ifFBOldFigTabCaptions + \def\FB@capsep@fix{\babel@save\FBCaption@Separator + \def\FBCaption@Separator{\CaptionSeparator}}% \addto\extrasfrench{\FB@capsep@fix}% \ifdefined\extrasacadian \addto\extrasacadian{\FB@capsep@fix}% \fi - \fi}% - \define@key{FB}{SmallCapsFigTabCaptions}[true]% - {\csname FBSmallCapsFigTabCaptions#1\endcsname - \ifFBSmallCapsFigTabCaptions - \else \let\FBfigtabshape\relax \fi}% - \define@key{FB}{SuppressWarning}[true]% - {\csname FBSuppressWarning#1\endcsname - \ifFBSuppressWarning - \renewcommand{\FBWarning}[1]{}% - \fi}% -% \end{macrocode} -% Here are the options controlling French guillemets spacing -% and the output of |\frquote{}|. -% -% \changes{v3.2g}{2017/01/30}{Warn when wrong values are provided to -% options EveryParGuill or EveryLineGuill.} -% -% \begin{macrocode} - \define@key{FB}{INGuillSpace}[true]% - {\csname FBINGuillSpace#1\endcsname - \ifFBINGuillSpace - \renewcommand*{\FBguillspace}{\space}% - \fi}% - \define@key{FB}{InnerGuillSingle}[true]% - {\csname FBInnerGuillSingle#1\endcsname}% - \define@key{FB}{EveryParGuill}[open]% - {\expandafter\let\expandafter - \FBeveryparguill\csname FBguill#1\endcsname - \ifx\FBeveryparguill\FBguillopen - \else\ifx\FBeveryparguill\FBguillclose - \else\ifx\FBeveryparguill\FBguillnone - \else - \let\FBeveryparguill\FBguillopen - \FBWarning{Wrong value for `EveryParGuill': - try `open',\MessageBreak - `close' or `none'. Reported}% - \fi - \fi - \fi}% - \define@key{FB}{EveryLineGuill}[open]% - {\ifFB@luatex@punct - \expandafter\let\expandafter - \FBeverylineguill\csname FBguill#1\endcsname - \ifx\FBeverylineguill\FBguillopen - \else\ifx\FBeverylineguill\FBguillclose - \else\ifx\FBeverylineguill\FBguillnone - \else - \let\FBeverylineguill\FBguillnone - \FBWarning{Wrong value for `EveryLineGuill': - try `open',\MessageBreak - `close' or `none'. Reported}% - \fi - \fi - \fi - \else - \FBWarning{Option `EveryLineGuill' skipped:% - \MessageBreak this option is for - LuaTeX *only*.\MessageBreak Reported}% - \fi}% + \fi + } +\newcommand*{\FBSmallCapsFigTabCaptions@setup}[1]% + {\csname FBSmallCapsFigTabCaptions#1\endcsname + \ifFBSmallCapsFigTabCaptions + \else + \let\FBfigtabshape\relax + \fi + } +\newcommand*{\FBSuppressWarning@setup}[1]% + {\csname FBSuppressWarning#1\endcsname + \ifFBSuppressWarning + \renewcommand{\FBWarning}[1]{}% + \fi + } +\newcommand*{\FBINGuillSpace@setup}[1]% + {\csname FBINGuillSpace#1\endcsname + \ifFBINGuillSpace + \renewcommand*{\FBguillspace}{\space}% + \fi + } +\newcommand*{\FBEveryParGuill@setup}[1]% + {\expandafter\let\expandafter + \FBeveryparguill\csname FBguill#1\endcsname + \ifx\FBeveryparguill\FBguillopen + \else\ifx\FBeveryparguill\FBguillclose + \else\ifx\FBeveryparguill\FBguillnone + \else + \let\FBeveryparguill\FBguillopen + \FBWarning{Wrong value for `EveryParGuill': + try `open',\MessageBreak + `close' or `none'. Reported}% + \fi + \fi + \fi + } +\newcommand*{\FBEveryLineGuill@setup}[1]% + {\ifFB@luatex@punct + \expandafter\let\expandafter + \FBeverylineguill\csname FBguill#1\endcsname + \ifx\FBeverylineguill\FBguillopen + \else\ifx\FBeverylineguill\FBguillclose + \else\ifx\FBeverylineguill\FBguillnone + \else + \let\FBeverylineguill\FBguillnone + \FBWarning{Wrong value for `EveryLineGuill': + try `open',\MessageBreak + `close' or `none'. Reported}% + \fi + \fi + \fi + \else + \FBWarning{Option `EveryLineGuill' skipped:% + \MessageBreak this option is for + LuaTeX *only*.\MessageBreak Reported}% + \fi + } % \end{macrocode} % % \changes{v3.3c}{2017/07/23}{New option `UnicodeNoBreakSpaces’ for @@ -4807,20 +4729,21 @@ return french_punctuation % % Option \fbo{UnicodeNoBreakSpaces} (LuaLaTeX only) is meant for % HTML translators: when true, all non-breaking spaces added by -% \frenchb{} are coded in the PDF file as Unicode characters, namely -% U+A0 or U+202F, instead of penalties and glues. +% \frenchb{} are coded in the PDF file as Unicode characters, +% namely U+A0 or U+202F, instead of penalties and glues. % \begin{macrocode} - \define@key{FB}{UnicodeNoBreakSpaces}[true]% - {\ifFB@luatex@punct - \csname FBucsNBSP#1\endcsname - \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi - \else - \FBWarning{Option `UnicodeNoBreakSpaces' skipped:% - \MessageBreak this option is for - LuaTeX *only*.\MessageBreak Reported}% - \fi - }% +\newcommand*{\FBUnicodeNoBreakSpaces@setup}[1]% + {\ifFB@luatex@punct + \csname FBucsNBSP#1\endcsname + \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi + \else + \FBWarning{Option `UnicodeNoBreakSpaces' skipped:% + \MessageBreak this option is for + LuaTeX *only*.\MessageBreak Reported}% + \fi + }% % \end{macrocode} +% % Inputing French quotes as \emph{single characters} when they are % available on the keyboard (through a compose key for instance) % is more comfortable than typing |\og| and |\fg|. @@ -4861,145 +4784,145 @@ return french_punctuation % it can be single-byte (latin1, latin9, applemac,…) or % multi-bytes (utf-8, utf8x); the next command is meant for checking % whether a character is single-byte (|\FB@second| is empty) or not. -% \begin{macrocode} - \def\FB@parse#1#2\endparse{\def\FB@second{#2}}% -% \end{macrocode} % % \begin{macrocode} - \define@key{FB}{og}% - {\ifFBunicode +\def\FB@parse#1#2\endparse{\def\FB@second{#2}}% +\newcommand*{\FB@@og}% + {\ifFBfrench + \ifFB@spacing \FB@og\ignorespaces + \else \guillemotleft + \fi + \else \guillemotleft + \fi + } +\newcommand*{\FB@@fg}% + {\ifFBfrench + \ifFB@spacing \FB@fg + \else \guillemotright + \fi + \else \guillemotright + \fi + } +\newcommand*{\FBog@setup}[1]% + {\ifFBunicode % \end{macrocode} % LuaTeX or XeTeX in use, first try modern LuaTeX: we just need % to set LuaTeX’s attribute |\FB@addGUILspace| to 1, % \begin{macrocode} - \ifFB@luatex@punct - \FB@addGUILspace=1 \relax - \fi + \ifFB@luatex@punct + \FB@addGUILspace=1 \relax + \fi % \end{macrocode} % then with XeTeX it is a bit more tricky: % \begin{macrocode} - \ifFB@xetex@punct + \ifFB@xetex@punct % \end{macrocode} % |\XeTeXinterchartokenstate| is defined, we just need to set % |\XeTeXcharclass| to |\FB@guilo| for the French opening quote % in T1 and Unicode encoding (see subsection~\ref{ssec-punct}). % \begin{macrocode} - \XeTeXcharclass"13 = \FB@guilo - \XeTeXcharclass"AB = \FB@guilo - \XeTeXcharclass"A0 = \FB@guilnul - \XeTeXcharclass"202F = \FB@guilnul - \fi + \XeTeXcharclass"13 = \FB@guilo + \XeTeXcharclass"AB = \FB@guilo + \XeTeXcharclass"A0 = \FB@guilnul + \XeTeXcharclass"202F = \FB@guilnul + \fi % \end{macrocode} % Issue a warning with older Unicode engines requiring active % characters. % \begin{macrocode} - \ifFB@active@punct - \FBWarning{Option og=« not supported with this version - of\MessageBreak LuaTeX/XeTeX; reported}% - \fi - \else + \ifFB@active@punct + \FBWarning{Option og=« not supported with this version of + \MessageBreak LuaTeX/XeTeX; reported}% » + \fi + \else % \end{macrocode} % This is for conventional TeX engines: % \begin{macrocode} - \newcommand*{\FB@@og}{% - \ifFBfrench - \ifFB@spacing\FB@og\ignorespaces - \else\guillemotleft - \fi - \else\guillemotleft\fi}% - \AtBeginDocument{% - \ifdefined\uc@dclc + \AtBeginDocument{% + \ifdefined\uc@dclc % \end{macrocode} % Package \pkg{inputenc} with utf8x (ucs) encoding loaded, % use |\uc@dclc|: % \begin{macrocode} - \uc@dclc{171}{default}{\FB@@og}% - \else + \uc@dclc{171}{default}{\FB@@og}% + \else % \end{macrocode} % if encoding is not utf8x, check if the argument of |og| % is a single-byte character: % \begin{macrocode} - \FB@parse#1\endparse - \ifx\FB@second\@empty + \FB@parse#1\endparse + \ifx\FB@second\@empty % \end{macrocode} % This means 8-bit character encoding. % Package \pkg{MULEenc} (from CJK) defines |\mule@def| % to map characters to control sequences. % \begin{macrocode} - \ifdefined\mule@def - \mule@def{11}{\FB@@og}% - \else - \ifdefined\DeclareInputText - \@tempcnta`#1\relax - \DeclareInputText{\the\@tempcnta}{\FB@@og}% - \else + \ifdefined\mule@def + \mule@def{11}{\FB@@og}% + \else + \ifdefined\DeclareInputText + \@tempcnta`#1\relax + \DeclareInputText{\the\@tempcnta}{\FB@@og}% + \else % \end{macrocode} % Package \pkg{inputenc} not loaded, no way… % \begin{macrocode} - \FBWarning{Option `og' requires package - inputenc;\MessageBreak reported}% - \fi - \fi - \else + \FBWarning{Option `og' requires package + inputenc;\MessageBreak reported}% + \fi + \fi + \else % \end{macrocode} % This means multi-byte character encoding, we assume UTF-8 % \begin{macrocode} - \DeclareUnicodeCharacter{00AB}{\FB@@og}% - \fi - \fi}% - \fi - }% + \DeclareUnicodeCharacter{00AB}{\FB@@og}% + \fi + \fi}% + \fi + } % \end{macrocode} % % Same code for the closing quote. % \begin{macrocode} - \define@key{FB}{fg}% - {\ifFBunicode - \ifFB@luatex@punct - \FB@addGUILspace=1 \relax - \fi - \ifFB@xetex@punct - \XeTeXcharclass"14 = \FB@guilf - \XeTeXcharclass"BB = \FB@guilf - \XeTeXcharclass"A0 = \FB@guilnul - \XeTeXcharclass"202F = \FB@guilnul - \fi - \ifFB@active@punct - \FBWarning{Option fg=» not supported with this version - of\MessageBreak LuaTeX/XeTeX; reported}% - \fi - \else - \newcommand*{\FB@@fg}{% - \ifFBfrench - \ifFB@spacing\FB@fg - \else\guillemotright - \fi - \else\guillemotright\fi}% - \AtBeginDocument{% - \ifdefined\uc@dclc - \uc@dclc{187}{default}{\FB@@fg}% - \else - \FB@parse#1\endparse - \ifx\FB@second\@empty - \ifdefined\mule@def - \mule@def{27}{{\FB@@fg}}% - \else - \ifdefined\DeclareInputText - \@tempcnta`#1\relax - \DeclareInputText{\the\@tempcnta}{\FB@@fg}% - \else - \FBWarning{Option `fg' requires package - inputenc;\MessageBreak reported}% - \fi - \fi - \else - \DeclareUnicodeCharacter{00BB}{\FB@@fg}% - \fi - \fi}% - \fi - }% -} -% \end{macrocode} +\newcommand*{\FBfg@setup}[1]% + {\ifFBunicode + \ifFB@luatex@punct + \FB@addGUILspace=1 \relax + \fi + \ifFB@xetex@punct + \XeTeXcharclass"14 = \FB@guilf + \XeTeXcharclass"BB = \FB@guilf + \XeTeXcharclass"A0 = \FB@guilnul + \XeTeXcharclass"202F = \FB@guilnul + \fi + \ifFB@active@punct + \FBWarning{Option fg=» not supported with this version of + \MessageBreak LuaTeX/XeTeX; reported}% + \fi + \else + \AtBeginDocument{% + \ifdefined\uc@dclc + \uc@dclc{187}{default}{\FB@@fg}% + \else + \FB@parse#1\endparse + \ifx\FB@second\@empty + \ifdefined\mule@def + \mule@def{27}{{\FB@@fg}}% + \else + \ifdefined\DeclareInputText + \@tempcnta`#1\relax + \DeclareInputText{\the\@tempcnta}{\FB@@fg}% + \else + \FBWarning{Option `fg' requires package + inputenc;\MessageBreak reported}% + \fi + \fi + \else + \DeclareUnicodeCharacter{00BB}{\FB@@fg}% + \fi + \fi}% + \fi + } % \end{macro} % % \begin{macro}{\FBprocess@options} @@ -5113,8 +5036,8 @@ return french_punctuation % % When package \pkg{numprint} is loaded with option % \opt{autolanguage}, \pkg{numprint}’s command |\npstylefrench| has -% to be redefined differently according to the value of flag -% \fbo{ThinSpaceInFrenchNumbers}. +% to be redefined differently according to the value of +% flag\linebreak \fbo{ThinSpaceInFrenchNumbers}. % As |\npstylefrench| was undefined in old versions of % \pkg{numprint}, we provide this command. % \begin{macrocode} @@ -5122,17 +5045,16 @@ return french_punctuation {\ifnprt@autolanguage \providecommand*{\npstylefrench}{}% \ifFBThinSpaceInFrenchNumbers - \renewcommand*{\FBthousandsep}{\,}% + \renewcommand*{\FBthousandsep}{\FBthinspace}% \fi \g@addto@macro\npstylefrench{\npthousandsep{\FBthousandsep}}% \fi }{}% % \end{macrocode} % \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 -% instance. +% |\up=\textsuperscript|. The star-form |\up*=\FB@up@fake| is +% provided for fonts that lack some superior letters: Adobe Jenson +% Pro and Utopia Expert have no ``g superior’’ for instance. % \begin{macrocode} \ifFBFrenchSuperscripts \DeclareRobustCommand*{\up}{% @@ -5275,9 +5197,8 @@ return french_punctuation % Reported by Sébastien Gouezel.} % % 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 -% LuaTeX punctuation on and issue some warnings if necessary. +% in case the \pkg{xspace} package is not loaded and execute +% |\FBprocess@options|. % \begin{macrocode} \AtBeginDocument{% \providecommand*{\xspace}{\relax}% @@ -5426,13 +5347,14 @@ return french_punctuation % \begin{macro}{\Frlabelitemii} % \begin{macro}{\Frlabelitemiii} % \begin{macro}{\Frlabelitemiv} -% Default labels for French itemize-lists (same label for all levels): +% Default labels for French itemize-lists ---same label for all +% levels---, (already defined as empty by |\DeclareKey{}|): % \begin{macrocode} -\newcommand*{\FrenchLabelItem}{\textemdash} -\newcommand*{\Frlabelitemi}{\FrenchLabelItem} -\newcommand*{\Frlabelitemii}{\FrenchLabelItem} -\newcommand*{\Frlabelitemiii}{\FrenchLabelItem} -\newcommand*{\Frlabelitemiv}{\FrenchLabelItem} +\renewcommand*{\FrenchLabelItem}{\textemdash} +\renewcommand*{\Frlabelitemi}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemii}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemiii}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemiv}{\FrenchLabelItem} % \end{macrocode} % \end{macro} % \end{macro} @@ -5444,14 +5366,14 @@ return french_punctuation % \begin{macro}{\descindentFB} % \begin{macro}{\labelindentFB} % \begin{macro}{\labelwidthFB} -% Let’s define four dimens |\listindentFB|, |\descindentFB|, +% {\sloppy Let’s define four dimens |\listindentFB|, |\descindentFB|, % |\labelindentFB| and |\labelwidthFB| to customise lists’ horizontal % indentations. % They are given silly negative values here in order to eventually % enable their customisation in the preamble. They will get % reasonnable defaults later when entering French (see % |\setlabelitemsFB| and |\setlistindentFB|) unless they have been -% customised. +% customised.\par} % \begin{macrocode} \newdimen\listindentFB \setlength{\listindentFB}{-1pt} @@ -5784,20 +5706,6 @@ return french_punctuation % \changes{v2.0}{2006/11/06}{Footnotes are now printed % 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.} -% -% \changes{v3.5s}{2024/01/05}{Footnotes: no customising of -% \cs{@footnotetext} when the footnotebackref package is loaded. -% Just warn the user.} -% -% The \pkg{bigfoot} package deeply changes the way footnotes are -% handled. When \file{bigfoot} is loaded, we just warn the user -% that \frenchb{} will not customise footnotes at all. -% When the \pkg{footnotebackref} package is loaded, \frenchb{} -% will not customise |\@footnotetext| in order to keep back -% referencing working. -% % The layout of footnotes is controlled by two flags % |\ifFBAutoSpaceFootnotes| and |\ifFBFrenchFootnotes| which are % set by options of \fbsetup{} (see section~\ref{ssec-keyval}). @@ -5806,40 +5714,9 @@ return french_punctuation % different because one was called in a French part, the other one % in English!). % -% We save the original definition of |\@footnotemark| at the -% |\begin{document}| in order to include any customisation that -% packages might have done; we define a variant |\@footnotemarkFB| -% which just adds a thin space before the number or symbol calling -% a footnote (any space typed in is removed first). The choice -% between the two definitions (valid for the whole document) is -% controlled by flag |\ifFBAutoSpaceFootnotes|. -% % \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to % \cs{PackageInfo} (when bigfoot package in use).} % -% \begin{macrocode} -\AtBeginDocument{% - \@ifpackageloaded{bigfoot}% - {\PackageWarning{french.ldf}% - {bigfoot package in use.\MessageBreak - babel-french will NOT customise footnotes;% - \MessageBreak reported}}% - {\let\@footnotemarkORI\@footnotemark - \def\@footnotemarkFB{\leavevmode\unskip\unkern - \,\@footnotemarkORI}% - \ifFBAutoSpaceFootnotes - \let\@footnotemark\@footnotemarkFB - \fi}% - \@ifpackageloaded{footnotebackref}% - {\FBFrenchFootnotesfalse - \PackageWarning{french.ldf}% - {footnotebackref package loaded.\MessageBreak - babel-french will NOT customise footnotes;% - \MessageBreak reported}}% - {}% - } -% \end{macrocode} -% % \begin{macro}{\@makefntextFB} % We then define |\@makefntextFB|, a variant of |\@makefntext| % which is responsible for the layout of footnotes, to match the @@ -5880,10 +5757,9 @@ return french_punctuation \newcommand*{\kernFFN}{\kern .5em} \newdimen\FBfnindent % \end{macrocode} -% |\@makefntextFB|’s definition is now tuned according to the -% document’s class for better compatibility. +% |\@makefntextFB|’s definition depends on the document’s class. % -% Koma-script classes provide |\deffootnote|, a handy command +% Koma-script classes: they provide |\deffootnote|, a handy command % to customise the footnotes’ layout (see English manual % \file{scrguien.pdf}); it redefines |\@makefntext| and % |\@@makefnmark|. First, save the original definitions. @@ -5929,19 +5805,17 @@ return french_punctuation \makefootmark #1}% }{} % \end{macrocode} -% Definitions for the \cls{beamer} class: -% \begin{macrocode} -\@ifclassloaded{beamer} -% \end{macrocode} -% (see original definition in \file{beamerbaseframecomponents.sty}), -% note that for the \cls{beamer} class footnotes are LR-boxes, not -% paragraphs, so |\parindentFFN| is irrelevant. -% class. +% Definitions for the \cls{beamer} class:\par +% the original definition is in +% \file{beamerbaseframecomponents.sty}, note that for the +% \cls{beamer} class footnotes are LR-boxes, not paragraphs, +% so |\parindentFFN| is irrelevant. % % \changes{v3.2h}{2016/04/09}{With beamer.cls, add \cs{llap} to % \cs{@thefnmark} for notes numbered over 99.} % % \begin{macrocode} +\@ifclassloaded{beamer} {\def\@makefntextFB#1{% \def\insertfootnotetext{#1}% \def\insertfootnotemark{\insertfootnotemarkFB}% @@ -5952,9 +5826,9 @@ return french_punctuation \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’. % Keep in mind that |\@thefnmark| might be empty (i.e.\ in @@ -5971,11 +5845,36 @@ return french_punctuation % \end{macrocode} % \end{macro} % -% The rest of |\@makefntext|’s customisation is done at the -% |\begin{document}|. We save the original definition of -% |\@makefntext|, and then redefine |\@makefntext| according +% The rest of |\@makefntext|’s customisation will be done at +% the |\begin{document}|: saving the original definition of +% |\@makefntext|, then redefining |\@makefntext| according % to the value of flag |\ifFBFrenchFootnotes| (true or false). -% Koma-script classes require a special treatment. +% +% \begin{macro}{\@footnotemark} +% +% \changes{v3.6a}{2024/05/13}{Allow customisation of the space added +% in \cs{\@footnotemarkFB}.} +% +% We will save the original definition of |\@footnotemark| at the +% |\begin{document}| in order to include any customisation that +% packages might have done; we define a variant |\@footnotemarkFB| +% which just adds a (customisable) thin space before the number or +% symbol calling a footnote (any space typed in is removed first). +% The choice between the two definitions (valid for the whole +% document) is controlled by flag |\ifFBAutoSpaceFootnotes|. +% +% |\@footnotemark|’s customisation: let’s define a customisable +% thin space which will be added before footnote’s call by +% |\@footnotemarkFB|. +% \begin{macrocode} +\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font} +\def\@footnotemarkFB{\leavevmode\unskip\unkern + \protect\FBfnmarkspace\@footnotemarkORI}% +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0b}{2007/04/18}{Footnotes: Just do nothing +% (except warning) when the bigfoot package is loaded.} % % \changes{v3.3c}{2017/07/28}{Reset \cs{localleftbox} locally % inside \cs{@makefntext}. Needed by \cs{frquote} with LuaTeX.} @@ -5987,14 +5886,49 @@ return french_punctuation % \cs{localleftbox} and \cs{FBeverypar@quote} saved and restored % instead.} % +% \changes{v3.5s}{2024/01/05}{Footnotes: no customising of +% \cs{@footnotetext} when the footnotebackref package is loaded. +% Just warn the user.} +% +% Switching between French or Standard layout for footnotes is done +% `AtBeginDocument’. % The LuaTeX command |\localleftbox| and |\FBeverypar@quote| used % by |\frquote{}| have to be reset inside footnotes; done for LaTeX % based formats only. % \begin{macrocode} \providecommand\localleftbox[1]{} \AtBeginDocument{% - \@ifpackageloaded{bigfoot}{}% - {\ifdim\parindentFFN<10in +% \end{macrocode} +% When the \pkg{footnotebackref} package is loaded, \frenchb{} +% will not customise |\@footnotetext| in order to keep back +% referencing working. +% \begin{macrocode} + \@ifpackageloaded{footnotebackref}% + {\FBFrenchFootnotesfalse + \PackageWarning{french.ldf}% + {footnotebackref package loaded.\MessageBreak + babel-french will NOT customise footnotes;% + \MessageBreak reported}}% + {}% +% \end{macrocode} +% The \pkg{bigfoot} package deeply changes the way footnotes are +% handled. When \file{bigfoot} is loaded, we just warn the user +% that \frenchb{} will not customise footnotes at all. +% \begin{macrocode} + \@ifpackageloaded{bigfoot}% + {\PackageWarning{french.ldf}% + {bigfoot package in use.\MessageBreak + babel-french will NOT customise footnotes;% + \MessageBreak reported}}% +% \end{macrocode} +% Otherwise, footnotes may be customised according to the +% \fbsetup{} options. +% \begin{macrocode} + {\let\@footnotemarkORI\@footnotemark + \ifFBAutoSpaceFootnotes + \let\@footnotemark\@footnotemarkFB + \fi + \ifdim\parindentFFN<10in \else \parindentFFN=\parindent \ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi @@ -6002,14 +5936,15 @@ return french_punctuation \settowidth{\FBfnindent}{\dotFFN\kernFFN}% \addtolength{\FBfnindent}{\parindentFFN}% \let\@makefntextORI\@makefntext - \ifFB@koma % \end{macrocode} +% Koma-script classes require a special treatment.\par % Definition of |\@makefntext| for koma-script classes: running % \@makefntextORI inside a group to reset |\localleftbox{}| and % |\FBeverypar@quote| would mess up the layout of footnotes whenever % the first manadatory argument of |\deffootnote{}| (used as % |\leftskip|) is non-nil (default is 1em, 0pt in French). % \begin{macrocode} + \ifFB@koma \let\@@makefnmarkORI\@@makefnmark \long\def\@makefntext#1{% \localleftbox{}% @@ -6071,7 +6006,7 @@ return french_punctuation \localleftbox{\FBeveryline@quote}}% \fi }% -} + } % \end{macrocode} % % For compatibility reasons, we provide definitions for the commands diff --git a/Master/texmf-dist/tex/generic/babel-french/acadian.ldf b/Master/texmf-dist/tex/generic/babel-french/acadian.ldf index b5d5301d03f..146e293ffcd 100644 --- a/Master/texmf-dist/tex/generic/babel-french/acadian.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/acadian.ldf @@ -10,11 +10,11 @@ %% ------------------------------------------------------------- %% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". @@ -24,7 +24,7 @@ %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %% \ProvidesLanguage{acadian} - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] \PackageInfo{acadian.ldf}% {`acadian' dialect is currently\MessageBreak *absolutely identical* to the\MessageBreak diff --git a/Master/texmf-dist/tex/generic/babel-french/canadien.ldf b/Master/texmf-dist/tex/generic/babel-french/canadien.ldf index 5e63466a33b..c04ed30c114 100644 --- a/Master/texmf-dist/tex/generic/babel-french/canadien.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/canadien.ldf @@ -10,11 +10,11 @@ %% ------------------------------------------------------------- %% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". @@ -24,7 +24,7 @@ %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %% \ProvidesLanguage{canadien} - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] \PackageWarning{canadien.ldf}% {Option `canadien' for Babel is *deprecated*,\MessageBreak it might be removed sooner or later. Please\MessageBreak diff --git a/Master/texmf-dist/tex/generic/babel-french/francais.ldf b/Master/texmf-dist/tex/generic/babel-french/francais.ldf index 38a2822a999..930425c55a6 100644 --- a/Master/texmf-dist/tex/generic/babel-french/francais.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/francais.ldf @@ -10,11 +10,11 @@ %% ------------------------------------------------------------- %% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". @@ -24,7 +24,7 @@ %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %% \ProvidesLanguage{francais} - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] \PackageWarning{francais.ldf}% {Option `francais' for Babel is *deprecated*,\MessageBreak it might be removed sooner or later. Please\MessageBreak diff --git a/Master/texmf-dist/tex/generic/babel-french/french.ldf b/Master/texmf-dist/tex/generic/babel-french/french.ldf index 37c1f3da27f..e464ea33b0b 100644 --- a/Master/texmf-dist/tex/generic/babel-french/french.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/french.ldf @@ -10,11 +10,11 @@ %% ------------------------------------------------------------- %% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". @@ -24,7 +24,7 @@ %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %% \ProvidesLanguage{french} - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] %% %% Babel package for LaTeX version 2e %% Copyright © 1996-2024 @@ -108,6 +108,7 @@ \fi \fi \bbl@tempa +\ifLaTeXe \NeedsTeXFormat{LaTeX2e}[2022/06/01] \fi \newif\ifFBunicode \newif\ifFBLuaTeX \newif\ifFBXeTeX @@ -252,6 +253,7 @@ \fb@info{No need for active punctuation characters\\ with this version of LuaTeX!} \fi + \newcommand*{\set@glue@table}[1]{% \directlua { local s = token.get_meaning("FB#1space") @@ -777,39 +779,22 @@ \providecommand*{\textbackslash}{{\char"005C}} \providecommand*{\textasciicircum}{{\char"005E}} \providecommand*{\textasciitilde}{{\char"007E}} - \newcommand*{\FB@degre}{°} + \DeclareRobustCommand*{\degre}{°} \else - \ifLaTeXe - \newcommand*{\FB@degre}{\r{}} - \fi + \DeclareRobustCommand*{\degre}{\textdegree} \fi \DeclareRobustCommand*{\boi}{\textbackslash} \DeclareRobustCommand*{\circonflexe}{\textasciicircum} \DeclareRobustCommand*{\tild}{\textasciitilde} -\DeclareRobustCommand*{\degre}{% - \texorpdfstring{\FB@degre}{\textdegree}} \newcommand*{\at}{@} \DeclareRobustCommand*{\degres}{\degre} \ifLaTeXe \AtBeginDocument{% - \@ifpackageloaded{fontspec}{}{% - \ifdefined\DeclareEncodingSubset - \DeclareRobustCommand*{\degres}{% + \@ifpackageloaded{fontspec}{}% + {\DeclareRobustCommand*{\degres}{% \texorpdfstring{\hbox{\UseTextSymbol{TS1}{\textdegree}}}% {\textdegree}}% - \else - \def\Warning@degree@TSone{\FBWarning - {Degrees would look better in TS1-encoding:% - \MessageBreak add \protect - \usepackage{textcomp} to the preamble.% - \MessageBreak Degrees used}} - \DeclareRobustCommand*{\degres}{% - \texorpdfstring{\hbox to 0.3em{\hss\degre\hss}% - \Warning@degree@TSone - \global\let\Warning@degree@TSone\relax}% - {\textdegree}}% - \fi - }% + }% } \fi \newif\ifFB@icomma @@ -1012,7 +997,7 @@ } \newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}} \bgroup - \catcode`:=12 \catcode`>=12 \relax + \catcode`: =12 \catcode`> =12 \relax \long\gdef\STD@makecaption#1#2{% \vskip\abovecaptionskip \sbox\@tempboxa{#1: #2}% @@ -1124,16 +1109,9 @@ BEFORE babel/french; reported}% \fi } -\newcommand*{\frenchsetup}[1]{% - \setkeys{FB}{#1}% -}% -\@onlypreamble\frenchsetup -\let\frenchbsetup\frenchsetup -\@onlypreamble\frenchbsetup \newif\ifFBShowOptions \newif\ifFBStandardLayout \FBStandardLayouttrue \newif\ifFBGlobalLayoutFrench \FBGlobalLayoutFrenchtrue -\newif\ifFBReduceListSpacing \newif\ifFBStandardListSpacing \FBStandardListSpacingtrue \newif\ifFBListOldLayout \newif\ifFBListItemsAsPar @@ -1195,284 +1173,312 @@ \FBAutoSpaceFootnotestrue \FBCustomiseFigTabCaptionstrue \fi - \RequirePackage{keyval}% - \define@key{FB}{ShowOptions}[true]% - {\csname FBShowOptions#1\endcsname}% - \define@key{FB}{StandardLayout}[true]% - {\ifFB@mainlanguage@FR - \csname FBStandardLayout#1\endcsname - \else - \PackageWarning{french.ldf}% - {Option `StandardLayout' skipped:\MessageBreak - French is *not* babel's last option.\MessageBreak - Reported}% - \fi - \ifFBStandardLayout - \FBStandardListSpacingtrue - \FBStandardItemizeEnvtrue - \FBStandardItemLabelstrue - \FBStandardEnumerateEnvtrue - \FBIndentFirstfalse - \FBFrenchFootnotesfalse - \FBAutoSpaceFootnotesfalse - \else - \FBStandardListSpacingfalse - \FBStandardItemizeEnvfalse - \FBStandardItemLabelsfalse - \FBStandardEnumerateEnvfalse - \FBIndentFirsttrue - \FBFrenchFootnotestrue - \FBAutoSpaceFootnotestrue - \fi}% - \define@key{FB}{GlobalLayoutFrench}[true]% - {\ifFB@mainlanguage@FR - \csname FBGlobalLayoutFrench#1\endcsname - \else - \PackageWarning{french.ldf}% - {Option `GlobalLayoutFrench' skipped:\MessageBreak - French is *not* babel's last option.\MessageBreak - Reported}% - \fi}% - \define@key{FB}{ReduceListSpacing}[true]% - {\csname FBReduceListSpacing#1\endcsname - \ifFBReduceListSpacing \FBStandardListSpacingfalse - \else \FBStandardListSpacingtrue\fi - }% - \define@key{FB}{StandardListSpacing}[true]% - {\csname FBStandardListSpacing#1\endcsname}% - \define@key{FB}{ListOldLayout}[true]% - {\csname FBListOldLayout#1\endcsname - \ifFBListOldLayout - \FBStandardEnumerateEnvtrue - \renewcommand*{\FrenchLabelItem}{\textendash}% - \fi}% - \define@key{FB}{CompactItemize}[true]% - {\csname FBCompactItemize#1\endcsname - \ifFBCompactItemize - \FBStandardItemizeEnvfalse - \FBStandardEnumerateEnvfalse - \else - \FBStandardItemizeEnvtrue - \FBStandardEnumerateEnvtrue - \fi}% - \define@key{FB}{StandardItemizeEnv}[true]% - {\csname FBStandardItemizeEnv#1\endcsname}% - \define@key{FB}{StandardEnumerateEnv}[true]% - {\csname FBStandardEnumerateEnv#1\endcsname}% - \define@key{FB}{StandardItemLabels}[true]% - {\csname FBStandardItemLabels#1\endcsname}% - \define@key{FB}{ItemLabels}% - {\renewcommand*{\FrenchLabelItem}{#1}}% - \define@key{FB}{ItemLabeli}% - {\renewcommand*{\Frlabelitemi}{#1}}% - \define@key{FB}{ItemLabelii}% - {\renewcommand*{\Frlabelitemii}{#1}}% - \define@key{FB}{ItemLabeliii}% - {\renewcommand*{\Frlabelitemiii}{#1}}% - \define@key{FB}{ItemLabeliv}% - {\renewcommand*{\Frlabelitemiv}{#1}}% - \define@key{FB}{StandardLists}[true]% - {\csname FBStandardLists#1\endcsname - \ifFBStandardLists - \FBStandardListSpacingtrue - \FBStandardItemizeEnvtrue - \FBStandardEnumerateEnvtrue - \FBStandardItemLabelstrue - \else - \FBStandardListSpacingfalse - \FBStandardItemizeEnvfalse - \FBStandardEnumerateEnvfalse - \FBStandardItemLabelsfalse - \fi}% - \define@key{FB}{ListItemsAsPar}[true]% - {\csname FBListItemsAsPar#1\endcsname} - \define@key{FB}{IndentFirst}[true]% - {\csname FBIndentFirst#1\endcsname}% - \define@key{FB}{FrenchFootnotes}[true]% - {\csname FBFrenchFootnotes#1\endcsname}% - \define@key{FB}{AutoSpaceFootnotes}[true]% - {\csname FBAutoSpaceFootnotes#1\endcsname}% - \define@key{FB}{AutoSpacePunctuation}[true]% - {\csname FBAutoSpacePunctuation#1\endcsname}% - \define@key{FB}{OriginalTypewriter}[true]% - {\csname FBOriginalTypewriter#1\endcsname}% - \define@key{FB}{ThinColonSpace}[true]% - {\csname FBThinColonSpace#1\endcsname - \ifFBThinColonSpace - \renewcommand*{\FBcolonspace}{\FBthinspace}% - \fi}% - \define@key{FB}{ThinSpaceInFrenchNumbers}[true]% - {\csname FBThinSpaceInFrenchNumbers#1\endcsname}% - \define@key{FB}{FrenchSuperscripts}[true]% - {\csname FBFrenchSuperscripts#1\endcsname} - \define@key{FB}{LowercaseSuperscripts}[true]% - {\csname FBLowercaseSuperscripts#1\endcsname} - \define@key{FB}{PartNameFull}[true]% - {\csname FBPartNameFull#1\endcsname}% - \define@key{FB}{CustomiseFigTabCaptions}[true]% - {\csname FBCustomiseFigTabCaptions#1\endcsname}% - \define@key{FB}{OldFigTabCaptions}[true]% - {\csname FBOldFigTabCaptions#1\endcsname - \ifFBOldFigTabCaptions - \def\FB@capsep@fix{\babel@save\FBCaption@Separator - \def\FBCaption@Separator{\CaptionSeparator}}% +} +\DeclareKeys[FBsetup] + { + ShowOptions.if = FBShowOptions , + StandardLayout.default:n = {true} , + StandardLayout.code = \FBStandardLayout@setup{#1} , + GlobalLayoutFrench.default:n = {true} , + GlobalLayoutFrench.code = \FBGlobalLayout@setup{#1} , + StandardListSpacing.if = FBStandardListSpacing , + ReduceListSpacing.ifnot = FBStandardListSpacing , + ListOldLayout.default:n = {true} , + ListOldLayout.code = \FBListOldLayout@setup{#1} , + CompactItemize.default:n = {true} , + CompactItemize.code = \FBCompactItemize@setup{#1} , + StandardItemizeEnv.if = FBStandardItemizeEnv , + StandardEnumerateEnv.if = FBStandardEnumerateEnv , + StandardItemLabels.if = FBStandardItemLabels , + ItemLabels.store = \FrenchLabelItem , + ItemLabeli.store = \Frlabelitemi , + ItemLabelii.store = \Frlabelitemii , + ItemLabeliii.store = \Frlabelitemiii , + ItemLabeliv.store = \Frlabelitemiv , + StandardLists.default:n = {true} , + StandardLists.code = \FBStandardLists@setup{#1} , + ListItemsAsPar.if = FBListItemsAsPar , + IndentFirst.if = FBIndentFirst , + FrenchFootnotes.if = FBFrenchFootnotes , + AutoSpaceFootnotes.if = FBAutoSpaceFootnotes , + AutoSpacePunctuation.if = FBAutoSpacePunctuation , + OriginalTypewriter.if = FBOriginalTypewriter , + ThinColonSpace.default:n = {true} , + ThinColonSpace.code = \FBThinColonSpace@setup{#1} , + ThinSpaceInFrenchNumbers.if = FBThinSpaceInFrenchNumbers , + FrenchSuperscripts.if = FBFrenchSuperscripts , + LowercaseSuperscripts.if = FBLowercaseSuperscripts , + PartNameFull.if = FBPartNameFull , + CustomiseFigTabCaptions.if = FBCustomiseFigTabCaptions , + OldFigTabCaptions.default:n = {true} , + OldFigTabCaptions.code = \FBOldFigTabCaptions@setup{#1} , + SmallCapsFigTabCaptions.default:n = {true} , + SmallCapsFigTabCaptions.code = \FBSmallCapsFigTabCaptions@setup{#1} , + SuppressWarning.default:n = {true} , + SuppressWarning.code = \FBSuppressWarning@setup{#1} , + INGuillSpace.default:n = {true} , + INGuillSpace.code = \FBINGuillSpace@setup{#1} , + InnerGuillSingle.if = FBInnerGuillSingle , + EveryParGuill.default:n = {open} , + EveryParGuill.code = \FBEveryParGuill@setup{#1} , + EveryLineGuill.default:n = {open} , + EveryLineGuill.code = \FBEveryLineGuill@setup{#1} , + UnicodeNoBreakSpaces.default:n = {true} , + UnicodeNoBreakSpaces.code = \FBUnicodeNoBreakSpaces@setup{#1} , + og.code = \FBog@setup{#1} , + fg.code = \FBfg@setup{#1} , +} +\newcommand*{\frenchsetup}[1]{% + \SetKeys[FBsetup]{#1}% +}% +\@onlypreamble\frenchsetup +\let\frenchbsetup\frenchsetup +\@onlypreamble\frenchbsetup +\newcommand*{\FBStandardLayout@setup}[1]% + {\ifFB@mainlanguage@FR + \csname FBStandardLayout#1\endcsname + \else + \PackageWarning{french.ldf}% + {Option `StandardLayout' skipped:\MessageBreak + French is *not* babel's last option.\MessageBreak + Reported}% + \fi + \ifFBStandardLayout + \FBStandardListSpacingtrue + \FBStandardItemizeEnvtrue + \FBStandardItemLabelstrue + \FBStandardEnumerateEnvtrue + \FBIndentFirstfalse + \FBFrenchFootnotesfalse + \FBAutoSpaceFootnotesfalse + \else + \FBStandardListSpacingfalse + \FBStandardItemizeEnvfalse + \FBStandardItemLabelsfalse + \FBStandardEnumerateEnvfalse + \FBIndentFirsttrue + \FBFrenchFootnotestrue + \FBAutoSpaceFootnotestrue + \fi + } +\newcommand*{\FBGlobalLayout@setup}[1]% + {\ifFB@mainlanguage@FR + \csname FBGlobalLayoutFrench#1\endcsname + \else + \PackageWarning{french.ldf}% + {Option `GlobalLayoutFrench' skipped:\MessageBreak + French is *not* babel's last option.\MessageBreak + Reported}% + \fi + } +\newcommand*{\FB@ListOldLayout@setup}[1]% + {\csname FBListOldLayout#1\endcsname + \ifFBListOldLayout + \FBStandardEnumerateEnvtrue + \renewcommand*{\FrenchLabelItem}{\textendash}% + \fi + } +\newcommand*{\FB@CompactItemize@setup}[1]% + {\csname FBCompactItemize#1\endcsname + \ifFBCompactItemize + \FBStandardItemizeEnvfalse + \FBStandardEnumerateEnvfalse + \else + \FBStandardItemizeEnvtrue + \FBStandardEnumerateEnvtrue + \fi + } +\newcommand*{\FBStandardLists@setup}[1]% + {\csname FBStandardLists#1\endcsname + \ifFBStandardLists + \FBStandardListSpacingtrue + \FBStandardItemizeEnvtrue + \FBStandardEnumerateEnvtrue + \FBStandardItemLabelstrue + \else + \FBStandardListSpacingfalse + \FBStandardItemizeEnvfalse + \FBStandardEnumerateEnvfalse + \FBStandardItemLabelsfalse + \fi + } +\newcommand*{\FBThinColonSpace@setup}[1]% + {\csname FBThinColonSpace#1\endcsname + \ifFBThinColonSpace + \renewcommand*{\FBcolonspace}{\FBthinspace}% + \fi + } +\newcommand*{\FBOldFigTabCaptions@setup}[1]% + {\csname FBOldFigTabCaptions#1\endcsname + \ifFBOldFigTabCaptions + \def\FB@capsep@fix{\babel@save\FBCaption@Separator + \def\FBCaption@Separator{\CaptionSeparator}}% \addto\extrasfrench{\FB@capsep@fix}% \ifdefined\extrasacadian \addto\extrasacadian{\FB@capsep@fix}% \fi - \fi}% - \define@key{FB}{SmallCapsFigTabCaptions}[true]% - {\csname FBSmallCapsFigTabCaptions#1\endcsname - \ifFBSmallCapsFigTabCaptions - \else \let\FBfigtabshape\relax \fi}% - \define@key{FB}{SuppressWarning}[true]% - {\csname FBSuppressWarning#1\endcsname - \ifFBSuppressWarning - \renewcommand{\FBWarning}[1]{}% - \fi}% - \define@key{FB}{INGuillSpace}[true]% - {\csname FBINGuillSpace#1\endcsname - \ifFBINGuillSpace - \renewcommand*{\FBguillspace}{\space}% - \fi}% - \define@key{FB}{InnerGuillSingle}[true]% - {\csname FBInnerGuillSingle#1\endcsname}% - \define@key{FB}{EveryParGuill}[open]% - {\expandafter\let\expandafter - \FBeveryparguill\csname FBguill#1\endcsname - \ifx\FBeveryparguill\FBguillopen - \else\ifx\FBeveryparguill\FBguillclose - \else\ifx\FBeveryparguill\FBguillnone - \else - \let\FBeveryparguill\FBguillopen - \FBWarning{Wrong value for `EveryParGuill': - try `open',\MessageBreak - `close' or `none'. Reported}% - \fi - \fi - \fi}% - \define@key{FB}{EveryLineGuill}[open]% - {\ifFB@luatex@punct - \expandafter\let\expandafter - \FBeverylineguill\csname FBguill#1\endcsname - \ifx\FBeverylineguill\FBguillopen - \else\ifx\FBeverylineguill\FBguillclose - \else\ifx\FBeverylineguill\FBguillnone - \else - \let\FBeverylineguill\FBguillnone - \FBWarning{Wrong value for `EveryLineGuill': - try `open',\MessageBreak - `close' or `none'. Reported}% - \fi - \fi - \fi - \else - \FBWarning{Option `EveryLineGuill' skipped:% - \MessageBreak this option is for - LuaTeX *only*.\MessageBreak Reported}% - \fi}% - \define@key{FB}{UnicodeNoBreakSpaces}[true]% - {\ifFB@luatex@punct - \csname FBucsNBSP#1\endcsname - \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi - \else - \FBWarning{Option `UnicodeNoBreakSpaces' skipped:% - \MessageBreak this option is for - LuaTeX *only*.\MessageBreak Reported}% - \fi - }% - \def\FB@parse#1#2\endparse{\def\FB@second{#2}}% - \define@key{FB}{og}% - {\ifFBunicode - \ifFB@luatex@punct - \FB@addGUILspace=1 \relax - \fi - \ifFB@xetex@punct - \XeTeXcharclass"13 = \FB@guilo - \XeTeXcharclass"AB = \FB@guilo - \XeTeXcharclass"A0 = \FB@guilnul - \XeTeXcharclass"202F = \FB@guilnul - \fi - \ifFB@active@punct - \FBWarning{Option og=« not supported with this version - of\MessageBreak LuaTeX/XeTeX; reported}% - \fi - \else - \newcommand*{\FB@@og}{% - \ifFBfrench - \ifFB@spacing\FB@og\ignorespaces - \else\guillemotleft - \fi - \else\guillemotleft\fi}% - \AtBeginDocument{% - \ifdefined\uc@dclc - \uc@dclc{171}{default}{\FB@@og}% - \else - \FB@parse#1\endparse - \ifx\FB@second\@empty - \ifdefined\mule@def - \mule@def{11}{\FB@@og}% - \else - \ifdefined\DeclareInputText - \@tempcnta`#1\relax - \DeclareInputText{\the\@tempcnta}{\FB@@og}% - \else - \FBWarning{Option `og' requires package - inputenc;\MessageBreak reported}% - \fi - \fi - \else - \DeclareUnicodeCharacter{00AB}{\FB@@og}% - \fi - \fi}% - \fi - }% - \define@key{FB}{fg}% - {\ifFBunicode - \ifFB@luatex@punct - \FB@addGUILspace=1 \relax - \fi - \ifFB@xetex@punct - \XeTeXcharclass"14 = \FB@guilf - \XeTeXcharclass"BB = \FB@guilf - \XeTeXcharclass"A0 = \FB@guilnul - \XeTeXcharclass"202F = \FB@guilnul - \fi - \ifFB@active@punct - \FBWarning{Option fg=» not supported with this version - of\MessageBreak LuaTeX/XeTeX; reported}% - \fi - \else - \newcommand*{\FB@@fg}{% - \ifFBfrench - \ifFB@spacing\FB@fg - \else\guillemotright - \fi - \else\guillemotright\fi}% - \AtBeginDocument{% - \ifdefined\uc@dclc - \uc@dclc{187}{default}{\FB@@fg}% - \else - \FB@parse#1\endparse - \ifx\FB@second\@empty - \ifdefined\mule@def - \mule@def{27}{{\FB@@fg}}% - \else - \ifdefined\DeclareInputText - \@tempcnta`#1\relax - \DeclareInputText{\the\@tempcnta}{\FB@@fg}% - \else - \FBWarning{Option `fg' requires package - inputenc;\MessageBreak reported}% - \fi - \fi - \else - \DeclareUnicodeCharacter{00BB}{\FB@@fg}% - \fi - \fi}% - \fi - }% -} + \fi + } +\newcommand*{\FBSmallCapsFigTabCaptions@setup}[1]% + {\csname FBSmallCapsFigTabCaptions#1\endcsname + \ifFBSmallCapsFigTabCaptions + \else + \let\FBfigtabshape\relax + \fi + } +\newcommand*{\FBSuppressWarning@setup}[1]% + {\csname FBSuppressWarning#1\endcsname + \ifFBSuppressWarning + \renewcommand{\FBWarning}[1]{}% + \fi + } +\newcommand*{\FBINGuillSpace@setup}[1]% + {\csname FBINGuillSpace#1\endcsname + \ifFBINGuillSpace + \renewcommand*{\FBguillspace}{\space}% + \fi + } +\newcommand*{\FBEveryParGuill@setup}[1]% + {\expandafter\let\expandafter + \FBeveryparguill\csname FBguill#1\endcsname + \ifx\FBeveryparguill\FBguillopen + \else\ifx\FBeveryparguill\FBguillclose + \else\ifx\FBeveryparguill\FBguillnone + \else + \let\FBeveryparguill\FBguillopen + \FBWarning{Wrong value for `EveryParGuill': + try `open',\MessageBreak + `close' or `none'. Reported}% + \fi + \fi + \fi + } +\newcommand*{\FBEveryLineGuill@setup}[1]% + {\ifFB@luatex@punct + \expandafter\let\expandafter + \FBeverylineguill\csname FBguill#1\endcsname + \ifx\FBeverylineguill\FBguillopen + \else\ifx\FBeverylineguill\FBguillclose + \else\ifx\FBeverylineguill\FBguillnone + \else + \let\FBeverylineguill\FBguillnone + \FBWarning{Wrong value for `EveryLineGuill': + try `open',\MessageBreak + `close' or `none'. Reported}% + \fi + \fi + \fi + \else + \FBWarning{Option `EveryLineGuill' skipped:% + \MessageBreak this option is for + LuaTeX *only*.\MessageBreak Reported}% + \fi + } +\newcommand*{\FBUnicodeNoBreakSpaces@setup}[1]% + {\ifFB@luatex@punct + \csname FBucsNBSP#1\endcsname + \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi + \else + \FBWarning{Option `UnicodeNoBreakSpaces' skipped:% + \MessageBreak this option is for + LuaTeX *only*.\MessageBreak Reported}% + \fi + }% +\def\FB@parse#1#2\endparse{\def\FB@second{#2}}% +\newcommand*{\FB@@og}% + {\ifFBfrench + \ifFB@spacing \FB@og\ignorespaces + \else \guillemotleft + \fi + \else \guillemotleft + \fi + } +\newcommand*{\FB@@fg}% + {\ifFBfrench + \ifFB@spacing \FB@fg + \else \guillemotright + \fi + \else \guillemotright + \fi + } +\newcommand*{\FBog@setup}[1]% + {\ifFBunicode + \ifFB@luatex@punct + \FB@addGUILspace=1 \relax + \fi + \ifFB@xetex@punct + \XeTeXcharclass"13 = \FB@guilo + \XeTeXcharclass"AB = \FB@guilo + \XeTeXcharclass"A0 = \FB@guilnul + \XeTeXcharclass"202F = \FB@guilnul + \fi + \ifFB@active@punct + \FBWarning{Option og=« not supported with this version of + \MessageBreak LuaTeX/XeTeX; reported}% » + \fi + \else + \AtBeginDocument{% + \ifdefined\uc@dclc + \uc@dclc{171}{default}{\FB@@og}% + \else + \FB@parse#1\endparse + \ifx\FB@second\@empty + \ifdefined\mule@def + \mule@def{11}{\FB@@og}% + \else + \ifdefined\DeclareInputText + \@tempcnta`#1\relax + \DeclareInputText{\the\@tempcnta}{\FB@@og}% + \else + \FBWarning{Option `og' requires package + inputenc;\MessageBreak reported}% + \fi + \fi + \else + \DeclareUnicodeCharacter{00AB}{\FB@@og}% + \fi + \fi}% + \fi + } +\newcommand*{\FBfg@setup}[1]% + {\ifFBunicode + \ifFB@luatex@punct + \FB@addGUILspace=1 \relax + \fi + \ifFB@xetex@punct + \XeTeXcharclass"14 = \FB@guilf + \XeTeXcharclass"BB = \FB@guilf + \XeTeXcharclass"A0 = \FB@guilnul + \XeTeXcharclass"202F = \FB@guilnul + \fi + \ifFB@active@punct + \FBWarning{Option fg=» not supported with this version of + \MessageBreak LuaTeX/XeTeX; reported}% + \fi + \else + \AtBeginDocument{% + \ifdefined\uc@dclc + \uc@dclc{187}{default}{\FB@@fg}% + \else + \FB@parse#1\endparse + \ifx\FB@second\@empty + \ifdefined\mule@def + \mule@def{27}{{\FB@@fg}}% + \else + \ifdefined\DeclareInputText + \@tempcnta`#1\relax + \DeclareInputText{\the\@tempcnta}{\FB@@fg}% + \else + \FBWarning{Option `fg' requires package + inputenc;\MessageBreak reported}% + \fi + \fi + \else + \DeclareUnicodeCharacter{00BB}{\FB@@fg}% + \fi + \fi}% + \fi + } \newcommand*{\FBprocess@options}{% \@ifpackageloaded{enumitem}{% \ifFBStandardItemizeEnv @@ -1547,7 +1553,7 @@ {\ifnprt@autolanguage \providecommand*{\npstylefrench}{}% \ifFBThinSpaceInFrenchNumbers - \renewcommand*{\FBthousandsep}{\,}% + \renewcommand*{\FBthousandsep}{\FBthinspace}% \fi \g@addto@macro\npstylefrench{\npthousandsep{\FBthousandsep}}% \fi @@ -1687,11 +1693,11 @@ } \def\listFB#1#2{\listORI{#1}{\FB@listVsettings #2}} \let\endlistFB\endlistORI -\newcommand*{\FrenchLabelItem}{\textemdash} -\newcommand*{\Frlabelitemi}{\FrenchLabelItem} -\newcommand*{\Frlabelitemii}{\FrenchLabelItem} -\newcommand*{\Frlabelitemiii}{\FrenchLabelItem} -\newcommand*{\Frlabelitemiv}{\FrenchLabelItem} +\renewcommand*{\FrenchLabelItem}{\textemdash} +\renewcommand*{\Frlabelitemi}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemii}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemiii}{\FrenchLabelItem} +\renewcommand*{\Frlabelitemiv}{\FrenchLabelItem} \newdimen\listindentFB \setlength{\listindentFB}{-1pt} \newdimen\descindentFB @@ -1854,26 +1860,6 @@ \@afterindenttrue \fi} \addto\extrasfrench{\bbl@frenchindent} -\AtBeginDocument{% - \@ifpackageloaded{bigfoot}% - {\PackageWarning{french.ldf}% - {bigfoot package in use.\MessageBreak - babel-french will NOT customise footnotes;% - \MessageBreak reported}}% - {\let\@footnotemarkORI\@footnotemark - \def\@footnotemarkFB{\leavevmode\unskip\unkern - \,\@footnotemarkORI}% - \ifFBAutoSpaceFootnotes - \let\@footnotemark\@footnotemarkFB - \fi}% - \@ifpackageloaded{footnotebackref}% - {\FBFrenchFootnotesfalse - \PackageWarning{french.ldf}% - {footnotebackref package loaded.\MessageBreak - babel-french will NOT customise footnotes;% - \MessageBreak reported}}% - {}% - } \newdimen\parindentFFN \parindentFFN=10in \newcommand*{\dotFFN}{.} @@ -1919,10 +1905,28 @@ \llap{\@thefnmark}\dotFFN\kernFFN \fi} \providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1} +\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font} +\def\@footnotemarkFB{\leavevmode\unskip\unkern + \protect\FBfnmarkspace\@footnotemarkORI}% \providecommand\localleftbox[1]{} \AtBeginDocument{% - \@ifpackageloaded{bigfoot}{}% - {\ifdim\parindentFFN<10in + \@ifpackageloaded{footnotebackref}% + {\FBFrenchFootnotesfalse + \PackageWarning{french.ldf}% + {footnotebackref package loaded.\MessageBreak + babel-french will NOT customise footnotes;% + \MessageBreak reported}}% + {}% + \@ifpackageloaded{bigfoot}% + {\PackageWarning{french.ldf}% + {bigfoot package in use.\MessageBreak + babel-french will NOT customise footnotes;% + \MessageBreak reported}}% + {\let\@footnotemarkORI\@footnotemark + \ifFBAutoSpaceFootnotes + \let\@footnotemark\@footnotemarkFB + \fi + \ifdim\parindentFFN<10in \else \parindentFFN=\parindent \ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi @@ -1980,7 +1984,7 @@ \localleftbox{\FBeveryline@quote}}% \fi }% -} + } \newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue} \newcommand*{\FrenchFootnotes}{\FBFrenchFootnotestrue} \newcommand*{\StandardFootnotes}{\FBFrenchFootnotesfalse} diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf index 8967715209d..59dcd15ac8c 100644 --- a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf +++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf @@ -10,11 +10,11 @@ %% ------------------------------------------------------------- %% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". @@ -24,7 +24,7 @@ %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr> %% \ProvidesLanguage{frenchb} - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] \def\bbl@tempa{frenchb} \ifx\CurrentOption\bbl@tempa \chardef\l@frenchb\l@french diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua index bc084cc35df..3149b146ffc 100644 --- a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua +++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua @@ -1,6 +1,6 @@ --[[ File `frenchb.lua’ generated from frenchb.dtx - [2024-02-29 v3.5s French support from the babel system] + [2024-05-24 v3.6a French support from the babel system] Copyright © 2014-2024 Daniel Flipo <daniel (dot) flipo (at) free (dot) fr> License LPPL: see french.ldf. |