texlive[72039] Master: latex-dev (15aug24)

commits+karl at tug.org commits+karl at tug.org
Thu Aug 15 22:11:35 CEST 2024


Revision: 72039
          https://tug.org/svn/texlive?view=revision&revision=72039
Author:   karl
Date:     2024-08-15 22:11:34 +0200 (Thu, 15 Aug 2024)
Log Message:
-----------
latex-dev (15aug24)

Modified Paths:
--------------
    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-historic.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
    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/ltmarks-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.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/ltnews36.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews39.tex
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltnews40.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/ltproperties-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltproperties-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/ltsockets-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/ltsockets-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/tlc3.err
    trunk/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf
    trunk/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
    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/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/latex-lab/README.md
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-marginpar.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-title.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf
    trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.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/changes.txt
    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/l3sys-query.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/manifest.txt
    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/tools-overview.tex
    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/source/latex-dev/base/alltt.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/classes.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/doc.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/letter.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltpara.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/lttab.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/lttagging.dtx
    trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
    trunk/Master/texmf-dist/source/latex-dev/graphics/color.dtx
    trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-bib.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx
    trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx
    trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx
    trunk/Master/texmf-dist/source/latex-dev/tools/longtable.dtx
    trunk/Master/texmf-dist/source/latex-dev/tools/multicol.dtx
    trunk/Master/texmf-dist/source/latex-dev/tools/theorem.dtx
    trunk/Master/texmf-dist/tex/latex-dev/base/alltt.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/article.cls
    trunk/Master/texmf-dist/tex/latex-dev/base/bk10.clo
    trunk/Master/texmf-dist/tex/latex-dev/base/bk11.clo
    trunk/Master/texmf-dist/tex/latex-dev/base/bk12.clo
    trunk/Master/texmf-dist/tex/latex-dev/base/book.cls
    trunk/Master/texmf-dist/tex/latex-dev/base/doc.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
    trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
    trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
    trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
    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/letter.cls
    trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
    trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
    trunk/Master/texmf-dist/tex/latex-dev/base/preload.cfg
    trunk/Master/texmf-dist/tex/latex-dev/base/report.cls
    trunk/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
    trunk/Master/texmf-dist/tex/latex-dev/base/size10.clo
    trunk/Master/texmf-dist/tex/latex-dev/base/size11.clo
    trunk/Master/texmf-dist/tex/latex-dev/base/size12.clo
    trunk/Master/texmf-dist/tex/latex-dev/graphics/color.sty
    trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
    trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thb.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thc.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thm.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
    trunk/Master/texmf-dist/tex/latex-dev/tools/thp.sty
    trunk/Master/tlpkg/bin/c2lx

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/README.md	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/README.md	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,7 +1,7 @@
 The LaTeX kernel
 ================
 
-Release 2024-11-01 pre-release 1
+Release 2024-11-01 pre-release 2
 
 Overview
 --------

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	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/changes.txt	2024-08-15 20:11:34 UTC (rev 72039)
@@ -6,6 +6,87 @@
 not part of the distribution.
 ================================================================================
 
+2024-08-12  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* letter.dtx (subsection{The generic letter commands}):
+	Alter sample address in documentation (gh/1439)
+
+2024-08-10 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* lttagging.dtx: reset flattened level in para/restore
+
+2024-07-27 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* lttagging.dtx: (subsection{Tagging support for table/tabular packages}):
+      Two sockets added to store and restore cell data when nesting tables to keep track
+      of multirow settings.
+
+2024-07-27 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* lttagging.dtx: (subsection{Paragraph sockets}): A socket and plug to restore paragraph
+	setting added.
+
+2024-07-13 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* lttagging.dtx: (subsection{Tagging sockets}): toc-related tagging sockets added.
+
+2024-07-13  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* lttagging.dtx (subsection{Tagging support for table/tabular packages}):
+	Sockets for \cs{cline} leaders added (tagging/134)
+
+2024-07-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltmiscen.dtx (subsection{Environments}):
+	Drop code chunks before adding them to avoid duplication in
+	rollback (gh/1407)
+
+2024-07-06  Yukai Chou  <muzimuzhi at gmail.com>
+
+	* ltcmd.dtx (subsection{User functions}):
+	Trim spaces for envname before existence check (gh/1399)
+	(subsection{Declaring commands and environments}):
+	Simplify \__cmd_declare_env:nnnn, use space-trimmed envname directly
+
+2024-06-23  Yukai Chou  <muzimuzhi at gmail.com>
+
+	* ltpara.dtx
+	Append \everypar toks to \g__parar_standard_everypar_tl, rollback
+	2023/06/01 (gh/1386)
+
+2024-06-24  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltlists.dtx:
+	Changes to \@doendpe, \@endpefalse, and \@endpetrue for
+	new @endpe handling. \if at endpe is now a global switch and
+	migration out of groups is handled via \aftergroup
+
+	* ltmiscen.dtx (subsection{Environments}):
+	Adjust \end<space> for new @endpe handling
+
+	* ltboxes.dtx (section{\LaTeX\ Box commands}):
+	Adjust \color at endgroup for new @endpe handling
+
+2024-06-19  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* fontdef.dtx:
+	preload ts1cmr.fd in Unicode engines
+
+2024-06-19 Joseph Wright  <Joseph.Wright at latex-project.org>
+	* ltkeys.dtx, clsguide.tex
+	Ensure only key name is stored for option handling
+
+2024-06-19 Joseph Wright  <Joseph.Wright at latex-project.org>
+	* ltkeys.dtx, clsguide.tex
+	Refactor class option code
+	Add mechanism to exclude class options from package processing
+
+2024-06-17  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* ltfssbas.dtx: set \tracinglostchars in \showhyphens. gh/1380
+
+2024-06-13  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* lthooks.dtx:
+	Clarify syntax of hook names and behavior of hook rules and default
+	hook rules (gh/1227 & gh/1237)
+
 2024-06-04  Yukai Chou  <muzimuzhi at gmail.com>
 
 	* ltclass.dtx (section{Package/class rollback mechanism}):
@@ -23,6 +104,11 @@
 	This way the user can still alter \PrintDescribeMacro, etc. in the preamble
 	(gh/1000)
 
+2024-06-04  Joseph Wright <Joseph.Wright at latex-project.org>
+
+	* ltluatex.dtx:
+	Mark "v" in provides_module() when logging version string
+
 2024-06-04  Yukai Chou  <muzimuzhi at gmail.com>
 
 	* source2e.tex:

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.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/clsguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.tex	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/clsguide.tex	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
     \texttt{clsguide.tex} for full details.}%
 }
 
-\date{2024-05-24}
+\date{2024-06-19}
 
 \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
 \NewDocumentCommand\marg{m}{\arg{#1}}
@@ -841,6 +841,9 @@
   \item \texttt{.code} --- execute arbitrary code
   \item \texttt{.if} --- sets a \TeX{} |\if...| switch
   \item \texttt{.ifnot} --- sets an inverted \TeX{} |\if...| switch
+  \item \texttt{.pass-to-packages} --- for class options, this specifies
+    whether the option should be treated \enquote{global} (read by packages
+    from the global list); for package options this property has no effect
   \item \texttt{.store} --- stores a value in a macro
   \item \texttt{.usage} -- defines whether the option can be given only
     when loading (\texttt{load}), in the preamble (\texttt{preamble}) or

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/ltmarks-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.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/ltnews36.pdf
===================================================================
(Binary files differ)

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews39.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/ltnews39.tex	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/ltnews39.tex	2024-08-15 20:11:34 UTC (rev 72039)
@@ -725,7 +725,23 @@
 \pkg{bigfoot})}
 
 
+\subsection{Fix a ``missing \cs{item}'' rollback error}
 
+If \LaTeX{} is rolled back to a date between 2023/06/01 (inclusive) and
+2024/06/01 (exclusive), any list-based environment would raise an
+error:
+%(shown on two lines for \textsl{TUGboat}):
+\begin{verbatim}
+! LaTeX Error: Something's wrong--perhaps
+a missing \item.
+\end{verbatim}
+This has now been corrected as a hotfix in patch level 2, by enhancing
+the 2023/06/01 version rollback code of the new paragraph mechanism.
+%
+\githubissue{1386}
+
+
+
 \section{Changes to packages in the \pkg{amsmath} category}
 
 \subsection{\pkg{amsmath}:\ Correct equation tag placement}
@@ -812,6 +828,7 @@
 %
 \githubissue{1123}
 
+\tubcommand{\newpage}
 \subsection{\pkg{xr}:\ Support links and properties}
 %
 The \pkg{xr} package implements a system for eXternal References.

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex	2024-08-15 20:11:34 UTC (rev 72039)
@@ -73,10 +73,22 @@
           	    {github issue#1 #2}%
            )}%
      \par\smallskip}
+
+
+% same for issues in the tagging repository:
+
+\providecommand\taggingissue[2][]{\ifhmode\unskip\fi
+     \quad\penalty500\strut\nobreak\hfill
+     \mbox{\small\slshape(%
+       \href{https://github.com/latex3/tagging-project/issues/\getfirstgithubissue#2 \relax}%
+          	    {github tagging issue#1 #2}%
+           )}%
+     \par\smallskip}
+
 %% But Chris has to mostly disable \href for his TEXPAD app:
 %% \def\href #1#2{#2} % Only For Chris' deficient TeX engine
 
-% simple solution right now (just link to the first issue if there are more)
+% simple solution right now (just link to the first issue if there are several)
 \def\getfirstgithubissue#1 #2\relax{#1}
 
 \providecommand\sxissue[1]{\ifhmode\unskip
@@ -96,6 +108,8 @@
            )}%
      \par}
 
+
+
 \let\cls\pkg
 \providecommand\env[1]{\texttt{#1}}
 \providecommand\acro[1]{\textsc{#1}}
@@ -145,10 +159,93 @@
 
 % To write
 
+\section{News from the \enquote{\LaTeX{} Tagged PDF} project}
+
+The tagging of tabulars has been extended: it is now possible to tag
+also row headers and to create cells that span more than one row. 
+
+\emph{write more details ...}
+
+
+The math module will automatically generate a MathML file and use it to 
+attach MathML associated files to the structure if lua\LaTeX{} and 
+the \pkg{unicode-math} package are used and the \pkg{luamml} is found.
+This new feature can be disabled with \verb+\tagpdfsetup{math/mathml/luamml=false}+ 
+More details can be found in the documentation of \pkg{latex-lab-math}. 
+
+
+\section{Handling paragraph continuation}
+
+Already \LaTeX~2.09 offered some automatism to detect whether or not
+text after a list or some other display environment is meant to be a
+continuation of the current paragraph or should start a new one.  The
+document-level syntax for this is that a blank line after such an
+environment signals to \LaTeX{} that it should start a new paragraph; whilst
+no blank line signals that there should be no new paragraph and the
+text should be considered a continuation.
+
+Unfortunately, there are a number of cases where the original 2.09
+approach failed, e.g., with
+\begin{flushleft}
+  \ttfamily
+\{\meta{local customizations}\\
+\cs{begin}\{equation\} a<b \cs{end}\{equation\}\} \\
+\meta{some text}
+\end{flushleft}
+the \meta{some text} incorrectly started a new paragraph.  Bug reports
+about this behavior can be traced back to the time \LaTeXe{} was
+developed, e.g., one test file from 1992 has a note that the above
+case was unfortunately not resolvable despite some improvements made back
+then.  The main cause of the issue (as you probably guessed) is that
+the mechanism failed whenever the environment was executed within a
+group (\texttt{\{...\}}, \cs{begingroup}/\cs{endgroup}, or
+\cs{bgroup}/\cs{egroup} pair) that was closed before the next blank
+line was reached.
+
+While most of the time  this could be visually corrected by adding some
+explicit \cs{noindent}, the situation got worse when we tried to
+implement tagged PDFs resulting in incorrect structures or worse.
+
+We therefore made a new attempt to resolve this problem in every
+situation and this new solution is rolled out in the current
+release.
+
+
 \section{New or improved commands}
 
 \section{Code improvements}
 
+\subsection{Avoiding keyval option clashes between classes and packages}
+
+In \LaTeX{} News~35~\cite{40:ltnews35} we introduced keyval option processing
+to the kernel. Following the standard for \LaTeXe{} options, keyval options
+given to the \cs{documentclass} line were treated as global and so parsed by
+every package. However, with keyvals, the likelihood of a name clash between a
+class-specific option and one used by a package is much higher than it is with
+simple strings. We have therefore refined the mechanism in the current release.
+
+When a class uses the kernel keyval processor, any options it recognises are
+recorded and any packages using the keyval processor will then \emph{skip}
+these \enquote{global} options. To allow for the case where a class directly
+uses an option which should be global (for example \texttt{draft}), a new key
+property \texttt{.pass-to-packages} has been added. This can then be set to
+indicate that this key is not to be skipped. For example
+\begin{verbatim}
+\DeclareKeys{
+  draft .if = {ifl at cls@draft},
+  draft .pass-to-packages = true,
+  mode  .store = \cls at mode
+}
+\end{verbatim}
+in a class would create two options, \texttt{draft} and \texttt{mode}. The
+\texttt{draft} option will be treated in the normal way by packages using
+keyvals, but they will ignore the \texttt{mode} option: it is effectively
+marked as \enquote{private} to the class.
+
+
+
+\githubissue{1279}
+
 \section{Bug fixes}
 
 \subsection{Fix wrong file type in a rollback warning}
@@ -157,10 +254,12 @@
 package with minimum date requirement \meta{date2} is to be loaded, a
 rollback warning is raised if \meta{date2} is later than \meta{date1}:
 \begin{verbatim}
-LaTeX Warning: Suspicious rollback/min-date date given
-               A minimal date of YYYY-MM-DD has been specified for package
-               '<pkgname>'.
-               But this is in conflict with a rollback request to YYYY-MM-DD.
+LaTeX Warning: Suspicious rollback/min-date
+               date given.
+  A minimal date of YYYY-MM-DD has been
+  specified for package '<pkgname>'.
+  But this is in conflict with a rollback
+  request to YYYY-MM-DD.
 \end{verbatim}
 
 In some cases this message showed a wrong file type, i.e.,
@@ -169,6 +268,24 @@
 %
 \githubissue{870}
 
+\subsection*{Fix existence check of document environments}
+\cs{NewDocumentEnvironment} and friends define (or redefine) a document
+environment using the space-trimmed \meta{envname}, but the existence
+check for \meta{envname} was done without space trimming. Thus when the
+user-specified \meta{envname} consists of leading and/or trailing
+space(s), it may lead to erroneously silent environment declaration.
+For example, in
+\begin{verbatim}
+  \NewDocumentEnvironment{myenv}{}{begin}{end}
+  \NewDocumentEnvironment{ myenv }{}{begin}{end}
+\end{verbatim}
+the first line defines a new environment \env{myenv} but the second
+line would check existence for \env{ myenv } (which is not yet defined),
+then redefine \env{myenv} environment without raising any errors.
+This has now been corrected.
+%
+\githubissue{1399}
+
 \subsection{\pkg{doc}:\ \cs{PrintDescribeMacro} in preamble}
 
 In \pkg{doc} version 2 it was possible alter the definition of
@@ -180,13 +297,84 @@
 \githubissue{1000}
 
 
+\section{Improvement to \XeTeX\ \cs{showhyphens}}
+When using \cs{showhyphens} with \XeTeX, missing character warnings
+would be generated for any character not in Latin Modern. This has been
+corrected and the warnings are suppressed.
+%
+\githubissue{1380}
 
-%\section{Changes to packages in the \pkg{amsmath} category}
 
+\section{Avoid code duplication in rollback}
+
+When the kernel uses \cs{AddToHook} in a region that might be 
+rolled back (which happens in a few places) and a document requests a
+rollback, then we have the situation that the hook already contains code to which we added the same
+(or slightly different) code during the
+rollback; this results in code duplication or, worse, in errors. This has
+now been corrected by dropping any such code chunk (if there is one) prior to
+adding the rollback code.
+%
+\githubissue{1407}
+
+
+
+
+\section{Changes to packages in the \pkg{amsmath} category}
+
+\section{Extend support for \cs{dots}}
+
+The implementation of \cs{dots} in \pkg{amsmath} has the feature that
+it selects different dots depending on the symbol that follows: e.g.,
+dots between commas would normally be on the baseline, while dots
+between binary or relational symols would be raised. However, when symbols such
+as \cs{cong} were protected from expansion in moving arguments (so
+that they worked in places such as headings) it had the unfortunate
+side-effect that the \cs{dots} magic stopped working for them. This
+has now been corrected.
+%
+\githubissue{1265}
+
+
+
 %\section{Changes to packages in the \pkg{graphics} category}
 
-%\section{Changes to packages in the \pkg{tools} category}
+\section{Changes to packages in the \pkg{tools} category}
 
+
+\subsection{\pkg{array}: Tagging support for \cs{cline}}
+
+In the last release we added tagging support for \pkg{array},
+\pkg{longtable} and other tabular packages, but we overlooked that the
+kernel definition for \cs{cline} also needs modification because the
+rule generated by the command needs to be tagged as an
+artifact. Furthermore, the processing of a \cs{cline} looks to the
+algorithm as if another row is added (which is technically what
+happens), thus it was also necessary to decrement the internal row
+counter to get a correct row count. This has now been corrected in
+\pkg{array} which is automatically loaded for tagging, so that all
+these packages are now fully compatible with the tagging code if it is
+turned on.
+%
+\taggingissue{134}
+
+
+\subsection{\pkg{longtable}: Extend caption type}
+
+The \pkg{longtable} has been extended and now provides the command \cs{LTcaptype}
+(stemming from the \pkg{ltcaption} package) to change
+the counter and caption type used by the \cs{caption} command from longtable.
+So with \verb+\renewcommand\LTcaptype{figure}+, a longtable will step the
+figure counter instead of the table counter and produce an
+entry in the list of figures. An empty definition, \verb+\renewcommand\LTcaptype{}+,
+will suppress increasing of the counter. This makes it easy to define an
+unnumbered variant of longtable:
+\begin{verbatim}
+\newenvironment{longtable*}
+  {\renewcommand\LTcaptype{}\longtable}
+  {\endlongtable}
+\end{verbatim}
+
 %\section{Changes to files in the \pkg{cyrillic} category}
 
 \begin{thebibliography}{9}\frenchspacing
@@ -205,6 +393,10 @@
   \emph{\LaTeXe{} news 1--39}. June, 2024.
   \url{https://latex-project.org/news/latex2e-news/ltnews.pdf}
 
+\bibitem{40:ltnews35} \LaTeX{} Project Team.
+  \emph{\LaTeXe{} news 35}. June 2022.
+  \url{https://latex-project.org/news/latex2e-news/ltnews35.pdf}
+
 \bibitem{40:ltnews39} \LaTeX{} Project Team.
   \emph{\LaTeXe{} news 39}. June 2024.
   \url{https://latex-project.org/news/latex2e-news/ltnews39.pdf}
@@ -212,4 +404,3 @@
 \end{thebibliography}
 
 \end{document}
-

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/ltproperties-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltproperties-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/ltsockets-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/ltsockets-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/tlc3.err
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/base/tlc3.err	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/base/tlc3.err	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2024/06/05}        % needs / and not -
+\newcommand\erratafiledate{2024/08/07}        % needs / and not -
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % To produce a printed version of this errata file run this file through
@@ -469,7 +469,11 @@
 \erroronpage{I-xx\ldots I-xxi}{}{FMi}{2023/04/04}{s}
 Dot leaders have been changed on all sections.
 
+\erroronpage{xxv}{footnote}{FMi}{2024/07/11}{s}
+The package implementing the Silly Walk is called \u{\texttt{sillypage}}
+not \u{\texttt{sillywalk}} as claimed in the footnote.
 
+
 \CHAPTER{Bibliography (Part I)} 
 
 \erroronpage{I-779}{[24], l.-1}{FMi}{2023/10/28}{s}
@@ -558,8 +562,13 @@
 
 %\CHAPTER{General}
 %
-%\CHAPTER{Front matter}
 
+\CHAPTER{Front matter}
+
+\erroronpage{I-xli}{footnote}{FMi}{2024/07/11}{s}
+The package implementing the Silly Walk is called \u{\texttt{sillypage}}
+not \u{\texttt{sillywalk}} as claimed in the footnote.
+
 \CHAPTER{Bibliography} 
 
 \erroronpage{II-800}{[50], l.-1}{FMi}{2023/10/28}{s}
@@ -689,6 +698,14 @@
 \erroronpage{I-182}{para 4}{BeB}{2024/03/17}{s}
 Add sentence: The command \verb+\textcquote+ is used in Example 16-5-50 on page II-535.
 
+\erroronpage{I-195}{para 2}{FMi}{2024/07/20}{s}
+Replace the whole paragraph with:\\
+For the same reason \texttt{soul} was unable to cope with UTF-8 input
+characters if they are internally represented by several bytes. If you
+used such characters, you had to load \texttt{soulutf8} (by Heiko Oberdiek)
+instead of \texttt{soul} — since 2023, both packages are equivalent, thus you may
+always use the \texttt{soul} package.
+
 \CHAPTER{Chapter 4 --- Basic Formatting Tools -- Larger \ldots}
 
 \erroronpage{I-253}{para 2, l.-3}{YEi}{2023/11/27}{s}
@@ -696,7 +713,18 @@
 and \textsf{thmtools} packages and \textsf{typed-checklist}\u{,} helps you write \> \\
 and \textsf{thmtools} packages\u{,} and \textsf{typed-checklist} helps you write
 
+\erroronpage{I-286}{para 1, l.3}{DPC}{2024/07/15}{s}
+in this case \texttt{shade\u{d}thm} \> in this case \texttt{shadethm}
 
+\erroronpage{I-322}{para -1, l.-2}{MBe/FMi}{2024/08/07}{s}
+
+Change: \texttt{algorithm\u{s}} \> \texttt{algorithm\u{ic}}
+
+\textit{Reason: The package is called \texttt{algorithmic} and there
+is also \texttt{algorithm} to make floats, but the CTAN bundle (and
+its documentation) calls it \texttt{algorithms}.}
+
+
 \erroronpage{I-323}{Table 4.4, left column}{BeB}{2023/07/25}{s}
 Typo: Assembler (\u{N}otorola68k, x86masm) \> \\ Assembler (\u{M}otorola68k, x86masm)
 %  Matlab \> Matlab \u{(empty, 5.1)}  
@@ -762,9 +790,10 @@
 is not really an error, but it looks better---and is consistent with the 
 `actual' item of `profit' for Booklet 113.)
 
+\erroronpage{I-492}{footnote}{DPC}{2024/07/15}{s}
+called \u{\texttt{threetableex}} \> called \u{\texttt{threeparttablex}}
 
 \erroronpage{I-494}{para -2, l.3}{MRu}{2024/03/16}{s}
-
 Use plural: The allowed key\u{s} are \ldots
 
 
@@ -802,6 +831,10 @@
 \CHAPTER{Chapter 9 --- Font Selection and Encodings}
 
 
+\erroronpage{I-687}{table 9.6, l.21}{YvH}{2024/06/19}{s}
+  cmdh \> lmdh
+
+
 \erroronpage{I-688}{para -2, l. 1}{BeB}{2023/08/13}{s}
 acronym PSNFSS not explained:  PSNFSS \> PostScript New Font Selection Scheme (PSNFSS)
 
@@ -865,6 +898,9 @@
 There are no italic blackletters (so it should be in blue):  \\
 \textit{phœnix's official rôle} \> \textit{\bl phœnix's official rôle}
 
+\erroronpage{II-27}{para 1, l.1}{MBe/FMi}{2024/08/02}{s}
+Package was renamed:  \texttt{droidmono} \> \texttt{droid\u{sans}mono}
+
 \erroronpage{II-28}{table 10.14, l. 3}{BeB}{2023/08/13}{s}
 Inconsistent order: sl, l \> l, sl
 
@@ -1186,6 +1222,10 @@
 longer honored.
 
 
+\erroronpage{II-149}{para 2, l.4}{DPC}{2024/07/15}{s}
+package \texttt{flex\u{y}sym} \>
+package \texttt{flex\u{i}sym}
+
 \erroronpage{II-167}{para. 3, l. -2}{BeB}{2023/08/13}{s}
 option\u e \> option\u{s}
 
@@ -1196,9 +1236,10 @@
 \erroronpage{II-178}{Tab. 11.3, l.10}{BeB}{2023/08/13}{s}
 in the description column: \u{array}-symbol-arrow \> \u{arrow}-symbol-arrow
 
+\erroronpage{II-189}{footnote}{DPC}{2024/07/15}{s}
+\texttt{oubrace} package \> \texttt{oubrace\u{s}} package
 
 
-
   
 \CHAPTER{Chapter 12 --- Fonts in Formulas}
 
@@ -1363,6 +1404,10 @@
 \texttt{Harf\u{B}uzz}. Both names are supported, but the recommended
 spelling is \texttt{HarfBuzz}.
 
+\erroronpage{II-341}{para -4, l.4}{DPC/FMi}{2024/07/15}{s}
+\texttt{devnag} \u{package} \> \texttt{devnag} \u{program}
+
+
 \CHAPTER{Chapter 14 --- Index Generation}
  
 % Das Beispiel von S. II-352 als File wäre schön, dann könnte man das mit 
@@ -1399,6 +1444,8 @@
 the \cs{MakeUpper}\texttt{\u{C}ase} trick \>
 the \cs{MakeUpper}\texttt{\u{c}ase} trick
 
+\erroronpage{II-423}{table 15.9}{MBe/FMi}{2024/08/04}{s}
+Drop \texttt{nature.bst} line. Style no longer supported.
 
 \erroronpage{II-435}{code}{FMi}{2023/05/26}{s}
 \verb=\textcolor{See= \> \cs{textcolor}\u{\texttt{\{blue\}}}\texttt{\{See}
@@ -1515,10 +1562,12 @@
 \contributor{BeB}{Bernd Burghardt}
 \contributor{BYu}{Boshi Yuan}
 \contributor{CAR}{Chris Rowley}
+\contributor{DPC}{David Carlisle}
 \contributor{DC}{Davide Campagnari}
 \contributor{DFl}{Daniel Flipo}
 \contributor{EOl}{Edgar Olthof}
 \contributor{FMi}{Frank Mittelbach}
+\contributor{MBe}{Matthew Bertucci}
 \contributor{MJo}{Maciej Jończyk}
 \contributor{MRu}{Mark Rudolph}
 \contributor{YFu}{FUJIMURA Yukitoshi}

Modified: trunk/Master/texmf-dist/doc/latex-dev/base/tlc3.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-historic.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/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/graphics/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/graphics/README.md	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,7 +1,7 @@
 The LaTeX `graphics` bundle
 ===========================
 
-Release 2024-11-01 pre-release 0
+Release 2024-11-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	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/graphics/changes.txt	2024-08-15 20:11:34 UTC (rev 72039)
@@ -4,12 +4,17 @@
 are not part of the distribution.
 =======================================================================
 
+2024-06-24  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* color.dtx (section{Extra Groups}):
+	Support new @endpe mechanism
+
 ================================================================================
 All changes above are only part of the development branch for the next release.
 ================================================================================
 
 #########################
-# 2023-11-01 Release
+# 2024-06-01 Release
 #########################
 
 2024-05-23  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>

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/latex-lab/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/latex-lab/README.md	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/latex-lab/README.md	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,6 +1,6 @@
 # LaTeX laboratory
 
-Release 2024-11-01 pre-release 0
+Release 2024-11-01 pre-release 2
 
 ## Overview
 

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

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,12 +1,51 @@
+2024-08-14 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-math.dtx: add luamml support for automatic mathml generation
+
+2024-08-12 Joseph Wright <Joseph.Wright at latex-project.org>
+	* latex-lab-math.dtx: add support for math in tabulars
+
+2024-08-11 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-firstaid.dtx: amsproc support, discussion in PR #517
+
+2024-08-11 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-block.dtx: preset verbatim para-instance, issue #119
+
+2024-08-10 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-block.dtx, latex-lab-table.dtx: reset flattened level in para/restore, issue #544
+
+2024-08-08 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-minipage.dtx, latex-lab-table.dtx: improve support for minipage in tables. 
+	 handle issue #37
+
+2024-08-06 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-table.dtx: add support for header-columns
+	* latex-lab-table.dtx: add support for multirows
+	* latex-lab-table.dtx: handle issue #432
+	* latex-lab-marginpar.dtx: handle issue #444
+
+2024-07-11 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-footnote.dtx: restore paragraph defaults at the begin of the footnote
+	tagging-project#262
+
+2024-07-13  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* latex-lab-table.dtx (subsection{Tagging support sockets}):
+	add plugs for tbl/leaders/begin and /end
+	(subsection{Misc stuff}): drop unused socket
+
+2024-07-11 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
+	* latex-lab-toc.dtx, latex-lab-toc-kernel-changes: switch from configuration points 
+	 to sockets.
+
 2024-05-25 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
 	* latex-lab-table.dtx: disable table headers in presentation tables.
 
 2024-05-25 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
-	* latex-lab-firstaid.dtx: add firstaid for booktabs cmidrules, 
+	* latex-lab-firstaid.dtx: add firstaid for booktabs cmidrules,
 	see tagging-issue 69.
 
 2024-04-18 Ulrike Fischer <Ulrike.Fischer at latex-project.org>
-	* documentmetadata-support.dtx: change handling of default language. 
+	* documentmetadata-support.dtx: change handling of default language.
 	The code now tries to detect languages set by babel/polyglossia.
 
 2024-04-16 Ulrike Fischer <Ulrike.Fischer at latex-project.org>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf
===================================================================
(Binary files differ)

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.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	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/tools/README.md	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,7 +1,7 @@
 The LaTeX `tools` bundle
 ========================
 
-Release 2024-11-01 pre-release 0
+Release 2024-11-01 pre-release 2
 
 Overview
 --------

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/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/tools/changes.txt	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/tools/changes.txt	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,3 +1,14 @@
+2024-08-13  Ulrike Fischer  <Ulrike.Fischer at latex-project.org>
+
+	* longtable.dtx:
+	store row number of head also if it ends with a \cr
+	 (tagging-project-gh/554).
+
+2024-07-13  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* array.dtx (subsection{Handling \cs{cline}}):
+	Support for tagging \cline (tagging/134)
+
 =======================================================================
 This file lists changes to the LaTeX2e files in reverse chronological order.
 It is provided for convenience only.  It therefore makes no claims to
@@ -5,12 +16,31 @@
 are not part of the distribution.
 =======================================================================
 
+2024-07-04  Ulrike Fischer  <Ulrike.Fischer at latex-project.org>
+
+	* longtable.dtx:
+	Added \LTcaptype (from package ltcaption) to support other types
+	beside table and to support unnumbered longtables (gh/1377).
+
+
+2024-06-28  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* multicol.dtx:
+	Update documentation to reflect that \sloppy isn't using
+	\tolerance=10000 any longer (it did in the early days of LaTeX)
+	(gh/1385)
+
 ================================================================================
 All changes above are only part of the development branch for the next release.
 ================================================================================
 
+2024-06-14  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* array.dtx move \ExplSyntaxOff earlier so error message spaces preserved gh/1378
+
+
 #########################
-# 2023-11-01 Release
+# 2024-06-01 Release
 #########################
 
 2024-05-23  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>

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/l3sys-query.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/manifest.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/tools/manifest.txt	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/tools/manifest.txt	2024-08-15 20:11:34 UTC (rev 72039)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2024
 % The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
@@ -49,7 +49,7 @@
         Access bold math symbols.
 
 calc.dtx
-        Infix arithmetic expresions. Contributed to the distribution by
+        Infix arithmetic expressions. Contributed to the distribution by
         Kresten Krab Thorup and Frank Jensen.
 
 enumerate.dtx
@@ -60,7 +60,7 @@
         missing file error loop.
 
 fontsmpl.dtx
-        Package and test file for producing `font samples'
+        Package and test file for producing `font samples'.
 
 ftnright.dtx
         Place footnotes in the right hand column in two-column mode.
@@ -77,7 +77,7 @@
 
 rawfonts.dtx
         Preload fonts under the old internal font names of LaTeX2.09.
-        Not recomended for new packages, but may help when updating old
+        Not recommended for new packages, but may help when updating old
         files.
 
 shellesc.dtx
@@ -103,7 +103,7 @@
         Flexible version of verbatim environment.
 
 xr.dtx
-       eXternall References. Extend \ref to access \label commands in
+       eXternal References. Extend \ref to access \label commands in
        other documents.
 
 xspace.dtx

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/tools-overview.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex	2024-08-15 20:11:34 UTC (rev 72039)
@@ -132,7 +132,7 @@
   Access bold math symbols.
 }%
 \entry{calc}{%
-  Infix arithmetic expresions. Contributed to the distribution by
+  Infix arithmetic expressions. Contributed to the distribution by
   Kresten Krab Thorup and Frank Jensen.
 }%
 \entry{dcolumn}{%
@@ -149,7 +149,7 @@
   missing file error loop.
 }%
 \entry{fontsmpl}{%
-  Package and test file for producing \emph{font samples}
+  Package and test file for producing \emph{font samples}.
 }%
 \entry{ftnright}{%
   Place footnotes in the right hand column in two-column mode.
@@ -173,7 +173,7 @@
 }%
 \entry{rawfonts}{%
   Preload fonts under the old internal font names of \LaTeX{}2.09.
-  Not recomended for new packages, but may help when updating old
+  Not recommended for new packages, but may help when updating old
   files.
 }%
 \entry{shellesc}{%
@@ -206,7 +206,7 @@
   Flexible version of verbatim environment.
 }%
 \entry{xr}{%
-  eXternall References. Extend \cs{ref} to access \cs{label} commands in
+  eXternal References. Extend \cs{ref} to access \cs{label} commands in
   other documents.
 }%
 \entry{xspace}{%

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/source/latex-dev/base/alltt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/alltt.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/alltt.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -40,7 +40,7 @@
 %<package>\ProvidesPackage{alltt}
 %<driver>\ProvidesFile{alltt.drv}
 %\ProvidesFile{alltt.dtx}
-              [2024/02/08 v2.0g defines alltt environment]
+              [2024/07/07 v2.0g defines alltt environment]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -83,7 +83,7 @@
 %   Here are some things you may want to do in an \Lenv{alltt}
 %   environment:
 %   \begin{itemize}
-%   \item Change fonts--e.g., by typing |{\em emphasized text\/}|
+%   \item Change fonts--e.g., by typing |\emph{emphasized text}|
 %
 %   \item Insert text from a file \file{foo.tex} by typing
 %    |\input{foo}|. Beware that each |<return>| starts a new line, so

Modified: trunk/Master/texmf-dist/source/latex-dev/base/classes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/classes.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/classes.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -53,7 +53,7 @@
 %<*driver>
 \ProvidesFile{classes.drv}
 %</driver>
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
 %<article|report|book> Standard LaTeX document class]
 %<10pt|11pt|12pt>      Standard LaTeX file (size option)]
 %    \end{macrocode}
@@ -257,7 +257,7 @@
 %
 % \begin{macro}{\@ptsize}
 %    This control sequence is used to store the second digit of the
-%    pointsize we are typesetting in. So, normally, it's value is one
+%    pointsize we are typesetting in. So, normally, its value is one
 %    of 0, 1 or 2.
 %    \begin{macrocode}
 %<*article|report|book>
@@ -362,7 +362,7 @@
 %    with other packages that use the |\@ptsize| variable to select
 %    special actions. It makes the declarations of size options less
 %    than 10pt difficult, although one can probably use \texttt{9}
-%    and \texttt{8} assuming that a class wont define both
+%    and \texttt{8} assuming that a class won't define both
 %    \Lopt{8pt} and \Lopt{18pt} options.
 %
 %    \begin{macrocode}
@@ -3122,7 +3122,7 @@
 %
 % \subsubsection{Theorem}
 %
-%    This document class does not define it's own theorem environments,
+%    This document class does not define its own theorem environments,
 %    the defaults, supplied by the \LaTeX{} format are available.
 %
 % \subsubsection{Titlepage}
@@ -3130,12 +3130,12 @@
 % \begin{environment}{titlepage}
 %  In the normal environments, the titlepage environment does nothing
 %  but start and end a page, and inhibit page numbers. When \LaTeX\ is
-%  in two-column mode, the environmont temporarily switches to
+%  in two-column mode, the environment temporarily switches to
 %  one-column mode.
 %  In the report class, it also resets the page number to one, and
 %  then, in two-column mode, sets it back to one at the end.
 %  For the book class the environment makes sure that the title page
-%  is on a recto page by issueing a \cs{cleardouplepage}-command.
+%  is on a recto page by issuing a \cs{cleardoublepage}-command.
 %  In compatibility mode, it sets the page number to zero. This is
 %  incorrect since it results in using the page parameters for a
 %  right-hand page but it is the way it was. 

Modified: trunk/Master/texmf-dist/source/latex-dev/base/doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/doc.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/doc.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,7 +34,7 @@
 %\catcode`\<=14
 %<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
 %<+package>
-% Any rollback request before 2016-02-15 we try to fullfil with the 2016 version:
+% Any rollback request before 2016-02-15 we try to fulfill with the 2016 version:
 %<+package>\DeclareRelease{}{1994-06-01}
 %<+package>                      {doc-2016-02-15.sty}
 %<+package>\DeclareRelease{v2.1g}{2016-02-15}
@@ -45,7 +45,7 @@
 %<+package>
 %<+package>\ProvidesPackage{doc}
 %<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb>  [2024/06/04 v3.0q
+%<+package|shortvrb>  [2024/06/29 v3.0q
 %<+package|shortvrb>   Standard LaTeX documentation package V3 (FMi)]
 %\catcode`\<=12
 %
@@ -836,7 +836,7 @@
 %
 % All three above declarations are local to the current group.
 %
-% Production (or not) of the index (via the |\makeindex| commend) is
+% Production (or not) of the index (via the |\makeindex| command) is
 % controlled by using or omitting the following declarations in the
 % driver file preamble; if neither is used, no index is produced.
 % \DescribeInterfaceMacro\PageIndex Using |\PageIndex| makes all index
@@ -5565,7 +5565,7 @@
 % Since version 2.1g, \texttt{doc} creates a \cs{saved at indexname} command
 % which in used by \cs{changes}. We now support that as well. The expansion of
 % this command depends on whether the documented item is macrolike or not,
-% which we don't know here (it's only know by \cs{NewDocElement}). That's why we
+% which we don't know here (it's only known by \cs{NewDocElement}). That's why we
 % need one specific command generating \cs{saved at indexname} the right way for
 % every single item. These commands are
 %    named\cs{@Save\meta{item}IndexName};

Modified: trunk/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/fontdef.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/fontdef.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -40,7 +40,7 @@
 %<driver, >\ProvidesFile{fontdef.drv}
 % \fi
 % \ProvidesFile{fontdef.dtx}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
 % \iffalse
 %<text,   >   (Text font setup)
 %<math,   >   (Math font setup)
@@ -411,6 +411,18 @@
 \endgroup
 %    \end{macrocode}
 %
+% \changes{v3.0j}{2024/06/24}{load ts1 cmr fd file in Unicode engines}
+% Even though Unicode engines default to |lm| load |ts1cmr| 
+% as this may be used for fallback for TS1 encoding.
+%    \begin{macrocode}
+\ifx\Umathcode\@undefined\else
+\begingroup
+\nfss at catcodes
+\input {ts1cmr.fd}
+\endgroup
+\fi
+%    \end{macrocode}
+%
 %    Even with all the precautions it is still possible that NFSS will
 %    run into problems, for example, when a |.fd| file contains
 %    corrupted data. To guard against such cases NFSS has a very
@@ -527,7 +539,6 @@
 %<*text|latexrelease>
 %<latexrelease>\IncludeInRelease{2020/02/02}%
 %<latexrelease>                 {\updefault}{font defaults change}%
-%    \begin{macrocode}
 \renewcommand\updefault{up}
 %    \end{macrocode}
 %    We append \cs{@empty} to the series value so that we can detect

Modified: trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -40,7 +40,7 @@
 %<*latexrelease>
 % \fi
 %         \ProvidesFile{latexrelease.dtx}
-          [2022/11/14 v1.0p LaTeX release emulation and tests
+          [2024/08/11 v1.0p LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 % \iffalse
 %</latexrelease>
@@ -507,7 +507,7 @@
 % \end{macro}
 %
 % \changes{v1.0c}{2015/02/19}{Swap argument order}
-% \changes{v1.0k}{2018/05/08}{reset \cs{\requestedLaTeXdate} for current
+% \changes{v1.0k}{2018/05/08}{reset \cs{requestedLaTeXdate} for current
 %                             and latest options, github issue 43}
 %    \begin{macrocode}
 \DeclareOption*{%

Modified: trunk/Master/texmf-dist/source/latex-dev/base/letter.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/letter.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/letter.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -45,7 +45,7 @@
 %<*driver>
        \ProvidesFile{letter.drv}
 %</driver>
-              [2021/12/07 v1.3c
+              [2024/08/12 v1.3c
 %<+letter>               Standard LaTeX document class]
 %    \end{macrocode}
 %
@@ -838,9 +838,10 @@
 %     $1$, with footnotes starting from $1$ as well.
 %     (The first page is unnumbered.) It has a single argument, which
 %     is the addressee and his address, as in
+% \changes{v1.3c}{2024/08/12}{Alter sample address (gh/1439)}
 %\begin{verbatim}
 %  \begin{letter}{Sam Jones \\
-%                 Institute for Retarded Study\\
+%                 Institute for Trivial Study\\
 %                 Princeton, N.J.}
 %\end{verbatim}
 %     Local declarations, such as |\address|, can follow the

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltboxes.dtx}
-             [2024/06/10 v1.4g LaTeX Kernel (Box Commands)]
+             [2024/06/23 v1.4h LaTeX Kernel (Box Commands)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltboxes.dtx}
@@ -456,9 +456,6 @@
 % \begin{macro}{\color at begingroup}
 % \changes{v1.0b}{1994/03/14}
 %         {macro added for color support}
-% \begin{macro}{\color at endgroup}
-% \changes{v1.0b}{1994/03/14}
-%         {macro added for color support}
 % \begin{macro}{\color at setgroup}
 % \changes{v1.0f}{1994/05/11}
 %         {macro added for color support}
@@ -491,7 +488,6 @@
 %<latexrelease>\IncludeInRelease{2021/06/01}%
 %<latexrelease>                 {\color at begingroup}{color group settings}%
 \let\color at begingroup\begingroup
-\def\color at endgroup{\endgraf\endgroup}
 \def\color at setgroup{\color at begingroup}        % changed further in color package
 \let\normalcolor\relax                        % remains untouched; only changed in a color package
 \def\color at hbox{\hbox\bgroup\color at begingroup}
@@ -506,7 +502,6 @@
 %<latexrelease>                 {\color at begingroup}{color group settings}%
 %<latexrelease>
 %<latexrelease>\let\color at begingroup\relax
-%<latexrelease>\let\color at endgroup\relax
 %<latexrelease>\let\color at setgroup\relax
 %<latexrelease>\let\normalcolor\relax
 %<latexrelease>\let\color at hbox\relax
@@ -522,7 +517,51 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+
+
+
+% \begin{macro}{\color at endgroup}
+%    This macro is separated out because it received an update in 2024,
+%    so requires its own rollback.
+% \changes{v1.0b}{1994/03/14}
+%         {macro added for color support}
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2024/11/01}%
+%<latexrelease>                 {\color at endgroup}{color group settings}%
+%    \end{macrocode}
+%    Beside \cs{endgraf} for handling vertical boxes we also reset
+%    \cs{if at endpe} as we are leaving the context.
+% \changes{v1.4h}{2024/06/23}{Adjust for new \texttt{@endpe} handling}
+%    \begin{macrocode}
+\def\color at endgroup{\endgraf\@endpefalse\endgroup}
+%<latexrelease>
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease>                 {\color at endgroup}{color group settings}%
+%<latexrelease>\def\color at endgroup{\endgraf\endgroup}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\color at endgroup}{color group settings}%
+%<latexrelease>
+%<latexrelease>\let\color at endgroup\relax
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 % \end{macro}
+
+
+
 %
 % \begin{macro}{\newsavebox}
 % \changes{v0.1a}{1993/12/03}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %%% From File: ltcmd.dtx
 %
 %    \begin{macrocode}
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
 %    \end{macrocode}
 %
 %<*driver>
@@ -620,31 +620,51 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_declare_env:nnnn}
+% \begin{macro}{\@@_declare_env:nnnn, \@@_declare_env:ennn}
+% \changes{v1.2f}{2024/07/06}{Use space-trimmed envname directly (gh/1399)}
 % \begin{macro}{\@@_declare_env_internal:nnnn}
+% \begin{macro}{\@@_set_environment_end:n}
 %   The lead-off to creating an environment is much the same as that for
 %   creating a command: issue the appropriate message, store the argument
 %   specification then hand off to an internal function.
 %    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2024/11/01}{\@@_declare_env:nnnn}%
+%<latexrelease>                 {Use~space-trimmed~envname~directly}
 \cs_new_protected:Npn \@@_declare_env:nnnn #1#2
   {
-    \str_set:Nx \l_@@_environment_str {#1}
-    \str_set:Nx \l_@@_environment_str
-      { \tl_trim_spaces:o { \l_@@_environment_str } }
-    \cs_if_exist:cTF { \l_@@_environment_str }
-      {
-        \msg_info:nnxx { cmd } { redefine-env }
-          { \l_@@_environment_str } { \tl_to_str:n {#2} }
-      }
-      {
-        \msg_info:nnxx { cmd } { define-env }
-          { \l_@@_environment_str } { \tl_to_str:n {#2} }
-      }
+    \str_set:Nn \l_@@_environment_str {#1}
+    \cs_if_exist:cTF { #1 }
+      { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+      { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
     \bool_set_false:N \l_@@_expandable_bool
     \bool_set_true:N \l_@@_environment_bool
-    \exp_args:NV \@@_declare_env_internal:nnnn
-      \l_@@_environment_str {#2}
+    \@@_declare_env_internal:nnnn {#1} {#2}
   }
+\cs_generate_variant:Nn \@@_declare_env:nnnn { e }
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2024/06/01}{\@@_declare_env:nnnn}%
+%<latexrelease>                 {Use~space-trimmed~envname~directly}
+%<latexrelease>\cs_new_protected:Npn \@@_declare_env:nnnn #1#2
+%<latexrelease>  {
+%<latexrelease>    \str_set:Nx \l_@@_environment_str {#1}
+%<latexrelease>    \str_set:Nx \l_@@_environment_str
+%<latexrelease>      { \tl_trim_spaces:o { \l_@@_environment_str } }
+%<latexrelease>    \cs_if_exist:cTF { \l_@@_environment_str }
+%<latexrelease>      {
+%<latexrelease>        \msg_info:nnxx { cmd } { redefine-env }
+%<latexrelease>          { \l_@@_environment_str } { \tl_to_str:n {#2} }
+%<latexrelease>      }
+%<latexrelease>      {
+%<latexrelease>        \msg_info:nnxx { cmd } { define-env }
+%<latexrelease>          { \l_@@_environment_str } { \tl_to_str:n {#2} }
+%<latexrelease>      }
+%<latexrelease>    \bool_set_false:N \l_@@_expandable_bool
+%<latexrelease>    \bool_set_true:N \l_@@_environment_bool
+%<latexrelease>    \exp_args:NV \@@_declare_env_internal:nnnn
+%<latexrelease>      \l_@@_environment_str {#2}
+%<latexrelease>  }
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %   Creating a document environment requires a few more steps than creating
 %   a single command. In order to pass the arguments of the command to the
@@ -685,6 +705,7 @@
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \subsection{Structure of \pkg{xparse} commands}
 %
@@ -5022,36 +5043,109 @@
 %
 % \begin{macro}{\NewDocumentEnvironment}
 % \changes{v1.0h}{2021/08/27}{Check for end-of-environment command}
+% \changes{v1.2f}{2024/07/06}{Trim spaces from envname first (gh/1399)}
 % \begin{macro}{\RenewDocumentEnvironment}
 % \begin{macro}{\ProvideDocumentEnvironment}
 % \begin{macro}{\DeclareDocumentEnvironment}
-%   Very similar for environments.
+% \begin{macro}{\@@_new_env:nnnn, \@@_renew_env:nnnn, \@@_provide_env:nnnn}
+% \begin{macro}{\@@_new_env:ennn, \@@_renew_env:ennn, \@@_provide_env:ennn}
+%   Very similar for environments. Trim spaces from user-specified
+%   \meta{envname}, do existence check then hand off to
+%   \cs{@@_declare_env:nnnn}.
 %    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2024/11/01}{\NewDocumentEnvironment}%
+%<latexrelease>                 {Trim~spaces~from~envname~first}
 \cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
   {
+    \@@_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \@@_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  {
+    \@@_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  {
+    \@@_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+%    \end{macrocode}
+%   Each of \cs[no-index]{@@_(new|renew|provide)_env:nnnn} is curried.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_new_env:nnnn #1
+  {
     \cs_if_exist:cTF {#1}
-      { \msg_error:nnx { cmd } { env-already-defined } {#1} }
       {
+        \msg_error:nnx { cmd } { env-already-defined } {#1}
+        \use_none:nnn
+      }
+      {
         \cs_if_exist:cTF { end #1 }
-          { \msg_error:nnx { cmd } { env-end-already-defined } {#1} }
-          { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+          {
+            \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+            \use_none:nnn
+          }
+          { \@@_declare_env:nnnn {#1} }
       }
   }
-\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+\cs_new_protected:Npn \@@_renew_env:nnnn #1
   {
     \cs_if_exist:cTF {#1}
-      { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
-      { \msg_error:nnx { cmd } { env-undefined } {#1} }
+      { \@@_declare_env:nnnn {#1} }
+      {
+        \msg_error:nnx { cmd } { env-undefined } {#1}
+        \use_none:nnn
+      }
   }
-\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
-  { \cs_if_exist:cF {#1} { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} } }
-\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
-  { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \@@_provide_env:nnnn #1
+  {
+    \cs_if_exist:cTF {#1}
+      { \use_none:nnn }
+      { \@@_declare_env:nnnn {#1} }
+  }
+\cs_generate_variant:Nn \@@_new_env:nnnn { e }
+\cs_generate_variant:Nn \@@_renew_env:nnnn { e }
+\cs_generate_variant:Nn \@@_provide_env:nnnn { e }
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2024/06/01}{\NewDocumentEnvironment}%
+%<latexrelease>                 {Trim~spaces~from~envname~first}
+%<latexrelease>\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+%<latexrelease>  {
+%<latexrelease>    \cs_if_exist:cTF {#1}
+%<latexrelease>      { \msg_error:nnx { cmd } { env-already-defined } {#1} }
+%<latexrelease>      {
+%<latexrelease>        \cs_if_exist:cTF { end #1 }
+%<latexrelease>          { \msg_error:nnx { cmd } { env-end-already-defined } {#1} }
+%<latexrelease>          { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+%<latexrelease>      }
+%<latexrelease>  }
+%<latexrelease>\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+%<latexrelease>  {
+%<latexrelease>    \cs_if_exist:cTF {#1}
+%<latexrelease>      { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+%<latexrelease>      { \msg_error:nnx { cmd } { env-undefined } {#1} }
+%<latexrelease>  }
+%<latexrelease>\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+%<latexrelease>  { \cs_if_exist:cF {#1} { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} } }
+%<latexrelease>\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+%<latexrelease>  { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+%<latexrelease>\cs_undefine:N \@@_new_env:nnnn
+%<latexrelease>\cs_undefine:N \@@_new_env:ennn
+%<latexrelease>\cs_undefine:N \@@_renew_env:nnnn
+%<latexrelease>\cs_undefine:N \@@_renew_env:ennn
+%<latexrelease>\cs_undefine:N \@@_provide_env:nnnn
+%<latexrelease>\cs_undefine:N \@@_provide_env:ennn
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\NewExpandableDocumentCommand}
 % \begin{macro}{\RenewExpandableDocumentCommand}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -20,7 +20,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltcmdhooks.dtx}
-             [2024/04/17 v1.0j LaTeX Kernel (Command hooks)]
+             [2024/07/08 v1.0j LaTeX Kernel (Command hooks)]
 % \iffalse
 %
 \documentclass{l3doc}
@@ -1530,6 +1530,7 @@
 %<latexrelease>                 {cmd~hooks~with~args}
 \cs_new_protected:Npn \@@_patch_retokenize:Nnnn #1 #2 #3 #4
   {
+%    \end{macrocode}
 %   Here, when patching by retokenization, we can only guess the number
 %   of arguments of the macro.
 % \changes{v1.0h}{2023/05/21}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfinal.dtx}
-             [2024/02/08 v2.3c LaTeX Kernel (Final Settings)]
+             [2024/07/08 v2.3c LaTeX Kernel (Final Settings)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfinal.dtx}
@@ -930,7 +930,7 @@
 %
 %    \begin{macrocode}
 %<*2ekernel>
-%    \begin{macrocode}
+%    \end{macrocode}
 %
 % We temporarily define |\reserved at a| to apply |\reserved at c| to all the
 % numbers in the range of its arguments.

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -35,7 +35,7 @@
 %
 %
 \ProvidesFile{ltfssbas.dtx}
-             [2024/02/08 v3.2l LaTeX Kernel (NFSS Basic Macros)]
+             [2024/06/17 v3.2m LaTeX Kernel (NFSS Basic Macros)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -2111,6 +2111,8 @@
 %    {Suppress unnecessary error when used in preamble}
 % \changes{v3.2a}{2017/01/10}
 %    {Add version of \cs{showhyphens} that works with Xe\TeX.}
+% \changes{v3.2m}{2024/06/17}
+%    {set \cs{tracinglostchars} to 0 in \cs{showhyphens}}
 %    The |\showhyphens| command must be redefined since the version in
 %    \texttt{plain.tex} uses |\tenrm|.  We have also made some further
 %    adjustments for its use in \LaTeX.
@@ -2142,10 +2144,10 @@
 % horizontal list with explicit hyphens to generate the display. Note
 % that the |lmr| OpenType font is forced, this works even if the
 % characters are not in the font as hyphenation is attempted due to
-% the width of the space and hyphen character. It may generate
+% the width of the space and hyphen character. It would generate
 % spurious Missing Character warnings in the log, these are however
-% suppressed from the terminal output by ensuring that
-% |\tracingonline| is locally zero.
+% suppressed from the terminal and log output by ensuring that
+% |\tracinglostchars| is locally zero.
 %    \begin{macrocode}
 \DeclareRobustCommand\showhyphens[1]{%
   \setbox0\vbox{%
@@ -2154,6 +2156,7 @@
     \hbadness\@M
     \hfuzz\maxdimen
     \tracingonline\z@
+    \tracinglostchars\z@
     \everypar={}%
     \leftskip\z at skip
     \rightskip\z at skip

Modified: trunk/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/lthooks.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/lthooks.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{lthooks.dtx}
-             [2024/04/22 v1.1h LaTeX Kernel (hooks)]
+             [2024/07/08 v1.1h LaTeX Kernel (hooks)]
 % \iffalse
 %
 \documentclass{l3doc}
@@ -130,6 +130,9 @@
 %
 %    The \meta{hook} can be specified using the dot-syntax to denote
 %    the current package name. See section~\ref{sec:default-label}.
+%    The string \texttt{??} can't be used as a hook name because it
+%    has a special significance  as a placeholder in hook rules.
+%
 % \end{function}
 %
 % \begin{function}{\NewReversedHook}
@@ -751,8 +754,6 @@
 %    given \meta{hook}. If \meta{hook} is \texttt{??} this defines a default
 %    relation for all hooks that use the two labels, i.e., that have
 %    chunks of code labeled with \meta{label1} and \meta{label2}.
-%    Rules specific to a given hook take precedence over default
-%    rules that use \texttt{??} as the \meta{hook}.
 %
 %    Currently, the supported relations are the following:
 %    \begin{itemize}
@@ -793,10 +794,18 @@
 %
 %    \end{itemize}
 %    There can only be a single relation between two labels for a
-%    given hook,
-%    i.e., a later \cs{DeclareHookRule} overwrites any previous
-%    declaration.
+%    given hook, i.e., a later \cs{DeclareHookRule} overwrites any
+%    previous declaration.  In all cases rules specific to a given
+%    hook take precedence over default rules that use \texttt{??} as
+%    the \meta{hook}.
 %
+%    If a default rule is applied, it is done before reversing the
+%    label order in a reversed hook, e.g., \texttt{before} in a
+%    default rule effectively becomes \texttt{after} in such a hook.
+%    In contrast, a rule for a specific hook is always applied to the
+%    state after any reversal (i.e., the state you see when using
+%    \cs{ShowHook} on that hook).
+%
 %    The \meta{hook} and \meta{label} can be specified using the
 %    dot-syntax to denote the current package name.
 %    See section~\ref{sec:default-label}.
@@ -826,6 +835,16 @@
 %    (Technically it is just a shorthand for using \cs{DeclareHookRule}
 %    with \texttt{??} as the hook name.)
 %
+%    If such a rule is applied to a reversed 
+%    hook it behaves as if the rule is reversed (e.g., 
+%    \texttt{after} becomes \texttt{before}) 
+%    because those rules are applied first and then the order is reversed.
+%    The rationale is that in hook pairs (in which the ordering in one
+%    is reversed) default rules have to be reversed too in nearly all
+%    scenarios. If this is not the case, a default rule can't be used
+%    or has to be overwritten with an explicit \cs{DeclareHookRule}
+%    for that specific hook.
+%
 %    Declaring default rules is only supported in the document
 %    preamble.\footnotemark{}
 %
@@ -1411,7 +1430,7 @@
 %    This is helpful if you have a pair of hooks where you expect to see
 %    code added that involves grouping, e.g., starting an environment
 %    in the first and closing that environment in the second hook.
-%    To give a somewhat contrived example\footnote{there are simpler
+%    To give a somewhat contrived example\footnote{There are simpler
 %    ways to achieve the same effect.}, suppose there is a package
 %    adding the following:
 %\begin{verbatim}
@@ -1457,9 +1476,14 @@
 %    >     package-too, package-1.
 %\end{verbatim}
 %
-%    The reversal of the execution order happens before applying any
-%    rules, so if you alter the order you will probably have to alter
-%    it in both hooks, not just in one, but that depends on the use case.
+%    If there is a matching default rule (done with
+%    \cs{DeclareDefaultHookRule} or with \texttt{??} for the hook
+%    name) then this default rule is applied before the reversal so that the order
+%    in the reversed hook mirrors the one in the normal hook. However,
+%    all rules specific to a hook happen always after the reversal of the
+%    execution order, so if you alter the order you will probably have
+%    to alter it in both hooks, not just in one, but that depends on
+%    the use case.
 %
 %
 %
@@ -1910,6 +1934,14 @@
 %       right sequence.
 %
 %    \end{description}
+%
+%    Given that these generic hook names involve \texttt{/} as part of
+%    their name they would not work if one tries to define an
+%    environment using a name that involves a
+%    \texttt{/}.\footnote{Officially, \LaTeX{} names for environments
+%    should only consist of a sequence of letters, numbers, and the
+%    character \texttt{*}, i.e., this is not a new restriction.}
+%
 %    Generic environment hooks are never one-time hooks even with
 %    environments that are supposed to appear only once in a
 %    document.\footnote{Thus if one adds code to such hooks after the
@@ -7601,6 +7633,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand \SetDefaultHookLabel { m }
   { \@@_set_default_hook_label:n {#1} }
+%    \end{macrocode}
 %
 %   The label is only automatically updated with \cs{@onefilewithoptions}
 %   (\cs{usepackage} and \cs{documentclass}), but some packages, like

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltkeys.dtx}
-             [2024/01/13 v1.0m LaTeX Kernel (Keyval options)]
+             [2024/06/20 v1.0o LaTeX Kernel (Keyval options)]
 % \iffalse
 \documentclass{l3doc}
 \GetFileInfo{ltkeys.dtx}
@@ -73,6 +73,9 @@
 %    \item \texttt{.code} --- execute arbitrary code
 %     \item \texttt{.if} --- sets a \TeX{} \cs{if...} switch
 %     \item \texttt{.ifnot} --- sets an inverted \TeX{} \cs{if...} switch
+%     \item \texttt{.pass-to-packages} --- for class options, this specifies
+%       whether the option should be treated \enquote{global} (read by packages
+%       from the global list); for package options this property has no effect
 %     \item \texttt{.store} --- stores a value in a macro
 %     \item \texttt{.usage} -- defines whether the option can be given only
 %       when loading (\texttt{load}), in the preamble (\texttt{preamble}) or
@@ -182,12 +185,74 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{.pass-to-packages}
+% \changes{v1.0n}{2024/06/19}{New key property}
+% \begin{macro}{\@@_scope:n}
+% \changes{v1.0n}{2024/06/19}{New function}
+% \begin{macro}{\@@_scope:N}
+% \changes{v1.0n}{2024/06/19}{New function}
+% \changes{v1.0o}{2024/06/20}{Ensure only key name is stored}
+%   Used to force options to be global: as this property (uniquely) has
+%   an \emph{optional} value, there is a bit of work to do.
+%    \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .pass-to-packages }
+  {
+    \bool_if:NTF \l_@@_no_value_bool
+      { \@@_scope:n { true } }
+      { \@@_scope:n }
+  }
+\cs_new_protected:Npn \@@_scope:n #1
+  {
+    \str_case:nnF {#1}
+      {
+        { true }
+          { \@@_scope:N \clist_put_right:NV }
+        { false }
+          { \@@_scope:N \clist_remove_all:NV }
+      }
+      {
+        \msg_error:nnnn { keys }
+          { choice-unknown }
+          { .pass-to-packages }
+          {#1}
+      }
+  }
+\cs_new_protected:Npn \@@_scope:N #1
+  {
+    \exp_after:wN \@@_find_key_module:wNN
+      \l_keys_path_str \s_@@_stop
+        \l_keys_key_tl \l_keys_key_str
+    #1 \l_@@_forced_global_clist \l_keys_key_str
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \subsection{Main mechanism}
 % 
 %    \begin{macrocode}
+\cs_generate_variant:Nn \clist_if_in:NnT { Ne }
+\cs_generate_variant:Nn \clist_if_in:NnTF { Ne }
 \cs_generate_variant:Nn \clist_put_right:Nn { Nv }
 %    \end{macrocode}
 %
+% \begin{macro}{\l_@@_class_only_clist}
+% \changes{v1.0n}{2024/06/19}{New variable}
+%   Used to track class-only options.
+%    \begin{macrocode}
+\clist_new:N \l_@@_class_only_clist
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l_@@_forced_global_clist}
+% \changes{v1.0n}{2024/06/19}{New variable}
+%   Used to force options to be global.
+%    \begin{macrocode}
+\clist_new:N \l_@@_forced_global_clist
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\l_@@_options_clist}
 %   A single list is used for all options, into which they are collected
 %   before processing.
@@ -295,34 +360,35 @@
 % \changes{v1.0h}{2022/06/19}{Further work on handling of option removal}
 % \changes{v1.0h}{2022/06/20}{Use raw options data}
 % \changes{v1.0m}{2024/01/13}{Trim spaces off key names}
+% \changes{v1.0n}{2024/06/19}{Refactor function}
 % \begin{macro}{\@@_options_class:nnn}
 % \changes{v1.0h}{2022/06/20}{New function}
 % \changes{v1.0i}{2022/07/05}{Correct naming of raw class options storage}
 % \changes{v1.0l}{2022/10/22}{Correct handling of unused option list}
+% \changes{v1.0n}{2024/06/19}{Refactor function}
+% \changes{v1.0n}{2024/06/19}{Track options used by classes}
+% \begin{macro}{\@@_options_class:nn}
+% \changes{v1.0n}{2024/06/19}{New function}
 %   For classes, each option (stripped of any content after |=|)
 %   is checked for existence as a key. If found, the option is added to
 %   the combined list for processing. On the other hand, unused options
-%   are stored up in \cs{@unusedoptionlist}. Before any of that, though,
-%   there is a simple check to see if there is an |unknown| key. If there
-%   is, then \emph{everything} will match and the mapping can be skipped.
+%   are stored up in \cs{@unusedoptionlist}. An earlier version of
+%   this code checked for the \texttt{unknown} key just once and
+%   if found short-cutted the loop: that though makes handling more
+%   complex situations harder, so we take the performance hit instead.
+%   Options used by classes are tracked but the catch-all \texttt{unknown}
+%   is excluded (hence not using a lazy evaluation for the key testing).
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_options_class:n #1
   {
     \cs_if_free:cF { @raw at opt@ \@currname . \@currext }
       {
-        \keys_if_exist:nnTF {#1} { unknown }
+        \clist_map_inline:cn { @raw at opt@ \@currname . \@currext }
           {
-            \clist_put_right:Nv \l_@@_options_clist
-              { @raw at opt@ \@currname . \@currext }
+            \exp_args:Ne \@@_options_class:nnn
+              { \tl_trim_spaces:e { \@@_remove_equals:n {##1} } }
+                {##1} {#1}
           }
-          {
-            \clist_map_inline:cn { @raw at opt@ \@currname . \@currext }
-              {
-                \exp_args:Ne \@@_options_class:nnn
-                  { \tl_trim_spaces:e { \@@_remove_equals:n {##1} } }
-                  {##1} {#1}
-              }
-          }
       }
   }
 \cs_new_protected:Npn \@@_options_class:nnn #1#2#3
@@ -329,17 +395,27 @@
   {
     \keys_if_exist:nnTF {#3} {#1}
       {
-        \clist_put_right:Nn \l_@@_options_clist {#2}
-        \clist_remove_all:Nn \@unusedoptionlist {#1}
+        \@@_options_class:nn {#1} {#2}
+        \clist_put_right:Ne \l_@@_class_only_clist { \tl_to_str:n {#1} }
       }
       {
-        \clist_if_in:NnF \@unusedoptionlist {#1}
-          { \clist_put_right:Nn \@unusedoptionlist {#1} }
+        \keys_if_exist:nnTF {#3} { unknown }
+          { \@@_options_class:nn {#1} {#2} }
+          {
+            \clist_if_in:NnF \@unusedoptionlist {#1}
+              { \clist_put_right:Nn \@unusedoptionlist {#1} }
+          }
       }
   }
+\cs_new_protected:Npn \@@_options_class:nn #1#2
+  {
+    \clist_remove_all:Nn \@unusedoptionlist {#1}
+    \clist_put_right:Nn \l_@@_options_clist {#2}
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_options_package:n}
 % \changes{v1.0g}{2022/06/16}{Better handling of option removal}
@@ -348,6 +424,9 @@
 % \changes{v1.0m}{2024/01/13}{Trim spaces off key names}
 % \begin{macro}{\@@_options_package:nnn}
 % \changes{v1.0h}{2022/06/19}{New function}
+% \changes{v1.0n}{2024/06/19}{Skip options given to packages}
+% \begin{macro}{\@@_options_package:nn}
+% \changes{v1.0n}{2024/06/19}{New functions}
 %   For global options when processing a package, the tasks are slightly
 %   different from those for a class. The check is the same, but here
 %   there is nothing to do if the option is not applicable. Each valid
@@ -362,17 +441,31 @@
           {##1} {#1}
       }
   }
+%    \end{macrocode}
+%   The forced-global test here needs to use \cs{tl_to_str:n} as the data come
+%   from a key name, which is always a string.
+%    \begin{macrocode}
 \cs_new_protected:Npn \@@_options_package:nnn #1#2#3
   {
     \keys_if_exist:nnT {#3} {#1}
       {
-        \clist_put_right:Nn \l_@@_options_clist {#2}
-        \clist_remove_all:Nn \@unusedoptionlist {#1}
+        \clist_if_in:NeTF \l_@@_class_only_clist { \tl_to_str:n {#1} }
+          {
+            \clist_if_in:NeT \l_@@_forced_global_clist { \tl_to_str:n {#1} }
+              { \@@_options_package:nn {#1} {#2} }
+          }
+          { \@@_options_package:nn {#1} {#2} }
       }
    }
+\cs_new_protected:Npn \@@_options_package:nn #1#2
+  {
+    \clist_put_right:Nn \l_@@_options_clist {#2}
+    \clist_remove_all:Nn \@unusedoptionlist {#1}
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_options_local:}
 % \changes{v1.0h}{2022/06/20}{Use raw options data}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltlists.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltlists.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -31,7 +31,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltlists.dtx}
-             [2024/06/11 v1.0t LaTeX Kernel (List Environments)]
+             [2024/06/23 v1.0u LaTeX Kernel (List Environments)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltlists.dtx}
@@ -716,6 +716,66 @@
 %
 % This allows paragraph-making environments to work right when called
 % by other environments. (Changed 27 Oct 86)
+%
+% In 2024 this logic was partially replaced with a new algorithm:
+% \begin{itemize}
+% \item
+%   \cs{if at endpe} is now set globally to \texttt{true} or \texttt{false}.
+% \item
+%    In addition \cs{@endpetrue} initiates an \cs{aftergroup} call
+%    to \cs{propagate at doendpe} if it is used inside a group.
+% \item
+%    \cs{propagate at doendpe} in turn checks the status of \cs{if at endpe}
+%    and if that is \texttt{true} it calls \cs{@doendpe} otherwise it
+%    does nothing.
+% \item
+%    \cs{@doendpe} in turn calls \cs{@endpetrue} and also makes the
+%    necessary changes to
+%    \cs{par} and \cs{everypar} so that they handle as before any
+%    empty line that follows the environment.
+% \item
+%    Because of the \cs{@endpetrue} we get another \cs{aftergroup}, so the
+%    mechanisnm slowly migrates out of several groups if those follow
+%    immediately after the end of the environment. If, however, there is a new
+%    paragraph started or an explicit \cs{par} before the next group ends then this will
+%    result in a call to \cs{@endpefalse} and the migration stops
+%    (note that \cs{propagate at doendpe} is still called once after the group but does nothing).
+% \item
+%    Using this approach something like
+%\begin{verbatim}
+% {%  some customization here
+%  \begin{equation}
+%    x=y
+%  \end{equation}}
+% some text
+%\end{verbatim}
+%    is still correctly identified as a paragraph continuation so that
+%    there is no indentation before \texttt{some text}.
+% \item
+%    We can get away with using global settings of \cs{if at endpe} even
+%    in nested situations (without keeping track of the status in a
+%    stack), because the switch change is made only at
+%    the very end of such environments, basically directly before the
+%    \cs{endgroup} in \cs{end}, and it is later set back to \texttt{false} by
+%    the next \cs{everypar} or the next \cs{par}. Even if the
+%    environment is called without using \cs{begin} \cs{end}, the
+%    situation doesn't change (or rather cause a problem).
+% \item
+%    However, there is one scenario where the new approach would
+%    change the behavior. If a box is being built, e.g., with
+%    \cs{setbox}, we have now the case that a \cs{@endpetrue}
+%    inside would migrate out into a context in which it should not be
+%    true (because the box might get used elsewhere, e.g., a float).
+%    In the past, due to local switch changes, that didn't happen, i.e.,
+%    \cs{if at endpe} would revert to \texttt{false} at the end of the box
+%    definition.
+% \item
+%    Thus, to avoid that one has to explicitly set it back to false at
+%    the end of such constructions, just as  we also need to prevent
+%    colors from
+%    migrating out. Thus the correct  place to do this is
+%    in \cs{color at endgroup} because that is always called at that point.
+% \end{itemize}
 %    \begin{macrocode}
 \def\@endparenv{%
   \addpenalty\@endparpenalty\addvspace\@topsepadd\@endpetrue}
@@ -733,9 +793,12 @@
 %   |\clubpenalty| back to its default.
 % \changes{v1.0t}{2015/05/10}{Explicitly reset \cs{clubpenalty} before
 %  clearing \cs{everypar}; see also pr/0462 and pr/4065}
+% \changes{v1.0u}{2024/06/23}{Set \cs{if at endpe} to \texttt{false}
+%    before calling \cs{par} (needed for tagging)}
 %    \begin{macrocode}
               \clubpenalty\@clubpenalty
-              \everypar{}\par\@endpefalse}\everypar
+              \@endpefalse
+              \everypar{}\par}%
 %    \end{macrocode}
 %
 %    Use |\setbox0=\lastbox| instead of   |\hskip -\parindent|
@@ -744,8 +807,9 @@
 % \changes{v1.0k}{1995/11/07}{Enclosed \cs{setbox0} assignment by a
 % group so that it leaves the contents of box $0$ intact.}
 %    \begin{macrocode}
-               {{\setbox\z@\lastbox}%
-                \everypar{}\@endpefalse}}
+     \everypar
+         {{\setbox\z@\lastbox}%
+          \everypar{}\@endpefalse}}
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %
@@ -762,14 +826,62 @@
 %
 % \begin{macro}{\if at endpe}
 % \begin{macro}{\@endpefalse}
-% \begin{macro}{\@endpeltrue}
+% \begin{macro}{\@endpetrue}
+% \begin{macro}{\propagate at doendpe}
+%    As outlined above these are no longer simple switches, but we
+%    keep the name because it is used all over the place.
 %    \begin{macrocode}
 \newif\if at endpe
-\@endpefalse
 %    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}
+%    
+% \changes{v1.0u}{2024/06/23}{Set \cs{if at endpe} globally and also set
+%    up migration to the outside}
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2024/11/01}%
+%<latexrelease>                 {\@endpetrue}{New @endpe handling}%
+%    \end{macrocode}
 %
+%    \begin{macrocode}
+\def\@endpefalse{\global\let\if at endpe\iffalse}
+%    \end{macrocode}
 %
+%    \begin{macrocode}
+\def\@endpetrue {%
+  \global\let\if at endpe\iftrue
+%    \end{macrocode}
+%    If we are inside a group then propagate to the outside:   
+%    \begin{macrocode}
+   \ifnum\currentgrouplevel>\z@
+      \aftergroup\propagate at doendpe
+   \fi
+}
+%    \end{macrocode}
+%    If \cs{if at endpe} is still true after the group ends, we run \cs{@doendpe}
+%    that in turn runs another \cs{@endpetrue} (besides other things),
+%    thus propagating further if necessary.
+%    However, if the endpe situation got resolved and \cs{if at endpe} is \texttt{false}
+%    then nothing further happens.
+%    \begin{macrocode}
+\def\propagate at doendpe{\if at endpe \@doendpe \fi}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@endpetrue}{New @endpe handling}%
+%<latexrelease>
+%<latexrelease>
+%<latexrelease>\def\@endpefalse{\let\if at endpe\iffalse}
+%<latexrelease>\def\@endpetrue{\let\if at endpe\iftrue}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+%
 % \begin{macro}{\@mklab}
 %    \begin{macrocode}
 \def\@mklab#1{\hfil #1}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -30,7 +30,7 @@
 %<*plain>
 % \fi
 % \ProvidesFile{ltluatex.dtx}
-[2024/02/11 v1.2c
+[2024/06/29 v1.2d
 % LaTeX Kernel (LuaTeX support)^^A
 %\iffalse
 %<plain>   LuaTeX support for plain TeX (core)%
@@ -330,6 +330,8 @@
 % field |date| in the usual \LaTeX{} format |yyyy/mm/dd|. Optional fields
 % |version| (a string) and |description| may be used if present. This
 % information will be recorded in the log. Other fields are ignored.
+% If the |version| begins with a digit, a \texttt{v} will be added at the
+% start in the log.
 %
 % \noindent
 % \DescribeMacro{module_info}
@@ -420,7 +422,7 @@
 % same callback and descriptions.
 %
 % The callback functions do not have to be registered yet when the functions is called.
-% Ony the constraints for which both callback descriptions refer to callbacks
+% Only the constraints for which both callback descriptions refer to callbacks
 % registered at the time the callback is called will have an effect.
 %
 % \endgroup
@@ -1004,6 +1006,7 @@
 % \begin{macro}{provides_module}
 % \changes{v1.0a}{2015/09/24}{Function added}
 % \changes{v1.0f}{2015/10/03}{use luatexbase\_log}
+% \changes{v1.2d}{2024/06/04}{Add \texttt{v} to version string if required}
 % Local function to write to the log.
 %    \begin{macrocode}
 local function luatexbase_log(text)
@@ -1024,7 +1027,7 @@
   luatexbase_log(
     "Lua module: " .. info.name
       .. spaced(info.date)
-      .. spaced(info.version)
+      .. spaced(string_gsub(info.version,"^(%d)","v%1"))
       .. spaced(info.description)
   )
   modules[info.name] = info
@@ -1336,7 +1339,7 @@
 % Additionally |callbackrules| describes the ordering constraints: It contains two
 % element tables with the descriptions of the constrained callback implementations.
 % It can additionally contain a |type| entry indicating the kind of rule. A missing
-% value indicates a normal ordering contraint.
+% value indicates a normal ordering constraint.
 %
 % \changes{v1.2a}{2022/10/03}{Add rules for callback ordering}
 %    \begin{macrocode}
@@ -1398,7 +1401,7 @@
           end
           list[i] = current.value
         else
-          -- Cycle occured. TODO: Show cycle for debugging
+          -- Cycle occurred. TODO: Show cycle for debugging
           -- list[i] = ...
           local remaining = {}
           for name, entry in next, meta do
@@ -1432,7 +1435,7 @@
           for i=2, length//2 do
             cycle[i], cycle[length + 1 - i] = cycle[length + 1 - i], cycle[i]
           end
-          error('Cycle occured at ' .. table.concat(cycle, ' -> ', 1, length))
+          error('Cycle occurred at ' .. table.concat(cycle, ' -> ', 1, length))
         end
       end
     end

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -17,7 +17,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltmarks.dtx}
-             [2024/05/31 v1.0g LaTeX Kernel (Marks)]
+             [2024/07/08 v1.0g LaTeX Kernel (Marks)]
 % \iffalse
 %
 \documentclass{l3doc}
@@ -211,7 +211,7 @@
 %   The commands are only meaningful inside the output routine, in
 %   other places their result is (while not random) unpredictable due
 %   to the way \LaTeX{} cuts text material into pages.
-%% \end{function}
+% \end{function}
 %
 %
 %
@@ -806,7 +806,7 @@
   \tl_new:c   { g_@@_last-column_first_  #1 _tl }
   \tl_new:c   { g_@@_last-column_last_   #1 _tl }
 %    \end{macrocode}
-%    All marks will have an identication at the beginning of the form
+%    All marks will have an identification at the beginning of the form
 %    \cs{@@_id:n}\texttt\{\meta{number}\texttt\} and therefore the
 %    initial empty values should have that too, so that data extraction
 %    is going to be uniform.
@@ -1027,7 +1027,7 @@
 %
 %    We disguise \cs{c_max_dim} in an odd looking csname, which then
 %    shows up as part of the display of an error message if that error
-%    happens. This csname forms part of the error diplay so what
+%    happens. This csname forms part of the error display so what
 %    you get is something like
 %\begin{verbatim}
 %   ! Infinite glue shrinkage found in box being split.

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltmiscen.dtx}
-             [2024/02/08 v1.2c LaTeX Kernel (Misc. Environments)]
+             [2024/07/10 v1.2e LaTeX Kernel (Misc. Environments)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltmiscen.dtx}
@@ -276,6 +276,21 @@
 % \changes{v1.0w}{1994/11/30}{(DPC) Use \cs{@dofilelist}}
 % \changes{v1.2a}{2022/11/06}{Repeat release info at the end (gh/944)}
 %    \begin{macrocode}
+%    \end{macrocode}
+%    If we roll back we have to drop stuff before adding chunks,
+%    otherwise the code will just be appended, and thus doubled.
+%    This would result in a harmless warning during the format
+%    generation, because in that case the code chunk label doesn't
+%    exist, and therefore can't be dropped.
+% \changes{v1.2e}{2024/07/10}{Drop code chunks before adding them to
+%    avoid duplication in rollback (gh/1407)}
+%    \begin{macrocode}
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/filelist]
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/warnings]
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/release]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
 \AddToHook{enddocument/info}[kernel/warnings]{\@enddocument at kernel@warnings}
 \AddToHook{enddocument/info}[kernel/release]{%
@@ -389,6 +404,18 @@
 %<latexrelease>\NewHook{enddocument/afteraux}
 %<latexrelease>\NewHook{enddocument/info}
 %<latexrelease>\NewHook{enddocument/end}
+%    \end{macrocode}
+%    If we roll back we have to drop stuff before adding chunks,
+%    otherwise the code will just be appended, and thus doubled.
+% \changes{v1.2e}{2024/07/10}{Drop code chunks before adding them to
+%    avoid duplication in rollback (gh/1407)}
+%    \begin{macrocode}
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/filelist]
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/warnings]
+%<latexrelease>\RemoveFromHook{enddocument/info}[kernel/release]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %<latexrelease>\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
 %<latexrelease>\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument at kernel@warnings}
 %<latexrelease>\AddToHook{enddocument/info}[kernel/release]{%
@@ -719,6 +746,8 @@
 %      position of non-matching \cs{begin}.}
 % \changes{v1.1e}{1996/07/26}{remove \cs{global} before \cs{@ignore...}}
 % \changes{v1.1p}{2019/08/27}{Make command robust}
+% \changes{v1.2d}{2024/06/23}{Separate \cs{begin} and \cs{end} definitions
+%     for individual rollback}
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
@@ -758,55 +787,7 @@
 }
 %    \end{macrocode}
 %
-%    The top level definition for \cs{end}. for an explanation see
-%    below (this is the same as the 2019 version where it was
-%    introduced, but for rollback we have to repeat it). 
 %    \begin{macrocode}
-\edef\end
-  {\unexpanded{%
-     \romannumeral
-       \ifx\protect\@typeset at protect
-       \expandafter       %1
-         \expandafter        %2
-       \expandafter       %1
-           \expandafter         %3 expands the \csname inside \end<space>
-       \expandafter       %1
-         \expandafter        %2  expands \end<space>
-       \expandafter       %1     expands the \else
-           \z@
-       \else
-         \expandafter\z@\expandafter\protect
-       \fi
-   }%
-   \expandafter\noexpand\csname end \endcsname
-  }
-%    \end{macrocode}
-%    Version that adds hooks (so different from the 2019 version). It
-%    fixes tlb3722 but the change should perhaps be made in
-%    \texttt{tabularx} instead.
-%    \begin{macrocode}
-\@namedef{end }#1{%
-  \romannumeral
-    \IfHookEmptyTF{env/#1/end}%
-        {\expandafter\z@}%
-        {\z@\UseHook{env/#1/end}}%
-    \csname end#1\endcsname\@checkend{#1}%
-    \expandafter\endgroup\if at endpe\@doendpe\fi
-    \UseHook{env/#1/after}%
-    \if at ignore\@ignorefalse\ignorespaces\fi
-}
-%    \end{macrocode}
-%    Version without the fix for tlb3722 for the record:
-%    \begin{macrocode}
-%\@namedef{end }#1{%
-%  \UseHook{env/#1/end}%
-%  \csname end#1\endcsname\@checkend{#1}%
-%  \expandafter\endgroup\if at endpe\@doendpe\fi
-%  \UseHook{env/#1/after}%
-%  \if at ignore\@ignorefalse\ignorespaces\fi}%
-%    \end{macrocode}
-%    
-%    \begin{macrocode}
 %</2ekernel|latexrelease>
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
@@ -822,6 +803,7 @@
 %<latexrelease>     \csname #1\endcsname}}%
 %<latexrelease>  \@ignorefalse
 %<latexrelease>  \begingroup\@endpefalse\reserved at a}
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %    A version that doesn't start out with \cs{relax} when in
 %    typesetting mode would be the following, but since \cs{begin}
@@ -847,7 +829,45 @@
 %  \begingroup\@endpefalse\reserved at a}
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\begin}{Making \begin/\end robust}%
+%<latexrelease>\def\begin#1{%
+%<latexrelease>  \@ifundefined{#1}%
+%<latexrelease>    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
+%<latexrelease>    {\def\reserved at a{\def\@currenvir{#1}%
+%<latexrelease>     \edef\@currenvline{\on at line}%
+%<latexrelease>     \csname #1\endcsname}}%
+%<latexrelease>  \@ignorefalse
+%<latexrelease>  \begingroup\@endpefalse\reserved at a}
+%<latexrelease>
+%    \end{macrocode}
+%    Also undo the internal commands as some packages unfortunately test
+%    for their existence instead of using \cs{IfFormatAtLeastTF}.
+% \changes{v1.1y}{2021/02/08}{Undo the internals for robust \cs{begin}
+%    and \cs{end} in rollback (gh/494)}
+%    \begin{macrocode}
+%<latexrelease>\expandafter\let\csname begin \endcsname\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%  \end{macro}
+%
+
+
+
+
 %  \begin{macro}{\end}
+%    The top level definition for \cs{end}.
+% \changes{v1.2d}{2024/06/23}{Separate \cs{begin} and \cs{end} definitions
+%     for individual rollback}
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {\end}{Making \begin/\end robust}%
+%    \end{macrocode}
 %    While \cs{begin} was made robust simply by using
 %    \cs{DeclareRobustCommand} we need to be a bit more subtle with
 %    \cs{end} as there are packages out there that try to look into
@@ -895,58 +915,123 @@
 % \changes{v1.1p}{2019/08/27}{Make command robust}
 %
 %    \begin{macrocode}
-%<latexrelease>\edef\end
-%<latexrelease>  {\unexpanded{%
-%<latexrelease>     \romannumeral
-%<latexrelease>       \ifx\protect\@typeset at protect
-%<latexrelease>       \expandafter       %1
-%<latexrelease>         \expandafter        %2
-%<latexrelease>       \expandafter       %1
-%<latexrelease>           \expandafter         %3 expands the \csname inside \end<space>
-%<latexrelease>       \expandafter       %1
-%<latexrelease>         \expandafter        %2  expands \end<space>
-%<latexrelease>       \expandafter       %1     expands the \else
-%<latexrelease>           \z@
-%<latexrelease>       \else
-%<latexrelease>         \expandafter\z@\expandafter\protect
-%<latexrelease>       \fi
-%<latexrelease>   }%
-%<latexrelease>   \expandafter\noexpand\csname end \endcsname
-%<latexrelease>  }
+\edef\end
+  {\unexpanded{%
+     \romannumeral
+       \ifx\protect\@typeset at protect
+       \expandafter       %1
+         \expandafter        %2
+       \expandafter       %1
+           \expandafter         %3 expands the \csname inside \end<space>
+       \expandafter       %1
+         \expandafter        %2  expands \end<space>
+       \expandafter       %1     expands the \else
+           \z@
+       \else
+         \expandafter\z@\expandafter\protect
+       \fi
+   }%
+   \expandafter\noexpand\csname end \endcsname
+  }
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %    And here is the original definition of \cs{end} the way it was in
 %    \LaTeX{} for several decades now hidden in \verb*=\end =.
 %    \begin{macrocode}
-%<latexrelease>\@namedef{end }#1{%
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\end}{Making \begin/\end robust}%
+%<latexrelease>\def\end#1{%
 %<latexrelease>  \csname end#1\endcsname\@checkend{#1}%
 %<latexrelease>  \expandafter\endgroup\if at endpe\@doendpe\fi
 %<latexrelease>  \if at ignore\@ignorefalse\ignorespaces\fi}
+%<latexrelease>
 %<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
 %    \end{macrocode}
-%    An here the rollback in case that is ever needed.
+%  \end{macro}
+
+
+  
+%  \begin{macro}{\end\verbvisiblespace}
+%    The internal version with a space at the end.
 %    \begin{macrocode}
-%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease>                 {\begin}{Making \begin/\end robust}%
-%<latexrelease>\def\begin#1{%
-%<latexrelease>  \@ifundefined{#1}%
-%<latexrelease>    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
-%<latexrelease>    {\def\reserved at a{\def\@currenvir{#1}%
-%<latexrelease>     \edef\@currenvline{\on at line}%
-%<latexrelease>     \csname #1\endcsname}}%
-%<latexrelease>  \@ignorefalse
-%<latexrelease>  \begingroup\@endpefalse\reserved at a}
-%<latexrelease>\def\end#1{%
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2024/11/01}%
+%<latexrelease>                 {\end!space}{New @endpe handling}%
+\@namedef{end }#1{%
+  \romannumeral
+    \IfHookEmptyTF{env/#1/end}%
+        {\expandafter\z@}%
+        {\z@\UseHook{env/#1/end}}%
+    \csname end#1\endcsname\@checkend{#1}%
+%    \end{macrocode}
+%    We can now close the environment group and due to the new
+%    \cs{if at endpe} handling we no longer need to \cs{expandafter}
+%    out of the group.
+% \changes{v1.2d}{2024/06/23}{Adjust for new \texttt{@endpe} handling}
+%    \begin{macrocode}
+%    \expandafter\endgroup\if at endpe\@doendpe\fi
+    \endgroup
+    \UseHook{env/#1/after}%
+    \if at ignore\@ignorefalse\ignorespaces\fi
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%    
+%    Version that adds hooks (so different from the 2019 version). It
+%    fixes tlb3722 but the change should perhaps be made in
+%    \texttt{tabularx} instead.
+%    \begin{macrocode}
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease>                 {\end!space}{Use hook system}%
+%<latexrelease>
+%<latexrelease>\@namedef{end }#1{%
+%<latexrelease>  \romannumeral
+%<latexrelease>    \IfHookEmptyTF{env/#1/end}%
+%<latexrelease>        {\expandafter\z@}%
+%<latexrelease>        {\z@\UseHook{env/#1/end}}%
+%<latexrelease>    \csname end#1\endcsname\@checkend{#1}%
+%<latexrelease>    \expandafter\endgroup\if at endpe\@doendpe\fi
+%<latexrelease>    \UseHook{env/#1/after}%
+%<latexrelease>    \if at ignore\@ignorefalse\ignorespaces\fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%
+%    Version without the fix for tlb3722 for the record:
+%\begin{verbatim}
+%\@namedef{end }#1{%
+%  \UseHook{env/#1/end}%
+%  \csname end#1\endcsname\@checkend{#1}%
+%  \expandafter\endgroup\if at endpe\@doendpe\fi
+%  \UseHook{env/#1/after}%
+%  \if at ignore\@ignorefalse\ignorespaces\fi}%
+% \end{verbatim}
+%    
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {\end!space}{Making \begin/\end robust}%
+%<latexrelease>
+%<latexrelease>\@namedef{end }#1{%
 %<latexrelease>  \csname end#1\endcsname\@checkend{#1}%
 %<latexrelease>  \expandafter\endgroup\if at endpe\@doendpe\fi
 %<latexrelease>  \if at ignore\@ignorefalse\ignorespaces\fi}
-%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
-%    Also undo the internal commands as some packages unfortunately test
+% 
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\end!space}{Making \begin/\end robust}%
+%    \end{macrocode}
+%     Undo the internal command as some packages unfortunately test
 %    for their existence instead of using \cs{IfFormatAtLeastTF}.
 % \changes{v1.1y}{2021/02/08}{Undo the internals for robust \cs{begin}
 %    and \cs{end} in rollback (gh/494)}
 %    \begin{macrocode}
-%<latexrelease>\expandafter\let\csname begin \endcsname\@undefined
 %<latexrelease>\expandafter\let\csname end \endcsname\@undefined
 %<latexrelease>
 %<latexrelease>\EndIncludeInRelease
@@ -953,7 +1038,6 @@
 %<*2ekernel>
 %    \end{macrocode}
 %  \end{macro}
-%  \end{macro}
 %
 %
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltpara.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltpara.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltpara.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -17,7 +17,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltpara.dtx}
-             [2024/05/16 v1.0m LaTeX Kernel (paragraph hooks)]
+             [2024/06/29 v1.0n LaTeX Kernel (paragraph hooks)]
 % \iffalse
 %
 \documentclass{l3doc}
@@ -480,7 +480,7 @@
 %    ended by \cs{RawParEnd}\footnote{Technical note for those who
 %    know their \textit{\TeX book\/}: the \cs{RawParEnd} command
 %    invokes the original \TeX{} engine definition of \cs{par} that
-%    (soley) triggers the paragraph builder in \TeX{} when found
+%    (solely) triggers the paragraph builder in \TeX{} when found
 %    inside unrestricted horizontal mode and does nothing in other
 %    processing modes.}
 %    and not by \cs{par} (or a blank line), because the latter will execute
@@ -634,7 +634,7 @@
 % \glue(\parskip) 0.0 plus 1.0
 % \glue(\baselineskip) 5.16669
 %\end{verbatim}
-%   but now there is anothe \cs{parskip} glue (that is always 0pt):
+%   but now there is another \cs{parskip} glue (that is always 0pt):
 %\begin{verbatim}
 % \glue(\parskip) 0.0 plus 1.0
 % \glue(\parskip) 0.0
@@ -819,6 +819,18 @@
   \@@_handle_indent:
 % \the \everypar           % <--- done differently below
 }
+%    \end{macrocode}
+% \changes{v1.0n}{2024/06/23}
+%         {Append \cs{everypar} toks to \cs{g_@@_standard_everypar_tl},
+%          rollback 2023/06/01 (gh/1386)}
+%    \begin{macrocode}
+%<latexrelease>\cs_set:Npn \@@_tmp:w #1#2#3#4#5 { }
+%<latexrelease>\tl_gput_right:Nx \g_@@_standard_everypar_tl {
+%<latexrelease>  \exp_not:N \the
+%<latexrelease>  \exp_not:N \toks
+%<latexrelease>  \exp_after:wN \@@_tmp:w \token_to_meaning:N \everypar
+%<latexrelease>  \c_space_tl
+%<latexrelease>}
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{2021/06/01}
 %<latexrelease>       {\g_@@_standard_everypar_tl}{minipage~ fix}
@@ -917,10 +929,10 @@
 %    the paragraph text starts.
 %    \begin{macrocode}
 \tl_gput_right:Nx \g_@@_standard_everypar_tl {
-    \exp_not:N \the
-    \exp_not:N \toks
-    \the \allocationnumber
-    \c_space_tl
+  \exp_not:N \the
+  \exp_not:N \toks
+  \the \allocationnumber
+  \c_space_tl
 }
 %    \end{macrocode}
 %  \end{macro}
@@ -1075,7 +1087,7 @@
 %    it should get removed before the hook code gets added so we have
 %    to arrange for this removal.  
 %
-%    As in other simular cases, it maybe best to add here 
+%    As in other similar cases, it may be best to add here 
 %    a \cs{nobreak} in case the hook itself adds glue and thus 
 %    creates a non-explicit and unwanted potential breakpoont.  
 %    On the other hand (as has been argued) the code in the hook 

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
       \ProvidesFile{ltpictur.dtx}
-                      [2021/04/20 v1.2b LaTeX Kernel (Picture Mode)]
+                      [2024/07/08 v1.2b LaTeX Kernel (Picture Mode)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltpictur.dtx}
@@ -1413,7 +1413,6 @@
 %    \begin{macrocode}
 \newif\if at ovvline \@ovvlinetrue
 \newif\if at ovhline \@ovhlinetrue
-%    \begin{macrocode}
 %</2ekernel|latexrelease>
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{0000/00/00}%

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -30,7 +30,7 @@
 %<*driver> 
 % \fi
 \ProvidesFile{ltproperties.dtx}
-             [2024/04/17 v1.0e LaTeX Kernel (Properties)]
+             [2024/06/29 v1.0e LaTeX Kernel (Properties)]
 % \iffalse
 %
 \documentclass[full]{l3doc}
@@ -94,7 +94,7 @@
 % and labels which consist of lists of these properties. The reason for the
 % split is that individual labels will want to record some but not all
 % properties. For examples, a label concerned with position would track
-% the $x$ and $y$ co-ordinates of the current point, but not for example
+% the $x$ and $y$ coordinates of the current point, but not for example
 % the page number.
 %
 % In the current implementation, properties share a single namespace. This
@@ -404,7 +404,7 @@
 %
 % \begin{variable}{pagenum}
 %   (shipout) The current page as arabic number. This is suitable for integer operations and
-%   comparisions.
+%   comparisons.
 % \end{variable}
 % 
 % \begin{variable}{label}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %<*driver> 
 % \fi
 \ProvidesFile{ltsockets.dtx}
-             [2024/02/11 v0.9a LaTeX Kernel (Sockets)]
+             [2024/06/29 v0.9a LaTeX Kernel (Sockets)]
 % \iffalse
 %
 \documentclass{l3doc}
@@ -87,7 +87,7 @@
 % executing code for each command or environment in the document
 % source. Through various steps this code transforms the input and
 % eventually generates typeset output appearing in a \enquote{galley}
-% from which individual pages are cut off in an asyncronous way. This
+% from which individual pages are cut off in an asynchronous way. This
 % page generating process is normally not directly associated with
 % commands in the input\footnote{Excepts for directives such as
 %   \cs{newpage}.} but is triggered whenever the galley has received
@@ -208,7 +208,7 @@
 % simply calls some instance that implements the logic and that instance
 % is altered by selecting a different templates and/or adjusting their
 % parameters. However, in many cases customization through parameters is
-% overkill in such a case (or otherwise awkward, because paramerization
+% overkill in such a case (or otherwise awkward, because parameterization
 % is better done on a higher level instead of individually for small
 % blocks of code) and using the template mechanism just to replace one
 % block of code with a different one results in a fairly high
@@ -400,7 +400,7 @@
 %
 %   However, there is no requirement that sockets and
 %   hook names have to be different. In fact, if a certain action that
-%   could overwise be specified as hook code has to be executed always
+%   could otherwise be specified as hook code has to be executed always
 %   last (or first) one could ensure this by placing a socket (single
 %   action) after a hook (or vice versa) and using the same name to
 %   indicate the relationship, e.g., 

Modified: trunk/Master/texmf-dist/source/latex-dev/base/lttab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/lttab.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/lttab.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -31,7 +31,7 @@
 %%% From File: lttab.dtx
 %<*driver>
 % \fi
-\ProvidesFile{lttab.dtx}[2021/04/20 v1.1s LaTeX Kernel (Columns)]
+\ProvidesFile{lttab.dtx}[2024/06/23 v1.1s LaTeX Kernel (Columns)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{lttab.dtx}
@@ -1499,7 +1499,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@testpatch}
+% \begin{macro}{\@testpach}
 %    \begin{macrocode}
 \def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else
     \ifnum \@lastchclass=3 5 \else

Modified: trunk/Master/texmf-dist/source/latex-dev/base/lttagging.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/lttagging.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/lttagging.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{lttagging.dtx}
-             [2024/06/10 v1.0b LaTeX Kernel (tagging support)]
+             [2024/08/10 v1.0g LaTeX Kernel (tagging support)]
 % \iffalse
 \documentclass{l3doc}
 \GetFileInfo{lttagging.dtx}
@@ -56,19 +56,12 @@
 % \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}}
 % \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}}
 %
-% \let\ProvideDocElement\NewDocElement
-%
 % \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
 % \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
 % \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
 %
 %
-% \section{}
 %
-%
-%
-% \MaybeStop{}
-%
 %    \begin{macrocode}
 %<*2ekernel|latexrelease>
 %    \end{macrocode}
@@ -125,10 +118,16 @@
 %  suspended with \cs{SuspendTagging} instead of changing the plugs of
 %  the tagging support sockets back and forth.
 %
+%  This means that with \cs{SuspendTagging} in force all socket
+%  arguments are ignored (including the case when there is a single
+%  one), i.e., all sockets used with \cs{UseTaggingSocket} behave as
+%  if the \text{noop} plug is assigned.
+%
 %  It is possible to use the tagging support sockets with
-%  \cs{UseSocket} directly, but in this case the socket remains active
-%  if \cs{SuspendTagging} is in force. There my be reasons for doing
-%  that but in general we expect to always use \cs{UseTaggingSocket}.
+%  \cs{UseSocket} instead of \cs{UseTaggingSocket}, but in this case
+%  the socket remains active if \cs{SuspendTagging} is in force. There
+%  may be reasons for doing that, but in general we expect to always
+%  use \cs{UseTaggingSocket}.
 %
 %  The L3 programming layer versions \cs{tag_socket_use:n} and
 %  \cs{tag_socket_use:nn} are slightly more efficient than
@@ -138,7 +137,13 @@
 %  of the CamelCase command.
 %                
 %
+% \MaybeStop{}
 %
+%
+% \section{Implementation}
+%
+%
+%
 %  \begin{macro}{\SuspendTagging,\ResumeTagging}
 %    
 %    In the kernel, these two commands get dummy definitions so that
@@ -149,7 +154,7 @@
 \cs_new_eq:NN \ResumeTagging  \use_none:n
 %    \end{macrocode}
 %
-%    A simplified version of this defnition should move to
+%    A simplified version of this definition should move to
 %    \pkg{tagpdf} and dropped here, eventually.
 %    \begin{macrocode}
 \AddToHook{begindocument/before}{
@@ -209,16 +214,87 @@
          }
          \ERRORusetaggingsocket  % that should get a proper error message
 }
-\ExplSyntaxOff
 %    \end{macrocode}
 %
 %  \end{macro}
 %
+% \subsection{Tagging sockets}
+% This collects tagging sockets that should be generally available
+% so that they can also be used even if the tagging code is not loaded. 
+% 
+% \subsubsection{Tagging support for paragraph setup}
+% 
+% Paragraphs are tagged through the code in the para/hooks. This code is sometimes
+% adjusted, e.g. to produce a \enquote{flattened} paragraph or to use a different tag.
+% Sockets related to such code parts are collected here.
 %
+%  \begin{macro}{\l__tag_block_flattened_level_int}
+%    The block code needs to know if they are nested blockenvs inside
+%    a flattened environment. For this it uses a counter. Inside some contexts,
+%    e.g. at the begin of a minipage or a footnote this counter must be reset.
+%    We therefore define the counter here so that we can use it in the following 
+%    socket. 
+%    \begin{macrocode}
+\int_new:N \l__tag_block_flattened_level_int
+%    \end{macrocode}
+%  \end{macro}
+%  
+% \begin{socketdecl}{tagsupport/para/restore}
+% This socket restores the para related settings to their default. It
+% should be used in places where ``normal'' paragraph tagging must be ensured, for example
+% at the begin of a footnote. 
+%    \begin{macrocode}
+\NewSocket{tagsupport/para/restore}{0}
+%    \end{macrocode}
+% \end{socketdecl}
+% 
+% \begin{plugdecl}{default}
+%    \begin{macrocode}
+\NewSocketPlug{tagsupport/para/restore}{default}
+ {
+   \tl_set:Nn    \l__tag_para_main_tag_tl {text-unit}
+   \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+   \bool_set_false:N\l__tag_para_flattened_bool
+   \int_zero:N   \l__tag_block_flattened_level_int
+ }
+\AssignSocketPlug{tagsupport/para/restore}{default}
+\ExplSyntaxOff 
+%    \end{macrocode}
+% \end{plugdecl}
+
+% \subsubsection{Tagging sockets for toc}
+
+% \begin{socketdecl}{tagsupport/toc/contentsline/before,
+%  tagsupport/toc/contentsline/after}
+%  Tagging sockets at the begin and end of contentsline.
+%  They receive \emph{all} contentsline arguments as one argument
+%  in four brace groups. The socket code should then use the parts it needs.
+%    \begin{macrocode}
+\NewSocket{tagsupport/toc/contentsline/before}{1}
+\NewSocket{tagsupport/toc/contentsline/after}{1}
+%    \end{macrocode}
+% \end{socketdecl}
 %
-%
-%
-%
+% \begin{socketdecl}{tagsupport/toc/starttoc/before,
+%                    tagsupport/toc/starttoc/after}
+% Tagging sockets for the begin and end of start of \cs{@starttoc}.
+% They take one argument, the extension.                   
+%    \begin{macrocode}
+\NewSocket{tagsupport/toc/starttoc/before}{1}
+\NewSocket{tagsupport/toc/starttoc/after}{1}
+%    \end{macrocode}
+% \end{socketdecl}
+% 
+% \begin{socketdecl}{tagsupport/toc/leaders/before,
+%                    tagsupport/toc/leaders/after}
+% Tagging sockets to make the dot leaders an artifact.
+% They do not take an argument.                    
+%    \begin{macrocode}
+\NewSocket{tagsupport/toc/leaders/before}{0}
+\NewSocket{tagsupport/toc/leaders/after}{0}
+%    \end{macrocode}
+% \end{socketdecl}
+% 
 % \subsection{Tagging support for table/tabular packages}
 %
 % The code uses a number of sockets to inject the tagging
@@ -260,6 +336,14 @@
 %    \end{macrocode}
 % \end{socketdecl}
 %
+% \begin{socketdecl}{tagsupport/tbl/init/celldata}
+%    This socket is used in \cs{tbl_init_cell_data_for_table}, the command
+%    that stores and initialize cell data to handle nested tables.
+%    It can be used to restore similar tagging related values
+%    \begin{macrocode}
+\NewSocket{tagsupport/tbl/init/celldata}{0}
+%    \end{macrocode}
+% \end{socketdecl}
 %
 % \begin{socketdecl}{tagsupport/tbl/finalize}
 %    To fine tune the structure (change cells to header cells, remove
@@ -273,8 +357,15 @@
 %    \end{macrocode}
 % \end{socketdecl}
 %
+% \begin{socketdecl}{tagsupport/tbl/restore/celldata}
+%    This socket is used in \cs{tbl_restore_outer_cell_data:}, the command
+%    that restores cell data when quitting a nested table. It can be used to restore
+%    similar tagging related values
+%    \begin{macrocode}
+\NewSocket{tagsupport/tbl/restore/celldata}{0}
+%    \end{macrocode}
+% \end{socketdecl}
 
-
 % \begin{socketdecl}{tagsupport/tbl/colspan}
 %    This socket is used to manage spanning cells, e.g., a
 %    \cs{multicolumn}. It expects one argument (the number of cells
@@ -331,9 +422,21 @@
 % \end{socketdecl}
 %
 %
+% \begin{socketdecl}{tagsupport/tbl/leaders/begin,
+%                    tagsupport/tbl/leaders/end}
+%    Sockets around leaders such as rules or dotted lines, that should
+%    be tagged as artifacts, used, for example, in \cs{cline}.
+% \changes{v1.0c}{2024/07/13}{Sockets for \cs{cline} leaders added (tagging/134)}
+%    \begin{macrocode}
+\NewSocket{tagsupport/tbl/leaders/begin}{0}
+\NewSocket{tagsupport/tbl/leaders/end}{0}
+%    \end{macrocode}
+% \end{socketdecl}
 %
 %
 %
+%
+%
 % \section{For lttab.dtx parked here for now}
 %
 %    
@@ -557,6 +660,10 @@
                 )
           }
 %    \end{macrocode}
+% Tagging has to initialize cell data too.
+%    \begin{macrocode}
+  \UseTaggingSocket{tbl/init/celldata}
+%    \end{macrocode}
 %    These are the initial values when starting a table:
 %    \begin{macrocode}
   \int_gzero:N \g_@@_row_int
@@ -656,6 +763,7 @@
   \int_gset:Nn \g_@@_row_int { \l_@@_saved_row_tl }
   \tl_gset_eq:NN \g_@@_span_tl \l_@@_saved_span_tl
   \tl_gset_eq:NN \g_@@_table_cols_tl   \l_@@_saved_table_cols_tl
+  \UseTaggingSocket{tbl/restore/celldata} 
   \@@_trace:n { ==>~ restored~cell~data:~
                 \int_use:N \g_@@_row_int,
                 \int_use:N \g_@@_col_int,
@@ -725,7 +833,7 @@
 %    \end{macrocode}
 %    Even if we are at the start of a row we my have to do a \cs{cr},
 %    so we do a \cs{crcr} always at the end.
-% \changes{v1.ob}{2024/06/10}
+% \changes{v1.0b}{2024/06/10}
 %         {Always issue a \cs{crcr} even if we are at the start of a
 %          row to avoid problems with tabulary and similar code}
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -115,7 +115,7 @@
    {2024-11-01}
 %</2ekernel|latexrelease>
 %<*2ekernel>
-\def\patch at level{1}
+\def\patch at level{-2}
 %    \end{macrocode}
 %
 % \begin{macro}{\development at branch@name}

Modified: trunk/Master/texmf-dist/source/latex-dev/graphics/color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/graphics/color.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/graphics/color.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -21,7 +21,7 @@
 %<driver> \ProvidesFile{color.drv}
 % \fi
 %         \ProvidesFile{color.dtx}
-          [2024/01/14 v1.3d Standard LaTeX Color (DPC)]
+          [2024/06/23 v1.3e Standard LaTeX Color (DPC)]
 %
 % \iffalse
 %<*driver>
@@ -877,10 +877,15 @@
 % commands. The |\endgraf| in its definition is required in the case
 % of groups of text in vertical `par' mode, but doesn't do any harm in
 % horizontal `LR' contexts.
+% The |\@endpefalse| is required for the newer \texttt{@endpe}
+%    handling, again it is harmless if an older kernel is used
+%    (because there it was a local assignment).
 % \changes{v0.2d}{1994/05/13}
 %     {New definition, was previously just \cs{endgroup}}
+% \changes{v1.3e}{2024/06/23}
+%     {Support new \texttt{@endpe} mechanism}
 %    \begin{macrocode}
-\def\color at endgroup{\endgraf\endgroup}
+\def\color at endgroup{\endgraf\@endpefalse\endgroup}
 %    \end{macrocode}
 %  \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -27,7 +27,7 @@
 %<driver> \ProvidesFile{graphics.drv}
 % \fi
 %         \ProvidesFile{graphics.dtx}
-          [2024/05/23 v1.4g  Standard LaTeX Graphics (DPC,SPQR)]
+          [2024/08/06 v1.4g  Standard LaTeX Graphics (DPC,SPQR)]
 %
 % \iffalse
 %<*driver>
@@ -1050,8 +1050,9 @@
 %
 %    \begin{macrocode}
 \edef\Gin at gzext{\detokenize{gz}}
-%    \edef{macrocode}
+%    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\Gin at set@curr at file}
 % \begin{macro}{\quote at name}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -66,7 +66,7 @@
 % \subsection{File declaration}
 %    \begin{macrocode}
 \ProvidesFile{latex-lab-amsmath.ltx}
-        [2024-02-12 v0.1b amsmath adaptions]
+        [2024-07-05 v0.1b amsmath adaptions]
 %    \end{macrocode}
 % \subsection{Tagpdf support}
 % To make the code independent from tagging being loaded and active
@@ -200,8 +200,8 @@
 %    \end{macrocode}
 %
 % \subsection{\cs{pmb}}
-% \cs{pmb} prints is argument three times. For tagging we must mark
-% two of occurences as artifact.
+% \cs{pmb} prints its argument three times. For tagging we must mark
+% two of occurrences as artifact.
 % For luatex the attributes in the box must be reset, for this
 % we switch to expl3-boxes.
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-bib.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-bib.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-bib.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,7 +16,7 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
 \def\ltlabbibversion{0.81b}
 %<*driver>
 \documentclass{l3doc}
@@ -128,7 +128,7 @@
 %
 % \begin{function}{\@extra at binfo,\@extra at b@citeb}
 % 
-% These are taken from hyperref, they are for chapterbib compability (and also
+% These are taken from hyperref, they are for chapterbib compatibility (and also
 % signal to chapterbib not to change the citation commands)
 % \end{function}
 % 
@@ -157,7 +157,7 @@
 %    \end{macrocode}
 
 % \begin{macro}{\@extra at binfo,\@extra at b@citeb}
-% These are taken from hyperref, they are for chapterbib compability (and also
+% These are taken from hyperref, they are for chapterbib compatibility (and also
 % signal to chapterbib not to change the citation commands)
 %    \begin{macrocode}
 \providecommand*\@extra at binfo{}%
@@ -270,7 +270,7 @@
 %    \end{macrocode}
 % Now we add the tagging structure.
 % TODO: with the next tagpdf version it should no longer be 
-% needed to exand the ref key.
+% needed to expand the ref key.
 %    \begin{macrocode}
 \AddToHookWithArguments{bibcite/before}
   {
@@ -305,7 +305,7 @@
 %  We need in part different code for both systems: 
 %  with biblatex we have to take care that only the first
 %  structure sets a label, and if 
-%  hyperref is not loaded (or deactived) we will need additional code
+%  hyperref is not loaded (or deactivated) we will need additional code
 %  but this currently doesn't exist.
 %  We assume that no document loads both package -- that will probably break.
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -9,8 +9,8 @@
 %
 %    https://www.latex-project.org/lppl.txt
 %
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-08-11}
+\def\ltlabblockversion{0.8p}
 %<*driver>
 \documentclass[kernel]{l3doc}
 \usepackage{amstext}
@@ -341,7 +341,7 @@
 %
 %    The idea of a \key{heading} key needs some further
 %    thoughts. Maybe instead the object type should accept a second
-%    argument and receive input for such a headding from the document
+%    argument and receive input for such a heading from the document
 %    level instead.
 %
 %    The names of the keys need further thoughts and some
@@ -474,7 +474,7 @@
 %    \>\>\> The paragraph text before the display element \ldots\\
 %    \>\>   \struct{/text}\\
 %    \>\>   \struct{display element structure}\\
-%    \>\>\>  Content of the display structure possiblly involving inner \struct{text-unit} tags\\
+%    \>\>\>  Content of the display structure possibly involving inner \struct{text-unit} tags\\
 %    \>\>   \struct{/display element structure}\\
 %    \>\>   \struct{text}\\
 %    \>\>\> \ldots{} continuing the outer paragraph text\\
@@ -722,7 +722,7 @@
                             blockenv implementation]
 %    \end{macrocode}
 %
-%   Generell kernel changes, also loaded by the sec and toc code.
+%   General kernel changes, also loaded by the sec and toc code.
 %    \begin{macrocode}
 \RequirePackage{latex-lab-kernel-changes}
 %    \end{macrocode}
@@ -795,7 +795,52 @@
 %    The flag itself should be set globally not locally.\fmi{verify
 %    that this claim is actually correct!}
 %    \begin{macrocode}
-\def\@endpetrue {\global\let\if at endpe\iftrue}
+\def\@endpetrue {%
+  \global\let\if at endpe\iftrue
+% if called inside a group propagate to the outside   
+   \ifnum\currentgrouplevel>\z@
+      \aftergroup\propagate at doendpe
+   \fi
+}
+%    \end{macrocode}
+%    
+%    If \cs{if at endpe} is still true run \cs{@doendpe}
+%    that in turn runs another \cs{@endpetrue} (besides other things),
+%    thus propagating further, if necessary
+%    However, if the endpe situation got resolved nothing further happens
+%    \begin{macrocode}
+\def\propagate at doendpe{%
+  \if at endpe
+     \@@_debug_typeout:n{run~ (another)~ @doendpe~ at~
+       group~ level~ \the\currentgrouplevel}%
+    \@doendpe
+  \else
+     \@@_debug_typeout:n{do~ not~ run~ (another)~ @doendpe}%
+  \fi
+}
+%    \end{macrocode}
+%    
+%    With the above approach we do not  need the propagation in
+%    \cs{end...} any longer 
+%    (since this is now handled by
+%    \cs{aftergroup}\cs{propagate at doendpe}) so
+%    here a simple \cs{endgroup} is enough. This replaces the
+%    definition in ...:
+%    \begin{macrocode}
+\@namedef{end }#1{%
+  \romannumeral
+    \IfHookEmptyTF{env/#1/end}%
+        {\expandafter\z@}%
+        {\z@\UseHook{env/#1/end}}%
+    \csname end#1\endcsname\@checkend{#1}%
+%    \expandafter\endgroup\if at endpe\@doendpe\fi
+    \endgroup
+    \UseHook{env/#1/after}%
+    \if at ignore\@ignorefalse\ignorespaces\fi
+}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
 \def\@endpefalse{\global\let\if at endpe\iffalse}
 %    \end{macrocode}
 %  \end{macro}
@@ -1569,7 +1614,7 @@
 %    \end{macrocode}
 %    We need to know later if we have nested blockenvs inside
 %    a flattened environment. Whenever we  start a new blockenv we
-%    increment \cs{\l_@@_flattened_level_int} if it is already
+%    increment \cs{l__tag_block_flattened_level_int} if it is already
 %    different from zero. If it is zero we increment it if flattening
 %    is requested.
 %    Thus a value of \texttt{0} means no flattening requested so far
@@ -1578,14 +1623,14 @@
 %    is surrounded by a \texttt{text-unit} tag, while for any value above
 %    \texttt{1} we have to omit the \texttt{text-unit}.
   %    \begin{macrocode}
-  \int_compare:nNnTF \l_@@_flattened_level_int > 0
+  \int_compare:nNnTF \l__tag_block_flattened_level_int > 0
       {
-        \int_incr:N \l_@@_flattened_level_int
+        \int_incr:N \l__tag_block_flattened_level_int
       }
       {
         \bool_if:NT \l__tag_para_flattened_bool
              {
-               \int_incr:N \l_@@_flattened_level_int
+               \int_incr:N \l__tag_block_flattened_level_int
              }
       }
 %
@@ -1681,11 +1726,15 @@
 %  \end{template}
 %
 %
-%  \begin{macro}{\l_@@_flattened_level_int}
+%  \begin{macro}{\l__tag_block_flattened_level_int}
 %    Count the levels of nested blockenvs starting with the first that
-%    is \enquote{flattened}.
+%    is \enquote{flattened}. The counter is defined in lttagging.dtx,
+%    but until the next release 11/24 we set it up here too
 %    \begin{macrocode}
-\int_new:N \l_@@_flattened_level_int
+\int_if_exist:NF \l__tag_block_flattened_level_int
+  {
+    \int_new:N \l__tag_block_flattened_level_int
+  }
 %    \end{macrocode}
 %  \end{macro}
 %
@@ -1814,9 +1863,13 @@
 %    and should not inherit the setting from the outer environment.
 %    \begin{macrocode}
 \socket_new_plug:nnn{tagsupport/block-endpe}{on}
-                    { \legacy_if_gset_true:n  { @endpe } }
+%    \end{macrocode}
+%    We can't use \cs{legacy_if_gset_true:n} because this is now doing
+%    more than setting the legacy switch
+%    \begin{macrocode}
+                    { \@endpetrue }
 \socket_new_plug:nnn{tagsupport/block-endpe}{off}
-                    { \legacy_if_gset_false:n { @endpe } }
+                    { \@endpefalse }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -1981,7 +2034,7 @@
 %    \cs{parskip} and some other housekeeping, unless this block is inside a list and the list
 %    \cs{item} has not yet placed. In that case the vertical
 %    space and penalty us suppressed. This
-%    is controled through the legacy switches \texttt{@noparitem},
+%    is controlled through the legacy switches \texttt{@noparitem},
 %    \texttt{minipage}, and \texttt{@nobreak}.
 %    \begin{macrocode}
     \legacy_if:nTF { @noparitem }
@@ -2520,7 +2573,7 @@
 %
 % \begin{macro}{\item}
 %   Here we already have all the building blocks.  Complain in math
-%   mode.  Distingusih between first item (do necessary tagging) and
+%   mode.  Distinguish between first item (do necessary tagging) and
 %    later items \cs{@@_inter_item:} to
 %   cleanly close what's before, then call \cs{@@_item_instance:n} (which
 %   calls \cs{UseInstance}\{item\}\marg{instance}) to prepare the
@@ -2751,7 +2804,7 @@
   \socket_assign_plug:nn{tagsupport/block-endpe}{on}
 %    \end{macrocode}
 %
-%    Handle the tag name and attribute classess using the key values
+%    Handle the tag name and attribute classes using the key values
 %    from the current list instance.
 %    \begin{macrocode}
   \tl_if_empty:NTF \l_@@_tag_name_tl
@@ -2994,6 +3047,7 @@
   block-instance = verbatimblock ,
   inner-instance = ,
   final-code     = \legacyverbatimsetup ,
+  para-instance  = justify
 }
 %    \end{macrocode}
 %  \end{instance}
@@ -3173,7 +3227,7 @@
 %                   block quoteblock-4,
 %                   block quoteblock-5,
 %                   block quoteblock-6 }
-%    Default layout is to indent equaly from both side.
+%    Default layout is to indent equally from both sides.
 %    \begin{macrocode}
 \DeclareInstance{block}{quoteblock-1}{display}
   { rightmargin = \KeyValue{leftmargin} }
@@ -3468,7 +3522,7 @@
 %    then have to avoid adding another \texttt{text-unit}.
 %    \begin{macrocode}
       {
-        \int_compare:nNnT \l_@@_flattened_level_int < 2
+        \int_compare:nNnT \l__tag_block_flattened_level_int < 2
             {
               \__tag_gincr_para_main_begin_int:
               \tag_struct_begin:n

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,8 +16,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
+\def\ltlabfirstaiddate{2024-08-11}
+\def\ltlabfirstaidversion{0.85e}
 %<*driver>
 \documentclass{l3doc}
 \EnableCrossrefs
@@ -92,7 +92,7 @@
 %  \end{macro}
 
 % \subsection{ams classes}
-% The amsart and amsbook classes do not use \cs{@author} to store the author list
+% The amsart, amsbook and amsproc classes do not use \cs{@author} to store the author list
 % but a command \cs{authors}. To be able to nevertheless use the authors in the
 % xmp-metadata we map \cs{@author} to this new command. 
 % 
@@ -101,6 +101,8 @@
  {\def\@author{\authors}}
 \AddToHook{class/amsbook/after}
  {\def\@author{\authors}}
+\AddToHook{class/amsproc/after}
+ {\def\@author{\authors}}  
 %    \end{macrocode}
 %
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,7 +16,7 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabfloatdate{2024-03-23}
+\def\ltlabfloatdate{2024-07-05}
 \def\ltlabfloatversion{0.81e}
 %<*driver>
 \documentclass{l3doc}
@@ -64,7 +64,7 @@
 % 
 % A special type, called a H-float, (provided by the float package)
 % is always placed in the main text stream and does not
-% necessarly preserve the order with normal floats of the same type: It is basically
+% necessarily preserve the order with normal floats of the same type: It is basically
 % a minipage with a caption.
 % 
 % Floats typically contain a figure (or a table, etc.) and a caption, 

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -17,8 +17,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-07-27}
+\def\ltlabfootnoteversion{0.8e}
 
 %<*driver>
 \documentclass{l3doc}
@@ -636,7 +636,7 @@
 % number to setup the reference and the link.
 %
 % The structure related to the \cs{footref} is added to the end of the \texttt{/Ref} array of the note and so the
-% \texttt{/Ref} array doesn't necessarly reflect the order of the marks in the document. It would probably
+% \texttt{/Ref} array doesn't necessarily reflect the order of the marks in the document. It would probably
 % be possible to change this, but it is not clear if it actually matters and so it worth the additional coding
 % and processing.
 %
@@ -1150,7 +1150,22 @@
 %
 %
 % \begin{macro}{\fnote_footnotetext:n}
+% We temporarily test for the tagging socket until it is in the next release:
 %    \begin{macrocode}
+\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str }
+    {
+      \NewSocket{tagsupport/para/restore}{0}
+      \NewSocketPlug{tagsupport/para/restore}{default}
+        {
+          \tl_set:Nn    \l__tag_para_main_tag_tl {text-unit}
+          \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+          \bool_set_false:N\l__tag_para_flattened_bool
+        }
+      \AssignSocketPlug{tagsupport/para/restore}{default}
+    }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \cs_new_protected:Npn \fnote_footnotetext:n #1 {
   \@@_debug_footnotetext:
 %-------
@@ -1191,6 +1206,7 @@
     \floatingpenalty \@MM
     \hsize\columnwidth
     \@parboxrestore
+    \UseTaggingSocket{para/restore}
     \parindent 1em     % typical default used in \@makefntext moved up here
     \def\@currentcounter{footnote}
     \protected at edef \@currentlabel { \p at footnote \@thefnmark }
@@ -1673,7 +1689,7 @@
 %
 % \subsubsection{\pkg{memoir}}
 % The \pkg{memoir} class redefines various internal commands to inject its
-% hooks and addtional code. The following reinstates the kernel command and
+% hooks and additional code. The following reinstates the kernel command and
 % so probably breaks various options of \pkg{memoir}, but without the
 % changes it errors anyway. The \pkg{footmisc} package should be used to change
 % for example to para footnotes.
@@ -2446,7 +2462,7 @@
 
 % This can use the default interface, except that a negative value for
 % \footnotemargin makes little sense, so we test for this and warn if
-% necessary. But -\maxdimen is ok again, so would need to be a litte bit more elaborate.
+% necessary. But -\maxdimen is ok again, so would need to be a little bit more elaborate.
 %
 
 %\AddToHook{fntext/para}{
@@ -2483,7 +2499,7 @@
         \leavevmode
 %    \end{macrocode}
 %    Typesetting the mark twice means that one can't have any material
-%    inside that gets unhappy in that case. Tha shouldn't be a
+%    inside that gets unhappy in that case. That shouldn't be a
 %    problem, but perhaps we have to come up with a more elaborate
 %    solution in the end.
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -15,7 +15,7 @@
 %    https://github.com/latex3/latex2e/required/latex-lab
 %
 % for those people who are interested or want to report an issue.
-\def\ltlabgraphicdate{2024-03-13}
+\def\ltlabgraphicdate{2024-07-05}
 \def\ltlabgraphicversion{0.80d}
 %
 %<*driver>
@@ -78,7 +78,7 @@
 % The value of a \texttt{BBox} is an array of four numbers that gives the 
 % coordinates of the left, bottom, right, and top edges 
 % of the structure element’s bounding box. That is the rectangle that completely encloses
-% its \emph{visible} content so not necessarly the TeX bounding box: 
+% its \emph{visible} content so not necessarily the TeX bounding box: 
 % if \texttt{viewport} or \texttt{trim} is used and the
 % graphic is not clipped, the visible content can be larger. 
 %  
@@ -146,8 +146,8 @@
 %    \item[\texttt{artifact}] When used the graphic will be tagged as artifact. This doesn't
 %     require a \texttt{BBox} and so works also in some of the not yet supported cases described
 %     above.
-%   \item[\texttt{false}] When used tagging will be stopped completly. It is then the 
-%   responsability of the surrounding code to add appropriate tagging commands.
+%   \item[\texttt{false}] When used tagging will be stopped completely. It is then the 
+%   responsibility of the surrounding code to add appropriate tagging commands.
 %   \item[\meta{name}] Other values will be used as tag names in the structure. If the tag is not
 %   known as a structure tag you will get an warning from tagpdf. The default name is currently
 %   \texttt{Figure}
@@ -291,7 +291,7 @@
 %   ,\l_@@_graphic_trim_uy_fp
 %  }
 % A bunch of fp-variables (we don't use tl-vars, 
-% to avoid to have to take care about minus signs everwhere) 
+% to avoid to have to take care about minus signs everywhere) 
 %    \begin{macrocode}
 \fp_new:N\l_@@_graphic_sin_fp 
 \fp_new:N\l_@@_graphic_cos_fp

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -18,8 +18,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-08-06}
+\def\ltlabmarginparversion{0.85c}
 
 %<*driver>
 \documentclass[kernel]{l3doc}
@@ -72,7 +72,7 @@
 % They can be tagged either as artifacts (if they are merely distracting decoration),
 % as small headings before the paragraph, or as |Aside|. Unlike the PDF 1.7 fallback |Note|
 % the structure |Aside| is not allowed inside |P|,
-% so if |Aside| is used, it must be placed before or after the current |P| in the surounding |text-unit|, 
+% so if |Aside| is used, it must be placed before or after the current |P| in the surrounding |text-unit|, 
 % or it must split the |P|. Splitting is probably not so good as 
 % |\marginpar| is often used somewhere in the middle of sentence. 
 % The best default is probably to use |Aside|, find the parent |text-unit| and add it there. 
@@ -153,13 +153,38 @@
 \socket_new:nn {tagsupport/marginpar/end}{0}
 %    \end{macrocode}
 % \end{socketdecl}
+% 
+% \begin{macro}{\@@_get_marginpar_parent:N,\@@_get_marginpar_parent_aux:nn}
+% In a paragraph we must retrieve 
+% the structure number of the surrounding Part structure
+% TODO: if this is needed in more places this should 
+% go into tagpdf.
+%    \begin{macrocode}
+\cs_new_protected:Npn\@@_get_marginpar_parent_aux:nn #1 #2  
+ { 
+   \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l_@@_tmpa_seq {#2}}
+ }
+\cs_new_protected:Npn \@@_get_marginpar_parent:N #1
+ {
+   \seq_clear:N\l_@@_tmpa_seq
+   \seq_map_pairwise_function:NNN
+     \g_@@_struct_tag_stack_seq
+     \g_@@_struct_stack_seq
+     \@@_get_marginpar_parent_aux:nn
+   \seq_put_right:Nn\l_@@_tmpa_seq {2}
+   \seq_get_left:NN \l_@@_tmpa_seq #1 
+ }
+\cs_generate_variant:Nn \tag_struct_begin:n {e}
+%    \end{macrocode}
+% \end{macro}
 % \begin{plugdecl}{tagsupport/marginpar/begin,tagsupport/marginpar/end}
 %    \begin{macrocode}
 \socket_new_plug:nnn {tagsupport/marginpar/begin}{default}
   {
    \if_mode_horizontal:
-    \tag_mc_end: 
-    \tag_struct_begin:n{tag=Aside,parent=\g__tag_para_main_struct_tl}%
+    \tag_mc_end:
+    \@@_get_marginpar_parent:N \l_@@_tmpa_tl
+    \tag_struct_begin:e{tag=Aside,parent=\l_@@_tmpa_tl}%
    \else: 
     \tag_struct_begin:n{tag=Aside}%
    \fi:

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -19,8 +19,8 @@
 % for those people who are interested or want to report an issue.
 %
 %
-\def\ltlabmathdate{2024-04-16}
-\def\ltlabmathversion{0.5j}
+\def\ltlabmathdate{2024-08-14}
+\def\ltlabmathversion{0.6b}
 %
 %<*driver>
 \documentclass{l3doc}
@@ -247,8 +247,15 @@
 %  It can be suppressed by an option with
 %  \texttt{math/tex/AF=false}, see below. 
 %  
-%  The MathML is attached if a file |\jobname-mathml.html| is found and
-%  if it contains a suitable MathML snippet for the current formula. 
+%  The MathML is attached if the files |\jobname-mathml.html| and/or 
+%  |\jobname-luamml-mathml.html| are found 
+%  and if they contains a suitable MathML snippet for the current formula. 
+%  If the files contain more than one suitable snippet (as identified by the hash)
+%  the first one is used. 
+%  |\jobname-luamml-mathml.html| is automatically generated (see below section~\ref{sec:luamml})
+%  and read after |\jobname-mathml.html|. This means that |\jobname-mathml.html| can contain
+%  improved versions of a formula. 
+%  
 %  The MathML processing can be suppressed globally by emptying the list of
 %  mathml files with |math/mathml/sources=|. Locally for a formula |math/mathml/AF=false|
 %  can be used. 
@@ -306,7 +313,7 @@
 %  
 %  As mentioned above the MathML-AF can be suppressed for the equations in a group with 
 %  |math/mathml/AF=false|, or
-%  completly by setting |math/mathml/sources=| in the preamble. 
+%  completely by setting |math/mathml/sources=| in the preamble. 
 %  
 %  Files embedded in a PDF can be listed in the attachments panel of a PDF viewer.
 %  This is probably not so useful for lots of small files (but one could create
@@ -316,6 +323,23 @@
 %  |viewer/pane/mathsource=true| (anywhere in the document) and |viewer/pane/mathml=false| (in the
 %  preamble, before the external file is read).  
 %  
+%  
+%  \subsection{Automatic mathml creation with luamml}\label{sec:luamml}
+%  
+%  If lualatex is used, if the package \texttt{unicode-math} is used
+%  and if the package \texttt{luamml} is found\footnote{Until it is 
+%  on CTAN and it must be installed from \url{https://github.com/zauguin/luamml}.}
+%  then it will automatically generate the file |\jobname-luamml-mathml.html| with mathml representations
+%  of all math formulas.
+%  The generation of the file can be suppressed with |math/mathml/luamml=false|.
+%  The package is still quite experimental and the output should be checked. 
+%  The |\jobname-luamml-mathml.html| file may be previewed in a browser although 
+%  you may need to add additional css or javascript declarations 
+%  to enable browser support for all mathml constructs.
+%  The file is then used in subsequent compilations and works also with 
+%  pdflatex. 
+%  
+%  
 %  \subsection{Options}
 %      
 %   
@@ -538,6 +562,7 @@
 %    \begin{macrocode}
 \tl_new:N \l_@@_tmpa_tl
 \skip_new:N \l_@@_tmpa_skip
+\str_new:N \l_@@_tmpa_str
 %    \end{macrocode}
 % \end{variable}
 %
@@ -592,7 +617,8 @@
 %   \l__tag_math_mathml_AF_bool,
 %   \g__tag_math_mathml_AF_bool,
 %   \l__tag_math_mathml_pane_bool,
-%   \l__tag_math_alt_bool
+%   \l__tag_math_alt_bool,
+%   \g__tag_math_luamml_bool,
 % }
 %    \begin{macrocode}
 \bool_new:N\l__tag_math_texsource_AF_bool
@@ -601,6 +627,8 @@
 \bool_new:N\g__tag_math_mathml_AF_bool
 \bool_new:N\l__tag_math_mathml_pane_bool
 \bool_new:N\l__tag_math_alt_bool
+\bool_new:N\g__tag_math_luamml_bool
+\bool_gset_true:N \g__tag_math_luamml_bool
 %    \end{macrocode}
 % \end{variable}
 % 
@@ -631,9 +659,11 @@
 %
 % \begin{variable}{\l__tag_math_mathml_files_clist}
 % A sequence to store the file list for the mathml.
+% If luatex is detected with also check the luamml file.
 %    \begin{macrocode}
 \clist_new:N\l__tag_math_mathml_files_clist
-\clist_put_right:Ne\l__tag_math_mathml_files_clist {\c_sys_jobname_str-mathml}
+\clist_put_right:Ne\l__tag_math_mathml_files_clist 
+  {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml}
 %    \end{macrocode}
 % \end{variable}
 
@@ -685,8 +715,148 @@
    \@@_AF_mml:nnnn{#1}{#2}{#3}{#4}
    }
 %    \end{macrocode}
+%
+% As with luatex we write two files we define a few constants for 
+% the shared texts.
+% 
+% \begin{macro}
+%  {\c_@@_mathml_write_init_tl,\l_@@_mathml_write_before_tl,
+%   \c_@@_mathml_write_after_tl,\c_@@_mathml_write_final_tl} 
+%    \begin{macrocode}
+\tl_const:Nn \c_@@_mathml_write_init_tl 
+  {
+    <!DOCTYPE~html>
+    \iow_newline:
+    <html>
+    \iow_newline:
+  }
+\tl_new:N \l_@@_mathml_write_before_tl  
+\tl_const:Nn \c_@@_mathml_write_after_tl 
+  {
+    \iow_newline:
+    </div>
+    \iow_newline:
+  }  
+\tl_const:Nn \c_@@_mathml_write_final_tl 
+  {
+    </html>
+  }  
+%    \end{macrocode}
+% \end{macro}
 
+% \begin{socketdecl}{tagsupport/math/mathml/write/prepare}
+% To prepare the hash and the starting command we use a socket, so 
+% that both the dummy and luamml can make use of it.
+%    \begin{macrocode}
+\socket_new:nn {tagsupport/math/mathml/write/prepare}{0}
+%    \end{macrocode}
+% \end{socketdecl}
 %
+% \begin{plugdecl}{On}
+%    \begin{macrocode}
+\socket_new_plug:nnn{tagsupport/math/mathml/write/prepare}{On}
+  {
+    \str_set:NV\l_@@_tmpa_str\l_@@_content_AF_source_tl
+    \str_replace_all:Nnn\l_@@_tmpa_str{&}{&}
+    \str_replace_all:Nnn\l_@@_tmpa_str{<}{<}
+    \tl_set:Nn \l_@@_mathml_write_before_tl 
+      {
+        <div>
+        \iow_newline:
+        <h2>\c_backslash_str mml\c_space_tl \int_use:N \g_@@_math_total_int </h2>
+        \iow_newline:
+        <p>\l_@@_tmpa_str</p>
+        \iow_newline:
+        <p>\l_@@_content_hash_tl </p>
+        \iow_newline:
+      }   
+  }
+%    \end{macrocode}
+% \end{plugdecl}
+%
+% With luatex we automatically generate mathml with luamml if the package
+% can be loaded and unicode-math is detected. 
+% We start the process in the begindocument/end hook
+% so that the reading from a previous compilation can happen before!
+%    \begin{macrocode}
+\sys_if_engine_luatex:T
+ {
+   \file_if_exist:nT { luamml.sty }
+     {
+       \RequirePackage  { luamml }
+       \AddToHook{begindocument/end}
+         { 
+           \bool_if:NT \g__tag_math_luamml_bool 
+             { 
+               \@ifpackageloaded { unicode-math }
+                 { \@@_luamml_activate_write: }
+                 { \msg_warning:nn { tag }{ unicode-math-missing } }               
+             } 
+         }
+     }
+ }
+\msg_new:nnn { tag }{ unicode-math-missing } 
+  {
+    The~package~unicode-math~is~missing\\
+    luamml~will~not~create~an~MathML~file.\\
+    To~avoid~this~warning~load~unicode-math~or~disable~luamml\\
+    with~\tl_to_str:n{\tagpdfsetup{math/mathml/luamml=false}}
+  } 
+\cs_new_protected:Npn \@@_luamml_activate_write:
+ {
+%    \end{macrocode}
+% to avoid that nothing is written in the first run, we must activate the sockets:
+%    \begin{macrocode}
+   \bool_gset_true:N\g__tag_math_mathml_AF_bool
+   \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
+   \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
+   \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
+   \AssignSocketPlug{tagsupport/math/substruct/end}{single} 
+   \int_set:Nn \l__luamml_pretty_int { 5 }
+   \RegisterFamilyMapping\symsymbols{oms}
+   \RegisterFamilyMapping\symletters{oml}
+   \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
+   \iow_new:N   \g_@@_luamml_iow
+   \iow_open:Nn \g_@@_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
+   \iow_now:Ne  \g_@@_luamml_iow { \c_@@_mathml_write_init_tl  }
+   \cs_new:Npn  \@@_luamml_output_hook:n  ##1 
+     {
+       \tl_if_empty:NF \l_@@_mathml_write_before_tl 
+         {                  
+          \iow_now:Ne \g_@@_luamml_iow 
+           {
+             \l_@@_mathml_write_before_tl            
+             ##1
+             \c_@@_mathml_write_after_tl 
+           }        
+         } 
+     }
+   \__luamml_register_output_hook:N \@@_luamml_output_hook:n
+%    \end{macrocode}
+% this starts the process and set flag to 3, 
+% not really needed, as it is the default but set here for clarity:
+%    \begin{macrocode}
+   \luamml_flag_process:
+%    \end{macrocode}
+% At the end of the document we must finish and close the file:
+%    \begin{macrocode}
+   \AddToHook{enddocument/afterlastpage}
+     {
+       \iow_now:Ne \g_@@_luamml_iow 
+         { \c_@@_mathml_write_final_tl }
+       \iow_close:N \g_@@_luamml_iow 
+     }                  
+ } 
+%    \end{macrocode}
+%  And now a key to deactivate luamml
+%    \begin{macrocode}
+
+\keys_define:nn { __tag / setup }
+   {
+     math/mathml/luamml .bool_gset:N = \g__tag_math_luamml_bool,
+     math/mathml/luamml .usage:n=preamble 
+   }
+%    \end{macrocode}
 % \begin{socketdecl}{tagsupport/math/mathml/write}
 % This writes a html-dummy with the hash and the math content.
 % This should be optional, so it uses a socket that can be disabled
@@ -700,24 +870,11 @@
 %    \begin{macrocode}
 \socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
  {
-    \str_set:NV\l_@@_tmpa_str\l_@@_content_AF_source_tl
-    \str_replace_all:Nnn\l_@@_tmpa_str{&}{&}
-    \str_replace_all:Nnn\l_@@_tmpa_str{<}{<}
     \iow_now:Ne \g_@@_writedummy_iow 
      {
-      \iow_newline:
-      <div>
-      \iow_newline:
-      <h2>\c_backslash_str mml\c_space_tl \int_use:N \g_@@_math_total_int </h2>
-      \iow_newline:
-      <p>\l_@@_tmpa_str</p>
-      \iow_newline:
-      <p>\l_@@_content_hash_tl </p>
-      \iow_newline:
+      \l_@@_mathml_write_before_tl
       <math></math>
-      \iow_newline:
-      </div>
-      \iow_newline:
+      \c_@@_mathml_write_after_tl
       }
  }
 %    \end{macrocode}
@@ -739,14 +896,14 @@
              }
             \iow_now:Ne \g_@@_writedummy_iow
              {
-               <!DOCTYPE~html>
-               \iow_newline:
-               <html>
+               \c_@@_mathml_write_init_tl
              }
+            \AssignSocketPlug {tagsupport/math/mathml/write/prepare}{On} 
             \AssignSocketPlug {tagsupport/math/mathml/write}{On}
             \AddToHook{enddocument/afterlastpage}
              {
-               \iow_now:Nn \g_@@_writedummy_iow {</html>}
+               \iow_now:Ne \g_@@_writedummy_iow 
+                 { \c_@@_mathml_write_final_tl }
                \iow_close:N \g_@@_writedummy_iow
              }
           }  
@@ -900,7 +1057,7 @@
 %    \end{macrocode}
 % \end{plugdecl}
 % 
-% We probably will want to test different tagging receipes.
+% We probably will want to test different tagging recipes.
 % \begin{plugdecl}{default}
 %    \begin{macrocode}
 \socket_new_plug:nnn
@@ -1184,6 +1341,7 @@
     {
       \typeout{WARNING:~mathml~missing~for~hash~\l_@@_content_hash_tl}
     }    
+   \socket_use:n {tagsupport/math/mathml/write/prepare} 
    \socket_use:n {tagsupport/math/mathml/write} % write hash if request  
     \bool_if:NTF\l__tag_math_texsource_AF_bool  
      { \tl_set_eq:NN \l_@@_content_AF_source_tmpa_tl \l_@@_content_AF_source_tl }
@@ -1349,25 +1507,24 @@
 % \subsection{Content grabbing}
 %
 % \begin{macro}{\@@_grab_dollar:w}
-%   Grab up to a single |$|, for inline math mode, suppressing
-%   any processing if the token is \tn{m at th} found in the content.
-%
-%    \fmi{what's that test doing?}
-%
-%    \car{It is some kind of fix, to avoid the remote
-%      possibility that the math is empty, making the code
-%      produce an unwanted \texttt{\$\$}.}
-%
-%\car{cf.~the code for this in \cs{@ensuredmath}}
-%
-%\car{It is harmless but unnecessary in the dollardollar grabbing below.}
-%
+% \begin{macro}{\@@_grab_dollar:n}
+%   Top-level function to handle grabbing of inline math mode delimited by
+%   |$| tokens. We provide two different ways to do that: a token-by-token
+%   one that can be used everywhere, and a fast delimited one that does not
+%   work anywhere that the end |$| token may be hidden, most obviously in
+%   tabulars. The function here is therefore set up as a variable starting
+%   point.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_grab_dollar:w % $
-  #1 $
+\cs_new_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_delim:w }
+%    \end{macrocode}
+%   After grabbing inline math material, there is again common processing
+%   independent of mechanism of collection.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_dollar:n #1
   {
 %    \end{macrocode}
-%    \fmi{what's that test doing?}
+%   To avoid further work with entirely empty math segments, we test before
+%   doing anything more.
 %    \begin{macrocode}
     \tl_if_blank:nF {#1}
       {
@@ -1391,6 +1548,16 @@
   }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_dollar_delim:w}
+%   Grab up to a single |$|, for inline math mode, suppressing
+%   any processing if the token is \tn{m at th} found in the content.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_dollar_delim:w #1 $ % $
+  { \@@_grab_dollar:n {#1} }
+%    \end{macrocode}
+% \end{macro}
 % 
 % \begin{macro}{\@@_grab_dollardollar:w}
 %   And for the classical \TeX{} display structure.
@@ -1463,6 +1630,170 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Token-by-token inline grabbing}
+%
+% Grabbing inline math token-by-token is more involved. The mechanism here
+% is essentially a simplified version of that originally seen in
+% \pkg{collcell} and refined in \pkg{siunitx}. We make use of the fact that
+% in math mode spaces are ignored, so we have to deal with only \texttt{N}-type
+% tokens and groups. Furthermore, there is no need to look inside groups, so
+% the only special cases are a small selection of \texttt{N}-type tokens.
+%
+% \begin{variable}{\l_@@_grabbed_tl}
+%   For collection of the material piecewise.
+%    \begin{macrocode}
+\tl_new:N \l_@@_grabbed_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_grab_env_int}
+%   Needed to count up the number of nested environments encountered.
+%    \begin{macrocode}
+\int_new:N \l_@@_grab_env_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_grab_dollar_loop:}
+% \begin{macro}{\@@_grab_loop:}
+%   The lead-off here establishes a group: we need that as we will have to
+%   be careful in the way \tn{cr} is handled and ensure this is only
+%   manipulated whilst grabbing. The main loop is then started.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_dollar_loop:
+  {
+    \group_begin:
+      \tl_clear:N \l_@@_grabbed_tl
+      \@@_grab_loop:
+  }
+\cs_new_protected:Npn \@@_grab_loop:
+  {
+    \peek_remove_spaces:n
+      {
+        \peek_meaning:NTF \c_group_begin_token
+          { \@@_grab_loop_group:n }
+          { \@@_grab_loop_token:N }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_loop_group:n}
+% \begin{macro}{\@@_grab_loop_store:n}
+%   Handling of grabbed groups is pretty easy.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_loop_group:n #1
+  { \@@_grab_loop_store:n { {#1} } }
+\cs_new_protected:Npn \@@_grab_loop_store:n #1
+  {
+    \tl_put_right:Nn \l_@@_grabbed_tl {#1}
+    \@@_grab_loop:
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_loop_token:N}
+% \begin{macro}
+%   {
+%      \@@_grab_loop_$:              ,
+%      \@@_grab_loop_\\:             ,
+%      \@@_grab_loop_\begin:         ,
+%      \@@_grab_loop_\begin :        ,
+%      \@@_grab_loop_\end:           ,
+%      \@@_grab_loop_\ignorespaces:  ,
+%      \@@_grab_loop_\unskip:        ,
+%      \@@_grab_loop_\textonly at unskip:
+%   }
+%   Filter out the special cases: for performance reasons, use a hash table
+%   approach rather than a loop (\emph{cf.}~\pkg{collcell}). The need to cover
+%   \verb*|begin | is that at the start of a cell, \TeX{} will expand \cs{begin}
+%   but the \LaTeX{} robust mechanism will mean this yields \verb*|begin |.
+%   If\cs{begin} were protected, that would not be needed.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_loop_token:N #1
+  {
+    \cs_if_exist_use:cF
+      { @@_grab_loop_ \token_to_str:N #1 : }
+      { \@@_grab_loop_store:n {#1} }
+  }
+\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N $ : }
+  { \@@_grab_loop_end: }
+\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \\ : }
+  {
+    \int_compare:nNnTF \l_@@_grab_env_int = 0
+       { \@@_grab_loop_newline: }
+       { \@@_grab_loop_store:n { \\ } }
+  }
+%    \end{macrocode}
+%   In contrast to \pkg{collcell}, nesting is tracked by counting
+%   \cs{begin}/\cs{end} pairs: this is needed in case there is a tabular-like
+%   construct containing |\\| inside a cell. As a result, the end-of-tabular
+%   can be detected without checking the name argument: if \cs{end} is
+%   encountered at nesting level~0, we've hit the end of a cell. In that case,
+%   end the row and leave the environment to clean up.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \begin : }
+  {
+    \int_incr:N \l_@@_grab_env_int
+    \@@_grab_loop_store:n { \begin }
+  }
+\cs_new_eq:cc { @@_grab_loop_ \token_to_str:N \begin \c_space_tl : }
+  { @@_grab_loop_ \token_to_str:N \begin : }
+\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \end : }
+  {
+    \int_compare:nNnTF \l_@@_grab_env_int = 0
+       {
+         \@@_grab_loop_newline:
+         \end
+       }
+       {
+         \int_decr:N \l_@@_grab_env_int
+         \@@_grab_loop_store:n { \end }
+       }
+  }
+\tl_map_inline:nn { \ignorespaces \unskip \textonly at unskip }
+  {
+    \cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N #1 : }
+      { \@@_grab_loop: }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_loop_newline:}
+%   To allow collection of tokens in the part of the \tn{halign} template after
+%   |#|, we need \TeX{} to see the primitive with the loop token in the right
+%   place. That is done by re-defining \tn{cr} at present. Ideally there would
+%   be a socket in the definition of \texttt{tabular}, etc., to handle this:
+%   there is also the need to examine in interaction with \pkg{longtable}, which
+%   also redefines \tn{cr}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_loop_newline:
+  {
+    \if_false: { \fi:
+    \cs_set_protected:Npn \cr
+      {
+        \@@_grab_loop:
+        \tex_cr:D
+      }
+    \if_false: } \fi:
+    \\
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_loop_end:}
+%   Clean up and pass on.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_loop_end:
+  {
+    \exp_args:NNV \group_end:
+    \@@_grab_dollar:n \l_@@_grabbed_tl
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Marking math environments}
 %
 % A general mechanism for math mode environments that do not grab their
@@ -1861,6 +2192,10 @@
    \bool_set_false:N \l_@@_collected_bool
    \col at sep\tabcolsep \let\d at llarbegin\begingroup
                                     \let\d at llarend\endgroup
+%    \end{macrocode}
+%   A proper switching mechanism is needed: for the present, do directly.
+%    \begin{macrocode}
+   \cs_set_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_loop: }
    \@tabarray}
  }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -23,7 +23,7 @@
 \EnableCrossrefs
 \CodelineIndex
 \begin{document}
-  \DocInput{latex-lab-amsmath.dtx}
+  \DocInput{latex-lab-mathtools.dtx}
 \end{document}
 %</driver>
 %
@@ -66,7 +66,7 @@
 % \subsection{File declaration}
 %    \begin{macrocode}
 \ProvidesFile{latex-lab-mathtools.ltx}
-        [2023-01-05 v0.1a mathtools adaptions]
+        [2024-07-13 v0.1a mathtools adaptions]
 %    \end{macrocode}
 % \subsection{Tagpdf support}
 % To make the code independent from tagging being loaded and active

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -18,8 +18,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-08-08}
+\def\ltlabminipageversion{0.81d}
 %<*driver>
 \documentclass{l3doc}
 \EnableCrossrefs
@@ -120,12 +120,18 @@
 %    \end{macrocode}
 % insert the socket
 %    \begin{macrocode}
-  \socket_use:n{tagsupport/minipage/before}% new
+  \UseTaggingSocket{minipage/before}% new
   \setbox\@tempboxa\vbox\bgroup
     \color at begingroup
       \hsize\@tempdima
       \textwidth\hsize \columnwidth\hsize
       \@parboxrestore
+%    \end{macrocode}
+% minipages are perhaps used in environments where the tagging of paragraphs
+% has been altered. So we try to restore this. TODO: this should
+% perhaps be done in \cs{@parboxrestore} directly. 
+%    \begin{macrocode}
+      \UseTaggingSocket{para/restore}
       \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c at mpfootnote\z@
       \socket_assign_plug:nn{fntext/process}{mp}%
       \let\@listdepth\@mplistdepth \@mplistdepth\z@
@@ -153,7 +159,7 @@
   \tag_stop:n{minipage}
   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
   \tag_start:n{minipage}
-  \socket_use:n{tagsupport/minipage/after} %new end ...
+  \UseTaggingSocket{minipage/after} %new end ...
   }
 %    \end{macrocode}
 %
@@ -164,8 +170,15 @@
   \leavevmode
   \@pboxswfalse
   \setlength\@tempdima{#4}%
-  \socket_use:n{tagsupport/parbox/before}
-  \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+  \UseTaggingSocket{parbox/before}
+  \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore
+%    \end{macrocode}
+% parbox are perhaps used in environments where the tagging of paragraphs
+% has been altered. So we try to restore this. TODO: this should
+% perhaps be done in \cs{@parboxrestore} directly. 
+%    \begin{macrocode}  
+  \UseTaggingSocket{para/restore}
+  #5\@@par}%
     \ifx\relax#2\else
       \setlength\@tempdimb{#2}%
       \edef\@parboxto{to\the\@tempdimb}%
@@ -179,7 +192,7 @@
        \csname bm@#3\endcsname}%
     \if at pboxsw \m at th$\fi
   \@end at tempboxa%
-  \socket_use:n{tagsupport/parbox/after}
+  \UseTaggingSocket{parbox/after}
   }
 %    \end{macrocode}
 %
@@ -191,9 +204,11 @@
 \socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt}
   {
 %    \end{macrocode}
-% As there was a \cs{leavevmode} before that is a P/text open that we have to close.
+% As there was a \cs{leavevmode} before that is a P/text open that we have to close
+% if para tagging is active:
 %    \begin{macrocode}
-    \tag_mc_end_push:\tag_struct_end:
+    \tag_mc_end_push:
+    \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
 %    \end{macrocode}
 % TODO: the P can be further up, we need a proper method to test and handle this. 
 %    \begin{macrocode}   
@@ -203,13 +218,25 @@
 % similar for the other sockets:
 %    \begin{macrocode}
 \socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt}
-  {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+  {
+   \tag_struct_end:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+   \tag_mc_begin_pop:n{}
+  }
   
 \socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt}
-  {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
+  {
+   \tag_mc_end_push:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
+   \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
+  }
   
 \socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt}
-  {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+  {
+   \tag_struct_end:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+   \tag_mc_begin_pop:n{}
+   }
 %    \end{macrocode}
 % Activate the default tagging plug
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -26,7 +26,7 @@
 % \fi
 % \title{Prototype reimplementation of \LaTeXe{}'s role mapping}
 % \author{\LaTeX{} Project, initial implementation Ulrike Fischer}
-% \date{v0.8b 2024-03-24}
+% \date{v0.8b 2024-07-05}
 %
 % \maketitle
 %
@@ -37,7 +37,7 @@
 % \section{Introduction}
 %
 % This short file collects tag names from the \LaTeX{} namespace and their role mapping used
-% in the latex-lab files. The names and the roles are not necessarly the final ones!
+% in the latex-lab files. The names and the roles are not necessarily the final ones!
 % 
 % Later settings of the same tag overwrite previous settings.
 % The syntax of a line is a list of three strings ending with commas:

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,7 +16,7 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecdate{2024-07-05}
 \def\ltlabsecversion{0.84c}
 %<*driver>
 \documentclass[kernel]{l3doc}
@@ -121,7 +121,7 @@
 %  commands must be at the right grouping level.
 %  \end{itemize}
 %  
-%  \subsection{Funktions and keys}
+%  \subsection{Functions and keys}
 %
 % \begin{function}{\tag_tool:n,\tagtool}
 % 
@@ -138,7 +138,7 @@
 %     to allow e.g. to put an epigraph or similar in front.
 %     
 %  \item The number in \cs{part} and  \cs{chapter} is currently not correctly 
-%  tagged as a \texttt{Lbl} as this requires to redefine the internal (class dependant)
+%  tagged as a \texttt{Lbl} as this requires to redefine the internal (class dependent)
 %  commands too.
 %     
 %  \end{itemize}
@@ -376,7 +376,7 @@
          \tag_struct_begin:n{tag=part,title=#1}
 %    \end{macrocode}
 % We remap here the text-unit from the paragraph to NonStruct.
-% It would be better to suppress it completly as with the other
+% It would be better to suppress it completely as with the other
 % sectioning commands, but this would require to redefine \cs{@spart}
 % and \cs{@part}, as there is the grouping, and these commands are
 % all slightly different in the standard classes. So this is delayed 

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,8 +16,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-08-10}
+\def\ltlabtblversion{0.85m}
 %<*driver>
 \documentclass{l3doc}
 \EnableCrossrefs
@@ -100,6 +100,7 @@
 % support for the tagging of tables. A list of the known limitations
 % is shown below.
 %
+% \subsection{Loading}
 % The module is not loaded automatically (i.e., not yet integrated
 % into any \texttt{phase-XX})  and by itself it doesn't activate
 % tagging. For experimenting with table tagging it is therefore best
@@ -113,7 +114,26 @@
 % It will then automatically tag all table environments it already supports with
 % the exception of tables in the header and footer of the page (where tagging is disabled).
 % Such tables can be nested. 
+% 
+% Inside cells the automatic tagging of paragraphs is disabled with the exception of
+% p/m/b-type cells. 
 %
+% Rows do not need to contain a full number of \&, missing cells are automatically
+% added with an empty TD-structure.
+% 
+% You should not insert meaningful text with \verb+!{...}+ or \verb+@{...}+ or \cs{noalign}
+% between the rows or columns of the table.
+% With pdflatex such text will be unmarked, with lualatex it will be marked as artifact.
+% Either case means that it will be currently ignored in the
+% structure.\footnote{While it is theoretically possible
+% to collect such text and move it into a structure it would require manual markup
+% from the author to clarify where this text belongs too.}
+% 
+% As mentioned below the \pkg{colortbl} doesn't work fully with the tagging,
+% but when it does, colors inside the table are currently ignored. If such a color
+% has a semantic meaning (like \enquote{important value}) this meaning will be lost.
+%
+% \subsection{Untagged and presentation tables}
 % If a table should not be tagged as table, for example because it is merely used
 % as a layout to ensure that the content is properly aligned
 % or because it is a not yet (fully) supported table structure, 
@@ -130,42 +150,44 @@
 % The key should currently only be used in a group as there is no key (yet) to reset to the default 
 % tag names.
 %
-% Inside cells the automatic tagging of paragraphs is disabled with the exception of
-% p/m/b-type cells. 
-%
-% Rows do not need to contain a full number of \&, missing cells are automatically
-% added with an empty TD-structure.
-%
+% \subsection{Header rows and columns}
 % There is some basic support\footnote{This is not meant to be the
 % final interface, though.} for headers. With\footnote{The old key name \texttt{table-header-rows} still
 % works but is deprecated.}
 % \begin{quote}
 %   \verb|\tagpdfsetup{table/header-rows={|\meta{list of row numbers}\verb|}|
+%   \verb|\tagpdfsetup{table/header-columns={|\meta{list of column numbers}\verb|}|
 % \end{quote}
 % you can
-% declare which (absolute) row numbers should be tagged as header rows.
-% It applies to all tables until it is changed to a different list of row numbers or undone by setting
-% the key to \meta{empty}.
-% A row number can be
-% negative, then the counting starts from the end of the table. There is no support
-% for header columns yet. In a \env{longtable} the code will currently use the \cs{endhead} or
+% declare which (absolute) row and column numbers should be tagged as header rows and header columns.
+% It applies to all tables until it is changed to a different list of row or
+% columns numbers or undone by setting
+% the keys to \meta{empty}.
+% A row or column number can be
+% negative, then the counting starts from the end of the table. 
+% In a \env{longtable} the code will currently use the \cs{endhead} or
 % \cs{endfirsthead} rows as header if one of these commands has been
 % used and in that case the code
 % ignores a \texttt{table/header-rows} setting.
 %
-% You should not insert meaningful text with \verb+!{...}+ or \verb+@{...}+ or \cs{noalign}
-% between the rows or columns of the table.
-% With pdflatex such text will be unmarked, with lualatex it will be marked as artifact.
-% Either case means that it will be currently ignored in the
-% structure.\footnote{While it is theoretically possible
-% to collect such text and move it into a structure it would require manual markup
-% from the author to clarify where this text belongs too.}
+% \subsection{Spanning of cells}
 % 
-% As mentioned below the \pkg{colortbl} doesn't yet work properly with the tagging,
-% but once it does, then colors inside the table will probably be
-% simply ignored (at least initially). If such a color
-% has a semantic meaning (like \enquote{important value}) this meaning will be lost.
+% \cs{multicolumn} is supported out of the box and will create a structure with a 
+% suitable \texttt{ColSpan} attribute\footnote{The code uses actually an attribute \emph{class}. 
+% The validator PAC doesn't handle this correctly currently and complains about a missing attribute.}
 % 
+% For cells spanning rows some preliminary support exists\footnote{The interface is bound to change!}:
+% If you add 
+% \begin{quote}
+%   \verb|\tagpdfsetup{table/multirow={|\meta{number of rows}\verb|}|
+% \end{quote} 
+% to a cell the code will add the suitable \texttt{RowSpan} attribute and suppress the tagging of affected
+% cells in the following rows. This will also work if the current cell is a \cs{multicolumn}, then
+% the cell will span both rows and columns. It is the duty of the author to
+% ensure that all cells below and covered by a \texttt{RowSpan} are empty! 
+% The code neither checks that nor does
+% it tries to suppress content.  
+% 
 % Feedback and problems with the code can be reported at
 % \url{https://github.com/latex3/tagging-project} either in form of
 % explicit issues or as a \enquote{discussion topic}, whatever works best.
@@ -183,10 +205,9 @@
 % \item the \env{array} environment is assumed to be part of math and tagging as a table is disabled for
 % it.
 %
-% \item Row spans are not yet supported (and the \pkg{multirow} package is untested).
+% \item Row spans can only be added manually (the \pkg{multirow} package is untested).
 %
-% \item The \pkg{colortbl} package breaks tagging if there are nested tables. It also breaks
-% the filling up of incomplete rows.
+% \item The \pkg{colortbl} package breaks tagging if there are nested tables. 
 % 
 % \item The \pkg{tabularray} package use a completed different
 % method to create tables and will not be supported by this code.
@@ -193,9 +214,10 @@
 % 
 % \item The \pkg{nicematrix} package is currently incompatible. 
 % 
-% \item Most other packages related to tables in \LaTeX{} are not yet tested,
+% \item Most other packages related to tables in \LaTeX{} are not fully tested,
 % that includes packages that change rules like \pkg{booktabs}, \pkg{hhline},
-% \pkg{arydshln}, \pkg{hvdashln}.
+% \pkg{arydshln}, \pkg{hvdashln}. Some problems have been resolved, either
+% in the packages or through a firstaid which can be loaded the \verb+testphase=firstaid+.
 %
 % \item \env{longtable} currently only works with lualatex.
 %  With other engines it breaks as its output
@@ -208,9 +230,9 @@
 % the tagging of the table must be deactivated with \verb|\tagpdfsetup{table/tagging=false}|
 % or \verb|\tagpdfsetup{table/tagging=presentation}|.
 %
-% \item Only simple header rows are currently supported. Columns and complex headers with
+% \item Only simple header rows and columns are currently supported. Complex headers with
 % subheaders will be handled later as that needs some syntax changes. Tables
-% with more than one header row are probably not pdf/UA as the headers array in
+% with more than one header row or column are probably not pdf/UA as the headers array in
 % the cells is missing.
 %
 % \item A \pkg{longtable} \cs{caption} is currently simply formatted as a multicolumn and
@@ -259,9 +281,6 @@
 %
 %  \item Longtable captions should be properly supported.
 %
-%  \item Handle p-cells better. para-tagging should probably be enabled,
-%  but Part can't be a child of TD, so this should probably be changed to Div here.
-%  Also there is a stray MC somewhere.
 %
 %  \item More packages must be tested.
 %  \end{itemize}
@@ -292,8 +311,8 @@
 %   ,\l_@@_cellattribute_tl
 %   ,\l_@@_rowattribute_tl
 %   ,\l_@@_tmpa_clist
-%   ,\l_@@_tmpa_seq
 %   ,\l_@@_tmpa_tl
+%   ,\l_@@_tmpa_str
 %  }
 %    This is for the celltag, e.g. TD or TH:
 %    \begin{macrocode}
@@ -319,10 +338,16 @@
 \tl_new:N  \l_@@_rowattribute_tl
 \tl_set:Nn \l_@@_rowattribute_tl {}
 %    \end{macrocode}
+% Variable to store cell info like which cell must be skipped when tagging multirows.
+%    \begin{macrocode}
+\prop_new:N\g_@@_untagged_cells_prop
+\prop_new:N\l_@@_saved_untagged_cells_prop
+%    \end{macrocode}
 % Temp variables
 %    \begin{macrocode}
 \clist_new:N \l_@@_tmpa_clist
 \tl_new:N \l_@@_tmpa_tl
+\str_new:N \l_@@_tmpa_str
 %    \end{macrocode}
 % \end{macro}
 %
@@ -330,7 +355,41 @@
 %
 %
 % This are the standard plugs for tagging of cells and rows.
-%
+% 
+% The following two sockets are defined in lttagging, but we check 
+% for their existence until the release 11/2024.
+%    \begin{macrocode}
+\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str }
+ {
+   \NewSocket{tagsupport/tbl/init/celldata}{0}
+   \NewSocket{tagsupport/tbl/restore/celldata}{0}
+ }
+%    \end{macrocode}
+% \begin{plugdecl}{default}
+% This socket is used inside \cs{tbl_init_cell_data_for_table} for the
+% case that this a nested table in a cell.
+%    \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/init/celldata}{default}
+  {
+    \prop_set_eq:NN\l_@@_saved_untagged_cells_prop \g_@@_untagged_cells_prop
+    \prop_gclear:N \g_@@_untagged_cells_prop
+  }
+\AssignSocketPlug{tagsupport/tbl/init/celldata}{default}  
+%    \end{macrocode}
+% \end{plugdecl}
+
+% \begin{plugdecl}{default}
+% This socket is used inside \cs{tbl_restore_outer_cell_data:} and restores
+% values when a nested table is ended.
+%    \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/restore/celldata}{default}
+  {
+    \prop_gset_eq:NN\g_@@_untagged_cells_prop \l_@@_saved_untagged_cells_prop
+  }
+\AssignSocketPlug{tagsupport/tbl/restore/celldata}{default}  
+%    \end{macrocode}
+% \end{plugdecl}
+% 
 % \begin{plugdecl}{TD}
 %    \begin{macrocode}
 \NewSocketPlug{tagsupport/tbl/cell/begin}{TD}
@@ -340,21 +399,44 @@
 %    always even if the noop plug is in force this needs a different solution.
 %    \begin{macrocode}
     \@@_show_curr_cell_data:
-    \tag_struct_begin:n
+%    \end{macrocode}
+% We test if the cell should be tagged at all.
+%    \begin{macrocode}
+    \@@_if_tag_cell:nnT {\g_@@_row_int } { \g_@@_col_int }
       {
-        tag             =\l_@@_celltag_tl,
-        attribute-class =\l_@@_cellattribute_tl
-      }
-    \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} }
 %    \end{macrocode}
+% this sets row headers
+%    \begin{macrocode}
+        \clist_if_in:NVT \l_@@_header_columns_clist\g_@@_col_int
+          { 
+            \tl_set:Nn \l_@@_celltag_tl {TH} 
+            \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row}
+          }
+%    \end{macrocode}
+% Here we handle negative value for row headers:
+%    \begin{macrocode}
+        \tl_set:Ne \l_@@_tmpa_tl {\int_eval:n { \g_@@_col_int - 1 - \g_@@_table_cols_tl }} 
+        \clist_if_in:NoT \l_@@_header_columns_clist { \l_@@_tmpa_tl }
+          { 
+            \tl_set:Nn \l_@@_celltag_tl {TH} 
+            \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row}
+          }        
+        \tag_struct_begin:n
+          {
+            tag             =\l_@@_celltag_tl,
+            attribute-class ={\l_@@_cellattribute_tl}
+          }
+        \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} }
+%    \end{macrocode}
 %   we store the cells of multicolumns as negative number. This allow to skip them
 %   or to use them as needed.
 %    \begin{macrocode}
-    \int_step_inline:nn { \g_@@_span_tl - 1 }
-      {
-        \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} }
-      }
-    \tag_mc_begin:n{}
+        \int_step_inline:nn { \g_@@_span_tl - 1 }
+          {
+            \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} }
+          }
+        \tag_mc_begin:n{}
+      }  
   }
 %    \end{macrocode}
 % \end{plugdecl}
@@ -363,8 +445,11 @@
 %    \begin{macrocode}
 \NewSocketPlug{tagsupport/tbl/cell/end}{TD}
   {
-    \tag_mc_end:
-    \tag_struct_end:
+    \@@_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+      {
+        \tag_mc_end:
+        \tag_struct_end:
+      }        
   }
 %    \end{macrocode}
 % \end{plugdecl}
@@ -376,18 +461,26 @@
 \NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
   {
     \@@_show_curr_cell_data:
-    \tag_struct_begin:n
+    \@@_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
       {
-        tag             =\l__tbl_pcelltag_tl,
-        attribute-class =\l__tbl_cellattribute_tl
-      }
-    \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
-    \int_step_inline:nn { \g__tbl_span_tl - 1 }
-      {
-        \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
-      }
-    \tagpdfparaOn
-    \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+        \clist_if_in:NVT \l_@@_header_columns_clist\g_@@_col_int
+          { 
+            \tl_set:Nn \l_@@_celltag_tl {TH} 
+            \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row}
+          }        
+        \tag_struct_begin:n
+          {
+            tag             =\l_@@_pcelltag_tl,
+            attribute-class ={\l_@@_cellattribute_tl}
+          }
+        \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} }
+        \int_step_inline:nn { \g_@@_span_tl - 1 }
+          {
+            \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} }
+          }
+        \tagpdfparaOn
+        \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+     }
   }
 %    \end{macrocode}
 % \end{plugdecl}
@@ -396,7 +489,12 @@
 %    \begin{macrocode}
 \NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
   {
-    \tag_struct_end:
+    \@@_if_tag_cell:nnT {\g_@@_row_int } { \g_@@_col_int }
+      { 
+        \tag_struct_end: 
+        \legacy_if:nT {@endpe}{\par}
+        \mode_if_vertical:T{ \tagpdfparaOff }  
+      }
   }  
 %    \end{macrocode}
 % \end{plugdecl}
@@ -432,7 +530,7 @@
       {
         \@@_trace:n
           {==>~
-            stucture~stored~for~row~\int_use:N\g_@@_row_int :~
+            structure~stored~for~row~\int_use:N\g_@@_row_int :~
             \seq_use:Nn \g_@@_struct_cur_seq {,}
           }
       }
@@ -447,21 +545,49 @@
 % normal tables which can also be used inline and nested and
 % \enquote{vmode} tables like longtable.
 %
+%  \begin{macro}{\l__tag_block_flattened_level_int}
+%   Count the levels of nested blockenvs starting with the first that
+%   is \enquote{flattened}. The counter is defined in lttagging.dtx,
+%   but until the next release 11/24 we set it up here too so that we can 
+%   use it in the following socket
+%    \begin{macrocode}
+\int_if_exist:NF \l__tag_block_flattened_level_int
+  {
+    \int_new:N \l__tag_block_flattened_level_int
+  }
+%    \end{macrocode}
+%  \end{macro}
+%  
 % \begin{plugdecl}{Table}
+%  Inside a TD or TR Part is not allowed as child. For structures that restore
+%  paragraph settings we therefore need a special plug that adjust the settings.
+%  Currently we set the para main tag to Div. This leads to double Div-structures
+%  but flattening the paragraph doesn't work, it errors if there is a list inside. 
+%    \begin{macrocode}
+\NewSocketPlug{tagsupport/para/restore}{Table}
+  {
+    \tl_set:Nn    \l__tag_para_main_tag_tl {Div}
+    \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+    \bool_set_true:N \l__tag_para_bool
+    \bool_set_false:N \l__tag_para_flattened_bool
+    \int_zero:N \l__tag_block_flattened_level_int
+  }
+%    \end{macrocode}
+% \end{plugdecl}
+% 
+% \begin{plugdecl}{Table}
 %    Inside a table we currently only disable paratagging. We assume
-%    that these sockets are in an environment group, so there is no
+%    that these sockets are called in a group, so there is no
 %    need to reenable paratagging.
 %    \begin{macrocode}
 \NewSocketPlug{tagsupport/tbl/init}{Table}
   {
-    \tag_if_active:T
-      {
-        \bool_set_false:N \l__tag_para_bool
+     \bool_set_false:N \l__tag_para_bool
+     \AssignSocketPlug{tagsupport/para/restore}{Table}
 %    \end{macrocode}
 %    We also initialize the structure data variables a this point.
 %    \begin{macrocode}
-        \@@_init_struct_data:
-      }
+     \@@_init_struct_data:
   }
 %    \end{macrocode}
 % \end{plugdecl}
@@ -573,7 +699,7 @@
                     \prop_if_exist:cT
                       { g__tag_struct_ \l_@@_tmpa_tl _prop }
                       {
-                        \exp_args:No \__tag_struct_prop_gput:nnn {\l_@@_tmpa_tl} {S}{/Artifact}
+                        \__tag_struct_prop_gput:onn { \l_@@_tmpa_tl } {S}{/Artifact}
                       }
                    }
                }
@@ -664,7 +790,7 @@
                     \prop_if_exist:cT
                       { g__tag_struct_ \l_@@_tmpa_tl _prop }
                       {
-                        \exp_args:No\__tag_struct_prop_gput:nnn {\l_@@_tmpa_tl} {S}{/Artifact}
+                        \__tag_struct_prop_gput:onn {\l_@@_tmpa_tl} {S}{/Artifact}
                       }
                    }
                }
@@ -711,7 +837,7 @@
     \tag_mc_end_push:
 %    \end{macrocode}
 %    Close the P-chunk. This assumes that para-tagging is active.
-%    For nested tables that is not necessarly true, so we test for it.
+%    For nested tables that is not necessarily true, so we test for it.
 %    \begin{macrocode}
      \bool_lazy_and:nnT
       { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool }
@@ -729,7 +855,7 @@
     \tag_struct_end:
 %    \end{macrocode}
 % reopen the P-chunk. This assumes that para-tagging is active.
-% For nested tables that is not necessarly true, so we test for it.
+% For nested tables that is not necessarily true, so we test for it.
 %    \begin{macrocode}
     \bool_lazy_and:nnT
       { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool }
@@ -778,16 +904,33 @@
               {/O /Table /ColSpan~\int_eval:n{#1}}
           }
        \tl_set:Ne \l_@@_cellattribute_tl
-          {colspan-\int_eval:n{#1}}
+          {\l_@@_cellattribute_tl,colspan-\int_eval:n{#1}}
      }
   }
 %    \end{macrocode}
-%    TODO: move to tagpdf
+% \end{plugdecl}
+%
+%
+%
+%
+% \begin{plugdecl}{code}
+%    The sockets will be in lttagging.dtx, but that may only happen in
+%    the next main release, so for now we test if they are in the
+%    format and if not define them now.
 %    \begin{macrocode}
-\tag_if_active:T
-  { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
-
+\str_if_exist:cF { l__socket_tagsupport/tbl/leaders/end_plug_str }
+    {
+      \NewSocket{tagsupport/tbl/leaders/begin}{0}
+      \NewSocket{tagsupport/tbl/leaders/end}{0}
+    }
 %    \end{macrocode}
+%  
+%    \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/leaders/begin}{code}
+  { \tag_mc_begin:n{artifact} }
+\NewSocketPlug{tagsupport/tbl/leaders/end}{code}
+  { \tag_mc_end: }
+%    \end{macrocode}
 % \end{plugdecl}
 %
 %
@@ -810,8 +953,7 @@
 % \subsection{Interfaces to tagging}
 %
 % \subsubsection{Tagging helper commands}
-%
-%
+
 % \subsubsection{Disabling/enabling}
 %
 %  For now we have only the option true/false but this will probably be extended
@@ -839,6 +981,8 @@
    \AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop}
    \AssignSocketPlug{tagsupport/tbl/vmode/end}{noop}
    \AssignSocketPlug{tagsupport/tbl/colspan}{noop}
+   \AssignSocketPlug{tagsupport/tbl/leaders/begin}{noop}
+   \AssignSocketPlug{tagsupport/tbl/leaders/end}{noop}
  }
 %    \end{macrocode}
 %  \end{macro}
@@ -866,6 +1010,8 @@
    \AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table}
    \AssignSocketPlug{tagsupport/tbl/vmode/end}{Table}
    \AssignSocketPlug{tagsupport/tbl/colspan}{code}
+   \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code}
+   \AssignSocketPlug{tagsupport/tbl/leaders/end}{code}
  }
 %    \end{macrocode}
 %  \end{macro}
@@ -886,7 +1032,8 @@
        \tl_set:Nn\l_@@_pcelltag_tl {NonStruct}
        \tl_set:Nn\l_@@_celltag_tl  {text}
        \tl_set:Nn\l_@@_tabletag_tl {Div} 
-       \clist_clear:N \l_@@_header_rows_clist 
+       \clist_clear:N \l_@@_header_rows_clist
+       \clist_clear:N \l_@@_header_columns_clist  
      },  
     table/tagging .default:n = true,
     table/tagging .initial:n = true
@@ -893,7 +1040,7 @@
   }
 %    \end{macrocode}
 % This are the old key names kept for now for 
-% compability. They will got at some time.
+% compatibility. They will got at some time.
 %    \begin{macrocode}
 \keys_define:nn { __tag / setup }
   {
@@ -955,11 +1102,12 @@
 
 %    \end{macrocode}
 %
-% \begin{variable}{\l_@@_header_rows_clist}
-%    This holds the numbers of the header rows. Negative numbers are
+% \begin{variable}{\l_@@_header_rows_clist,\l_@@_header_columns_clist}
+%    This holds the numbers of the header rows and columns. Negative numbers are
 %    possible and count from the last column backwards. 
 %    \begin{macrocode}
 \clist_new:N  \l_@@_header_rows_clist
+\clist_new:N  \l_@@_header_columns_clist
 %    \end{macrocode}
 % \end{variable}
 %
@@ -982,14 +1130,26 @@
               {
                 \__tag_struct_prop_gput:nnn{ ####1 }{S}{/TH}
 %    \end{macrocode}
-%    This need refinement once row headers (and perhaps other attributes)
-%    are used too, but for now it should be ok.
+%    This sets the scope class. If the header has already a row attribute
+%    we replace by TH-both.
 %    \begin{macrocode}
                 \prop_get:cnNTF
                   { g__tag_struct_####1_prop }
                   { C }
                   \l_@@_tmpa_tl
-                  {\__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l_@@_tmpa_tl]} }
+                  { 
+                    \str_set:Ne \l_@@_tmpa_str {\l_@@_tmpa_tl}
+                    \str_remove_once:Nn \l_@@_tmpa_str {[}
+                    \str_remove_once:Nn \l_@@_tmpa_str {]}                   
+                    \str_if_in:NnTF\l_@@_tmpa_str{/TH-row}
+                     {
+                       \str_replace_once:Nnn \l_@@_tmpa_str {/TH-row}{/TH-both}
+                       \__tag_struct_prop_gput:nne{ ####1 }{C}{[\l_@@_tmpa_str]}
+                     }
+                     {
+                       \__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l_@@_tmpa_str]}
+                     } 
+                  }                  
                   {\__tag_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}}
              }
           }
@@ -1004,6 +1164,7 @@
 \keys_define:nn { __tag / setup }
   {
     table/header-rows .clist_set:N = \l_@@_header_rows_clist,
+    table/header-columns .clist_set:N = \l_@@_header_columns_clist,
 %    \end{macrocode}
 % obsolete older name:
 %    \begin{macrocode}
@@ -1011,8 +1172,114 @@
   }
 %    \end{macrocode}
 %
+% \subsection{Multirow support}
+% 
+% \begin{macro}{\@@_multirow:n}
+% This command makes the current cell into a multirow cell:
+% it creates, if needed, an RowSpan-attribute, adds it to the attributes
+% of the cell structure, and marks all following cells spanned by the multirow
+% as cells that should not be tagged. The argument is the number of spanned row
+% (including the current row).
+%    \begin{macrocode}
+\cs_if_exist:NT \__tag_struct_prop_gput:nnn
+ {
+   \cs_generate_variant:Nn \__tag_struct_prop_gput:nnn {one}
+ }  
+\cs_new_protected:Npn \@@_multirow:n #1
+ { 
+%    \end{macrocode}
+% Create an attribute if needed:
+%    \begin{macrocode}
+   \prop_get:NeNF \g__tag_attr_entries_prop
+      {rowspan-\int_eval:n{#1}}
+      \l_@@_tmpa_tl
+      {
+        \__tag_attr_new_entry:ee
+          {rowspan-\int_eval:n{#1}}
+          {/O /Table /RowSpan~\int_eval:n{#1}}
+      }
+%    \end{macrocode}
+% ensure that the attribute is marked as used:
+%    \begin{macrocode}
+   \seq_gput_left:Ne\g__tag_attr_class_used_seq
+     {\pdf_name_from_unicode_e:n{rowspan-\int_eval:n{#1}}}   
+%    \end{macrocode}
+% Get the structure number of the current cell
+%    \begin{macrocode}
+   \seq_get_right:NN\g_@@_struct_cur_seq \l_@@_tmpb_tl
+%    \end{macrocode}
+% If we are in a multicolumn the number can be negative and 
+% this must be changed
+%    \begin{macrocode}
+   \tl_set:Ne \l_@@_tmpb_tl { \int_abs:n{\l_@@_tmpb_tl} }
+%    \end{macrocode}
+% no we must update an existing attribute.
+% TODO: simplify this ... (see also colspan handling).
+%    \begin{macrocode}
+   \prop_get:cnNTF
+      { g__tag_struct_\l_@@_tmpb_tl _prop }
+      { C }
+      \l_@@_tmpa_tl
+      {
+        \tl_remove_once:Nn \l_@@_tmpa_tl {[}
+        \tl_remove_once:Nn \l_@@_tmpa_tl {]}
+        \__tag_struct_prop_gput:one{ \l_@@_tmpb_tl }
+          {C}
+          {[/rowspan-\int_eval:n{#1}~\l_@@_tmpa_tl]} 
+      } 
+      {
+        \__tag_struct_prop_gput:one{ \l_@@_tmpb_tl }
+          {C}
+          {[/rowspan-\int_eval:n{#1}]} 
+      } 
+%    \end{macrocode}
+% Now mark the spanned cells that should be ignored.
+%    \begin{macrocode}
+    \@@_gset_untagged_row_cells:nn {#1-1}{\g_@@_span_tl}   
+ }
+%    \end{macrocode}
+% \end{macro}
 %
+%    \begin{macrocode}
+\keys_define:nn{ __tag / setup }
+ { table/multirow .code:n = {\@@_multirow:n {#1} }
+  ,table/multirow .default:n = 1
+ } 
+%    \end{macrocode}
 %
+% \begin{macro}{\@@_gset_untagged_row_cells:nn}
+% This command stores the row and column numbers of the cells in the following row(s) 
+% that should not be tagged as they are a part of a rowspan.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_gset_untagged_row_cells:nn #1 #2 % #1 number of rows, #2 number of columns
+  {
+    \int_step_inline:nn {#1}
+     { 
+       \int_step_inline:nn {#2}
+        {
+          \prop_gput:Nee \g_@@_untagged_cells_prop
+           { \int_eval:n {\g_@@_row_int + ##1},\int_eval:n{\g_@@_col_int + ####1 -1 } }{}
+        }   
+     }  
+  }
+%    \end{macrocode}
+% \end{macro}
+% 
+% \begin{macro}{\@@_if_tag_cell:nn}
+% We must be able to detect if a cell should be tagged. For this
+% we define a conditional --- if more options are needed it can be extended.
+%    \begin{macrocode}
+\prg_new_protected_conditional:Npnn\@@_if_tag_cell:nn #1 #2 %#1 row, #2 col
+  { T,TF }
+  {
+    \prop_get:NeNTF \g_@@_untagged_cells_prop 
+      {\int_eval:n{#1},\int_eval:n{#2}}\l__tbl_tmpa_tl
+      { \prg_return_false:}
+      { \prg_return_true: } 
+  }
+%    \end{macrocode}
+% \end{macro}
+% 
 % \subsection{Misc stuff}
 %
 %  \begin{macro}{\@@_show_curr_cell_data:}
@@ -1037,13 +1304,6 @@
 %    cell of a row, but still inside that cell, so we use two
 %    commands. The one adding is used in the row/end socket.
 %    \begin{macrocode}
-\NewSocket{tbl/celldata/missingcount}{1}
-\NewSocketPlug{tbl/celldata/missingcount}{code}{\tbl_count_missing_cells:n{#1}}
-\AssignSocketPlug{tbl/celldata/missingcount}{code}
-
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \cs_new:Npn \@@_add_missing_cells:
   {
 %    \end{macrocode}
@@ -1058,6 +1318,7 @@
           additional~cell(s)~into~previous~row:}
        \int_step_inline:nn { \g_@@_missing_cells_int }
            {
+             \int_gincr:N\g_@@_col_int
              \UseTaggingSocket{tbl/cell/begin}
              \UseTaggingSocket{tbl/cell/end}
            }

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -47,7 +47,7 @@
 %
 %    Currently the values |phase-I|, |phase-II|, |phase-III| and |new-or| (bundles |new-or-1|
 %    and |new-or-2|) are provided.
-%    |tagpdf| is an undocumented alias for |phase-II| which is kept for compability.
+%    |tagpdf| is an undocumented alias for |phase-II| which is kept for compatibility.
 %    The value |math| combines various math related files.
 %
 % \StopEventually{\setlength\IndexMin{200pt}  \PrintIndex  }

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -17,8 +17,8 @@
 % for those people who are interested or want to report an issue.
 %
 % dates for latex-lab-kernel-changes.sty (pulled from various sources, see ins)
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
 %<*driver>
 \documentclass{l3doc}
 \EnableCrossrefs
@@ -44,6 +44,11 @@
 %
 % \providecommand\hook[1]{\texttt{#1}}
 %
+%
+% \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+% \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
+% 
 % \begin{abstract}
 % \end{abstract}
 %
@@ -187,12 +192,24 @@
 % \subsection{\cs{contentsline} extension}
 % [latex-lab]
 % The tagging code must add code at the begin and end of \cs{contentsline}.
-% This code must have access to the arguments. We set it up as config point
-% for now.
+% This code must have access to the arguments. They are passed
+% together in tagging socket.
+% \begin{socketdecl}{tagsupport/toc/contentsline/before,
+%  tagsupport/toc/contentsline/after}
+%  Tagging sockets at the begin and end of contentsline.
+%  They receive \emph{all} contentsline arguments as one argument
+%  in four brace groups. The socket code should then use the parts it needs.
+%  The sockets will be in lttagging.dtx, but that may only happen in
+%  the next main release, so for now we test if they are in the
+%  format and if not define them now.
 %    \begin{macrocode}
-\def\@contentsline at cfgpoint@before#1#2#3#4{}
-\def\@contentsline at cfgpoint@after#1#2#3#4{}
+\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/contentsline/before}{1}
+      \NewSocket{tagsupport/toc/contentsline/after}{1}
+    }
 %    \end{macrocode}
+% \end{socketdecl}
 % for the hooks we need that the \cs{l at XX} pass also the destination and
 % that \cs{l at XX} takes three arguments. 
 % TODO: test that, if there are two many problems we should pass the 
@@ -200,10 +217,10 @@
 %    \begin{macrocode}
 \def\contentsline#1#2#3#4%
   {%
-    \@contentsline at cfgpoint@before{#1}{#2}{#3}{#4}%
+    \UseTaggingSocket{toc/contentsline/before}{{#1}{#2}{#3}{#4}}%
     \gdef\@contentsline at destination{#4}%
     \csname l@#1\endcsname{#2}{#3}%
-    \@contentsline at cfgpoint@after{#1}{#2}{#3}{#4}%
+    \UseTaggingSocket{toc/contentsline/after}{{#1}{#2}{#3}{#4}}%
   }
 %    \end{macrocode}
 %
@@ -225,17 +242,33 @@
 % \subsection{\cs{@starttoc}}
 % [kernel?]
 %
-% We add a configuration point before and after reading the file
+% We add a tagging socket before and after reading the file
 % for the tagging.
+% \begin{socketdecl}{tagsupport/toc/starttoc/before,
+%                    tagsupport/toc/starttoc/after}
+% Tagging sockets for the begin and end of start of \cs{@starttoc}.
+% They take one argument, the extension.  
+% The sockets will be in lttagging.dtx, but that may only happen in
+% the next main release, so for now we test if they are in the
+% format and if not define them now.
 %    \begin{macrocode}
-\def\@starttoc at cfgpoint@before#1{}
-\def\@starttoc at cfgpoint@after#1{}
+\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/starttoc/before}{1}
+      \NewSocket{tagsupport/toc/starttoc/after}{1}
+    }
+%    \end{macrocode}                  
+%    \begin{macrocode}
+%    \end{macrocode}
+% \end{socketdecl}
+% 
+%    \begin{macrocode}
 \def\@starttoc#1{%
   \begingroup
     \makeatletter
-    \@starttoc at cfgpoint@before{#1}%
+    \UseTaggingSocket{toc/starttoc/before}{#1}%
     \@input{\jobname.#1}%
-    \@starttoc at cfgpoint@after{#1}%
+    \UseTaggingSocket{toc/starttoc/after}{#1}%
     \if at filesw
       \expandafter\newwrite\csname tf@#1\endcsname
       \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
@@ -269,15 +302,32 @@
 \NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}%
 %    \end{macrocode}
 %
-% The dot in the leader must be set as artifact.
+% The dots in the leader must be set as artifact.
 % But luatex requires that the mc are set outside the leaders.
-% So we need a config point.
+% So we need sockets.
 %
 % \cs{@dottedtocline} needs hooks and formatting commands.
-% We add a sixth argument so that it can grab the destination too.
+% To make the leaders into artifact we use tagging sockets.
+% The declaration should perhaps be moved into lttagging so that
+% it can be used also by external packages even if the tagging code is not
+% loaded?
+% \begin{socketdecl}{tagsupport/toc/leaders/before,
+%                    tagsupport/toc/leaders/after}
+% Tagging sockets to make the dot leaders an artifact.
+% They do not take an argument.   
+% The sockets will be in lttagging.dtx, but that may only happen in
+% the next main release, so for now we test if they are in the
+% format and if not define them now.
 %    \begin{macrocode}
-\def\@dottedtocline at cfgpoint@leaders#1{#1}
-
+\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/leaders/before}{0}
+      \NewSocket{tagsupport/toc/leaders/after}{0}
+    }
+%    \end{macrocode}                  
+% \end{socketdecl}
+% The destination is accessed through \cs{@contentsline at destination}.
+%    \begin{macrocode}
 \def\@dottedtocline#1#2#3#4#5{%
   \ifnum #1>\c at tocdepth \else
     \vskip \z@ \@plus.2\p@
@@ -291,10 +341,11 @@
      \csname contentsline at text@#1 at format\endcsname{#4}%
      \UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline at destination}%
      \nobreak
-     \@dottedtocline at cfgpoint@leaders{%
+     \UseTaggingSocket{toc/leaders/before}\SuspendTagging{toc/leaders}%
        \leaders\hbox{$\m at th
          \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
-          mu$}\hfill}%
+          mu$}\hfill
+     \ResumeTagging{toc/leaders}\UseTaggingSocket{toc/leaders/after}%          
      \nobreak
      \hb at xt@\@pnumwidth{\hfil\normalfont \normalcolor
      \UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline at destination}%

Modified: trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -16,8 +16,8 @@
 %
 % for those people who are interested or want to report an issue.
 %
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-07-11}
+\def\ltlabtocversion{0.85c}
 %<*driver>
 \documentclass{l3doc}
 \EnableCrossrefs
@@ -42,8 +42,11 @@
 % \newcommand{\docclass}{document class \marginpar{\raggedright document class
 % customizations}}
 %
-% \providecommand\hook[1]{\texttt{#1}}
 %
+% \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+% \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} 
+%
 % \begin{abstract}
 % \end{abstract}
 % 
@@ -196,14 +199,17 @@
     \tag_struct_begin:n{tag=TOC,title=#1}
  }
 %    \end{macrocode}
-% Now map it into the config point:
+% \end{macro}
+% Now define the tagging plug and assign it to the socket.
+% \begin{plugdecl}{default}
 %    \begin{macrocode}
-\cs_set_protected:Npn\@starttoc at cfgpoint@before#1
-  {
-    \@@_toc_starttoc_init:n{#1}
-  }
+\NewSocketPlug{tagsupport/toc/starttoc/before}{default}
+ {
+   \@@_toc_starttoc_init:n{#1}
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/before}{default}
 %    \end{macrocode}
-% \end{macro}
+% \end{plugdecl}
 % \begin{macro}{\@@_toc_starttoc_finalize:}
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_toc_starttoc_finalize:
@@ -215,15 +221,18 @@
     \seq_gclear:N \g_@@_toc_stack_seq
  }
 %    \end{macrocode}
-% Now map it into the config point:
+% \end{macro}
+% Now define the tagging plug and assign it to the socket.
+% \begin{plugdecl}{default}
 %    \begin{macrocode}
-\cs_set_protected:Npn\@starttoc at cfgpoint@after#1
-  {
-    \@@_toc_starttoc_finalize:
-  }
+\NewSocketPlug{tagsupport/toc/starttoc/after}{default}
+ {
+   \@@_toc_starttoc_finalize:
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/after}{default}
 %    \end{macrocode}
-% \end{macro}
-
+% \end{plugdecl}
+%
 % \begin{macro}{\@@_toc_end:n}
 % This commands ends all TOC on the stack with a level higher than the argument
 %    \begin{macrocode}
@@ -249,10 +258,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_toc_contentsline_begin:nnn}
+% \begin{macro}{\@@_toc_contentsline_begin:nnnn}
 % This is main command executed at the begin of a |\contentsline|.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_toc_contentsline_begin:nnn #1 #2 #3 %#1 level, #2 content, #3 destination
+\cs_new_protected:Npn \@@_toc_contentsline_begin:nnnn #1 #2 #3 #4 
+  %#1 level, #2 content, #3 page number (unused) #4 destination
   {
    \tag_if_active:T
      {
@@ -308,7 +318,7 @@
 % \end{NOTE}
 %    \begin{macrocode}
            \prop_gput:Nee \g_@@_struct_ref_by_dest_prop
-             { \tag_get:n {struct_num} }{#3}
+             { \tag_get:n {struct_num} }{#4}
            \seq_gpush:Ne \g_@@_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
           \group_end:
        }
@@ -315,16 +325,19 @@
     }
   }
 %    \end{macrocode}
-% Now map it into the config point:
+% \end{macro}
+% Now define the tagging plug and assign it to the socket.
+% \begin{plugdecl}{default}
 %    \begin{macrocode}
-\cs_set_protected:Npn\@contentsline at cfgpoint@before#1#2#3#4
+\NewSocketPlug{tagsupport/toc/contentsline/before}{default}
   {
-    \@@_toc_contentsline_begin:nnn {#1}{#2}{#4}
-  }
+    \@@_toc_contentsline_begin:nnnn #1
+  }  
+\AssignSocketPlug{tagsupport/toc/contentsline/before}{default}
 %    \end{macrocode}
-% \end{macro}
+% \end{plugdecl}
 %
-% \begin{macro}{\@@_toc_contentsline_end:n}
+% \begin{macro}{\@@_toc_contentsline_end:nnnn}
 % This is the closing code of a |\contentsline|.
 % If the contentsline was actually printed, the code has to
 % close the TOCI structure and to update the stack.
@@ -331,7 +344,8 @@
 %    \begin{macrocode}
 \msg_new:nnn {tag}{toc-no-TOCI}{Missing~TOCI~structure~on~toc~stack}
 
-\cs_new_protected:Npn \@@_toc_contentsline_end:n #1 %#1 level name
+\cs_new_protected:Npn \@@_toc_contentsline_end:nnnn #1 #2 #3 #4 
+% #1 level, #2 content (unused), #3 page number (unused) #4 destination (unused)
   {
     \int_compare:nNnF { \use:c{toclevel@#1} } > {\use:c{c at tocdepth}}
       {
@@ -348,14 +362,17 @@
       }
   }
 %    \end{macrocode}
-% Now we map it to the config point
+% \end{macro}
+% Now define the tagging plug and assign it to the socket.
+% \begin{plugdecl}{default} 
 %    \begin{macrocode}
-\cs_set_protected:Npn \@contentsline at cfgpoint@after #1#2#3#4
- {
-   \@@_toc_contentsline_end:n {#1}
- }
+\NewSocketPlug{tagsupport/toc/contentsline/after}{default}
+  {
+    \@@_toc_contentsline_end:nnnn #1
+  }  
+\AssignSocketPlug{tagsupport/toc/contentsline/after}{default}
 %    \end{macrocode}
-% \end{macro}
+% \end{plugdecl}
 %
 % \subsection{Tagging of the content}
 % This need discussion.
@@ -380,12 +397,16 @@
   \tag_struct_end:
   \tag_mc_begin:n{tag=Reference}}
 %    \end{macrocode}
-%
+% \begin{plugdecl}{artifact}
 %    \begin{macrocode}
-\def\@dottedtocline at cfgpoint@leaders#1{%
- \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:}
+\NewSocketPlug{tagsupport/toc/leaders/before}{artifact}
+ {\tag_mc_begin:n{artifact}\nobreak}
+\NewSocketPlug{tagsupport/toc/leaders/after}{artifact}
+ {\nobreak\tag_mc_end:}
+\AssignSocketPlug{tagsupport/toc/leaders/before}{artifact}
+\AssignSocketPlug{tagsupport/toc/leaders/after}{artifact}
 %    \end{macrocode}
-
+% \end{plugdecl}
 %
 %    \begin{macrocode}
 %</package>

Modified: trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/tools/array.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -39,7 +39,7 @@
 %    \begin{macrocode}
 %<+package>\NeedsTeXFormat{LaTeX2e}[2024/06/01]
 %<+package>\ProvidesPackage{array}
-%<+package>         [2024/05/23 v2.6c Tabular extension package (FMi)]
+%<+package>         [2024/07/13 v2.6e Tabular extension package (FMi)]
 %
 % \fi
 %
@@ -715,7 +715,7 @@
 %
 % A similar problem happened when "\extrarowheight" was used. For that
 % reason m-cells now manually position the cell content which
-% allows to ignore this extra space request during the vertical aligment.
+% allows to ignore this extra space request during the vertical alignment.
 %
 %
 % \subsection{Bugs and Features}
@@ -1900,7 +1900,7 @@
 %    is how much do we need to move down? If there is any
 %    =\arraystretch= in place then the first line will have some
 %    unusual height and we don't want to consider that when finding
-%    the middle point. So we substract from the cell height the height
+%    the middle point. So we subtract from the cell height the height
 %    of that strut. But of course we want to include the normal height
 %    of the first line (which would be something like =\ht\strutbox=)
 %    so we need to add that. On the other hand, when centering around
@@ -2656,7 +2656,7 @@
 % \begin{macro}{\d at llarbegin}
 % \begin{macro}{\d at llarend}
 %    =\d at llar= has to be
-%    locally asigned since otherwise nested \textsf{tabular} and \textsf{array}
+%    locally assigned since otherwise nested \textsf{tabular} and \textsf{array}
 %    environments (via =\multicolumn=) are impossible.
 %    For 25 years or so =\@halignto= was set globally (to save space on the
 %    save stack, but that was a mistake: if there is a tabular in the
@@ -2852,11 +2852,13 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\@preamerr}
+%   \changes{v2.6d}{2024/06/14}{Keep message sources out of L3 code (gh/1378)}
 %    We also have to redefine the error routine =\@preamerr= since
 %    new kind of errors are possible.
 %    The code for this macro is not perfect yet;
 %    it still needs too much memory.
 %    \begin{macrocode}
+\ExplSyntaxOff
 \def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
    \PackageError{array}{%
    \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
@@ -2905,7 +2907,6 @@
 % to define letters, to be used in the same way as the primitive
 % column specifiers, `c' `p' etc.
 %    \begin{macrocode}
-\ExplSyntaxOff  % this is really oldstyle using \@tfor :=
 \def\newcolumntype#1{%
 %    \end{macrocode}
 % "\NC at char" was added in V2.01 so that active characters, like "@" in
@@ -3439,7 +3440,7 @@
 % \subsection{Implementing column types \texttt{w} and \texttt{W}}
 %
 % In TugBoat 38/2 an extension was presented that implemented two
-% aditional column types \texttt{w} and \texttt{W}. These have now
+% additional column types \texttt{w} and \texttt{W}. These have now
 % been added to the package itself.
 %
 %
@@ -3516,14 +3517,53 @@
 %  \end{macro}
 %
 %
+% \subsection{Handling \cs{cline}}
 %
+% In the past \pkg{array} did not have to concern itself with
+% \cs{cline} but simply used the definition already provided in the
+% kernel. However, for tagged PDF output this definition is
+% insufficient, because it causes incorrect row counting and the rules
+% it generates would need to be marked as artifacts.
+% We therefore update it  here.  
 %
 %
+%  \begin{macro}{\@cline}
+%    Tagging support for \cs{cline}
+%  \changes{v2.6e}{2024/07/13}{Support for tagging \cs{cline} (tagging/134)}
 %    \begin{macrocode}
+\ExplSyntaxOn
+\def\@cline#1-#2\@nil{
+  \omit
+  \@multicnt#1
+  \advance\@multispan\m at ne
+  \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
+  \@multicnt#2
+  \advance\@multicnt-#1
+  \advance\@multispan\@ne
+%    \end{macrocode}
+%    The rule needs artifact tagging in tagged PDF.
+%    \begin{macrocode}
+  \UseTaggingSocket{tbl/leaders/begin}
+  \leaders\hrule\@height\arrayrulewidth\hfill
+  \UseTaggingSocket{tbl/leaders/end}
+%    \end{macrocode}
+%    To the row counting the above appears like an extra row, so we
+%    have to correct the count.
+%    \begin{macrocode}
+  \tbl_gdecr_row_count:
+  \cr
+  \noalign{\vskip-\arrayrulewidth}
+}
 \ExplSyntaxOff
 %    \end{macrocode}
+%  \end{macro}
 %
 %
+%    \begin{macrocode}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%
 % \PrintIndex
 % \PrintChanges
 %

Modified: trunk/Master/texmf-dist/source/latex-dev/tools/longtable.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/tools/longtable.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/tools/longtable.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -28,7 +28,7 @@
 %</dtx>
 %<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
 %<package>
-% Try the 2020 version for any rollback before that date:          
+% Try the 2020 version for any rollback before that date:
 %<package>\DeclareRelease{}{1994-06-01}{longtable-2020-01-07.sty}
 %<package>
 %<package>\DeclareRelease{v4.13}{2020-01-02}{longtable-2020-01-07.sty}
@@ -38,7 +38,7 @@
 %<driver> \ProvidesFile{longtable.drv}
 % \fi
 %         \ProvidesFile{longtable.dtx}
-          [2024-04-26 v4.20 Multi-page Table package (DPC)]
+          [2024-07-06 v4.21 Multi-page Table package (DPC)]
 %
 % \iffalse
 %<*driver>
@@ -179,7 +179,7 @@
 % \env{longtable}, which has most of the features of the \env{tabular}
 % environment, but produces tables which may be broken by \TeX's
 % standard page-breaking algorithm. It also shares some features with
-% the \env{table} environment. In particular it uses the same counter,
+% the \env{table} environment. In particular it uses by default the same counter,
 % \texttt{table}, and has a similar "\caption" command. Also, the
 % standard "\listoftables" command lists tables produced by either the
 % \env{table} or \env{longtable} environments.
@@ -335,6 +335,29 @@
 % \caption{A floating table}
 % \end{table}
 %
+% \section{Counter and Caption Types}
+%
+% As mentioned in the introduction \env{longtable} uses and updates by default
+% the \texttt{table} counter, the "\caption" command creates a table caption
+% which is added to the list of tables.
+% Packages like \pkg{ltcaption} added more flexibility here by adding the
+% command "\LTcaptype" which allowed to change the type, e.g. to a listing.
+% Starting with version 4.21 \pkg{longtable} supports this command directly.
+% \DescribeMacro{\LTcaptype}%
+% By redefining this command it is possible to change the counter and caption type.
+% After "\renewcommand\LTcaptype{"\meta{counter}"}" \env{longtable} will update
+% the counter \meta{counter}, use "\fnum@"\meta{counter} in the caption (which
+% typically will make use of "\"\meta{counter}"name" and "\the"\meta{counter}), and
+% write content line entries into the file with the extension stored in the
+% command "\ext@"\meta{counter}. When \pkg{hyperref} is loaded the name of
+% the anchor will use \meta{counter} too. Packages or documents that change
+% "\LTcaptype" to some nonstandard value must ensure that the counter
+% \meta{counter} and the commands "\fnum@"\meta{counter}
+% and "\ext@"\meta{counter} exist and do not error.
+% If "\LTcaptype" is empty no counter is advanced and "\"\meta{counter}"name" in
+% the caption is suppressed.
+%
+%
 % \section{Captions and Headings}
 %
 % At the start of the table one may specify lines which are to appear at
@@ -907,6 +930,15 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\LTcaptype}
+% The name used as counter, in caption, "\addcontentsline" and in targets.
+% "\providecommand" is used for compability with \pkg{ltcaption}
+% \changes{v4.21}{2024/07/04}
+%    {Added \cs{LTcaptype} to support other types beside table.}
+%    \begin{macrocode}
+\providecommand\LTcaptype{table}
+%    \end{macrocode}
+% \end{macro}
 % \subsection{Internal Parameters}
 %
 % \begin{macro}{\LT at head}
@@ -957,8 +989,11 @@
 % are preserved correctly when "\includeonly" is used. In the rest of
 % the file "\LT at tables" has been replaced by "\c at LT@tables" without
 % further comment.
+% \changes{v4.21}{2024/07/04}
+%    {Provide a \cs{theH}-representation for targets.}
 %    \begin{macrocode}
 \newcounter{LT at tables}
+\providecommand\theHLT at tables{\theLT at tables}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1050,12 +1085,12 @@
     \LT at err{longtable not in 1-column mode}\@ehc
   \fi
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
   \UseTaggingSocket{tbl/vmode/begin}%
 %    \end{macrocode}
-%    
+%
 %    \begin{macrocode}
   \begingroup
 %    \end{macrocode}
@@ -1080,6 +1115,9 @@
 % Since Version 3.02, \package{longtable} has used the internal counter
 % "\c at LT@tables". The \LaTeX\ counter "table" is still incremented
 % so that "\caption" works correctly.
+% \changes{v4.21}{2024/07/04}
+%    {Use \cs{LTcaptype} instead of \texttt{table} in various places
+%     to support other types beside table.}
 %    \begin{macrocode}
 \def\LT at array[#1]#2{%
 %    \end{macrocode}
@@ -1097,25 +1135,31 @@
 %    TODO: When a line is killed the structure subtree is there already
 %    too and must be removed. If hard to do, then maybe at first warn if the
 %    construction is used.
-%  
+%
 %    \cs{LT at array} is executed in a group, so we can disable para-tagging here.
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
   \UseTaggingSocket{tbl/init}
-  \@kernel at refstepcounter{table}\stepcounter{LT at tables}
+  \tl_if_empty:eTF { \LTcaptype }
+    {
+      \tl_gset:Ne \@currentHref {LT at tables.\theHLT at tables}
+    }
+    {
+      \@kernel at refstepcounter{\LTcaptype}\stepcounter{LT at tables}
 %    \end{macrocode}
-% The target is created rather late and a \cs{label} can come earlier, 
+% The target is created rather late and a \cs{label} can come earlier,
 % so we have to define \cs{@currentHref} explicitly. We can't currently
 % assume that \cs{theHtable} is defined always.
 %    \begin{macrocode}
-  \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+      \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}}
+    }
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Managing cell indexes}
 %    \begin{macrocode}
   \tbl_gzero_row_count:
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
   \UseTaggingSocket{tbl/longtable/init}
@@ -1225,7 +1269,7 @@
    \begingroup
     \@mkpream{#2}%
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Managing cell indexes}
 %    \begin{macrocode}
     \tbl_count_table_cols:
@@ -1271,12 +1315,12 @@
        \tabskip\z@ \@arstrut
 %    \end{macrocode}
 %    Insert the tagging socket to start the row and initialize the cell
-%    data for the row.  
+%    data for the row.
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
        \UseTaggingSocket{tbl/row/begin}%
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Managing cell indexes}
 %    \begin{macrocode}
        \tbl_init_cell_data_for_row:
@@ -1314,7 +1358,7 @@
                    column:~ \the\g_@@_col_int
       }
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
       \tbl_if_row_was_started:T
@@ -1399,7 +1443,7 @@
 % We also have to make sure that this breakpoint doesn't affect how the next
 % page is broken, so we make the penalty 9999 (10000 is infinite and thus not
 % a legal breakpoint) and cancel out the "\kern" with a new "\kern".
-% 
+%
 % I don't think this is the \emph{right} solution to the problem (that would be
 % that the standard output routine has a feature for syncronizing with
 % typesetting, as part of the preparations for switching output routine), but
@@ -1476,9 +1520,17 @@
     \maxdepth\z@
   \fi
 %    \end{macrocode}
-%    
+% \changes{v4.21}{2024/07/04}
+%    {Use \cs{LTcaptype} to support other types beside table and handle
+%     the case if it is empty.}
 %    \begin{macrocode}
-  \MakeLinkTarget{table}
+  \tl_if_empty:eTF{\LTcaptype}
+    {
+      \MakeLinkTarget{LT at tables}
+    }
+    {
+      \MakeLinkTarget{\LTcaptype}
+    }
 %    \end{macrocode}
 % Put the table head on the page, and then switch to the new output
 % routine.
@@ -1487,12 +1539,12 @@
 %    \begin{macrocode}
   \ifvoid\LT at firsthead\copy\LT at head\else\box\LT at firsthead\fi\nobreak
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
   \UseTaggingSocket{tbl/longtable/head}
 %    \end{macrocode}
-%    
+%
 %    \begin{macrocode}
   \output{\LT at output}}
 \ExplSyntaxOff
@@ -1524,18 +1576,18 @@
 %    \begin{macrocode}
   \tbl_crcr:n {endlongtable}
 %    \end{macrocode}
-%    
+%
 % \changes{v4.01}{1996/04/11}
 %      {(DPC) use \cs{noalign} to sneak in \cs{LT at entry@chop}}
 %    \begin{macrocode}
   \noalign{%
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
     \UseTaggingSocket{tbl/longtable/finalize}
 %    \end{macrocode}
-%    
+%
 %    \begin{macrocode}
     \let\LT at entry\LT at entry@chop
     \xdef\LT at save@row{\LT at save@row}}%
@@ -1579,7 +1631,11 @@
   \ifx\LT at save@row\LT@@@@save at row
   \else
     \LT at warn{Column~ widths~ have~ changed\MessageBreak
-             in~ table~ \thetable}%
+             in~
+               \tl_if_empty:eTF{\LTcaptype}
+                 {longtable~ \theLT at tables}
+                 {\LTcaptype\c_space_tl\use:c{the\LTcaptype}}
+             }
     \LT at final@warn
   \fi
 %    \end{macrocode}
@@ -1613,7 +1669,7 @@
 %    \begin{macrocode}
   \ifvoid\footins\else\insert\footins{}\fi
 %    \end{macrocode}
-%    
+%
 % \changes{v4.19}{2023/12/16}{Support for tagged PDF}
 %    \begin{macrocode}
   \UseTaggingSocket{tbl/vmode/end}%
@@ -2161,7 +2217,6 @@
     \tbl_gdecr_row_count:
     \penalty\@M}
   \@gtempa}
-\ExplSyntaxOff
 %<@@=>
 %    \end{macrocode}
 % \end{macro}
@@ -2187,14 +2242,22 @@
 %      {Add new control argument}
 % \changes{v4.16}{2021/05/07}
 %      {use \cs{ext at table} gh/561}
+% \changes{v4.21}{2024/07/04}
+%    {Use \cs{LTcaptype} to support other types beside table.}
 %    \begin{macrocode}
-\def\LT at c@ption#1[#2]#3{%
-  \LT at makecaption#1\fnum at table{#3}%
-  \def\@tempa{#2}%
-  \ifx\@tempa\@empty\else
-     {\let\\\space
-     \addcontentsline{\ext at table}{table}{\protect\numberline{\thetable}{#2}}}%
-  \fi}
+\def\LT at c@ption#1[#2]#3{
+  \tl_if_empty:eTF{\LTcaptype}
+    {\LT at makecaption\@gobble{}{#3}}
+    {\LT at makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3}
+    \def\@tempa{#2}
+    \ifx\@tempa\@empty\else
+      {\let\\\space
+      \addcontentsline
+        {\@nameuse{ext@\LTcaptype}}
+        {\LTcaptype}
+        {\protect\numberline{\@nameuse{the\LTcaptype}}{#2}}}
+    \fi}}
+\ExplSyntaxOff
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2375,7 +2438,7 @@
 \ExplSyntaxOn
 \def\LT at end@hd at ft#1{%
 %    \end{macrocode}
-%    
+%
 %    This command is used to store the head and foot boxes.
 %    We need to retrieve and store the row so that we can clean
 %    up the structure in the finalize code.
@@ -2388,7 +2451,7 @@
 %    \end{macrocode}
 %    TODO: This is exposing internal counters, so it should be encapsulated
 %    in some interface command (but I'm not sure what that should be
-%    called, so not done yet. 
+%    called, so not done yet.
 % \changes{v4.19}{2023/12/16}{Managing cell indexes}
 %    \begin{macrocode}
        \tbl_count_missing_cells:n {head/foot}
@@ -2413,19 +2476,28 @@
 %    To get out of this trap we  run \cs{crcr} (which would normally
 %    come inside \cs{LT at echunk}. That will then trigger \cs{everycr}
 %    and update row counter unnecessarily, but now we have a defined state, so
-%    we can use \cs{noalign} to undo that. 
+%    we can use \cs{noalign} to undo that.
 %    We also change \cs{LT at rows} so that further \cs{cr}s do not do
 %    any harm (as explained above.
 %
 %    The \cs{crcr} inside \cs{LT at echunk} will be bypassed in that case
 %    as we have just executed a \cs{crcr} and are still in scanning modus for
-%    \cs{omit} or \cs{noalign}.     
+%    \cs{omit} or \cs{noalign}.
 %    \begin{macrocode}
      {
        \crcr
        \noalign{
 %    \end{macrocode}
-%    
+% \changes{v4.22}{2024/08/13}{Store header row numbers}
+%    \begin{macrocode}
+       \int_step_inline:nn
+         { \LT at rows }
+         {
+           \seq_gput_left:ce
+             {g_@@_\cs_to_str:N #1 _rows_seq }
+             { \int_eval:n {\g_@@_row_int - ##1 } }
+         }
+%    \end{macrocode}
 % \changes{v4.19}{2023/12/16}{Managing cell indexes}
 %    \begin{macrocode}
          \tbl_gdecr_row_count:         % undo the increment
@@ -2442,7 +2514,7 @@
      {Increase~ LTchunksize}%
   \fi
   \setbox#1\box\z@
-  \@@_trace:n {-->>~ Saving~\noexpand#1}  
+  \@@_trace:n {-->>~ Saving~\noexpand#1}
   \LT at get@widths
   \LT at bchunk}
 %    \end{macrocode}
@@ -2501,7 +2573,7 @@
   \bgroup
 %    \end{macrocode}
 % \changes{v4.12}{2019/02/06}{Color group to match array package}
-% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128}% 
+% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128}
 %    \begin{macrocode}
     \color at begingroup
     \let\@footnotetext\LT at p@ftntext
@@ -2509,7 +2581,7 @@
     \@arrayparboxrestore
     \everypar{%
       \vrule \@height \ht\@arstrutbox \@width \z@
-      \everypar{}}%    
+      \everypar{}}%
     }
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex-dev/tools/multicol.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/tools/multicol.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/tools/multicol.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -20,7 +20,7 @@
 % \iffalse    This is a METACOMMENT
 %
 %% Package `multicol' to use with LaTeX2e
-%% Copyright 1989-2023 Frank Mittelbach
+%% Copyright 1989-2024 Frank Mittelbach
 %%
 %%  In addition to the terms of LPPL any distributed version
 %%  (unchanged or modified) of multicol has to keep the statement
@@ -77,7 +77,7 @@
 %% not for the payment of a license fee per se (which might or might
 %% not follow from this evaluation).
 %%
-%% The license fee, if any, can be payed either to the LaTeX fund
+%% The license fee, if any, can be paid either to the LaTeX fund
 %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
 %% the program who can be contacted at
 %%
@@ -98,7 +98,7 @@
 %<driver> \ProvidesFile{multicol.drv}
 % \fi
 %         \ProvidesFile{multicol.dtx}
-          [2024/05/23 v1.9h  multicolumn formatting (FMi)]
+          [2024/07/01 v1.9h  multicolumn formatting (FMi)]
 %
 %
 %
@@ -403,12 +403,17 @@
 % the most important is called |\tolerance|: this controls the
 % allowed `looseness' (i.e.\ the amount of blank space between words).
 % Its default value is 200 (the \LaTeX{} |\fussy|) which is too
-% small for narrow columns. On the other hand the |\sloppy|
-% declaration (which sets |\tolerance| to $10000=\infty$) is too
-% large, allowing really bad spacing.\footnote{Look at the next
-% paragraph, it was set with the \cs{sloppy} declaration.}
+% small for narrow columns.
+
+% Setting it to \texttt{10000} (a.k.a.\ $\infty$) means arbitrary bad
+% lines are possible.  With that setting \LaTeX{} will make most lines
+% perfect but intermix them with really bad lines. This was the
+% setting originally used by \cs{sloppy} (nowadays it is a bit more
+% cautious and used \texttt{9999} which makes a huge
+% difference).\footnote{Look at the next paragraph, it was set with
+% the \cs{tolerance}\texttt{=10000}.}
 %
-% \begin{sloppypar}
+% \begin{sloppypar}\tolerance=10000
 % \DescribeMacro\multicoltolerance \DescribeMacro\multicolpretolerance
 %  We therefore use a |\multicoltolerance| parameter for the
 % |\tolerance| value inside the \mc{} environment.  Its default value
@@ -417,10 +422,10 @@
 % be done outside the \mc{} environment.  Since |\tolerance| is set
 % to |\multicoltolerance| at the beginning of every \textsf{multicols}
 % environment one can locally overwrite this default by assigning
-% \verb*+\tolerance = +\meta{desired value}. There also exists a
+% \cs{tolerance}\texttt{=}\meta{desired value}. There also exists a
 % |\multicolpretolerance| parameter holding the value for
 % |\pretolerance| within a \mc{} environment. Both parameters are
-% usually used only by package designers.
+% usually used only by package  or class designers.
 % \end{sloppypar}
 %
 % Generation of multicolumn output can be divided into two parts.  In
@@ -679,7 +684,7 @@
 %    this value will additionally trace the mark handling
 %    algorithm. It will show what marks are found, what marks are
 %    considered, etc. To fully understand this information you will
-%    probably have to read carefully trough the implementation.
+%    probably have to read carefully through the implementation.
 % \item[$\meta{number}\geq 4$.]  Setting \meta{number}\pagebreak[2] to
 %    such a high value will additionally place an |\hrule| into your
 %    output, separating the part of text which had already been
@@ -1945,7 +1950,7 @@
 %   the balancing happened in the output routine then \TeX{} reverts
 %   to the |\prevdepth| that was current before the OR once the OR has
 %   finished. In short |\prevdepth| is something you can't set
-%   globally it is alway local to the current list being built. Thus
+%   globally it is always local to the current list being built. Thus
 %   we need to set it back to zero here to avoid incorrect spacing.
 % \changes{v1.8h}{2014/09/12}{Set \cs{prevdepdth} for current vlist
 %   when returning from multicols environment}
@@ -2216,7 +2221,7 @@
 %  \begin{macro}{\multicolmindepthstring}
 %    The default minimum depth of each column corresponds to the depth
 %    of a `p' in the current font. This makes sense for Latin-based
-%    languages and was hard-wired intitially, but for Asian languages
+%    languages and was hard-wired initially, but for Asian languages
 %    it is better to use a zero depth (and alternatively one might
 %    want to use the depth of a strut or a parentheses). So we now
 %    offer a way to adjust this while maintaining backward
@@ -2462,7 +2467,7 @@
 %    If |\kept at firstmark| is non-empty then |\kept at botmark| must be
 %    non-empty too so we can use their values. Otherwise we use the
 %    value of |\kept at topmark| which was first initialized when we
-%    gathered the |\partical at page| and later on was updated to the
+%    gathered the |\partial at page| and later on was updated to the
 %    |\botmark| for the preceding page.
 %
 % \changes{v1.4a}{1992/02/14}{\cs{botmark} set to \cs{splitbotmark}}
@@ -2938,7 +2943,7 @@
 %    marks from this box. This has to be done \emph{before} we add a
 %    penalty of $-10000$ to the top of the box, otherwise only an
 %    empty box will be considered. But even that is not enough: the box
-%    may contain \cs{columnbreak}s in which case doing some artifical
+%    may contain \cs{columnbreak}s in which case doing some artificial
 %    splitting to get the marks out still fails to see all marks
 %    unless we take some special precaution in \cs{get at keptmarks}
 %    (which is now done).

Modified: trunk/Master/texmf-dist/source/latex-dev/tools/theorem.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/tools/theorem.dtx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/source/latex-dev/tools/theorem.dtx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -24,7 +24,7 @@
 %%
 %
 %
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %
 % \ProvidesFile{theorem.dtx}[\FMithmInfo]
 %\iffalse   % this is a METACOMMENT !
@@ -952,7 +952,6 @@
 %
 % \subsubsection{The \texttt{changebreak} style}
 %
-%    \begin{macrocode}
 % This style option is stored in the file |thcb.sty|.
 %    \begin{macrocode}
 %<*thcb>

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/alltt.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/alltt.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/alltt.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -49,7 +49,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{alltt}
-              [2024/02/08 v2.0g defines alltt environment]
+              [2024/07/07 v2.0g defines alltt environment]
 \begingroup
 \lccode`\~=`\'
 \lowercase{\endgroup

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/article.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/article.cls	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/article.cls	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{article}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/bk10.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/bk10.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/bk10.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{bk10.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xpt\@xiipt

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/bk11.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/bk11.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/bk11.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{bk11.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xipt{13.6}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/bk12.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/bk12.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/bk12.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{bk12.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xiipt{14.5}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/book.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/book.cls	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/book.cls	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{book}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/doc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/doc.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/doc.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -52,7 +52,7 @@
 \DeclareCurrentRelease{v3}{2022-06-01}
 
 \ProvidesPackage{doc}
-  [2024/06/04 v3.0q
+  [2024/06/29 v3.0q
    Standard LaTeX documentation package V3 (FMi)]
 %%
 %% Package `doc' to use with LaTeX 2e

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg	2024-08-15 20:11:34 UTC (rev 72039)
@@ -37,7 +37,7 @@
 %% 
 %%%   From File: fontdef.dtx
 \ProvidesFile{fontmath.cfg}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
    (Uncustomized math font setup)
 ]
 %%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -37,7 +37,7 @@
 %% 
 %%%   From File: fontdef.dtx
 \ProvidesFile{fontmath.ltx}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
    (Math font setup)
 ]
 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg	2024-08-15 20:11:34 UTC (rev 72039)
@@ -37,7 +37,7 @@
 %% 
 %%%   From File: fontdef.dtx
 \ProvidesFile{fonttext.cfg}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
    (Uncustomized text font setup)
 ]
 %%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -37,7 +37,7 @@
 %% 
 %%%   From File: fontdef.dtx
 \ProvidesFile{fonttext.ltx}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
    (Text font setup)
 ]
 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -80,6 +80,12 @@
 \input {ot1cmss.fd}
 \input {ot1cmtt.fd}
 \endgroup
+\ifx\Umathcode\@undefined\else
+\begingroup
+\nfss at catcodes
+\input {ts1cmr.fd}
+\endgroup
+\fi
 \DeclareErrorFont{OT1}{cmr}{m}{n}{10}
 \ifx\Umathcode\@undefined
 \newcommand\encodingdefault{OT1}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -710,7 +710,7 @@
 \def\fmtname{LaTeX2e}
 \edef\fmtversion
    {2024-11-01}
-\def\patch at level{1}
+\def\patch at level{-2}
 \edef\development at branch@name{develop \the\year-\the\month-\the\day}
 \iffalse
 \def\reserved at a#1/#2/#3\@nil{%
@@ -1811,8 +1811,8 @@
     \xdef#1{\the\toks@}%
   \endgroup}
 %%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
 \message{document commands,}
 \ExplSyntaxOn
 \tl_new:N \l__cmd_arg_spec_tl
@@ -2030,23 +2030,15 @@
   }
 \cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
   {
-    \str_set:Nx \l__cmd_environment_str {#1}
-    \str_set:Nx \l__cmd_environment_str
-      { \tl_trim_spaces:o { \l__cmd_environment_str } }
-    \cs_if_exist:cTF { \l__cmd_environment_str }
-      {
-        \msg_info:nnxx { cmd } { redefine-env }
-          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
-      }
-      {
-        \msg_info:nnxx { cmd } { define-env }
-          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
-      }
+    \str_set:Nn \l__cmd_environment_str {#1}
+    \cs_if_exist:cTF { #1 }
+      { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+      { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
     \bool_set_false:N \l__cmd_expandable_bool
     \bool_set_true:N \l__cmd_environment_bool
-    \exp_args:NV \__cmd_declare_env_internal:nnnn
-      \l__cmd_environment_str {#2}
+    \__cmd_declare_env_internal:nnnn {#1} {#2}
   }
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
 \cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
   {
     \exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4556,24 +4548,54 @@
   }
 \cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
   {
+    \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+  {
     \cs_if_exist:cTF {#1}
-      { \msg_error:nnx { cmd } { env-already-defined } {#1} }
       {
+        \msg_error:nnx { cmd } { env-already-defined } {#1}
+        \use_none:nnn
+      }
+      {
         \cs_if_exist:cTF { end #1 }
-          { \msg_error:nnx { cmd } { env-end-already-defined } {#1} }
-          { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+          {
+            \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+            \use_none:nnn
+          }
+          { \__cmd_declare_env:nnnn {#1} }
       }
   }
-\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
   {
     \cs_if_exist:cTF {#1}
-      { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
-      { \msg_error:nnx { cmd } { env-undefined } {#1} }
+      { \__cmd_declare_env:nnnn {#1} }
+      {
+        \msg_error:nnx { cmd } { env-undefined } {#1}
+        \use_none:nnn
+      }
   }
-\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
-  { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
-\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
-  { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+  {
+    \cs_if_exist:cTF {#1}
+      { \use_none:nnn }
+      { \__cmd_declare_env:nnnn {#1} }
+  }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
 \cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
   {
     \__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -8587,10 +8609,10 @@
 \newtoks \everypar
 
 \tl_gput_right:Nx \g__para_standard_everypar_tl {
-    \exp_not:N \the
-    \exp_not:N \toks
-    \the \allocationnumber
-    \c_space_tl
+  \exp_not:N \the
+  \exp_not:N \toks
+  \the \allocationnumber
+  \c_space_tl
 }
 \box_new:N \g_para_indent_box
 
@@ -10201,6 +10223,7 @@
     \hbadness\@M
     \hfuzz\maxdimen
     \tracingonline\z@
+    \tracinglostchars\z@
     \everypar={}%
     \leftskip\z at skip
     \rightskip\z at skip
@@ -13662,6 +13685,7 @@
   \fi
   \UseHook{env/#1/begin}%
 }
+
 \edef\end
   {\unexpanded{%
      \romannumeral
@@ -13680,6 +13704,7 @@
    }%
    \expandafter\noexpand\csname end \endcsname
   }
+
 \@namedef{end }#1{%
   \romannumeral
     \IfHookEmptyTF{env/#1/end}%
@@ -13686,7 +13711,7 @@
         {\expandafter\z@}%
         {\z@\UseHook{env/#1/end}}%
     \csname end#1\endcsname\@checkend{#1}%
-    \expandafter\endgroup\if at endpe\@doendpe\fi
+    \endgroup
     \UseHook{env/#1/after}%
     \if at ignore\@ignorefalse\ignorespaces\fi
 }
@@ -14233,11 +14258,20 @@
 \def\@doendpe{\@endpetrue
      \def\par{\@restorepar
               \clubpenalty\@clubpenalty
-              \everypar{}\par\@endpefalse}\everypar
-               {{\setbox\z@\lastbox}%
-                \everypar{}\@endpefalse}}
+              \@endpefalse
+              \everypar{}\par}%
+     \everypar
+         {{\setbox\z@\lastbox}%
+          \everypar{}\@endpefalse}}
 \newif\if at endpe
-\@endpefalse
+\def\@endpefalse{\global\let\if at endpe\iffalse}
+\def\@endpetrue {%
+  \global\let\if at endpe\iftrue
+   \ifnum\currentgrouplevel>\z@
+      \aftergroup\propagate at doendpe
+   \fi
+}
+\def\propagate at doendpe{\if at endpe \@doendpe \fi}
 \def\@mklab#1{\hfil #1}
 \def\item{%
   \@inmatherr\item
@@ -14405,12 +14439,14 @@
     \kern\z@}}
 \let\set at color\relax
 \let\color at begingroup\begingroup
-\def\color at endgroup{\endgraf\endgroup}
 \def\color at setgroup{\color at begingroup}        % changed further in color package
 \let\normalcolor\relax                        % remains untouched; only changed in a color package
 \def\color at hbox{\hbox\bgroup\color at begingroup}
 \def\color at vbox{\vbox\bgroup\color at begingroup}
 \def\color at endbox{\color at endgroup\egroup}
+
+\def\color at endgroup{\endgraf\@endpefalse\endgroup}
+
 \def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
 \DeclareRobustCommand\savebox[1]{%
   \@ifnextchar(%)
@@ -16072,7 +16108,6 @@
 %% Copyright (C) 2022-2024
 %% Frank Mittelbach, The LaTeX Project
 %%% From File: ltmarks.dtx
-%% \end{function}
 
 \ExplSyntaxOn
 \seq_new:N \g__mark_classes_seq
@@ -17537,7 +17572,40 @@
     { \q_recursion_tail } { }
     \q_recursion_stop
 \group_end:
+\cs_new_protected:cpn { \c__keys_props_root_str .pass-to-packages }
+  {
+    \bool_if:NTF \l__keys_no_value_bool
+      { \__keys_scope:n { true } }
+      { \__keys_scope:n }
+  }
+\cs_new_protected:Npn \__keys_scope:n #1
+  {
+    \str_case:nnF {#1}
+      {
+        { true }
+          { \__keys_scope:N \clist_put_right:NV }
+        { false }
+          { \__keys_scope:N \clist_remove_all:NV }
+      }
+      {
+        \msg_error:nnnn { keys }
+          { choice-unknown }
+          { .pass-to-packages }
+          {#1}
+      }
+  }
+\cs_new_protected:Npn \__keys_scope:N #1
+  {
+    \exp_after:wN \__keys_find_key_module:wNN
+      \l_keys_path_str \s__keys_stop
+        \l_keys_key_tl \l_keys_key_str
+    #1 \l__keys_forced_global_clist \l_keys_key_str
+  }
+\cs_generate_variant:Nn \clist_if_in:NnT { Ne }
+\cs_generate_variant:Nn \clist_if_in:NnTF { Ne }
 \cs_generate_variant:Nn \clist_put_right:Nn { Nv }
+\clist_new:N \l__keys_class_only_clist
+\clist_new:N \l__keys_forced_global_clist
 \clist_new:N \l__keys_options_clist
 \bool_new:N \l__keys_options_loading_bool
 \cs_new_protected:Npn \__keys_options:n #1
@@ -17590,19 +17658,12 @@
   {
     \cs_if_free:cF { @raw at opt@ \@currname . \@currext }
       {
-        \keys_if_exist:nnTF {#1} { unknown }
+        \clist_map_inline:cn { @raw at opt@ \@currname . \@currext }
           {
-            \clist_put_right:Nv \l__keys_options_clist
-              { @raw at opt@ \@currname . \@currext }
+            \exp_args:Ne \__keys_options_class:nnn
+              { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
+                {##1} {#1}
           }
-          {
-            \clist_map_inline:cn { @raw at opt@ \@currname . \@currext }
-              {
-                \exp_args:Ne \__keys_options_class:nnn
-                  { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
-                  {##1} {#1}
-              }
-          }
       }
   }
 \cs_new_protected:Npn \__keys_options_class:nnn #1#2#3
@@ -17609,14 +17670,23 @@
   {
     \keys_if_exist:nnTF {#3} {#1}
       {
-        \clist_put_right:Nn \l__keys_options_clist {#2}
-        \clist_remove_all:Nn \@unusedoptionlist {#1}
+        \__keys_options_class:nn {#1} {#2}
+        \clist_put_right:Ne \l__keys_class_only_clist { \tl_to_str:n {#1} }
       }
       {
-        \clist_if_in:NnF \@unusedoptionlist {#1}
-          { \clist_put_right:Nn \@unusedoptionlist {#1} }
+        \keys_if_exist:nnTF {#3} { unknown }
+          { \__keys_options_class:nn {#1} {#2} }
+          {
+            \clist_if_in:NnF \@unusedoptionlist {#1}
+              { \clist_put_right:Nn \@unusedoptionlist {#1} }
+          }
       }
   }
+\cs_new_protected:Npn \__keys_options_class:nn #1#2
+  {
+    \clist_remove_all:Nn \@unusedoptionlist {#1}
+    \clist_put_right:Nn \l__keys_options_clist {#2}
+  }
 \cs_new_protected:Npn \__keys_options_package:n #1
   {
     \clist_map_inline:Nn \@raw at classoptionslist
@@ -17630,10 +17700,19 @@
   {
     \keys_if_exist:nnT {#3} {#1}
       {
-        \clist_put_right:Nn \l__keys_options_clist {#2}
-        \clist_remove_all:Nn \@unusedoptionlist {#1}
+        \clist_if_in:NeTF \l__keys_class_only_clist { \tl_to_str:n {#1} }
+          {
+            \clist_if_in:NeT \l__keys_forced_global_clist { \tl_to_str:n {#1} }
+              { \__keys_options_package:nn {#1} {#2} }
+          }
+          { \__keys_options_package:nn {#1} {#2} }
       }
    }
+\cs_new_protected:Npn \__keys_options_package:nn #1#2
+  {
+    \clist_put_right:Nn \l__keys_options_clist {#2}
+    \clist_remove_all:Nn \@unusedoptionlist {#1}
+  }
 \cs_new_protected:Npn \__keys_options_local:
   {
     \cs_if_eq:NNF \@currext \@clsextension
@@ -19568,7 +19647,25 @@
          }
          \ERRORusetaggingsocket  % that should get a proper error message
 }
+\int_new:N \l__tag_block_flattened_level_int
+\NewSocket{tagsupport/para/restore}{0}
+\NewSocketPlug{tagsupport/para/restore}{default}
+ {
+   \tl_set:Nn    \l__tag_para_main_tag_tl {text-unit}
+   \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+   \bool_set_false:N\l__tag_para_flattened_bool
+   \int_zero:N   \l__tag_block_flattened_level_int
+ }
+\AssignSocketPlug{tagsupport/para/restore}{default}
 \ExplSyntaxOff
+
+
+\NewSocket{tagsupport/toc/contentsline/before}{1}
+\NewSocket{tagsupport/toc/contentsline/after}{1}
+\NewSocket{tagsupport/toc/starttoc/before}{1}
+\NewSocket{tagsupport/toc/starttoc/after}{1}
+\NewSocket{tagsupport/toc/leaders/before}{0}
+\NewSocket{tagsupport/toc/leaders/after}{0}
 \NewSocket{tagsupport/tbl/cell/begin}{0}
 \NewSocket{tagsupport/tbl/cell/end}{0}
 \NewSocket{tagsupport/tbl/row/begin}{0}
@@ -19576,7 +19673,9 @@
 \NewSocket{tagsupport/tbl/pcell/begin}{0}
 \NewSocket{tagsupport/tbl/pcell/end}{0}
 \NewSocket{tagsupport/tbl/init}{0}
+\NewSocket{tagsupport/tbl/init/celldata}{0}
 \NewSocket{tagsupport/tbl/finalize}{0}
+\NewSocket{tagsupport/tbl/restore/celldata}{0}
 
 \NewSocket{tagsupport/tbl/colspan}{1}
 
@@ -19588,6 +19687,8 @@
 \NewSocket{tagsupport/tbl/longtable/finalize}{0}
 \NewSocket{tagsupport/tbl/longtable/head}{0}
 \NewSocket{tagsupport/tbl/longtable/foot}{0}
+\NewSocket{tagsupport/tbl/leaders/begin}{0}
+\NewSocket{tagsupport/tbl/leaders/end}{0}
 \ExplSyntaxOn
 \int_new:N \g__tbl_col_int
 \int_new:N \g__tbl_row_int
@@ -19661,6 +19762,7 @@
                     { max:~ \l__tbl_saved_table_cols_tl }
                 )
           }
+  \UseTaggingSocket{tbl/init/celldata}
   \int_gzero:N \g__tbl_row_int
   \int_gzero:N \g__tbl_col_int
   \tl_gset:Nn  \g__tbl_span_tl {1}
@@ -19696,6 +19798,7 @@
   \int_gset:Nn \g__tbl_row_int { \l__tbl_saved_row_tl }
   \tl_gset_eq:NN \g__tbl_span_tl \l__tbl_saved_span_tl
   \tl_gset_eq:NN \g__tbl_table_cols_tl   \l__tbl_saved_table_cols_tl
+  \UseTaggingSocket{tbl/restore/celldata}
   \__tbl_trace:n { ==>~ restored~cell~data:~
                 \int_use:N \g__tbl_row_int,
                 \int_use:N \g__tbl_col_int,

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -431,7 +431,7 @@
     \@skipping at modulefalse
   \fi}
 \ProvidesPackage{latexrelease}
-          [2022/11/14 v1.0p LaTeX release emulation and tests
+          [2024/08/11 v1.0p LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 \NeedsTeXFormat{LaTeX2e}[1996/06/01]
 \@ifundefined{sourceLaTeXdate}{%
@@ -1989,8 +1989,8 @@
 
 \EndIncludeInRelease
 %%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
 \edef\@latexrelease at catcode@null{\the\catcode`\^^@ }
 \catcode`\^^@=12
 \ExplSyntaxOn
@@ -2209,8 +2209,24 @@
       { \cs_set_nopar:cpx }
           { \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
   }
+\IncludeInRelease{2024/11/01}{\__cmd_declare_env:nnnn}%
+                 {Use~space-trimmed~envname~directly}
 \cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
   {
+    \str_set:Nn \l__cmd_environment_str {#1}
+    \cs_if_exist:cTF { #1 }
+      { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+      { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
+    \bool_set_false:N \l__cmd_expandable_bool
+    \bool_set_true:N \l__cmd_environment_bool
+    \__cmd_declare_env_internal:nnnn {#1} {#2}
+  }
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\__cmd_declare_env:nnnn}%
+                 {Use~space-trimmed~envname~directly}
+\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
+  {
     \str_set:Nx \l__cmd_environment_str {#1}
     \str_set:Nx \l__cmd_environment_str
       { \tl_trim_spaces:o { \l__cmd_environment_str } }
@@ -2228,6 +2244,8 @@
     \exp_args:NV \__cmd_declare_env_internal:nnnn
       \l__cmd_environment_str {#2}
   }
+
+\EndIncludeInRelease
 \cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
   {
     \exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4806,9 +4824,64 @@
     \__cmd_check_definable:nNT {#1} \DeclareDocumentCommand
       { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
   }
+\IncludeInRelease{2024/11/01}{\NewDocumentEnvironment}%
+                 {Trim~spaces~from~envname~first}
 \cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
   {
+    \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  {
+    \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+  }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+  {
     \cs_if_exist:cTF {#1}
+      {
+        \msg_error:nnx { cmd } { env-already-defined } {#1}
+        \use_none:nnn
+      }
+      {
+        \cs_if_exist:cTF { end #1 }
+          {
+            \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+            \use_none:nnn
+          }
+          { \__cmd_declare_env:nnnn {#1} }
+      }
+  }
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
+  {
+    \cs_if_exist:cTF {#1}
+      { \__cmd_declare_env:nnnn {#1} }
+      {
+        \msg_error:nnx { cmd } { env-undefined } {#1}
+        \use_none:nnn
+      }
+  }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+  {
+    \cs_if_exist:cTF {#1}
+      { \use_none:nnn }
+      { \__cmd_declare_env:nnnn {#1} }
+  }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\NewDocumentEnvironment}%
+                 {Trim~spaces~from~envname~first}
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
       { \msg_error:nnx { cmd } { env-already-defined } {#1} }
       {
         \cs_if_exist:cTF { end #1 }
@@ -4826,6 +4899,14 @@
   { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
 \cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
   { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_undefine:N \__cmd_new_env:nnnn
+\cs_undefine:N \__cmd_new_env:ennn
+\cs_undefine:N \__cmd_renew_env:nnnn
+\cs_undefine:N \__cmd_renew_env:ennn
+\cs_undefine:N \__cmd_provide_env:nnnn
+\cs_undefine:N \__cmd_provide_env:ennn
+
+\EndIncludeInRelease
 \cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
   {
     \__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -9926,6 +10007,13 @@
     \msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
   \__para_handle_indent:
 }
+\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+  \exp_not:N \the
+  \exp_not:N \toks
+  \exp_after:wN \__para_tmp:w \token_to_meaning:N \everypar
+  \c_space_tl
+}
 \EndIncludeInRelease
 \IncludeInRelease{2021/06/01}
        {\g__para_standard_everypar_tl}{minipage~ fix}
@@ -9962,10 +10050,10 @@
 \newtoks \everypar
 
 \tl_gput_right:Nx \g__para_standard_everypar_tl {
-    \exp_not:N \the
-    \exp_not:N \toks
-    \the \allocationnumber
-    \c_space_tl
+  \exp_not:N \the
+  \exp_not:N \toks
+  \the \allocationnumber
+  \c_space_tl
 }
 \box_new:N \g_para_indent_box
 
@@ -11664,6 +11752,7 @@
     \hbadness\@M
     \hfuzz\maxdimen
     \tracingonline\z@
+    \tracinglostchars\z@
     \everypar={}%
     \leftskip\z at skip
     \rightskip\z at skip
@@ -14943,6 +15032,9 @@
 \NewHook{enddocument/afteraux}
 \NewHook{enddocument/info}
 \NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
 \AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
 \AddToHook{enddocument/info}[kernel/warnings]{\@enddocument at kernel@warnings}
 \AddToHook{enddocument/info}[kernel/release]{%
@@ -15004,6 +15096,9 @@
 \NewHook{enddocument/afteraux}
 \NewHook{enddocument/info}
 \NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
 \AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
 \AddToHook{enddocument/info}[kernel/warnings]{\@enddocument at kernel@warnings}
 \AddToHook{enddocument/info}[kernel/release]{%
@@ -15145,6 +15240,34 @@
   \fi
   \UseHook{env/#1/begin}%
 }
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+                 {\begin}{Making \begin/\end robust}%
+\DeclareRobustCommand\begin[1]{%
+  \@ifundefined{#1}%
+    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
+    {\def\reserved at a{\def\@currenvir{#1}%
+     \edef\@currenvline{\on at line}%
+     \csname #1\endcsname}}%
+  \@ignorefalse
+  \begingroup\@endpefalse\reserved at a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\begin}{Making \begin/\end robust}%
+\def\begin#1{%
+  \@ifundefined{#1}%
+    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
+    {\def\reserved at a{\def\@currenvir{#1}%
+     \edef\@currenvline{\on at line}%
+     \csname #1\endcsname}}%
+  \@ignorefalse
+  \begingroup\@endpefalse\reserved at a}
+
+\expandafter\let\csname begin \endcsname\@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+                 {\end}{Making \begin/\end robust}%
 \edef\end
   {\unexpanded{%
      \romannumeral
@@ -15163,6 +15286,17 @@
    }%
    \expandafter\noexpand\csname end \endcsname
   }
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\end}{Making \begin/\end robust}%
+\def\end#1{%
+  \csname end#1\endcsname\@checkend{#1}%
+  \expandafter\endgroup\if at endpe\@doendpe\fi
+  \if at ignore\@ignorefalse\ignorespaces\fi}
+
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+                 {\end!space}{New @endpe handling}%
 \@namedef{end }#1{%
   \romannumeral
     \IfHookEmptyTF{env/#1/end}%
@@ -15169,6 +15303,20 @@
         {\expandafter\z@}%
         {\z@\UseHook{env/#1/end}}%
     \csname end#1\endcsname\@checkend{#1}%
+    \endgroup
+    \UseHook{env/#1/after}%
+    \if at ignore\@ignorefalse\ignorespaces\fi
+}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+                 {\end!space}{Use hook system}%
+
+\@namedef{end }#1{%
+  \romannumeral
+    \IfHookEmptyTF{env/#1/end}%
+        {\expandafter\z@}%
+        {\z@\UseHook{env/#1/end}}%
+    \csname end#1\endcsname\@checkend{#1}%
     \expandafter\endgroup\if at endpe\@doendpe\fi
     \UseHook{env/#1/after}%
     \if at ignore\@ignorefalse\ignorespaces\fi
@@ -15175,33 +15323,8 @@
 }
 \EndIncludeInRelease
 \IncludeInRelease{2019/10/01}%
-                 {\begin}{Making \begin/\end robust}%
-\DeclareRobustCommand\begin[1]{%
-  \@ifundefined{#1}%
-    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
-    {\def\reserved at a{\def\@currenvir{#1}%
-     \edef\@currenvline{\on at line}%
-     \csname #1\endcsname}}%
-  \@ignorefalse
-  \begingroup\@endpefalse\reserved at a}
-\edef\end
-  {\unexpanded{%
-     \romannumeral
-       \ifx\protect\@typeset at protect
-       \expandafter       %1
-         \expandafter        %2
-       \expandafter       %1
-           \expandafter         %3 expands the \csname inside \end<space>
-       \expandafter       %1
-         \expandafter        %2  expands \end<space>
-       \expandafter       %1     expands the \else
-           \z@
-       \else
-         \expandafter\z@\expandafter\protect
-       \fi
-   }%
-   \expandafter\noexpand\csname end \endcsname
-  }
+                 {\end!space}{Making \begin/\end robust}%
+
 \@namedef{end }#1{%
   \csname end#1\endcsname\@checkend{#1}%
   \expandafter\endgroup\if at endpe\@doendpe\fi
@@ -15208,21 +15331,7 @@
   \if at ignore\@ignorefalse\ignorespaces\fi}
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}%
-                 {\begin}{Making \begin/\end robust}%
-\def\begin#1{%
-  \@ifundefined{#1}%
-    {\def\reserved at a{\@latex at error{Environment #1 undefined}\@eha}}%
-    {\def\reserved at a{\def\@currenvir{#1}%
-     \edef\@currenvline{\on at line}%
-     \csname #1\endcsname}}%
-  \@ignorefalse
-  \begingroup\@endpefalse\reserved at a}
-\def\end#1{%
-  \csname end#1\endcsname\@checkend{#1}%
-  \expandafter\endgroup\if at endpe\@doendpe\fi
-  \if at ignore\@ignorefalse\ignorespaces\fi}
-
-\expandafter\let\csname begin \endcsname\@undefined
+                 {\end!space}{Making \begin/\end robust}%
 \expandafter\let\csname end \endcsname\@undefined
 
 \EndIncludeInRelease
@@ -15697,6 +15806,25 @@
 \let\leqno\@kernel at leqno
 \EndIncludeInRelease
 %%% From File: ltlists.dtx
+\IncludeInRelease{2024/11/01}%
+                 {\@endpetrue}{New @endpe handling}%
+\def\@endpefalse{\global\let\if at endpe\iffalse}
+\def\@endpetrue {%
+  \global\let\if at endpe\iftrue
+   \ifnum\currentgrouplevel>\z@
+      \aftergroup\propagate at doendpe
+   \fi
+}
+\def\propagate at doendpe{\if at endpe \@doendpe \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\@endpetrue}{New @endpe handling}%
+
+
+\def\@endpefalse{\let\if at endpe\iffalse}
+\def\@endpetrue{\let\if at endpe\iftrue}
+
+\EndIncludeInRelease
 %%% From File: ltboxes.dtx
 \IncludeInRelease{2015/01/01}%
                  {\makebox}{Make \makebox robust}%
@@ -15776,7 +15904,6 @@
 \IncludeInRelease{2021/06/01}%
                  {\color at begingroup}{color group settings}%
 \let\color at begingroup\begingroup
-\def\color at endgroup{\endgraf\endgroup}
 \def\color at setgroup{\color at begingroup}        % changed further in color package
 \let\normalcolor\relax                        % remains untouched; only changed in a color package
 \def\color at hbox{\hbox\bgroup\color at begingroup}
@@ -15787,7 +15914,6 @@
                  {\color at begingroup}{color group settings}%
 
 \let\color at begingroup\relax
-\let\color at endgroup\relax
 \let\color at setgroup\relax
 \let\normalcolor\relax
 \let\color at hbox\relax
@@ -15795,6 +15921,22 @@
 \let\color at endbox\relax
 
 \EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+                 {\color at endgroup}{color group settings}%
+\def\color at endgroup{\endgraf\@endpefalse\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+                 {\color at endgroup}{color group settings}%
+\def\color at endgroup{\endgraf\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\color at endgroup}{color group settings}%
+
+\let\color at endgroup\relax
+
+\EndIncludeInRelease
 \IncludeInRelease{2015/01/01}%
                  {\savebox}{Make \savebox robust}%
 \DeclareRobustCommand\savebox[1]{%
@@ -17187,7 +17329,6 @@
 %% Copyright (C) 2022-2024
 %% Frank Mittelbach, The LaTeX Project
 %%% From File: ltmarks.dtx
-%% \end{function}
 
 \ExplSyntaxOn
 \NewModuleRelease{2022/06/01}{ltmarks}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/letter.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/letter.cls	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/letter.cls	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1996/06/01]
 \ProvidesClass{letter}
-              [2021/12/07 v1.3c
+              [2024/08/12 v1.3c
                Standard LaTeX document class]
 \newcommand\@ptsize{}
 \DeclareOption{a4paper}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua	2024-08-15 20:11:34 UTC (rev 72039)
@@ -64,7 +64,7 @@
   luatexbase_log(
     "Lua module: " .. info.name
       .. spaced(info.date)
-      .. spaced(info.version)
+      .. spaced(string_gsub(info.version,"^(%d)","v%1"))
       .. spaced(info.description)
   )
   modules[info.name] = info
@@ -301,7 +301,7 @@
           end
           list[i] = current.value
         else
-          -- Cycle occured. TODO: Show cycle for debugging
+          -- Cycle occurred. TODO: Show cycle for debugging
           -- list[i] = ...
           local remaining = {}
           for name, entry in next, meta do
@@ -335,7 +335,7 @@
           for i=2, length//2 do
             cycle[i], cycle[length + 1 - i] = cycle[length + 1 - i], cycle[i]
           end
-          error('Cycle occured at ' .. table.concat(cycle, ' -> ', 1, length))
+          error('Cycle occurred at ' .. table.concat(cycle, ' -> ', 1, length))
         end
       end
     end

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex	2024-08-15 20:11:34 UTC (rev 72039)
@@ -47,7 +47,7 @@
   #1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
 \fi
 \ProvidesFile{ltluatex.tex}
-[2024/02/11 v1.2c
+[2024/06/29 v1.2d
    LuaTeX support for plain TeX (core)%
 ]
 \edef\etatcatcode{\the\catcode`\@}

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/preload.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/preload.cfg	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/preload.cfg	2024-08-15 20:11:34 UTC (rev 72039)
@@ -37,7 +37,7 @@
 %% 
 %%%   From File: fontdef.dtx
 \ProvidesFile{preload.cfg}
-           [2024/02/09 v3.0i LaTeX Kernel
+           [2024/07/08 v3.0j LaTeX Kernel
    (Uncustomized preload font setup)
 ]
 %%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/report.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/report.cls	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/report.cls	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{report}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesPackage{shortvrb}
-  [2024/06/04 v3.0q
+  [2024/06/29 v3.0q
    Standard LaTeX documentation package V3 (FMi)]
 %%
 %% Package `doc' to use with LaTeX 2e

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/size10.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/size10.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/size10.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{size10.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xpt\@xiipt

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/size11.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/size11.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/size11.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{size11.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xipt{13.6}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/base/size12.clo
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/base/size12.clo	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/base/size12.clo	2024-08-15 20:11:34 UTC (rev 72039)
@@ -42,7 +42,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 \ProvidesFile{size12.clo}
-              [2024/02/08 v1.4n
+              [2024/06/29 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xiipt{14.5}%

Modified: trunk/Master/texmf-dist/tex/latex-dev/graphics/color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/graphics/color.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/graphics/color.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -25,7 +25,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesPackage{color}
-          [2024/01/14 v1.3d Standard LaTeX Color (DPC)]
+          [2024/06/23 v1.3e Standard LaTeX Color (DPC)]
 \edef\Gin at codes{%
  \catcode`\noexpand\^^A\the\catcode`\^^A\relax
  \catcode`\noexpand\"\the\catcode`\"\relax
@@ -170,7 +170,7 @@
 \input{mathcolor.ltx}
 \def\color at setgroup{\begingroup\set at color}
 \let\color at begingroup\begingroup
-\def\color at endgroup{\endgraf\endgroup}
+\def\color at endgroup{\endgraf\@endpefalse\endgroup}
 \def\color at hbox{\hbox\bgroup\color at begingroup}
 \def\color at vbox{\vbox\bgroup\color at begingroup}
 \def\color at endbox{\color at endgroup\egroup}

Modified: trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -30,7 +30,7 @@
 \DeclareCurrentRelease{}{2019-10-01}
 
 \ProvidesPackage{graphics}
-          [2024/05/23 v1.4g  Standard LaTeX Graphics (DPC,SPQR)]
+          [2024/08/06 v1.4g  Standard LaTeX Graphics (DPC,SPQR)]
 \edef\Gin at codes{%
  \catcode`\noexpand\^^A\the\catcode`\^^A\relax
  \catcode`\noexpand\"\the\catcode`\"\relax

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
 \def\ltlabbibversion{0.81b}
 \ProvidesFile{bib-latex-lab-testphase.ltx}
         [\ltlabbibdate\space v\ltlabbibversion\space

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-08-11}
+\def\ltlabblockversion{0.8p}
 \ProvidesFile{block-latex-lab-testphase.ltx}
         [\ltlabblockdate\space v\ltlabblockversion\space
                             blockenv implementation]

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
+\def\ltlabfirstaiddate{2024-08-11}
+\def\ltlabfirstaidversion{0.85e}
 
 \ProvidesFile{firstaid-latex-lab-testphase.ltx}
         [\ltlabfirstaiddate\space v\ltlabfirstaidversion\space

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
+\def\ltlabfloatdate{2024-07-05}
 \def\ltlabfloatversion{0.81e}
 
 \ProvidesFile{float-latex-lab-testphase.ltx}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
+\def\ltlabgraphicdate{2024-07-05}
 \def\ltlabgraphicversion{0.80d}
 
 \ProvidesFile{graphic-latex-lab-testphase.ltx}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,7 +34,7 @@
 %% 
 %% File: latex-lab-amsmath.dtx
 \ProvidesFile{latex-lab-amsmath.ltx}
-        [2024-02-12 v0.1b amsmath adaptions]
+        [2024-07-05 v0.1b amsmath adaptions]
 \RequirePackage{tagpdf-base}
 \ExplSyntaxOn
 \AddToHook{package/amsmath/after}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-07-27}
+\def\ltlabfootnoteversion{0.8e}
 
 %%
 %% Copyright (c) 1995-2011 Robin Fairbairns

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-07-27}
+\def\ltlabfootnoteversion{0.8e}
 
 \ProvidesFile{latex-lab-footnotes.ltx}
              [\ltlabfootnotedate\space v\ltlabfootnoteversion\space
@@ -157,6 +157,17 @@
 \cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish:
 \NewSocket{tagsupport/fnmark}{1}
 \cs_set_eq:NN  \@footnotemark \fnote_footnotemark:
+\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str }
+    {
+      \NewSocket{tagsupport/para/restore}{0}
+      \NewSocketPlug{tagsupport/para/restore}{default}
+        {
+          \tl_set:Nn    \l__tag_para_main_tag_tl {text-unit}
+          \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+          \bool_set_false:N\l__tag_para_flattened_bool
+        }
+      \AssignSocketPlug{tagsupport/para/restore}{default}
+    }
 \cs_new_protected:Npn \fnote_footnotetext:n #1 {
   \__fnote_debug_footnotetext:
   \hook_use:n {fntext/before}
@@ -172,6 +183,7 @@
     \floatingpenalty \@MM
     \hsize\columnwidth
     \@parboxrestore
+    \UseTaggingSocket{para/restore}
     \parindent 1em     % typical default used in \@makefntext moved up here
     \def\@currentcounter{footnote}
     \protected at edef \@currentlabel { \p at footnote \@thefnmark }

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %% 
 %% 
 %% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
 \ProvidesPackage{latex-lab-kernel-changes}
         [\ltlabkerneldate\space v\ltlabkernelversion\space
          General kernel and class changes]
@@ -90,7 +90,7 @@
   }
 \ExplSyntaxOff
 %% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecdate{2024-07-05}
 \def\ltlabsecversion{0.84c}
 \ifdefined\directlua
  \ifnum\outputmode > 0

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-math.dtx
-\def\ltlabmathdate{2024-04-16}
-\def\ltlabmathversion{0.5j}
+\def\ltlabmathdate{2024-08-14}
+\def\ltlabmathversion{0.6b}
 \ProvidesFile{latex-lab-math.ltx}
              [\ltlabmathdate\space
               v\ltlabmathversion\space
@@ -48,6 +48,7 @@
 \tl_new:N \g__math_grabbed_math_tl
 \tl_new:N \l__math_tmpa_tl
 \skip_new:N \l__math_tmpa_skip
+\str_new:N \l__math_tmpa_str
 \tl_new:N \l__math_content_alt_tl
 \tl_new:N \l__math_content_actual_tl
 \tl_new:N \l__math_content_AF_source_tl
@@ -74,6 +75,8 @@
 \bool_new:N\g__tag_math_mathml_AF_bool
 \bool_new:N\l__tag_math_mathml_pane_bool
 \bool_new:N\l__tag_math_alt_bool
+\bool_new:N\g__tag_math_luamml_bool
+\bool_gset_true:N \g__tag_math_luamml_bool
 \int_new:N\g__math_mathml_total_int
 \int_new:N\g__math_mathml_int
 \int_new:N\g__math_math_total_int
@@ -80,7 +83,8 @@
 \int_new:N\g__math_mathml_AF_found_int
 \int_new:N\g__math_mathml_AF_attached_int
 \clist_new:N\l__tag_math_mathml_files_clist
-\clist_put_right:Ne\l__tag_math_mathml_files_clist {\c_sys_jobname_str-mathml}
+\clist_put_right:Ne\l__tag_math_mathml_files_clist
+  {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml}
 
 \cs_new_protected:Npn \__math_AF_mml:nnnn #1 #2 #3 #4
   {
@@ -108,28 +112,115 @@
   \endgroup
    \__math_AF_mml:nnnn{#1}{#2}{#3}{#4}
    }
+\tl_const:Nn \c__math_mathml_write_init_tl
+  {
+    <!DOCTYPE~html>
+    \iow_newline:
+    <html>
+    \iow_newline:
+  }
+\tl_new:N \l__math_mathml_write_before_tl
+\tl_const:Nn \c__math_mathml_write_after_tl
+  {
+    \iow_newline:
+    </div>
+    \iow_newline:
+  }
+\tl_const:Nn \c__math_mathml_write_final_tl
+  {
+    </html>
+  }
 
+\socket_new:nn {tagsupport/math/mathml/write/prepare}{0}
+\socket_new_plug:nnn{tagsupport/math/mathml/write/prepare}{On}
+  {
+    \str_set:NV\l__math_tmpa_str\l__math_content_AF_source_tl
+    \str_replace_all:Nnn\l__math_tmpa_str{&}{&}
+    \str_replace_all:Nnn\l__math_tmpa_str{<}{<}
+    \tl_set:Nn \l__math_mathml_write_before_tl
+      {
+        <div>
+        \iow_newline:
+        <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
+        \iow_newline:
+        <p>\l__math_tmpa_str</p>
+        \iow_newline:
+        <p>\l__math_content_hash_tl </p>
+        \iow_newline:
+      }
+  }
+\sys_if_engine_luatex:T
+ {
+   \file_if_exist:nT { luamml.sty }
+     {
+       \RequirePackage  { luamml }
+       \AddToHook{begindocument/end}
+         {
+           \bool_if:NT \g__tag_math_luamml_bool
+             {
+               \@ifpackageloaded { unicode-math }
+                 { \__math_luamml_activate_write: }
+                 { \msg_warning:nn { tag }{ unicode-math-missing } }
+             }
+         }
+     }
+ }
+\msg_new:nnn { tag }{ unicode-math-missing }
+  {
+    The~package~unicode-math~is~missing\\
+    luamml~will~not~create~an~MathML~file.\\
+    To~avoid~this~warning~load~unicode-math~or~disable~luamml\\
+    with~\tl_to_str:n{\tagpdfsetup{math/mathml/luamml=false}}
+  }
+\cs_new_protected:Npn \__math_luamml_activate_write:
+ {
+   \bool_gset_true:N\g__tag_math_mathml_AF_bool
+   \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
+   \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
+   \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
+   \AssignSocketPlug{tagsupport/math/substruct/end}{single}
+   \int_set:Nn \l__luamml_pretty_int { 5 }
+   \RegisterFamilyMapping\symsymbols{oms}
+   \RegisterFamilyMapping\symletters{oml}
+   \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
+   \iow_new:N   \g__math_luamml_iow
+   \iow_open:Nn \g__math_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
+   \iow_now:Ne  \g__math_luamml_iow { \c__math_mathml_write_init_tl  }
+   \cs_new:Npn  \__math_luamml_output_hook:n  ##1
+     {
+       \tl_if_empty:NF \l__math_mathml_write_before_tl
+         {
+          \iow_now:Ne \g__math_luamml_iow
+           {
+             \l__math_mathml_write_before_tl
+             ##1
+             \c__math_mathml_write_after_tl
+           }
+         }
+     }
+   \__luamml_register_output_hook:N \__math_luamml_output_hook:n
+   \luamml_flag_process:
+   \AddToHook{enddocument/afterlastpage}
+     {
+       \iow_now:Ne \g__math_luamml_iow
+         { \c__math_mathml_write_final_tl }
+       \iow_close:N \g__math_luamml_iow
+     }
+ }
+
+\keys_define:nn { __tag / setup }
+   {
+     math/mathml/luamml .bool_gset:N = \g__tag_math_luamml_bool,
+     math/mathml/luamml .usage:n=preamble
+   }
 \socket_new:nn {tagsupport/math/mathml/write}{0}
 \socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
  {
-    \str_set:NV\l__math_tmpa_str\l__math_content_AF_source_tl
-    \str_replace_all:Nnn\l__math_tmpa_str{&}{&}
-    \str_replace_all:Nnn\l__math_tmpa_str{<}{<}
     \iow_now:Ne \g__math_writedummy_iow
      {
-      \iow_newline:
-      <div>
-      \iow_newline:
-      <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
-      \iow_newline:
-      <p>\l__math_tmpa_str</p>
-      \iow_newline:
-      <p>\l__math_content_hash_tl </p>
-      \iow_newline:
+      \l__math_mathml_write_before_tl
       <math></math>
-      \iow_newline:
-      </div>
-      \iow_newline:
+      \c__math_mathml_write_after_tl
       }
  }
 
@@ -147,14 +238,14 @@
              }
             \iow_now:Ne \g__math_writedummy_iow
              {
-               <!DOCTYPE~html>
-               \iow_newline:
-               <html>
+               \c__math_mathml_write_init_tl
              }
+            \AssignSocketPlug {tagsupport/math/mathml/write/prepare}{On}
             \AssignSocketPlug {tagsupport/math/mathml/write}{On}
             \AddToHook{enddocument/afterlastpage}
              {
-               \iow_now:Nn \g__math_writedummy_iow {</html>}
+               \iow_now:Ne \g__math_writedummy_iow
+                 { \c__math_mathml_write_final_tl }
                \iow_close:N \g__math_writedummy_iow
              }
           }
@@ -418,6 +509,7 @@
     {
       \typeout{WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
     }
+   \socket_use:n {tagsupport/math/mathml/write/prepare}
    \socket_use:n {tagsupport/math/mathml/write} % write hash if request
     \bool_if:NTF\l__tag_math_texsource_AF_bool
      { \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
@@ -516,8 +608,8 @@
 \cs_new_protected:Npn \__math_process_auxii:nn #1#2 { }
 \cs_new_protected:Npn \math_processor:n #1
   { \cs_set_protected:Npn \__math_process_auxii:nn ##1##2 {#1} }
-\cs_new_protected:Npn \__math_grab_dollar:w % $
-  #1 $
+\cs_new_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_delim:w }
+\cs_new_protected:Npn \__math_grab_dollar:n #1
   {
     \tl_if_blank:nF {#1}
       {
@@ -535,6 +627,8 @@
         }
       }
   }
+\cs_new_protected:Npn \__math_grab_dollar_delim:w #1 $ % $
+  { \__math_grab_dollar:n {#1} }
 \cs_new_protected:Npn \__math_grab_dollardollar:w % $$
   #1 $$
   {
@@ -573,6 +667,84 @@
    {
      \begin { equation* } #1 \end { equation* }
    }
+\tl_new:N \l__math_grabbed_tl
+\int_new:N \l__math_grab_env_int
+\cs_new_protected:Npn \__math_grab_dollar_loop:
+  {
+    \group_begin:
+      \tl_clear:N \l__math_grabbed_tl
+      \__math_grab_loop:
+  }
+\cs_new_protected:Npn \__math_grab_loop:
+  {
+    \peek_remove_spaces:n
+      {
+        \peek_meaning:NTF \c_group_begin_token
+          { \__math_grab_loop_group:n }
+          { \__math_grab_loop_token:N }
+      }
+  }
+\cs_new_protected:Npn \__math_grab_loop_group:n #1
+  { \__math_grab_loop_store:n { {#1} } }
+\cs_new_protected:Npn \__math_grab_loop_store:n #1
+  {
+    \tl_put_right:Nn \l__math_grabbed_tl {#1}
+    \__math_grab_loop:
+  }
+\cs_new_protected:Npn \__math_grab_loop_token:N #1
+  {
+    \cs_if_exist_use:cF
+      { __math_grab_loop_ \token_to_str:N #1 : }
+      { \__math_grab_loop_store:n {#1} }
+  }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N $ : }
+  { \__math_grab_loop_end: }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \\ : }
+  {
+    \int_compare:nNnTF \l__math_grab_env_int = 0
+       { \__math_grab_loop_newline: }
+       { \__math_grab_loop_store:n { \\ } }
+  }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \begin : }
+  {
+    \int_incr:N \l__math_grab_env_int
+    \__math_grab_loop_store:n { \begin }
+  }
+\cs_new_eq:cc { __math_grab_loop_ \token_to_str:N \begin \c_space_tl : }
+  { __math_grab_loop_ \token_to_str:N \begin : }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \end : }
+  {
+    \int_compare:nNnTF \l__math_grab_env_int = 0
+       {
+         \__math_grab_loop_newline:
+         \end
+       }
+       {
+         \int_decr:N \l__math_grab_env_int
+         \__math_grab_loop_store:n { \end }
+       }
+  }
+\tl_map_inline:nn { \ignorespaces \unskip \textonly at unskip }
+  {
+    \cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N #1 : }
+      { \__math_grab_loop: }
+  }
+\cs_new_protected:Npn \__math_grab_loop_newline:
+  {
+    \if_false: { \fi:
+    \cs_set_protected:Npn \cr
+      {
+        \__math_grab_loop:
+        \tex_cr:D
+      }
+    \if_false: } \fi:
+    \\
+  }
+\cs_new_protected:Npn \__math_grab_loop_end:
+  {
+    \exp_args:NNV \group_end:
+    \__math_grab_dollar:n \l__math_grabbed_tl
+  }
 \tl_new:N \l__math_env_name_tl
 \keys_define:nn { __math }
   {
@@ -781,6 +953,7 @@
    \bool_set_false:N \l__math_collected_bool
    \col at sep\tabcolsep \let\d at llarbegin\begingroup
                                     \let\d at llarend\endgroup
+   \cs_set_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_loop: }
    \@tabarray}
  }
 \cs_new_eq:NN \__math_m at th: \m at th

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,7 +34,7 @@
 %% 
 %% File: latex-lab-mathtools.dtx
 \ProvidesFile{latex-lab-mathtools.ltx}
-        [2023-01-05 v0.1a mathtools adaptions]
+        [2024-07-13 v0.1a mathtools adaptions]
 \RequirePackage{tagpdf-base}
 \ExplSyntaxOn
 \tl_new:N\l__math_mathtools_init_tl

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
 \def\ltlabbibversion{0.81b}
 \ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion}
   {Code related to the tagging of bibliography and cite command}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-08-11}
+\def\ltlabblockversion{0.8p}
 \ProvidesPackage {latex-lab-testphase-block}
                  [\ltlabblockdate\space v\ltlabblockversion\space
                             blockenv implementation]
@@ -58,7 +58,31 @@
   }
 }
 \cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing:
-\def\@endpetrue {\global\let\if at endpe\iftrue}
+\def\@endpetrue {%
+  \global\let\if at endpe\iftrue
+   \ifnum\currentgrouplevel>\z@
+      \aftergroup\propagate at doendpe
+   \fi
+}
+\def\propagate at doendpe{%
+  \if at endpe
+     \__block_debug_typeout:n{run~ (another)~ @doendpe~ at~
+       group~ level~ \the\currentgrouplevel}%
+    \@doendpe
+  \else
+     \__block_debug_typeout:n{do~ not~ run~ (another)~ @doendpe}%
+  \fi
+}
+\@namedef{end }#1{%
+  \romannumeral
+    \IfHookEmptyTF{env/#1/end}%
+        {\expandafter\z@}%
+        {\z@\UseHook{env/#1/end}}%
+    \csname end#1\endcsname\@checkend{#1}%
+    \endgroup
+    \UseHook{env/#1/after}%
+    \if at ignore\@ignorefalse\ignorespaces\fi
+}
 \def\@endpefalse{\global\let\if at endpe\iffalse}
 \NewTemplateType{blockenv}{1}
 \NewTemplateType{block}{1}
@@ -407,14 +431,14 @@
   \__block_debug_typeout:n{\l__block_env_name_tl -env-start}
   \tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} }
   %    \begin{macrocode}
-  \int_compare:nNnTF \l__block_flattened_level_int > 0
+  \int_compare:nNnTF \l__tag_block_flattened_level_int > 0
       {
-        \int_incr:N \l__block_flattened_level_int
+        \int_incr:N \l__tag_block_flattened_level_int
       }
       {
         \bool_if:NT \l__tag_para_flattened_bool
              {
-               \int_incr:N \l__block_flattened_level_int
+               \int_incr:N \l__tag_block_flattened_level_int
              }
       }
   \tl_if_empty:NF \l__block_inner_level_counter_tl
@@ -462,7 +486,10 @@
     }
   \l__block_final_code_tl
 }
-\int_new:N \l__block_flattened_level_int
+\int_if_exist:NF \l__tag_block_flattened_level_int
+  {
+    \int_new:N \l__tag_block_flattened_level_int
+  }
 \newcounter{maxblocklevels}
 \setcounter{maxblocklevels}{6}
 \cs_new:Npn \endblockenv {
@@ -501,9 +528,9 @@
 }
 \socket_new:nn      {tagsupport/block-endpe}{0}
 \socket_new_plug:nnn{tagsupport/block-endpe}{on}
-                    { \legacy_if_gset_true:n  { @endpe } }
+                    { \@endpetrue }
 \socket_new_plug:nnn{tagsupport/block-endpe}{off}
-                    { \legacy_if_gset_false:n { @endpe } }
+                    { \@endpefalse }
 \socket_assign_plug:nn{tagsupport/block-endpe}{on}
 \DeclareTemplateCode{para}{std}{1}
 {
@@ -1011,6 +1038,7 @@
   block-instance = verbatimblock ,
   inner-instance = ,
   final-code     = \legacyverbatimsetup ,
+  para-instance  = justify
 }
 \DeclareInstance{blockenv}{itemize}{display}
 {
@@ -1203,7 +1231,7 @@
         \legacy_if_gset_false:n { @endpe }
       }
       {
-        \int_compare:nNnT \l__block_flattened_level_int < 2
+        \int_compare:nNnT \l__tag_block_flattened_level_int < 2
             {
               \__tag_gincr_para_main_begin_int:
               \tag_struct_begin:n

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
+\def\ltlabfirstaiddate{2024-08-11}
+\def\ltlabfirstaidversion{0.85e}
 
 \ProvidesPackage {latex-lab-testphase-firstaid} [%
    \ltlabfirstaiddate\space v\ltlabfirstaiddate\space
@@ -57,6 +57,8 @@
  {\def\@author{\authors}}
 \AddToHook{class/amsbook/after}
  {\def\@author{\authors}}
+\AddToHook{class/amsproc/after}
+ {\def\@author{\authors}}
 \AddToHook{package/verse/after}[latex-lab-firstaid]{%
   \FirstAidNeededT{verse}{sty}{2014/05/10 v2.4b verse typesetting}%
    {%

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
+\def\ltlabfloatdate{2024-07-05}
 \def\ltlabfloatversion{0.81e}
 \ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
   {Code related to the tagging of floats}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
+\def\ltlabgraphicdate{2024-07-05}
 \def\ltlabgraphicversion{0.80d}
 \ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
   {Code related to the tagging of graphics}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %% 
 %% File: latex-lab-marginpar.dtx
 %%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-08-06}
+\def\ltlabmarginparversion{0.85c}
 
 \ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion}
   {Changes related to the tagging of the margin notes}
@@ -42,11 +42,27 @@
 \int_new:N \g__kernel_marginpar_int
 \socket_new:nn {tagsupport/marginpar/begin}{0}
 \socket_new:nn {tagsupport/marginpar/end}{0}
+\cs_new_protected:Npn\__tag_get_marginpar_parent_aux:nn #1 #2
+ {
+   \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l__tag_tmpa_seq {#2}}
+ }
+\cs_new_protected:Npn \__tag_get_marginpar_parent:N #1
+ {
+   \seq_clear:N\l__tag_tmpa_seq
+   \seq_map_pairwise_function:NNN
+     \g__tag_struct_tag_stack_seq
+     \g__tag_struct_stack_seq
+     \__tag_get_marginpar_parent_aux:nn
+   \seq_put_right:Nn\l__tag_tmpa_seq {2}
+   \seq_get_left:NN \l__tag_tmpa_seq #1
+ }
+\cs_generate_variant:Nn \tag_struct_begin:n {e}
 \socket_new_plug:nnn {tagsupport/marginpar/begin}{default}
   {
    \if_mode_horizontal:
     \tag_mc_end:
-    \tag_struct_begin:n{tag=Aside,parent=\g__tag_para_main_struct_tl}%
+    \__tag_get_marginpar_parent:N \l__tag_tmpa_tl
+    \tag_struct_begin:e{tag=Aside,parent=\l__tag_tmpa_tl}%
    \else:
     \tag_struct_begin:n{tag=Aside}%
    \fi:

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %% 
 %% File: latex-lab-minipage.dtx
 %%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-08-08}
+\def\ltlabminipageversion{0.81d}
 \ProvidesExplPackage {latex-lab-testphase-minipage}
   {\ltlabminipagedate} {\ltlabminipageversion}
   {Code related to the tagging of minipages and parboxes}
@@ -54,12 +54,13 @@
   \@pboxswfalse
   \setlength\@tempdima{#4}%
   \def\@mpargs{{#1}{#2}[#3]{#4}}%
-  \socket_use:n{tagsupport/minipage/before}% new
+  \UseTaggingSocket{minipage/before}% new
   \setbox\@tempboxa\vbox\bgroup
     \color at begingroup
       \hsize\@tempdima
       \textwidth\hsize \columnwidth\hsize
       \@parboxrestore
+      \UseTaggingSocket{para/restore}
       \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c at mpfootnote\z@
       \socket_assign_plug:nn{fntext/process}{mp}%
       \let\@listdepth\@mplistdepth \@mplistdepth\z@
@@ -80,7 +81,7 @@
   \tag_stop:n{minipage}
   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
   \tag_start:n{minipage}
-  \socket_use:n{tagsupport/minipage/after} %new end ...
+  \UseTaggingSocket{minipage/after} %new end ...
   }
 \long\def\@iiiparbox#1#2[#3]#4#5{%
   \@kernel at init@parbox
@@ -87,8 +88,10 @@
   \leavevmode
   \@pboxswfalse
   \setlength\@tempdima{#4}%
-  \socket_use:n{tagsupport/parbox/before}
-  \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+  \UseTaggingSocket{parbox/before}
+  \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore
+  \UseTaggingSocket{para/restore}
+  #5\@@par}%
     \ifx\relax#2\else
       \setlength\@tempdimb{#2}%
       \edef\@parboxto{to\the\@tempdimb}%
@@ -102,23 +105,36 @@
        \csname bm@#3\endcsname}%
     \if at pboxsw \m at th$\fi
   \@end at tempboxa%
-  \socket_use:n{tagsupport/parbox/after}
+  \UseTaggingSocket{parbox/after}
   }
 \tl_new:N  \l__ltboxes_tag_tl
 \tl_set:Nn \l__ltboxes_tag_tl {Div}
 \socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt}
   {
-    \tag_mc_end_push:\tag_struct_end:
+    \tag_mc_end_push:
+    \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
     \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
   }
 \socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt}
-  {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+  {
+   \tag_struct_end:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+   \tag_mc_begin_pop:n{}
+  }
 
 \socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt}
-  {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
+  {
+   \tag_mc_end_push:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
+   \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
+  }
 
 \socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt}
-  {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+  {
+   \tag_struct_end:
+   \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+   \tag_mc_begin_pop:n{}
+   }
 \socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt}
 \socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt}
 \socket_assign_plug:nn{tagsupport/parbox/before}  {tag/dflt}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecdate{2024-07-05}
 \def\ltlabsecversion{0.84c}
 \ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
   {Code related to the tagging of sectioning commands}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-08-10}
+\def\ltlabtblversion{0.85m}
 \ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
   {Code related to the tagging of tables}
 \RequirePackage{array}
@@ -50,47 +50,97 @@
 \tl_set:Nn \l__tbl_cellattribute_tl {}
 \tl_new:N  \l__tbl_rowattribute_tl
 \tl_set:Nn \l__tbl_rowattribute_tl {}
+\prop_new:N\g__tbl_untagged_cells_prop
+\prop_new:N\l__tbl_saved_untagged_cells_prop
 \clist_new:N \l__tbl_tmpa_clist
 \tl_new:N \l__tbl_tmpa_tl
+\str_new:N \l__tbl_tmpa_str
+\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str }
+ {
+   \NewSocket{tagsupport/tbl/init/celldata}{0}
+   \NewSocket{tagsupport/tbl/restore/celldata}{0}
+ }
+\NewSocketPlug{tagsupport/tbl/init/celldata}{default}
+  {
+    \prop_set_eq:NN\l__tbl_saved_untagged_cells_prop \g__tbl_untagged_cells_prop
+    \prop_gclear:N \g__tbl_untagged_cells_prop
+  }
+\AssignSocketPlug{tagsupport/tbl/init/celldata}{default}
+
+\NewSocketPlug{tagsupport/tbl/restore/celldata}{default}
+  {
+    \prop_gset_eq:NN\g__tbl_untagged_cells_prop \l__tbl_saved_untagged_cells_prop
+  }
+\AssignSocketPlug{tagsupport/tbl/restore/celldata}{default}
 \NewSocketPlug{tagsupport/tbl/cell/begin}{TD}
   {
     \__tbl_show_curr_cell_data:
-    \tag_struct_begin:n
+    \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
       {
-        tag             =\l__tbl_celltag_tl,
-        attribute-class =\l__tbl_cellattribute_tl
+        \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+          {
+            \tl_set:Nn \l__tbl_celltag_tl {TH}
+            \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+          }
+        \tl_set:Ne \l__tbl_tmpa_tl {\int_eval:n { \g__tbl_col_int - 1 - \g__tbl_table_cols_tl }}
+        \clist_if_in:NoT \l__tbl_header_columns_clist { \l__tbl_tmpa_tl }
+          {
+            \tl_set:Nn \l__tbl_celltag_tl {TH}
+            \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+          }
+        \tag_struct_begin:n
+          {
+            tag             =\l__tbl_celltag_tl,
+            attribute-class ={\l__tbl_cellattribute_tl}
+          }
+        \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+        \int_step_inline:nn { \g__tbl_span_tl - 1 }
+          {
+            \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+          }
+        \tag_mc_begin:n{}
       }
-    \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
-    \int_step_inline:nn { \g__tbl_span_tl - 1 }
-      {
-        \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
-      }
-    \tag_mc_begin:n{}
   }
 \NewSocketPlug{tagsupport/tbl/cell/end}{TD}
   {
-    \tag_mc_end:
-    \tag_struct_end:
+    \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+      {
+        \tag_mc_end:
+        \tag_struct_end:
+      }
   }
 \NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
   {
     \__tbl_show_curr_cell_data:
-    \tag_struct_begin:n
+    \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
       {
-        tag             =\l__tbl_pcelltag_tl,
-        attribute-class =\l__tbl_cellattribute_tl
-      }
-    \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
-    \int_step_inline:nn { \g__tbl_span_tl - 1 }
-      {
-        \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
-      }
-    \tagpdfparaOn
-    \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+        \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+          {
+            \tl_set:Nn \l__tbl_celltag_tl {TH}
+            \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+          }
+        \tag_struct_begin:n
+          {
+            tag             =\l__tbl_pcelltag_tl,
+            attribute-class ={\l__tbl_cellattribute_tl}
+          }
+        \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+        \int_step_inline:nn { \g__tbl_span_tl - 1 }
+          {
+            \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+          }
+        \tagpdfparaOn
+        \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+     }
   }
 \NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
   {
-    \tag_struct_end:
+    \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+      {
+        \tag_struct_end:
+        \legacy_if:nT {@endpe}{\par}
+        \mode_if_vertical:T{ \tagpdfparaOff }
+      }
   }
 \NewSocketPlug{tagsupport/tbl/row/begin}{TR}
   {
@@ -116,7 +166,7 @@
       {
         \__tbl_trace:n
           {==>~
-            stucture~stored~for~row~\int_use:N\g__tbl_row_int :~
+            structure~stored~for~row~\int_use:N\g__tbl_row_int :~
             \seq_use:Nn \g__tbl_struct_cur_seq {,}
           }
       }
@@ -124,13 +174,23 @@
     \tag_struct_end:
   }
   }
+\int_if_exist:NF \l__tag_block_flattened_level_int
+  {
+    \int_new:N \l__tag_block_flattened_level_int
+  }
+\NewSocketPlug{tagsupport/para/restore}{Table}
+  {
+    \tl_set:Nn    \l__tag_para_main_tag_tl {Div}
+    \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+    \bool_set_true:N \l__tag_para_bool
+    \bool_set_false:N \l__tag_para_flattened_bool
+    \int_zero:N \l__tag_block_flattened_level_int
+  }
 \NewSocketPlug{tagsupport/tbl/init}{Table}
   {
-    \tag_if_active:T
-      {
-        \bool_set_false:N \l__tag_para_bool
-        \__tbl_init_struct_data:
-      }
+     \bool_set_false:N \l__tag_para_bool
+     \AssignSocketPlug{tagsupport/para/restore}{Table}
+     \__tbl_init_struct_data:
   }
 \NewSocketPlug{tagsupport/tbl/finalize}{Table}
   {
@@ -190,7 +250,7 @@
                     \prop_if_exist:cT
                       { g__tag_struct_ \l__tbl_tmpa_tl _prop }
                       {
-                        \exp_args:No \__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+                        \__tag_struct_prop_gput:onn { \l__tbl_tmpa_tl } {S}{/Artifact}
                       }
                    }
                }
@@ -261,7 +321,7 @@
                     \prop_if_exist:cT
                       { g__tag_struct_ \l__tbl_tmpa_tl _prop }
                       {
-                        \exp_args:No\__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+                        \__tag_struct_prop_gput:onn {\l__tbl_tmpa_tl} {S}{/Artifact}
                       }
                    }
                }
@@ -320,14 +380,21 @@
               {/O /Table /ColSpan~\int_eval:n{#1}}
           }
        \tl_set:Ne \l__tbl_cellattribute_tl
-          {colspan-\int_eval:n{#1}}
+          {\l__tbl_cellattribute_tl,colspan-\int_eval:n{#1}}
      }
   }
-\tag_if_active:T
-  { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
-
+\str_if_exist:cF { l__socket_tagsupport/tbl/leaders/end_plug_str }
+    {
+      \NewSocket{tagsupport/tbl/leaders/begin}{0}
+      \NewSocket{tagsupport/tbl/leaders/end}{0}
+    }
+\NewSocketPlug{tagsupport/tbl/leaders/begin}{code}
+  { \tag_mc_begin:n{artifact} }
+\NewSocketPlug{tagsupport/tbl/leaders/end}{code}
+  { \tag_mc_end: }
 \AddToHook{cmd/array/before}{\__tag_tbl_disable:}
 
+
 \cs_new_protected:Npn \__tag_tbl_disable:
  {
    \AssignSocketPlug{tagsupport/tbl/cell/begin}{noop}
@@ -347,6 +414,8 @@
    \AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop}
    \AssignSocketPlug{tagsupport/tbl/vmode/end}{noop}
    \AssignSocketPlug{tagsupport/tbl/colspan}{noop}
+   \AssignSocketPlug{tagsupport/tbl/leaders/begin}{noop}
+   \AssignSocketPlug{tagsupport/tbl/leaders/end}{noop}
  }
 
 \cs_new_protected:Npn \__tag_tbl_enable:
@@ -368,6 +437,8 @@
    \AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table}
    \AssignSocketPlug{tagsupport/tbl/vmode/end}{Table}
    \AssignSocketPlug{tagsupport/tbl/colspan}{code}
+   \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code}
+   \AssignSocketPlug{tagsupport/tbl/leaders/end}{code}
  }
 
 \keys_define:nn { __tag / setup }
@@ -385,6 +456,7 @@
        \tl_set:Nn\l__tbl_celltag_tl  {text}
        \tl_set:Nn\l__tbl_tabletag_tl {Div}
        \clist_clear:N \l__tbl_header_rows_clist
+       \clist_clear:N \l__tbl_header_columns_clist
      },
     table/tagging .default:n = true,
     table/tagging .initial:n = true
@@ -416,6 +488,7 @@
   }
 
 \clist_new:N  \l__tbl_header_rows_clist
+\clist_new:N  \l__tbl_header_columns_clist
 \cs_new_protected:Npn \__tbl_set_header_rows:
   {
     \clist_map_inline:Nn \l__tbl_header_rows_clist
@@ -433,7 +506,19 @@
                   { g__tag_struct_####1_prop }
                   { C }
                   \l__tbl_tmpa_tl
-                  {\__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_tl]} }
+                  {
+                    \str_set:Ne \l__tbl_tmpa_str {\l__tbl_tmpa_tl}
+                    \str_remove_once:Nn \l__tbl_tmpa_str {[}
+                    \str_remove_once:Nn \l__tbl_tmpa_str {]}
+                    \str_if_in:NnTF\l__tbl_tmpa_str{/TH-row}
+                     {
+                       \str_replace_once:Nnn \l__tbl_tmpa_str {/TH-row}{/TH-both}
+                       \__tag_struct_prop_gput:nne{ ####1 }{C}{[\l__tbl_tmpa_str]}
+                     }
+                     {
+                       \__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_str]}
+                     }
+                  }
                   {\__tag_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}}
              }
           }
@@ -442,8 +527,68 @@
 \keys_define:nn { __tag / setup }
   {
     table/header-rows .clist_set:N = \l__tbl_header_rows_clist,
+    table/header-columns .clist_set:N = \l__tbl_header_columns_clist,
     table-header-rows .meta:n = {table/header-rows={#1}}
   }
+\cs_if_exist:NT \__tag_struct_prop_gput:nnn
+ {
+   \cs_generate_variant:Nn \__tag_struct_prop_gput:nnn {one}
+ }
+\cs_new_protected:Npn \__tbl_multirow:n #1
+ {
+   \prop_get:NeNF \g__tag_attr_entries_prop
+      {rowspan-\int_eval:n{#1}}
+      \l__tbl_tmpa_tl
+      {
+        \__tag_attr_new_entry:ee
+          {rowspan-\int_eval:n{#1}}
+          {/O /Table /RowSpan~\int_eval:n{#1}}
+      }
+   \seq_gput_left:Ne\g__tag_attr_class_used_seq
+     {\pdf_name_from_unicode_e:n{rowspan-\int_eval:n{#1}}}
+   \seq_get_right:NN\g__tbl_struct_cur_seq \l__tbl_tmpb_tl
+   \tl_set:Ne \l__tbl_tmpb_tl { \int_abs:n{\l__tbl_tmpb_tl} }
+   \prop_get:cnNTF
+      { g__tag_struct_\l__tbl_tmpb_tl _prop }
+      { C }
+      \l__tbl_tmpa_tl
+      {
+        \tl_remove_once:Nn \l__tbl_tmpa_tl {[}
+        \tl_remove_once:Nn \l__tbl_tmpa_tl {]}
+        \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+          {C}
+          {[/rowspan-\int_eval:n{#1}~\l__tbl_tmpa_tl]}
+      }
+      {
+        \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+          {C}
+          {[/rowspan-\int_eval:n{#1}]}
+      }
+    \__tbl_gset_untagged_row_cells:nn {#1-1}{\g__tbl_span_tl}
+ }
+\keys_define:nn{ __tag / setup }
+ { table/multirow .code:n = {\__tbl_multirow:n {#1} }
+  ,table/multirow .default:n = 1
+ }
+\cs_new_protected:Npn \__tbl_gset_untagged_row_cells:nn #1 #2 % #1 number of rows, #2 number of columns
+  {
+    \int_step_inline:nn {#1}
+     {
+       \int_step_inline:nn {#2}
+        {
+          \prop_gput:Nee \g__tbl_untagged_cells_prop
+           { \int_eval:n {\g__tbl_row_int + ##1},\int_eval:n{\g__tbl_col_int + ####1 -1 } }{}
+        }
+     }
+  }
+\prg_new_protected_conditional:Npnn\__tbl_if_tag_cell:nn #1 #2 %#1 row, #2 col
+  { T,TF }
+  {
+    \prop_get:NeNTF \g__tbl_untagged_cells_prop
+      {\int_eval:n{#1},\int_eval:n{#2}}\l__tbl_tmpa_tl
+      { \prg_return_false:}
+      { \prg_return_true: }
+  }
 \cs_new_protected:Npn \__tbl_show_curr_cell_data: {
    \__tbl_trace:n { ==>~ current~cell~data:~
                  \int_use:N \g__tbl_row_int ,
@@ -451,10 +596,6 @@
                  \g__tbl_span_tl
                }
 }
-\NewSocket{tbl/celldata/missingcount}{1}
-\NewSocketPlug{tbl/celldata/missingcount}{code}{\tbl_count_missing_cells:n{#1}}
-\AssignSocketPlug{tbl/celldata/missingcount}{code}
-
 \cs_new:Npn \__tbl_add_missing_cells:
   {
     \int_compare:nNnT \g__tbl_missing_cells_int > 0
@@ -464,6 +605,7 @@
           additional~cell(s)~into~previous~row:}
        \int_step_inline:nn { \g__tbl_missing_cells_int }
            {
+             \int_gincr:N\g__tbl_col_int
              \UseTaggingSocket{tbl/cell/begin}
              \UseTaggingSocket{tbl/cell/end}
            }

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,35 +36,41 @@
 %% 
 %% 
 %% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-07-11}
+\def\ltlabtocversion{0.85c}
 \ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion}
   { Code related to the tagging of toc-like lists}
 %% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
 \RequirePackage{latex-lab-kernel-changes}
-\def\@contentsline at cfgpoint@before#1#2#3#4{}
-\def\@contentsline at cfgpoint@after#1#2#3#4{}
+\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/contentsline/before}{1}
+      \NewSocket{tagsupport/toc/contentsline/after}{1}
+    }
 \def\contentsline#1#2#3#4%
   {%
-    \@contentsline at cfgpoint@before{#1}{#2}{#3}{#4}%
+    \UseTaggingSocket{toc/contentsline/before}{{#1}{#2}{#3}{#4}}%
     \gdef\@contentsline at destination{#4}%
     \csname l@#1\endcsname{#2}{#3}%
-    \@contentsline at cfgpoint@after{#1}{#2}{#3}{#4}%
+    \UseTaggingSocket{toc/contentsline/after}{{#1}{#2}{#3}{#4}}%
   }
 \def\addcontentsline#1#2#3{% #1=toc extension, #2= heading type, tag
     \addtocontents{#1}{%
       \protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected at file@percent
     }}
-\def\@starttoc at cfgpoint@before#1{}
-\def\@starttoc at cfgpoint@after#1{}
+\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/starttoc/before}{1}
+      \NewSocket{tagsupport/toc/starttoc/after}{1}
+    }
 \def\@starttoc#1{%
   \begingroup
     \makeatletter
-    \@starttoc at cfgpoint@before{#1}%
+    \UseTaggingSocket{toc/starttoc/before}{#1}%
     \@input{\jobname.#1}%
-    \@starttoc at cfgpoint@after{#1}%
+    \UseTaggingSocket{toc/starttoc/after}{#1}%
     \if at filesw
       \expandafter\newwrite\csname tf@#1\endcsname
       \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
@@ -74,8 +80,11 @@
 \NewMirroredHookPairWithArguments{contentsline/number/before}{contentsline/number/after}{1}%
 \NewMirroredHookPairWithArguments{contentsline/text/before}{contentsline/text/after}{4}%
 \NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}%
-\def\@dottedtocline at cfgpoint@leaders#1{#1}
-
+\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str }
+    {
+      \NewSocket{tagsupport/toc/leaders/before}{0}
+      \NewSocket{tagsupport/toc/leaders/after}{0}
+    }
 \def\@dottedtocline#1#2#3#4#5{%
   \ifnum #1>\c at tocdepth \else
     \vskip \z@ \@plus.2\p@
@@ -89,10 +98,11 @@
      \csname contentsline at text@#1 at format\endcsname{#4}%
      \UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline at destination}%
      \nobreak
-     \@dottedtocline at cfgpoint@leaders{%
+     \UseTaggingSocket{toc/leaders/before}\SuspendTagging{toc/leaders}%
        \leaders\hbox{$\m at th
          \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
-          mu$}\hfill}%
+          mu$}\hfill
+     \ResumeTagging{toc/leaders}\UseTaggingSocket{toc/leaders/after}%
      \nobreak
      \hb at xt@\@pnumwidth{\hfil\normalfont \normalcolor
      \UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline at destination}%
@@ -276,8 +286,8 @@
      \fi}
  }
 %% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-07-11}
+\def\ltlabtocversion{0.85c}
 \tl_new:N \l__tag_toc_tmpa_tl
 \AddToHook{cmd/refstepcounter/after}
  {
@@ -325,10 +335,11 @@
     \int_gset:Nn  \g__tag_toc_level_int {-100}
     \tag_struct_begin:n{tag=TOC,title=#1}
  }
-\cs_set_protected:Npn\@starttoc at cfgpoint@before#1
-  {
-    \__tag_toc_starttoc_init:n{#1}
-  }
+\NewSocketPlug{tagsupport/toc/starttoc/before}{default}
+ {
+   \__tag_toc_starttoc_init:n{#1}
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/before}{default}
 \cs_new_protected:Npn \__tag_toc_starttoc_finalize:
  {
     \int_step_inline:nn
@@ -337,11 +348,11 @@
     \tag_struct_end:
     \seq_gclear:N \g__tag_toc_stack_seq
  }
-\cs_set_protected:Npn\@starttoc at cfgpoint@after#1
-  {
-    \__tag_toc_starttoc_finalize:
-  }
-
+\NewSocketPlug{tagsupport/toc/starttoc/after}{default}
+ {
+   \__tag_toc_starttoc_finalize:
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/after}{default}
 \cs_new_protected:Npn \__tag_toc_end:n #1
  {
    \seq_get:NNT\g__tag_toc_stack_seq \l__tag_toc_tmpa_tl
@@ -361,7 +372,8 @@
      }
  }
 \cs_generate_variant:Nn \__tag_toc_end:n {e}
-\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnn #1 #2 #3 %#1 level, #2 content, #3 destination
+\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnnn #1 #2 #3 #4
+  %#1 level, #2 content, #3 page number (unused) #4 destination
   {
    \tag_if_active:T
      {
@@ -385,19 +397,20 @@
            \text_declare_expand_equivalent:Nn \numberline \use_none:n
            \exp_args:Ne \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
            \prop_gput:Nee \g__tag_struct_ref_by_dest_prop
-             { \tag_get:n {struct_num} }{#3}
+             { \tag_get:n {struct_num} }{#4}
            \seq_gpush:Ne \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
           \group_end:
        }
     }
   }
-\cs_set_protected:Npn\@contentsline at cfgpoint@before#1#2#3#4
+\NewSocketPlug{tagsupport/toc/contentsline/before}{default}
   {
-    \__tag_toc_contentsline_begin:nnn {#1}{#2}{#4}
+    \__tag_toc_contentsline_begin:nnnn #1
   }
+\AssignSocketPlug{tagsupport/toc/contentsline/before}{default}
 \msg_new:nnn {tag}{toc-no-TOCI}{Missing~TOCI~structure~on~toc~stack}
 
-\cs_new_protected:Npn \__tag_toc_contentsline_end:n #1 %#1 level name
+\cs_new_protected:Npn \__tag_toc_contentsline_end:nnnn #1 #2 #3 #4
   {
     \int_compare:nNnF { \use:c{toclevel@#1} } > {\use:c{c at tocdepth}}
       {
@@ -413,10 +426,11 @@
           }
       }
   }
-\cs_set_protected:Npn \@contentsline at cfgpoint@after #1#2#3#4
- {
-   \__tag_toc_contentsline_end:n {#1}
- }
+\NewSocketPlug{tagsupport/toc/contentsline/after}{default}
+  {
+    \__tag_toc_contentsline_end:nnnn #1
+  }
+\AssignSocketPlug{tagsupport/toc/contentsline/after}{default}
 \AddToHook{contentsline/text/before}[tagpdf]{%
   \tag_struct_begin:n{tag=Reference}%
   \tag_mc_begin:n{tag=Reference}}
@@ -435,9 +449,12 @@
   \tag_mc_end:
   \tag_struct_end:
   \tag_mc_begin:n{tag=Reference}}
-\def\@dottedtocline at cfgpoint@leaders#1{%
- \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:}
-
+\NewSocketPlug{tagsupport/toc/leaders/before}{artifact}
+ {\tag_mc_begin:n{artifact}\nobreak}
+\NewSocketPlug{tagsupport/toc/leaders/after}{artifact}
+ {\nobreak\tag_mc_end:}
+\AssignSocketPlug{tagsupport/toc/leaders/before}{artifact}
+\AssignSocketPlug{tagsupport/toc/leaders/after}{artifact}
 %% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project
 \def\ltlabtochyperdate{2023-07-20}
 \def\ltlabtochyperversion{0.85a}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %% 
 %% File: latex-lab-marginpar.dtx
 %%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-08-06}
+\def\ltlabmarginparversion{0.85c}
 
 \ProvidesFile{marginpar-latex-lab-testphase.ltx}
         [\ltlabmarginpardate\space v\ltlabmarginparversion\space

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -34,8 +34,8 @@
 %% 
 %% File: latex-lab-minipage.dtx
 %%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-08-08}
+\def\ltlabminipageversion{0.81d}
 
 \ProvidesFile{minipage-latex-lab-testphase.ltx}
         [\ltlabminipagedate\space v\ltlabminipageversion

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,7 +33,7 @@
 %% 
 %% 
 %% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecdate{2024-07-05}
 \def\ltlabsecversion{0.84c}
 
 \ProvidesFile{sec-latex-lab-testphase.ltx}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-08-10}
+\def\ltlabtblversion{0.85m}
 \ProvidesFile{table-latex-lab-testphase.ltx}
         [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
 \RequirePackage{latex-lab-testphase-table}

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-08-10}
+\def\ltlabtblversion{0.85m}
 
 \ProvidesFile{tabular-latex-lab-testphase.ltx}
         [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular]

Modified: trunk/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -33,8 +33,8 @@
 %% 
 %% 
 %% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-07-11}
+\def\ltlabtocversion{0.85c}
 \ProvidesFile{toc-latex-lab-testphase.ltx}
         [\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc]
 

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/array.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -47,7 +47,7 @@
 
 \NeedsTeXFormat{LaTeX2e}[2024/06/01]
 \ProvidesPackage{array}
-         [2024/05/23 v2.6c Tabular extension package (FMi)]
+         [2024/07/13 v2.6e Tabular extension package (FMi)]
 %%
 
 \ExplSyntaxOn
@@ -286,6 +286,7 @@
 \let\@arrayacol=\relax      \let\@tabacol=\relax
 \let\@tabularcr=\relax      \let\@@endpbox=\relax
 \let\@argtabularcr=\relax   \let\@xtabularcr=\relax
+\ExplSyntaxOff
 \def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
    \PackageError{array}{%
    \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
@@ -294,7 +295,6 @@
     >\@tempd token ignored\or                               %3
     <\@tempd changed to !{..}\or                            %4
     Only one column-spec. allowed.\fi}\@ehc}                %5
-\ExplSyntaxOff  % this is really oldstyle using \@tfor :=
 \def\newcolumntype#1{%
   \edef\NC at char{\string#1}%
   \@ifundefined{NC at find@\NC at char}%
@@ -432,7 +432,24 @@
    <{\d at llarend\end{lrbox}%
    \let\hss\hfil
    \makebox[#2][#1]{\unhbox\ar at cellbox}}}
+\ExplSyntaxOn
+\def\@cline#1-#2\@nil{
+  \omit
+  \@multicnt#1
+  \advance\@multispan\m at ne
+  \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
+  \@multicnt#2
+  \advance\@multicnt-#1
+  \advance\@multispan\@ne
+  \UseTaggingSocket{tbl/leaders/begin}
+  \leaders\hrule\@height\arrayrulewidth\hfill
+  \UseTaggingSocket{tbl/leaders/end}
+  \tbl_gdecr_row_count:
+  \cr
+  \noalign{\vskip-\arrayrulewidth}
+}
 \ExplSyntaxOff
+\ExplSyntaxOff
 \endinput
 %%
 %% End of file `array.sty'.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/longtable.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/longtable.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -43,7 +43,7 @@
 \DeclareCurrentRelease{}{2020-02-07}
 
 \ProvidesPackage{longtable}
-          [2024-04-26 v4.20 Multi-page Table package (DPC)]
+          [2024-07-06 v4.21 Multi-page Table package (DPC)]
 \def\LT at err{\PackageError{longtable}}
 \def\LT at warn{\PackageWarning{longtable}}
 \def\LT at final@warn{%
@@ -65,6 +65,7 @@
 \newcount\LTchunksize \LTchunksize=200
 \let\c at LTchunksize\LTchunksize
 \newdimen\LTcapwidth  \LTcapwidth=4in
+\providecommand\LTcaptype{table}
 \newbox\LT at head
 \newbox\LT at firsthead
 \newbox\LT at foot
@@ -73,6 +74,7 @@
 \newcount\LT at cols
 \newcount\LT at rows
 \newcounter{LT at tables}
+\providecommand\theHLT at tables{\theLT at tables}
 \newcounter{LT at chunks}[LT at tables]
 \ifx\c at table\undefined
   \newcounter{table}
@@ -105,8 +107,14 @@
 \ExplSyntaxOn
 \def\LT at array[#1]#2{%
   \UseTaggingSocket{tbl/init}
-  \@kernel at refstepcounter{table}\stepcounter{LT at tables}
-  \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+  \tl_if_empty:eTF { \LTcaptype }
+    {
+      \tl_gset:Ne \@currentHref {LT at tables.\theHLT at tables}
+    }
+    {
+      \@kernel at refstepcounter{\LTcaptype}\stepcounter{LT at tables}
+      \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}}
+    }
   \tbl_gzero_row_count:
   \UseTaggingSocket{tbl/longtable/init}
   \if l#1%
@@ -220,7 +228,13 @@
     \dimen@\pagegoal\advance\dimen at -\ht\LT at foot\pagegoal\dimen@
     \maxdepth\z@
   \fi
-  \MakeLinkTarget{table}
+  \tl_if_empty:eTF{\LTcaptype}
+    {
+      \MakeLinkTarget{LT at tables}
+    }
+    {
+      \MakeLinkTarget{\LTcaptype}
+    }
   \ifvoid\LT at firsthead\copy\LT at head\else\box\LT at firsthead\fi\nobreak
   \UseTaggingSocket{tbl/longtable/head}
   \output{\LT at output}}
@@ -245,7 +259,11 @@
   \ifx\LT at save@row\LT@@save at row
   \else
     \LT at warn{Column~ widths~ have~ changed\MessageBreak
-             in~ table~ \thetable}%
+             in~
+               \tl_if_empty:eTF{\LTcaptype}
+                 {longtable~ \theLT at tables}
+                 {\LTcaptype\c_space_tl\use:c{the\LTcaptype}}
+             }
     \LT at final@warn
   \fi
   \endgraf\penalty -\LT at end@pen
@@ -431,17 +449,22 @@
     \tbl_gdecr_row_count:
     \penalty\@M}
   \@gtempa}
-\ExplSyntaxOff
 \def\LT at caption{%
   \noalign\bgroup
     \@ifnextchar[{\egroup\LT at c@ption\@firstofone}\LT at capti@n}
-\def\LT at c@ption#1[#2]#3{%
-  \LT at makecaption#1\fnum at table{#3}%
-  \def\@tempa{#2}%
-  \ifx\@tempa\@empty\else
-     {\let\\\space
-     \addcontentsline{\ext at table}{table}{\protect\numberline{\thetable}{#2}}}%
-  \fi}
+\def\LT at c@ption#1[#2]#3{
+  \tl_if_empty:eTF{\LTcaptype}
+    {\LT at makecaption\@gobble{}{#3}}
+    {\LT at makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3}
+    \def\@tempa{#2}
+    \ifx\@tempa\@empty\else
+      {\let\\\space
+      \addcontentsline
+        {\@nameuse{ext@\LTcaptype}}
+        {\LTcaptype}
+        {\protect\numberline{\@nameuse{the\LTcaptype}}{#2}}}
+    \fi}}
+\ExplSyntaxOff
 \def\LT at capti@n{%
   \@ifstar
     {\egroup\LT at c@ption\@gobble[]}%
@@ -506,6 +529,13 @@
      {
        \crcr
        \noalign{
+       \int_step_inline:nn
+         { \LT at rows }
+         {
+           \seq_gput_left:ce
+             {g__tbl_\cs_to_str:N #1 _rows_seq }
+             { \int_eval:n {\g__tbl_row_int - ##1 } }
+         }
          \tbl_gdecr_row_count:         % undo the increment
          \int_gset:Nn \LT at rows { \LTchunksize }
        }

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/multicol.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/multicol.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -35,7 +35,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %% Package `multicol' to use with LaTeX2e
-%% Copyright 1989-2023 Frank Mittelbach
+%% Copyright 1989-2024 Frank Mittelbach
 %%
 %%  In addition to the terms of LPPL any distributed version
 %%  (unchanged or modified) of multicol has to keep the statement
@@ -92,7 +92,7 @@
 %% not for the payment of a license fee per se (which might or might
 %% not follow from this evaluation).
 %%
-%% The license fee, if any, can be payed either to the LaTeX fund
+%% The license fee, if any, can be paid either to the LaTeX fund
 %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
 %% the program who can be contacted at
 %%
@@ -105,7 +105,8 @@
 \DeclareCurrentRelease{}{2021-11-15}
 
 \ProvidesPackage{multicol}
-          [2024/05/23 v1.9h  multicolumn formatting (FMi)]
+          [2024/07/01 v1.9h  multicolumn formatting (FMi)]
+
 \DeclareOption{twocolumn}
    {\PackageWarning{multicol}{May not work
              with the twocolumn option}}

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thb.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thb.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thb.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thc.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thc.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thcb.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thcb.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/theorem.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/theorem.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thm.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thm.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thm.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thmb.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thmb.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/texmf-dist/tex/latex-dev/tools/thp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/tools/thp.sty	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/texmf-dist/tex/latex-dev/tools/thp.sty	2024-08-15 20:11:34 UTC (rev 72039)
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
 %%
 %% Package `theorem' to use with LaTeX2e
 %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.

Modified: trunk/Master/tlpkg/bin/c2lx
===================================================================
--- trunk/Master/tlpkg/bin/c2lx	2024-08-15 20:01:24 UTC (rev 72038)
+++ trunk/Master/tlpkg/bin/c2lx	2024-08-15 20:11:34 UTC (rev 72039)
@@ -5,17 +5,20 @@
 # Front-front-end script for c2l to update
 # (with first arg "3") LaTeX3,
 # or (with first arg "e") LaTeX2e,
-# or (with first arg "dev") latex-dev,
-# each of which is comprised of several
-# packages that should be updated together. Look at the end of the output
-# for the summarized results for each package, e.g., to see if any files
-# ended up getting misplaced.
+# or (with first arg "dev") LaTeX-dev,
+# etc.,
+# each of which is comprised of several packages to be updated together.
 # 
-# Additional argument "p" runs place also (same as c2l --place).
+# Look at the end of the output for the summarized results for each
+# package, e.g., to see if any files ended up getting misplaced.
+# 
+# Final argument "p" runs place also (same as c2l --place).
 
-dirsfile=/tmp/@{[getlogin()]}-`id -u`.tlplace.dirs
-cp /dev/null $dirsfile.tmp
-cp /dev/null /tmp/@{[getlogin()]}-first
+placebase=${TMPDIR-/tmp}/`id -u`.tlplace
+dirsfile=$placebase.dirs
+firstfile=$placebase.first
+tmpfile=$placebase.tmp
+c2loutfile=$placebase.c2lout
 
 if test "x$1" = xe || test "x$1" = x2e; then
   shift; label=l2e
@@ -41,37 +44,29 @@
   shift; label=jxu
   pkgs="colorist crefthe einfart minimalist simplivre"
   #pkgs="$pkgs beaulivre  create-theorem mindflow projlib q-and-a homework lebhart"
-elif test "x$1" = xluamath-all; then
-  shift; label=luamath-all # not really all
-  pkgs="lualinalg luanumint luaplot"
-  #luagcd luamodulartables luatruthtable luacomplex luamaths luaset
 elif test "x$1" = xminim-all; then
   shift; label=minim
   pkgs="minim-hatching minim-math minim-mp minim-pdf minim-xmp minim"
-elif test "x$1" = xqyi; then
-  shift; label=qyi
-  pkgs="easybook spbmark"
-elif test "x$1" = xzref-all; then
-  shift; label=zref
-  pkgs="zref-check zref-clever zref-vario"
 else
   echo "$0: unknown latex or group type: $1" >&2
-  echo "$0: must be one of: e dev 3 3dev deng jxu qyi minim-all" >&2
+  echo "$0: must be one of: e dev 3 3dev ... minim-all (USTL)." >&2
   exit 1
 fi
 
 echo "`basename $0`: $label pkgs: $pkgs"
 
+# 

 for p in $pkgs; do
   echo "${label} pkg $p" >&2 # progress report of a sort
   printf "\f ${label} pkg $p\n"
-  c2l "$@" $p | tee /tmp/@{[getlogin()]}-c2l.out
-  sed -n "1,/`printf '\f'`/p" /tmp/@{[getlogin()]}-c2l.out >>/tmp/@{[getlogin()]}-first
-  echo >>/tmp/@{[getlogin()]}-first
-  cat $dirsfile >>$dirsfile.tmp
+  # each c2l call creates various; combine the directory lists and output.
+  c2l "$@" $p | tee $c2loutfile
+  sed -n "1,/`printf '\f'`/p" $c2loutfile >>$firstfile # first part of output
+  echo >>$firstfile
+  cat $dirsfile >>$tmpfile
 done
 
-sort -u $dirsfile.tmp >$dirsfile
+sort -u $tmpfile >$dirsfile
 wc $dirsfile
 echo
-cat /tmp/@{[getlogin()]}-first
+cat $firstfile



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