texlive[69204] Master: babel-french (23dec23)

commits+karl at tug.org commits+karl at tug.org
Sat Dec 23 22:44:13 CET 2023


Revision: 69204
          https://tug.org/svn/texlive?view=revision&revision=69204
Author:   karl
Date:     2023-12-23 22:44:13 +0100 (Sat, 23 Dec 2023)
Log Message:
-----------
babel-french (23dec23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/babel-french/README.md
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
    trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
    trunk/Master/tlpkg/libexec/ctan2tds

Removed Paths:
-------------
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/babel-french/README.md	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/doc/generic/babel-french/README.md	2023-12-23 21:44:13 UTC (rev 69204)
@@ -14,7 +14,6 @@
 
 The bundle consists of the following files:
 
-* frenchb.ins: installation file to unpack the language definition files,
 * frenchb.dtx: packed language definition files and documentation,
 * frenchb.pdf: unpacked documentation for babel-french,
 * frenchb-doc.pdf: comprehensive documentation in French,
@@ -32,7 +31,7 @@
 If the latest version of this package is not included in your LaTeX
 distribution, do the following:
 
-* issue "luatex frenchb.ins" to unpack the language definition files;
+* issue "luatex frenchb.dtx" to unpack the language definition files;
 * copy the files frenchb.lua, french.ldf, frenchb.ldf, francais.ldf,
   acadian.ldf and canadien.ldf to a location where TeX can find them
   (default location: $TEXMF/tex/generic/babel-french/);

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex	2023-12-23 21:44:13 UTC (rev 69204)
@@ -1,5 +1,4 @@
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b, lang=fr-FR}
+\DocumentMetadata{pdfstandard=A-2b, lang=fr-FR}
 \documentclass[a4paper,12pt,german,english,french]{article}
 
 % LuaTeX ONLY!
@@ -28,7 +27,7 @@
 
 %%% *** APRÈS fontspec ***
 \usepackage{babel}
-\frenchbsetup{og=«, fg=», AutoSpacePunctuation=false}
+\frenchbsetup{og=«, fg=»}
 \frenchbsetup{ListItemsAsPar}
 
 \usepackage{microtype}
@@ -121,7 +120,7 @@
 
 \title{Mode d’emploi du module \ext{babel-french}}
 \author{\href{mailto:daniel.flipo at free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.5q}
+\newcommand*{\latestversion}{3.5r}
 \date{Version {\latestversion} -- \today}
 
 \begin{document}
@@ -158,8 +157,6 @@
   \vspace{-\baselineskip}\noindent
   \descindentFB=0pt
   \begin{description}
-  \item[30 janvier 2017] Le comportement par défaut de la commande
-    |\frquote{}| sous LuaTeX est modifié, voir p.~\pageref{frquote}.
   \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}.
@@ -184,6 +181,8 @@
     voir p.~\pageref{decimalmathcomma}.
   \item[8 mars 2023] Correction de bug dans les listes,
     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.
   \end{description}
 \end{abstract}
 \egroup
@@ -268,9 +267,9 @@
   commandes\\
   |\usepackage[T1]{fontenc}|\\
   |\usepackage{lmodern}|\\
-  la déclaration du codage d’entrée n’est nécessaire que si celui-ci n’est
-  pas le codage par défaut (|utf8| depuis 2018), par exemple |latin9| ou
-  |latin1| ou |applemac|, etc.\\
+  rapellons que la déclaration du codage d’entrée n’est nécessaire que si
+  celui-ci n’est pas le codage par défaut (|utf8| depuis 2018), par exemple
+  |latin9| ou |latin1| ou |applemac|, etc.\\
   |\usepackage[latin9]{inputenc}|
 \item avec LuaLaTeX ou XeLaTeX on peut ajouter |\usepackage{fontspec}| mais
   ceci est devenu facultatif avec les formats LaTeX récents (2017).
@@ -391,9 +390,9 @@
   ajoutée en français ; lorsque l’ajout échoue, un message est affiché dans le
   fichier \file{.log}.
 
-  Certaines classes ou extensions modifient la présentation des légendes;
-  parmi elles, les classes (\cls{memoir}, \cls{beamer}, koma-script et AMS
-  et les extensions(\ext{caption} et \ext{floatrow} sont compatibles avec
+  Certaines classes ou extensions modifient la présentation des légendes ;
+  parmi elles, les classes \cls{memoir}, \cls{beamer}, koma-script et AMS
+  et les extensions \ext{caption} et \ext{floatrow} sont compatibles avec
   \ext{babel-french}.
 
   Un avertissement est inséré dans le fichier \file{.log} lorsqu’il y a risque
@@ -405,7 +404,6 @@
 En ce qui concerne les conventions typographiques locales (variables avec la
 langue) la commande |\selectlanguage{french}|
 produit les effets suivants :
-\enlargethispage*{\baselineskip}
 \begin{itemize}
 
 \item Les motifs de césures françaises sont activés.
@@ -421,14 +419,6 @@
   qui disposent d’un mécanisme permettant d’accéder aux mêmes fonctionnalités
   sans recours aux caractères actifs.
 
-\item la définition de |\dots| est modifiée pour
-  supprimer l’espace qui suit (cet espace est gênant devant une
-  parenthèse par exemple\dots)%
-  \footnote{Certains auteurs préfèrent en français «...» (codé \code{...}
-    sans espace) à «\dots» (codé \cs{dots}). Le mieux est d’utiliser
-    directement le caractère … dans le texte source dès lors que celui-ci est
-    codé en utf-8.}.
-
 \item La commande |\today| retourne la date en français.
 
 \item Les titres («caption names» en anglais) sont traduits en
@@ -436,8 +426,24 @@
   « Chapitre » au lieu de « Chapter ». Voir section~\ref{ssec:captions}
   p.~\pageref{ssec:captions} comment modifier ces intitulés.
 
+\item La définition de |\dots| est modifiée%
+\footnote{en mode texte seulement, en fait c’est \cs{textellipsis} qui est
+  modifiée.}, \emph{uniquement} avec les moteurs 8-bits (pdftex), afin de
+  supprimer l’espace qui suit, espace gênant devant une parenthèse par exemple.
+  Ceci dit, la commande |\dots| \emph{ne devrait plus être utilisée}
+  dès lors que le texte source est codé en utf-8 :
+  il est plus facile de saisir |…|%
+\footnote{Il s’agit du glyphe \texttt{…} obtenu par exemple grâce à une touche
+  \texttt{Compose}, \emph{pas} de \texttt{...} (trois points consécutifs).}
+  que |\dots|, le texte source est plus lisible et on évite les
+  problèmes d’avalement des espaces après une commande.
+  Avec les moteurs Unicode (xetex, luatex), la commande |\dots| standard
+  utilise le glyphe de la police de sortie sans ajout d’espace,
+  \ext{babel-french} ne la redéfinit donc pas.
+
 \end{itemize}
 
+\vspace{\parskip}
 La commande |\selectlanguage{english}| ramène
 au comportement standard de LaTeX (typographie américaine).
 
@@ -473,6 +479,7 @@
 
   Pour les citations imbriquées, plusieurs présentations sont proposées selon
   les options choisies :
+  \enlargethispage*{\baselineskip}
   \begin{itemize}
   \item Les citations internes sont balisées par des guillemets anglais
     ``comme ceci’’ (recommandation de Aurel Ramat) sauf si
@@ -493,10 +500,9 @@
   ce faire, il suffit de coder la citation interne avec |\frquote*{}| au lieu
   de |\frquote{}|.
 
-\pagebreak
 Exemple de citation imbriquée :
 
-\vspace{0.5\baselineskip}
+\vspace{\parskip}
 \begin{minipage}[t]{.47\textwidth}
 \hspace*{\fill}%
 \fbox{\begin{minipage}[t]{.95\textwidth}
@@ -532,7 +538,7 @@
 \hspace*{\fill}LuaLaTeX + \fbo{EveryLineGuill=open}\hspace*{\fill}%
 \end{minipage}
 
-\vspace{0.5\baselineskip}
+\vspace{\parskip}
 Le codage est le suivant :
 {\ttfamily\ColorVerb Xavier raconte… |\frquote{|Au moment… l’hôtesse m’a
  dit tout bonnement : |\frquote*{|Je suis désolée, …  en anglais.|}}|}
@@ -621,7 +627,6 @@
   coupure sur les espaces mais d’autoriser éventuellement celle du mois
   (jan-vier, dé-cembre, …) qui est interdite par défaut.
 
-\enlargethispage{\baselineskip}
 \item En mode mathématique, la virgule est toujours suivie d’une espace car
   elle est traitée comme un signe de ponctuation et non comme une virgule
   décimale%
@@ -638,9 +643,9 @@
   corps du document \emph{en mode texte} et dans une partie \emph{en français},
   son effet survit à un changement de langue (passage en anglais et retour en
   français par exemple), sauf bien sûr si elle est placée dans un groupe.
-
    Une solution alternative consiste à utiliser l’extension \ext{icomma}.
 
+\vspace{\parskip}
 \item La commande |\nombre|, destinée à formater
   automatiquement les nombres entiers ou décimaux par tranches de
   trois chiffres séparées par des espaces en français et par des
@@ -656,15 +661,20 @@
 
 \end{itemize}
 
+\vspace{\parskip}
 En ajoutant |\usepackage{xspace}| dans le préambule, les espaces suivant
 les commandes
 |\ier|,…, |\ieres|,
 |\ieme|, |\iemes|,
-|\fg| et |\dots| sont
-respectés sans avoir à les forcer par des |{}| ou
-des~\code{\boi\textvisiblespace}. Noter cependant que l’auteur de \pkg{xspace}
-ne recommande plus vraiment son utilisation, aussi peut-on préférer
-\emph{ne pas charger} \pkg{xspace} et gérer les espaces soi-même :
+|\fg| et |\dots| sont respectés sans avoir à les forcer par des |{}| ou
+des~\code{\boi\textvisiblespace}.  Le recours à l’extension \pkg{xspace} est
+cependant une \emph{fausse simplification} car \emph{certaines} commandes sont
+affectées mais \emph{pas toutes}. Un exemple extrême est fourni par la
+commande |\dots| : lorsqu’elle est redéfinie par \pkg{babel-french} (moteurs
+8-bits et en français seulement) on peut omettre la paire d’accolades, mais
+celle-ci est indispensable dans une partie en anglais par exemple ou avec les
+moteurs Unicode (|\dots| garde sa définition standard)… Il me paraît plus simple
+d’éviter le recours à \pkg{xspace} et de gérer les espaces soi-même :
 « |les 1\ier, 2 et 3~mai| » ou « |le 1\ier~mai| » (espace insécable).
 
 \section{Personnalisation}
@@ -1079,7 +1089,7 @@
 
 \begin{description}
 
-\item [SmallCapsFigTabcaptions=false (true*)]; si cette option est mise
+\item [SmallCapsFigTabCaptions=false (true*)]; si cette option est mise
   à \fbo{false}, le recours aux petites capitales dans les intitulés des
   légendes de figures et tables est supprimé, on obtient « Figure » et
   « Table » au lieu de « \textsc{Figure} » et « \textsc{Table} ».
@@ -1086,7 +1096,7 @@
   Noter que le même résultat peut être obtenu en définissant |\FBfigtabshape|
   comme |\relax| avant le chargement de \ext{babel}.\hlabel{scfigtab}
 
-\item [CustomiseFigTabcaptions=false (true*)] ; si cette option est mise
+\item [CustomiseFigTabCaptions=false (true*)] ; si cette option est mise
   à \fbo{false}, le séparateur défini par |\CaptionSeparator| est remplacé par
   le séparateur par défaut (deux-points) dans les légendes des figures et des
   tables, ceci pour toutes les langues.  En français, \ext{babel-french} ajoute
@@ -1093,12 +1103,12 @@
   si possible une espace insécable adéquate devant le deux-points ou affiche
   un message dans le fichier \file{.log}.
 
-\item [OldFigTabcaptions=true (false)] peut être utilisée pour retrouver
+\item [OldFigTabCaptions=true (false)] peut être utilisée pour retrouver
   la présentation antérieure (pré~3.0) des légendes de figures et tables,
   c.-à-d. |\CaptionSeparator| en français et deux-points pour les autres
   langues.  Cette option ne fonctionne que pour les classes standard
   \cls{article}, \cls{report}, \cls{book} et rend inopérante l’option
-  \fbo{CustomiseFigTabcaptions}.
+  \fbo{CustomiseFigTabCaptions}.
 
 \end{description}
 
@@ -1271,7 +1281,7 @@
   gauche au lieu d’être décalées vers la droite.
 
 % Illustration de \parindent et \listindentFB
-\vspace{.5\baselineskip}
+\vspace{\parskip}
 \begin{minipage}[t]{.45\textwidth}
 \fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
         \FBListItemsAsParfalse \parindent=0pt \listindentFB=1.5em
@@ -1372,7 +1382,7 @@
   |\setlength{\descindentFB}{0pt}|.
 
 % Illustration de \parindent et \descindentFB
-\vspace{.5\baselineskip}
+\vspace{\parskip}
 \begin{minipage}[t]{.45\textwidth}
 \fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
         \FBListItemsAsParfalse
@@ -1430,7 +1440,7 @@
 \ref{sec:Perso} (listes \env{description}).
 
 % Illustration de l’option \fbo{ListItemsAsPar}
-\vspace{.5\baselineskip}
+\vspace{\parskip}
 \begin{minipage}[t]{.45\textwidth}
 \fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
         \FBListItemsAsParfalse \parindent=1.5em \listindentFB=1.5em
@@ -1580,13 +1590,19 @@
 détails.
 
 \vspace{\parskip}
-La version 3.5q corrige un bug concernant les listes signalé par Denis Bitouzé :
-les alinéas inclus dans une liste n’étaient pas distinguables.  Dorénavant
-|\listparindent| est défini comme |\parindent| et si|\parskip > 0|, |\parsep|
-est défini comme |\parskip|.  Il est possible de revenir à l’ancienne
-présentation en ajoutant \emph{dans l’environnement de liste} les commandes
-|\parskip=0pt| et |\parindent=0pt|.\hlabel{par-in-lists}
+La version 3.5q corrige un bug concernant les listes signalé par Denis
+Bitouzé : les alinéas inclus dans une liste n’étaient pas distinguables.
+Dorénavant |\listparindent| est défini comme |\parindent| et si|\parskip > 0|,
+|\parsep| est défini comme |\parskip|.  Il est possible de revenir
+à l’ancienne présentation en ajoutant \emph{dans l’environnement de liste}
+les commandes |\parskip=0pt| et |\parindent=0pt|.\hlabel{par-in-lists}
 
+\vspace{\parskip}
+La version 3.5r est compatible avec \pkg{ucharclasses.sty} qui est maintenant
+chargé avec l’extension \pkg{fontsetup} lorsque le moteur XeTeX est utilisé.
+D’autre part le fichier \file{frenchb.ins} n’est plus nécessaire pour extraire
+les fichiers \file{*.ldf} de \file{frenchb.dtx} (voir~\file{README.md}).
+
 \subsection{Changements entre les versions  3.4d et 3.3d}
 \label{ssec:changes-3.4}
 
@@ -2005,7 +2021,7 @@
   document en français ;
 
 \item \biblatex{}, associé à \biber{}, permet le traitement des fichiers
-  ~\file{.bib} codés en UTF-8 ce qui facilite grandement la coexistence
+  ~\file{.bib} codés en utf-8 ce qui facilite grandement la coexistence
   de références à des ouvrages en français, en russe et en grec par exemple ;
 
 \item \biblatex{} possède des options qui remplacent de nombreuses extensions
@@ -2042,7 +2058,7 @@
 meilleur rendu typographique.
 
 Les points de suspensions sont saisis |...| avec
-\ext{e-french} et |\dots| avec \ext{babel-french}.
+\ext{e-french} et |…| (ou |\dots|) avec \ext{babel-french}.
 
 Les commandes suivantes peuvent être ajoutées au préambule pour
 émuler certaines commandes de \ext{e-french} :
@@ -2062,7 +2078,7 @@
 \file{french2b} opère une adaptation \emph{partielle} d’un fichier conçu pour
 \ext{e-french} facilitant sa compilation avec \ext{babel-french}.  L’appel
 à \ext{e-french} est remplacé en un appel à \ext{babel-french}, les guillemets
-|<<| et |>>| sont convertis en |\og| et |\fg| et les |...| en |\dots|, enfin
+|<<| et |>>| sont convertis en |\og| et |\fg| et les |...| en |…|, enfin
 quelques commandes spécifiques à \ext{e-french} sont ajoutées dans le
 préambule.
 

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2023-12-23 21:44:13 UTC (rev 69204)
@@ -1,6 +1,72 @@
-%\iffalse
-%    Tell the LaTeX system who we are and write an entry on the
-%    transcript.
+% \iffalse meta-comment
+%
+% Copyright © 1996-2023 Daniel Flipo.
+%
+% This program can be distributed and/or modified under the terms
+% 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.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% Please report errors to: daniel (dot) flipo (at) free (dot) fr
+%
+%<*batch>
+%<*gobble>
+\ifx\jobname\relax\let\documentclass\undefined\fi
+\ifx\documentclass\undefined
+\csname fi\endcsname
+%</gobble>
+\input docstrip.tex
+\keepsilent
+\let\MetaPrefix\relax
+\preamble
+This is a generated file part of the babel-french bundle
+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
+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
+version 2003/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer of this work is Daniel Flipo.
+
+Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+
+\endpreamble
+\postamble
+\endpostamble
+\let\MetaPrefix\DoubleperCent
+\askforoverwritefalse
+\generate{\file{french.ldf}{\from{frenchb.dtx}{french}}
+          \file{acadian.ldf}{\from{frenchb.dtx}{acadian}}
+          \file{canadien.ldf}{\from{frenchb.dtx}{canadien}}
+          \file{frenchb.ldf}{\from{frenchb.dtx}{frenchb}}
+          \file{francais.ldf}{\from{frenchb.dtx}{francais}}
+         }
+\def\MetaPrefix{-- }
+\def\luapostamble{\MetaPrefix\space End of File frenchb.lua.}
+\usepostamble\luapostamble
+\nopreamble
+\generate{\file{frenchb.lua}{\from{frenchb.dtx}{lua}}
+         }
+\endbatchfile
+%</batch>
+%<*gobble>
+\fi
+\expandafter\ifx\csname @currname\endcsname\empty
+\csname fi\endcsname
+%</gobble>
+%
 %<*dtx>
 \ProvidesFile{frenchb.dtx}
 %</dtx>
@@ -11,26 +77,16 @@
 %<frenchb>\ProvidesLanguage{frenchb}
 %<lua>--[[
 %<lua>   File `frenchb.lua’ generated from frenchb.dtx
-         [2023/03/08 v3.5q French support from the babel system]
-%<*internal>
-\iffalse
-%</internal>
-%<*lua>
-   Copyright © 2014-2022 Daniel Flipo
-   <daniel (dot) flipo (at) free (dot) fr>
-   License LPPL: see french.ldf.
---]]
-%</lua>
-%<*internal>
-\fi
-%</internal>
-%<*dtx>
-%%  File `frenchb.dtx’
-%</dtx>
+         [2023-12-19 v3.5r French support from the babel system]
+%<lua>   Copyright © 2014-2023 Daniel Flipo
+%<lua>   <daniel (dot) flipo (at) free (dot) fr>
+%<lua>   License LPPL: see french.ldf.
+%<lua>--]]
+%
 %<*dtx|french>
 %%
 %%  Babel package for LaTeX version 2e
-%%  Copyright © 1996-2022
+%%  Copyright © 1996-2023
 %%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
 %%
 %</dtx|french>
@@ -39,7 +95,8 @@
 %%  code for the French language definition file.
 %%
 %</dtx>
-%<*filedriver>
+%
+%<*driver>
 \DocumentMetadata{pdfstandard=A-2b, lang=en-US}
 \documentclass[a4paper]{ltxdoc}
 \usepackage[left=38mm,right=38mm,top=30mm,bottom=50mm]{geometry}
@@ -88,6 +145,7 @@
                              minus.8\fontdimen4\font}
 \hyphenation{Lua-TeX Lua-LaTeX Xe-LaTeX}
 \lefthyphenmin=2 \righthyphenmin=3
+\setlength{\parindent}{0pt}
 \RecordChanges
 \AtEndDocument{%
    \clearpage
@@ -98,7 +156,6 @@
    \PrintChanges
 }
 \begin{document}
-\setlength{\parindent}{0pt}
 \GetFileInfo{frenchb.dtx}
 \begin{center}
   \textbf{\Large A Babel language definition file for French}\\[2mm]^^A\]
@@ -112,8 +169,11 @@
 \clearpage
 \DocInput{frenchb.dtx}
 \end{document}
-%</filedriver>
-%\fi
+%</driver>
+%<*gobble>
+\fi
+%</gobble>
+% \fi
 %
 %  \section{The French language}
 %
@@ -137,7 +197,7 @@
 %    Thanks to all of them!
 %
 %    LaTeX-2.09 is no longer supported.
-%    This new version (3.x) has been designed to be used only with
+%    Version 3.0  has been designed to be used only with
 %    LaTeX2e and Plain formats based on TeX, pdfTeX, LuaTeX or XeTeX
 %    engines.
 %
@@ -834,6 +894,11 @@
 %    can be recovered by adding |\parskip=0pt|, |\parindent=0pt|
 %    \emph{inside} the list environment.
 %
+%    Version 3.5r is compatible with \pkg{ucharclasses} which is now
+%    loaded by \pkg{fontsetup} with the XeTeX engine.
+%    The \file{frenchb.ins} file is no longer needed to extract the
+%    \file{.ldf} files from \file{frenchb.dtx} (see~\file{README.md}).
+%
 %    \subsubsection*{What’s new in version 3.4?}
 %
 %    Version 3.4a adds a new command |\frenchdate| (see
@@ -1132,7 +1197,7 @@
 %\changes{v2.1d}{2008/05/04}{Avoid warning `\cs{end} occurred
 %    when \cs{ifx} ... incomplete’ with LaTeX-2.09.}
 %
-%  \begin{macro}{\ifLaTeXe}
+% \begin{macro}{\ifLaTeXe}
 %    No support is provided for late LaTeX-2.09: issue a warning
 %    and exit if LaTeX-2.09 is in use.  Plain is still supported.
 %    \begin{macrocode}
@@ -1152,11 +1217,11 @@
 \fi
 \bbl at tempa
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
-%\begin{macro}{\ifFBunicode}
-%  \begin{macro}{\ifFBLuaTeX}
-%  \begin{macro}{\ifFBXeTeX}
+% \begin{macro}{\ifFBunicode}
+% \begin{macro}{\ifFBLuaTeX}
+% \begin{macro}{\ifFBXeTeX}
 %    French hyphenation patterns are now coded in Unicode, see file
 %    \file{hyph-fr.tex}.  XeTeX and LuaTeX engines require some extra
 %    code to deal with the French ``apostrophe’’.
@@ -1200,7 +1265,7 @@
 % \changes{v3.3b}{2017/07/08}{New `if’ \cs{ifFBfrench} to replace
 %    \cs{iflanguage} test which is based on patterns.}
 %
-%  \begin{macro}{\ifFBfrench}
+% \begin{macro}{\ifFBfrench}
 %    True when the current language is French or any of its dialects;
 %    will be set to true by |\extrasfrench| and to false by
 %    |\noextrasfrench|.  Used in |\DecimalMathComma| and
@@ -1277,15 +1342,15 @@
 % \changes{v3.0a}{2014/01/10}{New flag \cs{ifFB at luatex@punct} for
 %    `high punctuation’ management with LuaTeX engines.}
 %
-%  \begin{macro}{\ifFB at active@punct}
+% \begin{macro}{\ifFB at active@punct}
 %    Three internal flags are needed for the three different techniques
 %    used for `high punctuation’ management.
 %    \begin{macrocode}
 \newif\ifFB at active@punct \FB at active@puncttrue
 %    \end{macrocode}
-%    \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\ifFB at luatex@punct}
+% \begin{macro}{\ifFB at luatex@punct}
 %    With LuaTeX, starting with version 1.0.4, callbacks are used to
 %    get rid of active punctuation.  With previous versions, `high
 %    punctuation’ characters remain active (see below).
@@ -1309,9 +1374,9 @@
   \fi
 \fi
 %    \end{macrocode}
-%    \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\ifFB at xetex@punct}
+% \begin{macro}{\ifFB at xetex@punct}
 %    For XeTeX, the availability of |\XeTeXinterchartokenstate|
 %    decides whether the `high punctuation’ characters (|;| |!| |?|
 %    and |:|) have to be made |\active| or not.
@@ -1322,24 +1387,26 @@
 %
 %    The number of available character classes has been increased from
 %    256 to 4096 in XeTeX v.~0.99994, the class for non-characters is
-%    now 4095 instead of 255.
+%    now 0xFFF=4095 (formerly 0xFF=255). The class for standard
+%    characters is 0.
 %    \begin{macrocode}
-\newcount\FB at nonchar
+\newcount\FB at stdchar
 \newif\ifFB at xetex@punct
 \ifdefined\XeTeXinterchartokenstate
   \FB at xetex@puncttrue\FB at active@punctfalse
-  \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt
-    \FB at nonchar=255 \relax
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@ < 0.99994\p@
+    \chardef\FB at nonchar="FF \relax
   \else
-    \FB at nonchar=4095 \relax
+    \chardef\FB at nonchar="FFF \relax
   \fi
+  \FB at stdchar=\z@
 \fi
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\FBguillspace}
-%  \begin{macro}{\FBcolonspace}
-%  \begin{macro}{\FBthinspace}
+% \begin{macro}{\FBguillspace}
+% \begin{macro}{\FBcolonspace}
+% \begin{macro}{\FBthinspace}
 % \changes{v2.5a}{2010/08/10}{Define \cs{FBthinspace} for those who want
 %    to customise the width of the space before ; and co.}
 %
@@ -1380,9 +1447,9 @@
 \newcommand*{\FBcolonspace}{\space}
 \newcommand*{\FBthinspace}{\hskip .5\fontdimen2\font \relax}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v3.3a}{2016/04/30}{Skip \cs{FBguillskip} for LuaTeX
 %    replaced by toks \cs{FBguillsp}.}
@@ -1393,7 +1460,7 @@
 % \changes{v3.4a}{2018/01/26}{New command \cs{FBsetspaces} to fine tune
 %    spacing independently in French and in French dialects.}
 %
-%  \begin{macro}{\FBsetspaces}
+% \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.
@@ -1443,7 +1510,7 @@
   \@onlypreamble\FBsetspaces
 \fi
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %    Remember that the \emph{same} |\extrasfrench| command is executed
 %    when switching to French or to a French dialect (Acadian).
@@ -2283,18 +2350,28 @@
 %    quotes is required by options \fbo{og=«} and \fbo{fg=»} in
 %    \fbsetup{} (see section~\ref{ssec-keyval}).
 %
-%    The default value for |\XeTeXcharclass| is 0 for characters tokens
-%    and |\FB at nonchar| for all other tokens (glues, kerns, math and box
-%    boundaries, etc.).
-%    These defaults should not be changed otherwise the spacing before
-%    the `high punctuation’ characters and inside quotes might not be
-%    correct.
+%    Unless \pkg{ucharclass} is loaded, the default value for
+%    |\XeTeXcharclass| is 0 for characters tokens and |\FB at nonchar| for
+%    all other tokens (glues, kerns, math and box boundaries, etc.).
+%    \pkg{ucharclass} defines a XeTeX class for every range of Unicode
+%    characters in order to facilitate font switching.  Most French
+%    characters belong to range ["20, "7F] (class |\BasicLatinClass|)
+%    some (accented chars, diacritics,…) to range ["80, "FF] (class
+%    |\LatinSupplementClass|) and three (œ, Œ, and the long-s) to
+%    ["100, "17F] (class |\LatinExtendedAClass|).
 %
+%    We check AtBeginDocument whether \pkg{ucharclass} is loaded; if so,
+%    when switching to French, the class |\FB at stdchar| of all characters
+%    possibly used in French (except punctuation) will be forced to
+%    |\BasicLatinClass| which is the default for most of them, the class
+%    of the others (accented chars, ligatures, diacritics, etc.)  will
+%    be saved and changed locally in French, then restored to their
+%    original value when leaving French.
+%
 %    We switch |\XeTeXinterchartokenstate| to 1 and change the
 %    |\XeTeXcharclass| values of |;| |!| |?| |:| |(| |]|
-%    \texttt{«} and \texttt{»} when
-%    entering French.  Special care is taken to restore them to their
-%    inital values when leaving French.
+%    \texttt{«} and \texttt{»} when entering French.
+%    Their inital values will be restored when leaving French.
 %
 % \changes{v2.5d}{2011/01/19}{Moved the \cs{newcount} command outside
 %    \cs{ifFB at xetex@punct} ... \cs{fi} (it broke Plain formats).}
@@ -2303,28 +2380,24 @@
 %    instead of \cs{@for} borrowed from file ltcntrl.dtx
 %    (\cs{@for} is undefined in Plain).}
 %
+% \changes{v3.5r}{2023/12/19}{Compatibility with \pkg{ucharclasses}
+%    package added.}
+%
 %    The following part holds specific code for punctuation with XeTeX
 %    engines.
 %
 %    \begin{macrocode}
 \ifFB at xetex@punct
-   \ifLaTeXe
+  \ifLaTeXe
     \PackageInfo{french.ldf}{No need for active punctuation
                              characters\MessageBreak with this
                              version of XeTeX!\MessageBreak reported}
-   \else
+  \else
     \fb at info{No need for active punctuation characters\\
              with this version of XeTeX!}
-   \fi
+  \fi
 %    \end{macrocode}
 %
-% \changes{v2.5i}{2012/04/20}{Temporary fix: as long as
-%    \file{xeCJK.sty} will not use \cs{newXeTeXintercharclass} to
-%    allocate its classes, we will have to define 3 fake classes.}
-%
-% \changes{v2.5j}{2012/05/08}{Previous fix removed: bug fixed in
-%    \file{xeCJK.sty} version 3.0.4 (06-May-2012).}
-%
 % \changes{v2.6g}{2013/12/09}{U+00A0 (Unicode nobreakspace) and U+202F
 %    (Unicode nobreakthinspace) added to class \cs{FB at punctnul}
 %    to prevent frenchb from adding it’s own space before `high
@@ -2358,32 +2431,42 @@
        \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}%
      \x}
 %    \end{macrocode}
-%    |\FB at charlist| holds the all list of characters which have their
-%    |\XeTeXcharclass| value modified in French: the first set includes
+%    |\FB at charlistsave| holds the all list of characters which have their
+%    |\XeTeXcharclass| value modified in French: it always includes
 %    high punctuation, French quotes, opening delimiters and no-break
-%    spaces \\[5pt]
-%    \begin{tabular}{*{10}{|c}|}\hline
-%      "21 &"3A &"3B &"3F &"AB &"BB &"28 &"5B &"A0 &"202F
-%      \\ \hline
-%      \char"21 &\char"3A &\char"3B &\char"3F & « & »
-%        &\char"28 &\char"5B  &  &  \\ \hline
-%    \end{tabular}\\[5pt]
-%    the second one holds those which need resetting in French when
-%    \file{xeCJK.sty} is in use\\[5pt]
-%    \begin{tabular}{*{12}{|c}|}\hline
-%      "29 &"5D &"7B &"7D &"2C &"2D &"2E &"22 &"25 &"27 &"60 &"2019
-%      \\ \hline
-%      \char"29 &\char"5D &\char"7B &\char"7D &\char"2C &\char"2D
-%      &\char"2E &\char"22 &\char"25 &\textquotesingle &\char"60
-%      &\char"27 \\ \hline
-%    \end{tabular}
+%    spaces. If \pkg{ucharclasses} is loaded, non-\textsc{ascii}
+%    characters used in French have to be added; as \pkg{xeCJK}
+%    changes the class of some characters used in French, these have to
+%    be saved too if \pkg{xeCJK} is loaded.
 %
 %    \begin{macrocode}
-   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F,%
-                    "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}
+   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F}
+   \def\FB at charlistUCC{}
+   \def\FB at charlistxeCJK{}
+   \edef\FB at charlistsave{\FB at charlist}
+   \ifLaTeXe
+     \AtBeginDocument{%
+       \@ifpackageloaded{ucharclasses}%
+         {\ifdefined\BasicLatinClass
+            \RenewCommandCopy{\FB at stdchar}{\BasicLatinClass}%
+            \def\FB at charlistUCC{"C0,"C2,"C6,"C7,"C8,"C9,"CA,"CB,"CE,"CF,%
+              "D4,"D6,"D9,"DB,"DC,"E0,"E2,"E6,"E7,"E8,"E9,"EA,"EB,"EE,%
+              "EF,"F4,"F6,"F9,"FB,"FC,"152,"153,"17F,"2019}%
+            \addto\FB at charlist{,\FB at charlistUCC}%
+            \edef\FB at charlistsave{\FB at charlist}%
+          \fi
+         }{}%
+       \@ifpackageloaded{xeCJK}%
+         {\def\FB at charlistxeCJK{%
+                  "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}%
+          \addto\FB at charlist{,\FB at charlistxeCJK}%
+          \edef\FB at charlistsave{\FB at charlist}%
+         }{}%
+     }
+   \fi
 %    \end{macrocode}
 %
-%  \begin{macro}{\FB at xetex@punct at french}
+% \begin{macro}{\FB at xetex@punct at french}
 %    The following command will be executed when entering French, it
 %    first saves the values to be modified, then fits them to our
 %    needs.
@@ -2397,8 +2480,7 @@
 %    \cs{XeTeXcharclass} of ASCII chars `-’ `,’ `.’ `)’ `]’ `\}’
 %    `\{’ `\%’ opening and closing single and double quotes.
 %    We set their class to 0 in French and reset their class
-%    to their original value when leaving French.  See
-%    \cs{FB at xetex@punct at nonfrench} below.}
+%    to their original value when leaving French.}
 %
 % \changes{v3.1k}{2015/12/05}{Thin glues (less than 1sp) should not
 %    trigger space insertion before high ponctuation. Add a check on
@@ -2412,16 +2494,39 @@
 % \changes{v3.2c}{2016/05/14}{Switch \cs{ifFB at spacing} added to all
 %    \cs{XeTeXinterchartoks} commands.}
 %
-%% \changes{v3.5o}{2022/11/03}{\cs{shorthandon} and \cs{shorthandoff}
+% \changes{v3.5o}{2022/11/03}{\cs{shorthandon} and \cs{shorthandoff}
 %    are no longer redefined (it broke \cs{shorthandoff*}).}
 %
 %    \begin{macrocode}
    \newcommand*{\FB at xetex@punct at french}{%
      \babel at savevariable{\XeTeXinterchartokenstate}%
-     \bbl at for\FB at char\FB at charlist
+     \bbl at for\FB at char\FB at charlistsave
           {\FBsavevariable at loop{\XeTeXcharclass}{\FB at char}}%
 %    \end{macrocode}
-%    Let’s now set the classes and interactions between classes.
+%    If \pkg{ucharclasses} is loaded, force non-\textsc{ascii} used
+%    in French to class |\FB at stdchar| (=|\BasicLatinClass|).
+%    \begin{macrocode}
+     \ifx\FB at charlistUCC\@empty\else
+        \bbl at for\FB at char\FB at charlistUCC
+          {\XeTeXcharclass \FB at char \FB at stdchar}%
+     \fi
+%    \end{macrocode}
+%    These characters have their class changed by \file{xeCJK.sty},
+%    let’s reset their class in French.
+%    \begin{macrocode}
+     \ifx\FB at charlistxeCJK\@empty\else
+       \bbl at for\FB at char\FB at charlistxeCJK
+               {\XeTeXcharclass\FB at char=\FB at stdchar}%
+     \fi
+%    \end{macrocode}
+%    This will avoid spurious spaces in (!), [?] and with Unicode
+%    non-breaking spaces (U+00A0, U+202F):
+%    \begin{macrocode}
+     \bbl at for\FB at char {`\[,`\(,"A0,"202F}%
+             {\XeTeXcharclass\FB at char=\FB at punctnul}%
+%    \end{macrocode}
+%    Let’s now define specific classes for punctuation and interactions
+%    between classes.
 %    When false, the flag |\ifFB at spacing| switches off any interaction
 %    between classes (this flag is controlled by user-level command
 %    |\NoAutoSpacing|; this flag is also set to false when the current
@@ -2429,7 +2534,7 @@
 %    \begin{macrocode}
      \XeTeXinterchartokenstate=\@ne
      \XeTeXcharclass `\: = \FB at punctthick
-     \XeTeXinterchartoks \z@ \FB at punctthick = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at punctthick = {%
            \ifFB at spacing\ifhmode\FDP at colonspace\fi\fi}%
      \XeTeXinterchartoks \FB at guilf \FB at punctthick = {%
            \ifFB at spacing\FDP at colonspace\fi}%
@@ -2452,10 +2557,9 @@
                \fi
              \fi
            \fi}%
-     \bbl at for\FB at char
-             {`\;,`\!,`\?}%
+     \bbl at for\FB at char {`\;,`\!,`\?}%
              {\XeTeXcharclass\FB at char=\FB at punctthin}%
-     \XeTeXinterchartoks \z@ \FB at punctthin = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at punctthin = {%
            \ifFB at spacing\ifhmode\FDP at thinspace\fi\fi}%
      \XeTeXinterchartoks \FB at guilf \FB at punctthin = {%
            \ifFB at spacing\FDP at thinspace\fi}%
@@ -2469,34 +2573,20 @@
                \fi
              \fi
            \fi}%
-     \XeTeXinterchartoks \FB at guilo \z@ = {%
+     \XeTeXinterchartoks \FB at guilo \FB at stdchar = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
            \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
-     \XeTeXinterchartoks \z@ \FB at guilf = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at guilf = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
            \ifFB at spacing\unskip\FB at guillspace\fi}%
-%    \end{macrocode}
-%    This will avoid spurious spaces in (!), [?] and with Unicode
-%    non-breaking spaces (U+00A0, U+202F):
-%    \begin{macrocode}
-     \bbl at for\FB at char
-             {`\[,`\(,"A0,"202F}%
-             {\XeTeXcharclass\FB at char=\FB at punctnul}%
-%    \end{macrocode}
-%    These characters have their class changed by \file{xeCJK.sty},
-%    let’s reset them to 0 in French.
-%    \begin{macrocode}
-     \bbl at for\FB at char
-             {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
-             {\XeTeXcharclass\FB at char=\z@}%
    }
    \addto\extrasfrench{\FB at xetex@punct at french}
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %    End of specific code for punctuation with modern XeTeX engines.
 %    \begin{macrocode}
@@ -2639,8 +2729,8 @@
 \newif\ifFBAutoSpacePunctuation  \FBAutoSpacePunctuationtrue
 %    \end{macrocode}
 %
-%  \begin{macro}{\AutoSpaceBeforeFDP}
-%  \begin{macro}{\NoAutoSpaceBeforeFDP}
+% \begin{macro}{\AutoSpaceBeforeFDP}
+% \begin{macro}{\NoAutoSpaceBeforeFDP}
 %
 % \changes{v2.3a}{2008/10/10}{\cs{NoAutoSpaceBeforeFDP} and
 %    \cs{AutoSpaceBeforeFDP} now set the flag
@@ -2739,7 +2829,7 @@
 % \changes{v2.5a}{2010/08/14}{New command \cs{NoAutoSpacing},
 %    suggested by MPG.}
 %
-%  \begin{macro}{\NoAutoSpacing}
+% \begin{macro}{\NoAutoSpacing}
 %    The following command disables automatic spacing for high
 %    punctuation and French quote characters; it also switches off
 %    active punctuation characters (if any).
@@ -2757,15 +2847,15 @@
   \ifFB at active@punct\shorthandoff{;:!?}\fi
 }
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %  \subsection{Commands for French quotation marks}
 %  \label{ssec-quotes}
 %
-%  \begin{macro}{\guillemotleft}
-%  \begin{macro}{\guillemotright}
-%  \begin{macro}{\textquoteddblleft}
-%  \begin{macro}{\textquoteddblright}
+% \begin{macro}{\guillemotleft}
+% \begin{macro}{\guillemotright}
+% \begin{macro}{\textquoteddblleft}
+% \begin{macro}{\textquoteddblright}
 %    pdfLaTeX users are supposed to use 8-bit output
 %    encodings (T1, LY1,…) to typeset French, those who still
 %    stick to OT1 should load \pkg{aeguill} or a similar package.
@@ -2802,18 +2892,18 @@
   \let\xspace\relax
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v3.4a}{2018/01/18}{New \cs{FBgspchar} to customise the
 %    space character to be used for \cs{og}  and\cs{fg} with the
 %    UnicodeNoBreakSpaces option.}
 %
-%  \begin{macro}{\FBgspchar}
-%  \begin{macro}{\FB at og}
-%  \begin{macro}{\FB at fg}
+% \begin{macro}{\FBgspchar}
+% \begin{macro}{\FB at og}
+% \begin{macro}{\FB at fg}
 %    The next step is to provide correct spacing after `«’ and before
 %    `»’; no line break is allowed neither \emph{after} the opening
 %    one, nor \emph{before} the closing one.
@@ -2871,12 +2961,12 @@
         \guillemotright}
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\og}
-%  \begin{macro}{\fg}
+% \begin{macro}{\og}
+% \begin{macro}{\fg}
 %
 %    The user level macros for quotation marks are named |\og|
 %    (``\underline{o}uvrez \underline{g}uillemets’’) and |\fg|
@@ -2923,8 +3013,8 @@
   \def\fg{\ifdim\lastskip>\z@\unskip\fi\textquotedblright}
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v3.0a}{2014/01/10}{\cs{bbl at nonfrenchguillemets} deleted,
 %    use \cs{babel at save} instead.}
@@ -2937,7 +3027,7 @@
 % \changes{v3.1a}{2014/05/20}{New command \cs{frquote} for imbedded or
 %    long French quotations.}
 %
-%    \begin{macro}{\frquote}
+% \begin{macro}{\frquote}
 %    Another way of entering French quotes relies on |\frquote{}|
 %    with supports up to two levels of quotes.
 %    Let’s define the default quote characters to be used for level one
@@ -3127,7 +3217,7 @@
 %    \begin{macrocode}
 \newcommand*{\NoEveryParQuote}{\let\FBeveryparguill\FBguillnone}
 %    \end{macrocode}
-%    \end{macro}
+% \end{macro}
 %
 %  \subsection{Date in French}
 % \label{sssec-date}
@@ -3204,7 +3294,7 @@
 % \changes{v2.1a}{2008/03/24}{Command \cs{fup} added to produce
 %    better superscripts than \cs{textsuperscript}.}
 %
-%  \begin{macro}{\up}
+% \begin{macro}{\up}
 %
 % \changes{v2.1c}{2008/04/29}{Provide a temporary definition
 %    (hyperref safe) of \cs{up} in case it has to be expanded in
@@ -3215,7 +3305,7 @@
 %    defined elsewhere (catalan.ldf).
 %    Bug pointed out by Felip Manyé i Ballester.}
 %
-%  \begin{macro}{\fup}
+% \begin{macro}{\fup}
 %
 % \changes{v2.1b}{2008/04/02}{Command \cs{fup} changed to use
 %    real superscripts from fourier v.~1.6.}
@@ -3351,15 +3441,15 @@
   \providecommand*{\up}[1]{\leavevmode\raise1ex\hbox{\sevenrm #1}}
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\ieme}
-%  \begin{macro}{\ier}
-%  \begin{macro}{\iere}
-%  \begin{macro}{\iemes}
-%  \begin{macro}{\iers}
-%  \begin{macro}{\ieres}
+% \begin{macro}{\ieme}
+% \begin{macro}{\ier}
+% \begin{macro}{\iere}
+% \begin{macro}{\iemes}
+% \begin{macro}{\iers}
+% \begin{macro}{\ieres}
 % \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
 %    of \cs{ieme} and co: \cs{up} already does the conversion.}
 %
@@ -3373,33 +3463,33 @@
 \def\iere{\up{re}\xspace}
 \def\ieres{\up{res}\xspace}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v3.3c}{2017/07/23}{New configurable kerns \cs{FBmedkern},
 %    and \cs{FBthickkern} suitable for HTML translation.}
 %
-%  \begin{macro}{\FBmedkern}
-%  \begin{macro}{\FBthickkern}
+% \begin{macro}{\FBmedkern}
+% \begin{macro}{\FBthickkern}
 %    \begin{macrocode}
 \newcommand*{\FBmedkern}{\kern+.2em}
 \newcommand*{\FBthickkern}{\kern+.3em}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v2.1c}{2008/04/29}{Added commands \cs{Nos} and \cs{nos}.}
 %
-%  \begin{macro}{\primo}
-%  \begin{macro}{\fprimo)}
-%  \begin{macro}{\nos}
-%  \begin{macro}{\Nos}
-%  \begin{macro}{\No}
-%  \begin{macro}{\no}
+% \begin{macro}{\primo}
+% \begin{macro}{\fprimo)}
+% \begin{macro}{\nos}
+% \begin{macro}{\Nos}
+% \begin{macro}{\No}
+% \begin{macro}{\no}
 % \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
 %    of \cs{FrenchEnumerate}, … \cs{No} and co: \cs{up} already
 %    does the conversion.}
@@ -3445,15 +3535,15 @@
 \DeclareRobustCommand*{\nos}{%
     \texorpdfstring{n\up{os}\FBmedkern}{n\textdegree\space}}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\bname}
-%  \begin{macro}{\bsc}
+% \begin{macro}{\bname}
+% \begin{macro}{\bsc}
 %    These commands are meant to easily enter family names (in small
 %    capitals for the latter) while avoidind hyphenation.
 %    A |\kern0pt| is used instead of |\mbox| because |\mbox| would break
@@ -3483,8 +3573,8 @@
   \let\bsc\bname
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
 %
 %    Some definitions for special characters.  We won’t define |\tilde|
 %    as a Text Symbol not to conflict with the macro |\tilde| for math
@@ -3521,7 +3611,7 @@
 \newcommand*{\at}{@}
 %    \end{macrocode}
 %
-%  \begin{macro}{\degres}
+% \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
@@ -3568,13 +3658,13 @@
   }
 \fi
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %  \subsection{Formatting numbers}
 %  \label{ssec-numbers}
 %
-%  \begin{macro}{\StandardMathComma}
-%  \begin{macro}{\DecimalMathComma}
+% \begin{macro}{\StandardMathComma}
+% \begin{macro}{\DecimalMathComma}
 %    As mentioned in the \TeX{}book p.~134, the comma is of type
 %    |\mathpunct| in math mode: it is automatically followed by a
 %    thin space.  This is convenient in lists and intervals but
@@ -3636,7 +3726,8 @@
 %    (see |\dec at m@c|’s expansion).
 %    The \pkg{icomma} inhibits |\DecimalMathComma|.
 %    \begin{macrocode}
-\newif\if at FBpreamble \ifLaTeXe \@FBpreambletrue \fi
+\newif\if at FBpreamble
+\ifLaTeXe \@FBpreambletrue \fi
 \newif\if at preamble@DecimalMathComma
 \newcommand*{\DecimalMathComma}{%
   \if at FBpreamble \@preamble at DecimalMathCommatrue
@@ -3668,56 +3759,15 @@
   \fi
 }
 %    \end{macrocode}
-%    Ii issued in the preamble, |\DecimalMathComma| works globally on
-%    all parts of the document that are typeset in a French dialect.
-%    Can be canceled anytime by |\StandardMathComma|.
+% \end{macro}
+% \end{macro}
+%    This is for Plain formats \emph{only} (see below).
 %    \begin{macrocode}
-\ifLaTeXe
-  \AtBeginDocument{%
-    \@FBpreamblefalse
-    \@ifpackageloaded{icomma}%
-       {\FB at icommatrue
-        \if at preamble@DecimalMathComma
-          \PackageWarning{french.ldf}{%
-            icomma package loaded, \protect\DecimalMathComma%
-            \MessageBreak does nothing.  Reported}%
-        \fi
-       }%
-       {\if at preamble@DecimalMathComma
-          \ifFB at mainlanguage@FR \dec at math@comma \fi
-          \let\dec at m@c\dec at math@comma
-          \addto\extrasfrench{\dec at m@c}%
-          \ifdefined\extrasacadian
-            \addto\extrasacadian{\dec at m@c}%
-          \fi
-        \fi
-%    \end{macrocode}
-%    The comma is reset to type |\mathpunct| when leaving French
-%    dialects (only if the icomma package is not loaded).
-%    \begin{macrocode}
-        \addto\noextrasfrench{\std at math@comma}%
-        \ifdefined\noextrasacadian
-           \addto\noextrasacadian{\std at math@comma}%
-        \fi
-       }%
-  }
-\else
+\ifLaTeXe\else
   \addto\noextrasfrench{\std at math@comma}
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
 %
-%  \begin{macro}{\nombre}
-%
-% \changes{v2.0}{2006/11/06}{\cs{nombre} now requires numprint.sty.}
-%
-%    The command |\nombre| is now borrowed from \file{numprint.sty} for
-%    LaTeX2e.  There is no point to maintain the former tricky code
-%    when a package is dedicated to do the same job and more.
-%    For Plain based formats, |\nombre| no longer formats numbers,
-%    it prints them as is and issues a warning about the change.
-%
 %    Fake command |\nombre| for Plain based formats, warning users of
 %    \frenchb{} v.~1.x.\ about the change:
 %    \begin{macrocode}
@@ -3724,7 +3774,6 @@
 \newcommand*{\nombre}[1]{{#1}\fb at warning{*** \noexpand\nombre
                                no longer formats numbers\string! ***}}
 %    \end{macrocode}
-%  \end{macro}
 %
 %    Let’s activate LuaTeX punctuation if necessary (LaTeX or Plain)
 %    so that |\FBsetspaces| commands can be used in the preamble,
@@ -3737,7 +3786,7 @@
 \fi
 \let\FBstop at here\relax
 \def\FBclean at on@exit{%
-  \let\ifLaTeXe\undefined
+  \let\ifLaTeXe\iffalse
   \let\LaTeXetrue\undefined
   \let\LaTeXefalse\undefined
   \let\FB at llc\loadlocalcfg
@@ -3753,16 +3802,53 @@
 \FBstop at here
 %    \end{macrocode}
 %
-%    What follows is for LaTeX2e \emph{only}.
-%    We redefine |\nombre| for LaTeX2e.  A warning is issued
-%    at the first call of |\nombre| if |\numprint| is not
-%    defined, suggesting what to do.  The package \pkg{numprint}
-%    is \emph{not} loaded automatically by \frenchb{} because of
-%    possible options conflict.
+%    What follows is for LaTeX2e \emph{only}: the next piece of  code
+%    would break Plain formats.
+%    If issued in the preamble, |\DecimalMathComma| works globally on
+%    all parts of the document that are typeset in a French dialect.
+%    Can be canceled anytime by |\StandardMathComma|.
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \@FBpreamblefalse
+  \@ifpackageloaded{icomma}%
+     {\FB at icommatrue
+      \if at preamble@DecimalMathComma
+        \PackageWarning{french.ldf}{%
+          icomma package loaded, \protect\DecimalMathComma%
+          \MessageBreak does nothing.  Reported}%
+      \fi
+     }%
+     {\if at preamble@DecimalMathComma
+        \ifFB at mainlanguage@FR \dec at math@comma \fi
+        \let\dec at m@c\dec at math@comma
+        \addto\extrasfrench{\dec at m@c}%
+        \ifdefined\extrasacadian
+          \addto\extrasacadian{\dec at m@c}%
+        \fi
+      \fi
+%    \end{macrocode}
+%    The comma is reset to type |\mathpunct| when leaving French
+%    dialects (only if the icomma package is not loaded).
+%    \begin{macrocode}
+      \addto\noextrasfrench{\std at math@comma}%
+      \ifdefined\noextrasacadian
+         \addto\noextrasacadian{\std at math@comma}%
+      \fi
+     }%
+  }
+%    \end{macrocode}
 %
+% \begin{macro}{nombre}
+%   We redefine |\nombre| for LaTeX2e.  The command |\nombre| is now
+%   borrowed from \file{numprint.sty} for LaTeX2e.  There is no point to
+%   maintain the former tricky code when a package is dedicated to do
+%   the same job and more.  A warning is issued at the first call of
+%   |\nombre| if |\numprint| is not defined, suggesting what to do.
+%   The package \pkg{numprint} is \emph{not} loaded automatically by
+%   \frenchb{} because of possible options conflict.
+%
 % \changes{v3.1i}{2015/10/03}{\cs{nombre} command changed when
 %    numprint.sty is not loaded: only one warning, no error.}
-%
 %    \begin{macrocode}
 \renewcommand*{\nombre}[1]{\Warning at nombre{#1}}
 \newcommand*{\Warning at nombre}[1]{%
@@ -3780,6 +3866,7 @@
    \fi
 }
 %    \end{macrocode}
+% \end{macro}
 %
 % \changes{v3.3c}{2017/08/10}{New command \cs{FBthousandsep} to
 %    customise numprint.}
@@ -4150,10 +4237,10 @@
 }
 %    \end{macrocode}
 %
-%  \subsection{Dots…}
-%  \label{ssec-dots}
+% \subsection{Dots…}
+% \label{ssec-dots}
 %
-%  \begin{macro}{\FBtextellipsis}
+% \begin{macro}{\FBtextellipsis}
 %    Unless a ready-made character is available in the current font,
 %    LaTeX’s default definition of |\textellipsis| includes a |\kern| at
 %    the end; this space is not wanted in some cases (before a closing
@@ -4188,7 +4275,7 @@
   \addto\extrasfrench{\bbl at frenchdots}
 \fi
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %  \subsection{More checks about packages’ loading order}
 %  \label{ssec-loading-order}
@@ -4283,7 +4370,7 @@
 %    |\babel at save| and |\babel at savevariable| did not work for
 %    French).\par}
 %
-%  \begin{macro}{\frenchsetup}
+% \begin{macro}{\frenchsetup}
 %    Let’s now define this command which reads and sets the options
 %    to be processed either immediately (i.e.\ just after setting the
 %    key) or later (at |\begin{document}|) by |\FBprocess at options|.
@@ -4910,7 +4997,7 @@
           }%
 }
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\FBprocess at options}
 %    |\FBprocess at options| will be executed at |\begin{document}|:
@@ -5173,7 +5260,7 @@
   \fi
 }
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 % \changes{v2.0}{2006/12/06}{Added warning for OT1 encoding.}
 %
@@ -5255,11 +5342,11 @@
 %    Lists have been completely redesigned in frenchb v.~2.6a.
 %    An option for backward compatibility is provided.}
 %
-%  \begin{macro}{\listFB}
+% \begin{macro}{\listFB}
 % \changes{v3.5q}{2023/02/15}{Bug correction: \cs{parsep} should be
 %    related to \cs{parskip} and \cs{listparindent} to \cs{parindent}.}
-%  \begin{macro}{\listORI}
-%  \begin{macro}{\FB at listVsettings}
+% \begin{macro}{\listORI}
+% \begin{macro}{\FB at listVsettings}
 %    Vertical spacing in lists should be shorter in French texts than
 %    the defaults provided by LaTeX.
 %    Note that the easy way, just changing values of vertical spacing
@@ -5311,9 +5398,9 @@
 \def\listFB#1#2{\listORI{#1}{\FB at listVsettings #2}}
 \let\endlistFB\endlistORI
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 %    Let’s now consider French itemize-lists.  They differ from those
 %    provided by the standard LaTeX classes:
@@ -5329,13 +5416,13 @@
 %         aligned as shown p.~\pageref{ListAsPar}.
 %    \end{itemize}
 %
-%  \begin{macro}{\FrenchLabelItem}
+% \begin{macro}{\FrenchLabelItem}
 % \changes{v2.6a}{2013/01/30}{default changed from \cs{textendash} to
 %    \cs{textemdash}.}
-%  \begin{macro}{\Frlabelitemi}
-%  \begin{macro}{\Frlabelitemii}
-%  \begin{macro}{\Frlabelitemiii}
-%  \begin{macro}{\Frlabelitemiv}
+% \begin{macro}{\Frlabelitemi}
+% \begin{macro}{\Frlabelitemii}
+% \begin{macro}{\Frlabelitemiii}
+% \begin{macro}{\Frlabelitemiv}
 %    Default labels for French itemize-lists (same label for all levels):
 %    \begin{macrocode}
 \newcommand*{\FrenchLabelItem}{\textemdash}
@@ -5344,16 +5431,16 @@
 \newcommand*{\Frlabelitemiii}{\FrenchLabelItem}
 \newcommand*{\Frlabelitemiv}{\FrenchLabelItem}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\listindentFB}
-%  \begin{macro}{\descindentFB}
-%  \begin{macro}{\labelindentFB}
-%  \begin{macro}{\labelwidthFB}
+% \begin{macro}{\listindentFB}
+% \begin{macro}{\descindentFB}
+% \begin{macro}{\labelindentFB}
+% \begin{macro}{\labelwidthFB}
 %    Let’s define four dimens |\listindentFB|, |\descindentFB|,
 %    |\labelindentFB| and |\labelwidthFB| to customise lists’ horizontal
 %    indentations.
@@ -5372,10 +5459,10 @@
 \newdimen\labelwidthFB
 \setlength{\labelwidthFB}{-1pt}
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v3.2e}{2016/10/28}{Add missing redefinitions for
 %    \cs{leftmarginv}, \cs{leftmarginvi}. Suggested by J.F. Burnol.}
@@ -5384,8 +5471,8 @@
 %    lists’ items can be typeset as paragraphs with indented labels
 %    while the default leaves the labels hanging into the left margin.}
 %
-%  \begin{macro}{\leftmarginFB}
-%  \begin{macro}{\FB at listHsettings}
+% \begin{macro}{\leftmarginFB}
+% \begin{macro}{\FB at listHsettings}
 %    |\FB at listHsettings| holds the new horizontal settings chosen for
 %    French lists \env{itemize}, \env{enumerate} and \env{description}
 %    (two possible layouts).
@@ -5424,11 +5511,11 @@
      \ifnum\@listdepth=\@ne i\else ii\fi\endcsname
 }
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
+% \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\itemizeFB}
-%  \begin{macro}{\FB at itemizesettings}
+% \begin{macro}{\itemizeFB}
+% \begin{macro}{\FB at itemizesettings}
 %
 % \changes{v2.6f}{2013/11/25}{\cs{labelwidth} must be reset, f.i. when
 %    an itemize list occurs inside environments based on trivlist which
@@ -5487,8 +5574,8 @@
 }
 \let\enditemizeFB\endlistORI
 %    \end{macrocode}
-%    \end{macro}
-%    \end{macro}
+% \end{macro}
+% \end{macro}
 %
 %    \begin{macrocode}
 \def\setlabelitemsFB{%
@@ -5525,7 +5612,7 @@
 }
 %    \end{macrocode}
 %
-%  \begin{macro}{\enumerateFB}
+% \begin{macro}{\enumerateFB}
 %    The definition of |\enumerateFB|, new to version~2.6a, follows
 %    the one of |\enumerate| in standard LaTeX classes (see
 %    \file{ltlists.dtx}), vertical spaces are customised (or not)
@@ -5547,9 +5634,9 @@
 }
 \let\endenumerateFB\endlistORI
 %    \end{macrocode}
-%    \end{macro}
+% \end{macro}
 %
-%  \begin{macro}{\descriptionFB}
+% \begin{macro}{\descriptionFB}
 % \changes{v2.6b}{2013/02/10}{Settings of \cs{FB at listHsettings} should
 %    apply to description lists too.}
 %
@@ -5598,10 +5685,10 @@
 }
 \let\enddescriptionFB\endlistORI
 %    \end{macrocode}
-%    \end{macro}
+% \end{macro}
 %
-%    \begin{macro}{\update at frenchlists}
-%    \begin{macro}{\bbl at frenchlistlayout}
+% \begin{macro}{\update at frenchlists}
+% \begin{macro}{\bbl at frenchlistlayout}
 %    |\update at frenchlists| will set up lists according to the final
 %    options (default or part of \fbsetup{} eventually overruled in
 %    |\FBprocess at options|).
@@ -5653,13 +5740,13 @@
 }
 \addto\extrasfrench{\bbl at frenchlistlayout}
 %    \end{macrocode}
-%    \end{macro}
-%    \end{macro}
+% \end{macro}
+% \end{macro}
 %
 %  \subsection{French indentation of sections}
 %  \label{ssec-indent}
 %
-%  \begin{macro}{\bbl at frenchindent}
+% \begin{macro}{\bbl at frenchindent}
 %    In French the first paragraph of each section should be indented,
 %    this is another difference with US-English.  This is controlled
 %    by the flag |\if at afterindent|.
@@ -5686,7 +5773,7 @@
   \fi}
 \addto\extrasfrench{\bbl at frenchindent}
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %  \subsection{Formatting footnotes}
 %  \label{ssec-footnotes}
@@ -5735,7 +5822,7 @@
                 }
 %    \end{macrocode}
 %
-%  \begin{macro}{\@makefntextFB}
+% \begin{macro}{\@makefntextFB}
 %    We then define |\@makefntextFB|, a variant of |\@makefntext|
 %    which is responsible for the layout of footnotes, to match the
 %    specifications of the French `Imprimerie Nationale’:  footnotes
@@ -5864,7 +5951,7 @@
   \fi}
 \providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1}
 %    \end{macrocode}
-%  \end{macro}
+% \end{macro}
 %
 %    The rest of |\@makefntext|’s customisation is done at the
 %    |\begin{document}|.  We save the original definition of
@@ -6095,6 +6182,7 @@
 %<acadian|canadien|frenchb|francais>\input french.ldf\relax
 %<acadian|canadien>\let\extrasacadian\extrasfrench
 %<acadian|canadien>\let\noextrasacadian\noextrasfrench
+%<acadian|canadien|frenchb|francais|french>\endinput
 %    \end{macrocode}
 %
 % \Finale

Deleted: trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.ins	2023-12-23 21:44:13 UTC (rev 69204)
@@ -1,98 +0,0 @@
-%%
-%% This file will generate fast loadable files and documentation driver
-%% files from the doc files in this package when run through LuaTeX.
-%%
-%% Copyright 2001-2023 Daniel Flipo.  All rights reserved.
-%%
-%% This is a generated file part of the the babel-french bundle
-%% to be used with the Babel system.
-%% -------------------------------------------------------------
-%%
-%% It may be distributed under the terms of the LaTeX Project Public
-%% License, as described in lppl.txt in the base LaTeX distribution.
-%% Either version 1.3 or, at your option, any later version.
-%%
-%% --------------- start of docstrip commands ------------------
-%%
-\def\filedate{2023/01/02}
-\def\batchfile{frenchb.ins}
-\input docstrip.tex
-
-{\ifx\generate\undefined
-\Msg{**********************************************}
-\Msg{*}
-\Msg{* This installation requires docstrip}
-\Msg{* version 2.4e or later.}
-\Msg{*}
-\Msg{* An older version of docstrip has been input}
-\Msg{*}
-\Msg{**********************************************}
-\errhelp{Move or rename old docstrip.tex.}
-\errmessage{Old docstrip in input path}
-\batchmode
-\csname @@end\endcsname
-\fi}
-
-\declarepreamble\mainpreamble
-This is a generated file part of the babel-french bundle
-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
-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
-version 2003/12/01 or later.
-
-This work has the LPPL maintenance status "maintained".
-
-The Current Maintainer of this work is Daniel Flipo.
-
-Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
-
-\endpreamble
-
-\keepsilent
-\askforoverwritefalse
-
-\usedir{tex/generic/babel-french}
-
-\usepreamble\mainpreamble
-\generate{\file{french.ldf}{\from{frenchb.dtx}{french}}
-          \file{acadian.ldf}{\from{frenchb.dtx}{acadian}}
-          \file{canadien.ldf}{\from{frenchb.dtx}{canadien}}
-          \file{frenchb.ldf}{\from{frenchb.dtx}{frenchb}}
-          \file{francais.ldf}{\from{frenchb.dtx}{francais}}
-          }
-
-\def\MetaPrefix{-- }
-
-\def\luapostamble{%
-  \MetaPrefix\space End of File frenchb.lua.%
-}
-
-\nopreamble
-\usepostamble\luapostamble
-
-\generate{\file{frenchb.lua}{\from{frenchb.dtx}{lua}}}
-
-\ifToplevel{
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* files into a directory searched by TeX:}
-\Msg{*}
-\Msg{* \space\space frenchb.lua\space\space french.ldf}
-\Msg{* \space\space frenchb.ldf\space\space francais.ldf}
-\Msg{* \space\space canadian.ldf\space\space and acadian.ldf}
-\Msg{*}
-\Msg{* To produce the documentation run the file frenchb.dtx}
-\Msg{* through pdfLaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-}
-
-\endbatchfile

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	2023-12-23 21:44:13 UTC (rev 69204)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{acadian}
-         [2023/03/08 v3.5q French support from the babel system]
+         [2023-12-19 v3.5r French support from the babel system]
 \PackageInfo{acadian.ldf}%
   {`acadian' dialect is currently\MessageBreak
    *absolutely identical* to the\MessageBreak
@@ -33,5 +33,6 @@
 \let\extrasacadian\extrasfrench
 \let\noextrasacadian\noextrasfrench
 \endinput
+%% 
 %%
 %% End of file `acadian.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	2023-12-23 21:44:13 UTC (rev 69204)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{canadien}
-         [2023/03/08 v3.5q French support from the babel system]
+         [2023-12-19 v3.5r 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
@@ -38,5 +38,6 @@
 \let\extrasacadian\extrasfrench
 \let\noextrasacadian\noextrasfrench
 \endinput
+%% 
 %%
 %% End of file `canadien.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	2023-12-23 21:44:13 UTC (rev 69204)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{francais}
-         [2023/03/08 v3.5q French support from the babel system]
+         [2023-12-19 v3.5r 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
@@ -33,5 +33,6 @@
 \def\CurrentOption{french}
 \input french.ldf\relax
 \endinput
+%% 
 %%
 %% End of file `francais.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	2023-12-23 21:44:13 UTC (rev 69204)
@@ -24,10 +24,10 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{french}
-         [2023/03/08 v3.5q French support from the babel system]
+         [2023-12-19 v3.5r French support from the babel system]
 %%
 %%  Babel package for LaTeX version 2e
-%%  Copyright © 1996-2022
+%%  Copyright © 1996-2023
 %%            by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
 %%
 \LdfInit\CurrentOption{FBclean at on@exit}
@@ -153,15 +153,16 @@
     \FB at luatex@puncttrue\FB at active@punctfalse
   \fi
 \fi
-\newcount\FB at nonchar
+\newcount\FB at stdchar
 \newif\ifFB at xetex@punct
 \ifdefined\XeTeXinterchartokenstate
   \FB at xetex@puncttrue\FB at active@punctfalse
-  \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt
-    \FB at nonchar=255 \relax
+  \ifdim\the\XeTeXversion\XeTeXrevision\p@ < 0.99994\p@
+    \chardef\FB at nonchar="FF \relax
   \else
-    \FB at nonchar=4095 \relax
+    \chardef\FB at nonchar="FFF \relax
   \fi
+  \FB at stdchar=\z@
 \fi
 \newcommand*{\FBguillspace}{\hskip .8\fontdimen2\font
                               plus .3\fontdimen3\font
@@ -304,14 +305,14 @@
   }
 \fi
 \ifFB at xetex@punct
-   \ifLaTeXe
+  \ifLaTeXe
     \PackageInfo{french.ldf}{No need for active punctuation
                              characters\MessageBreak with this
                              version of XeTeX!\MessageBreak reported}
-   \else
+  \else
     \fb at info{No need for active punctuation characters\\
              with this version of XeTeX!}
-   \fi
+  \fi
    \newXeTeXintercharclass\FB at punctthick
    \newXeTeXintercharclass\FB at punctthin
    \newXeTeXintercharclass\FB at punctnul
@@ -323,16 +324,47 @@
      \edef\x{\endgroup
        \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}%
      \x}
-   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F,%
-                    "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}
-%% \changes{v3.5o}{2022/11/03}{\cs{shorthandon} and \cs{shorthandoff}
+   \def\FB at charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F}
+   \def\FB at charlistUCC{}
+   \def\FB at charlistxeCJK{}
+   \edef\FB at charlistsave{\FB at charlist}
+   \ifLaTeXe
+     \AtBeginDocument{%
+       \@ifpackageloaded{ucharclasses}%
+         {\ifdefined\BasicLatinClass
+            \RenewCommandCopy{\FB at stdchar}{\BasicLatinClass}%
+            \def\FB at charlistUCC{"C0,"C2,"C6,"C7,"C8,"C9,"CA,"CB,"CE,"CF,%
+              "D4,"D6,"D9,"DB,"DC,"E0,"E2,"E6,"E7,"E8,"E9,"EA,"EB,"EE,%
+              "EF,"F4,"F6,"F9,"FB,"FC,"152,"153,"17F,"2019}%
+            \addto\FB at charlist{,\FB at charlistUCC}%
+            \edef\FB at charlistsave{\FB at charlist}%
+          \fi
+         }{}%
+       \@ifpackageloaded{xeCJK}%
+         {\def\FB at charlistxeCJK{%
+                  "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019}%
+          \addto\FB at charlist{,\FB at charlistxeCJK}%
+          \edef\FB at charlistsave{\FB at charlist}%
+         }{}%
+     }
+   \fi
    \newcommand*{\FB at xetex@punct at french}{%
      \babel at savevariable{\XeTeXinterchartokenstate}%
-     \bbl at for\FB at char\FB at charlist
+     \bbl at for\FB at char\FB at charlistsave
           {\FBsavevariable at loop{\XeTeXcharclass}{\FB at char}}%
+     \ifx\FB at charlistUCC\@empty\else
+        \bbl at for\FB at char\FB at charlistUCC
+          {\XeTeXcharclass \FB at char \FB at stdchar}%
+     \fi
+     \ifx\FB at charlistxeCJK\@empty\else
+       \bbl at for\FB at char\FB at charlistxeCJK
+               {\XeTeXcharclass\FB at char=\FB at stdchar}%
+     \fi
+     \bbl at for\FB at char {`\[,`\(,"A0,"202F}%
+             {\XeTeXcharclass\FB at char=\FB at punctnul}%
      \XeTeXinterchartokenstate=\@ne
      \XeTeXcharclass `\: = \FB at punctthick
-     \XeTeXinterchartoks \z@ \FB at punctthick = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at punctthick = {%
            \ifFB at spacing\ifhmode\FDP at colonspace\fi\fi}%
      \XeTeXinterchartoks \FB at guilf \FB at punctthick = {%
            \ifFB at spacing\FDP at colonspace\fi}%
@@ -346,10 +378,9 @@
                \fi
              \fi
            \fi}%
-     \bbl at for\FB at char
-             {`\;,`\!,`\?}%
+     \bbl at for\FB at char {`\;,`\!,`\?}%
              {\XeTeXcharclass\FB at char=\FB at punctthin}%
-     \XeTeXinterchartoks \z@ \FB at punctthin = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at punctthin = {%
            \ifFB at spacing\ifhmode\FDP at thinspace\fi\fi}%
      \XeTeXinterchartoks \FB at guilf \FB at punctthin = {%
            \ifFB at spacing\FDP at thinspace\fi}%
@@ -363,22 +394,16 @@
                \fi
              \fi
            \fi}%
-     \XeTeXinterchartoks \FB at guilo \z@ = {%
+     \XeTeXinterchartoks \FB at guilo \FB at stdchar = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at guilo \FB at nonchar = {%
            \ifFB at spacing\FB at guillspace\ignorespaces\fi}%
-     \XeTeXinterchartoks \z@ \FB at guilf = {%
+     \XeTeXinterchartoks \FB at stdchar \FB at guilf = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at punctthin \FB at guilf = {%
            \ifFB at spacing\FB at guillspace\fi}%
      \XeTeXinterchartoks \FB at nonchar \FB at guilf = {%
            \ifFB at spacing\unskip\FB at guillspace\fi}%
-     \bbl at for\FB at char
-             {`\[,`\(,"A0,"202F}%
-             {\XeTeXcharclass\FB at char=\FB at punctnul}%
-     \bbl at for\FB at char
-             {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}%
-             {\XeTeXcharclass\FB at char=\z@}%
    }
    \addto\extrasfrench{\FB at xetex@punct at french}
 \fi
@@ -816,7 +841,8 @@
   \newcommand*{\std at math@comma}{\mathcode`\,=\std at mcc}
 \fi
 \let\dec at m@c\relax
-\newif\if at FBpreamble \ifLaTeXe \@FBpreambletrue \fi
+\newif\if at FBpreamble
+\ifLaTeXe \@FBpreambletrue \fi
 \newif\if at preamble@DecimalMathComma
 \newcommand*{\DecimalMathComma}{%
   \if at FBpreamble \@preamble at DecimalMathCommatrue
@@ -847,32 +873,7 @@
     \fi
   \fi
 }
-\ifLaTeXe
-  \AtBeginDocument{%
-    \@FBpreamblefalse
-    \@ifpackageloaded{icomma}%
-       {\FB at icommatrue
-        \if at preamble@DecimalMathComma
-          \PackageWarning{french.ldf}{%
-            icomma package loaded, \protect\DecimalMathComma%
-            \MessageBreak does nothing.  Reported}%
-        \fi
-       }%
-       {\if at preamble@DecimalMathComma
-          \ifFB at mainlanguage@FR \dec at math@comma \fi
-          \let\dec at m@c\dec at math@comma
-          \addto\extrasfrench{\dec at m@c}%
-          \ifdefined\extrasacadian
-            \addto\extrasacadian{\dec at m@c}%
-          \fi
-        \fi
-        \addto\noextrasfrench{\std at math@comma}%
-        \ifdefined\noextrasacadian
-           \addto\noextrasacadian{\std at math@comma}%
-        \fi
-       }%
-  }
-\else
+\ifLaTeXe\else
   \addto\noextrasfrench{\std at math@comma}
 \fi
 \newcommand*{\nombre}[1]{{#1}\fb at warning{*** \noexpand\nombre
@@ -882,7 +883,7 @@
 \fi
 \let\FBstop at here\relax
 \def\FBclean at on@exit{%
-  \let\ifLaTeXe\undefined
+  \let\ifLaTeXe\iffalse
   \let\LaTeXetrue\undefined
   \let\LaTeXefalse\undefined
   \let\FB at llc\loadlocalcfg
@@ -896,6 +897,30 @@
     \endinput}
 \fi
 \FBstop at here
+\AtBeginDocument{%
+  \@FBpreamblefalse
+  \@ifpackageloaded{icomma}%
+     {\FB at icommatrue
+      \if at preamble@DecimalMathComma
+        \PackageWarning{french.ldf}{%
+          icomma package loaded, \protect\DecimalMathComma%
+          \MessageBreak does nothing.  Reported}%
+      \fi
+     }%
+     {\if at preamble@DecimalMathComma
+        \ifFB at mainlanguage@FR \dec at math@comma \fi
+        \let\dec at m@c\dec at math@comma
+        \addto\extrasfrench{\dec at m@c}%
+        \ifdefined\extrasacadian
+          \addto\extrasacadian{\dec at m@c}%
+        \fi
+      \fi
+      \addto\noextrasfrench{\std at math@comma}%
+      \ifdefined\noextrasacadian
+         \addto\noextrasacadian{\std at math@comma}%
+      \fi
+     }%
+  }
 \renewcommand*{\nombre}[1]{\Warning at nombre{#1}}
 \newcommand*{\Warning at nombre}[1]{%
    \ifdefined\numprint
@@ -1955,5 +1980,6 @@
 \ldf at finish\CurrentOption
 \let\loadlocalcfg\FB at llc
 \endinput
+%% 
 %%
 %% End of file `french.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2023-12-23 21:44:13 UTC (rev 69204)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{frenchb}
-         [2023/03/08 v3.5q French support from the babel system]
+         [2023-12-19 v3.5r French support from the babel system]
 \def\bbl at tempa{frenchb}
 \ifx\CurrentOption\bbl at tempa
   \chardef\l at frenchb\l at french
@@ -57,5 +57,6 @@
 \fi
 \input french.ldf\relax
 \endinput
+%% 
 %%
 %% End of file `frenchb.ldf'.

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2023-12-23 21:44:13 UTC (rev 69204)
@@ -1,7 +1,7 @@
 --[[
    File `frenchb.lua’ generated from frenchb.dtx
-         [2023/03/08 v3.5q French support from the babel system]
-   Copyright © 2014-2022 Daniel Flipo
+         [2023-12-19 v3.5r French support from the babel system]
+   Copyright © 2014-2023 Daniel Flipo
    <daniel (dot) flipo (at) free (dot) fr>
    License LPPL: see french.ldf.
 --]]

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2023-12-23 16:57:39 UTC (rev 69203)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2023-12-23 21:44:13 UTC (rev 69204)
@@ -3195,6 +3195,7 @@
  'atenddvi'	=> 'etex',
  'babel'	=> 'etex',
  'babel-belarusian'	=> 'tex -8bit', # do not make doc, no ^^
+ 'babel-french'		=> 'luatex',
  'babel-greek'		=> 'latex', # requires interaction
  'babel-serbianc'	=> 'latex', # requires interaction
  'babel-ukrainianx'	=> 'etex',  # requires interaction



More information about the tex-live-commits mailing list.