texlive[76067] Master/texmf-dist: babel-french (15aug25)

commits+karl at tug.org commits+karl at tug.org
Fri Aug 15 23:26:40 CEST 2025


Revision: 76067
          https://tug.org/svn/texlive?view=revision&revision=76067
Author:   karl
Date:     2025-08-15 23:26:40 +0200 (Fri, 15 Aug 2025)
Log Message:
-----------
babel-french (15aug25)

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/doc/generic/babel-french/frenchb3-doc.pdf
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3-doc.tex
    trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3.pdf
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx
    trunk/Master/texmf-dist/source/generic/babel-french/frenchb3.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/french3.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
    trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/babel-french/README.md	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/doc/generic/babel-french/README.md	2025-08-15 21:26:40 UTC (rev 76067)
@@ -1,7 +1,7 @@
 The babel-french package (formerly known as `frenchb')
 ======================================================
 
-Bundle Release date: 2025-07-25
+Bundle Release date: 2025-08-15
 -------------------------------
 
 Description

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	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/doc/generic/babel-french/frenchb-doc.tex	2025-08-15 21:26:40 UTC (rev 76067)
@@ -119,8 +119,8 @@
 
 \title{Mode d’emploi du module \ext{babel-french}}
 \author{\href{mailto:daniel.flipo at free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{4.0d}
-\date{Version {\latestversion} -- 25 juillet 2025}
+\newcommand*{\latestversion}{4.0e}
+\date{Version {\latestversion} -- 15 août 2025}
 
 \begin{document}
 

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

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

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3-doc.tex	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3-doc.tex	2025-08-15 21:26:40 UTC (rev 76067)
@@ -119,8 +119,8 @@
 
 \title{Mode d’emploi du module \ext{babel-french}}
 \author{\href{mailto:daniel.flipo at free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.7d}
-\date{Version {\latestversion} -- 25 juillet 2025}
+\newcommand*{\latestversion}{3.7e}
+\date{Version {\latestversion} -- 15 août 2025}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/generic/babel-french/frenchb3.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	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb.dtx	2025-08-15 21:26:40 UTC (rev 76067)
@@ -67,7 +67,7 @@
 %<french>\ProvidesLanguage{french}
 %<lua>--[[
 %<lua>   File `frenchb.lua’ generated from frenchb.dtx
-         [2025-07-25 v4.0d French support from the babel system]
+         [2025-08-15 v4.0e French support from the babel system]
 %<lua>   Copyright © 2014-2025 Daniel Flipo
 %<lua>   <daniel (dot) flipo (at) free (dot) fr>
 %<lua>   License LPPL: see french.ldf.
@@ -1077,7 +1077,7 @@
 %    before Babel switches to French at |\begin{document}|.
 %    \begin{macrocode}
 \ifLaTeXe
-  \AddToHook{env/document/before}{%
+  \AddToHookNext{env/document/before}{%
     \set at glue@table{colon}%
     \set at glue@table{thin}%
     \set at glue@table{guill}%
@@ -1165,10 +1165,10 @@
 %    First we define two flags to control spacing before French `high
 %    punctuation’ (thin space or inter-word space).
 %
-% \changes{v3.1a}{2014/06/16}{Codes 0x13 and 0x14 added for French
+% \changes{v3.1a}{2014-06-16}{Codes 0x13 and 0x14 added for French
 %    quotes in T1-encoding.}
 %
-% \changes{v4.0a}{2025/05/16}{Codes 0x2039 and 0x203A added for French
+% \changes{v4.0a}{2025-05-16}{Codes 0x2039 and 0x203A added for French
 %    single quotes.}
 %
 %    \begin{macrocode}
@@ -1297,7 +1297,7 @@
 %    |\spacekip|, when not null, replaces the inter-word space (in
 %    raggedright env. f.i.). This is now taken into account.
 %
-% \changes{v4.0a}{2025/05/16}{Take non null values of \cs{spaceskip}
+% \changes{v4.0a}{2025-05-16}{Take non null values of \cs{spaceskip}
 %    into account.  Bug pointed out by Enrico Gregorio.}
 %
 %    \begin{macrocode}
@@ -1357,15 +1357,15 @@
 %    next one (|next|).  The |FR| constant (french) is defined by
 %    command |\activate at luacode|.
 %
-% \changes{v3.1b}{2014/09/16}{Add a check for null fid
+% \changes{v3.1b}{2014-09-16}{Add a check for null fid
 %    in french\_punctuation (Tikz \cs{nullfont}).
 %    Bug pointed out by Paul Gaborit.}
 %
-% \changes{v3.5g}{2020/01/30}{The kerning callback is a bit specific:
+% \changes{v3.5g}{2020-01-30}{The kerning callback is a bit specific:
 %    adding code with add\_to\_callback actually deletes the legacy
 %    kerning as pointed out by Marcel Krüger on SE.}
 %
-% \changes{v3.5h}{2020/03/28}{Added glues and penalties should inherit
+% \changes{v3.5h}{2020-03-28}{Added glues and penalties should inherit
 %    attributes from the related punctuation character; this is
 %    mandatory for Lua-UL to underline and highlight them.
 %    Thanks to Marcel Krüger for providing the fix.}
@@ -1403,7 +1403,7 @@
              end
 %    \end{macrocode}
 %
-% \changes{v3.0c}{2014/04/18}{Null glues should not trigger space
+% \changes{v3.0c}{2014-04-18}{Null glues should not trigger space
 %    insertion before high ponctuation.  Bug pointed out by Benoit
 %    Rivet for the `lstlisting’ environment of the listings package.}
 %
@@ -1419,11 +1419,11 @@
              local realglue = is_glue and glue_wd > 1
 %    \end{macrocode}
 %
-% \changes{v3.3d}{2017/10/17}{In default mode, for `:’ only, check
+% \changes{v3.3d}{2017-10-17}{In default mode, for `:’ only, check
 %    if next node is a glyph or not.  If it is, turn the `auto’ flag
 %    to false (avoids spurious spaces in URLs, MSDOS paths or 10:35).}
 %
-% \changes{v3.5s}{2024/02/28}{A `:’ followed by `-’ or a ligature
+% \changes{v3.5s}{2024-02-28}{A `:’ followed by `-’ or a ligature
 %    should not trigger spacing.}
 %
 %    For characters for which |FB_punct_thin| or |FB_punct_thick| is
@@ -1508,11 +1508,11 @@
 %    b) `»’/`›’ is the first glyph of an |\hbox{}| or a paragraph, nothing
 %    is done, this is controlled by the |addgl| flag.
 %
-% \changes{v3.1a}{2014/06/18}{Added flag addgl which must also be true
+% \changes{v3.1a}{2014-06-18}{Added flag addgl which must also be true
 %    when prev or next is not a char (i.e. \cs{kern}0 in
 %    «\cs{texttt}\{a\}»).}
 %
-% \changes{v3.1g}{2015/06/26}{flag addgl set to false for `»’
+% \changes{v3.1g}{2015-06-26}{flag addgl set to false for `»’
 %    at the beginning of an \cs{hbox} or a paragraph or a tabular
 %    `l’ and `c’ columns.}
 %
@@ -1562,14 +1562,14 @@
 %    a nobreak penalty so that finally the penalty preceeds the
 %    \emph{glue}.
 %
-% \changes{v3.1a}{2014/06/18}{Look ahead when next is a kern
+% \changes{v3.1a}{2014-06-18}{Look ahead when next is a kern
 %    (i.e. in « \cs{texttt}\{a\} »).}
 %
-% \changes{v3.1g}{2015/06/26}{Flag addgl set to false for
+% \changes{v3.1g}{2015-06-26}{Flag addgl set to false for
 %    `«’ at the end of an \cs{hbox} or a paragraph or when followed by
 %    a null glue (i.e. springs).}
 %
-% \changes{v3.5o}{2022/10/11}{Opening guill.: look ahead when next is
+% \changes{v3.5o}{2022-10-11}{Opening guill.: look ahead when next is
 %    a penalty (nobreak space).}
 %
 %    \begin{macrocode}
@@ -1673,7 +1673,7 @@
 end
 %    \end{macrocode}
 %
-% \changes{v4.0a}{2025/06/05}{New function 'euphonic\_t' for hyphenation
+% \changes{v4.0a}{2025-06-05}{New function 'euphonic\_t' for hyphenation
 %    of compound words. Suggested by Thomas Savary.}
 %
 %    This function deals with hyphenation of the euphonic-t in French:
@@ -1708,11 +1708,11 @@
 %    \end{macrocode}
 %    \end{environment}
 %
-% \changes{v3.0b}{2014/02/13}{frenchb.lua was not found by
+% \changes{v3.0b}{2014-02-13}{frenchb.lua was not found by
 %    Lua function dofile (not kpathsea aware).
 %    Call function kpse.find\_file first, as suggested by Paul Gaborit.}
 %
-% \changes{v3.1g}{2015/06/17}{Lua function french\_punctuation is now
+% \changes{v3.1g}{2015-06-17}{Lua function french\_punctuation is now
 %    inserted at the end of the `kerning’ callback (no priority)
 %    instead of `hpack\_filter’ and `pre\_linebreak\_filter’.}
 %
@@ -1758,11 +1758,11 @@
 % \begin{macro}{\AutoSpaceBeforeFDP}
 % \begin{macro}{\NoAutoSpaceBeforeFDP}
 %
-% \changes{v2.3a}{2008/10/10}{\cs{NoAutoSpaceBeforeFDP} and
+% \changes{v2.3a}{2008-10-10}{\cs{NoAutoSpaceBeforeFDP} and
 %    \cs{AutoSpaceBeforeFDP} now set the flag
 %    \cs{ifFBAutoSpacePunctuation} accordingly (LaTeX only).}
 %
-% \changes{v2.3e}{2009/10/10}{Execute \cs{AutoSpaceBeforeFDP}
+% \changes{v2.3e}{2009-10-10}{Execute \cs{AutoSpaceBeforeFDP}
 %    also in LaTeX to define \cs{FDP at colonspace}: needed for
 %    tex4ht, pointed out by MPG.}
 %
@@ -1797,7 +1797,7 @@
 % \begin{macro}{\sffamilyFB}
 % \begin{macro}{\ttfamilyFB}
 %
-% \changes{v2.3c}{2009/02/07}{Commands \cs{ttfamily}, \cs{rmfamily}
+% \changes{v2.3c}{2009-02-07}{Commands \cs{ttfamily}, \cs{rmfamily}
 %    and \cs{sffamily} have to be robust.  Bug introduced in 2.3a,
 %    pointed out by Manuel Pégourié-Gonnard.}
 %
@@ -1840,7 +1840,7 @@
 %    definition of |\texorpdfstring| will be overwritten
 %    by \file{hyperref.sty}.
 %
-% \changes{v3.6b}{2024/06/26}{\cs{NoAutoSpacing} must be inhibited
+% \changes{v3.6b}{2024-06-26}{\cs{NoAutoSpacing} must be inhibited
 %    in bookmarks.}
 %
 %    \begin{macrocode}
@@ -1929,7 +1929,7 @@
 %    Let’s define the default quote characters to be used for level one
 %    or two of quotes…
 %
-% \changes{v3.7a}{2024/08/19}{Flag \cs{ifFBcloseguill} does not apply
+% \changes{v3.7a}{2024-08-19}{Flag \cs{ifFBcloseguill} does not apply
 %    to \cs{@fgii}.}
 %
 %    \begin{macrocode}
@@ -2266,7 +2266,7 @@
 %    names (such as Dupont-Durand) can now be hyphenated on explicit
 %    hyphens.
 %
-% \changes{v3.5k}{2020/07/18}{\cs{bsc} now relies on
+% \changes{v3.5k}{2020-07-18}{\cs{bsc} now relies on
 %    \cs{texorpdfstring} to be safe in bookmarks.}
 %
 %    \begin{macrocode}
@@ -2320,7 +2320,7 @@
 %    |\StandardMathComma| switches back to the standard behaviour
 %    of the comma.
 %
-% \changes{v3.5p}{2023/01/02}{\cs{DecimalMathComma} can again be
+% \changes{v3.5p}{2023-01-02}{\cs{DecimalMathComma} can again be
 %    used in the preamble for a global action.  It now works as
 %    expected inside a group.}
 %
@@ -2431,14 +2431,13 @@
 %    all parts of the document that are typeset in a French.
 %    Can be canceled anytime by |\StandardMathComma|.
 %    \begin{macrocode}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
   \@FBpreamblefalse
   \IfPackageLoadedTF{icomma}%
      {\FB at icommatrue
       \if at preamble@DecimalMathComma
-        \PackageWarning{french.ldf}{%
-          icomma package loaded, \protect\DecimalMathComma%
-          \MessageBreak does nothing.  Reported}%
+        \FBWarning{icomma package loaded, \protect\DecimalMathComma%
+                   \MessageBreak does nothing.  Reported}%
       \fi
      }%
      {\if at preamble@DecimalMathComma
@@ -2470,7 +2469,7 @@
    \ifdefined\numprint
      \numprint{#1}%
    \else
-     \PackageWarning{french.ldf}{%
+     \FBWarning{%
         \protect\nombre\space now relies on package numprint.sty,%
         \MessageBreak add \protect
         \usepackage[autolanguage]{numprint},\MessageBreak
@@ -2483,10 +2482,10 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v3.3c}{2017/08/10}{New command \cs{FBthousandsep} to
+% \changes{v3.3c}{2017-08-10}{New command \cs{FBthousandsep} to
 %    customise numprint.}
 %
-% \changes{v3.4a}{2017/12/29}{Shrink/stretch removed in
+% \changes{v3.4a}{2017-12-29}{Shrink/stretch removed in
 %    \cs{FBthousandsep}.}
 %
 %    \begin{macrocode}
@@ -2560,7 +2559,7 @@
 \providecommand*{\FBfigtabshape}{\scshape}
 %    \end{macrocode}
 %
-% \changes{v4.0a}{2025/05/23}{New customisation for the Part entries in
+% \changes{v4.0a}{2025-05-23}{New customisation for the Part entries in
 %    the toc.  Suggested by Julien Labbé.}
 %
 %    New command |\FBtocpartname| to help printing ``Première partie’’
@@ -2605,7 +2604,7 @@
 %    \begin{macrocode}
 \newif\if at FBwarning@beamerarticle
 \IfPackageLoadedTF{beamerarticle}{}{\@FBwarning at beamerarticletrue}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@beamerarticle
      \IfPackageLoadedTF{beamerarticle}{}%
                                      {\@FBwarning at beamerarticlefalse}%
@@ -2625,7 +2624,7 @@
 \NeedsTeXFormat{LaTeX2e}[2022-06-01]
 %    \end{macrocode}
 %
-%\changes{v4.0b}{2025/07/02}{New \cs{ifFBnewlists} and
+% \changes{v4.0b}{2025-07-02}{New \cs{ifFBnewlists} and
 %    \cs{ifFBnewfootnotes} to handle the new corresponding templates.}
 %
 %    If the new templates for lists and footnotes are available,
@@ -2644,13 +2643,13 @@
 %    After this, \fbsetup{} eventually modifies the preset values of
 %    these flags.
 %
-% \changes{v4.0a}{2025/05/20}{Removed obsolete compatibility options
+% \changes{v4.0a}{2025-05-20}{Removed obsolete compatibility options
 %    GlobalLayoutFrench, ListOldLayout, OldFigTabCaption}
 %
-% \changes{v4.0a}{2025/05/20}{Option CustomiseFigTabCaptions is set to
+% \changes{v4.0a}{2025-05-20}{Option CustomiseFigTabCaptions is set to
 %    false.}
 %
-% \changes{v4.0a}{2025/05/20}{Options og and fg are now useless.}
+% \changes{v4.0a}{2025-05-20}{Options og and fg are now useless.}
 %
 %    Some options processing occurs in \fbsetup{},
 %    \emph{only for options explicitly set} by \fbsetup{}, the rest is
@@ -2709,10 +2708,10 @@
 \fi
 %    \end{macrocode}
 %
-% \changes{v3.0c}{2014/03/30}{No list customisation when beamer
+% \changes{v3.0c}{2014-03-30}{No list customisation when beamer
 %    class is loaded.}
 %
-% \changes{v3.2g}{2017/01/30}{Minimal list customisation when
+% \changes{v3.2g}{2017-01-30}{Minimal list customisation when
 %    beamerarticle.sty is loaded.}
 %
 %    Some of the flags must be toogled when French is the main
@@ -2844,14 +2843,19 @@
 %    The code is executed \emph{only if} the corresponding option
 %    is \emph{explicily set} in |\frenchsetup{}|.
 %    \begin{macrocode}
+\newcommand*{\FBSuppressWarning at setup}[1]%
+  {\csname FBSuppressWarning#1\endcsname
+   \ifFBSuppressWarning
+     \renewcommand{\FBWarning}[1]{}%
+   \fi
+  }
 \newcommand*{\FBStandardLayout at setup}[1]%
   {\ifFB at mainlanguage@FR
      \csname FBStandardLayout#1\endcsname
    \else
-     \PackageWarning{french.ldf}%
-         {Option `StandardLayout' skipped:\MessageBreak
-          French is *not* babel's last option.\MessageBreak
-          Reported}%
+     \FBWarning{Option `StandardLayout' skipped:\MessageBreak
+                French is *not* babel's last option.\MessageBreak
+                Reported}%
    \fi
    \ifFBStandardLayout
      \FBStandardListSpacingtrue
@@ -2928,12 +2932,6 @@
        }%
    \fi
   }
-\newcommand*{\FBSuppressWarning at setup}[1]%
-  {\csname FBSuppressWarning#1\endcsname
-   \ifFBSuppressWarning
-     \renewcommand{\FBWarning}[1]{}%
-   \fi
-  }
 \newcommand*{\FBINGuillSpace at setup}[1]%
   {\csname FBINGuillSpace#1\endcsname
    \ifFBINGuillSpace
@@ -2997,6 +2995,7 @@
 %    When French is the main language, |\extrasfrench| and
 %    |\captionsfrench| are executed by \babel{} at |\begin{document}|,
 %    i.e.\ after |\FBprocess at options|.
+%
 %    \begin{macrocode}
 \newcommand*{\FBprocess at options}{%
 %    \end{macrocode}
@@ -3050,7 +3049,7 @@
   \else
     \ifFBStandardItemizeEnv
     \else
-      \PackageWarning{french.ldf}%
+      \FBWarning
         {babel-french will not customise lists' layout\MessageBreak
          when French is not the main language,\MessageBreak
          reported}%
@@ -3075,7 +3074,7 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v4.0b}{2025/07/02}{New code to customise footnotes when
+% \changes{v4.0b}{2025-07-02}{New code to customise footnotes when
 %    the new templates are available.}
 %
 %    Options \fbo{FrenchFootnotes} and Option \fbo{AutoSpaceFootnotes}
@@ -3094,18 +3093,18 @@
       \NewSocketPlug{fntext/mark}{french}
         {\hb at xt@ \footnotemargin{\hss\newfootnotemarkFB}}
       \AssignSocketPlug{fntext/mark}{french}
-      \AddToHook{cmd/maketitle/before}
+      \AddToHook{cmd/maketitle/before}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{cmd/maketitle/after}
+      \AddToHook{cmd/maketitle/after}[frenchb]
          {\AssignSocketPlug{fntext/mark}{french}}
-      \AddToHook{env/minipage/begin}
+      \AddToHook{env/minipage/begin}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{fntext/para}{\parindent=\parindentFFN}
-      \AddToHook{fntext/para}{\localleftbox{}}
-      \AddToHook{fntext/para}{\let\FBeverypar at quote\relax}
+      \AddToHook{fntext/para}[frenchb]{\parindent=\parindentFFN}
+      \AddToHook{fntext/para}[frenchb]{\localleftbox{}}
+      \AddToHook{fntext/para}[frenchb]{\let\FBeverypar at quote\relax}
     \fi
     \ifFBAutoSpaceFootnotes
-      \AddToHook{fnmark/before}{\FBfnmarkspace}
+      \AddToHook{fnmark/before}[frenchb]{\FBfnmarkspace}
     \fi
   \fi
 %    \end{macrocode}
@@ -3312,23 +3311,27 @@
   \fi
 }
 %    \end{macrocode}
-%
 % \end{macro}
 %
-% \changes{v4.0d}{2025/07/25}{\cs{FBprocess at options} must be processed
+% \changes{v4.0d}{2025-07-25}{\cs{FBprocess at options} must be processed
 %    only once, reported by Herbert Voß for dtk.cls.}
 %
+% \changes{v4.0e}{2025-08-15}{\cs{AddToHook} for env/document/ replaced
+%    by \cs{AddToHookNext} (all instances).}
+%
 %    Just before |\begin{document}|, let’s now process the remaining
 %    options, either not explicitly set by \fbsetup{} or possibly
 %    modified by packages loaded after \frenchb.
 %    We also have to provide an |\xspace| command in case the
 %    \pkg{xspace} package is not loaded.
-%    Force |\FBprocess at options| to be processed only once.
+%    In some cases (package \pkg{standalone}, \cls{dtk},…) several
+%    |\documentclass{}| commands are allowed, so use |\AddToHookNext|
+%    instead of |\AddToHook| (all instances) as our stuff should only
+%    added to the first occurence of |\documentclass{}| anyway.
 %    \begin{macrocode}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \providecommand*{\xspace}{\relax}%
    \FBprocess at options
-   \renewcommand*{\FBprocess at options}{\relax}%
 }
 %    \end{macrocode}
 %
@@ -3336,7 +3339,7 @@
 %  \label{ssec-lists}
 %
 % \begin{macro}{\listFB}
-% \changes{v3.5q}{2023/02/15}{Bug correction: \cs{parsep} should be
+% \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}
@@ -3484,7 +3487,7 @@
 }
 %    \end{macrocode}
 %
-% \changes{v3.5a}{2018/07/04}{New optional layout for lists:
+% \changes{v3.5a}{2018-07-04}{New optional layout for lists:
 %    lists’ items can be typeset as paragraphs with indented labels
 %    while the default leaves the labels hanging into the left margin.}
 %
@@ -3838,7 +3841,7 @@
 %    \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
+% \changes{v3.2h}{2016-04-09}{With beamer.cls, add \cs{llap} to
 %    \cs{@thefnmark} for notes numbered over 99.}
 %
 %    \begin{macrocode}
@@ -3879,7 +3882,7 @@
 %
 % \begin{macro}{\@footnotemark}
 %
-% \changes{v3.6a}{2024/05/13}{Allow customisation of the space added
+% \changes{v3.6a}{2024-05-13}{Allow customisation of the space added
 %    in \cs{@footnotemarkFB}.}
 %
 %    We will save the original definition of |\@footnotemark| at
@@ -3898,13 +3901,13 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v3.3c}{2017/07/28}{Reset \cs{localleftbox} locally
+% \changes{v3.3c}{2017-07-28}{Reset \cs{localleftbox} locally
 %    inside \cs{@makefntext}.  Needed by \cs{frquote} with LuaTeX.}
 %
-% \changes{v3.5b}{2018/07/17}{Reset \cs{FBeverypar at quote} locally
+% \changes{v3.5b}{2018-07-17}{Reset \cs{FBeverypar at quote} locally
 %    inside \cs{@makefntext}.  Needed by \cs{frquote}.}
 %
-% \changes{v3.5c}{2018/09/13}{Remove grouping inside \cs{@makefntext},
+% \changes{v3.5c}{2018-09-13}{Remove grouping inside \cs{@makefntext},
 %    \cs{localleftbox} and \cs{FBeverypar at quote} saved and restored
 %    instead.}
 %
@@ -3924,7 +3927,7 @@
 %    \begin{macrocode}
   \IfPackageLoadedTF{footnotebackref}%
       {\FBFrenchFootnotesfalse
-       \PackageWarning{french.ldf}%
+       \FBWarning
           {footnotebackref package loaded.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
@@ -3935,7 +3938,7 @@
 %    that \frenchb{} will not customise footnotes at all.
 %    \begin{macrocode}
    \IfPackageLoadedTF{bigfoot}%
-      {\PackageWarning{french.ldf}%
+      {\FBWarning
           {bigfoot package in use.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
@@ -4027,12 +4030,12 @@
 %    \end{macrocode}
 %    Revert to standard footnotes inside minipages.
 %    \begin{macrocode}
-      \AddToHook{env/minipage/begin}{\FBFrenchFootnotesfalse}
+      \AddToHook{env/minipage/begin}[frenchb]{\FBFrenchFootnotesfalse}
     }%
   }
 %    \end{macrocode}
 %
-% \changes{v4.0b}{2025/07/01}{\cs{FBlegacyfootnote at switch} moved to
+% \changes{v4.0b}{2025-07-01}{\cs{FBlegacyfootnote at switch} moved to
 %    \cs{extrasfrench} (tagging issue).}
 %
 %    |\FBlegacyfootnote at switch| is executed when entering French for the
@@ -4050,12 +4053,12 @@
 \addto\extrasfrench{\bbl at frenchfootnotes}
 %    \end{macrocode}
 %
-% \changes{v4.0c}{2025/07/07}{\cs{StandardFoothotes} and
+% \changes{v4.0c}{2025-07-07}{\cs{StandardFoothotes} and
 %    \cs{FrenchFoothotes} commands removed.}
 %
 %  \subsection{Clean up and exit}
 %
-% \changes{v3.7a}{2025/05/19}{Support for acadian dropped. The files
+% \changes{v3.7a}{2025-05-19}{Support for acadian dropped. The files
 %    \file{acadian.ldf}, \file{canadien.ldf}, \file{frenchb.ldf} and
 %    \file{francais.ldf} load \file{french.ldf} and print a warning.}
 %

Modified: trunk/Master/texmf-dist/source/generic/babel-french/frenchb3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-french/frenchb3.dtx	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/source/generic/babel-french/frenchb3.dtx	2025-08-15 21:26:40 UTC (rev 76067)
@@ -69,7 +69,7 @@
 %<*dtx>
 \ProvidesFile{frenchb3.dtx}
 %</dtx>
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e French support from the babel system]
 %<*dtx|french>
 %%
 %%  Babel package for LaTeX version 2e
@@ -943,7 +943,7 @@
 %
 % \StopEventually{}
 %
-% \changes{v2.6c}{2013/05/20}{Dummy file frenchb.cfg is no longer
+% \changes{v2.6c}{2013-05-20}{Dummy file frenchb.cfg is no longer
 %    generated from frenchb.dtx.}
 %
 %  \clearpage
@@ -953,19 +953,19 @@
 %
 %  \subsection{Initial setup}
 %
-% \changes{v2.1d}{2008/05/02}{Argument of \cs{ProvidesLanguage} changed
+% \changes{v2.1d}{2008-05-02}{Argument of \cs{ProvidesLanguage} changed
 %    above from `french’ to `frenchb’ (otherwise \cs{listfiles} prints
 %    no date/version information).  The real name of current language
 %    (french) as to be corrected before calling \cs{LdfInit}.}
 %
-% \changes{v3.0a}{2014/02/28}{Support for options frenchb, francais,
+% \changes{v3.0a}{2014-02-28}{Support for options frenchb, francais,
 %    canadien, acadian changed.}
 %
-% \changes{v3.0a}{2014/02/19}{\cs{LdfInit} checks \cs{captionsfrench}
+% \changes{v3.0a}{2014-02-19}{\cs{LdfInit} checks \cs{captionsfrench}
 %    instead of \cs{datefrench} to avoid a conflict with papertex.cls
 %    which loads datetime.sty.}
 %
-% \changes{v3.4a}{2018/01/14}{\cs{LdfInit} checks \cs{FBclean at on@exit}
+% \changes{v3.4a}{2018-01-14}{\cs{LdfInit} checks \cs{FBclean at on@exit}
 %    instead of \cs{captionsfrench} (undefined in PLain).
 %    Prevents loading french.ldf again with acadian option.}
 %
@@ -978,7 +978,7 @@
 \LdfInit\CurrentOption{FBclean at on@exit}
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/02/15}{In Plain, provide a substitute for
+% \changes{v3.0a}{2014-02-15}{In Plain, provide a substitute for
 %    \cs{PackageWarning} and \cs{PackageInfo}.}
 %
 %    Let’s provide a substitute for |\PackageError|, |\PackageWarning|
@@ -1004,7 +1004,7 @@
    \endgroup}
 %    \end{macrocode}
 %
-% \changes{v3.4a}{2018/01/04}{babel-french now requires eTeX.}
+% \changes{v3.4a}{2018-01-04}{babel-french now requires eTeX.}
 %
 %    Quit if eTeX is not available.
 %    \begin{macrocode}
@@ -1020,7 +1020,7 @@
 \bbl at tempa
 %    \end{macrocode}
 %
-% \changes{v3.0c}{2014/03/30}{babel-french requires babel-3.9i.}
+% \changes{v3.0c}{2014-03-30}{babel-french requires babel-3.9i.}
 %
 %    Quit if \babel’s version is less than 3.9i.
 %    \begin{macrocode}
@@ -1042,7 +1042,7 @@
 \bbl at tempa
 %    \end{macrocode}
 %
-% \changes{v3.0c}{2014/03/30}{No need to define \cs{l at french} as
+% \changes{v3.0c}{2014-03-30}{No need to define \cs{l at french} as
 %    \cs{lang at french}, babel.def (3.9j) takes care for this.}
 %
 %    Make sure that |\l at french| is defined (fallbacks are
@@ -1070,7 +1070,7 @@
 \providehyphenmins{french}{\tw@\thr@@}
 %    \end{macrocode}
 %
-%\changes{v2.1d}{2008/05/04}{Avoid warning `\cs{end} occurred
+%\changes{v2.1d}{2008-05-04}{Avoid warning `\cs{end} occurred
 %    when \cs{ifx} ... incomplete’ with LaTeX-2.09.}
 %
 % \begin{macro}{\ifLaTeXe}
@@ -1104,18 +1104,18 @@
 %    the XeTeX engine and false for 8-bits engines. |\ifFBXeTeX| is
 %    kept for backward compatibility only.
 %
-% \changes{v2.4a}{2009/11/23}{Added a new `if’ \cs{FBunicode} and
+% \changes{v2.4a}{2009-11-23}{Added a new `if’ \cs{FBunicode} and
 %    some \cs{lccode} definitions to \cs{extrasfrench} and
 %    \cs{noextrasfrench}.}
 %
-% \changes{v2.5d}{2011/01/17}{Added two new `if’ \cs{FBXeTeX} and
+% \changes{v2.5d}{2011-01-17}{Added two new `if’ \cs{FBXeTeX} and
 %    \cs{FBLuaTeX} as XeTeX and behave differently regarding the status
 %     of the French `apostrophe’.}
 %
-% \changes{v2.6g}{2013/12/15}{lccode values for the French
+% \changes{v2.6g}{2013-12-15}{lccode values for the French
 %    `apostrophe’ are now the same for XeTeX and LuaTeX.}
 %
-% \changes{v3.4c}{2018/02/16}{Reverting to former test, beware of
+% \changes{v3.4c}{2018-02-16}{Reverting to former test, beware of
 %    \cs{XeTeXrevision} left as \cs{relax} by careless testing.}
 %
 %    \begin{macrocode}
@@ -1130,7 +1130,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v3.3b}{2017/07/08}{New `if’ \cs{ifFBfrench} to replace
+% \changes{v3.3b}{2017-07-08}{New `if’ \cs{ifFBfrench} to replace
 %    \cs{iflanguage} test which is based on patterns.}
 %
 % \begin{macro}{\ifFBfrench}
@@ -1144,7 +1144,7 @@
 % \end{macro}
 %
 % \begin{macro}{\extrasfrench}
-% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s
+% \changes{v3.0a}{2014-02-18}{Take advantage of babel’s
 %    \cs{babel at savevariable} to handle apostrophe’s \cs{lccode}.}
 %
 % \begin{macro}{\noextrasfrench}
@@ -1164,7 +1164,7 @@
 %    |d’aventure|, |l’utopie|, with XeTeX, and pdfTeX using
 %    \file{hyph-fr.tex} patterns.
 %
-% \changes{v3.5c}{2018/09/11}{\cs{lccode} of quote 0x27 changed from
+% \changes{v3.5c}{2018-09-11}{\cs{lccode} of quote 0x27 changed from
 %     0x2019 to 0x27 for Unicode engines.}
 %
 %    \begin{macrocode}
@@ -1193,7 +1193,7 @@
 %  \subsection{Punctuation}
 %  \label{ssec-punct}
 %
-% \changes{v2.5a}{2010/08/10}{Punctation is no longer made active
+% \changes{v2.5a}{2010-08-10}{Punctation is no longer made active
 %    with XeTeX-based engines.}
 %
 %    As long as no better solution is available, the `high
@@ -1215,7 +1215,7 @@
 %    decides whether the `high punctuation’ characters (|;| |!| |?|
 %    and |:|) have to be made |\active| or not.
 %
-% \changes{v3.2b}{2016/04/18}{New counter \cs{FB at nonchar} needed for
+% \changes{v3.2b}{2016-04-18}{New counter \cs{FB at nonchar} needed for
 %    non characters: it’s value will be 4095 for new engines and 255
 %    for older ones.}
 %
@@ -1241,21 +1241,21 @@
 % \begin{macro}{\FBguillspace}
 % \begin{macro}{\FBcolonspace}
 % \begin{macro}{\FBthinspace}
-% \changes{v2.5a}{2010/08/10}{Define \cs{FBthinspace} for those who want
+% \changes{v2.5a}{2010-08-10}{Define \cs{FBthinspace} for those who want
 %    to customise the width of the space before ; and co.}
 %
-% \changes{v2.6d}{2013/06/19}{Rename \cs{Fthinspace} to
+% \changes{v2.6d}{2013-06-19}{Rename \cs{Fthinspace} to
 %    \cs{FBthinspace} and \cs{Fcolonspace} to \cs{FBcolonspace} to avoid
 %    a conflict with fournier.sty.}
 %
-% \changes{v3.1f}{2015/05/31}{\cs{FBthinspace} is no longer a kern but
+% \changes{v3.1f}{2015-05-31}{\cs{FBthinspace} is no longer a kern but
 %    a skip (babel-french adds a nobreak penalty before it).}
 %
-% \changes{v3.2c}{2016/05/14}{Change .16667em to
+% \changes{v3.2c}{2016-05-14}{Change .16667em to
 %    .5\cs{fontdimen2}\cs{font} to get in XeTeX and pdfTeX
 %    the same spacing as in LuaTeX.}
 %
-% \changes{v3.3a}{2016/04/30}{Skips \cs{FBcolonskip} and
+% \changes{v3.3a}{2016-04-30}{Skips \cs{FBcolonskip} and
 %    \cs{FBthinskip} replaced by toks \cs{FBcolonsp} and
 %    \cs{FBthinsp}.}
 %
@@ -1284,7 +1284,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v3.4a}{2018/01/26}{New command \cs{FBsetspaces} to fine tune
+% \changes{v3.4a}{2018-01-26}{New command \cs{FBsetspaces} to fine tune
 %    spacing independently in French and in French dialects.}
 %
 % \begin{macro}{\FBsetspaces}
@@ -1313,7 +1313,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v3.2c}{2016/05/14}{Newif \cs{ifFB at spacing} and new commands
+% \changes{v3.2c}{2016-05-14}{Newif \cs{ifFB at spacing} and new commands
 %    \cs{FB at spacingon}, \cs{FB at spacingoff} to control space tuning in
 %    French.}
 %
@@ -1359,14 +1359,14 @@
 %    \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
+% \changes{v2.5d}{2011-01-19}{Moved the \cs{newcount} command outside
 %    \cs{ifFB at xetex@punct} ... \cs{fi} (it broke Plain formats).}
 %
-% \changes{v3.1g}{2015/06/14}{Use Babel defined loops \cs{bbl at for}
+% \changes{v3.1g}{2015-06-14}{Use Babel defined loops \cs{bbl at for}
 %    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}
+% \changes{v3.5r}{2023-12-19}{Compatibility with \pkg{ucharclasses}
 %    package added.}
 %
 %    The following part holds specific code for punctuation with XeTeX
@@ -1385,12 +1385,12 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v2.6g}{2013/12/09}{U+00A0 (Unicode nobreakspace) and U+202F
+% \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
 %    punctuation’ characters.}
 %
-% \changes{v2.6h}{2014/01/03}{New class \cs{FB at guilnul} for characters
+% \changes{v2.6h}{2014-01-03}{New class \cs{FB at guilnul} for characters
 %    U+00A0 (Unicode nobreakspace) and U+202F (Unicode
 %    nobreakthinspace), to prevent frenchb from adding spurious spaces
 %    inside quotes.}
@@ -1405,7 +1405,7 @@
   \newXeTeXintercharclass\FB at guilnul
 %    \end{macrocode}
 %
-% \changes{v3.1l}{2016/02/07}{Add a variant of \cs{babel at savevariable}
+% \changes{v3.1l}{2016-02-07}{Add a variant of \cs{babel at savevariable}
 %    to save \cs{XeTeXcharclass}(es) in a loop.}
 %
 %    As |\babel at savevariable| doesn’t work inside a |\bbl at for| loop,
@@ -1432,7 +1432,7 @@
   \def\FB at charlistxeCJK{}
   \edef\FB at charlistsave{\FB at charlist}
   \ifLaTeXe
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
        \IfPackageLoadedTF{ucharclasses}%
          {\ifdefined\BasicLatinClass
             \RenewCommandCopy{\FB at stdchar}{\BasicLatinClass}%
@@ -1458,33 +1458,33 @@
 %    first saves the values to be modified, then fits them to our
 %    needs.
 %
-% \changes{v2.5g}{2011/12/31}{XeTeXcharclass(es) for French quotes will
+% \changes{v2.5g}{2011-12-31}{XeTeXcharclass(es) for French quotes will
 %    be set to \cs{FB at guilo} and \cs{FB at guilf} by options
 %    `og’ and `fg’ in \cs{frenchbsetup}.  French quotes should behave
 %    as normal characters by default in XeLaTeX as in LaTeX.}
 %
-% \changes{v2.5i}{2012/04/20}{\file{xeCJK.sty} changes the
+% \changes{v2.5i}{2012-04-20}{\file{xeCJK.sty} changes the
 %    \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.}
 %
-% \changes{v3.1k}{2015/12/05}{Thin glues (less than 1sp) should not
+% \changes{v3.1k}{2015-12-05}{Thin glues (less than 1sp) should not
 %    trigger space insertion before high ponctuation. Add a check on
 %    \cs{lastkip}.}
 %
-% \changes{v3.1l}{2016/02/07}{Save and restore
+% \changes{v3.1l}{2016-02-07}{Save and restore
 %    \cs{XeTeXinterchartokenstate}, \cs{shorthandon}, \cs{shorthandoff}
 %    using \cs{babel at savevariable} and \cs{babel at save},
 %    \cs{XeTeXcharclass}(es) using \cs{FB at savevariable@loop}.}
 %
-% \changes{v3.2c}{2016/05/14}{Switch \cs{ifFB at spacing} added to all
+% \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*}).}
 %
-% \changes{v3.7a}{2025/06/18}{\cs{XeTeXcharclass}(es) of French double
+% \changes{v3.7a}{2025-06-18}{\cs{XeTeXcharclass}(es) of French double
 %    quotes are set in \cs{FB at xetex@punct at french} if options og=« and/or
 %    fg=» have been selected.}
 %
@@ -1601,7 +1601,7 @@
 %  \subsubsection{Punctuation with standard (pdf)TeX}
 %  \label{sssec-punct-tex}
 %
-% \changes{v3.5j}{2020/07/02}{For memoir, koma-script and beamer
+% \changes{v3.5j}{2020-07-02}{For memoir, koma-script and beamer
 %    captions, \cs{FB at std@sep} has to be defined before activating
 %    the colon.}
 %
@@ -1636,11 +1636,11 @@
 %    defined, up to the user’s wishes, as a non-breaking |\FBthinspace|
 %    or as |\@empty|.
 %
-% \changes{v3.1k}{2015/12/05}{(pdfTeX shorthands) test on \cs{lastskip}
+% \changes{v3.1k}{2015-12-05}{(pdfTeX shorthands) test on \cs{lastskip}
 %    changed from 0pt to 1sp for active punctuation for consistency
 %    with XeTeX and LuaTeX.}
 %
-% \changes{v3.2c}{2016/05/14}{Switch \cs{ifFB at spacing} added to the
+% \changes{v3.2c}{2016-05-14}{Switch \cs{ifFB at spacing} added to the
 %    four French shorthands.}
 %
 %    \begin{macrocode}
@@ -1737,11 +1737,11 @@
 % \begin{macro}{\AutoSpaceBeforeFDP}
 % \begin{macro}{\NoAutoSpaceBeforeFDP}
 %
-% \changes{v2.3a}{2008/10/10}{\cs{NoAutoSpaceBeforeFDP} and
+% \changes{v2.3a}{2008-10-10}{\cs{NoAutoSpaceBeforeFDP} and
 %    \cs{AutoSpaceBeforeFDP} now set the flag
 %    \cs{ifFBAutoSpacePunctuation} accordingly (LaTeX only).}
 %
-% \changes{v2.3e}{2009/10/10}{Execute \cs{AutoSpaceBeforeFDP}
+% \changes{v2.3e}{2009-10-10}{Execute \cs{AutoSpaceBeforeFDP}
 %    also in LaTeX to define \cs{FDP at colonspace}: needed for
 %    tex4ht, pointed out by MPG.}
 %
@@ -1776,7 +1776,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v2.3a}{2008/10/10}{In LaTeX, frenchb no longer adds spaces
+% \changes{v2.3a}{2008-10-10}{In LaTeX, frenchb no longer adds spaces
 %    before `high punctuation’ characters in computer code.
 %    Suggested by Yannis Haralambous.}
 %
@@ -1784,7 +1784,7 @@
 % \begin{macro}{\sffamilyFB}
 % \begin{macro}{\ttfamilyFB}
 %
-% \changes{v2.3c}{2009/02/07}{Commands \cs{ttfamily}, \cs{rmfamily}
+% \changes{v2.3c}{2009-02-07}{Commands \cs{ttfamily}, \cs{rmfamily}
 %    and \cs{sffamily} have to be robust.  Bug introduced in 2.3a,
 %    pointed out by Manuel Pégourié-Gonnard.}
 %
@@ -1802,11 +1802,11 @@
 %    recompile older documents, see option \fbo{OriginalTypewriter}
 %    below.
 %
-% \changes{v2.4c}{2010/05/23}{In \cs{ttfamilyFB}, also cancel
+% \changes{v2.4c}{2010-05-23}{In \cs{ttfamilyFB}, also cancel
 %    automatic spaces inside French guillemets entered as characters
 %    (see \cs{frenchbsetup}).}
 %
-% \changes{v3.2c}{2016/05/14}{New definitions of \cs{ttfamilyFB} and
+% \changes{v3.2c}{2016-05-14}{New definitions of \cs{ttfamilyFB} and
 %    co, common to all engines, based on flag \cs{ifFB at spacing}.}
 %
 %    To be consistent with what is done for the |; : ! ?|
@@ -1827,7 +1827,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v2.5a}{2010/08/14}{New command \cs{NoAutoSpacing},
+% \changes{v2.5a}{2010-08-14}{New command \cs{NoAutoSpacing},
 %    suggested by MPG.}
 %
 % \begin{macro}{\NoAutoSpacing}
@@ -1839,12 +1839,12 @@
 %    The faked definition of |\texorpdfstring| will be overwritten
 %    by \file{hyperref.sty}.
 %
-% \changes{v3.2b}{2016/04/18}{\cs{NoAutoSpacing} made robust.}
+% \changes{v3.2b}{2016-04-18}{\cs{NoAutoSpacing} made robust.}
 %
-% \changes{v3.2c}{2016/05/14}{New definition based on
+% \changes{v3.2c}{2016-05-14}{New definition based on
 %    \cs{FB at spacing@off} common to all engines.}
 %
-% \changes{v3.6b}{2024/06/26}{\cs{NoAutoSpacing} must be inhibited
+% \changes{v3.6b}{2024-06-26}{\cs{NoAutoSpacing} must be inhibited
 %    in bookmarks.}
 %
 %    \begin{macrocode}
@@ -1872,7 +1872,7 @@
 %    For XeLaTeX |\guillemotleft| and |\guillemotright|
 %    are defined by package \pkg{fontspec} (v.~2.5d and up).
 %
-% \changes{v2.5a}{2010/08/20}{Change \cs{guillemotleft} and
+% \changes{v2.5a}{2010-08-20}{Change \cs{guillemotleft} and
 %    \cs{guillemotright} definitions for Unicode anf provide
 %    definitions for \cs{textquotedblleft} and
 %    \cs{textquotedbright}.  Insures correct printing of quotes
@@ -1913,7 +1913,7 @@
 %    |\FB at fg|, the expansion of the top level commands |\og| and |\fg|
 %    is different in and outside French.
 %
-% \changes{v3.5k}{2020/07/17}{\cs{FB at og} and \cs{FB at fg} now rely
+% \changes{v3.5k}{2020-07-17}{\cs{FB at og} and \cs{FB at fg} now rely
 %    on \cs{texorpdfstring} to be safe in bookmarks.}
 %
 %    |\FB at og| and |\FB at fg| are now designed to work in bookmarks.
@@ -1922,7 +1922,7 @@
 \newcommand*{\FB at fg}{\texorpdfstring{\@FB at fg}{\space\guillemotright}}
 %    \end{macrocode}
 %
-%\changes{v3.0a}{2014/01/10}{Definitions of \cs{FB at og} and \cs{FB at fg}
+%\changes{v3.0a}{2014-01-10}{Definitions of \cs{FB at og} and \cs{FB at fg}
 %    now depend on punctuation handling (LuaTeX / XeTeX / active).}
 %
 %    The internal definitions |\@FB at og| and |\@FB at fg| need
@@ -1976,11 +1976,11 @@
 %    or |\ | to get a space after |\fg|, otherwise |\xspace| will be
 %    defined as |\relax| (done at the end of this file).
 %
-% \changes{v2.5a}{2010/08/20}{\cs{og} and \cs{fg} do not print
+% \changes{v2.5a}{2010-08-20}{\cs{og} and \cs{fg} do not print
 %    correctly in English when using XeTeX or LuaTeX, fixed by using
 %    \cs{textquotedblleft} and \cs{textquotedblright} defined above.}
 %
-% \changes{v3.2a}{2016/03/18}{\cs{xspace} moved from \cs{FB at fg} to
+% \changes{v3.2a}{2016-03-18}{\cs{xspace} moved from \cs{FB at fg} to
 %    \cs{fg}: \cs{xspace} messes up \cs{frquote}, pointed out by Sonia
 %    Labetoulle.  As a side effect \cs{xspace} is now active in \cs{fg}
 %    in and outside French.}
@@ -2003,7 +2003,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v3.0a}{2014/01/10}{\cs{bbl at nonfrenchguillemets} deleted,
+% \changes{v3.0a}{2014-01-10}{\cs{bbl at nonfrenchguillemets} deleted,
 %    use \cs{babel at save} instead.}
 %
 %    \begin{macrocode}
@@ -2011,7 +2011,7 @@
                     \bbl at frenchguillemets}
 %    \end{macrocode}
 %
-% \changes{v3.1a}{2014/05/20}{New command \cs{frquote} for imbedded or
+% \changes{v3.1a}{2014-05-20}{New command \cs{frquote} for imbedded or
 %    long French quotations.}
 %
 % \begin{macro}{\frquote}
@@ -2020,7 +2020,7 @@
 %    Let’s define the default quote characters to be used for level one
 %    or two of quotes…
 %
-% \changes{v3.7a}{2024/08/19}{Flag \cs{ifFBcloseguill} does not apply
+% \changes{v3.7a}{2024-08-19}{Flag \cs{ifFBcloseguill} does not apply
 %    to \cs{@fgii}.}
 %
 %    \begin{macrocode}
@@ -2042,10 +2042,10 @@
 %    \end{macrocode}
 %    and the needed technical stuff to handle options:
 %
-% \changes{v3.2g}{2017/01/30}{Default options of \cs{frquote} are no
+% \changes{v3.2g}{2017-01-30}{Default options of \cs{frquote} are no
 %    longer engine-dependent.}
 %
-% \changes{v3.5b}{2018/07/15}{New command \cs{FB at addquote@everypar} to
+% \changes{v3.5b}{2018-07-15}{New command \cs{FB at addquote@everypar} to
 %    manage \cs{everypar}: \cs{frquote} failed when used immediately
 %    after a sectionning command.}
 %
@@ -2073,7 +2073,7 @@
 \let\FBeveryline at quote\empty
 %    \end{macrocode}
 %
-% \changes{v3.5k}{2020/07/18}{\cs{frquote} now relies on
+% \changes{v3.5k}{2020-07-18}{\cs{frquote} now relies on
 %    \cs{texorpdfstring} to be safe in bookmarks.}
 %
 %    The main command |\frquote| accepts (in LaTeX2e only) a starred
@@ -2095,15 +2095,15 @@
 \fi
 %    \end{macrocode}
 %
-% \changes{v3.1j}{2015/11/25}{\cs{fr at quote} completely rewritten:
+% \changes{v3.1j}{2015-11-25}{\cs{fr at quote} completely rewritten:
 %    \cs{leavevmode} added and explicitly save/retore \cs{everypar} and
 %    \cs{localleftbox} instead of using a group in order to ensure
 %    compatibility with package wrapfig.}
 %
-% \changes{v3.1j}{2015/11/21}{\cs{PackageWarning} is undefined in
+% \changes{v3.1j}{2015-11-21}{\cs{PackageWarning} is undefined in
 %    Plain, use \cs{fb at warning} instead.}
 %
-% \changes{v3.3a}{2017/04/30}{\cs{FB at quotespace} (kern), changed
+% \changes{v3.3a}{2017-04-30}{\cs{FB at quotespace} (kern), changed
 %    into \cs{FB at guillspace}.}
 %
 %    The internal command |\fr at quote| takes one (long) argument: the
@@ -2131,7 +2131,7 @@
 %     We eventually need to redefine |\FBeverypar at quote|
 %    for level 2 quotations:
 %
-%    \changes{v3.5c}{2018/09/14}{\cs{FBeverypar at quote}’s value now properly
+%    \changes{v3.5c}{2018-09-14}{\cs{FBeverypar at quote}’s value now properly
 %    reset across level changes.}
 %
 %    \begin{macrocode}
@@ -2160,7 +2160,7 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v3.5e}{2019/03/14}{Make resettings global on exit.}
+% \changes{v3.5e}{2019-03-14}{Make resettings global on exit.}
 %
 %    Closing: step down |\FBguill at level| and clean on exit.
 %    Changes made global in case |\frquote{}| ends inside an
@@ -2173,7 +2173,7 @@
   \fi
 }
 %    \end{macrocode}
-% \changes{v3.5e}{2019/03/14}{new command \cs{NoEveryParQuote}.}
+% \changes{v3.5e}{2019-03-14}{new command \cs{NoEveryParQuote}.}
 %
 %    The next command is intended to be used in list environments to
 %    suppress quotes which might be added by |\FBeverypar at quote| after
@@ -2195,19 +2195,19 @@
 %    This new implementation relies on commands |\SetString| and
 %    |\SetStringLoop|, therefore requires \babel~3.10 or newer.
 %
-% \changes{v2.0}{2006/11/06}{2 `\cs{relax}’ added in
+% \changes{v2.0}{2006-11-06}{2 `\cs{relax}’ added in
 %    \cs{today}’s definition.}
 %
-% \changes{v2.1a}{2008/03/25}{\cs{today} changed (correction in 2.0
+% \changes{v2.1a}{2008-03-25}{\cs{today} changed (correction in 2.0
 %    was wrong: \cs{today} was printed without spaces in toc).}
 %
-% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s \cs{SetString}
+% \changes{v3.0a}{2014-02-18}{Take advantage of babel’s \cs{SetString}
 %    commands for \cs{datefrench}.  Doesn’t work with Plain (yet?).}
 %
-% \changes{v3.4a}{2018/01/04}{Specific code for Plain finally removed
+% \changes{v3.4a}{2018-01-04}{Specific code for Plain finally removed
 %    (babel bug reported).}
 %
-% \changes{v3.4b}{2018/02/04}{Do not redefine \cs{date} as
+% \changes{v3.4b}{2018-02-04}{Do not redefine \cs{date} as
 %    \cs{frenchdate} in French.}
 %
 %    \begin{macrocode}
@@ -2243,16 +2243,16 @@
 %
 %    Let’s provide the French user with some extra utilities.
 %
-% \changes{v2.1a}{2008/03/24}{Command \cs{fup} added to produce
+% \changes{v2.1a}{2008-03-24}{Command \cs{fup} added to produce
 %    better superscripts than \cs{textsuperscript}.}
 %
 % \begin{macro}{\up}
 %
-% \changes{v2.1c}{2008/04/29}{Provide a temporary definition
+% \changes{v2.1c}{2008-04-29}{Provide a temporary definition
 %    (hyperref safe) of \cs{up} in case it has to be expanded in
 %    the preamble (by beamer’s \cs{title} command for instance).}
 %
-% \changes{v2.4d}{2010/07/28}{Command \cs{up} defined with
+% \changes{v2.4d}{2010-07-28}{Command \cs{up} defined with
 %    \cs{providecommand} instead of \cs{newcommand} as \cs{up} may be
 %    defined elsewhere (catalan.ldf).
 %    Bug pointed out by Felip Manyé i Ballester.}
@@ -2259,17 +2259,17 @@
 %
 % \begin{macro}{\fup}
 %
-% \changes{v2.1b}{2008/04/02}{Command \cs{fup} changed to use
+% \changes{v2.1b}{2008-04-02}{Command \cs{fup} changed to use
 %    real superscripts from fourier v.~1.6.}
 %
-% \changes{v2.2a}{2008/05/08}{\cs{newif} and \cs{newdimen} moved
+% \changes{v2.2a}{2008-05-08}{\cs{newif} and \cs{newdimen} moved
 %    before \cs{ifLaTeXe} to avoid an error with plainTeX.}
 %
-% \changes{v2.3a}{2008/09/30}{\cs{lowercase} changed to
+% \changes{v2.3a}{2008-09-30}{\cs{lowercase} changed to
 %    \cs{MakeLowercase} as the former doesn’t work for non ASCII
 %    characters in encodings like applemac, utf-8,…}
 %
-% \changes{v3.5k}{2020/07/18}{\cs{up} and \cs{fup} now rely on
+% \changes{v3.5k}{2020-07-18}{\cs{up} and \cs{fup} now rely on
 %    \cs{texorpdfstring} to be safe in bookmarks.}
 %
 %    |\up| eases the typesetting of superscripts like
@@ -2396,7 +2396,7 @@
 % \begin{macro}{\iemes}
 % \begin{macro}{\iers}
 % \begin{macro}{\ieres}
-% \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
+% \changes{v3.1b}{2014-06-23}{Removed \cs{lowercase} from definitions
 %    of \cs{ieme} and co: \cs{up} already does the conversion.}
 %
 %    Some handy macros for those who don’t know how to abbreviate
@@ -2416,7 +2416,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v3.3c}{2017/07/23}{New configurable kerns \cs{FBmedkern},
+% \changes{v3.3c}{2017-07-23}{New configurable kerns \cs{FBmedkern},
 %    and \cs{FBthickkern} suitable for HTML translation.}
 %
 % \begin{macro}{\FBmedkern}
@@ -2428,7 +2428,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v2.1c}{2008/04/29}{Added commands \cs{Nos} and \cs{nos}.}
+% \changes{v2.1c}{2008-04-29}{Added commands \cs{Nos} and \cs{nos}.}
 %
 % \begin{macro}{\primo}
 % \begin{macro}{\fprimo)}
@@ -2436,11 +2436,11 @@
 % \begin{macro}{\Nos}
 % \begin{macro}{\No}
 % \begin{macro}{\no}
-% \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
+% \changes{v3.1b}{2014-06-23}{Removed \cs{lowercase} from definitions
 %    of \cs{FrenchEnumerate}, … \cs{No} and co: \cs{up} already
 %    does the conversion.}
 %
-% \changes{v3.5k}{2020/07/18}{\cs{no}, \cs{nos}, \cs{No}, \cs{Nos},
+% \changes{v3.5k}{2020-07-18}{\cs{no}, \cs{nos}, \cs{No}, \cs{Nos},
 %    \cs{primo}, \cs{fprimo}, now rely on \cs{texorpdfstring} to be
 %    safe in bookmarks.}
 %
@@ -2497,13 +2497,13 @@
 %    names (such as Dupont-Durand) can now be hyphenated on explicit
 %    hyphens.
 %
-% \changes{v2.0}{2006/11/06}{\cs{hbox} dropped, replaced by
+% \changes{v2.0}{2006-11-06}{\cs{hbox} dropped, replaced by
 %    \cs{kern0pt}.}
 %
-% \changes{v3.5k}{2020/07/18}{\cs{bsc} now relies on
+% \changes{v3.5k}{2020-07-18}{\cs{bsc} now relies on
 %    \cs{texorpdfstring} to be safe in bookmarks.}
 %
-% \changes{v3.5n}{2022/04/01}{Added command \cs{bname} (no small caps).}
+% \changes{v3.5n}{2022-04-01}{Added command \cs{bname} (no small caps).}
 %
 %    \begin{macrocode}
 \ifLaTeXe
@@ -2529,13 +2529,13 @@
 %    |\backslash|.  |\degre| can be accessed by the command |\r{}|
 %    for ring accent.
 %
-% \changes{v2.5f}{2011/07/18}{Changed definitions of \cs{at},
+% \changes{v2.5f}{2011-07-18}{Changed definitions of \cs{at},
 %    \cs{circonflexe}, \cs{tild}, \cs{boi} and \cs{degre} for
 %    Unicode based engines.}
 %
-% \changes{v3.2g}{2017/01/24}{Changed Unicode definition of \cs{boi}.}
+% \changes{v3.2g}{2017-01-24}{Changed Unicode definition of \cs{boi}.}
 %
-% \changes{v3.5k}{2020/07/30}{\cs{degre}, \cs{degres}, \cs{circonflexe},
+% \changes{v3.5k}{2020-07-30}{\cs{degre}, \cs{degres}, \cs{circonflexe},
 %    \cs{tild}, \cs{boi} and \cs{at} are now safe in bookmarks.}
 %
 %    \begin{macrocode}
@@ -2558,15 +2558,15 @@
 %    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}
+% \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.}
 %
-% \changes{v2.1c}{2008/04/29}{Provide a temporary definition (hyperref
+% \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
+% \changes{v3.6a}{2024-05-20}{Simplify \cs{degres} definition for text
 %    and math mode: \cs{textdegree} always defined (TS1) since 2019.}
 %
 %    \begin{macrocode}
@@ -2598,13 +2598,13 @@
 %    (no space added); |\StandardMathComma| switches back to the
 %    standard behaviour of the comma.
 %
-% \changes{v3.2e}{2017/01/09}{\cs{DecimalMathComma} didn’t work
+% \changes{v3.2e}{2017-01-09}{\cs{DecimalMathComma} didn’t work
 %    with LuaTeX.  Fixed now.}
 %
-% \changes{v3.2f}{2017/01/15}{Fixed conflict with the icomma
+% \changes{v3.2f}{2017-01-15}{Fixed conflict with the icomma
 %    package.}
 %
-% \changes{v3.5p}{2023/01/02}{\cs{DecimalMathComma} can again be
+% \changes{v3.5p}{2023-01-02}{\cs{DecimalMathComma} can again be
 %    used in the preamble for a global action.  It now works as
 %    expected inside a group.}
 %
@@ -2706,17 +2706,16 @@
 %    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.
+%    all parts of the document that are typeset in French.
 %    Can be canceled anytime by |\StandardMathComma|.
 %    \begin{macrocode}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
   \@FBpreamblefalse
   \IfPackageLoadedTF{icomma}%
      {\FB at icommatrue
       \if at preamble@DecimalMathComma
-        \PackageWarning{french3.ldf}{%
-          icomma package loaded, \protect\DecimalMathComma%
-          \MessageBreak does nothing.  Reported}%
+        \FBWarning{icomma package loaded, \protect\DecimalMathComma%
+                   \MessageBreak does nothing.  Reported}%
       \fi
      }%
      {\if at preamble@DecimalMathComma
@@ -2742,7 +2741,7 @@
 %   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
+% \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}}
@@ -2750,7 +2749,7 @@
    \ifdefined\numprint
      \numprint{#1}%
    \else
-     \PackageWarning{french3.ldf}{%
+     \FBWarning{%
         \protect\nombre\space now relies on package numprint.sty,%
         \MessageBreak add \protect
         \usepackage[autolanguage]{numprint},\MessageBreak
@@ -2763,10 +2762,10 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v3.3c}{2017/08/10}{New command \cs{FBthousandsep} to
+% \changes{v3.3c}{2017-08-10}{New command \cs{FBthousandsep} to
 %    customise numprint.}
 %
-% \changes{v3.4a}{2017/12/29}{Shrink/stretch removed in
+% \changes{v3.4a}{2017-12-29}{Shrink/stretch removed in
 %    \cs{FBthousandsep}.}
 %
 %    \begin{macrocode}
@@ -2773,7 +2772,7 @@
 \newcommand*{\FBthousandsep}{\kern \fontdimen2\font \relax}
 %    \end{macrocode}
 %
-% \changes{v2.0c}{2007/06/25}{There is no need to define here
+% \changes{v2.0c}{2007-06-25}{There is no need to define here
 %    numprint’s command \cs{npstylefrench}, it will be redefined
 %    `AtBeginDocument’ by \cs{FBprocess at options}.}
 %
@@ -2783,29 +2782,29 @@
 %    The next step consists in defining the French equivalents for
 %    the LaTeX caption names.
 %
-% \changes{v2.0}{2006/11/06}{`Fig.’ changed to `Figure’ and
+% \changes{v2.0}{2006-11-06}{`Fig.’ changed to `Figure’ and
 %    `Tab.’ to `Table’.}
 %
-% \changes{v2.5a}{2010/08/16}{\cs{emph} deleted in \cs{seename}
+% \changes{v2.5a}{2010-08-16}{\cs{emph} deleted in \cs{seename}
 %    and \cs{alsoname} to match what is done for the other languages.
 %    Suggested by Marc Baudoin.}
 %
-% \changes{v3.0a}{2014/02/18}{Take advantage of babel’s \cs{SetString}
+% \changes{v3.0a}{2014-02-18}{Take advantage of babel’s \cs{SetString}
 %    commands for captionnames.}
 %
-% \changes{v3.1b}{2014/09/15}{Change \cs{scshape} to customisable
+% \changes{v3.1b}{2014-09-15}{Change \cs{scshape} to customisable
 %    \cs{FBfigtabshape} for \cs{figurename} and \cs{tablename}.}
 %
-% \changes{v3.1g}{2015/05/10}{\cs{partname}’s definition depends now on
+% \changes{v3.1g}{2015-05-10}{\cs{partname}’s definition depends now on
 %    flag PartNameFull.  No need to redefine it in \cs{frenchbsetup}.}
 %
-% \changes{v3.3a}{2017/04/30}{Commands \cs{frenchpartfirst},
+% \changes{v3.3a}{2017-04-30}{Commands \cs{frenchpartfirst},
 %    \cs{frenchpartsecond} and \cs{frenchpartnameord} added.}
 %
-% \changes{v3.5k}{2020/09/09}{Small caps removed in \cs{figurename} and
+% \changes{v3.5k}{2020-09-09}{Small caps removed in \cs{figurename} and
 %    \cs{tablename}, use \cs{fnum at figure} and \cs{fnum at table} instead.}
 %
-% \changes{v3.5l}{2020/10/08}{Redefine \cs{fnum at figure} and
+% \changes{v3.5l}{2020-10-08}{Redefine \cs{fnum at figure} and
 %    \cs{fnum at table} separately.}
 %
 %    New implementation for caption names (requires \babel’s~3.10 or
@@ -2884,7 +2883,7 @@
 \providecommand*{\FBfigtabshape}{\scshape}
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/02/28}{Merging of \cs{captionsfrenchb},
+% \changes{v3.0a}{2014-02-28}{Merging of \cs{captionsfrenchb},
 %    \cs{captionsfrancais} with \cs{captionsfrench} deleted in favor
 %    of new babel 3.9 syntax.}
 %
@@ -2891,7 +2890,7 @@
 %  \subsection{Figure and table captions}
 %  \label{ssec-captions-fig}
 %
-% \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to
+% \changes{v2.4a}{2009-11-23}{\cs{PackageWarning} changed to
 %    \cs{FBWarning} (in case \cs{@makecaption} has been customised).
 %    \cs{FBWarning} is defined as \cs{PackageWarning} by default but
 %    can be made silent using \cs{frenchbsetup}, (suggested by MPG).}
@@ -2927,14 +2926,14 @@
 %    it can be also set to |\CaptionSeparator| (` -- ’) using
 %    \fbo{CustomiseFigTabCaptions}.
 %
-% \changes{v2.6c}{2013/05/18}{Former \cs{CaptionSeparator}
+% \changes{v2.6c}{2013-05-18}{Former \cs{CaptionSeparator}
 %    has been renamed as \cs{FBCaption at Separator};
 %    Newif \cs{if at FBwarning@capsep} added.}
 %
-% \changes{v2.6h}{2014/01/03}{No active catcodes in
+% \changes{v2.6h}{2014-01-03}{No active catcodes in
 %    \cs{STD at makecaption}’s definition.}
 %
-% \changes{v3.0a}{2014/02/28}{Remove \cs{FBCaption at SeparatorORI}, use
+% \changes{v3.0a}{2014-02-28}{Remove \cs{FBCaption at SeparatorORI}, use
 %    \cs{babel at save} instead.}
 %
 %    While saving the standard definition of |\@makecaption| we have to
@@ -2987,10 +2986,10 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v2.6c}{2013/05/18}{No warning about \cs{@makecaption} for
+% \changes{v2.6c}{2013-05-18}{No warning about \cs{@makecaption} for
 %    AMS classes.}
 %
-% \changes{v3.0a}{2014/02/20}{No warning about \cs{@makecaption} for
+% \changes{v3.0a}{2014-02-20}{No warning about \cs{@makecaption} for
 %    SMF classes.}
 %
 %    Disable the standard warning with AMS and SMF classes.
@@ -3004,7 +3003,7 @@
 \@ifclassloaded{smfbook}{\@FBwarning at capsepfalse}{}
 %    \end{macrocode}
 %
-% \changes{v3.5l}{2020/10/01}{No warning about \cs{@makecaption} for
+% \changes{v3.5l}{2020-10-01}{No warning about \cs{@makecaption} for
 %    more classes.}
 %
 %    Disable the standard warning for some classes that do not use
@@ -3016,10 +3015,10 @@
 \@ifclassloaded{svjour3}{\@FBwarning at capsepfalse}{}
 %    \end{macrocode}
 %
-% \changes{v2.6c}{2013/05/18}{No warning about \cs{@makecaption} for
+% \changes{v2.6c}{2013-05-18}{No warning about \cs{@makecaption} for
 %    koma-script classes. \cs{captionformat} customised in French.}
 %
-% \changes{v2.6h}{2014/01/05}{If \cs{@makecaption} is undefined, no
+% \changes{v2.6h}{2014-01-05}{If \cs{@makecaption} is undefined, no
 %    warning.}
 %
 %    No warning with \cls{memoir} or koma-script classes: they change
@@ -3038,19 +3037,19 @@
 \ifdefined\@makecaption\else\@FBwarning at capsepfalse\fi
 %    \end{macrocode}
 %
-% \changes{v2.6c}{2013/05/18}{Warning added when the caption
+% \changes{v2.6c}{2013-05-18}{Warning added when the caption
 %    or floatrow package is loaded before babel/french.}
 %
-% \changes{v3.2b}{2016/03/30}{Warning added when the subcaption
+% \changes{v3.2b}{2016-03-30}{Warning added when the subcaption
 %    package is loaded before babel/french.}
 %
-% \changes{v3.3c}{2017/08/16}{Reorganise warnings when the caption,
+% \changes{v3.3c}{2017-08-16}{Reorganise warnings when the caption,
 %    subcaption or floatrow packages are loaded before babel/french.}
 %
-% \changes{v3.5k}{2020/09/06}{Reorganise warnings about `:’ in captions,
+% \changes{v3.5k}{2020-09-06}{Reorganise warnings about `:’ in captions,
 %    according to enhancements in caption.sty v3.5a.}
 %
-% \changes{v3.0a}{2014/02/20}{More informative, less TeXnical warning
+% \changes{v3.0a}{2014-02-20}{More informative, less TeXnical warning
 %    about \cs{@makecaption}.}
 %
 %    Check the definition of |\@makecaption| (|\AtBeginDocument|,
@@ -3060,7 +3059,7 @@
 %    |\FBCaption at Separator|, taking care that the colon is typeset
 %    correctly in French (\emph{not} `Figure~1: légende’).
 %
-% \changes{v3.1f}{2015/05/31}{\cs{FBCaption at Separator} changed when
+% \changes{v3.1f}{2015-05-31}{\cs{FBCaption at Separator} changed when
 %    option CustomiseFigTabCaptions is set to false.}
 %
 %    \begin{macrocode}
@@ -3123,14 +3122,14 @@
 %    used in French.  The same is true for Unicode fonts in use
 %    with XeTeX.
 %
-% \changes{v2.0}{2006/11/06}{Added special case for LY1 encoding,
-%    see bug report from Bruno Voisin (2004/05/18).}
+% \changes{v2.0}{2006-11-06}{Added special case for LY1 encoding,
+%    see bug report from Bruno Voisin (2004-05-18).}
 %
-% \changes{v2.5f}{2011/06/18}{Unicode fonts also provide a ready made
+% \changes{v2.5f}{2011-06-18}{Unicode fonts also provide a ready made
 %    character for \cs{textellipsis}, let’s just use it!
-%    (reported by Maxime Chupin, 2011/06/04).}
+%    (reported by Maxime Chupin, 2011-06-04).}
 %
-% \changes{v3.5m}{2021/07/19}{No longer redefine \cs{dots}, only
+% \changes{v3.5m}{2021-07-19}{No longer redefine \cs{dots}, only
 %    \cs{textellipsis}’s default definition is changed in French.}
 %
 %    \begin{macrocode}
@@ -3151,11 +3150,11 @@
 %  \subsection{More checks about packages’ loading order}
 %  \label{ssec-loading-order}
 %
-% \changes{v3.1d}{2015/04/06}{New section: issue warnings if packages
+% \changes{v3.1d}{2015-04-06}{New section: issue warnings if packages
 %    listings, numprint and natbib are loaded too early or too late
 %    vs babel.}
 %
-% \changes{v3.1i}{2015/10/03}{Remove restriction about loading
+% \changes{v3.1i}{2015-10-03}{Remove restriction about loading
 %    numprint.sty after babel.}
 %
 %    Like packages \file{captions} and \file{floatrow} (see
@@ -3166,7 +3165,7 @@
 %    \begin{macrocode}
 \ifFB at active@punct
    \IfPackageLoadedTF{listings}
-      {\AddToHook{env/document/before}{%
+      {\AddToHookNext{env/document/before}{%
          \FBWarning{Please load the "listings" package\MessageBreak
                     AFTER babel/french; reported}}%
       }{}
@@ -3181,7 +3180,7 @@
 \ifFB at active@punct
   \IfPackageLoadedTF{natbib}{}{\@FBwarning at natbibtrue}
 \fi
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@natbib
      \IfPackageLoadedTF{natbib}{}{\@FBwarning at natbibfalse}%
    \fi
@@ -3192,7 +3191,7 @@
 }
 %    \end{macrocode}
 %
-% \changes{v3.2g}{2017/01/30}{Issue a warning if beamerarticle.sty
+% \changes{v3.2g}{2017-01-30}{Issue a warning if beamerarticle.sty
 %    is loaded after babel.}
 %
 %    Package \pkg{beamerarticle} should be loaded before \frenchb{}
@@ -3201,7 +3200,7 @@
 %    \begin{macrocode}
 \newif\if at FBwarning@beamerarticle
 \IfPackageLoadedTF{beamerarticle}{}{\@FBwarning at beamerarticletrue}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@beamerarticle
      \IfPackageLoadedTF{beamerarticle}{}%
                                      {\@FBwarning at beamerarticlefalse}%
@@ -3221,7 +3220,7 @@
 \NeedsTeXFormat{LaTeX2e}[2022-06-01]
 %    \end{macrocode}
 %
-%\changes{v3.7b}{2025/07/02}{New \cs{ifFBnewlists} and
+%\changes{v3.7b}{2025-07-02}{New \cs{ifFBnewlists} and
 %    \cs{ifFBnewfootnotes} to handle the corresponding new templates.}
 %
 %    If the new templates for lists and footnotes are available,
@@ -3233,14 +3232,14 @@
 \IfPackageLoadedTF{latex-lab-testphase-block}{\FBnewfootnotestrue}{}
 %    \end{macrocode}
 %
-% \changes{v2.0}{2006/11/06}{New command \cs{frenchbsetup} added
+% \changes{v2.0}{2006-11-06}{New command \cs{frenchbsetup} added
 %     for global customisation.}
 %
-% \changes{v3.0a}{2014/02/24}{Options processing completely
+% \changes{v3.0a}{2014-02-24}{Options processing completely
 %    reorganised, now \cs{babel at save} and\cs{babel at savevariable} are
 %    usable for French.}
 %
-% \changes{v3.6a}{2024/05/16}{Internal `l3keys’ replaces package
+% \changes{v3.6a}{2024-05-16}{Internal `l3keys’ replaces package
 %    `keyval’ for options’ management.}
 %
 %    All setup options are handled by command \fbsetup{} based on
@@ -3291,10 +3290,10 @@
 \newif\ifFBINGuillSpace
 %    \end{macrocode}
 %
-% \changes{v3.1g}{2015/05/10}{Bug fix for koma-scripts classes:
+% \changes{v3.1g}{2015-05-10}{Bug fix for koma-scripts classes:
 %    a spurious dot was added by the \cs{partformat} command.}
 %
-% \changes{v3.4a}{2018/01/07}{Patch for koma-script classes moved here,
+% \changes{v3.4a}{2018-01-07}{Patch for koma-script classes moved here,
 %    after \cs{ifFBPartNameFull} is defined, so that it applies to
 %    \cs{extrasacadian} too: \cs{AtEndOfPackage} is too late.}
 %
@@ -3314,7 +3313,7 @@
 \fi
 %    \end{macrocode}
 %
-% \changes{v2.5b}{2010/10/30}{Do not use the
+% \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
@@ -3322,16 +3321,16 @@
 %    In this case \cs{l at french} and \cs{l at english} are 0.
 %    Pointed out by Günter Milde.}
 %
-% \changes{v3.0c}{2014/03/30}{No list customisation when beamer
+% \changes{v3.0c}{2014-03-30}{No list customisation when beamer
 %    class is loaded.}
 %
-% \changes{v3.2g}{2017/01/30}{Minimal list customisation when
+% \changes{v3.2g}{2017-01-30}{Minimal list customisation when
 %    beamerarticle.sty is loaded.}
 %
-% \changes{v3.2h}{2017/04/11}{Option GlobalLayoutFrench skipped
+% \changes{v3.2h}{2017-04-11}{Option GlobalLayoutFrench skipped
 %    when French is not the main language.}
 %
-% \changes{v3.5e}{2019/03/14}{StandardLayout and GlobalLayoutFrench
+% \changes{v3.5e}{2019-03-14}{StandardLayout and GlobalLayoutFrench
 %    options can no longer be toggled when French is not the main
 %    language.}
 %
@@ -3353,7 +3352,7 @@
 %    section~\ref{ssec-loading-order}; a light customisation is
 %    compatible with the \pkg{beamerarticle} package.
 %
-% \changes{v3.5n}{2022/04/18}{\cs{FBGlobalLayoutFrench} no longer set to
+% \changes{v3.5n}{2022-04-18}{\cs{FBGlobalLayoutFrench} no longer set to
 %    false when French is not the main language.}
 %
 %    \begin{macrocode}
@@ -3446,21 +3445,21 @@
 %    key) or later (at |\begin{document}|) by |\FBprocess at options|.
 %    \fbsetup{} can only be called in the preamble.
 %
-% \changes{v2.0c}{2007/06/25}{Option ThinSpaceInFrenchNumbers added.}
+% \changes{v2.0c}{2007-06-25}{Option ThinSpaceInFrenchNumbers added.}
 %
-% \changes{v2.0d}{2007/07/15}{Options og and fg changed: limit
+% \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.0e}{2007-10-05}{New option: StandardLists.}
 %
-% \changes{v2.0f}{2008/03/23}{Two typos corrected in
+% \changes{v2.0f}{2008-03-23}{Two typos corrected in
 %    option StandardLists.}
 %
-% \changes{v2.0f}{2008/03/23}{StandardLayout option had no
+% \changes{v2.0f}{2008-03-23}{StandardLayout option had no
 %    effect on lists.  Test moved to \cs{FBprocess at options}.}
 %
-% \changes{v2.0g}{2008/03/23}{Revert previous change to
+% \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
@@ -3468,60 +3467,60 @@
 %    change their value before executing \cs{FBprocess at options}.
 %    Same thing for option StandardLists.}
 %
-% \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts
+% \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.1a}{2008-03-30}{New option: LowercaseSuperscripts.}
 %
-% \changes{v2.2a}{2008/05/08}{The global layout of the document is
+% \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 at main@language}).  Suggested by Ulrike Fischer.}
 %
-% \changes{v2.2a}{2008/05/08}{Default values of flags changed:
+% \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 at main@language}.}
 %
-% \changes{v2.2a}{2008/05/08}{When frenchb is babel’s last option,
+% \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.4a}{2009-11-23}{New option SuppressWarning.}
 %
-% \changes{v2.6a}{2013/01/30}{New options ListOldLayout,
+% \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
+% \changes{v3.0a}{2014-02-28}{New options OldFigTabCaptions and
 %    CustomiseFigTabCaptions.}
 %
-% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.}
+% \changes{v3.0c}{2014-04-18}{New option INGuillSpace.}
 %
-% \changes{v3.1a}{2014/05/20}{New options InnerGuillSingle,
+% \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.1b}{2014-09-15}{New option SmallCapsFigTabCaptions.}
 %
-% \changes{v3.1e}{2015/04/10}{Corrected typo: 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,
+% \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
+% \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
+% \changes{v3.3a}{2017-04-30}{Options INGuillSpace, ThinColonSpace no
 %    longer delayed AtBeginDocument.}
 %
-% \changes{v3.5a}{2018/07/04}{New option ListItemsAsPar for displaying
+% \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
+% \changes{v3.5d}{2019-01-24}{ReduceListSpacing option depreciated: see
 %    StandardListSpacing.}
 %
-% \changes{v3.7a}{2025/06/28}{Option GlobalLayoutFrench deleted.}
+% \changes{v3.7a}{2025-06-28}{Option GlobalLayoutFrench deleted.}
 %
 %    \begin{macrocode}
 \newcommand*{\frenchsetup}[1]{%
@@ -3535,7 +3534,7 @@
 \@onlypreamble\frenchbsetup
 %    \end{macrocode}
 %
-% \changes{v3.6c}{2024/07/25}{Removed spurious @ in
+% \changes{v3.6c}{2024-07-25}{Removed spurious @ in
 %   \cs{FBCompactItemize at setup} and \cs{FBListOldLayout at setup}
 %   commands’ names.}
 %
@@ -3543,6 +3542,12 @@
 %    |DeclareKeys{}|, execute some post-treatment required to
 %    immediately take the flags value into account.
 %    \begin{macrocode}
+\newcommand*{\FBSuppressWarning at setup}[1]%
+  {\csname FBSuppressWarning#1\endcsname
+   \ifFBSuppressWarning
+     \renewcommand{\FBWarning}[1]{}%
+   \fi
+  }
 \newcommand*{\FBStandardLayout at setup}[1]%
   {\ifFB at mainlanguage@FR
      \csname FBStandardLayout#1\endcsname
@@ -3622,12 +3627,6 @@
      \let\FBfigtabshape\relax
    \fi
   }
-\newcommand*{\FBSuppressWarning at setup}[1]%
-  {\csname FBSuppressWarning#1\endcsname
-   \ifFBSuppressWarning
-     \renewcommand{\FBWarning}[1]{}%
-   \fi
-  }
 \newcommand*{\FBINGuillSpace at setup}[1]%
   {\csname FBINGuillSpace#1\endcsname
    \ifFBINGuillSpace
@@ -3658,26 +3657,26 @@
 %    Life is simple here with modern XeTeX engines: we just have to
 %    set |\XeTeXcharclass| of quotes to the proper value for XeTeX.
 %
-%\changes{v2.4c}{2010/05/23}{In \cs{ttfamilyFB}, also cancel
+%\changes{v2.4c}{2010-05-23}{In \cs{ttfamilyFB}, also cancel
 %    automatic spaces inside French guillemets coded as characters
 %    (see \cs{frenchbsetup}).}
 %
-% \changes{v2.5g}{2011/12/31}{When \cs{ifFB at xetex@punct} is true,
+% \changes{v2.5g}{2011-12-31}{When \cs{ifFB at xetex@punct} is true,
 %   `og’ and `fg’ options now set XeTeXcharclasses of these characters
 %   to \cs{FB at guilo} and \cs{FB at guilf}.  Otherwise French
 %   quotes behave as normal characters (their XeTeXcharclass is 0).}
 %
-% \changes{v2.6h}{2014/01/03}{\cs{FG at og}  and \cs{FG at fg} changed:
+% \changes{v2.6h}{2014-01-03}{\cs{FG at og}  and \cs{FG at fg} changed:
 %    former clumsy code removed.}
 %
-% \changes{v3.1a}{2014/06/16}{Codes 0x13 and 0x14 added for French
+% \changes{v3.1a}{2014-06-16}{Codes 0x13 and 0x14 added for French
 %    quotes in T1-encoding.  Support for older versions of LuaTeX and
 %    XeTeX dropped.}
 %
-% \changes{v3.2c}{2016/05/03}{Add a warning about options og/fg for old
+% \changes{v3.2c}{2016-05-03}{Add a warning about options og/fg for old
 %    XeTeX or LuaTeX engines requiring active characters.}
 %
-% \changes{v3.4d}{2018/04/11}{New test for deciding about utf8 encoding
+% \changes{v3.4d}{2018-04-11}{New test for deciding about utf8 encoding
 %    for keys og and fg (the former one fails with LaTeX 2018 release).}
 %
 %    With pdfTeX (or old XeTeX engines), quote characters
@@ -3718,9 +3717,12 @@
      \FB at og@fg at xetextrue
    \else
 %    \end{macrocode}
-%    This is for conventional TeX engines:
+%    This is for conventional TeX engines; this code is for preamble
+%    only, this requiring |\AddToHookNext| for packages like
+%    \pkg{standalone} or classes like \cls{dtk} which accept with more
+%    than one |\document{class}|.
 %    \begin{macrocode}
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
         \ifdefined\uc at dclc
 %    \end{macrocode}
 %    Package \pkg{inputenc} with utf8x (ucs) encoding loaded,
@@ -3755,7 +3757,7 @@
             \fi
           \else
 %    \end{macrocode}
-%    This means multi-byte character encoding, we assume UTF-8
+%    This means multi-byte character encoding, we assume UTF-8.
 %    \begin{macrocode}
             \DeclareUnicodeCharacter{00AB}{\FB@@og}%
           \fi
@@ -3770,7 +3772,7 @@
   {\ifFBunicode
      \FB at og@fg at xetextrue
    \else
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
         \ifdefined\uc at dclc
           \uc at dclc{187}{default}{\FB@@fg}%
         \else
@@ -3796,16 +3798,17 @@
 % \end{macro}
 %
 % \begin{macro}{\FBprocess at options}
-%    |\FBprocess at options| will be executed at |\begin{document}|:
-%    it first checks about packages loaded in the preamble (possibly
-%    after \babel) which customise lists: currently \pkg{enumitem},
-%    \pkg{paralist} and \pkg{enumerate}; then it processes the options
-%    as set by \fbsetup{} or forced for compatibility with packages
-%    loaded in the preamble.
+%     |\FBprocess at options| will be executed just before
+%     |\begin{document}|: it first checks about packages loaded in the
+%     preamble (possibly after \babel) which customise lists: currently
+%     \pkg{enumitem}, \pkg{paralist} and \pkg{enumerate}; then it
+%     processes the options as set by \fbsetup{} or forced for
+%     compatibility with packages loaded in the preamble.
 %
 %    When French is the main language, |\extrasfrench| and
 %    |\captionsfrench| are executed by \babel{} at |\begin{document}|,
 %    i.e.\ after |\FBprocess at options|.
+%
 %    \begin{macrocode}
 \newcommand*{\FBprocess at options}{%
 %    \end{macrocode}
@@ -3859,7 +3862,7 @@
   \else
     \ifFBStandardItemizeEnv
     \else
-      \PackageWarning{french3.ldf}%
+      \FBWarning
         {babel-french will not customise lists' layout\MessageBreak
          when French is not the main language,\MessageBreak
          reported}%
@@ -3884,7 +3887,7 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v3.7b}{2025/07/02}{New code to customise footnotes when
+% \changes{v3.7b}{2025-07-02}{New code to customise footnotes when
 %    the new templates are available.}
 %
 %    Options \fbo{FrenchFootnotes} and Option \fbo{AutoSpaceFootnotes}
@@ -3903,17 +3906,17 @@
       \NewSocketPlug{fntext/mark}{french}
         {\hb at xt@ \footnotemargin{\hss\newfootnotemarkFB}}
       \AssignSocketPlug{fntext/mark}{french}
-      \AddToHook{cmd/maketitle/before}
+      \AddToHook{cmd/maketitle/before}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{cmd/maketitle/after}
+      \AddToHook{cmd/maketitle/after}[frenchb]
          {\AssignSocketPlug{fntext/mark}{french}}
-      \AddToHook{env/minipage/begin}
+      \AddToHook{env/minipage/begin}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{fntext/para}{\parindent=\parindentFFN}
-      \AddToHook{fntext/para}{\let\FBeverypar at quote\relax}
+      \AddToHook{fntext/para}[frenchb]{\parindent=\parindentFFN}
+      \AddToHook{fntext/para}[frenchb]{\let\FBeverypar at quote\relax}
     \fi
     \ifFBAutoSpaceFootnotes
-      \AddToHook{fnmark/before}{\FBfnmarkspace}
+      \AddToHook{fnmark/before}[frenchb]{\FBfnmarkspace}
     \fi
   \fi
 %    \end{macrocode}
@@ -4009,18 +4012,18 @@
   \fi
 %    \end{macrocode}
 %
-% \changes{v3.0a}{2014/02/20}{With koma-script and memoir class,
+% \changes{v3.0a}{2014-02-20}{With koma-script and memoir class,
 %    customise \cs{captionformat} and \cs{captiondelim}.}
 %
-% \changes{v3.1f}{2015/05/31}{Definition of \cs{captionformat} and
+% \changes{v3.1f}{2015-05-31}{Definition of \cs{captionformat} and
 %    \cs{captiondelim} changed when option CustomiseFigTabCaptions
 %    is set to false.}
 %
-% \changes{v3.1f}{2015/05/31}{Bug fix for the beamer class:
+% \changes{v3.1f}{2015-05-31}{Bug fix for the beamer class:
 %    figure and table captions are now consistent with babel-french’s
 %    documentation.  Pointed out by Denis Bitouzé.}
 %
-% \changes{v3.5i}{2020/06/29}{For memoir, koma-script and beamer
+% \changes{v3.5i}{2020-06-29}{For memoir, koma-script and beamer
 %    classes, leave caption delimiter unchanged if it has been user
 %    customised.}
 %
@@ -4117,32 +4120,37 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v2.0}{2006/12/06}{Added warning for OT1 encoding.}
+% \changes{v2.0}{2006-12-06}{Added warning for OT1 encoding.}
 %
-% \changes{v2.1b}{2008/04/07}{Disable some commands in bookmarks.}
+% \changes{v2.1b}{2008-04-07}{Disable some commands in bookmarks.}
 %
-% \changes{v2.5e}{2011/04/03}{\cs{pdfstringdefDisableCommands} should
+% \changes{v2.5e}{2011-04-03}{\cs{pdfstringdefDisableCommands} should
 %    redefine \cs{FB at og} and \cs{FB at fg} instead of \cs{og} and \cs{fg}
 %    so that it works also when quotes are entered as characters.
 %    Reported by Sébastien Gouezel.}
 %
-% \changes{v3.5k}{2020/07/30}{\cs{pdfstringdefDisableCommands}
+% \changes{v3.5k}{2020-07-30}{\cs{pdfstringdefDisableCommands}
 %    dropped.}
 %
-% \changes{v3.7d}{2025/07/25}{\cs{FBprocess at options} must be processed
-%    only once.}
+% \changes{v3.7d}{2025-07-25}{\cs{FBprocess at options} must be processed
+%    only once, reported by Herbert Voß for dtk.cls.}
 %
+% \changes{v3.7e}{2025-08-15}{\cs{AddToHook} for env/document/ replaced
+%    by \cs{AddToHookNext} (all instances).}
+%
 %    Just before |\begin{document}|, let’s now process the remaining
 %    options, either not explicitly set by \fbsetup{} or possibly
 %    modified by packages loaded after \frenchb.
 %    We also have to provide an |\xspace| command in case the
 %    \pkg{xspace} package is not loaded.
-%    Force |\FBprocess at options| to be processed only once.
+%    In some cases (package \pkg{standalone}, \cls{dtk},…) several
+%    |\documentclass{}| commands are allowed, so use |\AddToHookNext|
+%    instead of |\AddToHook| (all instances) as our stuff should only
+%    added to the first occurence of |\documentclass{}| anyway.
 %    \begin{macrocode}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \providecommand*{\xspace}{\relax}%
    \FBprocess at options
-   \renewcommand*{\FBprocess at options}{\relax}%
 %    \end{macrocode}
 %    Finally,  with pdfLaTeX, when OT1 encoding is in use at the
 %    |\begin{document}| a warning is issued; |\encodingdefault|
@@ -4164,7 +4172,7 @@
 %  \subsection{French lists}
 %  \label{ssec-lists}
 %
-% \changes{v2.6a}{2013/01/30}{Bug correction: changing \cs{leftmargin}
+% \changes{v2.6a}{2013-01-30}{Bug correction: changing \cs{leftmargin}
 %    cannot be done only for itemize-lists: it messes up
 %    embedded enumerate lists.  Pointed out by Denis Bitouzé.
 %    Lists have been completely redesigned in frenchb v.~2.6a.
@@ -4171,7 +4179,7 @@
 %    An option for backward compatibility is provided.}
 %
 % \begin{macro}{\listFB}
-% \changes{v3.5q}{2023/02/15}{Bug correction: \cs{parsep} should be
+% \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}
@@ -4245,7 +4253,7 @@
 %    \end{itemize}
 %
 % \begin{macro}{\FrenchLabelItem}
-% \changes{v2.6a}{2013/01/30}{default changed from \cs{textendash} to
+% \changes{v2.6a}{2013-01-30}{default changed from \cs{textendash} to
 %    \cs{textemdash}.}
 % \begin{macro}{\Frlabelitemi}
 % \begin{macro}{\Frlabelitemii}
@@ -4321,10 +4329,10 @@
 }
 %    \end{macrocode}
 %
-% \changes{v3.2e}{2016/10/28}{Add missing redefinitions for
+% \changes{v3.2e}{2016-10-28}{Add missing redefinitions for
 %    \cs{leftmarginv}, \cs{leftmarginvi}. Suggested by J.F. Burnol.}
 %
-% \changes{v3.5a}{2018/07/04}{New optional layout for lists:
+% \changes{v3.5a}{2018-07-04}{New optional layout for lists:
 %    lists’ items can be typeset as paragraphs with indented labels
 %    while the default leaves the labels hanging into the left margin.}
 %
@@ -4374,12 +4382,12 @@
 % \begin{macro}{\itemizeFB}
 % \begin{macro}{\FB at itemizesettings}
 %
-% \changes{v2.6f}{2013/11/25}{\cs{labelwidth} must be reset, f.i. when
+% \changes{v2.6f}{2013-11-25}{\cs{labelwidth} must be reset, f.i. when
 %    an itemize list occurs inside environments based on trivlist which
 %    set \cs{labelwidth} to 0 (see proof environment in amsthm.sty).
 %    Bug pointed out by Julien Hauseux.}
 %
-% \changes{v2.6g}{2013/12/30}{Suppress all vertical spaces only if
+% \changes{v2.6g}{2013-12-30}{Suppress all vertical spaces only if
 %    ReduceListSpacing is true.  Pointed out by Pierre Willaime.}
 %
 %    New environment for French itemize-lists.\\ |\FB at itemizesettings|
@@ -4474,17 +4482,17 @@
 % \end{macro}
 %
 % \begin{macro}{\descriptionFB}
-% \changes{v2.6b}{2013/02/10}{Settings of \cs{FB at listHsettings} should
+% \changes{v2.6b}{2013-02-10}{Settings of \cs{FB at listHsettings} should
 %    apply to description lists too.}
 %
-% \changes{v3.0a}{2014/02/28}{Added \cs{listindentFB} to
+% \changes{v3.0a}{2014-02-28}{Added \cs{listindentFB} to
 %    \cs{itemindent}.  Suggested by Denis Bitouzé.}
 %
-% \changes{v3.2d}{2014/07/01}{Changed \cs{listindentFB} to
+% \changes{v3.2d}{2014-07-01}{Changed \cs{listindentFB} to
 %    \cs{descindentFB} which defaults to \cs{listindentFB}.
 %    \cs{leftmargini} reduced when \cs{descindentFB} is null.}
 %
-% \changes{v3.5a}{2018/07/04}{ListItemsAsPar option taken into account
+% \changes{v3.5a}{2018-07-04}{ListItemsAsPar option taken into account
 %    for description lists.}
 %
 %    Same tuning for the \env{description} environment (see
@@ -4544,7 +4552,7 @@
 }
 %    \end{macrocode}
 %
-% \changes{v3.2h}{2017/02/03}{Execute \cs{update at frenchlists} only
+% \changes{v3.2h}{2017-02-03}{Execute \cs{update at frenchlists} only
 %    if GlobalLayoutFrench is false.
 %    Delete stuff for lists in \cs{noextrasfrench}.}
 %
@@ -4576,12 +4584,12 @@
 %    this is another difference with US-English.  This is controlled
 %    by the flag |\if at afterindent|.
 %
-% \changes{v2.3d}{2009/03/16}{Bug correction: previous versions of
+% \changes{v2.3d}{2009-03-16}{Bug correction: previous versions of
 %    frenchb set the flag \cs{if at afterindent} to false outside
 %    French which is correct for English but wrong for some languages
 %    like Spanish.  Pointed out by Juan José Torrens.}
 %
-% \changes{v3.5n}{2022/04/18}{\cs{bbl at frenchindent} changed.
+% \changes{v3.5n}{2022-04-18}{\cs{bbl at frenchindent} changed.
 %    \cs{bbl at nonfrenchindent} removed.}
 %
 %    Indentation changes at language switches only if
@@ -4601,7 +4609,7 @@
 %  \subsection{Formatting footnotes}
 %  \label{ssec-footnotes}
 %
-% \changes{v2.0}{2006/11/06}{Footnotes are now printed
+% \changes{v2.0}{2006-11-06}{Footnotes are now printed
 %     by default `à la française’ for the whole document.}
 %
 %    The layout of footnotes is controlled by two flags
@@ -4637,7 +4645,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to
+% \changes{v2.4a}{2009-11-23}{\cs{PackageWarning} changed to
 %    \cs{PackageInfo} (when bigfoot package in use).}
 %
 % \begin{macro}{\FBfnmarkspace}
@@ -4672,13 +4680,13 @@
 %    layout of footnotes is meant for footnotes numbered by arabic or
 %    roman digits).
 %
-% \changes{v2.0}{2006/11/06}{\cs{parindentFFN} not changed if
+% \changes{v2.0}{2006-11-06}{\cs{parindentFFN} not changed if
 %    already defined (required by JA for cah-gut.cls).}
 %
-% \changes{v2.3b}{2008/12/06}{New commands \cs{dotFFN} and
+% \changes{v2.3b}{2008-12-06}{New commands \cs{dotFFN} and
 %    \cs{kernFFN} for more flexibility (suggested by JA).}
 %
-% \changes{v3.2a}{2016/03/14}{beamer.cls requires a specific
+% \changes{v3.2a}{2016-03-14}{beamer.cls requires a specific
 %    definition of \cs{@makefntextFB} (pointed out by DB).
 %    The same is true for memoir and koma-script classes (done).}
 %
@@ -4736,7 +4744,7 @@
 %    \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
+% \changes{v3.2h}{2016-04-09}{With beamer.cls, add \cs{llap} to
 %    \cs{@thefnmark} for notes numbered over 99.}
 %
 %    \begin{macrocode}
@@ -4777,7 +4785,7 @@
 %
 % \begin{macro}{\@footnotemark}
 %
-% \changes{v3.6a}{2024/05/13}{Allow customisation of the space added
+% \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
@@ -4796,20 +4804,20 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v2.0b}{2007/04/18}{Footnotes: Just do nothing
+% \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
+% \changes{v3.3c}{2017-07-28}{Reset \cs{localleftbox} locally
 %    inside \cs{@makefntext}.  Needed by \cs{frquote} with LuaTeX.}
 %
-% \changes{v3.5b}{2018/07/17}{Reset \cs{FBeverypar at quote} locally
+% \changes{v3.5b}{2018-07-17}{Reset \cs{FBeverypar at quote} locally
 %    inside \cs{@makefntext}.  Needed by \cs{frquote}.}
 %
-% \changes{v3.5c}{2018/09/13}{Remove grouping inside \cs{@makefntext},
+% \changes{v3.5c}{2018-09-13}{Remove grouping inside \cs{@makefntext},
 %    \cs{localleftbox} and \cs{FBeverypar at quote} saved and restored
 %    instead.}
 %
-% \changes{v3.5s}{2024/01/05}{Footnotes: no customising of
+% \changes{v3.5s}{2024-01-05}{Footnotes: no customising of
 %    \cs{@footnotetext} when the footnotebackref package is loaded.
 %    Just warn the user.}
 %%
@@ -4826,7 +4834,7 @@
 %    \begin{macrocode}
   \IfPackageLoadedTF{footnotebackref}%
       {\FBFrenchFootnotesfalse
-       \PackageWarning{french3.ldf}%
+       \FBWarning
           {footnotebackref package loaded.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
@@ -4837,7 +4845,7 @@
 %    that \frenchb{} will not customise footnotes at all.
 %    \begin{macrocode}
    \IfPackageLoadedTF{bigfoot}%
-      {\PackageWarning{french.ldf}%
+      {\FBWarning{french.ldf}%
           {bigfoot package in use.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
@@ -4924,7 +4932,7 @@
   }
 %    \end{macrocode}
 %
-% \changes{v3.7b}{2025/07/01}{\cs{FBlegacyfootnote at switch} moved to
+% \changes{v3.7b}{2025-07-01}{\cs{FBlegacyfootnote at switch} moved to
 %    \cs{extrasfrench} (tagging issue).}
 %
 %    |\FBlegacyfootnote at switch| is executed when entering French for the
@@ -4956,10 +4964,10 @@
 %
 %  \subsection{Clean up and exit}
 %
-% \changes{v3.0a}{2014/02/20}{french.cfg will be loaded (if found)
+% \changes{v3.0a}{2014-02-20}{french.cfg will be loaded (if found)
 %    instead of frenchb.cfg.  NO NEED for .cfg files in French anyway.}
 %
-% \changes{v3.1h}{2015/08/19}{french.cfg from e-french conflicts with
+% \changes{v3.1h}{2015-08-19}{french.cfg from e-french conflicts with
 %    babel-french. Do NOT load it (no need for .cfg files with
 %    babel-french anyway).}
 %
@@ -4984,11 +4992,11 @@
 %    Babel expects a \file{\meta{lang}.ldf} file for each
 %    \meta{lang}.
 %
-% \changes{v3.3b}{2017/06/28}{Generate portmanteau files
+% \changes{v3.3b}{2017-06-28}{Generate portmanteau files
 %    \file{acadian.ldf}, \file{canadien.ldf}, \file{frenchb.ldf},
 %    and \file{francais.ldf} and warn about deprecated options.}
 %
-% \changes{v3.7a}{2025/05/19}{Support for acadian dropped. The files
+% \changes{v3.7a}{2025-05-19}{Support for acadian dropped. The files
 %    \file{acadian.ldf}, \file{canadien.ldf}, \file{frenchb.ldf} and
 %    \file{francais.ldf} load \file{french.ldf} and print a warning.}
 %

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/acadian.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{acadian}
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e French support from the babel system]
 \PackageInfo{acadian.ldf}%
   {Option 'acadian' for Babel is *deprecated*,\MessageBreak
    it might be removed sooner or later.  Please\MessageBreak

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/canadien.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{canadien}
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e French support from the babel system]
 \PackageInfo{canadien.ldf}%
   {Option 'canadien' for Babel is *deprecated*,\MessageBreak
    it might be removed sooner or later.  Please\MessageBreak

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/francais.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{francais}
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e 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

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/french.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{french}
-         [2025-07-25 v4.0d French support from the babel system]
+         [2025-08-15 v4.0e French support from the babel system]
 %%
 %%  Babel package for LaTeX version 2e
 %%  Copyright © 1996-2025
@@ -133,7 +133,7 @@
   \@onlypreamble\FBsetspaces
 \fi
 \ifLaTeXe
-  \AddToHook{env/document/before}{%
+  \AddToHookNext{env/document/before}{%
     \set at glue@table{colon}%
     \set at glue@table{thin}%
     \set at glue@table{guill}%
@@ -481,14 +481,13 @@
     \endinput}
 \fi
 \FBstop at here
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
   \@FBpreamblefalse
   \IfPackageLoadedTF{icomma}%
      {\FB at icommatrue
       \if at preamble@DecimalMathComma
-        \PackageWarning{french.ldf}{%
-          icomma package loaded, \protect\DecimalMathComma%
-          \MessageBreak does nothing.  Reported}%
+        \FBWarning{icomma package loaded, \protect\DecimalMathComma%
+                   \MessageBreak does nothing.  Reported}%
       \fi
      }%
      {\if at preamble@DecimalMathComma
@@ -504,7 +503,7 @@
    \ifdefined\numprint
      \numprint{#1}%
    \else
-     \PackageWarning{french.ldf}{%
+     \FBWarning{%
         \protect\nombre\space now relies on package numprint.sty,%
         \MessageBreak add \protect
         \usepackage[autolanguage]{numprint},\MessageBreak
@@ -575,7 +574,7 @@
 \newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}}
 \newif\if at FBwarning@beamerarticle
 \IfPackageLoadedTF{beamerarticle}{}{\@FBwarning at beamerarticletrue}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@beamerarticle
      \IfPackageLoadedTF{beamerarticle}{}%
                                      {\@FBwarning at beamerarticlefalse}%
@@ -712,14 +711,19 @@
 \@onlypreamble\frenchsetup
 \let\frenchbsetup\frenchsetup
 \@onlypreamble\frenchbsetup
+\newcommand*{\FBSuppressWarning at setup}[1]%
+  {\csname FBSuppressWarning#1\endcsname
+   \ifFBSuppressWarning
+     \renewcommand{\FBWarning}[1]{}%
+   \fi
+  }
 \newcommand*{\FBStandardLayout at setup}[1]%
   {\ifFB at mainlanguage@FR
      \csname FBStandardLayout#1\endcsname
    \else
-     \PackageWarning{french.ldf}%
-         {Option `StandardLayout' skipped:\MessageBreak
-          French is *not* babel's last option.\MessageBreak
-          Reported}%
+     \FBWarning{Option `StandardLayout' skipped:\MessageBreak
+                French is *not* babel's last option.\MessageBreak
+                Reported}%
    \fi
    \ifFBStandardLayout
      \FBStandardListSpacingtrue
@@ -796,12 +800,6 @@
        }%
    \fi
   }
-\newcommand*{\FBSuppressWarning at setup}[1]%
-  {\csname FBSuppressWarning#1\endcsname
-   \ifFBSuppressWarning
-     \renewcommand{\FBWarning}[1]{}%
-   \fi
-  }
 \newcommand*{\FBINGuillSpace at setup}[1]%
   {\csname FBINGuillSpace#1\endcsname
    \ifFBINGuillSpace
@@ -893,7 +891,7 @@
   \else
     \ifFBStandardItemizeEnv
     \else
-      \PackageWarning{french.ldf}%
+      \FBWarning
         {babel-french will not customise lists' layout\MessageBreak
          when French is not the main language,\MessageBreak
          reported}%
@@ -922,18 +920,18 @@
       \NewSocketPlug{fntext/mark}{french}
         {\hb at xt@ \footnotemargin{\hss\newfootnotemarkFB}}
       \AssignSocketPlug{fntext/mark}{french}
-      \AddToHook{cmd/maketitle/before}
+      \AddToHook{cmd/maketitle/before}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{cmd/maketitle/after}
+      \AddToHook{cmd/maketitle/after}[frenchb]
          {\AssignSocketPlug{fntext/mark}{french}}
-      \AddToHook{env/minipage/begin}
+      \AddToHook{env/minipage/begin}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{fntext/para}{\parindent=\parindentFFN}
-      \AddToHook{fntext/para}{\localleftbox{}}
-      \AddToHook{fntext/para}{\let\FBeverypar at quote\relax}
+      \AddToHook{fntext/para}[frenchb]{\parindent=\parindentFFN}
+      \AddToHook{fntext/para}[frenchb]{\localleftbox{}}
+      \AddToHook{fntext/para}[frenchb]{\let\FBeverypar at quote\relax}
     \fi
     \ifFBAutoSpaceFootnotes
-      \AddToHook{fnmark/before}{\FBfnmarkspace}
+      \AddToHook{fnmark/before}[frenchb]{\FBfnmarkspace}
     \fi
   \fi
   \ifx\FBfigtabshape\relax
@@ -1071,10 +1069,9 @@
      \MessageBreak\protect\frenchsetup{ShowOptions}}
   \fi
 }
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \providecommand*{\xspace}{\relax}%
    \FBprocess at options
-   \renewcommand*{\FBprocess at options}{\relax}%
 }
 \let\listORI\list
 \let\endlistORI\endlist
@@ -1308,13 +1305,13 @@
 \newcommand*{\FBlegacyfootnote at switch}{%
   \IfPackageLoadedTF{footnotebackref}%
       {\FBFrenchFootnotesfalse
-       \PackageWarning{french.ldf}%
+       \FBWarning
           {footnotebackref package loaded.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
       {}%
    \IfPackageLoadedTF{bigfoot}%
-      {\PackageWarning{french.ldf}%
+      {\FBWarning
           {bigfoot package in use.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
@@ -1379,7 +1376,7 @@
            \let\FBeverypar at quote\FBeverypar at save
            \localleftbox{\FBeveryline at quote}}%
        \fi
-      \AddToHook{env/minipage/begin}{\FBFrenchFootnotesfalse}
+      \AddToHook{env/minipage/begin}[frenchb]{\FBFrenchFootnotesfalse}
     }%
   }
 \def\bbl at frenchfootnotes{%

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/french3.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/french3.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/french3.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{french}
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e French support from the babel system]
 %%
 %%  Babel package for LaTeX version 2e
 %%  Copyright © 1996-2025
@@ -172,7 +172,7 @@
   \def\FB at charlistxeCJK{}
   \edef\FB at charlistsave{\FB at charlist}
   \ifLaTeXe
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
        \IfPackageLoadedTF{ucharclasses}%
          {\ifdefined\BasicLatinClass
             \RenewCommandCopy{\FB at stdchar}{\BasicLatinClass}%
@@ -687,14 +687,13 @@
     \endinput}
 \fi
 \FBstop at here
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
   \@FBpreamblefalse
   \IfPackageLoadedTF{icomma}%
      {\FB at icommatrue
       \if at preamble@DecimalMathComma
-        \PackageWarning{french3.ldf}{%
-          icomma package loaded, \protect\DecimalMathComma%
-          \MessageBreak does nothing.  Reported}%
+        \FBWarning{icomma package loaded, \protect\DecimalMathComma%
+                   \MessageBreak does nothing.  Reported}%
       \fi
      }%
      {\if at preamble@DecimalMathComma
@@ -710,7 +709,7 @@
    \ifdefined\numprint
      \numprint{#1}%
    \else
-     \PackageWarning{french3.ldf}{%
+     \FBWarning{%
         \protect\nombre\space now relies on package numprint.sty,%
         \MessageBreak add \protect
         \usepackage[autolanguage]{numprint},\MessageBreak
@@ -863,7 +862,7 @@
 \fi
 \ifFB at active@punct
    \IfPackageLoadedTF{listings}
-      {\AddToHook{env/document/before}{%
+      {\AddToHookNext{env/document/before}{%
          \FBWarning{Please load the "listings" package\MessageBreak
                     AFTER babel/french; reported}}%
       }{}
@@ -872,7 +871,7 @@
 \ifFB at active@punct
   \IfPackageLoadedTF{natbib}{}{\@FBwarning at natbibtrue}
 \fi
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@natbib
      \IfPackageLoadedTF{natbib}{}{\@FBwarning at natbibfalse}%
    \fi
@@ -883,7 +882,7 @@
 }
 \newif\if at FBwarning@beamerarticle
 \IfPackageLoadedTF{beamerarticle}{}{\@FBwarning at beamerarticletrue}
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \if at FBwarning@beamerarticle
      \IfPackageLoadedTF{beamerarticle}{}%
                                      {\@FBwarning at beamerarticlefalse}%
@@ -1012,6 +1011,12 @@
 \@onlypreamble\frenchsetup
 \let\frenchbsetup\frenchsetup
 \@onlypreamble\frenchbsetup
+\newcommand*{\FBSuppressWarning at setup}[1]%
+  {\csname FBSuppressWarning#1\endcsname
+   \ifFBSuppressWarning
+     \renewcommand{\FBWarning}[1]{}%
+   \fi
+  }
 \newcommand*{\FBStandardLayout at setup}[1]%
   {\ifFB at mainlanguage@FR
      \csname FBStandardLayout#1\endcsname
@@ -1091,12 +1096,6 @@
      \let\FBfigtabshape\relax
    \fi
   }
-\newcommand*{\FBSuppressWarning at setup}[1]%
-  {\csname FBSuppressWarning#1\endcsname
-   \ifFBSuppressWarning
-     \renewcommand{\FBWarning}[1]{}%
-   \fi
-  }
 \newcommand*{\FBINGuillSpace at setup}[1]%
   {\csname FBINGuillSpace#1\endcsname
    \ifFBINGuillSpace
@@ -1139,7 +1138,7 @@
   {\ifFBunicode
      \FB at og@fg at xetextrue
    \else
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
         \ifdefined\uc at dclc
           \uc at dclc{171}{default}{\FB@@og}%
         \else
@@ -1166,7 +1165,7 @@
   {\ifFBunicode
      \FB at og@fg at xetextrue
    \else
-     \AddToHook{env/document/before}{%
+     \AddToHookNext{env/document/before}{%
         \ifdefined\uc at dclc
           \uc at dclc{187}{default}{\FB@@fg}%
         \else
@@ -1237,7 +1236,7 @@
   \else
     \ifFBStandardItemizeEnv
     \else
-      \PackageWarning{french3.ldf}%
+      \FBWarning
         {babel-french will not customise lists' layout\MessageBreak
          when French is not the main language,\MessageBreak
          reported}%
@@ -1266,17 +1265,17 @@
       \NewSocketPlug{fntext/mark}{french}
         {\hb at xt@ \footnotemargin{\hss\newfootnotemarkFB}}
       \AssignSocketPlug{fntext/mark}{french}
-      \AddToHook{cmd/maketitle/before}
+      \AddToHook{cmd/maketitle/before}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{cmd/maketitle/after}
+      \AddToHook{cmd/maketitle/after}[frenchb]
          {\AssignSocketPlug{fntext/mark}{french}}
-      \AddToHook{env/minipage/begin}
+      \AddToHook{env/minipage/begin}[frenchb]
          {\AssignSocketPlug{fntext/mark}{default}}
-      \AddToHook{fntext/para}{\parindent=\parindentFFN}
-      \AddToHook{fntext/para}{\let\FBeverypar at quote\relax}
+      \AddToHook{fntext/para}[frenchb]{\parindent=\parindentFFN}
+      \AddToHook{fntext/para}[frenchb]{\let\FBeverypar at quote\relax}
     \fi
     \ifFBAutoSpaceFootnotes
-      \AddToHook{fnmark/before}{\FBfnmarkspace}
+      \AddToHook{fnmark/before}[frenchb]{\FBfnmarkspace}
     \fi
   \fi
   \ifx\FBfigtabshape\relax
@@ -1406,10 +1405,9 @@
      \MessageBreak\protect\frenchsetup{ShowOptions}}
   \fi
 }
-\AddToHook{env/document/before}{%
+\AddToHookNext{env/document/before}{%
    \providecommand*{\xspace}{\relax}%
    \FBprocess at options
-   \renewcommand*{\FBprocess at options}{\relax}%
    \begingroup
      \newcommand{\FBOTone}{OT1}%
      \ifx\encodingdefault\FBOTone
@@ -1659,13 +1657,13 @@
 \newcommand*{\FBlegacyfootnote at switch}{%
   \IfPackageLoadedTF{footnotebackref}%
       {\FBFrenchFootnotesfalse
-       \PackageWarning{french3.ldf}%
+       \FBWarning
           {footnotebackref package loaded.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%
       {}%
    \IfPackageLoadedTF{bigfoot}%
-      {\PackageWarning{french.ldf}%
+      {\FBWarning{french.ldf}%
           {bigfoot package in use.\MessageBreak
            babel-french will NOT customise footnotes;%
            \MessageBreak reported}}%

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf	2025-08-15 21:26:40 UTC (rev 76067)
@@ -24,7 +24,7 @@
 %% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
 %% 
 \ProvidesLanguage{frenchb}
-         [2025-07-25 v3.7d French support from the babel system]
+         [2025-08-15 v3.7e French support from the babel system]
 \PackageWarning{frenchb}%
     {Option `frenchb' for Babel is *deprecated*,\MessageBreak
      it might be removed sooner or later.  Please\MessageBreak

Modified: trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2025-08-15 21:25:27 UTC (rev 76066)
+++ trunk/Master/texmf-dist/tex/generic/babel-french/frenchb.lua	2025-08-15 21:26:40 UTC (rev 76067)
@@ -1,6 +1,6 @@
 --[[
    File `frenchb.lua’ generated from frenchb.dtx
-         [2025-07-25 v4.0d French support from the babel system]
+         [2025-08-15 v4.0e French support from the babel system]
    Copyright © 2014-2025 Daniel Flipo
    <daniel (dot) flipo (at) free (dot) fr>
    License LPPL: see french.ldf.



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