texlive[62725] trunk: latex-dev (15mar22)

commits+karl at tug.org commits+karl at tug.org
Tue Mar 15 21:08:24 CET 2022


Revision: 62725
          http://tug.org/svn/texlive?view=revision&revision=62725
Author:   karl
Date:     2022-03-15 21:08:23 +0100 (Tue, 15 Mar 2022)
Log Message:
-----------
latex-dev (15mar22)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
    trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3build/README.md
    trunk/Master/texmf-dist/doc/latex/l3build/l3build.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/README.md
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf
    trunk/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/README.md
    trunk/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/changes.txt
    trunk/Master/texmf-dist/doc/latex-dev/base/classes.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/letter.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex
    trunk/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/proc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/slides.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
    trunk/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
    trunk/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt
    trunk/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md
    trunk/Master/texmf-dist/doc/latex-dev/graphics/changes.txt
    trunk/Master/texmf-dist/doc/latex-dev/graphics/color.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf
    trunk/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/README.md
    trunk/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/array.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/bm.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/calc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/layout.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/trace.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/xr.pdf
    trunk/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf
    trunk/Master/texmf-dist/doc/man/man1/l3build.1
    trunk/Master/texmf-dist/doc/man/man1/l3build.man1.pdf
    trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build.lua
    trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx
    trunk/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx
    trunk/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
    trunk/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
    trunk/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx
    trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx
    trunk/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx
    trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx
    trunk/Master/texmf-dist/tex/latex/l3build/regression-test.tex
    trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
    trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx
    trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/utf8.def
    trunk/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
    trunk/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty
    trunk/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty
    trunk/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
    trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
    trunk/Master/texmf-dist/tex/latex-dev/graphics/mathcolor.ltx
    trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty

Modified: trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua	2022-03-15 20:08:23 UTC (rev 62725)
@@ -25,7 +25,7 @@
 --]]
 
 -- Version information
-release_date = "2022-02-24"
+release_date = "2022-03-15"
 
 -- File operations are aided by the LuaFileSystem module
 local lfs = require("lfs")
@@ -134,7 +134,7 @@
 end
 
 if #checkconfigs > 1 then
-  if options["target"] == "check" then
+  if options["target"] == "check" or options["target"] == "bundlecheck" then
     local errorlevel = 0
     local failed = { }
     for i = 1, #checkconfigs do

Modified: trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -7,6 +7,16 @@
 
 ## [Unreleased]
 
+## [2022-03-15]
+
+### Changed
+- When `\pdfmeta_set_regression_data:` is defined it is used
+  to set metadata
+- Support multiple configurations in bundles
+
+### Fixed
+- Correctly normalize luaotfload font cache path
+
 ## [2022-02-24]
 
 ### Fixed
@@ -574,7 +584,8 @@
 - Rationalise short option names: removed `-d`, `-E`, `-r`
 - Target `cmdcheck`: specific to LaTeX kernel work
 
-[Unreleased]: https://github.com/latex3/l3build/compare/2022-02-24...HEAD
+[Unreleased]: https://github.com/latex3/l3build/compare/2022-03-15...HEAD
+[2022-03-15]: https://github.com/latex3/l3build/compare/2022-02-24...2022-03-15
 [2022-02-24]: https://github.com/latex3/l3build/compare/2021-12-14...2022-02-24
 [2021-12-14]: https://github.com/latex3/l3build/compare/2021-12-09...2021-12-14
 [2021-12-09]: https://github.com/latex3/l3build/compare/2021-12-06...2021-12-09

Modified: trunk/Master/texmf-dist/doc/latex/l3build/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3build/README.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex/l3build/README.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,7 +1,7 @@
 l3build: a testing and building system for LaTeX
 =================================================
 
-Release 2022-02-24
+Release 2022-03-15
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3build/l3build.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/amsmath/README.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/amsmath/README.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,7 +1,7 @@
 The amsmath bundle for LaTeX
 ============================
 
-Release 2022-06-01 pre-release 1
+Release 2022-06-01 pre-release 2
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,3 +1,15 @@
+2022-02-03  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* amsmath.dtx (subsection{The \env{multline} environment}):
+	Added missing \relax for (gh/716)
+	Also make \shoveleft and \shoveright robust (part of gh/123)
+
+2022-01-20  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* amsopn.dtx:
+	Do not define/reset \operator at font; it is already defined in
+	the LaTeX kernel (gh/734)
+
 2021-11-18  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
 	* All *.dtx: Replaced \StopEventually by \MaybeStop

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/README.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/README.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,7 +1,7 @@
 The LaTeX kernel
 ================
 
-Release 2022-06-01 pre-release 2
+Release 2022-06-01 pre-release 3
 
 Overview
 --------
@@ -94,6 +94,6 @@
 
 -----
 
-<p>Copyright (C) 1989-2021 The LaTeX Project <br />
+<p>Copyright (C) 1989-2022 The LaTeX Project <br />
 <a href="http://latex-project.org/">http://latex-project.org/</a> <br />
 All rights reserved.</p>

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/changes.txt	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/changes.txt	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,4 +1,3 @@
-
 ================================================================================
 This file lists changes to the LaTeX2e files in reverse chronological order of
 publication (therefore the dates might be out of sequence if there are hotfixes).
@@ -7,11 +6,65 @@
 are not part of the distribution.
 ================================================================================
 
+2022-03-10  Phelype Oleinik  <phelype.oleinik at latex-project.org>
+
+	* ltfilehook.dtx (subsection{Selecting a file (\cs{set at curr@file})}):
+	Add \set at curr@file at nosearch, to ignore \input at path and \l_file_search_path_seq.
+
+2022-03-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltbibl.dtx (section{Bibliography Generation}):
+	Ensure that an empty argument given to \cite generates
+	a warning (gh/790)
+
+2022-02-28  Phelype Oleinik  <phelype.oleinik at latex-project.org>
+
+	* ltvers.dtx (subsection{Declaring an all-new module}):
+	Detect a missing \IncludeInRelease{0000/00/00} in a new module.
+
+2022-02-28  Phelype Oleinik  <phelype.oleinik at latex-project.org>
+
+	* latexrelease.dtx, ltexpl.dtx, ltcmd.dtx:
+	Move most make-harmless redefinitions right after ltexpl.dtx.
+
+2022-02-21  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+        * ltkeys.dtx:
+	More efficient module expansion
+
+2022-02-19  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltcmd.dtx (subsection{User functions}):
+	Added \IfBlankTF and friends to test if a received argument
+	is empty or contains only normal space characters.
+
+2022-02-19  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* utf8ienc.dtx: use \protected definitions.
+	also avoid global definitions for gh/762
+
+2022-02-16  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+        * ltkeys.dtx:
+	Allow for active characters in module argument
+	\DeclareUnknownKeyHandler better than with the "s"
+
+2022-02-15  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+        * ltkeys.dtx:
+        Expand optional module argument in design-level commands
+        Add \DeclareUnknownKeysHandler
+
+2022-02-07  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+	* ltkeys.dtx:
+	Correct definition of .code property
+
 2022-02-05  Joseph Wright  <Joseph.Wright at latex-project.org>
 
-	* ltkeys.dtx (section{Plain \TeX}):
-	  Create key properties at the 2e layer
-          Add .code property
+	* ltkeys.dtx:
+	Create key properties at the 2e layer
+	Add .code property
 
 2022-01-25  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
@@ -34,12 +87,12 @@
 	* ltexpl.dtx (section{Document-level command names for expl3 functions}):
 	Adjust document-level names for \exp_args:Nc and the like
 
-2021-12-30 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+2021-12-30  Ulrike Fischer <Ulrike.Fischer at latex-project.org>
 
 	* ltmeta.dtx:
 	Adapted bundle name to new name `LaTeX-lab'
 
-2021-12-31 Phelype Oleinik  <phelype.oleinik at latex-project.org>
+2021-12-31  Phelype Oleinik  <phelype.oleinik at latex-project.org>
 
 	* ltcmd.dtx (subsubsection{Showing the definition of a command}):
 	Make \ShowCommand stop for interaction with ltcmd (gh/739)
@@ -169,7 +222,7 @@
 # 2021-11-15 Release
 #########################
 
-2021-10-20 Phelype Oleinik  <phelype.oleinik at latex-project.org>
+2021-10-20  Phelype Oleinik  <phelype.oleinik at latex-project.org>
 
 	* ltcmdhooks.dtx (subsubsection{Patching by expansion and redefinition}):
 	Fix patching of commands that contain parameter tokens (gh/697)
@@ -207,7 +260,7 @@
 	* classes.dtx, doc.dtx, makeindx.dtx, preload.dtx, slides.dtx, array.dtx
 	Removed old references to latex.tex or latex.dtx (gh/685)
 
-2021-09-28 Phelype Oleinik  <phelype.oleinik at latex-project.org>
+2021-09-28  Phelype Oleinik  <phelype.oleinik at latex-project.org>
 
 	* ltcmdhooks.dtx (subsection{Patching commands}):
 	Make patching of commands with generic cmd hooks a global operation (gh/674)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/classes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/letter.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright 2019-2021
+% Copyright 2021-2022
 % The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
@@ -186,14 +186,44 @@
 
 \section{The \pkg{latex-lab} bundle}
 
-\emph{write about it}
+We added a new \pkg{latex-lab}oratory bundle in which we place new
+code that is going to be available only through a
+\cs{DocumentMetadata} declaration and that is\Dash most
+importantly\Dash work under development and subject to
+change without further notice. This means, that commands and interfaces provided there may
+get altered or removed again after some public testing.  The code can
+be accessed through the \cs{DocumentMetadata} key \texttt{testphase}.
+Currently supported values are \texttt{phase-I} and \texttt{phase-II}
+that enable code of the tagged PDF project (phase-I is frozen and
+phase-II the phase we are currently working on).  With
+\begin{verbatim}
+\DocumentMetadata{testphase=phase-II}
+\end{verbatim}
+you currently enable tagging for paragraphs and footnotes, more
+document elements will follow soon.
 
+For more detailed testing it is also possible to pass other values to
+\texttt{testphase}, for example, the first incarnation of a template
+design interface based on \pkg{l3keys} can be accessed through the
+value \texttt{prototype}, thus
+\begin{verbatim}
+\DocumentMetadata{testphase={phase-II,prototype}}
+\end{verbatim}
+will enable all of phase-II plus the draft template interface (which
+is not yet integrated in phase-II).
 
+Eventually, code will move (once considered stable) from the
+testphase into the \LaTeX{} kernel itself. Tagging will continue to
+require a \cs{DocumentMetadata} declaration, but you will then be able
+to drop the \texttt{testphase} key setting.
 
 
+
+
+
 \section{New or improved commands}
 
-\subsection{A kevyal approach to option handling}
+\subsection{A keyval approach to option handling}
 
 The classical \LaTeXe{} method for handling options, using \cs{ProcessOptions},
 treats each entry in the list as a string. Many package authors have sought to
@@ -217,7 +247,7 @@
 A version which does not consider global options,
 \cs{ProcessKeyPackageOptions}, is also available.
 
-To support creating key options in for this mechanism, the new command
+To support creating key options for this mechanism, the new command
 \cs{DeclareKeys} has been added. This works using the same general
 approach as \pkg{l3keys} or \pkg{pgfkeys}: each key has one or more
 \emph{properties} which define its behavior.
@@ -315,19 +345,80 @@
 \githubissue{735}
 
 
+\subsection{Testing for (nearly) empty arguments}
+%
+In addition to \cs{IfNoValueTF} to test if an optional argument was
+provided or not, there is now also \cs{IfBlankTF}, which tests if the
+argument is empty or contains only blanks. Based on the result it
+selects a true or false code branch. As usual, the variants
+\cs{IfBlankT} and \cs{IfBlankF} are also provided for use when only one
+branch leads to some action.  Further details and examples are given
+in \file{usrguide3.pdf}.
 
-\subsection{???}
+This test can also be useful if you set up key/value options and want
+to test if a key was specified without giving a value or through
+specifying \enquote{\textit{key}\texttt{ = ,}}.
+
+
+\subsection{Better allocator for Lua command ids}
+
+In \LuaTeX\ we already had the \cs{newluafunction} macro which allocates
+a Lua function identifier which can be used to define commands
+with \cs{luadef}. But this always required two steps: \cs{newluafunction}
+defines the passed control sequence as an integer, which then has to be used
+to define the actual Lua command with \cs{luadef}. After that, the integer is
+no longer needed. This was inconsistent with other allocators. Therefore we
+added two new allocators \cs{newluacmd} and \cs{newexpandableluacmd} which
+directly define a control sequences invoking the allocated Lua function.
+The first one defines a non-expandable Lua command, the second one an expandable
+one. Of course, the associated Lua function still has to be defined by assigning
+a function to the \verb|lua.get_functions_table()| table. The required index is
+available in \cs{allocationnumber}.
+
+An example could be
+\begin{verbatim}
+\newluacmd \greeting
+\directlua {
+lua.get_functions_table()
+   [tex.count.allocationnumber]
+   = function()
+    local name = token.scan_argument()
+    tex.sprint('Hello ', name, '!')
+  end
+}
+
+\greeting{world}
+\end{verbatim}
 %
-\githubissue{???}
+\githubissue{536}
 
 
+
+
+
 \section{Code improvements}
 
+\subsection{\cs{protected} UTF-8 character definitions}
+The characters defined via \file{utf8.def} are now defined as \cs{protected}
+macros. This makes them safe to use in expansion contexts where the
+classic \cs{protect} mechanism is not enabled, notably L3 programming
+layer \texttt{e} and \texttt{x} arguments.
 
+Related to this change \cs{MakeUppercase} and \cs{MakeLowercase} have
+been updated to use the Unicode-aware case changing functions
+\cs{text\string_lowercase:n} in place of the \TeX-primitive \cs{lowercase}.
+A similar change will be made in the \pkg{textcase} package.
+
+Note for technical reasons these low level character handling changes
+will not be rolled back if the format version is rolled back using the
+\pkg{latexrelease} package rollback mechanism.
+%
+\githubissue{780}
+
 \subsection{A small update to \cs{obeylines} and \cs{obeyspaces}}
 
 The plain \TeX{} versions of \cs{obeylines} and \cs{obeyspaces} make
-\verb=^^M= and \verb*= = active and force them to execute \cs{par}
+\verb=^^M= and \verb*= = active and force them to execute \cs{par} %*
 and \cs{space}, respectively. Don Knuth makes a remark in the \TeX{}book
 that one can then use a trick such as
 \begin{verbatim}
@@ -445,7 +536,7 @@
 \subsection{Croatian character support}
 
 The default \pkg{inputenc} support has been extended to support the 9 characters
-D\v Z, D\v z, d\v z, LJ, Lj, lj, NJ, Nj, nj, input as single UTF-8 codepoints
+D\v Z, D\v z, d\v z, LJ, Lj, lj, NJ, Nj, nj, input as single UTF-8 code points
 in the range U+01C4 to U+01CC.
 %
 \githubissue{gh/723}
@@ -455,7 +546,7 @@
 
 When declaring encoding specific commands for the Unicode (TU)
 encoding some declarations (e.g., \cs{DeclareUnicodeComposite}) do not
-have an explicit argument for the the encoding name, but instead use
+have an explicit argument for the encoding name, but instead use
 the command \cs{UnicodeEncodingName} internally. There was one
 exception though: \cs{DeclareUnicodeAccent} required an explicit
 encoding argument.  This inconsistency has now been removed and the
@@ -474,11 +565,7 @@
 
 
 
-\subsection{???}
-%
-\githubissue{???}
 
-
 \section{Bug fixes}
 
 \subsection{Using \cs{DeclareUnicodeCharacter} with C1 control points}
@@ -503,7 +590,22 @@
 
 
 
+\subsection{Make \cs{cite}\texttt{\textbraceleft\textbraceright} produce a warning}
 
+When the \cs{cite} command can't resolve a citation label it issue a
+warning \enquote{Citation `\meta{label}' on page \meta{page}
+  undefined}.  However, due to some implementation details a completely
+empty argument was always silently accepted. Given that there are probably
+people who write \verb=\cite{}= with the intention to fill in the
+correct label later it is rather unfortunate if that is not generating
+a warning that something in the document is still amiss.
+This has finally been corrected and a warning is now generated also in this case.
+%
+\githubissue{790}
+
+
+
+
 \section{Changes to packages in the \pkg{amsmath} category}
 
 
@@ -512,7 +614,7 @@
 The package \pkg{amsopn} used to define \cs{operator at font} but this
 command is already provided by the \LaTeX{} format (for at least 14
 years). As a result the definition in \pkg{amsopn} is equivalent to a
-reset to the kernel definition, which is unnecessary and suprising if
+reset to the kernel definition, which is unnecessary and surprising if
 you alter the math setup (e.g., by loading a package) and at a later
 stage add \pkg{amsmath}, which then undoes part of your setup. For
 this reason the definition was taken out and
@@ -528,9 +630,15 @@
 %
 \githubissue{734}
 
-\subsection{???}
+\subsection{\pkg{amsmath} Error in \cs{shoveleft}}
+
+If \cs{shoveleft} started out with the words \enquote{plus} or
+\enquote{minus} it was misunderstood as part of a rubber length and
+led either to an error or was swallowed without trace.  By adding a
+\cs{relax} this erroneous scanning into the argument of \cs{shoveleft}
+is now prevented.
 %
-\githubissue{???}
+\githubissue{714}
 
 
 \section{Changes to packages in the \pkg{graphics} category}
@@ -576,12 +684,22 @@
 For details and further examples, see \file{mathcolor.pdf}.
 
 
-\subsection{???}
+\subsection{Fix locating files with \cs{graphicspath}}
 %
-\githubissue{???}
 
+If a call to \cs{includegraphics} asked for a file (say, \file{image})
+without extension, and if both \file{A/image.pdf} and \file{B/image.tex}
+existed (both \file{A/} and \file{B/} in \cs{graphicspath}, but neither
+in a folder searched by kpse), then \file{A/image.pdf} would not be
+found, and a \enquote{file not found} error would be incorrectly thrown.
+The issue is now fixed and the graphics file is correctly found.
+%
+\githubissue{776}
+\sxissue{q/630167}
 
 
+
+
 \section{Changes to packages in the \pkg{tools} category}
 
 \subsection{\pkg{multicol}: Fix \cs{newcolumn}}

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/proc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/slides.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex	2022-03-15 20:08:23 UTC (rev 62725)
@@ -37,7 +37,7 @@
 \author{\copyright~Copyright 2020-2022, \LaTeX\ Project Team.\\
    All rights reserved.}
 
-\date{2022-01-03}
+\date{2022-02-19}
 
 \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
 \NewDocumentCommand\marg{m}{\arg{#1}}
@@ -356,6 +356,8 @@
 Optional arguments make use of dedicated variables to return information about
 the nature of the argument received.
 
+
+
 \begin{decl}
   |\IfNoValueTF| \arg{arg} \arg{true code} \arg{false code} \\
   |\IfNoValueT|  \arg{arg} \arg{true code} \\
@@ -391,11 +393,12 @@
 When two optional arguments follow each other (a syntax we typically
 discourage), it can make sense to allow users of the command to
 specify only the second argument by providing an empty first
-argument.  Rather than testing separately for emptiness and for
+argument.
+\NEWdescription{2022/06/01}
+Rather than testing separately for emptiness and for
 |-NoValue-| it is then best to use the argument type~|O| with an
-empty default value, and simply test for emptiness using the
-\pkg{expl3} conditional \cs{tl_if_blank:nTF} or its \pkg{etoolbox}
-analogue \cs{ifblank}.
+empty default value, and then test for emptiness using the
+conditional \cs{IfBlankTF} (described below) instead.
 
 \begin{decl}
   |\IfValueTF| \arg{arg} \arg{true code} \arg{false code} \\
@@ -406,6 +409,51 @@
 as \cs{IfValue(TF)}. The context will determine which logical
 form makes the most sense for a given code scenario.
 
+
+
+
+
+\begin{decl}[2022/06/01]
+  |\IfBlankTF| \arg{arg} \arg{true code} \arg{false code} \\
+  |\IfBlankT|  \arg{arg} \arg{true code} \\
+  |\IfBlankF|  \arg{arg} \arg{false code}
+\end{decl}
+
+
+The \cs{IfNoValueTF} command chooses the \meta{true code} if the optional argument has not
+been used at all (and it returns the special \texttt{-NoValue-}
+marker), but not if it has been given an empty value. In contrast
+\cs{IfBlankTF} returns true if its argument is either truly empty or
+only contains one or more normal blanks.
+For example
+\begin{verbatim}
+\NewDocumentCommand\foo{m!o}{\par #1:
+   \IfNoValueTF{#2}{No optional}%
+                   {\IfBlankTF{#2}{Blanks in or empty}%
+                                  {Real content in}}%
+                    \space argument!}
+\foo{1}[bar] \foo{2}[  ] \foo{3}[] \foo{4}[\space] \foo{5} [x]
+\end{verbatim}
+results
+in the following output:
+\begin{quote}
+  \NewDocumentCommand\foo{m!o}{\par #1:
+    \IfNoValueTF{#2}{No optional}%
+                {\IfBlankTF{#2}{Blanks in or empty}%
+                  {Real content in}}%
+                \space argument!}
+  \foo{1}[bar] \foo{2}[  ] \foo{3}[] \foo{4}[\space] \foo{5} [x]
+\end{quote}
+  
+Note that the \cs{space} in (4) is considered real content---because it is
+a command and not a \enquote{space} character---even though it results
+in producing a space. You can also observe in (5) the effect of the
+\texttt{!} specifier, preventing the last \cs{foo}
+from interpreting \texttt{[x]} as its optional argument.
+
+
+
+
 \begin{decl}
   |\BooleanFalse|  \\
   |\BooleanTrue|

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,3 +1,12 @@
+2022-02-20  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* latex2e-first-aid-for-external-files.dtx:
+	Fixes for biditools because taken out as package is updated
+
+2021-11-18  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* All *.dtx: Replaced \StopEventually by \MaybeStop
+
 2021-11-11  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
 	* latex2e-first-aid-for-external-files.dtx:

Modified: trunk/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,7 +1,7 @@
 The LaTeX `graphics` bundle
 ===========================
 
-Release 2022-06-01 pre-release 1
+Release 2022-06-01 pre-release 2
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/graphics/changes.txt	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/graphics/changes.txt	2022-03-15 20:08:23 UTC (rev 62725)
@@ -4,11 +4,17 @@
 are not part of the distribution.
 =======================================================================
 
+2022-03-10  Phelype Oleinik  <phelype.oleinik at latex-project.org>
+
+	* graphics.dtx:
+	Use \set at curr@file at nosearch to avoid premature inclusion of path
+	from \cs{graphicspath} (gh/776).
+
 2022-01-06  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
 	* mathcolor.dtx:
 	Support \mathcolor to correctly color parts of formulas without
-	spacing problems.
+	spacing problems. This command is *only* supported in math mode.
 
 ================================================================================
 All changes above are only part of the development branch for the next release.

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/color.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/tools/README.md	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/latex-dev/tools/README.md	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,7 +1,7 @@
 The LaTeX `tools` bundle
 ========================
 
-Release 2022-06-01 pre-release 1
+Release 2022-06-01 pre-release 3
 
 Overview
 --------
@@ -51,4 +51,4 @@
 
 -----
 
-<p>Copyright (C) 1993-2021 The LaTeX Project <br />
+<p>Copyright (C) 1993-2022 The LaTeX Project <br />

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/array.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/bm.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/calc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/layout.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/trace.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/xr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/l3build.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/l3build.1	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/doc/man/man1/l3build.1	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,4 +1,4 @@
-.TH l3build 1 "2022-02-24"
+.TH l3build 1 "2022-03-15"
 .SH NAME
 l3build \- Checking and building packages
 .SH SYNOPSIS

Modified: trunk/Master/texmf-dist/doc/man/man1/l3build.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua	2022-03-15 20:08:23 UTC (rev 62725)
@@ -147,7 +147,7 @@
     -- Images
     line = gsub(line, "<" .. pattern .. ">", "<../%1>")
     -- luaotfload files start with keywords
-    line = gsub(line, "from " .. pattern .. "%(", "from. ./%1(")
+    line = gsub(line, "from " .. pattern .. "$", "from ../%1")
     line = gsub(line, ": " .. pattern .. "%)", ": ../%1)")
     -- Deal with XeTeX specials
     if match(line, "^%.+\\XeTeX.?.?.?file") then

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build.lua	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build.lua	2022-03-15 20:08:23 UTC (rev 62725)
@@ -25,7 +25,7 @@
 --]]
 
 -- Version information
-release_date = "2022-02-24"
+release_date = "2022-03-15"
 
 -- File operations are aided by the LuaFileSystem module
 local lfs = require("lfs")
@@ -134,7 +134,7 @@
 end
 
 if #checkconfigs > 1 then
-  if options["target"] == "check" then
+  if options["target"] == "check" or options["target"] == "bundlecheck" then
     local errorlevel = 0
     local failed = { }
     for i = 1, #checkconfigs do

Modified: trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -237,7 +237,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-02-24}
+% \date{Released 2022-03-15}
 %
 % \maketitle
 % \tableofcontents
@@ -1545,7 +1545,7 @@
 % \meta{package}|-ctan.curlopt|. This is then passed to curl using its
 % |--config| commandline option.  (Using an intermediate file helps
 % keep \pkg{l3build} portable between systems using different
-% commandline quoting conventions. Any backslashes are doubled when writing 
+% commandline quoting conventions. Any backslashes are doubled when writing
 % to this file, so they do not need to be doubled in announcement and note texts.)
 %
 % By default the file is written into the current directory alongside
@@ -2497,49 +2497,54 @@
 % environment side (as not all output can be controlled here).
 % There is a limit to what can be done with the underlying PDF structure so
 % there is no point entirely suppressing \texttt{Producer}: simply avoid
-% any version numbers.
+% any version numbers. If the pdfmanagement is loaded we use its function
+% if it exists.
 %    \begin{macrocode}
-\ifnum 0%
-  \ifx\pdfoutput\@undefined\else\ifnum\pdfoutput>0 1\fi\fi
-  \ifx\outputmode\@undefined\else\ifnum\outputmode>0 1\fi\fi
-  >0 %
-  \ifx\pdfvariable\@undefined
-    \pdfinfo{/Producer (\ifx\directlua\@undefined pdf\else Lua\fi TeX)}
-    \ifx\pdfinfoomitdate\@undefined\else
-      \pdfinfoomitdate     = 1 %
-      \pdfsuppressptexinfo = \numexpr
+\ifcsname pdfmeta_set_regression_data:\endcsname
+   \csname pdfmeta_set_regression_data:\endcsname
+\else
+  \ifnum 0%
+    \ifx\pdfoutput\@undefined\else\ifnum\pdfoutput>0 1\fi\fi
+    \ifx\outputmode\@undefined\else\ifnum\outputmode>0 1\fi\fi
+    >0 %
+    \ifx\pdfvariable\@undefined
+      \pdfinfo{/Producer (\ifx\directlua\@undefined pdf\else Lua\fi TeX)}
+      \ifx\pdfinfoomitdate\@undefined\else
+        \pdfinfoomitdate     = 1 %
+        \pdfsuppressptexinfo = \numexpr
+              0
+            + 1 % PTEX.Fullbanner
+            + 2 % PTEX.FileName
+          \relax
+        \pdftrailerid{}
+      \fi
+    \else
+      \pdfextension info{/Producer (LuaTeX)}
+      \pdfvariable suppressoptionalinfo \numexpr
             0
-          + 1 % PTEX.Fullbanner
-          + 2 % PTEX.FileName
+          +   1 % PTEX.Fullbanner
+          +   2 % PTEX.FileName
+          +  32 % CreationDate
+          +  64 % ModDate
+          + 512 % ID
         \relax
-      \pdftrailerid{}
     \fi
   \else
-    \pdfextension info{/Producer (LuaTeX)}
-    \pdfvariable suppressoptionalinfo \numexpr
-          0
-        +   1 % PTEX.Fullbanner
-        +   2 % PTEX.FileName
-        +  32 % CreationDate
-        +  64 % ModDate
-        + 512 % ID
-      \relax
+    \ifx\XeTeXversion\@undefined
+      \special{! <</DocumentUUID (DocumentUUID)>> setpagedevice}
+      \special{! <</InstanceUUID (InstanceUUID)>> setpagedevice}
+    \else
+      \special{%
+        pdf: docinfo
+          <<
+            /Creator        (TeX)
+            /CreationDate   ()
+            /ModDate        ()
+            /Producer       (xdvipdfmx)
+          >>
+      }
+    \fi
   \fi
-\else
-  \ifx\XeTeXversion\@undefined
-    \special{! <</DocumentUUID (DocumentUUID)>> setpagedevice}
-    \special{! <</InstanceUUID (InstanceUUID)>> setpagedevice}
-  \else
-    \special{%
-      pdf: docinfo
-        <<
-          /Creator        (TeX)
-          /CreationDate   ()
-          /ModDate        ()
-          /Producer       (xdvipdfmx)
-        >>
-    }
-  \fi
 \fi
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -86,7 +86,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesPackage{amsmath}[2021/10/15 v2.17l AMS math features]
+\ProvidesPackage{amsmath}[2022/02/03 v2.17m AMS math features]
 %    \end{macrocode}
 %
 % \section{Catcode defenses}
@@ -6130,15 +6130,16 @@
 %    in his \fn{amstex.doc} Spivak indicates those commands should never
 %    be used on a first or last line. Perhaps better to leave the
 %    question open unless/until real-life examples turn up.
+% \changes{v2.17m}{2022/02/03}{Make \cs{shoveright} robust (if def is not trival)}
 %    \begin{macrocode}
 \iftagsleft@
-    \def\shoveright#1{%
+    \protected\def\shoveright#1{%
         #1%
         \hfilneg
         \hskip\multlinegap
     }
 \else
-    \def\shoveright#1{%
+    \protected\def\shoveright#1{%
         #1%
         \hfilneg
         \iftag@
@@ -6153,12 +6154,14 @@
         \fi
     }
 \fi
-
+%    \end{macrocode}
+% \changes{v2.17m}{2022/02/03}{Make \cs{shoveleft} robust (if def is not trival)}
+%    \begin{macrocode}
 \if at fleqn
     \def\shoveleft#1{#1}%
 \else
     \iftagsleft@
-        \def\shoveleft#1{%
+        \protected\def\shoveleft#1{%
             \setboxz at h{$\m at th\displaystyle{}#1$}%
             \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
             \hfilneg
@@ -6173,17 +6176,23 @@
                 \hskip\multlinegap
             \fi
             \hskip.5\wd\@ne
-            \hskip-.5\wdz@
+%    \end{macrocode}
+% \changes{v2.17m}{2022/02/03}{Added missing \cs{relax} for (gh/716)}
+%    \begin{macrocode}
+            \hskip-.5\wdz@ \relax
             #1%
         }
     \else
-        \def\shoveleft#1{%
+        \protected\def\shoveleft#1{%
             \setboxz at h{$\m at th\displaystyle{}#1$}%
             \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
             \hfilneg
             \hskip\multlinegap
             \hskip.5\wd\@ne
-            \hskip-.5\wdz@
+%    \end{macrocode}
+% \changes{v2.17m}{2022/02/03}{Added missing \cs{relax} for (gh/716)}
+%    \begin{macrocode}
+            \hskip-.5\wdz@ \relax
             #1%
         }
     \fi

Modified: trunk/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -58,7 +58,7 @@
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
 [1994/12/01]% LaTeX date must December 1994 or later
-\ProvidesPackage{amsopn}[2021/08/26 v2.02 operator names]
+\ProvidesPackage{amsopn}[2022/01/20 v2.03 operator names]
 %    \end{macrocode}
 %
 %    What \cs{nolimits@} does is keep a \cn{limits} typed by the user
@@ -198,8 +198,16 @@
 %    more accessible so that users can call this font for use in special
 %    constructs that are not ordinary operator names but conceptually
 %    related.
+%
+%    \cs{operator at font} is also declared by the \LaTeX{} kernel (for
+%    at least 14 years), thus defining it here effectively means
+%    ``resetting it'' to the kernel value, which is counterproductive
+%    in situations where the user (or a class) has altered its
+%    definition and at a later point \pkg{amsopn} got added.
+% \changes{v2.03}{2022/01/20}{Do not reset \cs{operator at font} it is
+%    already defined in the LaTeX kernel (gh/734)}
 %    \begin{macrocode}
-\def\operator at font{\mathgroup\symoperators}
+%\def\operator at font{\mathgroup\symoperators} % commented out in 2.03
 \def\operatorfont{\operator at font}
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -40,7 +40,7 @@
 %<*latexrelease>
 % \fi
 %         \ProvidesFile{latexrelease.dtx}
-          [2021/04/29 v1.0n LaTeX release emulation and tests
+          [2022/02/28 v1.0o LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 % \iffalse
 %</latexrelease>
@@ -487,10 +487,9 @@
 % \begin{macro}{\sourceLaTeXdate}
 %   \changes{v1.0l}{2021/01/23}{\cs{sourceLaTeXdate} added}
 %   \changes{v1.0m}{2021/03/18}{Define \cs{sourceLaTeXdate} conditionally}
-%   Store the original \LaTeX{} format version
-%   as a number in the format |YYYYMMDD|.  This macro has to
-%   be defined conditionally, so that it isn't changed in case
-%   \file{latexrelease.sty} is loaded twice (for tests), but it
+%   Store the original \LaTeX{} format version as a number in the format
+%   |YYYYMMDD |.  This macro has to be defined conditionally, so that it
+%   isn't changed in case \file{latexrelease.sty} is reloaded, but it
 %   can't be defined in the kernel only, otherwise
 %   \file{latexrelease.sty} wouldn't work in older \LaTeX{} due
 %   to the missing macro.
@@ -619,7 +618,7 @@
   \catcode58=11 % :
   \catcode126=10 % ~
   \catcode32=09 % <space>
-  \xdef\latexrelease at postexpl{\unexpanded{%
+  \xdef\latexrelease at postltexpl{\unexpanded{%
 %<@@=latexrelease>
 %    \end{macrocode}
 %
@@ -691,14 +690,13 @@
 % store each in \cs{l_@@_restores_tl}, save a copy, and redefine each.
 %    \begin{macrocode}
 \tl_clear_new:N \l_@@_restores_tl
-\cs_gset:Npn \@@_tmp:w #1 #2
+\cs_gset:Npn \@@_redefines:w #1 #2
   {
-    \quark_if_recursion_tail_stop_do:Nn #1
-      { \cs_undefine:N \@@_tmp:w }
+    \quark_if_recursion_tail_stop:N #1
     \tl_put_right:Nn \l_@@_restores_tl {#1}
     \cs_set_eq:cN { @@_ \cs_to_str:N #1 } #1
     \cs_set_eq:NN #1 #2
-    \@@_tmp:w
+    \@@_redefines:w
   }
 %    \end{macrocode}
 %
@@ -731,12 +729,12 @@
 % \end{description}
 % And here we go:
 %    \begin{macrocode}
-\@@_tmp:w
+\@@_redefines:w
   \__kernel_chk_if_free_cs:N \use_none:n
   \e at alloc \@@_e at alloc:NnnnnN
   \__kernel_msg_error:nnx \use_none:nnn
   \msg_new:nnnn \msg_gset:nnnn
-  \NewDocumentCommand \DeclareDocumentCommand
+  % \NewDocumentCommand \DeclareDocumentCommand % after ltcmd.dtx
   \newcommand \@@_declare_command:w
 %    \end{macrocode}
 %    Temp addition \ldots
@@ -752,7 +750,23 @@
 \msg_redirect_name:nnn { hooks } { exists } { none }
 %    \end{macrocode}
 %
+% Now a one-off for |ltcmd.dtx|: we need to make \cs{NewDocumentCommand}
+% not complain on an already existing command, but it has to be done
+% after \cs{NewDocumentCommand} is defined, so this is separate from
+% the \cs{latexrelease at postltexpl} actions above:
+% \changes{v1.0o}{2022/02/28}
+%         {Move most redefinitions to right after ltexpl.dtx}
 %    \begin{macrocode}
+\cs_gset_protected:Npn \latexrelease at postltcmd
+  {
+    \@@_redefines:w
+      \NewDocumentCommand \DeclareDocumentCommand
+      \q_recursion_tail \q_recursion_tail
+      \q_recursion_stop
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
   }}%
 \endgroup
 %</latexrelease>

Modified: trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.ins	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.ins	2022-03-15 20:08:23 UTC (rev 62725)
@@ -93,7 +93,7 @@
   \from{ltluatex.dtx}    {latexrelease}% empty 
   \from{ltexpl.dtx}      {latexrelease}% empty 
   \from{ltdefns.dtx}     {latexrelease}%
-  \from{ltcmd.dtx}       {latexrelease}%
+  \from{ltcmd.dtx}       {latexrelease}% L3 layer module
   \from{lthooks.dtx}     {latexrelease}% L3 layer module
   \from{ltcmdhooks.dtx}  {latexrelease}% L3 layer module
   \from{ltalloc.dtx}     {latexrelease}% empty

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltbibl.dtx}
-             [2020/12/10 v1.1s LaTeX Kernel (Bibliography)]
+             [2022/03/10 v1.1t LaTeX Kernel (Bibliography)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltbibl.dtx}
@@ -199,9 +199,42 @@
 % \begin{macro}{\cite}
 % \changes{v1.1j}{1995/10/16}{(DPC) Make robust}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2022/06/01}%
+%<latexrelease>                 {\cite}{check for blank}%
 \DeclareRobustCommand\cite{%
-  \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+  \@ifnextchar [{\@tempswatrue\@citex at checkblank}{\@tempswafalse\@citex at checkblank[]}}
 %    \end{macrocode}
+%    Due to the way \cs{@for} as used in \cs{@citex} behaves an empty
+%    argument to \cs{cite} did not produce any warning for a missing
+%    citation. So we now inject a command before calling \cs{@citex} that
+%    does the checking for us. It is not done in \cs{@citex} directly,
+%    because that command is altered by a number of packages/classes
+%    and this way it is more likely that the check survives.
+% \changes{v1.1t}{2022/03/10}{Ensure that an empty argument generates
+%    a warning (gh/790)}
+%    \begin{macrocode}
+\def\@citex at checkblank[#1]#2{%
+   \IfBlankTF {#2}%
+     {\@citex[#1]{\space}}%
+     {\@citex[#1]{#2}}%
+}
+%</2ekernel|latexrelease>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\cite}{check for blank}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\cite{%
+%<latexrelease>  \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+%<latexrelease>\let\@citex at checkblank\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 %  \end{macro}
 %
 % \begin{macro}{\@citex}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -34,8 +34,8 @@
 %%% From File: ltcmd.dtx
 %
 %    \begin{macrocode}
-\def\ltcmdversion{v1.0j}
-\def\ltcmddate{2021-12-31}
+\def\ltcmdversion{v1.0k}
+\def\ltcmddate{2022-02-28}
 %    \end{macrocode}
 %
 %<*driver>
@@ -4716,6 +4716,27 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%
+% \begin{macro}{\IfBlankT, \IfBlankF, \IfBlankTF}
+%   Another simple re-naming.
+% \changes{v1.0k}{2022/02/19}{Added \cs{IfBlankTF} and friends}
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2022/06/01}%
+%<latexrelease>                 {\IfBlankTF}{Testing~for~empty~or~blank}%
+\cs_new_eq:NN \IfBlankF  \tl_if_blank:nF
+\cs_new_eq:NN \IfBlankT  \tl_if_blank:nT
+\cs_new_eq:NN \IfBlankTF \tl_if_blank:nTF
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2021/11/15}%
+%<latexrelease>                 {\IfBlankTF}{Testing~for~empty~or~blank}%
+%<latexrelease>\cs_undefine:N \IfBlankF
+%<latexrelease>\cs_undefine:N \IfBlankT
+%<latexrelease>\cs_undefine:N \IfBlankTF
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\ProcessedArgument}
 %   Processed arguments are returned using this name, which is reserved
 %   here although the definition will change.
@@ -4779,7 +4800,14 @@
 %<latexrelease>
 %<latexrelease>\EndModuleRelease
 \ExplSyntaxOff
-%<latexrelease>\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postexpl}
+%    \end{macrocode}
+%
+% Now in |latexrelease| mode, redefine \cs{NewDocumentCommand} to not
+% complain on commands already defined.
+% \changes{v1.0k}{2022-02-28}
+%                {Move latexrelease redefinitions from ltcmd.dtx}
+%    \begin{macrocode}
+%<latexrelease>\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postltcmd}
 %<latexrelease>\catcode`\^^@=\@latexrelease at catcode@null\relax
 %</2ekernel|latexrelease>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltexpl.dtx}
-             [2022/01/06 v1.3e LaTeX Kernel (expl3-dependent code)]
+             [2022/02/28 v1.3f LaTeX Kernel (expl3-dependent code)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltexpl.dtx}
@@ -288,6 +288,14 @@
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %
+% Now in |latexrelease| mode, redefine a few commands to avoid ``already
+% defined'' errors.
+% \changes{v1.3f}{2022/02/28}
+%                {Move latexrelease redefinitions from ltcmd.dtx}
+%    \begin{macrocode}
+%<latexrelease>\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postltexpl}
+%    \end{macrocode}
+%
 % \changes{v1.3a}{2021/01/21}
 %                {Move \pkg{xparse} rollback code to \texttt{ltcmd.dtx}}
 %
@@ -432,17 +440,17 @@
 %<latexrelease>\IncludeInRelease{2022/06/01}%
 %<latexrelease>                 {\fpeval}{fp and int calculations}%
 \ExplSyntaxOn
-\cs_new_eq:NN \fpeval \fp_eval:n 
+\cs_new_eq:NN \fpeval \fp_eval:n
 %    \end{macrocode}
 %     And a few more, this time wrappers around the e\TeX{} primitives.
 %    \begin{macrocode}
-\cs_new_eq:NN \inteval \int_eval:n 
+\cs_new_eq:NN \inteval \int_eval:n
 %    \end{macrocode}
 %    
 % \changes{v1.3d}{2021/12/07}{Added \cs{dimeval} and \cs{skipeval} (gh/711)}
 %    \begin{macrocode}
-\cs_new_eq:NN \dimeval  \dim_eval:n 
-\cs_new_eq:NN \skipeval \skip_eval:n 
+\cs_new_eq:NN \dimeval  \dim_eval:n
+\cs_new_eq:NN \skipeval \skip_eval:n
 \ExplSyntaxOff
 %    \end{macrocode}
 % \end{macro}
@@ -452,7 +460,6 @@
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{0000/00/00}%
 %<latexrelease>                 {\fpeval}{fp and int calculations}%
-
 %<latexrelease>
 %<latexrelease>\let\fpeval\@undefined
 %<latexrelease>\let\inteval\@undefined
@@ -503,7 +510,6 @@
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{0000/00/00}%
 %<latexrelease>                 {\ExpandArgs}{Some pre-expansion commands}%
-
 %<latexrelease>
 %<latexrelease>\let\UseName\@undefined
 %<latexrelease>\let\ExpandArgs\@undefined

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -31,8 +31,8 @@
 %%% From File: ltfilehook.dtx
 %
 %    \begin{macrocode}
-\providecommand\ltfilehookversion{v1.0l}
-\providecommand\ltfilehookdate{2021/08/27}
+\providecommand\ltfilehookversion{v1.0m}
+\providecommand\ltfilehookdate{2022/03/10}
 %    \end{macrocode}
 %
 %<*driver>
@@ -1046,7 +1046,8 @@
 %
 % \subsection{Selecting a file (\cs{set at curr@file})}
 %
-% \begin{macro}{\set at curr@file,\@curr at file,\@curr at file@reqd}
+% \begin{macro}{\set at curr@file,\set at curr@file at nosearch}
+% \begin{macro}{\@curr at file,\@curr at file@reqd}
 %  \changes{v1.0f}{2021/01/31}{set \cs{protect} to \cs{string} gh/481}
 %   Now we hook into \cs{set at curr@file} to resolve a possible file
 %   substitution, and add \cs{@expl@@@filehook at set@curr at file@@nNN}
@@ -1070,13 +1071,23 @@
 %   control sequence.
 %   \changes{v1.0i}{2021/04/20}
 %           {Make \string~ expand to a string (tracks change in l3kernel)}
+%   \changes{v1.0m}{2022/03/10}
+%           {Add \cs{set at curr@file at nosearch} for \pkg{graphicx}}
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease>\IncludeInRelease{2022/06/01}%
 %<latexrelease>          {\set at curr@file}{Setting current file name}%
-\def\set at curr@file#1{%
+\def\set at curr@file{%
   \begingroup
+    \set at curr@file at aux}
+\edef\set at curr@file at nosearch{%
+  \begingroup
+    \let\noexpand\input at path\noexpand\@empty
+    \csname seq_clear:N\endcsname
+      \expandafter\noexpand\csname l_file_search_path_seq\endcsname
+    \noexpand\set at curr@file at aux}
+\def\set at curr@file at aux#1{%
     \escapechar\m at ne
     \let\protect\string
     \edef~{\string~}%
@@ -1117,6 +1128,32 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease>          {\set at curr@file}{Setting current file name}%
+%<latexrelease>\def\set at curr@file#1{%
+%<latexrelease>  \begingroup
+%<latexrelease>    \escapechar\m at ne
+%<latexrelease>    \let\protect\string
+%<latexrelease>    \edef~{\string~}%
+%<latexrelease>    \expandafter\def\csname\expandafter\endcsname
+%<latexrelease>      \expandafter{\csname\endcsname}%
+%<latexrelease>    \@expl@@@filehook at if@no at extension@@nTF{#1}%
+%<latexrelease>      {\@tempswatrue}{\@tempswafalse}%
+%<latexrelease>    \@kernel at make@file at csname\@curr at file
+%<latexrelease>      \@expl@@@filehook at resolve@file at subst@@w {#1}%
+%<latexrelease>    \@expl@@@filehook at if@file at replaced@@TF
+%<latexrelease>      {\@kernel at make@file at csname\@curr at file@reqd
+%<latexrelease>         \@expl@@@filehook at normalize@file at name@@w{#1}%
+%<latexrelease>       \if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file@reqd \fi}%
+%<latexrelease>      {\if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file \fi
+%<latexrelease>       \global\let\@curr at file@reqd\@curr at file}%
+%<latexrelease>    \@expl@@@filehook at clear@replacement at flag@@
+%<latexrelease>  \endgroup}
+%<latexrelease>\let\set at curr@file at nosearch\@undefined
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %<latexrelease>\IncludeInRelease{2020/10/01}%
 %<latexrelease>          {\set at curr@file}{Setting current file name}%
 %<latexrelease>\def\set at curr@file#1{%
@@ -1136,6 +1173,7 @@
 %<latexrelease>       \global\let\@curr at file@reqd\@curr at file}%
 %<latexrelease>    \@expl@@@filehook at clear@replacement at flag@@
 %<latexrelease>  \endgroup}
+%<latexrelease>\let\set at curr@file at nosearch\@undefined
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %
@@ -1152,6 +1190,7 @@
 %<latexrelease>        \csname\@firstofone#1\@empty\endcsname}}%
 %<latexrelease>  \endgroup
 %<latexrelease>}
+%<latexrelease>\let\set at curr@file at nosearch\@undefined
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %
@@ -1159,10 +1198,12 @@
 %<latexrelease>\IncludeInRelease{0000/00/00}%
 %<latexrelease>          {\set at curr@file}{Setting current file name}%
 %<latexrelease>\let\set at curr@file\@undefined
+%<latexrelease>\let\set at curr@file at nosearch\@undefined
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 %
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfinal.dtx}
-             [2021/12/07 v2.2q LaTeX Kernel (Final Settings)]
+             [2022/02/20 v2.2r LaTeX Kernel (Final Settings)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfinal.dtx}
@@ -1037,10 +1037,14 @@
 % \begin{macro}{\MakeUppercase}
 % \begin{macro}{\MakeUppercase}
 % \begin{macro}{\@uclclist}
+% \begin{macro}{\@expl at text@lowercase@@n}
+% \begin{macro}{\@expl at text@uppercase@@n}
+% \begin{macro}{\@uclclist}
 %
+%
 % \changes{v1.1a}{1997/10/20}{Removed \cs{aa} and \cs{AA} from
 %    \cs{@uclclist} as these are macros.}
-%
+% \changes{v2.2r}{2022/02/20}{use \cs{text_lowercase:n}}%
 %    And whilst we're doing things with uc/lc tables, here are two
 %    commands to upper- and lower-case a string.
 %
@@ -1051,7 +1055,18 @@
 %    mathematics, environment names, labels, etc.  A much better
 %    long-term solution is to use all-caps fonts, but these aren't
 %    generally available.
+%
+% Two wrappers around the L3 case changing functions.
+% |\protected| to make them mostly safe as replacements for |uppercase|
+% and |\lowercase|.  
 %    \begin{macrocode}
+\ExplSyntaxOn
+\protected\def\@expl at text@lowercase@@n{\text_lowercase:n}
+\protected\def\@expl at text@uppercase@@n{\text_uppercase:n}
+\ExplSyntaxOff
+%    \end{macrocode}
+
+%%    \begin{macrocode}
 \DeclareRobustCommand{\MakeUppercase}[1]{{%
       \def\i{I}\def\j{J}%
       \def\reserved at a##1##2{\let##1##2\reserved at a}%
@@ -1059,20 +1074,16 @@
 %    \end{macrocode}
 %    Tell UTF-8 processing to process chars even though we are in an \cs{protected at edef}.
 % \changes{v2.1h}{2019/09/14}{Expand UTF8 chars when case changing (github/177)}
+% \changes{v2.2r}{2022/02/20}
+%                {Use \cs{@expl at text@uppercase@@n}, removing local redefinition of \cs{UTF at two@octets at noexpand}}%
 %    \begin{macrocode}
-      \let\UTF at two@octets at noexpand\@empty
-      \let\UTF at three@octets at noexpand\@empty
-      \let\UTF at four@octets at noexpand\@empty
-      \protected at edef\reserved at a{\uppercase{#1}}%
+      \protected at edef\reserved at a{\@expl at text@uppercase@@n{#1}}%
       \reserved at a
    }}
 \DeclareRobustCommand{\MakeLowercase}[1]{{%
       \def\reserved at a##1##2{\let##2##1\reserved at a}%
       \expandafter\reserved at a\@uclclist\reserved at b{\reserved at b\@gobble}%
-      \let\UTF at two@octets at noexpand\@empty
-      \let\UTF at three@octets at noexpand\@empty
-      \let\UTF at four@octets at noexpand\@empty
-      \protected at edef\reserved at a{\lowercase{#1}}%
+      \protected at edef\reserved at a{\@expl at text@lowercase@@n{#1}}%
       \reserved at a
    }}
 %    \end{macrocode}
@@ -1108,6 +1119,9 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \changes{v1.0h}{1994/05/13}{Added output enc stuff}
 % \changes{v1.0i}{1994/05/16}{moved output enc stuff to lfonts}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltkeys.dtx}
-             [2022/02/04 v1.0b LaTeX Kernel (Kevyal options)]
+             [2022/02/21 v1.0e LaTeX Kernel (Kevyal options)]
 % \iffalse
 \documentclass{l3doc}
 \GetFileInfo{ltkeys.dtx}
@@ -103,6 +103,17 @@
 %   \cs{ProcessKeyOptions}/\cs{ProcessKeyPackageOptions} act as package options.
 % \end{function}
 %
+% \begin{function}{\DeclareUnknownKeyHandler}
+%   \begin{syntax}
+%     \cs{DeclareUnknownKeyHandler} \oarg{family} \marg{code}
+%   \end{syntax}
+%   The function \cs{DeclareUnknownKeyHandler} may be used to define
+%   the behavior when an undefined key is encountered. The \meta{code}
+%   will receive the unknown key name as |#1| and the value as |#2|.
+%   These can then be processed as appropriate, e.g.~by forwarding
+%   to another package.
+% \end{function}
+%
 % \begin{function}{\ProcessKeyOptions}
 %   \begin{syntax}
 %     \cs{ProcessKeyOptions} \oarg{family}
@@ -153,6 +164,10 @@
 % \subsection{Key properties}
 %
 % \begin{macro}{.code, .if, .store, .usage}
+% \changes{v1.0b}{2022/02/05}
+%         {Create properties in \texttt{ltlkeys}}
+% \changes{v1.0c}{2022/02/07}
+%         {Correct \texttt.{.code} property}
 %    \begin{macrocode}
 \group_begin:
   \cs_set_protected:Npn \@@_tmp:nn #1#2
@@ -164,7 +179,7 @@
       \@@_tmp:nn
     }
   \@@_tmp:nn
-    { code }            { code }
+    { code:n }          { code }
     { legacy_if_set:n } { if }
     { tl_set:N }        { store }
     { usage:n }         { usage }
@@ -196,7 +211,8 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_options:Nn, \@@_options:NV}
+% \begin{macro}{\@@_options:Nn}
+% \begin{macro}{\@@_options:nN}
 % \changes{v1.0b}{2022/01/15}
 %         {Clear option list in end-of-package hook}
 % \begin{macro}{\@@_options_end:}
@@ -211,15 +227,17 @@
 %   in all cases.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_options:Nn #1#2
+  { \@@_options_expand_module:Nn \@@_options:nN {#2} #1 }
+\cs_new_protected:Npn \@@_options:nN #1#2
   {
-    \cs_gset_nopar:cpn { opt at fam@\@currname.\@currext } {#2}
+    \cs_gset_nopar:cpn { opt at fam@\@currname.\@currext } {#1}
     \cs_set_protected:Npn \@@_option_end: { }
     \clist_clear:N \l_@@_options_clist
-    \@@_options_global:Nn #1 {#2}
+    \@@_options_global:Nn #2 {#1}
     \@@_options_local:
-    \keys_if_exist:nnF {#2} { unknown }
+    \keys_if_exist:nnF {#1} { unknown }
       {
-        \keys_define:nn {#2}
+        \keys_define:nn {#1}
           {
             unknown .code:n =
               {
@@ -228,16 +246,15 @@
               }
           }
         \cs_set_protected:Npn \@@_option_end:
-          { \keys_define:nn {#2} { unknown .undefine: } }
+          { \keys_define:nn {#1} { unknown .undefine: } }
       }
     \bool_set_true:N \l_@@_options_loading_bool
-    \keys_set:nV {#2} \l_@@_options_clist
+    \keys_set:nV {#1} \l_@@_options_clist
     \bool_set_false:N \l_@@_options_loading_bool
     \AtEndOfPackage { \cs_set_eq:NN \@unprocessedoptions \scan_stop: }
     \@@_option_end:
-    \@@_options_loaded:n {#2}
+    \@@_options_loaded:n {#1}
   }
-\cs_generate_variant:Nn \@@_options:Nn { NV }
 \msg_new:nnnn { keys } { option-unknown }
   { Unknown~option~'#1'~for~package~#2. }
   {
@@ -247,6 +264,7 @@
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_options_global:Nn}
 %   Global (class) options are handled differently for \LaTeXe{} packages
@@ -355,38 +373,72 @@
 %
 % \subsection{The document interfaces}
 %
+%    \begin{macrocode}
+\cs_generate_variant:Nn \keys_define:nn { nx }
+%    \end{macrocode}
+%
+% \begin{macro}{\@@_options_expand_module:Nn}
+% \changes{v1.0e}{2022/02/21}
+%         {Faster approach to module expansion}
+% \begin{macro}{\@@_options_expand_module:nN}
+%   To deal with active characters inside the module argument whilst also
+%   expanding that argument, we use a combination of \texttt{c}- and
+%   \texttt{f}-type expansion. This works as the definitions for active
+%   UTF-8 bytes contain an \cs{ifincsname} test.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_options_expand_module:Nn #1#2
+  {
+    \cs:w @@_options_expand_module:nN \use:e { \cs_end: {#2} } #1
+  }
+\cs_new_protected:Npn \@@_options_expand_module:nN #1#2
+  { #2 {#1} }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\DeclareKeys}
+% \changes{v1.0c}{2022/02/15}{Expand module argument}
+% \changes{v1.0d}{2022/02/16}{Allow for active characters in module argument}
 %   Defining key options is quite straight-forward: we have an intermediate
 %   function to allow for potential set-up steps.
 %    \begin{macrocode}
-\NewDocumentCommand \DeclareKeys { o +m }
+\NewDocumentCommand \DeclareKeys { O { \@currname } +m }
+  { \@@_options_expand_module:Nn \keys_define:nn {#1} {#2} }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareUnknownKeyHandler}
+% \changes{v1.0c}{2022/02/15}{Added \cs{DeclareUnknownKeysHandler}}
+% \changes{v1.0d}{2022/02/16}{Allow for active characters in module argument}
+% \changes{v1.0d}{2022/02/16}
+%   {Rename \cs{DeclareUnknownKeysHandler} to \cs{DeclareUnknownKeyHandler}}
+%    \begin{macrocode}
+\NewDocumentCommand \DeclareUnknownKeyHandler { O { \@currname } +m }
   {
-    \IfNoValueTF {#1}
-      { \exp_args:NV \keys_define:nn \@currname }
-      { \keys_define:nn {#1} }
-        {#2}
+    \cs_set_protected:cpn { @@_unknown_handler_ #1 :nn } ##1##2 {#2}
+    \@@_options_expand_module:Nn \keys_define:nx {#1}
+      {
+        unknown .code:n = 
+          \exp_not:N \exp_args:NV
+            \exp_not:c { @@_unknown_handler_ #1 :nn }
+            \exp_not:N \l_keys_key_str {####1}
+      }
   }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\ProcessKeyOptions, \ProcessKeyPackageOptions}
+% \changes{v1.0c}{2022/02/15}{Expand module argument}
+% \changes{v1.0d}{2022/02/16}{Allow for active characters in module argument}
 %   We need to deal with the older interface from \pkg{l3keys2e} here: it had
 %   a mandatory argument. We can mop that up using a look-ahead, and then
 %   exploit that information to determine whether the package option handling
 %   is set up for the new approach for clash handling.
 %    \begin{macrocode}
-\NewDocumentCommand \ProcessKeyOptions { o }
-  {
-    \IfNoValueTF {#1}
-      { \@@_options:NV \c_true_bool \@currname }
-      { \@@_options:Nn \c_true_bool {#1} }
-  }
-\NewDocumentCommand \ProcessKeyPackageOptions { o }
-  {
-    \IfNoValueTF {#1}
-      { \@@_options:NV \c_false_bool \@currname }
-      { \@@_options:Nn \c_false_bool {#1} }
-  }
+\NewDocumentCommand \ProcessKeyOptions { O { \@currname } }
+  { \@@_options:Nn \c_true_bool {#1} }
+\NewDocumentCommand \ProcessKeyPackageOptions { O { \@currname } }
+  { \@@_options:Nn \c_false_bool {#1} }
 \@onlypreamble \ProcessKeyOptions
 \@onlypreamble \ProcessKeyPackageOptions
 %    \end{macrocode}
@@ -462,15 +514,12 @@
 % \subsection{General key setting}
 %
 % \begin{macro}{\SetKeys}
+% \changes{v1.0c}{2022/02/15}{Expand module argument}
+% \changes{v1.0d}{2022/02/16}{Allow for active characters in module argument}
 %   A simple wrapper.
 %    \begin{macrocode}
-\NewDocumentCommand \SetKeys { o +m }
-  {
-    \IfNoValueTF {#1}
-      { \keys_set:Vn \@currname }
-      { \keys_set:nn {#1} }
-        {#2}
-  }
+\NewDocumentCommand \SetKeys { O { \@currname } +m }
+  { \@@_options_expand_module:Nn \keys_set:nn {#1} {#2} }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltvers.dtx}
-             [2021/08/10 v1.1h LaTeX Kernel (Version Info)]
+             [2022/02/28 v1.1i LaTeX Kernel (Version Info)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltvers.dtx}
@@ -115,7 +115,7 @@
    {2022-06-01}
 %</2ekernel|latexrelease>
 %<*2ekernel>
-\def\patch at level{-2}
+\def\patch at level{-3}
 %    \end{macrocode}
 %
 % \begin{macro}{\development at branch@name}
@@ -365,6 +365,8 @@
 %   \changes{v1.1f}{2021/03/18}{Added \cs{NewModuleRelease}.}
 %   \changes{v1.1g}{2021/04/16}
 %           {\cs{NewModuleRelease} with the same arguments as \cs{IncludeInRelease}.}
+%   \changes{v1.1i}{2022/02/28}
+%           {Detect a missing \cs{IncludeInRelease}\texttt{\{0000/00/00\}}.}
 %    \begin{macrocode}
 \let\if at skipping@module\iffalse
 \def\@skipping at moduletrue{\let\if at skipping@module\iftrue}
@@ -379,7 +381,7 @@
   \GenericInfo{}{BEGIN module: \new at modulename\space (\new at moduledate)}%
   \GenericInfo{}{ \@spaces\@spaces\@spaces\space#3\@gobble}%
   \ifnum\sourceLaTeXdate<%
-      \expandafter\@parse at version\new at moduledate//00\@nil\relax
+        \expandafter\@parse at version\new at moduledate//00\@nil\relax
     \ifnum\expandafter\@parse at version\fmtversion//00\@nil<%
           \expandafter\@parse at version\new at moduledate//00\@nil\relax
       \GenericInfo{}{Skipping module \new at modulename}%
@@ -394,7 +396,19 @@
     \@skipping at moduletrue
     \expandafter\new at module@skip
   \fi}
-\long\def\new at module@skip#1\IncludeInRelease{\IncludeInRelease}
+\long\def\new at module@skip#1\IncludeInRelease{%
+  \long\def\reserved at a##1\EndModuleRelease{}%
+  \if\relax\detokenize\expandafter{\reserved at a#1{}{}\EndModuleRelease}\relax
+  \else
+    \@latex at error{Missing mandatory \string\IncludeInRelease{0000/00/00}}\@ehc
+    \expandafter\@secondoftwo
+  \fi
+  \@gobble
+    {\@expandtwoargs\IncludeInRelease
+         {0000/00/00}{\new at modulename}%
+         {ERROR! Emergency recovery}%
+     #1}%
+  \IncludeInRelease}
 \def\EndModuleRelease{%
   \ifx\new at modulename\@empty
     \@latex at error{Extra \string\EndModuleRelease.}\@eha

Modified: trunk/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -216,7 +216,7 @@
 %<+ts1> \ProvidesFile{ts1enc.dfu}
 %<+x2>  \ProvidesFile{x2enc.dfu}
 %<+all> \ProvidesFile{utf8enc.dfu}
-%<-utf8-2018>   [2021/12/13 v1.2o UTF-8 support]
+%<-utf8-2018>   [2022/02/13 v1.3a UTF-8 support]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -363,11 +363,12 @@
 % \begin{macro}{\UTFviii at two@octets at noexpand}
 % \begin{macro}{\UTFviii at three@octets at noexpand}
 % \begin{macro}{\UTFviii at four@octets at noexpand}
+% \changes{v1.3a}{2022/02/19}{Use \cs{unexpanded} rather than \cs{noexpand} so only takes one expansion step}%
 %    These temporarily prevent the active chars from expanding.
 %    \begin{macrocode}
-\long\def\UTF at two@octets at noexpand#1#2{\noexpand#2\noexpand}
-\long\def\UTF at three@octets at noexpand#1#2#3{\noexpand#2\noexpand#3\noexpand}
-\long\def\UTF at four@octets at noexpand#1#2#3#4{\noexpand#2\noexpand#3\noexpand#4\noexpand}
+\long\def\UTF at two@octets at noexpand#1#2#3{\unexpanded{#2#3}}
+\long\def\UTF at three@octets at noexpand#1#2#3#4{\unexpanded{#2#3#4}}
+\long\def\UTF at four@octets at noexpand#1#2#3#4#5{\unexpanded{#2#3#4#5}}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -376,11 +377,12 @@
 % \begin{macro}{\UTFviii at two@octets at string}
 % \begin{macro}{\UTFviii at three@octets at string}
 % \begin{macro}{\UTFviii at four@octets at string}
+% \changes{v1.3a}{2022/02/19}{Use \cs{detokenize} rather than \cs{string} so only takes one expansion step}%
 %    And the same with \cs{string} for use in \cs{csname} constructions.
 %    \begin{macrocode}
-\long\def\UTF at two@octets at string#1#2{\string#2\string}
-\long\def\UTF at three@octets at string#1#2#3{\string#2\string#3\string}
-\long\def\UTF at four@octets at string#1#2#3#4{\string#2\string#3\string#4\string}
+\long\def\UTF at two@octets at string#1#2#3{\detokenize{#2#3}}
+\long\def\UTF at three@octets at string#1#2#3#4{\detokenize{#2#3#4}}
+\long\def\UTF at four@octets at string#1#2#3#4#5{\detokenize{#2#3#4#5}}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -542,15 +544,24 @@
 %    |\count@| and ending at |\@tempcnta|${} - 1$, each time executing
 %    the code in |\UTFviii at tmp|.
 %
-%    All this is done in a group so that temporary catcode changes
-%    etc.~vanish after everything is set up.
+%    Store current settings so can restore after the loops without using a group (gh/762).
 %
 %    \begin{macrocode}
-\begingroup
+\edef\reserved at a{%
+\catcode`\noexpand\~=\the\catcode`\~\relax
+\catcode`\noexpand\"=\the\catcode`\"\relax
+\uccode`\noexpand\~=\the\uccode`\~\relax
+\count@=\the\count@\relax
+\@tempcnta=\the\@tempcnta\relax
+\let\noexpand\reserved at a\relax}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \catcode`\~13
 \catcode`\"12
 %    \end{macrocode}
 %
+% \changes{v1.3a}{2022/02/19}{Use local protected definitions in the character definitions}%
 %    \begin{macrocode}
 \def\UTFviii at loop{%
   \uccode`\~\count@
@@ -566,7 +577,7 @@
 % C0 controls are valid UTF-8 but defined to give the ``Character not defined error''
 % They may be defined with |\DeclareUnicodeCharacter|.
 %    \begin{macrocode}
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at undefined@err{:\string~}}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at undefined@err{:\string~}}}
 % 0 ^^@ null
     \count@"1
     \@tempcnta9
@@ -588,7 +599,7 @@
 %    \begin{macrocode}
     \count@"80
     \@tempcnta"C2
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at invalid@err\string~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at invalid@err\string~}}
 \UTFviii at loop
 %    \end{macrocode}
 %
@@ -597,7 +608,7 @@
 %    \begin{macrocode}
     \count@"C2
     \@tempcnta"E0
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at two@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at two@octets\noexpand~}}
 \UTFviii at loop
 %    \end{macrocode}
 %
@@ -605,7 +616,7 @@
 %    \begin{macrocode}
     \count@"E0
     \@tempcnta"F0
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at three@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at three@octets\noexpand~}}
 \UTFviii at loop
 %    \end{macrocode}
 %
@@ -614,7 +625,7 @@
 %    \begin{macrocode}
     \count@"F0
     \@tempcnta"F5
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at four@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at four@octets\noexpand~}}
 \UTFviii at loop
 %    \end{macrocode}
 %
@@ -623,12 +634,13 @@
 %    \begin{macrocode}
     \count@"F5
     \@tempcnta"100
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at invalid@err\string~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at invalid@err\string~}}
 \UTFviii at loop
 %    \end{macrocode}
 %
+% Restore values after the loops.
 %    \begin{macrocode}
-\endgroup
+\reserved at a
 %    \end{macrocode}
 %
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2021
+%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2022
 %%
 %% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
@@ -99,7 +99,7 @@
 %    release we have to make and distribute also a matching
 %    development release.
 %
-% \StopEventually{\setlength\IndexMin{200pt}  \PrintIndex  }
+% \MaybeStop{\setlength\IndexMin{200pt}  \PrintIndex  }
 %
 %
 % \section{The Implementation}
@@ -111,8 +111,8 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\LaTeXFirstAidDate{2021/11/11}
-\def\LaTeXFirstAidVersion{v1.0q}
+\def\LaTeXFirstAidDate{2022/02/20}
+\def\LaTeXFirstAidVersion{v1.0r}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -311,11 +311,12 @@
 %<*kernel>
 %    \end{macrocode}
 %
+%    Bidi is now ar a new version: patches are no longer needed.  
 %    \begin{macrocode}
-\AddToHook{file/biditools.sty/after}[firstaid]{%
-  \FirstAidNeededT{biditools}{sty}%
-                  {2020/05/13 v2 Programming tools for bidi package}%
-  {%
+%\AddToHook{file/biditools.sty/after}[firstaid]{%
+%  \FirstAidNeededT{biditools}{sty}%
+%                  {2020/05/13 v2 Programming tools for bidi package}%
+%  {%
 %    \end{macrocode}
 %    \pkg{bidi} adds some code to the beginning of \cs{document} which
 %    contains \cs{endgroup} and \cs{begingroup} which is no longer
@@ -324,20 +325,20 @@
 %    Patching \cs{document} using \cs{bidi at patchcmd} doesn't work so
 %    we take the extra groups out by hand:
 %    \begin{macrocode}
-  \def\firstaid at bidi@document at patch
-          \endgroup#1\begingroup#2\firstaid at bidi@document at patch
-          {\unexpanded{#1#2}}%
-  \edef\document{\expandafter\firstaid at bidi@document at patch\document
-            \firstaid at bidi@document at patch}%
+%  \def\firstaid at bidi@document at patch
+%          \endgroup#1\begingroup#2\firstaid at bidi@document at patch
+%          {\unexpanded{#1#2}}%
+%  \edef\document{\expandafter\firstaid at bidi@document at patch\document
+%            \firstaid at bidi@document at patch}%
 %    \end{macrocode}
 %    There are also some patches into \cs{enddocument}, some continue
 %    to go in but one fails, so we add that now into the right place.
 %    \begin{macrocode}
-  \AddToHook{enddocument/info}%
-            {\let\bidi at AfterEndDocumentCheckLabelsRerun\@firstofone
-              \bidi at afterenddocumentchecklabelsrerunhook}%
-  }%
-}
+%  \AddToHook{enddocument/info}%
+%            {\let\bidi at AfterEndDocumentCheckLabelsRerun\@firstofone
+%              \bidi at afterenddocumentchecklabelsrerunhook}%
+%  }%
+%}
 %    \end{macrocode}
 %    
 %
@@ -559,9 +560,33 @@
    }
 %    \end{macrocode}
 %
+% \subsection{The \pkg{german} class first aid}
 %
+%    Handling of \cs{protected} UTF-8
+%    \begin{macrocode}
+\AddToHook{file/german.sty/after}[firstaid]{%
+  \FirstAidNeededT{german}{sty}{1998/07/08 v2.5e Support for writing german texts (br)}
+                  {%
+\let\grmn at active@dq@\@active at dq
+\def\@active at dq{\protect\grmn at active@dq@}%
+\germanTeX
+}%
+}
+%    \end{macrocode}
 %
+%    \begin{macrocode}
+\AddToHook{file/ngerman.sty/after}[firstaid]{%
+  \FirstAidNeededT{ngerman}{sty}{1998/07/08 v2.5e Support for writing german texts (br)}
+                  {%
+\let\grmn at active@dq@\@active at dq
+\def\@active at dq{\protect\grmn at active@dq@}%
+\ngermanTeX
+}%
+}
+%    \end{macrocode}
 %
+%
+%
 % \subsection[Temporary fixes for the kernel (until the next
 %             patch-level release)]
 %    {Temporary fixes for the kernel \\

Modified: trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -27,7 +27,7 @@
 %<driver> \ProvidesFile{graphics.drv}
 % \fi
 %         \ProvidesFile{graphics.dtx}
-          [2021/03/04 v1.4d  Standard LaTeX Graphics (DPC,SPQR)]
+          [2022/03/10 v1.4e  Standard LaTeX Graphics (DPC,SPQR)]
 %
 % \iffalse
 %<*driver>
@@ -1053,33 +1053,39 @@
 %    \edef{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\set at curr@file}
+% \begin{macro}{\Gin at set@curr at file}
 % \begin{macro}{\quote at name}
 % \changes{v1.3c}{2019/10/08}
 %     {Definitions added for old formats}
+% \changes{v1.4e}{2022/03/10}
+%     {Use \cs{Gin at set@curr at file}, and define it appropriately}
+%   We have to cope with older formats (rollback as far as 2019-10-01)
+%   and Plain.  Define a minimal \cs{Gin at set@curr at file} first:
 %    \begin{macrocode}
-\def\Gin at temp#1{%
+\def\Gin at set@curr at file#1{%
   \begingroup
     \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
-  \endgroup
-}
-\ifx\set at curr@file\@Gin at temp
-  \let\set at curr@file\@undefined
-\fi
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
+  \endgroup}
 %    \end{macrocode}
-%
+%   Then, if \cs{set at curr@file at nosearch} is undefined, we're before
+%   2022-06-01, and if \cs{set at curr@file} is undefined, we're before
+%   2019-10-01 (aka Plain, as far as these tests are concerned).  Make
+%   \cs{Gin at set@curr at file} be a copy of the most recent macro:
+%   \cs{set at curr@file at nosearch} if it exists, and \cs{set at curr@file}
+%   otherwise.  If neither exist, we also need to define
+%   \cs{quote at name} et~al.
 %    \begin{macrocode}
-\ifx\set at curr@file\@undefined
-\def\set at curr@file#1{%
-  \begingroup
-    \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
-  \endgroup
-}
-\def\quote at name#1{"\quote@@name#1\@gobble""}
-\def\quote@@name#1"{#1\quote@@name}
-\def\unquote at name#1{\quote@@name#1\@gobble"}
+\ifx\set at curr@file at nosearch\@undefined
+  \ifx\set at curr@file\@undefined
+    \def\quote at name#1{"\quote@@name#1\@gobble""}
+    \def\quote@@name#1"{#1\quote@@name}
+    \def\unquote at name#1{\quote@@name#1\@gobble"}
+  \else
+    \let\Gin at set@curr at file\set at curr@file
+  \fi
+\else
+  \let\Gin at set@curr at file\set at curr@file at nosearch
 \fi
 %    \end{macrocode}
 % \end{macro}
@@ -1114,8 +1120,11 @@
 %
 % \changes{v1.3d}{2019/11/01}
 %     {\cs{curr at name} now unquoted}
+% \changes{v1.4e}{2022/03/10}
+%     {Use \cs{set at curr@file at nosearch} to avoid premature inclusion of
+%      path from \cs{graphicspath}}
 %    \begin{macrocode}
-  \set at curr@file{#1}%
+  \Gin at set@curr at file{#1}%
   \expandafter\filename at parse\expandafter{\@curr at file}%
 %    \end{macrocode}
 % If extension is |.gz| tack on to previous extension, eg |.eps.gz| if available.

Modified: trunk/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -14,8 +14,8 @@
 %%% From File: mathcolor.dtx
 %
 %    \begin{macrocode}
-\def\mathcolorversion{v1.0a}
-\def\mathcolordate{2022/01/07}
+\def\mathcolorversion{v1.0b}
+\def\mathcolordate{2022/01/28}
 %    \end{macrocode}
 %<*driver>
 \documentclass{l3doc}
@@ -165,7 +165,17 @@
 %    \begin{macrocode}
 \DeclareDocumentCommand \mathcolor { o m m } {
 %    \end{macrocode}
-%    First action is to save the current color value on a stack
+%    The \cs{mathcolor} is only supported in math mode because in text
+%    mode it has problems scanning away a space after it, for example.
+%    We therefore raise an error if it executes
+%    anywhere else. The \LaTeXe{} error command is a
+%    bit strangely named, because in the kernel it is only used for
+%    math alphabets, but the message it gives is fine.
+% \changes{v1.0b}{2022/01/28}{Restrict command to math mode}
+%    \begin{macrocode}
+  \mode_if_math:F { \non at alpherr {\mathcolor\space} }
+%    \end{macrocode}
+%    First real action is to save the current color value on a stack
 %    (needed if the command is nested or contains some further color
 %    changes with \cs{color} inside).
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -33,7 +33,7 @@
 %<+package>\DeclareCurrentRelease{}{2020-10-01}
 %<+package>
 %<+package>\ProvidesPackage{array}
-%<+package>         [2021/10/04 v2.5f Tabular extension package (FMi)]
+%<+package>         [2022/03/10 v2.5f Tabular extension package (FMi)]
 %
 % \fi
 %
@@ -890,8 +890,8 @@
 %       c   & 0  & 0 \\
 %       l   & 0  & 1 \\
 %       r   & 0  & 2 \\
-%       p-arg    & 0  & 3 \\
-%       t-arg    & 0  & 4 \\
+%       m-arg    & 0  & 3 \\
+%       p-arg    & 0  & 4 \\
 %       b-arg    & 0  & 5 \\
 %       |   & 1  & 0 \\
 %       !-arg    & 1  & 1 \\
@@ -907,8 +907,8 @@
 %       @   & 7  & --- \\
 %       <   & 8  & --- \\
 %       >   & 9  & --- \\
-%       p   & 10 & 3 \\
-%       t   & 10 & 4 \\
+%       m   & 10 & 3 \\
+%       p   & 10 & 4 \\
 %       b   & 10 & 5
 %    \end{tabular}
 % \end{center}

Modified: trunk/Master/texmf-dist/tex/latex/l3build/regression-test.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3build/regression-test.tex	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex/l3build/regression-test.tex	2022-03-15 20:08:23 UTC (rev 62725)
@@ -246,47 +246,51 @@
     \pdfmapfile{pdftex.map}%
   \fi
 \fi
-\ifnum 0%
-  \ifx\pdfoutput\@undefined\else\ifnum\pdfoutput>0 1\fi\fi
-  \ifx\outputmode\@undefined\else\ifnum\outputmode>0 1\fi\fi
-  >0 %
-  \ifx\pdfvariable\@undefined
-    \pdfinfo{/Producer (\ifx\directlua\@undefined pdf\else Lua\fi TeX)}
-    \ifx\pdfinfoomitdate\@undefined\else
-      \pdfinfoomitdate     = 1 %
-      \pdfsuppressptexinfo = \numexpr
+\ifcsname pdfmeta_set_regression_data:\endcsname
+   \csname pdfmeta_set_regression_data:\endcsname
+\else
+  \ifnum 0%
+    \ifx\pdfoutput\@undefined\else\ifnum\pdfoutput>0 1\fi\fi
+    \ifx\outputmode\@undefined\else\ifnum\outputmode>0 1\fi\fi
+    >0 %
+    \ifx\pdfvariable\@undefined
+      \pdfinfo{/Producer (\ifx\directlua\@undefined pdf\else Lua\fi TeX)}
+      \ifx\pdfinfoomitdate\@undefined\else
+        \pdfinfoomitdate     = 1 %
+        \pdfsuppressptexinfo = \numexpr
+              0
+            + 1 % PTEX.Fullbanner
+            + 2 % PTEX.FileName
+          \relax
+        \pdftrailerid{}
+      \fi
+    \else
+      \pdfextension info{/Producer (LuaTeX)}
+      \pdfvariable suppressoptionalinfo \numexpr
             0
-          + 1 % PTEX.Fullbanner
-          + 2 % PTEX.FileName
+          +   1 % PTEX.Fullbanner
+          +   2 % PTEX.FileName
+          +  32 % CreationDate
+          +  64 % ModDate
+          + 512 % ID
         \relax
-      \pdftrailerid{}
     \fi
   \else
-    \pdfextension info{/Producer (LuaTeX)}
-    \pdfvariable suppressoptionalinfo \numexpr
-          0
-        +   1 % PTEX.Fullbanner
-        +   2 % PTEX.FileName
-        +  32 % CreationDate
-        +  64 % ModDate
-        + 512 % ID
-      \relax
+    \ifx\XeTeXversion\@undefined
+      \special{! <</DocumentUUID (DocumentUUID)>> setpagedevice}
+      \special{! <</InstanceUUID (InstanceUUID)>> setpagedevice}
+    \else
+      \special{%
+        pdf: docinfo
+          <<
+            /Creator        (TeX)
+            /CreationDate   ()
+            /ModDate        ()
+            /Producer       (xdvipdfmx)
+          >>
+      }
+    \fi
   \fi
-\else
-  \ifx\XeTeXversion\@undefined
-    \special{! <</DocumentUUID (DocumentUUID)>> setpagedevice}
-    \special{! <</InstanceUUID (InstanceUUID)>> setpagedevice}
-  \else
-    \special{%
-      pdf: docinfo
-        <<
-          /Creator        (TeX)
-          /CreationDate   ()
-          /ModDate        ()
-          /Producer       (xdvipdfmx)
-        >>
-    }
-  \fi
 \fi
 \reset at catcodes
 %% 

Modified: trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -27,7 +27,7 @@
 \providecommand\DeclareCurrentRelease[2]{}
 \DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty}
 \DeclareCurrentRelease{}{2019-04-01}
-\ProvidesPackage{amsmath}[2021/10/15 v2.17l AMS math features]
+\ProvidesPackage{amsmath}[2022/02/03 v2.17m AMS math features]
 \edef\@temp{\catcode 96=\number\catcode 96 }
 \catcode\string `\`=12
 \def\do#1{\catcode\number`#1=\number\catcode`#1}
@@ -2695,13 +2695,13 @@
     \endgroup
 }
 \iftagsleft@
-    \def\shoveright#1{%
+    \protected\def\shoveright#1{%
         #1%
         \hfilneg
         \hskip\multlinegap
     }
 \else
-    \def\shoveright#1{%
+    \protected\def\shoveright#1{%
         #1%
         \hfilneg
         \iftag@
@@ -2716,12 +2716,11 @@
         \fi
     }
 \fi
-
 \if at fleqn
     \def\shoveleft#1{#1}%
 \else
     \iftagsleft@
-        \def\shoveleft#1{%
+        \protected\def\shoveleft#1{%
             \setboxz at h{$\m at th\displaystyle{}#1$}%
             \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
             \hfilneg
@@ -2736,17 +2735,17 @@
                 \hskip\multlinegap
             \fi
             \hskip.5\wd\@ne
-            \hskip-.5\wdz@
+            \hskip-.5\wdz@ \relax
             #1%
         }
     \else
-        \def\shoveleft#1{%
+        \protected\def\shoveleft#1{%
             \setboxz at h{$\m at th\displaystyle{}#1$}%
             \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
             \hfilneg
             \hskip\multlinegap
             \hskip.5\wd\@ne
-            \hskip-.5\wdz@
+            \hskip-.5\wdz@ \relax
             #1%
         }
     \fi

Modified: trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -23,7 +23,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
 [1994/12/01]% LaTeX date must December 1994 or later
-\ProvidesPackage{amsopn}[2021/08/26 v2.02 operator names]
+\ProvidesPackage{amsopn}[2022/01/20 v2.03 operator names]
 \def\nolimits@{\@ifnextchar\limits{\nolimits\@gobble}{\nolimits}}
 \begingroup \catcode`\"=12
 \ifx\Umathcode\@undefined
@@ -87,7 +87,6 @@
 \def\sup{\qopname\relax m{sup}}
 \def\tan{\qopname\relax o{tan}}
 \def\tanh{\qopname\relax o{tanh}}
-\def\operator at font{\mathgroup\symoperators}
 \def\operatorfont{\operator at font}
 \def\operatornamewithlimits{\operatorname*}
 \def\varlim@#1#2{%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,8 +42,8 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 %%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0l}
-\providecommand\ltfilehookdate{2021/08/27}
+\providecommand\ltfilehookversion{v1.0m}
+\providecommand\ltfilehookdate{2022/03/10}
 \ProvidesPackage{atveryend-ltx}
    [2020/08/19 v1.0a
      Emulation of the original atveryend package^^Jwith kernel methods]

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -705,7 +705,7 @@
 \def\fmtname{LaTeX2e}
 \edef\fmtversion
    {2022-06-01}
-\def\patch at level{-2}
+\def\patch at level{-3}
 \edef\development at branch@name{develop \the\year-\the\month-\the\day}
 \iffalse
 \def\reserved at a#1/#2/#3\@nil{%
@@ -853,7 +853,7 @@
   \GenericInfo{}{BEGIN module: \new at modulename\space (\new at moduledate)}%
   \GenericInfo{}{ \@spaces\@spaces\@spaces\space#3\@gobble}%
   \ifnum\sourceLaTeXdate<%
-      \expandafter\@parse at version\new at moduledate//00\@nil\relax
+        \expandafter\@parse at version\new at moduledate//00\@nil\relax
     \ifnum\expandafter\@parse at version\fmtversion//00\@nil<%
           \expandafter\@parse at version\new at moduledate//00\@nil\relax
       \GenericInfo{}{Skipping module \new at modulename}%
@@ -868,7 +868,19 @@
     \@skipping at moduletrue
     \expandafter\new at module@skip
   \fi}
-\long\def\new at module@skip#1\IncludeInRelease{\IncludeInRelease}
+\long\def\new at module@skip#1\IncludeInRelease{%
+  \long\def\reserved at a##1\EndModuleRelease{}%
+  \if\relax\detokenize\expandafter{\reserved at a#1{}{}\EndModuleRelease}\relax
+  \else
+    \@latex at error{Missing mandatory \string\IncludeInRelease{0000/00/00}}\@ehc
+    \expandafter\@secondoftwo
+  \fi
+  \@gobble
+    {\@expandtwoargs\IncludeInRelease
+         {0000/00/00}{\new at modulename}%
+         {ERROR! Emergency recovery}%
+     #1}%
+  \IncludeInRelease}
 \def\EndModuleRelease{%
   \ifx\new at modulename\@empty
     \@latex at error{Extra \string\EndModuleRelease.}\@eha
@@ -1151,7 +1163,6 @@
 \cs_new_eq:NN \dimeval  \dim_eval:n
 \cs_new_eq:NN \skipeval \skip_eval:n
 \ExplSyntaxOff
-
 \ExplSyntaxOn
 \cs_new_eq:NN \UseName \use:c
 \cs_new:Npn \ExpandArgs #1
@@ -1162,7 +1173,6 @@
 \msg_new:nnn { kernel } { unknown-arg-expansion }
   { Unknown~arg~expansion~"#1" }
 \ExplSyntaxOff
-
 %%% From File: ltdefns.dtx
 \def\two at digits#1{\ifnum#1<10 0\fi\number#1}
 \protected\long\def\typeout#1{\begingroup
@@ -1720,8 +1730,8 @@
     \xdef#1{\the\toks@}%
   \endgroup}
 %%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.0j}
-\def\ltcmddate{2021-12-31}
+\def\ltcmdversion{v1.0k}
+\def\ltcmddate{2022-02-28}
 \message{document commands,}
 \ExplSyntaxOn
 \tl_new:N \l__cmd_arg_spec_tl
@@ -4323,6 +4333,9 @@
 \cs_new:Npn \IfValueF { \tl_if_novalue:nT }
 \cs_new:Npn \IfValueT { \tl_if_novalue:nF }
 \cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} }
+\cs_new_eq:NN \IfBlankF  \tl_if_blank:nF
+\cs_new_eq:NN \IfBlankT  \tl_if_blank:nT
+\cs_new_eq:NN \IfBlankTF \tl_if_blank:nTF
 \tl_new:N \ProcessedArgument
 \cs_new_eq:NN \ReverseBoolean \__cmd_bool_reverse:N
 \cs_new_eq:NN \SplitArgument  \__cmd_split_argument:nnn
@@ -13366,7 +13379,12 @@
 \def\bibcite{\@newl at bel b}
 \let\citation\@gobble
 \DeclareRobustCommand\cite{%
-  \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+  \@ifnextchar [{\@tempswatrue\@citex at checkblank}{\@tempswafalse\@citex at checkblank[]}}
+\def\@citex at checkblank[#1]#2{%
+   \IfBlankTF {#2}%
+     {\@citex[#1]{\space}}%
+     {\@citex[#1]{#2}}%
+}
 \def\@citex[#1]#2{\leavevmode
   \let\@citea\@empty
   \@cite{\@for\@citeb:=#2\do
@@ -14363,7 +14381,7 @@
       \__keys_tmp:nn
     }
   \__keys_tmp:nn
-    { code }            { code }
+    { code:n }          { code }
     { legacy_if_set:n } { if }
     { tl_set:N }        { store }
     { usage:n }         { usage }
@@ -14374,15 +14392,17 @@
 \clist_new:N \l__keys_options_clist
 \bool_new:N \l__keys_options_loading_bool
 \cs_new_protected:Npn \__keys_options:Nn #1#2
+  { \__keys_options_expand_module:Nn \__keys_options:nN {#2} #1 }
+\cs_new_protected:Npn \__keys_options:nN #1#2
   {
-    \cs_gset_nopar:cpn { opt at fam@\@currname.\@currext } {#2}
+    \cs_gset_nopar:cpn { opt at fam@\@currname.\@currext } {#1}
     \cs_set_protected:Npn \__keys_option_end: { }
     \clist_clear:N \l__keys_options_clist
-    \__keys_options_global:Nn #1 {#2}
+    \__keys_options_global:Nn #2 {#1}
     \__keys_options_local:
-    \keys_if_exist:nnF {#2} { unknown }
+    \keys_if_exist:nnF {#1} { unknown }
       {
-        \keys_define:nn {#2}
+        \keys_define:nn {#1}
           {
             unknown .code:n =
               {
@@ -14391,16 +14411,15 @@
               }
           }
         \cs_set_protected:Npn \__keys_option_end:
-          { \keys_define:nn {#2} { unknown .undefine: } }
+          { \keys_define:nn {#1} { unknown .undefine: } }
       }
     \bool_set_true:N \l__keys_options_loading_bool
-    \keys_set:nV {#2} \l__keys_options_clist
+    \keys_set:nV {#1} \l__keys_options_clist
     \bool_set_false:N \l__keys_options_loading_bool
     \AtEndOfPackage { \cs_set_eq:NN \@unprocessedoptions \scan_stop: }
     \__keys_option_end:
-    \__keys_options_loaded:n {#2}
+    \__keys_options_loaded:n {#1}
   }
-\cs_generate_variant:Nn \__keys_options:Nn { NV }
 \msg_new:nnnn { keys } { option-unknown }
   { Unknown~option~'#1'~for~package~#2. }
   {
@@ -14464,25 +14483,30 @@
 \cs_new:Npn \__keys_remove_equals:n #1
   { \__keys_remove_equals:w #1 = \s__keys_stop }
 \cs_new:Npn \__keys_remove_equals:w #1 = #2 \s__keys_stop { \exp_not:n {#1} }
-\NewDocumentCommand \DeclareKeys { o +m }
+\cs_generate_variant:Nn \keys_define:nn { nx }
+\cs_new_protected:Npn \__keys_options_expand_module:Nn #1#2
   {
-    \IfNoValueTF {#1}
-      { \exp_args:NV \keys_define:nn \@currname }
-      { \keys_define:nn {#1} }
-        {#2}
+    \cs:w __keys_options_expand_module:nN \use:e { \cs_end: {#2} } #1
   }
-\NewDocumentCommand \ProcessKeyOptions { o }
+\cs_new_protected:Npn \__keys_options_expand_module:nN #1#2
+  { #2 {#1} }
+\NewDocumentCommand \DeclareKeys { O { \@currname } +m }
+  { \__keys_options_expand_module:Nn \keys_define:nn {#1} {#2} }
+\NewDocumentCommand \DeclareUnknownKeyHandler { O { \@currname } +m }
   {
-    \IfNoValueTF {#1}
-      { \__keys_options:NV \c_true_bool \@currname }
-      { \__keys_options:Nn \c_true_bool {#1} }
+    \cs_set_protected:cpn { __keys_unknown_handler_ #1 :nn } ##1##2 {#2}
+    \__keys_options_expand_module:Nn \keys_define:nx {#1}
+      {
+        unknown .code:n =
+          \exp_not:N \exp_args:NV
+            \exp_not:c { __keys_unknown_handler_ #1 :nn }
+            \exp_not:N \l_keys_key_str {####1}
+      }
   }
-\NewDocumentCommand \ProcessKeyPackageOptions { o }
-  {
-    \IfNoValueTF {#1}
-      { \__keys_options:NV \c_false_bool \@currname }
-      { \__keys_options:Nn \c_false_bool {#1} }
-  }
+\NewDocumentCommand \ProcessKeyOptions { O { \@currname } }
+  { \__keys_options:Nn \c_true_bool {#1} }
+\NewDocumentCommand \ProcessKeyPackageOptions { O { \@currname } }
+  { \__keys_options:Nn \c_false_bool {#1} }
 \@onlypreamble \ProcessKeyOptions
 \@onlypreamble \ProcessKeyPackageOptions
 \cs_new_protected:Npn \__keys_options_loaded:n #1
@@ -14536,17 +14560,12 @@
     LaTeX~was~asked~to~set~a~key~called~"#1",~but~this~is~only~allowed~
     before~\begin{document}.~You~will~need~to~set~the~key~earlier.
   }
-\NewDocumentCommand \SetKeys { o +m }
-  {
-    \IfNoValueTF {#1}
-      { \keys_set:Vn \@currname }
-      { \keys_set:nn {#1} }
-        {#2}
-  }
+\NewDocumentCommand \SetKeys { O { \@currname } +m }
+  { \__keys_options_expand_module:Nn \keys_set:nn {#1} {#2} }
 \ExplSyntaxOff
 %%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0l}
-\providecommand\ltfilehookdate{2021/08/27}
+\providecommand\ltfilehookversion{v1.0m}
+\providecommand\ltfilehookdate{2022/03/10}
 \ExplSyntaxOn
 \tl_new:N \CurrentFile
 \tl_new:N \CurrentFilePath
@@ -14685,8 +14704,16 @@
 \cs_new_eq:NN \undeclare at file@substitution \__filehook_subst_remove:n
 \ExplSyntaxOff
 \ExplSyntaxOff
-\def\set at curr@file#1{%
+\def\set at curr@file{%
   \begingroup
+    \set at curr@file at aux}
+\edef\set at curr@file at nosearch{%
+  \begingroup
+    \let\noexpand\input at path\noexpand\@empty
+    \csname seq_clear:N\endcsname
+      \expandafter\noexpand\csname l_file_search_path_seq\endcsname
+    \noexpand\set at curr@file at aux}
+\def\set at curr@file at aux#1{%
     \escapechar\m at ne
     \let\protect\string
     \edef~{\string~}%
@@ -16650,23 +16677,23 @@
 \uccode`\^^9e=`\^^d0 % d-bar
 \lccode`\^^[=`\^^[   % oe in OT1
 \fi % End of reset block for 8-bit engines
+\ExplSyntaxOn
+\protected\def\@expl at text@lowercase@@n{\text_lowercase:n}
+\protected\def\@expl at text@uppercase@@n{\text_uppercase:n}
+\ExplSyntaxOff
+
+%%    \begin{macrocode}
 \DeclareRobustCommand{\MakeUppercase}[1]{{%
       \def\i{I}\def\j{J}%
       \def\reserved at a##1##2{\let##1##2\reserved at a}%
       \expandafter\reserved at a\@uclclist\reserved at b{\reserved at b\@gobble}%
-      \let\UTF at two@octets at noexpand\@empty
-      \let\UTF at three@octets at noexpand\@empty
-      \let\UTF at four@octets at noexpand\@empty
-      \protected at edef\reserved at a{\uppercase{#1}}%
+      \protected at edef\reserved at a{\@expl at text@uppercase@@n{#1}}%
       \reserved at a
    }}
 \DeclareRobustCommand{\MakeLowercase}[1]{{%
       \def\reserved at a##1##2{\let##2##1\reserved at a}%
       \expandafter\reserved at a\@uclclist\reserved at b{\reserved at b\@gobble}%
-      \let\UTF at two@octets at noexpand\@empty
-      \let\UTF at three@octets at noexpand\@empty
-      \let\UTF at four@octets at noexpand\@empty
-      \protected at edef\reserved at a{\lowercase{#1}}%
+      \protected at edef\reserved at a{\@expl at text@lowercase@@n{#1}}%
       \reserved at a
    }}
 \def\@uclclist{\oe\OE\o\O\ae\AE

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -382,7 +382,7 @@
   \GenericInfo{}{BEGIN module: \new at modulename\space (\new at moduledate)}%
   \GenericInfo{}{ \@spaces\@spaces\@spaces\space#3\@gobble}%
   \ifnum\sourceLaTeXdate<%
-      \expandafter\@parse at version\new at moduledate//00\@nil\relax
+        \expandafter\@parse at version\new at moduledate//00\@nil\relax
     \ifnum\expandafter\@parse at version\fmtversion//00\@nil<%
           \expandafter\@parse at version\new at moduledate//00\@nil\relax
       \GenericInfo{}{Skipping module \new at modulename}%
@@ -397,7 +397,19 @@
     \@skipping at moduletrue
     \expandafter\new at module@skip
   \fi}
-\long\def\new at module@skip#1\IncludeInRelease{\IncludeInRelease}
+\long\def\new at module@skip#1\IncludeInRelease{%
+  \long\def\reserved at a##1\EndModuleRelease{}%
+  \if\relax\detokenize\expandafter{\reserved at a#1{}{}\EndModuleRelease}\relax
+  \else
+    \@latex at error{Missing mandatory \string\IncludeInRelease{0000/00/00}}\@ehc
+    \expandafter\@secondoftwo
+  \fi
+  \@gobble
+    {\@expandtwoargs\IncludeInRelease
+         {0000/00/00}{\new at modulename}%
+         {ERROR! Emergency recovery}%
+     #1}%
+  \IncludeInRelease}
 \def\EndModuleRelease{%
   \ifx\new at modulename\@empty
     \@latex at error{Extra \string\EndModuleRelease.}\@eha
@@ -408,7 +420,7 @@
     \@skipping at modulefalse
   \fi}
 \ProvidesPackage{latexrelease}
-          [2021/04/29 v1.0n LaTeX release emulation and tests
+          [2022/02/28 v1.0o LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 \NeedsTeXFormat{LaTeX2e}[1996/06/01]
 \@ifundefined{sourceLaTeXdate}{%
@@ -472,7 +484,7 @@
   \catcode58=11 % :
   \catcode126=10 % ~
   \catcode32=09 % <space>
-  \xdef\latexrelease at postexpl{\unexpanded{%
+  \xdef\latexrelease at postltexpl{\unexpanded{%
 \cs_gset_protected:Npn \__latexrelease_declare_command:w
   { \@star at or@long \__latexrelease_declare_command:Nw }
 \cs_gset_protected:Npn \__latexrelease_declare_command:Nw #1
@@ -512,26 +524,32 @@
       { \cs_set_eq:NN #3 \tex_undefined:D            \use:n      }
   }
 \tl_clear_new:N \l__latexrelease_restores_tl
-\cs_gset:Npn \__latexrelease_tmp:w #1 #2
+\cs_gset:Npn \__latexrelease_redefines:w #1 #2
   {
-    \quark_if_recursion_tail_stop_do:Nn #1
-      { \cs_undefine:N \__latexrelease_tmp:w }
+    \quark_if_recursion_tail_stop:N #1
     \tl_put_right:Nn \l__latexrelease_restores_tl {#1}
     \cs_set_eq:cN { __latexrelease_ \cs_to_str:N #1 } #1
     \cs_set_eq:NN #1 #2
-    \__latexrelease_tmp:w
+    \__latexrelease_redefines:w
   }
-\__latexrelease_tmp:w
+\__latexrelease_redefines:w
   \__kernel_chk_if_free_cs:N \use_none:n
   \e at alloc \__latexrelease_e at alloc:NnnnnN
   \__kernel_msg_error:nnx \use_none:nnn
   \msg_new:nnnn \msg_gset:nnnn
-  \NewDocumentCommand \DeclareDocumentCommand
+  % \NewDocumentCommand \DeclareDocumentCommand % after ltcmd.dtx
   \newcommand \__latexrelease_declare_command:w
   \__kernel_msg_error:nnn  \use_none:nnn  % needed while redirect for kernel msgs doesn't work
   \q_recursion_tail \q_recursion_tail
   \q_recursion_stop
 \msg_redirect_name:nnn { hooks } { exists } { none }
+\cs_gset_protected:Npn \latexrelease at postltcmd
+  {
+    \__latexrelease_redefines:w
+      \NewDocumentCommand \DeclareDocumentCommand
+      \q_recursion_tail \q_recursion_tail
+      \q_recursion_stop
+  }
   }}%
 \endgroup
 %%% From File: ltdirchk.dtx
@@ -1333,6 +1351,7 @@
   }%
 \input{expl3.ltx}
 \EndIncludeInRelease
+\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postltexpl}
 \IncludeInRelease{2020/10/01}{\@expl at cs@to at str@@N}%
         {expl3 macros added for the 2020-10-01 release}%
 \ExplSyntaxOn
@@ -1366,7 +1385,6 @@
 \IncludeInRelease{0000/00/00}%
                  {\fpeval}{fp and int calculations}%
 
-
 \let\fpeval\@undefined
 \let\inteval\@undefined
 \let\dimeval\@undefined
@@ -1388,7 +1406,6 @@
 \IncludeInRelease{0000/00/00}%
                  {\ExpandArgs}{Some pre-expansion commands}%
 
-
 \let\UseName\@undefined
 \let\ExpandArgs\@undefined
 \EndIncludeInRelease
@@ -1872,8 +1889,8 @@
 
 \EndIncludeInRelease
 %%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.0j}
-\def\ltcmddate{2021-12-31}
+\def\ltcmdversion{v1.0k}
+\def\ltcmddate{2022-02-28}
 \edef\@latexrelease at catcode@null{\the\catcode`\^^@ }
 \catcode`\^^@=12
 \ExplSyntaxOn
@@ -4492,6 +4509,19 @@
 \cs_new:Npn \IfValueF { \tl_if_novalue:nT }
 \cs_new:Npn \IfValueT { \tl_if_novalue:nF }
 \cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} }
+\IncludeInRelease{2022/06/01}%
+                 {\IfBlankTF}{Testing~for~empty~or~blank}%
+\cs_new_eq:NN \IfBlankF  \tl_if_blank:nF
+\cs_new_eq:NN \IfBlankT  \tl_if_blank:nT
+\cs_new_eq:NN \IfBlankTF \tl_if_blank:nTF
+\EndIncludeInRelease
+\IncludeInRelease{2021/11/15}%
+                 {\IfBlankTF}{Testing~for~empty~or~blank}%
+\cs_undefine:N \IfBlankF
+\cs_undefine:N \IfBlankT
+\cs_undefine:N \IfBlankTF
+
+\EndIncludeInRelease
 \tl_new:N \ProcessedArgument
 \cs_new_eq:NN \ReverseBoolean \__cmd_bool_reverse:N
 \cs_new_eq:NN \SplitArgument  \__cmd_split_argument:nnn
@@ -4518,7 +4548,7 @@
 
 \EndModuleRelease
 \ExplSyntaxOff
-\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postexpl}
+\@ifundefined{ExplSyntaxOff}{}{\latexrelease at postltcmd}
 \catcode`\^^@=\@latexrelease at catcode@null\relax
 
 %%% From File: lthooks.dtx
@@ -12805,6 +12835,24 @@
 \EndIncludeInRelease
 %%% From File: ltidxglo.dtx
 %%% From File: ltbibl.dtx
+\IncludeInRelease{2022/06/01}%
+                 {\cite}{check for blank}%
+\DeclareRobustCommand\cite{%
+  \@ifnextchar [{\@tempswatrue\@citex at checkblank}{\@tempswafalse\@citex at checkblank[]}}
+\def\@citex at checkblank[#1]#2{%
+   \IfBlankTF {#2}%
+     {\@citex[#1]{\space}}%
+     {\@citex[#1]{#2}}%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\cite}{check for blank}%
+
+\DeclareRobustCommand\cite{%
+  \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+\let\@citex at checkblank\@undefined
+
+\EndIncludeInRelease
 \IncludeInRelease{2021/06/01}%
                  {\nocite}{Allow nocite in preamble}%
 \def\nocite#1{\@bsphack
@@ -13971,8 +14019,8 @@
 \endgroup%
 \EndIncludeInRelease
 %%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0l}
-\providecommand\ltfilehookdate{2021/08/27}
+\providecommand\ltfilehookversion{v1.0m}
+\providecommand\ltfilehookdate{2022/03/10}
 \IncludeInRelease{2020/10/01}%
                  {\CurrentFile}{Hook management file}%
 \ExplSyntaxOn
@@ -14213,6 +14261,36 @@
 \let \undeclare at file@substitution \@gobble
 
 \EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+          {\set at curr@file}{Setting current file name}%
+\def\set at curr@file{%
+  \begingroup
+    \set at curr@file at aux}
+\edef\set at curr@file at nosearch{%
+  \begingroup
+    \let\noexpand\input at path\noexpand\@empty
+    \csname seq_clear:N\endcsname
+      \expandafter\noexpand\csname l_file_search_path_seq\endcsname
+    \noexpand\set at curr@file at aux}
+\def\set at curr@file at aux#1{%
+    \escapechar\m at ne
+    \let\protect\string
+    \edef~{\string~}%
+    \expandafter\def\csname\expandafter\endcsname
+      \expandafter{\csname\endcsname}%
+    \@expl@@@filehook at if@no at extension@@nTF{#1}%
+      {\@tempswatrue}{\@tempswafalse}%
+    \@kernel at make@file at csname\@curr at file
+      \@expl@@@filehook at resolve@file at subst@@w {#1}%
+    \@expl@@@filehook at if@file at replaced@@TF
+      {\@kernel at make@file at csname\@curr at file@reqd
+         \@expl@@@filehook at normalize@file at name@@w{#1}%
+       \if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file@reqd \fi}%
+      {\if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file \fi
+       \global\let\@curr at file@reqd\@curr at file}%
+    \@expl@@@filehook at clear@replacement at flag@@
+  \endgroup}
+\EndIncludeInRelease
 \IncludeInRelease{2021/06/01}%
           {\set at curr@file}{Setting current file name}%
 \def\set at curr@file#1{%
@@ -14234,6 +14312,7 @@
        \global\let\@curr at file@reqd\@curr at file}%
     \@expl@@@filehook at clear@replacement at flag@@
   \endgroup}
+\let\set at curr@file at nosearch\@undefined
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
           {\set at curr@file}{Setting current file name}%
@@ -14254,6 +14333,7 @@
        \global\let\@curr at file@reqd\@curr at file}%
     \@expl@@@filehook at clear@replacement at flag@@
   \endgroup}
+\let\set at curr@file at nosearch\@undefined
 \EndIncludeInRelease
 \IncludeInRelease{2019/10/01}%
           {\set at curr@file}{Setting current file name}%
@@ -14267,10 +14347,12 @@
         \csname\@firstofone#1\@empty\endcsname}}%
   \endgroup
 }
+\let\set at curr@file at nosearch\@undefined
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}%
           {\set at curr@file}{Setting current file name}%
 \let\set at curr@file\@undefined
+\let\set at curr@file at nosearch\@undefined
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
           {\@kernel at make@file at csname}{Make file csname}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{lcyenc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}
 \DeclareUnicodeCharacter{00BB}{\guillemotright}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{ly1enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A2}{\textcent}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{omsenc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00B6}{\textparagraph}
 \DeclareUnicodeCharacter{00B7}{\textperiodcentered}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{ot1enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A3}{\textsterling}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{ot2enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}
 \DeclareUnicodeCharacter{00BB}{\guillemotright}
 \DeclareUnicodeCharacter{0131}{\i}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,8 +42,8 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 %%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0l}
-\providecommand\ltfilehookdate{2021/08/27}
+\providecommand\ltfilehookversion{v1.0m}
+\providecommand\ltfilehookdate{2022/03/10}
 \ProvidesExplPackage
     {structuredlog}{\ltfilehookdate}{\ltfilehookversion}
     {Structuring the TeX transcript file}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
   \ProvidesFile{t1enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A3}{\textsterling}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{t2aenc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{t2benc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{t2cenc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{ts1enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A2}{\textcent}
 \DeclareUnicodeCharacter{00A3}{\textsterling}
 \DeclareUnicodeCharacter{00A4}{\textcurrency}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/utf8.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/utf8.def	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/utf8.def	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{utf8.def}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \ifx\ifincsname\@undefined  % old e-pTeX or e-upTeX engines
   \input utf8-2018.def
   \expandafter\@firstofone
@@ -83,13 +83,13 @@
   \fi
   \UTFviii at four@octets at combine
 }
-\long\def\UTF at two@octets at noexpand#1#2{\noexpand#2\noexpand}
-\long\def\UTF at three@octets at noexpand#1#2#3{\noexpand#2\noexpand#3\noexpand}
-\long\def\UTF at four@octets at noexpand#1#2#3#4{\noexpand#2\noexpand#3\noexpand#4\noexpand}
+\long\def\UTF at two@octets at noexpand#1#2#3{\unexpanded{#2#3}}
+\long\def\UTF at three@octets at noexpand#1#2#3#4{\unexpanded{#2#3#4}}
+\long\def\UTF at four@octets at noexpand#1#2#3#4#5{\unexpanded{#2#3#4#5}}
 
-\long\def\UTF at two@octets at string#1#2{\string#2\string}
-\long\def\UTF at three@octets at string#1#2#3{\string#2\string#3\string}
-\long\def\UTF at four@octets at string#1#2#3#4{\string#2\string#3\string#4\string}
+\long\def\UTF at two@octets at string#1#2#3{\detokenize{#2#3}}
+\long\def\UTF at three@octets at string#1#2#3#4{\detokenize{#2#3#4}}
+\long\def\UTF at four@octets at string#1#2#3#4#5{\detokenize{#2#3#4#5}}
 
 \long\def\UTFviii at two@octets at combine#1#2{\expandafter
     \UTFviii at defined\csname u8:\string#1\string#2\endcsname}
@@ -145,7 +145,13 @@
   \expandafter\UTFviii at check@continue
   \fi
 }
-\begingroup
+\edef\reserved at a{%
+\catcode`\noexpand\~=\the\catcode`\~\relax
+\catcode`\noexpand\"=\the\catcode`\"\relax
+\uccode`\noexpand\~=\the\uccode`\~\relax
+\count@=\the\count@\relax
+\@tempcnta=\the\@tempcnta\relax
+\let\noexpand\reserved at a\relax}
 \catcode`\~13
 \catcode`\"12
 \def\UTFviii at loop{%
@@ -155,7 +161,7 @@
   \ifnum\count@<\@tempcnta
   \expandafter\UTFviii at loop
   \fi}
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at undefined@err{:\string~}}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at undefined@err{:\string~}}}
     \count@"1
     \@tempcnta9
 \UTFviii at loop
@@ -167,25 +173,25 @@
 \UTFviii at loop
     \count@"80
     \@tempcnta"C2
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at invalid@err\string~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at invalid@err\string~}}
 \UTFviii at loop
     \count@"C2
     \@tempcnta"E0
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at two@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at two@octets\noexpand~}}
 \UTFviii at loop
     \count@"E0
     \@tempcnta"F0
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at three@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at three@octets\noexpand~}}
 \UTFviii at loop
     \count@"F0
     \@tempcnta"F5
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at four@octets\noexpand~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at four@octets\noexpand~}}
 \UTFviii at loop
     \count@"F5
     \@tempcnta"100
-    \def\UTFviii at tmp{\xdef~{\noexpand\UTFviii at invalid@err\string~}}
+    \def\UTFviii at tmp{\protected\edef~{\noexpand\UTFviii at invalid@err\string~}}
 \UTFviii at loop
-\endgroup
+\reserved at a
 \@inpenc at test
 \ifx\@begindocumenthook\@undefined
   \makeatother

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
  \ProvidesFile{utf8enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A2}{\textcent}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu	2022-03-15 20:08:23 UTC (rev 62725)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
   \ProvidesFile{x2enc.dfu}
-   [2021/12/13 v1.2o UTF-8 support]
+   [2022/02/13 v1.3a UTF-8 support]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: trunk/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -30,7 +30,7 @@
 %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle'
 %% without such generated files.
 %% 
-%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2021
+%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2022
 %%
 %% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.

Modified: trunk/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -30,7 +30,7 @@
 %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle'
 %% without such generated files.
 %% 
-%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2021
+%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2022
 %%
 %% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.

Modified: trunk/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -30,12 +30,12 @@
 %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle'
 %% without such generated files.
 %% 
-%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2021
+%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2022
 %%
 %% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
-\def\LaTeXFirstAidDate{2021/11/11}
-\def\LaTeXFirstAidVersion{v1.0q}
+\def\LaTeXFirstAidDate{2022/02/20}
+\def\LaTeXFirstAidVersion{v1.0r}
 \ProvidesFile{latex2e-first-aid-for-external-files.ltx}
              [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
                LaTeX kernel fixes to external files and packages]
@@ -52,20 +52,6 @@
   \exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3}
 }
 \ExplSyntaxOff
-\AddToHook{file/biditools.sty/after}[firstaid]{%
-  \FirstAidNeededT{biditools}{sty}%
-                  {2020/05/13 v2 Programming tools for bidi package}%
-  {%
-  \def\firstaid at bidi@document at patch
-          \endgroup#1\begingroup#2\firstaid at bidi@document at patch
-          {\unexpanded{#1#2}}%
-  \edef\document{\expandafter\firstaid at bidi@document at patch\document
-            \firstaid at bidi@document at patch}%
-  \AddToHook{enddocument/info}%
-            {\let\bidi at AfterEndDocumentCheckLabelsRerun\@firstofone
-              \bidi at afterenddocumentchecklabelsrerunhook}%
-  }%
-}
 \AddToHook{file/dinbrief.cls/after}[firstaid]{%
   \FirstAidNeededT{dinbrief}{cls}{2000/03/02 LaTeX2e class}%
                   {\AddToHook{env/document/begin}{\begingroup}}%
@@ -129,6 +115,22 @@
   \@vwid at sift}%
      }%
    }
+\AddToHook{file/german.sty/after}[firstaid]{%
+  \FirstAidNeededT{german}{sty}{1998/07/08 v2.5e Support for writing german texts (br)}
+                  {%
+\let\grmn at active@dq@\@active at dq
+\def\@active at dq{\protect\grmn at active@dq@}%
+\germanTeX
+}%
+}
+\AddToHook{file/ngerman.sty/after}[firstaid]{%
+  \FirstAidNeededT{ngerman}{sty}{1998/07/08 v2.5e Support for writing german texts (br)}
+                  {%
+\let\grmn at active@dq@\@active at dq
+\def\@active at dq{\protect\grmn at active@dq@}%
+\ngermanTeX
+}%
+}
 \ExplSyntaxOn
 \sys_if_engine_luatex:T
   {

Modified: trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -31,7 +31,7 @@
 \DeclareCurrentRelease{}{2019-10-01}
 
 \ProvidesPackage{graphics}
-          [2021/03/04 v1.4d  Standard LaTeX Graphics (DPC,SPQR)]
+          [2022/03/10 v1.4e  Standard LaTeX Graphics (DPC,SPQR)]
 \edef\Gin at codes{%
  \catcode`\noexpand\^^A\the\catcode`\^^A\relax
  \catcode`\noexpand\"\the\catcode`\"\relax
@@ -171,25 +171,21 @@
 \let\Gin at ext\relax
 \def\Gin at sepdefault{.}
 \edef\Gin at gzext{\detokenize{gz}}
-\def\Gin at temp#1{%
+\def\Gin at set@curr at file#1{%
   \begingroup
     \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
-  \endgroup
-}
-\ifx\set at curr@file\@Gin at temp
-  \let\set at curr@file\@undefined
-\fi
-\ifx\set at curr@file\@undefined
-\def\set at curr@file#1{%
-  \begingroup
-    \escapechar\m at ne
     \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
-  \endgroup
-}
-\def\quote at name#1{"\quote@@name#1\@gobble""}
-\def\quote@@name#1"{#1\quote@@name}
-\def\unquote at name#1{\quote@@name#1\@gobble"}
+  \endgroup}
+\ifx\set at curr@file at nosearch\@undefined
+  \ifx\set at curr@file\@undefined
+    \def\quote at name#1{"\quote@@name#1\@gobble""}
+    \def\quote@@name#1"{#1\quote@@name}
+    \def\unquote at name#1{\quote@@name#1\@gobble"}
+  \else
+    \let\Gin at set@curr at file\set at curr@file
+  \fi
+\else
+  \let\Gin at set@curr at file\set at curr@file at nosearch
 \fi
 \def\Ginclude at graphics#1{%
   \ifx\detokenize\@undefined\else
@@ -197,7 +193,7 @@
   \fi
   \begingroup
   \let\input at path\Ginput at path
-  \set at curr@file{#1}%
+  \Gin at set@curr at file{#1}%
   \expandafter\filename at parse\expandafter{\@curr at file}%
   \ifx\filename at ext\Gin at gzext
     \expandafter\filename at parse\expandafter{\filename at base}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/graphics/mathcolor.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/graphics/mathcolor.ltx	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/graphics/mathcolor.ltx	2022-03-15 20:08:23 UTC (rev 62725)
@@ -13,8 +13,8 @@
 %% 
 %% File: mathcolor.dtx (C) Copyright 2021-2022
 %%% From File: mathcolor.dtx
-\def\mathcolorversion{v1.0a}
-\def\mathcolordate{2022/01/07}
+\def\mathcolorversion{v1.0b}
+\def\mathcolordate{2022/01/28}
 
 
 \ifcsname mathcolor\endcsname \endinput \fi
@@ -21,6 +21,7 @@
 \ExplSyntaxOn
 \seq_new:N \g__mathcolor_seq
 \DeclareDocumentCommand \mathcolor { o m m } {
+  \mode_if_math:F { \non at alpherr {\mathcolor\space} }
   \seq_gpush:No \g__mathcolor_seq \current at color
   \group_insert_after:N \use_none:n
   \IfValueTF{#1} { \color[#1]{#2} }{ \color{#2} }

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty	2022-03-15 20:01:27 UTC (rev 62724)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty	2022-03-15 20:08:23 UTC (rev 62725)
@@ -46,7 +46,7 @@
 \DeclareCurrentRelease{}{2020-10-01}
 
 \ProvidesPackage{array}
-         [2021/10/04 v2.5f Tabular extension package (FMi)]
+         [2022/03/10 v2.5f Tabular extension package (FMi)]
 %%
 
 \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}



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