summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/alltt.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ansinew.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/applemac.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ascii.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bezier.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk10.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk11.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk12.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex419
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1250.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1252.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1257.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp437.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp437de.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp850.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp852.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp858.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp865.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/decmulti.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/doc.sty24
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/docstrip.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/exscale.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fix-cm.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fleqn.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fleqn.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fltrace.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontenc.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.cfg10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.ltx10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.cfg10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.ltx10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/graphpap.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/hyphen.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/idx.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ifthen.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/inputenc.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/lablst.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx1947
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex209.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty1945
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexsym.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin1.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin10.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin2.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin3.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin4.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin5.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin9.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/leqno.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/leqno.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.lua2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltnews.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxguide.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/macce.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/makeidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/minimal.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/newlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/next.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/nfssfont.tex8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/oldlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omllcmm.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/openbib.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.cfg10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/proc.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/proc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/sfonts.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/shortvrb.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/showidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size10.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size11.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size12.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/source2edoc.cls87
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/structuredlog.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/syntonly.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2benc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/testpage.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp.sty3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tracefnt.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmssq.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ulasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ullasy.fd4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8-2018.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/x2enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx55
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty16
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx719
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty82
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty9
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty35
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty5
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty109
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty3
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty11
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty743
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty300
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty22
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx48
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx3
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx3
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx7
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx44
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def3
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx49
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/afterpage.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/array-2023-11-01.sty375
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/array.sty103
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/bm.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/calc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/delarray.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/e.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/enumerate.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/ftnright.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/h.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/hhline.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/layout.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/longtable.sty111
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol.sty14
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/q.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/r.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/s.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/shellesc.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/showkeys.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/somedefs.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/tabularx.sty9
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thcb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/theorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thm.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thmb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thp.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/trace.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/varioref.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/verbatim.sty14
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/verbtest.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/x.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/xr.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/xspace.sty2
234 files changed, 6230 insertions, 1694 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/base/alltt.sty b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
index c7409fe365a..78c5e6a9241 100644
--- a/Master/texmf-dist/tex/latex-dev/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -49,7 +49,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{alltt}
- [2021/01/29 v2.0g defines alltt environment]
+ [2024/02/08 v2.0g defines alltt environment]
\begingroup
\lccode`\~=`\'
\lowercase{\endgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/ansinew.def b/Master/texmf-dist/tex/latex-dev/base/ansinew.def
index 8d1d09ea85a..071d9a49f8c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ansinew.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ansinew.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{ansinew.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/applemac.def b/Master/texmf-dist/tex/latex-dev/base/applemac.def
index 3fbc4cff384..85032040d8c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/applemac.def
+++ b/Master/texmf-dist/tex/latex-dev/base/applemac.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{applemac.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/article.cls b/Master/texmf-dist/tex/latex-dev/base/article.cls
index d5084603f5d..869bdc0db41 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/article.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{article}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/article.sty b/Master/texmf-dist/tex/latex-dev/base/article.sty
index cbd94b3df15..cc34e8a7443 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/article.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ascii.def b/Master/texmf-dist/tex/latex-dev/base/ascii.def
index 86dbf872058..0f08f8091f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ascii.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ascii.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{ascii.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\@inpenc@test
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
index 8bdc7c1b662..992a4278526 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,12 +42,10 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% Copyright (C) 2020-2023
+%% Copyright (C) 2020-2024
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0n}
-\providecommand\ltshipoutdate{2022/11/08}
\ProvidesPackage{atbegshi-ltx}
[2021/01/10 v1.0c
Emulation of the original atbegshi^^Jpackage with kernel methods]
diff --git a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
index 35b348e5456..76d4e001d38 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,8 +42,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0o}
-\providecommand\ltfilehookdate{2023/07/10}
\ProvidesPackage{atveryend-ltx}
[2020/08/19 v1.0a
Emulation of the original atveryend package^^Jwith kernel methods]
diff --git a/Master/texmf-dist/tex/latex-dev/base/bezier.sty b/Master/texmf-dist/tex/latex-dev/base/bezier.sty
index d786d454783..2bc376dfb33 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bezier.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/bezier.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk10.clo b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
index d0a27151f32..ba4701bead9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk11.clo b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
index 8fb3375e2ef..c0a4a4420f1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk12.clo b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
index 73b7d496dce..c4a5e3c2457 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/book.cls b/Master/texmf-dist/tex/latex-dev/base/book.cls
index 18f0e8d59d1..2838b7f1ce3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/book.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{book}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/book.sty b/Master/texmf-dist/tex/latex-dev/base/book.sty
index 86444d5aa97..b2cb30a2e14 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/book.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
new file mode 100644
index 00000000000..02410ad693a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
@@ -0,0 +1,419 @@
+%%
+%% This is file `checkencodingsubset.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lttextcomp.dtx (with options: `TS1check')
+%%
+%% This is a generated file.
+%%
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs.html
+%% (but please observe conditions on bug reports sent to that address!)
+%%
+%%
+%% Copyright (C) 1993-2024
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the LaTeX base system.
+%% --------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file has the LPPL maintenance status "maintained".
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% base system. You may however distribute the LaTeX base system without
+%% such generated files.
+%%
+%% The list of all files belonging to the LaTeX base distribution is
+%% given in the file `manifest.txt'. See also `legal.txt' for additional
+%% information.
+%%
+%% The list of derived (unpacked) files belonging to the distribution
+%% and covered by LPPL is defined by the unpacking scripts (with
+%% extension .ins) which are part of the distribution.
+%%% From File: lttextcomp.dtx
+\Providesfile{checkencodingsubset.tex}
+ [2024/01/27 v0.5a Figure out safe TS1 encoding subsets]
+\let\typeoutdetails\typeout
+\def\doesglyphexist#1#2{\iffontchar\testFont #1 0\else 1\relax \fi}
+\def\glyphmissingdetails#1#2{\iffontchar\testFont #1 \else
+ \typeoutdetails{\space\space\space ==> \string#2 (#1) is missing}\fi}
+\newif\ifsafesubencodingfound
+\newif\ifcoremisses
+\def\testgroup#1#2#3{%
+ \ifnum 0 = #1%
+ \ifnum #2<0
+ \typeoutdetails{All glyphs in core exist}%
+ \else
+ \typeoutdetails{All glyphs between sub-encoding #2 and #3 exist}%
+ \fi
+ \else
+ \ifnum #2<0
+ \typeoutdetails{**********************************}%
+ \typeoutdetails{Some glyphs are missing from core:}%
+ \coremissestrue
+ \ifsafesubencodingfound \else
+ \def\subencodingresult{#2}%
+ \fi
+ \else
+ \typeoutdetails{Some glyphs are missing from sub-encoding #2:}%
+ \ifsafesubencodingfound \else
+ \def\subencodingresult{#3}%
+ \fi
+ \fi
+ {\let\doesglyphexist \glyphmissingdetails #1}%
+ \safesubencodingfoundtrue
+ \fi
+}
+\def\currsubencoding#1{\csname TS1:\ifcsname TS1:#1\endcsname #1\else ?\fi\endcsname}
+\DeclareFixedFont\cmrFont{TS1}{cmr}{m}{n}{10pt}
+\def\testallgroups#1{%
+ \DeclareFixedFont\testFont{TS1}{#1}{m}{n}{10pt}%
+ \ifx\testFont\cmrFont
+ \typeout{***** Font family #1 not found ****}%
+ \else
+ \safesubencodingfoundfalse
+ \coremissesfalse
+ \typeoutdetails{^^J-----------------------------------------}%
+ \typeoutdetails{Testing font family #1^^J(currently TS1-sub-encoding
+ \currsubencoding{#1})}%
+ \typeout{-----------------------------------------}%
+ \testgroup{%
+ \doesglyphexist{21}{\texttwelveudash}%
+ \doesglyphexist{22}{\textthreequartersemdash}%
+ \doesglyphexist{134}{\textbardbl}%
+ \doesglyphexist{137}{\textcelsius}%
+ \doesglyphexist{178}{\texttwosuperior}%
+ \doesglyphexist{179}{\textthreesuperior}%
+ \doesglyphexist{185}{\textonesuperior}%
+ }{8}{9}%
+ \testgroup{%
+ \doesglyphexist{32}{\textblank}%
+ \doesglyphexist{148}{\textinterrobang}%
+ \doesglyphexist{149}{\textinterrobangdown}%
+ \doesglyphexist{191}{\texteuro}%
+ }{7}{8}%
+ \testgroup{%
+ \doesglyphexist{47}{\textfractionsolidus}%
+ \doesglyphexist{61}{\textminus}%
+ \doesglyphexist{87}{\textohm}%
+ \doesglyphexist{181}{\textmu}%
+ }{6}{7}%
+ \testgroup{%
+ \doesglyphexist{140}{\textflorin}%
+ \doesglyphexist{164}{\textcurrency}%
+ }{5}{6}%
+ \testgroup{%
+ \doesglyphexist{155}{\textnumero}%
+ \doesglyphexist{157}{\textestimated}%
+ }{4}{5}%
+ \testgroup{%
+ \doesglyphexist{24}{\textleftarrow}%
+ \doesglyphexist{25}{\textrightarrow}%
+ \doesglyphexist{94}{\textuparrow}%
+ \doesglyphexist{95}{\textdownarrow}%
+ \doesglyphexist{141}{\textcolonmonetary}%
+ \doesglyphexist{142}{\textwon}%
+ \doesglyphexist{146}{\textlira}%
+ \doesglyphexist{150}{\textdong}%
+ }{3}{4}%
+ \testgroup{%
+ \doesglyphexist{60}{\textlangle}%
+ \doesglyphexist{62}{\textrangle}%
+ }{2}{3}%
+ \testgroup{%
+ \doesglyphexist{0}{\capitalgrave}%
+ \doesglyphexist{1}{\capitalacute}%
+ \doesglyphexist{2}{\capitalcircumflex}%
+ \doesglyphexist{3}{\capitaltilde}%
+ \doesglyphexist{4}{\capitaldieresis}%
+ \doesglyphexist{5}{\capitalhungarumlaut}%
+ \doesglyphexist{6}{\capitalring}%
+ \doesglyphexist{7}{\capitalcaron}%
+ \doesglyphexist{8}{\capitalbreve}%
+ \doesglyphexist{9}{\capitalmacron}%
+ \doesglyphexist{10}{\capitaldotaccent}%
+ \doesglyphexist{11}{\capitalcedilla}%
+ \doesglyphexist{12}{\capitalogonek}%
+ \doesglyphexist{26}{\t}%
+ \doesglyphexist{27}{\capitaltie}%
+ \doesglyphexist{28}{\newtie}%
+ \doesglyphexist{29}{\capitalnewtie}%
+ \doesglyphexist{45}{\textdblhyphen}%
+ \doesglyphexist{48}{\textzerooldstyle}%
+ \doesglyphexist{49}{\textoneoldstyle}%
+ \doesglyphexist{50}{\texttwooldstyle}%
+ \doesglyphexist{51}{\textthreeoldstyle}%
+ \doesglyphexist{52}{\textfouroldstyle}%
+ \doesglyphexist{53}{\textfiveoldstyle}%
+ \doesglyphexist{54}{\textsixoldstyle}%
+ \doesglyphexist{55}{\textsevenoldstyle}%
+ \doesglyphexist{56}{\texteightoldstyle}%
+ \doesglyphexist{57}{\textnineoldstyle}%
+ \doesglyphexist{77}{\textmho}%
+ \doesglyphexist{79}{\textbigcircle}%
+ \doesglyphexist{91}{\textlbrackdbl}%
+ \doesglyphexist{93}{\textrbrackdbl}%
+ \doesglyphexist{96}{\textasciigrave}%
+ \doesglyphexist{98}{\textborn}%
+ \doesglyphexist{99}{\textdivorced}%
+ \doesglyphexist{100}{\textdied}%
+ \doesglyphexist{108}{\textleaf}%
+ \doesglyphexist{109}{\textmarried}%
+ \doesglyphexist{110}{\textmusicalnote}%
+ \doesglyphexist{126}{\texttildelow}%
+ \doesglyphexist{127}{\textdblhyphenchar}%
+ \doesglyphexist{128}{\textasciibreve}%
+ \doesglyphexist{129}{\textasciicaron}%
+ \doesglyphexist{175}{\textasciimacron}%
+ \doesglyphexist{130}{\textacutedbl}%
+ \doesglyphexist{131}{\textgravedbl}%
+ \doesglyphexist{138}{\textdollaroldstyle}%
+ \doesglyphexist{139}{\textcentoldstyle}%
+ \doesglyphexist{143}{\textnaira}%
+ \doesglyphexist{144}{\textguarani}%
+ \doesglyphexist{145}{\textpeso}%
+ \doesglyphexist{147}{\textrecipe}%
+ \doesglyphexist{152}{\textpertenthousand}%
+ \doesglyphexist{153}{\textpilcrow}%
+ \doesglyphexist{154}{\textbaht}%
+ \doesglyphexist{156}{\textdiscount}%
+ \doesglyphexist{158}{\textopenbullet}%
+ \doesglyphexist{159}{\textservicemark}%
+ \doesglyphexist{160}{\textlquill}%
+ \doesglyphexist{161}{\textrquill}%
+ \doesglyphexist{168}{\textasciidieresis}%
+ \doesglyphexist{171}{\textcopyleft}%
+ \doesglyphexist{173}{\textcircledP}%
+ \doesglyphexist{180}{\textasciiacute}%
+ \doesglyphexist{184}{\textreferencemark}%
+ \doesglyphexist{187}{\textsurd}%
+ }{1}{2}%
+ \testgroup{%
+ \doesglyphexist{79}{\textcircled}% this is not a proper test because the symbol is
+ % usually available but not usable
+ }{0}{1}%
+ \testgroup{%
+ \doesglyphexist{13}{\textquotestraightbase}%
+ \doesglyphexist{18}{\textquotestraightdblbase}%
+ \doesglyphexist{23}{\textcapitalcompwordmark}%
+ \doesglyphexist{31}{\textascendercompwordmark}%
+ \doesglyphexist{36}{\textdollar}%
+ \doesglyphexist{39}{\textquotesingle}%
+ \doesglyphexist{42}{\textasteriskcentered}%
+ \doesglyphexist{132}{\textdagger}%
+ \doesglyphexist{133}{\textdaggerdbl}%
+ \doesglyphexist{135}{\textperthousand}%
+ \doesglyphexist{136}{\textbullet}%
+ \doesglyphexist{151}{\texttrademark}%
+ \doesglyphexist{162}{\textcent}%
+ \doesglyphexist{163}{\textsterling}%
+ \doesglyphexist{165}{\textyen}%
+ \doesglyphexist{166}{\textbrokenbar}%
+ \doesglyphexist{167}{\textsection}%
+ \doesglyphexist{169}{\textcopyright}%
+ \doesglyphexist{170}{\textordfeminine}%
+ \doesglyphexist{172}{\textlnot}%
+ \doesglyphexist{174}{\textregistered}%
+ \doesglyphexist{176}{\textdegree}%
+ \doesglyphexist{177}{\textpm}%
+ \doesglyphexist{182}{\textparagraph}%
+ \doesglyphexist{183}{\textperiodcentered}%
+ \doesglyphexist{186}{\textordmasculine}%
+ \doesglyphexist{188}{\textonequarter}%
+ \doesglyphexist{189}{\textonehalf}%
+ \doesglyphexist{190}{\textthreequarters}%
+ \doesglyphexist{214}{\texttimes}%
+ \doesglyphexist{246}{\textdiv}%
+ }{-1}{0}%
+ \ifsafesubencodingfound\else
+ \def\subencodingresult{0}%
+ \fi
+ \typeoutdetails{-----------------------------------------}%
+ \typeout{TS1 encoding subset for #1\ifcoremisses \space(ignoring core misses)\fi
+ \space (\ifnum\subencodingresult =
+ \currsubencoding{#1} ok\else bad\fi)}%
+ \typeout{Use sub-encoding \subencodingresult
+ \ifnum\subencodingresult = \currsubencoding{#1}\else
+ \space (not \currsubencoding{#1})\fi}
+ \typeout{-----------------------------------------^^J}%
+ \fi
+}
+\long\def\testallkerneldefinedfamilies{%
+\testallgroups{ccr}% {0}
+\testallgroups{cmbr}% {0}
+%%\testallgroups{cmr}% {0} % don't test this one as it is the fallback
+ % thus reports that the family is not found
+\testallgroups{cmss}% {0}
+\testallgroups{cmtl}% {0}
+\testallgroups{cmtt}% {0}
+\testallgroups{cmvtt}% {0}
+\testallgroups{pxr}% {0}
+\testallgroups{pxss}% {0}
+\testallgroups{pxtt}% {0}
+\testallgroups{qag}% {0}
+\testallgroups{qbk}% {0}
+\testallgroups{qcr}% {0}
+\testallgroups{qcs}% {0}
+\testallgroups{qhvc}% {0}
+\testallgroups{qhv}% {0}
+\testallgroups{qpl}% {0}
+\testallgroups{qtm}% {0}
+\testallgroups{qzc}% {0}
+\testallgroups{txr}% {0}
+\testallgroups{txss}% {0}
+\testallgroups{txtt}% {0}
+\testallgroups{zi4}% {9}
+%% not installed normally
+
+\testallgroups{lato-LF}% {0} % with a bunch of tofu inside --- should probably be changed
+\testallgroups{opensans-TLF}%{0} % with a bunch of tofu inside --- should probably be changed
+\testallgroups{cantarell-TLF}% {0} % with a bunch of tofu inside --- should probably be changed
+\testallgroups{fbb-LF}% {0} % missing centoldstyle ---> 2
+\testallgroups{tli}% {1} % with lots of tofu inside --- should probably be changed
+\testallgroups{Alegreya-OsF}% {2}
+\testallgroups{AlegreyaSans-OsF}% {2}
+\testallgroups{DejaVuSans-TLF}% {2}
+\testallgroups{DejaVuSansCondensed-TLF}% {2}
+\testallgroups{DejaVuSansMono-TLF}% {2} this is missing \textfractionsolidus which makes it 7 really
+\testallgroups{EBGaramond-LF}% {2}
+\testallgroups{Tempora-TLF}% {2}
+\testallgroups{Tempora-TOsF}% {2}
+\testallgroups{Arimo-TLF}% {3}
+\testallgroups{Crlt-TLF}% {3} changed from Carlito-
+\testallgroups{FiraSans-LF}% {3} should be 4
+\testallgroups{IBMPlexSans-TLF}% {3}
+\testallgroups{Merriwthr-OsF}% {3} changed from Merriweather- and should be 2
+\testallgroups{Montserrat-LF}% {3} now 2
+\testallgroups{MontserratAlternates-LF}%{3} now 2
+\testallgroups{SourceCodePro-TLF}% {3}
+\testallgroups{SourceCodePro-TOsF}% {3}
+\testallgroups{SourceSansPro-OsF}% {3}
+\testallgroups{SourceSerifPro-LF}% {3}
+\testallgroups{Tinos-TLF}% {3}
+\testallgroups{AccanthisADFStdNoThree-LF}%{4}
+\testallgroups{Cabin-TLF}% {4}
+\testallgroups{Caladea-TLF}% {4}
+\testallgroups{Chivo-LF}% {4}
+\testallgroups{ClearSans-TLF}% {4}
+\testallgroups{Coelacanth-LF}% {4}
+\testallgroups{CrimsonPro-LF}% {4}
+\testallgroups{FiraMono-TLF}% {4}
+\testallgroups{FiraMono-TOsF}% {4}
+\testallgroups{Go-TLF}% {4}
+\testallgroups{GoMono-TLF}% {4}
+\testallgroups{InriaSans-LF}% {4}
+\testallgroups{InriaSerif-LF}% {4}
+\testallgroups{LibertinusSans-LF}% {4}
+\testallgroups{LibertinusSerif-LF}% {4}
+\testallgroups{LibreBodoni-TLF}% {4}
+\testallgroups{LibreFranklin-TLF}% {4}
+\testallgroups{LinguisticsPro-LF}% {4}
+\testallgroups{LinguisticsPro-OsF}% {4}
+\testallgroups{LinuxBiolinumT-LF}% {4}
+\testallgroups{LinuxLibertineT-LF}% {4}
+\testallgroups{MerriwthrSans-OsF}% {4} name change and now 2
+\testallgroups{MintSpirit-LF}% {4}
+\testallgroups{MintSpiritNoTwo-LF}% {4}
+\testallgroups{PTMono-TLF}% {4}
+\testallgroups{PTSans-TLF}% {4}
+\testallgroups{PTSansCaption-TLF}% {4}
+\testallgroups{PTSansNarrow-TLF}% {4}
+\testallgroups{PTSerif-TLF}% {4}
+\testallgroups{PTSerifCaption-TLF}% {4}
+\testallgroups{Raleway-TLF}% {4}
+\testallgroups{Raleway-TOsF}% {4}
+\testallgroups{Roboto-LF}% {4}
+\testallgroups{RobotoMono-TLF}% {4}
+\testallgroups{RobotoSlab-TLF}% {4}
+\testallgroups{Rosario-LF}% {4}
+\testallgroups{SticksTooText-LF}% {4}
+\testallgroups{UniversalisADFStd-LF}%{4}
+\testallgroups{Almndr-OsF}% {5} name change
+\testallgroups{Baskervaldx-LF}% {5}
+\testallgroups{BaskervilleF-LF}% {5} now 2
+\testallgroups{Bttr-TLF}% {5} name changed from Bitter-...
+\testallgroups{Cinzel-LF}% {5}
+\testallgroups{CinzelDecorative-LF}%{5}
+\testallgroups{DejaVuSerif-TLF}% {5}
+\testallgroups{DejaVuSerifCondensed-TLF}% {5}
+\testallgroups{GilliusADF-LF}% {5}
+\testallgroups{charssil-TLF} %% missing should be 5
+\testallgroups{GilliusADFCond-LF}%{5}
+\testallgroups{GilliusADFNoTwo-LF}%{5}
+\testallgroups{GilliusADFNoTwoCond-LF}%{5}
+\testallgroups{Lbstr-LF}% {5} name change and should be 7
+\testallgroups{OldStandard-TLF}% {5}
+\testallgroups{PlyfrDisplay-LF}%{5} name change
+\testallgroups{PlyfrDisplay-OsF}% {5} name change
+\testallgroups{TheanoDidot-TLF}% {5}
+\testallgroups{TheanoDidot-TOsF}% {5}
+\testallgroups{TheanoModern-TLF}% {5}
+\testallgroups{TheanoModern-TOsF}%{5}
+\testallgroups{TheanoOldStyle-TLF}%{5}
+\testallgroups{TheanoOldStyle-TOsF}%{5}
+\testallgroups{Crimson-TLF}% {6}
+\testallgroups{IBMPlexMono-TLF}% {6} now 3
+\testallgroups{IBMPlexSerif-TLF}% {6} now 3
+\testallgroups{LibertinusMono-TLF}%{6} should be 8
+\testallgroups{LibertinusSerifDisplay-LF}%{6}
+\testallgroups{LinuxLibertineDisplayT-LF}%{6}
+\testallgroups{LinuxLibertineMonoT-LF}%{6}
+\testallgroups{LinuxLibertineMonoT-TLF}%{6}
+\testallgroups{Ovrlck-LF}% {6} name changed
+\testallgroups{CormorantGaramond-LF}%{7}
+\testallgroups{Heuristica-TLF}% {7}
+\testallgroups{Heuristica-TOsF}% {7}
+\testallgroups{IMFELLEnglish-TLF}%{7}
+\testallgroups{LibreBskvl-LF}% {7} %% wrong name LibreBaskerville-TLF
+\testallgroups{LibreCsln-LF}% {7} changed from LibreCaslon-
+\testallgroups{Mrcls-LF}% {7} %% wrong name Marcellus-LF
+\testallgroups{NotoSans-LF}% {7}
+\testallgroups{NotoSansMono-TLF}%{7} now 2
+\testallgroups{NotoSansMono-TOsF}%{7} now 2
+\testallgroups{NotoSerif-LF}% {7}
+\testallgroups{Quattro-LF}% {7} changed from Quattrocento-
+\testallgroups{QuattroSans-LF}% {7} changed from QuattrocentoSans-
+\testallgroups{XCharter-TLF}% {7} now 2
+\testallgroups{XCharter-TOsF}% {7} now 2
+\testallgroups{erewhon-LF}% {7} now 2
+\testallgroups{ComicNeue-TLF}% {7}
+\testallgroups{ComicNeueAngular-TLF}%{7}
+\testallgroups{Frm-LF}%{7} % the superiors are missing; name changed from Forum-LF
+\testallgroups{Cochineal-TLF}% {8} now 5
+\testallgroups{AlgolRevived-TLF}%{9}
+}
+\typeout{^^J=====================================================================}
+\typeout{| Enter font family to check (or <enter> for kernel defined families)}
+\typeout{=====================================================================}
+\typein[\FontFamilyToCheck]{}
+\if!\FontFamilyToCheck!
+ \typeout{=====================================================================}
+ \typeout{| Detailed output? (default no)}
+ \typeout{=====================================================================}
+ \typein[\Details]{}
+ \if!\Details!
+ \def\typeoutdetails#1{}
+ \else
+ \let\typeoutdetails\typeout
+ \fi
+ \testallkerneldefinedfamilies
+\else
+ \let\typeoutdetails\typeout
+ \testallgroups\FontFamilyToCheck
+\fi
+\stop
+
+\endinput
+%%
+%% End of file `checkencodingsubset.tex'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1250.def b/Master/texmf-dist/tex/latex-dev/base/cp1250.def
index 275eae0b384..a4dfaed86d7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1250.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1250.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp1250.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1252.def b/Master/texmf-dist/tex/latex-dev/base/cp1252.def
index ed4ad38d00f..ae5a89e75cc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1252.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1252.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp1252.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1257.def b/Master/texmf-dist/tex/latex-dev/base/cp1257.def
index 24018898d18..78fdbcbdf76 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1257.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1257.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp1257.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437.def b/Master/texmf-dist/tex/latex-dev/base/cp437.def
index a23ff74b70e..17a2a2e7784 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp437.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp437.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp437.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437de.def b/Master/texmf-dist/tex/latex-dev/base/cp437de.def
index 207223c1784..edaccf6a2f4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp437de.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp437de.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp437de.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp850.def b/Master/texmf-dist/tex/latex-dev/base/cp850.def
index 50d9a083a32..40f3cb6eea9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp850.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp850.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp850.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
%%
%% If you need a Euro symbol, try cp858 instead.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp852.def b/Master/texmf-dist/tex/latex-dev/base/cp852.def
index d1a42292cfb..0fc6c20a561 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp852.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp852.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp852.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp858.def b/Master/texmf-dist/tex/latex-dev/base/cp858.def
index 6a4527b1152..5760e667642 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp858.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp858.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp858.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp865.def b/Master/texmf-dist/tex/latex-dev/base/cp865.def
index 1aeca6908f2..dc86f46bde3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp865.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp865.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{cp865.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/decmulti.def b/Master/texmf-dist/tex/latex-dev/base/decmulti.def
index 2c7282aaba1..ae98cc99728 100644
--- a/Master/texmf-dist/tex/latex-dev/base/decmulti.def
+++ b/Master/texmf-dist/tex/latex-dev/base/decmulti.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{decmulti.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/doc.sty b/Master/texmf-dist/tex/latex-dev/base/doc.sty
index 17ecafd6c6a..9fec881c4de 100644
--- a/Master/texmf-dist/tex/latex-dev/base/doc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/doc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -53,11 +53,11 @@
\DeclareCurrentRelease{v3}{2022-06-01}
\ProvidesPackage{doc}
- [2022/11/13 v3.0m
+ [2024/02/08 v3.0o
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-2022 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2023 Frank Mittelbach, all rights reserved.
@@ -119,7 +119,7 @@
\blank@linetrue\@@par
\penalty\interlinepenalty}
\obeylines
- \let\do\do@noligs \verbatim@nolig@list
+ \@noligs
\let\do\@makeother \dospecials
\global\@newlistfalse
\global\@minipagefalse
@@ -1140,6 +1140,10 @@
Maybe you wanted to use
'\string\NewDocElement'?}%
}
+\def\doc@ignoredinfo#1#2{%
+ \PackageInfo{doc}{Doc element '#1/#2' declaration
+ ignored}%
+}
\newcommand\NewDocElement[3][]{%
\@ifundefined{Print#2Name}%
{\@ifundefined{PrintDescribe#2}%
@@ -1152,6 +1156,18 @@
}\doc@declareerror
{#2}{#3}%
}
+\newcommand\ProvideDocElement[3][]{%
+ \@ifundefined{Print#2Name}%
+ {\@ifundefined{PrintDescribe#2}%
+ {\@ifundefined{#3}%
+ {\@ifundefined{end#3}%
+ {\@NewDocElement{#1}}%
+ \doc@ignoredinfo
+ }\doc@ignoredinfo
+ }\doc@ignoredinfo
+ }\doc@ignoredinfo
+ {#2}{#3}%
+}
\newcommand\RenewDocElement[3][]{%
\@ifundefined{Print#2Name}\doc@notdeclarederror
{\@ifundefined{PrintDescribe#2}\doc@notdeclarederror
diff --git a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
index 0cafcd2c109..e96e04ef127 100644
--- a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
\def\filename{docstrip.dtx}
\def\fileversion{v2.6b}
\def\filedate{2022-09-03}
-\def\docdate {2023-10-10}
+\def\docdate {2024-02-08}
%%
%% The docstrip program for use with TeX.
%% Copyright (C) 1989-1991 Frank Mittelbach
diff --git a/Master/texmf-dist/tex/latex-dev/base/exscale.sty b/Master/texmf-dist/tex/latex-dev/base/exscale.sty
index 6963e460dce..41d64bbffea 100644
--- a/Master/texmf-dist/tex/latex-dev/base/exscale.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/exscale.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
index a3b9cdb159d..e16030b13e5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
index 6ad616e364a..a5f6f4cc948 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/flafter.sty b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
index 1e63489fc05..b1ec0552512 100644
--- a/Master/texmf-dist/tex/latex-dev/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
index 2c359bb5140..f2a45b8ade4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
index 87a4373fcad..56fb8376599 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
index 6b6c5d2b48e..f372c6da667 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
index 4e2ab3f175b..0eb19b6f6a0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -90,7 +90,11 @@
{}{\PackageError{fontenc}%
{Encoding file `\reserved@f' not found.%
\MessageBreak
- You might have misspelt the name of the encoding}%
+ You might have misspelled the name of the encoding
+ \MessageBreak
+ or a required support package (e.g., cyrillic) is
+ \MessageBreak
+ missing in your installation}%
{Necessary code for this encoding was not
loaded.\MessageBreak
Thus calling the encoding later on will
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
index 90df936090f..eca079d15b3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -35,11 +35,11 @@
%% the system are in the document `cfgguide.tex'.
%%
%%
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2021/01/15 v3.0i LaTeX Kernel
-(Uncustomized math
- font setup)]
+ [2024/02/09 v3.0i LaTeX Kernel
+ (Uncustomized math font setup)
+]
%%
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
index f7b757f2352..a7dd9cc44ad 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -35,11 +35,11 @@
%% the system are in the document `cfgguide.tex'.
%%
%%
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2021/01/15 v3.0i LaTeX Kernel
-(Math
- font setup)]
+ [2024/02/09 v3.0i LaTeX Kernel
+ (Math font setup)
+]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
\DeclareFontEncoding{OML}{}{}
\DeclareFontEncoding{OMS}{}{}
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
index 5dfa252040f..b37c4407d63 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -35,11 +35,11 @@
%% the system are in the document `cfgguide.tex'.
%%
%%
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2021/01/15 v3.0i LaTeX Kernel
-(Uncustomized text
- font setup)]
+ [2024/02/09 v3.0i LaTeX Kernel
+ (Uncustomized text font setup)
+]
%%
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
index 5acce723ccf..ec6ce8ed910 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -35,11 +35,11 @@
%% the system are in the document `cfgguide.tex'.
%%
%%
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2021/01/15 v3.0i LaTeX Kernel
-(Text
- font setup)]
+ [2024/02/09 v3.0i LaTeX Kernel
+ (Text font setup)
+]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
\input {omlenc.def}
\input {omsenc.def}
diff --git a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
index d13dd84d277..07b03c71b7c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
index 4a33216714a..81358f46845 100644
--- a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/idx.tex b/Master/texmf-dist/tex/latex-dev/base/idx.tex
index 04c8ef69591..001595bb7d5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/idx.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/idx.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
index db0c04e05d0..b093138e992 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
index f1861718935..8d4a01b46d2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{inputenc}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\def\DeclareInputMath#1{%
\@inpenc@test
\bgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/lablst.tex b/Master/texmf-dist/tex/latex-dev/base/lablst.tex
index b0a3ac1ab60..961928d5ad8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/lablst.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/lablst.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index fe599414688..34779382a60 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -14,6 +14,7 @@
%% lthooks.dtx (with options: `2ekernel')
%% ltcmdhooks.dtx (with options: `2ekernel')
%% ltsockets.dtx (with options: `2ekernel')
+%% lttemplates.dtx (with options: `2ekernel')
%% ltalloc.dtx (with options: `2ekernel')
%% ltcntrl.dtx (with options: `2ekernel')
%% lterror.dtx (with options: `2ekernel')
@@ -54,6 +55,7 @@
%% ltfilehook.dtx (with options: `2ekernel')
%% ltshipout.dtx (with options: `2ekernel')
%% ltoutput.dtx (with options: `2ekernel')
+%% lttagging.dtx (with options: `2ekernel')
%% ltfinal.dtx (with options: `2ekernel')
%%
%% This is a generated file.
@@ -63,7 +65,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -693,7 +695,7 @@
\tracinggroups\z@
\tracingparagraphs\z@
\tracingmacros\z@
- \tracinglostchars\@ne
+ \tracinglostchars\tw@
\tracingpages\z@
\tracingstats\z@
}%
@@ -708,7 +710,7 @@
\def\fmtname{LaTeX2e}
\edef\fmtversion
{2024-06-01}
-\def\patch@level{0}
+\def\patch@level{-1}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -1806,8 +1808,8 @@
\xdef#1{\the\toks@}%
\endgroup}
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2a}
-\def\ltcmddate{2023-08-19}
+\def\ltcmdversion{v1.2c}
+\def\ltcmddate{2024-02-08}
\message{document commands,}
\ExplSyntaxOn
\tl_new:N \l__cmd_arg_spec_tl
@@ -1888,8 +1890,6 @@
\cs_new_protected:Npn \__cmd_declare_cmd_internal:Nnnn #1#2#3#4
{
\tl_set:Nx \l__cmd_function_tl { \cs_to_str:N #1 }
- \tl_set:Nx \l__cmd_fn_tl
- { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
\__cmd_normalize_arg_spec:n {#2}
\exp_args:No \__cmd_prepare_signature:n \l__cmd_arg_spec_tl
\__cmd_declare_cmd_code:Nnn #1 {#2} {#3}
@@ -1897,12 +1897,60 @@
\__cmd_break_point:n {#2}
}
\cs_new_eq:NN \__cmd_break_point:n \use_none:n
-\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn
+\cs_new:Npn \__cmd_all_m_check:n #1
+ { \tl_map_function:nN {#1} \__cmd_all_m_check_aux:n }
+\cs_new:Npn \__cmd_all_m_check_aux:n #1
{
- \bool_if:NTF \l__cmd_grab_expandably_bool
- { \__cmd_declare_cmd_code_expandable:Nnn }
- { \__cmd_declare_cmd_code_aux:Nnn }
+ \str_if_eq:nnF {#1} { m }
+ {
+ \str_if_eq:nnF {#1} { + }
+ { X }
+ }
+ }
+\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn #1#2
+ {
+ \bool_lazy_any:nTF
+ {
+ { \l__cmd_environment_bool }
+ {
+ \bool_lazy_and_p:nn
+ { \l__cmd_some_short_bool }
+ { \l__cmd_some_long_bool }
+ }
+ { ! \tl_if_blank_p:e { \__cmd_all_m_check:n {#2} } }
+ }
+ {
+ \tl_set:Nx \l__cmd_fn_tl
+ { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
+ \bool_if:NTF \l__cmd_grab_expandably_bool
+ { \__cmd_declare_cmd_code_expandable:Nnn }
+ { \__cmd_declare_cmd_code_aux:Nnn }
+ }
+ { \__cmd_declare_cmd_optimized:Nnn }
+ #1 {#2}
}
+\cs_new_protected:Npn \__cmd_declare_cmd_optimized:Nnn #1#2#3
+ {
+ \bool_if:NTF \l__cmd_expandable_bool
+ { \cs_set_nopar:Npe }
+ { \cs_set_protected_nopar:Npe }
+ #1
+ {
+ \exp_not:N \__cmd_start_optimized:
+ \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+ }
+ \exp_args:Ncc \cs_generate_from_arg_count:NNnn
+ { \l__cmd_function_tl \c_space_tl code }
+ {
+ cs_set
+ \bool_if:NF \l__cmd_expandable_bool { _protected }
+ \bool_if:NF \l__cmd_some_long_bool { _nopar }
+ :Npn
+ }
+ \l__cmd_current_arg_int
+ {#3}
+ }
+\cs_new:Npn \__cmd_start_optimized: { }
\cs_new_protected:Npn \__cmd_declare_cmd_code_aux:Nnn #1#2#3
{
\cs_generate_from_arg_count:cNnn
@@ -2504,7 +2552,12 @@
\bool_if:NT \l__cmd_some_obey_spaces_bool
{
\msg_error:nnxx { cmd } { invalid-bang }
- { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+ { \__cmd_environment_or_command: }
+ {
+ \bool_if:NTF \l__cmd_obey_spaces_bool
+ { \tl_to_str:n {'#1'} }
+ { an~optional~argument~before~mandatory~ \tl_to_str:n {'#1'} }
+ }
\__cmd_bad_def:wn
}
\tl_clear:N \l__cmd_last_delimiters_tl
@@ -2826,9 +2879,10 @@
\use:x
{
\int_set:Nn \tex_escapechar:D { 92 }
- \exp_not:N \__cmd_cmd_type_cases:NnnnnF \exp_not:N #2
+ \exp_not:N \__cmd_cmd_type_cases:NnnnnnF \exp_not:N #2
{ \__cmd_copy_command:nnNN }
{ \__cmd_copy_expandable:nnNN }
+ { \__cmd_copy_optimized:nnNN }
{ \__cmd_copy_environment:nnNN }
{ \__cmd_copy_environment_end:nnNN }
{ \__cmd_cant_copy:nwn { non-ltcmd } }
@@ -2881,6 +2935,18 @@
#3
{ \exp_after:wN \__cmd_copy_expandable:NnNNNNnnn #4 {#1} {#2} }
}
+\cs_new_protected:Npn \__cmd_copy_optimized:nnNN #1#2#3#4
+ {
+ \cs_set_eq:cc { #1 ~ code } { #2 ~ code }
+ \token_if_protected_macro:NTF #4
+ { \cs_set_protected_nopar:Npe }
+ { \cs_set_nopar:Npe }
+ #3
+ {
+ \exp_not:N \__cmd_start_optimized:
+ \exp_not:c { #1 ~ code }
+ }
+ }
\cs_new:Npn \__cmd_copy_expandable:NnNNNNnnn #1 #2 #3 #4 #5 #6 #7 #8 #9
{
\exp_not:N #1 \exp_not:n { {#2} }
@@ -3001,9 +3067,10 @@
\use:x
{
\int_set:Nn \tex_escapechar:D { 92 }
- \exp_not:N \__cmd_cmd_type_cases:NnnnnF \exp_not:N #1
+ \exp_not:N \__cmd_cmd_type_cases:NnnnnnF \exp_not:N #1
{ \__cmd_show_command:N }
{ \__cmd_show_expandable:N }
+ { \__cmd_show_optimized:N }
{ \__cmd_show_environment:N }
{ \__cmd_show_environment_end:N }
{ \__cmd_cant_copy:nwn { non-ltcmd } }
@@ -3037,6 +3104,43 @@
-> \cs_replacement_spec:N #4
}
}
+\cs_new_protected:Npn \__cmd_show_optimized:N #1
+ {
+ \exp_args:Nc \__cmd_show_optimized:NN
+ { \cs_to_str:N #1 \c_space_tl code }
+ #1
+ }
+\cs_new_protected:Npn \__cmd_show_optimized:NN #1#2
+ {
+ \cs_set:Npe \__cmd_show_optimized_aux:N ##1
+ {
+ \c_space_tl \c_space_tl \c_hash_str ##1 :
+ \bool_lazy_or:nnT
+ { \token_if_long_macro_p:N #1 }
+ { \token_if_protected_long_macro_p:N #1 }
+ { + } m
+ \iow_newline:
+ }
+ \tl_show:e
+ {
+ \token_to_str:N #2 =
+ \bool_lazy_or:nnF
+ { \token_if_protected_macro_p:N #1 }
+ { \token_if_protected_long_macro_p:N #1 }
+ { expandable ~ } document~command:
+ \iow_newline:
+ \int_step_function:nN
+ {
+ \int_div_truncate:nn
+ { \tl_count:e { \cs_parameter_spec:N #1 } }
+ { 2 }
+ }
+ \__cmd_show_optimized_aux:N
+ ->
+ \cs_replacement_spec:N #1
+ }
+ }
+\cs_generate_variant:Nn \tl_count:n { e }
\cs_new_protected:Npn \__cmd_show_environment:N #1
{
\exp_after:wN \__cmd_show_environment:Nnnw #1 \q__cmd
@@ -4075,7 +4179,7 @@
#1 {#2} {#4}
\__cmd_tl_mapthread_loop:w #1#3 \q_mark
}
-\cs_new_protected:Npn \__cmd_cmd_type_cases:NnnnnF #1 #2 #3 #4 #5 #6
+\cs_new_protected:Npn \__cmd_cmd_type_cases:NnnnnnF #1 #2 #3 #4 #5 #6 #7
{
\exp_args:Ne \str_case_e:nnF
{
@@ -4085,20 +4189,21 @@
{
{ \exp_not:N \__cmd_start:nNNnnn } {#2}
{ \exp_not:N \__cmd_start_expandable:nNNNNn } {#3}
- { \exp_not:N \__cmd_start_env:nnnnn } {#4}
+ { \exp_not:N \__cmd_start_optimized: } {#4}
+ { \exp_not:N \__cmd_start_env:nnnnn } {#5}
{
\exp_after:wN \exp_not:N
\cs:w environment~
\exp_last_unbraced:Ne \use_none:nnn
{ \cs_to_str:N #1 } ~end~aux \cs_end:
- } {#5}
+ } {#6}
}
- {#6}
+ {#7}
}
\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1
{
- \__cmd_cmd_type_cases:NnnnnF #1
- { } { } { } { } { \use_iii:nnn }
+ \__cmd_cmd_type_cases:NnnnnnF #1
+ { } { } { } { } { } { \use_iii:nnn }
\use_i:nn
}
\cs_new_protected:Npn \__cmd_peek_nonspace:NTF
@@ -4154,10 +4259,8 @@
\bool_if:NTF \l__cmd_environment_bool
{ environment ~ ' \l__cmd_environment_str ' }
{
- command ~ '
- \exp_args:Nf \tl_trim_spaces:n
- { \exp_after:wN \token_to_str:N \l__cmd_fn_tl }
- '
+ command ~
+ ' \c_backslash_str \tl_to_str:N \l__cmd_function_tl '
}
}
\msg_new:nnnn { cmd } { arg-after-body }
@@ -4249,7 +4352,7 @@
{ Invalid~argument~prefix~'!'~in~#1. }
{
The~prefix~'!'~is~only~allowed~for~trailing~optional~arguments.~
- You~tried~to~apply~it~to~'#2'.
+ You~tried~to~apply~it~to~#2.
\c__cmd_ignore_def_tl
}
\msg_new:nnnn { cmd } { not-definable }
@@ -4539,8 +4642,6 @@
\ExplSyntaxOff
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.1f}
-\def\lthooksdate{2023/10/02}
\ExplSyntaxOn
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -4862,7 +4963,8 @@
\msg_error:nnnnn { hooks } { set-top-level }
{ for } { SetDefaultHookLabel } {#1}
}
- { \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
+ { \exp_args:Nx
+ \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
}
\cs_new_protected:Npn \__hook_set_default_label:n #1
{
@@ -4996,7 +5098,8 @@
\__hook_gput_next_do:nn
{#1}
}
-\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+\prg_new_protected_conditional:Npnn
+ \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
\__hook_if_generic:nTF {#5}
@@ -5082,7 +5185,8 @@
\str_if_eq:nnTF {#2} { top-level }
{ \__hook_toplevel_gset:nn {#1} { } }
{
- \prop_gpop:cnNF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \prop_gpop:cnNF { g__hook_#1_code_prop }
+ {#2} \l__hook_return_tl
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
}
@@ -5093,7 +5197,8 @@
\__hook_if_deprecated_generic:nTF {#1}
{
\__hook_deprecated_generic_warn:n {#1}
- \__hook_do_deprecated_generic:Nn \__hook_gremove_code:nn {#1} {#2}
+ \__hook_do_deprecated_generic:Nn
+ \__hook_gremove_code:nn {#1} {#2}
}
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
@@ -5111,7 +5216,8 @@
{#1} {#2}
}
\cs_new_protected:Npn \__hook_cs_gput_right_fast:nnn #1 #2 #3
- { \cs_gset:cpx { __hook#1~#2 } { \exp_not:v { __hook#1~#2 } \exp_not:n {#3} } }
+ { \cs_gset:cpx { __hook#1~#2 }
+ { \exp_not:v { __hook#1~#2 } \exp_not:n {#3} } }
\cs_new_protected:Npn \__hook_cs_gput_right_slow:nnn #1 #2 #3
{
\cs_if_exist:cF { __hook#1~#2 }
@@ -5195,7 +5301,8 @@
}
\exp_last_unbraced:NNf
\cs_set:Npn \__hook_tmp:w { \__hook_parameter:n {#1} } { }
- \tl_set:Ne \l__hook_tmpa_tl { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
+ \tl_set:Ne \l__hook_tmpa_tl
+ { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
\cs_gset_protected:Npx \__hook_normalise_fn:nn ##1 ##2
{
\group_begin:
@@ -5333,27 +5440,34 @@
}
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_<_gset:nnn } \__hook_rule_before_gset:nnn
\cs_new_protected:Npn \__hook_rule_after_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
{ \__hook_label_ordered:nnTF {#3} {#2} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_>_gset:nnn } \__hook_rule_after_gset:nnn
\cs_new_protected:Npn \__hook_rule_voids_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { -> } { <- } }
}
\cs_new_protected:cpn { __hook_rule_incompatible-error_gset:nnn } #1#2#3
- { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
- { xE } }
+ { \__hook_tl_gset:cn
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ { xE }
+ }
\cs_new_protected:cpn { __hook_rule_incompatible-warning_gset:nnn } #1#2#3
- { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
- { xW } }
+ { \__hook_tl_gset:cn
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ { xW }
+ }
\cs_new_protected:Npn \__hook_rule_unrelated_gset:nnn #1#2#3 { }
\cs_new_protected:Npn \__hook_rule_gclear:nnn #1#2#3
{ \cs_undefine:c { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } }
@@ -5415,8 +5529,10 @@
{
\__hook_code_gset:ne {#1}
{
- \exp_not:c { __hook_toplevel~#1 } \__hook_braced_parameter:n {#1}
- \exp_not:c { __hook_next~#1 } \__hook_braced_parameter:n {#1}
+ \exp_not:c { __hook_toplevel~#1 }
+ \__hook_braced_parameter:n {#1}
+ \exp_not:c { __hook_next~#1 }
+ \__hook_braced_parameter:n {#1}
}
}
{
@@ -5493,7 +5609,8 @@
\int_compare:nNnT
{ \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
{
- \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1}
+ \tl_set:cn
+ { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1}
\tl_set:Nn \l__hook_rear_tl {##1}
}
}
@@ -5648,7 +5765,7 @@
hook~'#1'
\__hook_if_disabled:nF {#1}
{
- \exp_args:Nf \__hook_print_args:nn {#1}
+ \exp_args:Nne \__hook_print_args:nn {#1}
{
\int_eval:n
{ \str_count:e { \__hook_parameter:n {#1} } / 3 }
@@ -5883,19 +6000,22 @@
\cs_new_protected:Npn \hook_use_once:n #1
{
\__hook_if_execute_immediately:nF {#1}
- { \__hook_normalize_hook_args:Nn \__hook_use_once:nn { \use:n {#1} } { 0 } }
+ { \__hook_normalize_hook_args:Nn \__hook_use_once:nn
+ { \use:n {#1} } { 0 } }
}
\cs_new_protected:Npn \hook_use_once:nnw #1 #2
{
\__hook_if_execute_immediately:nF {#1}
- { \__hook_normalize_hook_args:Nn \__hook_use_once:nn { \use:n {#1} } {#2} }
+ { \__hook_normalize_hook_args:Nn \__hook_use_once:nn
+ { \use:n {#1} } {#2} }
}
\cs_new_protected:Npn \__hook_use_once:nn #1 #2
{
\__hook_preamble_hook:n {#1}
\__hook_use_once_set:n {#1}
\__hook_replacing_args_false:
- \__hook_cs_gput_right:nnn { _next } {#1} { \__hook_use_once_clear:n {#1} }
+ \__hook_cs_gput_right:nnn { _next } {#1}
+ { \__hook_use_once_clear:n {#1} }
\__hook_replacing_args_reset:
\__hook_if_usable:nTF {#1}
{ \__hook_use_initialized:n {#1} }
@@ -6083,7 +6203,8 @@
{ Cannot~add~code~to~disabled~hook~'#1'. }
{
The~hook~'#1'~you~tried~to~add~code~to~was~previously~disabled~
- with~\iow_char:N\\hook_disable_generic:n~or~\iow_char:N\\DisableGenericHook,~so~
+ with~\iow_char:N\\hook_disable_generic:n~or~
+ \iow_char:N\\DisableGenericHook,~so~
it~cannot~have~code~added~to~it.
}
\msg_new:nnn { hooks } { empty-label }
@@ -6306,12 +6427,10 @@
\__hook_curr_name_pop:
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltcmdhooks.dtx
-%% Copyright (C) 2020-2023
-%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0i}
-\def\ltcmdhooksdate{2023/06/16}
+%% Copyright (C) 2020-2024
+%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
+%%% From File: lthooks.dtx
\ExplSyntaxOn
\tl_new:N \g_hook_patch_action_list_tl
\int_new:N \l__hook_patch_num_args_int
@@ -6752,8 +6871,6 @@
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltsockets.dtx
-\def\ltsocketsversion{0.9a}
-\def\ltsocketsdate{2023-08-21}
\ExplSyntaxOn
\bool_new:N \g__socket_debug_bool
\cs_new_eq:NN \__socket_debug:n \use_none:n
@@ -6926,6 +7043,1232 @@
\cs_new_eq:NN \DebugSocketsOff \socket_debug_off:
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% From File: lttemplates.dtx
+\message{templates,}
+\ExplSyntaxOn
+\tl_const:Nn \c__template_code_root_tl { template~code~>~ }
+\tl_const:Nn \c__template_defaults_root_tl { template~defaults~>~ }
+\tl_const:Nn \c__template_instances_root_tl { template~instance~>~ }
+\tl_const:Nn \c__template_keytypes_root_tl { template~key~types~>~ }
+\tl_const:Nn \c__template_key_order_root_tl { template~key~order~>~ }
+\tl_const:Nn \c__template_values_root_tl { template~values~>~ }
+\tl_const:Nn \c__template_vars_root_tl { template~vars~>~ }
+\seq_const_from_clist:Nn \c__template_keytypes_arg_seq
+ { choice , function , instance }
+\prop_new:N \g__template_type_prop
+\tl_new:N \l__template_assignments_tl
+\tl_new:N \l__template_default_tl
+\bool_new:N \l__template_error_bool
+\bool_new:N \l__template_global_bool
+\tl_new:N \l__template_key_name_tl
+\tl_new:N \l__template_keytype_tl
+\tl_new:N \l__template_keytype_arg_tl
+\tl_new:N \l__template_value_tl
+\tl_new:N \l__template_var_tl
+\prop_new:N \l__template_keytypes_prop
+\seq_new:N \l__template_key_order_seq
+\prop_new:N \l__template_values_prop
+\prop_new:N \l__template_vars_prop
+\clist_new:N \l__template_tmp_clist
+\dim_new:N \l__template_tmp_dim
+\int_new:N \l__template_tmp_int
+\muskip_new:N \l__template_tmp_muskip
+\skip_new:N \l__template_tmp_skip
+\tl_new:N \l__template_tmp_tl
+\scan_new:N \s__template_mark
+\scan_new:N \s__template_stop
+\quark_new:N \q__template_nil
+\__kernel_quark_new_conditional:Nn \__template_quark_if_nil:N { F }
+\cs_new_protected:Npn \__template_execute_if_arg_agree:nnT #1#2#3
+ {
+ \prop_get:NnN \g__template_type_prop {#1} \l__template_tmp_tl
+ \int_compare:nNnTF {#2} = \l__template_tmp_tl
+ {#3}
+ {
+ \msg_error:nneee { template } { argument-number-mismatch }
+ {#1} { \l__template_tmp_tl } {#2}
+ }
+ }
+\cs_new_protected:Npn \__template_execute_if_code_exist:nnT #1#2#3
+ {
+ \cs_if_exist:cTF { \c__template_code_root_tl #1 / #2 }
+ {#3}
+ { \msg_error:nnnn { template } { no-template-code } {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_execute_if_keytype_exist:nT #1#2
+ {
+ \cs_if_exist:cTF { __template_store_value_ #1 :n }
+ {#2}
+ { \msg_error:nnn { template } { unknown-keytype } {#1} }
+ }
+\cs_generate_variant:Nn \__template_execute_if_keytype_exist:nT { V }
+\cs_new_protected:Npn \__template_execute_if_type_exist:nT #1#2
+ {
+ \prop_if_in:NnTF \g__template_type_prop {#1}
+ {#2}
+ { \msg_error:nnn { template } { unknown-type } {#1} }
+ }
+\cs_new_protected:Npn \__template_if_keys_exist:nnT #1#2#3
+ {
+ \cs_if_exist:cTF { \c__template_keytypes_root_tl #1 / #2 }
+ {#3}
+ { \msg_error:nnnn { template } { unknown-template } {#1} {#2} }
+ }
+\prg_new_conditional:Npnn \__template_if_key_value:n #1 { T , F , TF }
+ {
+ \str_if_eq:noTF { \KeyValue } { \tl_head:w #1 \q_nil \q_stop }
+ \prg_return_true:
+ \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \__template_if_key_value:n { V } { T , F , TF }
+\prg_new_conditional:Npnn \__template_if_instance_exist:nn #1#2 { T, F, TF }
+ {
+ \cs_if_exist:cTF { \c__template_instances_root_tl #1 / #2 }
+ \prg_return_true:
+ \prg_return_false:
+ }
+\prg_new_conditional:Npnn \__template_if_use_template:n #1 { TF }
+ {
+ \str_if_eq:noTF { \UseTemplate } { \tl_head:w #1 \q_nil \q_stop }
+ \prg_return_true:
+ \prg_return_false:
+}
+\cs_new_protected:Npn \__template_store_defaults:nn #1#2
+ {
+ \debug_suspend:
+ \prop_gclear_new:c { \c__template_defaults_root_tl #1 / #2 }
+ \prop_gset_eq:cN { \c__template_defaults_root_tl #1 / #2 }
+ \l__template_values_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_keytypes:nn #1#2
+ {
+ \debug_suspend:
+ \prop_if_exist:cTF { \c__template_keytypes_root_tl #1 / #2 }
+ {
+ \msg_info:nnnn { template } { declare-template-interface } {#1} {#2}
+ \prop_gclear:c { \c__template_keytypes_root_tl #1 / #2 }
+ }
+ { \prop_new:c { \c__template_keytypes_root_tl #1 / #2 } }
+ \prop_gset_eq:cN { \c__template_keytypes_root_tl #1 / #2 }
+ \l__template_keytypes_prop
+ \seq_gclear_new:c { \c__template_key_order_root_tl #1 / #2 }
+ \seq_gset_eq:cN { \c__template_key_order_root_tl #1 / #2 }
+ \l__template_key_order_seq
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_values:nn #1#2
+ {
+ \debug_suspend:
+ \prop_clear_new:c { \c__template_values_root_tl #1 / #2 }
+ \prop_set_eq:cN { \c__template_values_root_tl #1 / #2 }
+ \l__template_values_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_vars:nn #1#2
+ {
+ \debug_suspend:
+ \prop_gclear_new:c { \c__template_vars_root_tl #1 / #2 }
+ \prop_gset_eq:cN { \c__template_vars_root_tl #1 / #2 }
+ \l__template_vars_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_recover_defaults:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_defaults_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_values_prop
+ { \c__template_defaults_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_values_prop }
+ }
+\cs_new_protected:Npn \__template_recover_keytypes:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_keytypes_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_keytypes_prop
+ { \c__template_keytypes_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_keytypes_prop }
+ \seq_if_exist:cTF { \c__template_key_order_root_tl #1 / #2 }
+ {
+ \seq_set_eq:Nc \l__template_key_order_seq
+ { \c__template_key_order_root_tl #1 / #2 }
+ }
+ { \seq_clear:N \l__template_key_order_seq }
+ }
+\cs_new_protected:Npn \__template_recover_values:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_values_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_values_prop
+ { \c__template_values_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_values_prop }
+ }
+\cs_new_protected:Npn \__template_recover_vars:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_vars_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_vars_prop
+ { \c__template_vars_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_vars_prop }
+ }
+\cs_new_protected:Npn \__template_define_type:nn #1#2
+ {
+ \prop_if_in:NnTF \g__template_type_prop {#1}
+ { \msg_error:nnn { template } { type-already-defined } {#1} }
+ { \__template_declare_type:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_declare_type:nn #1#2
+ {
+ \int_set:Nn \l__template_tmp_int {#2}
+ \int_compare:nTF { 0 <= \l__template_tmp_int <= 9 }
+ {
+ \msg_info:nnnV { template } { declare-type }
+ {#1} \l__template_tmp_int
+ \prop_gput:NnV \g__template_type_prop {#1}
+ \l__template_tmp_int
+ }
+ {
+ \msg_error:nnnV { template } { bad-number-of-arguments }
+ {#1} \l__template_tmp_int
+ }
+ }
+\cs_new_protected:Npn \__template_declare_template_keys:nnnn #1#2#3#4
+ {
+ \__template_execute_if_type_exist:nT {#1}
+ {
+ \__template_execute_if_arg_agree:nnT {#1} {#3}
+ {
+ \prop_clear:N \l__template_values_prop
+ \prop_clear:N \l__template_keytypes_prop
+ \seq_clear:N \l__template_key_order_seq
+ \keyval_parse:NNn
+ \__template_parse_keys_elt:n \__template_parse_keys_elt:nn {#4}
+ \__template_store_defaults:nn {#1} {#2}
+ \__template_store_keytypes:nn {#1} {#2}
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt:n #1
+ {
+ \__template_split_keytype:n {#1}
+ \bool_if:NF \l__template_error_bool
+ {
+ \__template_execute_if_keytype_exist:VT \l__template_keytype_tl
+ {
+ \seq_map_function:NN \c__template_keytypes_arg_seq
+ \__template_parse_keys_elt_aux:n
+ \bool_if:NF \l__template_error_bool
+ {
+ \seq_if_in:NoTF \l__template_key_order_seq
+ \l__template_key_name_tl
+ {
+ \msg_error:nnV { template } { duplicate-key-interface }
+ \l__template_key_name_tl
+ }
+ { \__template_parse_keys_elt_aux: }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt_aux:n #1
+ {
+ \str_if_eq:VnT \l__template_keytype_tl {#1}
+ {
+ \tl_if_empty:NT \l__template_keytype_arg_tl
+ {
+ \msg_error:nnn { template } { keytype-requires-argument } {#1}
+ \bool_set_true:N \l__template_error_bool
+ \seq_map_break:
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt_aux:
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ {
+ \l__template_keytype_tl
+ \tl_if_empty:NF \l__template_keytype_arg_tl
+ { { \l__template_keytype_arg_tl } }
+ }
+ \prop_put:NVV \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \seq_put_right:NV \l__template_key_order_seq \l__template_key_name_tl
+ \str_if_eq:VnT \l__template_keytype_tl { choice }
+ {
+ \clist_if_in:NnT \l__template_keytype_arg_tl { unknown }
+ { \msg_error:nn { template } { choice-unknown-reserved } }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt:nn #1#2
+ {
+ \__template_parse_keys_elt:n {#1}
+ \use:c { __template_store_value_ \l__template_keytype_tl :n } {#2}
+ }
+\cs_new_protected:Npe \__template_split_keytype:n #1
+ {
+ \exp_not:N \bool_set_false:N \exp_not:N \l__template_error_bool
+ \tl_set:Nn \exp_not:N \l__template_tmp_tl {#1}
+ \tl_replace_all:Nnn \exp_not:N \l__template_tmp_tl { : } { \token_to_str:N : }
+ \tl_if_in:VnTF \exp_not:N \l__template_tmp_tl { \token_to_str:N : }
+ {
+ \exp_not:n
+ {
+ \tl_clear:N \l__template_key_name_tl
+ \exp_after:wN \__template_split_keytype_aux:w
+ \l__template_tmp_tl \s__template_stop
+ }
+ }
+ {
+ \exp_not:N \bool_set_true:N \exp_not:N \l__template_error_bool
+ \msg_error:nnn { template } { missing-keytype } {#1}
+ }
+ }
+\use:e
+ {
+ \cs_new_protected:Npn \exp_not:N \__template_split_keytype_aux:w
+ #1 \token_to_str:N : #2 \s__template_stop
+ {
+ \tl_put_right:Ne \exp_not:N \l__template_key_name_tl
+ {
+ \exp_not:N \tl_trim_spaces:e
+ { \exp_not:N \tl_to_str:n {#1} }
+ }
+ \tl_if_in:nnTF {#2} { \token_to_str:N : }
+ {
+ \tl_put_right:Nn \exp_not:N \l__template_key_name_tl
+ { \token_to_str:N : }
+ \exp_not:N \__template_split_keytype_aux:w #2 \s__template_stop
+ }
+ {
+ \exp_not:N \tl_if_empty:NTF \exp_not:N \l__template_key_name_tl
+ {
+ \msg_error:nnn { template } { empty-key-name }
+ { \token_to_str:N : #2 }
+ }
+ { \exp_not:N \__template_split_keytype_arg:n {#2} }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_split_keytype_arg:n #1
+ {
+ \tl_set:Ne \l__template_keytype_tl { \tl_trim_spaces:n {#1} }
+ \tl_clear:N \l__template_keytype_arg_tl
+ \cs_set_protected:Npn \__template_split_keytype_arg_aux:n ##1
+ {
+ \tl_if_in:nnT {#1} {##1}
+ {
+ \cs_set:Npn \__template_split_keytype_arg_aux:w
+ ####1 ##1 ####2 \s__template_stop
+ {
+ \tl_if_blank:nT {####1}
+ {
+ \tl_set:Ne \l__template_keytype_tl
+ { \tl_trim_spaces:n {##1} }
+ \tl_if_blank:nF {####2}
+ {
+ \tl_set:Ne \l__template_keytype_arg_tl
+ { \use:n ####2 }
+ }
+ \seq_map_break:
+ }
+ }
+ \__template_split_keytype_arg_aux:w #1 \s__template_stop
+ }
+ }
+ \seq_map_function:NN \c__template_keytypes_arg_seq
+ \__template_split_keytype_arg_aux:n
+ }
+\cs_generate_variant:Nn \__template_split_keytype_arg:n { V }
+\cs_new:Npn \__template_split_keytype_arg_aux:n #1 { }
+\cs_new:Npn \__template_split_keytype_arg_aux:w #1 \s__template_stop { }
+\cs_new_protected:Npn \__template_store_value_boolean:n #1
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#1} }
+\cs_new_protected:Npn \__template_store_value:n #1
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#1} }
+\cs_new_eq:NN \__template_store_value_choice:n \__template_store_value:n
+\cs_new_eq:NN \__template_store_value_function:n \__template_store_value:n
+\cs_new_eq:NN \__template_store_value_instance:n \__template_store_value:n
+\cs_new_protected:Npn \__template_store_value_aux:Nn #1#2
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#2} }
+\cs_new_protected:Npn \__template_store_value_integer:n
+ { \__template_store_value_aux:Nn \int_eval:n }
+\cs_new_protected:Npn \__template_store_value_length:n
+ { \__template_store_value_aux:Nn \dim_eval:n }
+\cs_new_protected:Npn \__template_store_value_muskip:n
+ { \__template_store_value_aux:Nn \muskip_eval:n }
+\cs_new_protected:Npn \__template_store_value_real:n
+ { \__template_store_value_aux:Nn \fp_eval:n }
+\cs_new_protected:Npn \__template_store_value_skip:n
+ { \__template_store_value_aux:Nn \skip_eval:n }
+\cs_new_protected:Npn \__template_store_value_tokenlist:n
+ { \__template_store_value_aux:Nn \use:n }
+\cs_new_eq:NN \__template_store_value_commalist:n \__template_store_value_tokenlist:n
+\cs_new_protected:Npn \__template_declare_template_code:nnnnn #1#2#3#4#5
+ {
+ \__template_execute_if_type_exist:nT {#1}
+ {
+ \__template_execute_if_arg_agree:nnT {#1} {#3}
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_store_key_implementation:nnn {#1} {#2} {#4}
+ \regex_match:nnTF { \c { AssignTemplateKeys } } {#5}
+ { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} }
+ {
+ \__template_declare_template_code:nnnn
+ {#1} {#2} {#3} { \AssignTemplateKeys #5 }
+ }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_declare_template_code:nnnn #1#2#3#4
+ {
+ \cs_if_exist:cT { \c__template_code_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-template-code } {#1} {#2} }
+ \cs_generate_from_arg_count:cNnn
+ { \c__template_code_root_tl #1 / #2 }
+ \cs_gset_protected:Npn {#3} {#4}
+ }
+\cs_new_protected:Npn \__template_store_key_implementation:nnn #1#2#3
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_keytypes:nn {#1} {#2}
+ \prop_clear:N \l__template_vars_prop
+ \keyval_parse:nnn
+ { \__template_parse_vars_elt:n } { \__template_parse_vars_elt:nnn { #1 / #2 } } {#3}
+ \__template_store_vars:nn {#1} {#2}
+ \prop_map_inline:Nn \l__template_keytypes_prop
+ { \msg_error:nnnnn { template } { key-not-implemented } {##1} {#2} {#1} }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt:n #1
+ { \msg_error:nnn { template } { key-no-variable } {#1} }
+\cs_new_protected:Npn \__template_parse_vars_elt:nnn #1#2#3
+ {
+ \tl_set:Ne \l__template_key_name_tl
+ { \tl_trim_spaces:e { \tl_to_str:n {#2} } }
+ \prop_get:NVNTF \l__template_keytypes_prop
+ \l__template_key_name_tl
+ \l__template_keytype_tl
+ {
+ \__template_split_keytype_arg:V \l__template_keytype_tl
+ \__template_parse_vars_elt_aux:nn {#1} {#3}
+ \prop_remove:NV \l__template_keytypes_prop \l__template_key_name_tl
+ }
+ { \msg_error:nnn { template } { unknown-key } {#2} }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nn #1#2
+ {
+ \__template_parse_vars_elt_aux:nw {#1} #2 global global \s__template_stop
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nw
+ #1#2 global #3 global #4 \s__template_stop
+ {
+ \tl_if_blank:nTF {#4}
+ { \__template_parse_vars_elt_aux:nnn {#1} { } {#2} }
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \__template_parse_vars_elt_aux:nne
+ {#1} { global } { \tl_trim_spaces:n {#3} }
+ }
+ { \msg_error:nnn { template } { bad-variable } { #2 global #3 } }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nnn #1#2#3
+ {
+ \str_case:VnF \l__template_keytype_tl
+ {
+ { choice } { \__template_implement_choices:nn {#1} {#3} }
+ { function }
+ {
+ \cs_if_exist:NF #3
+ { \cs_new:Npn #3 { } }
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ .code:n =
+ {
+ \cs_generate_from_arg_count:NNnn
+ \exp_not:N #3
+ \exp_not:c
+ { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
+ { \exp_not:V \l__template_keytype_arg_tl }
+ {##1}
+ }
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ { instance }
+ {
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ .code:n =
+ {
+ \exp_not:c
+ { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
+ \exp_not:N #3 { \UseInstance {##1} }
+ }
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ }
+ {
+ \tl_if_single:nTF {#3}
+ {
+ \cs_if_exist:NF #3
+ { \use:c { \__template_map_var_type: _new:N } #3 }
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ . \__template_map_var_type:
+ _ \str_if_eq:nnT {#1} { global } { g } set:N
+ = \exp_not:N #3
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ { \msg_error:nnn { template } { bad-variable } {#2#3} }
+ }
+ }
+\cs_generate_variant:Nn \__template_parse_vars_elt_aux:nnn { nne }
+\cs_new_protected:Npn \__template_parse_vars_elt_key:nn #1#2
+ {
+ \keys_define:ne { template / #1 }
+ { \l__template_key_name_tl #2 }
+ }
+\cs_new:Npn \__template_map_var_type:
+ {
+ \str_case:Vn \l__template_keytype_tl
+ {
+ { boolean } { bool }
+ { commalist } { clist }
+ { integer } { int }
+ { length } { dim }
+ { muskip } { muskip }
+ { real } { fp }
+ { skip } { skip }
+ { tokenlist } { tl }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choices:nn #1#2
+ {
+ \clist_set:NV \l__template_tmp_clist \l__template_keytype_arg_tl
+ \prop_put:NVn \l__template_vars_prop \l__template_key_name_tl { }
+ \keys_define:ne { template / #1 } { \l__template_key_name_tl .choice: }
+ \keyval_parse:nnn
+ { \__template_implement_choice_elt:n }
+ { \__template_implement_choice_elt:nnn {#1} }
+ {#2}
+ \prop_get:NVNT \l__template_values_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ { \__template_implement_choices_default: }
+ \clist_if_empty:NF \l__template_tmp_clist
+ {
+ \clist_map_inline:Nn \l__template_tmp_clist
+ { \msg_error:nnn { template } { choice-not-implemented } {##1} }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choices_default:
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl \l__template_tmp_tl }
+ \prop_if_in:NVF \l__template_vars_prop \l__template_tmp_tl
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl \l__template_tmp_tl }
+ \prop_if_in:NVF \l__template_vars_prop \l__template_tmp_tl
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \prop_get:NVN \l__template_values_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \msg_error:nnVV { template } { unknown-default-choice }
+ \l__template_key_name_tl
+ \l__template_key_name_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt:nnn #1#2#3
+ {
+ \clist_if_empty:NTF \l__template_tmp_clist
+ {
+ \str_if_eq:nnTF {#2} { unknown }
+ { \__template_implement_choice_elt_aux:nnn {#1} {#2} {#3} }
+ { \__template_implement_choice_elt_aux:n {#2} }
+ }
+ {
+ \clist_if_in:NnTF \l__template_tmp_clist {#2}
+ {
+ \clist_remove_all:Nn \l__template_tmp_clist {#2}
+ \__template_implement_choice_elt_aux:nnn {#1} {#2} {#3}
+ }
+ { \__template_implement_choice_elt_aux:n {#2} }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt_aux:n #1
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \msg_error:nnVn { template } { unknown-choice } \l__template_key_name_tl {#1}
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt_aux:nnn #1#2#3
+ {
+ \keys_define:ne { template / #1 }
+ { \l__template_key_name_tl / #2 .code:n = { \exp_not:n {#3} } }
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl #2 }
+ \prop_put:NVn \l__template_vars_prop \l__template_tmp_tl {#3}
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt:n #1
+ {
+ \msg_error:nnVn { template } { choice-requires-code }
+ \l__template_key_name_tl {#1}
+ }
+\cs_new_protected:Npn \__template_edit_defaults:nnn #1#2#3
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_parse_values:nnn {#1} {#2} {#3}
+ \__template_store_defaults:nn {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__template_parse_values:nnn #1#2#3
+ {
+ \__template_recover_keytypes:nn {#1} {#2}
+ \keyval_parse:NNn
+ \__template_parse_values_elt:n \__template_parse_values_elt:nn {#3}
+ }
+\cs_new_protected:Npn \__template_parse_values_elt:n #1
+ {
+ \bool_set_true:N \l__template_error_bool
+ \msg_error:nnn { template } { key-no-value } {#1}
+ }
+\cs_new_protected:Npn \__template_parse_values_elt:nn #1#2
+ {
+ \tl_set:Ne \l__template_key_name_tl
+ { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+ \prop_get:NVNTF \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ { \__template_parse_values_elt_aux:n {#2} }
+ { \msg_error:nnV { template } { unknown-key } \l__template_key_name_tl }
+ }
+\cs_new_protected:Npn \__template_parse_values_elt_aux:n #1
+ {
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \use:c { __template_store_value_ \l__template_keytype_tl :n } {#1}
+ }
+\cs_new_protected:Npn \__template_template_set_eq:nnn #1#2#3
+ {
+ \__template_recover_defaults:nn {#1} {#3}
+ \__template_store_defaults:nn {#1} {#2}
+ \__template_recover_keytypes:nn {#1} {#3}
+ \__template_store_keytypes:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#3}
+ \__template_store_vars:nn {#1} {#2}
+ \cs_if_exist:cT { \c__template_code_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-template-code } {#1} {#2} }
+ \cs_gset_eq:cc { \c__template_code_root_tl #1 / #2 }
+ { \c__template_code_root_tl #1 / #3 }
+ }
+\cs_new_protected:Npn \__template_declare_instance:nnnn #1#2#3#4
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_declare_instance_aux:nnnn {#1} {#2} {#3} {#4}
+ }
+ }
+\cs_new_protected:Npn \__template_declare_instance_aux:nnnn #1#2#3#4
+ {
+ \bool_set_false:N \l__template_error_bool
+ \__template_parse_values:nnn {#1} {#2} {#4}
+ \bool_if:NF \l__template_error_bool
+ {
+ \prop_put:Nnn \l__template_values_prop { from~template } {#2}
+ \__template_store_values:nn {#1} {#3}
+ \__template_convert_to_assignments:
+ \cs_if_exist:cT { \c__template_instances_root_tl #1 / #3 }
+ { \msg_info:nnnn { template } { declare-instance } {#3} {#1} }
+ \cs_set_protected:cpe { \c__template_instances_root_tl #1 / #3 }
+ {
+ \exp_not:N \__template_assignments_push:n
+ { \exp_not:V \l__template_assignments_tl }
+ \exp_not:c { \c__template_code_root_tl #1 / #2 }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_instance_set_eq:nnn #1#2#3
+ {
+ \__template_if_instance_exist:nnTF {#1} {#3}
+ {
+ \__template_recover_values:nn {#1} {#3}
+ \__template_store_values:nn {#1} {#2}
+ \cs_if_exist:cT { \c__template_instances_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-instance } {#2} {#1} }
+ \cs_set_eq:cc { \c__template_instances_root_tl #1 / #2 }
+ { \c__template_instances_root_tl #1 / #3 }
+ }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#3} }
+ }
+\cs_new_protected:Npn \__template_edit_instance:nnn #1#2#3
+ {
+ \__template_if_instance_exist:nnTF {#1} {#2}
+ {
+ \__template_recover_values:nn {#1} {#2}
+ \prop_get:NnN \l__template_values_prop { from~template }
+ \l__template_tmp_tl
+ \__template_edit_instance_aux:nVnn
+ {#1} \l__template_tmp_tl {#2} {#3}
+ }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_edit_instance_aux:nnnn #1#2#3#4
+ {
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_declare_instance_aux:nnnn {#1} {#2} {#3} {#4}
+ }
+\cs_generate_variant:Nn \__template_edit_instance_aux:nnnn { nV }
+\cs_new_protected:Npn \__template_convert_to_assignments:
+ {
+ \tl_clear:N \l__template_assignments_tl
+ \seq_map_function:NN \l__template_key_order_seq
+ \__template_convert_to_assignments_aux:n
+ }
+\cs_new_protected:Npn \__template_convert_to_assignments_aux:n #1
+ {
+ \prop_get:NnN \l__template_keytypes_prop {#1} \l__template_tmp_tl
+ \__template_convert_to_assignments_aux:nV {#1} \l__template_tmp_tl
+ }
+\cs_new_protected:Npn \__template_convert_to_assignments_aux:nn #1#2
+ {
+ \prop_get:NnNT \l__template_values_prop {#1} \l__template_value_tl
+ {
+ \prop_get:NnNTF \l__template_vars_prop {#1} \l__template_var_tl
+ {
+ \__template_split_keytype_arg:n {#2}
+ \str_if_eq:VnF \l__template_keytype_tl { choice }
+ {
+ \str_if_eq:VnF \l__template_keytype_tl { code }
+ { \__template_find_global: }
+ }
+ \tl_set:Nn \l__template_key_name_tl {#1}
+ \use:c { __template_assign_ \l__template_keytype_tl : }
+ }
+ { \msg_error:nnn { template } { unknown-attribute } {#1} }
+ }
+ }
+\cs_generate_variant:Nn \__template_convert_to_assignments_aux:nn { nV }
+\cs_new_protected:Npn \__template_find_global:
+ {
+ \bool_set_false:N \l__template_global_bool
+ \tl_if_in:onT \l__template_var_tl { global }
+ {
+ \exp_after:wN \__template_find_global_aux:w \l__template_var_tl \s__template_stop
+ }
+ }
+\cs_new_protected:Npn \__template_find_global_aux:w #1 global #2 \s__template_stop
+ {
+ \tl_set:Nn \l__template_var_tl {#2}
+ \bool_set_true:N \l__template_global_bool
+ }
+\cs_new_protected:Npn \__template_use_template:nnn #1#2#3
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_parse_values:nnn {#1} {#2} {#3}
+ \__template_convert_to_assignments:
+ \use:c { \c__template_code_root_tl #1 / #2 }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_boolean:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_boolean_aux:n { bool_gset } }
+ { \__template_assign_boolean_aux:n { bool_set } }
+ }
+\cs_new_protected:Npn \__template_assign_boolean_aux:n #1
+ {
+ \__template_if_key_value:VTF \l__template_value_tl
+ {
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 _eq:NN }
+ \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 _ \l__template_value_tl :N }
+ \exp_not:V \l__template_var_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_choice:
+ {
+ \__template_assign_choice_aux:eF
+ { \l__template_key_name_tl \c_space_tl \l__template_value_tl }
+ {
+ \__template_assign_choice_aux:eF
+ { \l__template_key_name_tl \c_space_tl unknown }
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \msg_error:nnVV { template } { unknown-choice }
+ \l__template_key_name_tl
+ \l__template_value_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_choice_aux:nF #1
+ {
+ \prop_get:NnNTF \l__template_vars_prop {#1} \l__template_tmp_tl
+ { \tl_put_right:NV \l__template_assignments_tl \l__template_tmp_tl }
+ }
+\cs_generate_variant:Nn \__template_assign_choice_aux:nF { e }
+\cs_new_protected:Npn \__template_assign_function:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_function_aux:N \cs_gset:Npn }
+ { \__template_assign_function_aux:N \cs_set:Npn }
+ }
+\cs_new_protected:Npn \__template_assign_function_aux:N #1
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \cs_generate_from_arg_count:NNnn
+ \exp_not:V \l__template_var_tl
+ \exp_not:N #1
+ { \exp_not:V \l__template_keytype_arg_tl }
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_instance:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_instance_aux:N \cs_gset_protected:Npn }
+ { \__template_assign_instance_aux:N \cs_set_protected:Npn }
+ }
+\cs_new_protected:Npn \__template_assign_instance_aux:N #1
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:N #1 \exp_not:V \l__template_var_tl
+ {
+ \__template_use_instance:nn
+ { \exp_not:V \l__template_keytype_arg_tl }
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_integer:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \int_gset:Nn }
+ { \__template_assign_variable:N \int_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_length:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \dim_gset:Nn }
+ { \__template_assign_variable:N \dim_set:Nn }
+}
+\cs_new_protected:Npn \__template_assign_muskip:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \muskip_gset:Nn }
+ { \__template_assign_variable:N \muskip_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_real:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \fp_gset:Nn }
+ { \__template_assign_variable:N \fp_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_skip:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \skip_gset:Nn }
+ { \__template_assign_variable:N \skip_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_tokenlist:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_tokenlist_aux:NN \tl_gset:NV \tl_gset:Nn }
+ { \__template_assign_tokenlist_aux:NN \tl_set:NV \tl_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_tokenlist_aux:NN #1#2
+ {
+ \__template_if_key_value:VTF \l__template_value_tl
+ {
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #1 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #2 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_commalist:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_tokenlist_aux:NN \clist_gset:NV \clist_gset:Nn }
+ { \__template_assign_tokenlist_aux:NN \clist_set:NV \clist_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_variable:N #1
+ {
+ \__template_if_key_value:VT \l__template_value_tl
+ { \__template_key_to_value: }
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #1 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+\cs_new_protected:Npn \__template_key_to_value:
+ { \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
+\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
+ {
+ \tl_set:Ne \l__template_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+ \prop_get:NVNTF \l__template_vars_prop \l__template_tmp_tl
+ \l__template_value_tl
+ {
+ \exp_after:wN \__template_key_to_value_auxii:w \l__template_value_tl
+ \s__template_mark global \q__template_nil \s__template_stop
+ }
+ { \msg_error:nnV { template } { unknown-attribute } \l__template_tmp_tl }
+ }
+\cs_new_protected:Npn \__template_key_to_value_auxii:w #1 global #2#3 \s__template_stop
+ {
+ \__template_quark_if_nil:NF #2
+ { \tl_set:Nn \l__template_value_tl {#2} }
+ }
+\cs_new_protected:Npn \__template_use_instance:nn #1#2
+ {
+ \__template_if_use_template:nTF {#2}
+ { \__template_use_instance_aux:nNnnn {#1} #2 }
+ { \__template_use_instance_aux:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_use_instance_aux:nNnnn #1#2#3#4#5
+ {
+ \str_if_eq:nnTF {#1} {#3}
+ { \__template_use_template:nnn {#3} {#4} {#5} }
+ { \msg_error:nnnn { template } { type-mismatch } {#1} {#3} }
+}
+\cs_new_protected:Npn \__template_use_instance_aux:nn #1#2
+ {
+ \__template_if_instance_exist:nnTF {#1} {#2}
+ { \use:c { \c__template_instances_root_tl #1 / #2 } }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#2} }
+ }
+\cs_new:Npn \__template_assignments_pop: { \l__template_assignments_tl }
+\cs_new_protected:Npn \__template_assignments_push:n #1
+ { \tl_set:Nn \l__template_assignments_tl {#1} }
+\cs_new_protected:Npn \__template_show_code:nn #1#2
+ { \cs_show:c { \c__template_code_root_tl #1 / #2 } }
+\cs_new_protected:Npn \__template_show_defaults:nn #1#2
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_values_prop
+ {#1} {#2} { default~values }
+ }
+ }
+\cs_new_protected:Npn \__template_show_keytypes:nn #1#2
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_keytypes:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_keytypes_prop
+ {#1} {#2} { interface }
+ }
+ }
+\cs_new_protected:Npn \__template_show_vars:nn #1#2
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_vars_prop
+ {#1} {#2} { variable~mapping }
+ }
+ }
+\cs_new_protected:Npn \__template_show:Nnnn #1#2#3#4
+ {
+ \msg_show:nneeee { template } { show-attribute }
+ { \tl_to_str:n {#2} }
+ { \tl_to_str:n {#3} }
+ { \tl_to_str:n {#4} }
+ { \prop_map_function:NN #1 \msg_show_item_unbraced:nn }
+ }
+\cs_new_protected:Npn \__template_show_values:nn #1#2
+ {
+ \__template_if_instance_exist:nnT {#1} {#2}
+ {
+ \__template_recover_values:nn {#1} {#2}
+ \msg_show:nneee { template } { show-values }
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ {
+ \prop_map_function:NN \l__template_values_prop
+ \msg_show_item_unbraced:nn
+ }
+ }
+ }
+\msg_new:nnnn { template } { argument-number-mismatch }
+ { Template~type~'#1'~takes~#2~argument(s). }
+ {
+ Templates~of~type~'#1'~require~#2~argument(s).\\
+ You~have~tried~to~make~a~template~for~'#1'~
+ with~#3~argument(s),~which~is~not~possible:~
+ the~number~of~arguments~must~agree.
+ }
+\msg_new:nnnn { template } { bad-number-of-arguments }
+ { Bad~number~of~arguments~for~template~type~'#1'. }
+ {
+ A~template~may~accept~between~0~and~9~arguments.\\
+ You~asked~to~use~#2~arguments:~this~is~not~supported.
+ }
+\msg_new:nnnn { template } { bad-variable }
+ { Incorrect~variable~description~'#1'. }
+ {
+ The~argument~'#1'~is~not~of~the~form \\
+ ~~'<variable>'\\
+ ~or~\\
+ ~~'global~<variable>'.\\
+ It~must~be~given~in~one~of~these~formats~to~be~used~in~a~template.
+ }
+\msg_new:nnnn { template } { choice-not-implemented }
+ { The~choice~'#1'~has~no~implementation. }
+ {
+ Each~choice~listed~in~the~interface~for~a~template~must~
+ have~an~implementation.
+ }
+\msg_new:nnnn { template } { choice-no-code }
+ { The~choice~'#1'~requires~implementation~details. }
+ {
+ When~creating~template~code~using~\DeclareTemplateCode,~
+ each~choice~name~must~have~an~associated~implementation.\\
+ This~should~be~given~after~a~'='~sign:~LaTeX~did~not~find~one.
+ }
+\msg_new:nnnn { template } { choice-requires-code }
+ { The~choice~'#2'~for~key~'#1'~requires~an~implementation. }
+ {
+ You~should~have~put:\\
+ \ \ #1~:~choice~{~#2 = <code> ~} \\
+ but~LaTeX~did~not~find~any~<code>.
+ }
+\msg_new:nnnn { template } { duplicate-key-interface }
+ { Key~'#1'~appears~twice~in~interface~definition~\msg_line_context:. }
+ {
+ Each~key~can~only~have~one~interface~declared~in~a~template.\\
+ LaTeX~found~two~interfaces~for~'#1'.
+ }
+\msg_new:nnnn { template } { keytype-requires-argument }
+ { The~key~type~'#1'~requires~an~argument~\msg_line_context:. }
+ {
+ You~should~have~put:\\
+ \ \ <key-name>~:~#1~{~<argument>~} \\
+ but~LaTeX~did~not~find~an~<argument>.
+ }
+\msg_new:nnnn { template } { invalid-keytype }
+ { The~key~'#1'~is~missing~a~key-type~\msg_line_context:. }
+ {
+ Each~key~in~a~template~requires~a~key-type,~given~in~the~form:\\
+ \ \ <key>~:~<key-type>\\
+ LaTeX~could~not~find~a~<key-type>~in~your~input.
+ }
+\msg_new:nnnn { template } { key-no-value }
+ { The~key~'#1'~has~no~value~\msg_line_context:. }
+ {
+ When~creating~an~instance~of~a~template~
+ every~key~listed~must~include~a~value:\\
+ \ \ <key>~=~<value>
+ }
+\msg_new:nnnn { template } { key-no-variable }
+ { The~key~'#1'~requires~implementation~details~\msg_line_context:. }
+ {
+ When~creating~template~code~using~\DeclareTemplateCode,~
+ each~key~name~must~have~an~associated~implementation.\\
+ This~should~be~given~after~a~'='~sign:~LaTeX~did~not~find~one.
+ }
+\msg_new:nnnn { template } { key-not-implemented }
+ { Key~'#1'~has~no~implementation~\msg_line_context:. }
+ {
+ The~definition~of~key~implementations~for~template~'#2'~
+ of~template~type~'#3'~does~not~include~any~details~for~key~'#1'.\\
+ The~key~was~declared~in~the~interface~definition,~
+ and~so~an~implementation~is~required.
+ }
+\msg_new:nnnn { template } { missing-keytype }
+ { The~key~'#1'~is~missing~a~key-type~\msg_line_context:. }
+ {
+ Key~interface~definitions~should~be~of~the~form\\
+ \ \ #1~:~<key-type>\\
+ but~LaTeX~could~not~find~a~<key-type>.
+ }
+\msg_new:nnnn { template } { no-template-code }
+ {
+ The~template~'#2'~of~type~'#1'~is~unknown~
+ or~has~no~implementation.
+ }
+ {
+ There~is~no~code~available~for~the~template~name~given.\\
+ This~should~be~given~using~\DeclareTemplateCode.
+ }
+\msg_new:nnnn { template } { type-already-defined }
+ { Template~type~'#1'~already~defined. }
+ {
+ You~have~used~\NewTemplateType~
+ with~a~template~type~that~has~already~been~defined.
+ }
+\msg_new:nnnn { template } { type-mismatch }
+ { Template~types~'#1'~and~'#2'~do~not~agree. }
+ {
+ You~are~trying~to~use~a~template~directly~with~\UseInstance
+ (or~a~similar~function),~but~the~template~types~do~not~match.
+ }
+\msg_new:nnnn { template } { unknown-attribute }
+ { The~template~attribute~'#1'~is~unknown. }
+ {
+ There~is~a~definition~in~the~current~template~reading\\
+ \ \ \token_to_str:N \KeyValue {~#1~} \\
+ but~there~is~no~key~called~'#1'.
+ }
+\msg_new:nnnn { template } { unknown-choice }
+ { The~choice~'#2'~was~not~declared~for~key~'#1'. }
+ {
+ The~key~'#1'~takes~a~fixed~list~of~choices~
+ and~this~list~does~not~include~'#2'.
+ }
+\msg_new:nnnn { template } { unknown-default-choice }
+ { The~default~choice~'#2'~was~not~declared~for~key~'#1'. }
+ {
+ The~key~'#1'~takes~a~fixed~list~of~choices~
+ and~this~list~does~not~include~'#2'.
+ }
+\msg_new:nnnn { template } { unknown-instance }
+ { The~instance~'#2'~of~type~'#1'~is~unknown. }
+ {
+ You~have~asked~to~use~an~instance~'#2',~
+ but~this~has~not~been~created.
+ }
+\msg_new:nnnn { template } { unknown-key }
+ { Unknown~template~key~'#1'. }
+ {
+ The~key~'#1'~was~not~declared~in~the~interface~
+ for~the~current~template.
+ }
+\msg_new:nnnn { template } { unknown-keytype }
+ { The~key-type~'#1'~is~unknown. }
+ {
+ Valid~key-types~are:\\
+ -~boolean;\\
+ -~choice;\\
+ -~commalist;\\
+ -~function;\\
+ -~instance;\\
+ -~integer;\\
+ -~length;\\
+ -~muskip;\\
+ -~real;\\
+ -~skip;\\
+ -~tokenlist.
+ }
+\msg_new:nnnn { template } { unknown-type }
+ { The~template~type~'#1'~is~unknown. }
+ {
+ A~template~type~needs~to~be~defined~with~\NewTemplateType
+ prior~to~using~it.
+ }
+\msg_new:nnnn { template } { unknown-template }
+ { The~template~'#2'~of~type~'#1'~is~unknown. }
+ {
+ No~interface~has~been~declared~for~a~template~
+ '#2'~of~template~type~'#1'.
+ }
+\msg_new:nnn { template } { declare-instance }
+ { Declaring~instance~~'#1'~of~type~#2~\msg_line_context:. }
+\msg_new:nnn { template } { declare-template-code }
+ { Declaring~code~for~template~'#2'~of~template~type~'#1'~\msg_line_context:. }
+\msg_new:nnn { template } { declare-template-interface }
+ {
+ Declaring~interface~for~template~'#2'~of~template~type~'#1'~
+ \msg_line_context:.
+ }
+\msg_new:nnn { template } { declare-type }
+ { Declaring~template~type~'#1'~taking~#2~argument(s)~\msg_line_context:. }
+\msg_new:nnn { template } { show-attribute }
+ {
+ The~template~'#2'~of~type~'#1'~has~
+ \tl_if_empty:nTF {#4} { no~#3. } { #3 : #4 }
+ }
+\msg_new:nnn { template } { show-values }
+ {
+ The~instance~'#2'~of~type~'#1'~has~
+ \tl_if_empty:nTF {#3} { no~values. } { values: #3 }
+ }
+\prop_gput:Nnn \g_msg_module_type_prop { template } { LaTeX }
+\cs_new_protected:Npn \NewTemplateType #1#2
+ { \__template_define_type:nn {#1} {#2} }
+\cs_new_protected:Npn \DeclareTemplateInterface #1#2#3#4
+ { \__template_declare_template_keys:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \DeclareTemplateCode #1#2#3#4#5
+ { \__template_declare_template_code:nnnnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \DeclareTemplateCopy #1#2#3
+ { \__template_template_set_eq:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \EditTemplateDefaults #1#2#3
+ { \__template_edit_defaults:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \UseTemplate #1#2#3
+ { \__template_use_template:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \DeclareInstance #1#2#3#4
+ { \__template_declare_instance:nnnn {#1} {#3} {#2} {#4} }
+\cs_new_protected:Npn \DeclareInstanceCopy #1#2#3
+ { \__template_instance_set_eq:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \EditInstance #1#2#3
+ { \__template_edit_instance:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \UseInstance #1#2
+ { \__template_use_instance:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateCode #1#2
+ { \__template_show_code:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateDefaults #1#2
+ { \__template_show_defaults:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateInterface #1#2
+ { \__template_show_keytypes:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateVariables #1#2
+ { \__template_show_vars:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowInstanceValues #1#2
+ { \__template_show_values:nn {#1} {#2} }
+\cs_new_protected:Npn \KeyValue #1 {#1}
+\cs_new_protected:Npn \AssignTemplateKeys { \__template_assignments_pop: }
+\cs_new_protected:Npn \SetTemplateKeys #1#2#3
+ { \keys_set_known:nnN { template / #1 / #2 } {#3} \l__template_tmp_clist }
+\ExplSyntaxOff
%%% From File: ltalloc.dtx
\chardef\@xxxii=32
\mathchardef\@Mi=10001
@@ -7243,11 +8586,9 @@ Type H <return> for immediate help.}%
\def\@par{\let\par\@@par\par}
\def\@restorepar{\def\par{\@par}}
%% File: ltpara.dtx
-%% Copyright (C) 2020-2023
+%% Copyright (C) 2020-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
-\def\ltparaversion{v1.0l}
-\def\ltparadate{2023/01/30}
\ExplSyntaxOn
@@ -7276,7 +8617,7 @@ Type H <return> for immediate help.}%
\@kernel@before@para@begin
\hook_use:n {para/begin}
\if_mode_horizontal: \else:
- \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
+ \msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
\tex_everypar:D{\g__para_standard_everypar_tl}
@@ -7374,11 +8715,9 @@ Type H <return> for immediate help.}%
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: ltmeta.dtx
-%% Copyright (C) 2021-2023
+%% Copyright (C) 2021-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
-\def\ltmetaversion{v1.0b}
-\def\ltmetadate{2022/05/18}
\let \IfDocumentMetadataTF \@secondoftwo
\protected\def\DocumentMetadata{%
\InputIfFileExists{documentmetadata-support.ltx}%
@@ -7963,7 +9302,15 @@ Type H <return> for immediate help.}%
\@latex@warning@no@line{inputting `#1' instead of obsolete `#2'}}
\@onlypreamble\@obsoletefile
\let\@filelist\@gobble
-\def\listfiles{%
+\ExplSyntaxOn
+\keys_define:nn { __kernel / listfiles }
+ {
+ hashes .legacy_if_set:n = @listfiles@hashes ,
+ sizes .legacy_if_set:n = @listfiles@sizes
+ }
+\ExplSyntaxOff
+\NewDocumentCommand\listfiles{O{}}{%
+ \SetKeys[__kernel/listfiles]{#1}%
\let\listfiles\relax
\def\@listfiles##1##2##3##4##5##6##7##8##9\@@{%
\def\reserved@d{\\}%
@@ -7988,8 +9335,30 @@ Type H <return> for immediate help.}%
\filename@area\filename@base\\\\\\\\\\\\\\\\\\\@@
\typeout{%
\filename@area\reserved@a
- \ifx\reserved@b\relax\else\@spaces\reserved@b\fi}}%
+ \ifx\reserved@b\relax\else\@spaces\reserved@b\fi
+ \ifnum0%
+ \if@listfiles@hashes1\fi
+ \if@listfiles@sizes1\fi
+ >0 %
+ ^^J\@spaces
+ (%
+ \if@listfiles@sizes
+ size \@dofilelist@size\@currname
+ \if@listfiles@hashes
+ , %
+ \fi
+ \fi
+ \if@listfiles@hashes
+ hash \@dofilelist@hash\@currname
+ \fi
+ )%
+ \fi
+ }}%
\typeout{ ***********^^J}}}
+\ExplSyntaxOn
+\cs_new_eq:NN \@dofilelist@hash \file_mdfive_hash:n
+\cs_new_eq:NN \@dofilelist@size \file_size:n
+\ExplSyntaxOff
\@onlypreamble\listfiles
\let\@dofilelist\relax
%%% From File: ltoutenc.dtx
@@ -8294,8 +9663,14 @@ Type H <return> for immediate help.}%
\@addtoreset{#1}{@ckpt}%
\global\expandafter\let\csname p@#1\endcsname\@empty
\expandafter
- \gdef\csname the#1\expandafter\endcsname\expandafter
- {\expandafter\@arabic\csname c@#1\endcsname}}
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
\def\@removefromreset#1#2{%
\@ifundefined{c@#2}\relax
@@ -8918,7 +10293,7 @@ Type H <return> for immediate help.}%
\def\@xxvpt{24.88}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltfssaxes.dtx
-%% Copyright (C) 1999-2020 Frank Mittelbach
+%% Copyright (C) 2019-2020 Frank Mittelbach
\def\DeclareFontSeriesChangeRule#1#2#3#4{%
\@namedef{series@#1@#2}{{#3}{#4}}}
\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
@@ -11691,8 +13066,7 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{lmss} {1}
\DeclareEncodingSubset{TS1}{lmssq} {1}
\DeclareEncodingSubset{TS1}{lmvtt} {1}
-\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM and
- % pertenthousand for some reason
+\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM and pertenthousand
\DeclareEncodingSubset{TS1}{ptmx} {2}
\DeclareEncodingSubset{TS1}{ptmj} {2}
\DeclareEncodingSubset{TS1}{ul8} {2}
@@ -11730,23 +13104,31 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{lato-*} {0} % with a bunch of tofu inside
\DeclareEncodingSubset{TS1}{opensans-*} {0} % with a bunch of tofu inside
\DeclareEncodingSubset{TS1}{cantarell-*} {0} % with a bunch of tofu inside
-\DeclareEncodingSubset{TS1}{fbb-*} {0} % missing centoldstyle
\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside
+\DeclareEncodingSubset{TS1}{fbb-*} {2} % missing centoldstyle
\DeclareEncodingSubset{TS1}{Alegreya-*} {2}
\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2}
+\DeclareEncodingSubset{TS1}{BaskervilleF-*} {2}
\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2}
\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2}
\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2}
\DeclareEncodingSubset{TS1}{EBGaramond-*} {2}
+\DeclareEncodingSubset{TS1}{Merriwthr-OsF} {2}
+\DeclareEncodingSubset{TS1}{MerriwthrSans-OsF} {2}
+\DeclareEncodingSubset{TS1}{Montserrat-*} {2}
+\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {2}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {2}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {2}
\DeclareEncodingSubset{TS1}{Tempora-TLF} {2}
\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2}
+\DeclareEncodingSubset{TS1}{XCharter-TLF} {2}
+\DeclareEncodingSubset{TS1}{XCharter-TOsF} {2}
+\DeclareEncodingSubset{TS1}{erewhon-*} {2}
\DeclareEncodingSubset{TS1}{Arimo-TLF} {3}
-\DeclareEncodingSubset{TS1}{Carlito-*} {3}
-\DeclareEncodingSubset{TS1}{FiraSans-*} {3}
+\DeclareEncodingSubset{TS1}{Crlt-*} {3}
+\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {3}
\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3}
-\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3}
-\DeclareEncodingSubset{TS1}{Montserrat-*} {3}
-\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3}
+\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {3}
\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3}
\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3}
\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3}
@@ -11761,6 +13143,7 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4}
\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4}
\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4}
+\DeclareEncodingSubset{TS1}{FiraSans-*} {4}
\DeclareEncodingSubset{TS1}{Go-TLF} {4}
\DeclareEncodingSubset{TS1}{GoMono-TLF} {4}
\DeclareEncodingSubset{TS1}{InriaSans-*} {4}
@@ -11773,7 +13156,6 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4}
\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4}
\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4}
-\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4}
\DeclareEncodingSubset{TS1}{MintSpirit-*} {4}
\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4}
\DeclareEncodingSubset{TS1}{PTMono-TLF} {4}
@@ -11790,57 +13172,50 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{Rosario-*} {4}
\DeclareEncodingSubset{TS1}{SticksTooText-*} {4}
\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4}
-\DeclareEncodingSubset{TS1}{Almendra-OsF} {5}
+\DeclareEncodingSubset{TS1}{Almndr-OsF} {5}
\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5}
-\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5}
-\DeclareEncodingSubset{TS1}{Bitter-TLF} {5}
+\DeclareEncodingSubset{TS1}{Bttr-TLF} {5}
\DeclareEncodingSubset{TS1}{Cinzel-LF} {5}
\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5}
+\DeclareEncodingSubset{TS1}{Cochineal-*} {5}
\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5}
\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5}
\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5}
-\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5}
\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5}
-\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5}
-\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5}
+\DeclareEncodingSubset{TS1}{PlyfrDisplay-TLF} {5}
+\DeclareEncodingSubset{TS1}{PlyfrDisplay-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5}
+\DeclareEncodingSubset{TS1}{charssil-TLF} {5}
\DeclareEncodingSubset{TS1}{Crimson-TLF} {6}
-\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6}
-\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6}
-\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6}
\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6}
\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6}
\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6}
\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6}
-\DeclareEncodingSubset{TS1}{Overlock-LF} {6}
+\DeclareEncodingSubset{TS1}{Ovrlck-LF} {6}
+\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7}
+\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7}
\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7}
\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7}
\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7}
\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7}
-\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7}
-\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7}
-\DeclareEncodingSubset{TS1}{Marcellus-LF} {7}
+\DeclareEncodingSubset{TS1}{LibreBskrvl-TLF} {7}
+\DeclareEncodingSubset{TS1}{LibreCsln-*} {7}
+\DeclareEncodingSubset{TS1}{Lbstr-LF} {7}
+\DeclareEncodingSubset{TS1}{Mrcls-LF} {7}
\DeclareEncodingSubset{TS1}{NotoSans-*} {7}
-\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7}
-\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7}
\DeclareEncodingSubset{TS1}{NotoSerif-*} {7}
-\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7}
-\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7}
-\DeclareEncodingSubset{TS1}{XCharter-TLF} {7}
-\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7}
-\DeclareEncodingSubset{TS1}{erewhon-*} {7}
-\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7}
-\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7}
-\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing
-\DeclareEncodingSubset{TS1}{Cochineal-*} {8}
+\DeclareEncodingSubset{TS1}{Quattro-LF} {7}
+\DeclareEncodingSubset{TS1}{QuattroSans-LF} {7}
+\DeclareEncodingSubset{TS1}{Frm-LF} {7} % the superiors are missing
+\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {8}
\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9}
\def\UseLegacyTextSymbols{%
\DeclareTextSymbolDefault{\textasteriskcentered}{OMS}%
@@ -11874,7 +13249,6 @@ Type H <return> for immediate help.}%
\DeclareTextSymbolDefault{\textlegacysection}{OMS}
-
%%% From File: ltpageno.dtx
\message{page nos.,}
\countdef\c@page=0 \c@page=1
@@ -11949,12 +13323,7 @@ Type H <return> for immediate help.}%
\NewDocumentCommand\Ref{s}
{\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}}
\def\@currentlabel{}
-%% File: ltproperties.dtx
-\def\ltpropertiesversion{1.0c}
-\def\ltpropertiesdate{2023-10-15}
-
-
-
+%%% From File: ltproperties.dtx
\ExplSyntaxOn
\cs_new_protected:Npn \property_new:nnnn #1#2#3#4
{
@@ -12007,7 +13376,7 @@ Type H <return> for immediate help.}%
{
\legacy_if:nT { @filesw }
{
- \iow_shipout_x:Nx \@auxout
+ \protected@write \@auxout {}
{
\token_to_str:N \new@label@record
{#1}
@@ -14728,11 +16097,9 @@ Type H <return> for immediate help.}%
\let\@cite@ofmt\hbox
\def\@biblabel#1{[#1]}
%% File: ltmarks.dtx
-%% Copyright (C) 2022-2023
+%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-\def\ltmarksversion{v1.0d}
-\def\ltmarksdate{2022/06/01}
%% \end{function}
\ExplSyntaxOn
@@ -14772,40 +16139,67 @@ Type H <return> for immediate help.}%
\tl_new:c { g__mark_last-column_last_ #1 _tl }
}
\box_new:N \l__mark_box
+\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
\tl_new:N \g__mark_new_top_tl
-\cs_new_protected:Npn \__mark_update_structure:nn #1#2
- {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+\cs_new_protected:Npn \__mark_extract_and_handle_marks:nn #1#2 {
\group_begin:
\dim_set_eq:NN \tex_splitmaxdepth:D \c_max_dim
\int_set_eq:NN \tex_vbadness:D \c_max_int
\dim_set_eq:NN \tex_vfuzz:D \c_max_dim
- \vbox_set_to_ht:Nnn \l__mark_box { -.5\c_max_dim }
+ \__mark_prepare_and_extract:nn {#1} {#2}
+ \group_end:
+ }
+\cs_new_protected:Npn \__mark_prepare_and_extract:nn #1#2 {
+ \vbox_set:Nn \l__mark_box
+ {
+ #2
+ \tex_unskip:D
+ \box_set_to_last:N \l__mark_box
+ \int_compare:nNnT \tex_lastnodetype:D < 0
{
- #2
- \tex_unskip:D
- \box_set_to_last:N \l__mark_box
- \int_compare:nNnT \tex_lastnodetype:D < 0
- {
- \box_if_vertical:NT \l__mark_box
- {
- \vbox_set_to_ht:Nnn \l__mark_box { -.5\c_max_dim }
- {
- \vbox_unpack:N \l__mark_box
- \tex_kern:D \c_zero_dim % ensure that box
- % is not empty
- }
- \int_compare:nNnT \tex_badness:D > 0
- { \vbox_unpack:N \l__mark_box }
- }
- }
- \tex_kern:D \c_zero_dim
+ \box_if_vertical:NT \l__mark_box
+ { \vbox_unpack:N \l__mark_box }
}
- \int_compare:nNnTF \tex_badness:D > 0
- {
- \vbox_set_split_to_ht:NNn \l__mark_box \l__mark_box \c_max_dim
- \seq_map_inline:Nn \g__mark_classes_seq
+ }
+ \__mark_vbox_set_split_to_maxdimen:NN \l__mark_ii_box \l__mark_box
+ \box_if_empty:NTF \l__mark_box
+ { #1 }
+ {
+ \__mark_debug:n { \iow_term:x
+ { Marks:~ mark~ extraction~needs~ recursion~
+ \msg_line_context: } }
+ \__mark_prepare_and_extract:nn {#1}
+ { \vbox_unpack:N \l__mark_ii_box
+ \vbox_unpack:N \l__mark_box }
+ }
+}
+\cs_set_eq:cN {Infinite~shrink~error~above~ignored~!}\c_max_dim
+\cs_new_protected:Npx \__mark_vbox_set_split_to_maxdimen:NN #1#2 {
+ \tl_set:Ne \exp_not:N \l__mark_saved_parameters_tl
+ {
+ \tex_interactionmode:D
+ \exp_not:N \int_use:N \tex_interactionmode:D \scan_stop:
+ \tex_escapechar:D
+ \exp_not:N \int_use:N \tex_escapechar:D \scan_stop:
+ }
+ \tex_escapechar:D -1 \scan_stop:
+ \tex_interactionmode:D 0 \scan_stop:
+ \tex_setbox:D #1 \tex_vsplit:D #2 to
+ \exp_not:N \use:n {
+ \use:c{Infinite~shrink~error~above~ignored~!}
+ }
+ \exp_not:N \l__mark_saved_parameters_tl
+}
+\tl_new:N \l__mark_saved_parameters_tl
+\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+ \__mark_extract_and_handle_marks:nn
+ { \__mark_update_structure_from_splitmarks:n {#1} }
+ { #2 }
+}
+\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
+ \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
\tl_gset_eq:cN { g__mark_#1_top_##1_tl } \g__mark_new_top_tl
@@ -14827,19 +16221,49 @@ Type H <return> for immediate help.}%
}
}
}
- }
- {
- \msg_error:nnn { mark } { infinite-shrinkage } {#1}
- \seq_map_inline:Nn \g__mark_classes_seq
+}
+\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_clear:N \g__mark_first_marks_tl
+ \tl_clear:N \g__mark_last_marks_tl
+ \__mark_extract_and_handle_marks:nn
+ \__mark_get_from_splitmarks:
+ { #1 }
+ \tl_set_eq:NN #2 \g__mark_first_marks_tl
+ \tl_set_eq:NN #3 \g__mark_last_marks_tl
+}
+\cs_new_protected:Npn \__mark_get_from_splitmarks: {
+ \seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset_eq:cc { g__mark_#1_top_ ##1_tl }
- { g__mark_#1_last_ ##1_tl }
- \tl_gset_eq:cc { g__mark_#1_first_##1_tl }
- { g__mark_#1_last_ ##1_tl }
+ \tl_gset:No \g__mark_tmp_tl
+ { \tex_splitbotmarks:D \use:c { c__mark_class_##1_mark } }
+
+ \tl_if_empty:NTF \g__mark_tmp_tl
+ {
+ \__mark_debug:n { \iow_term:x { Marks:~no~ marks~
+ for~ class~ '##1'~\msg_line_context: } }
+ }
+ {
+ \__mark_debug:n { \iow_term:x { Marks:~ extract~ last~
+ mark~ for~ class~ '##1'~ =~ \g__mark_tmp_tl } }
+ \tl_gput_right:Ne \g__mark_last_marks_tl
+ { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ \__mark_debug:n { \iow_term:x { Marks:~ extract~ first~
+ mark~ for~ class~ '##1'~ =~
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ } }
+ \tl_gput_right:Ne \g__mark_first_marks_tl
+ { \mark_insert:nn {##1}
+ {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
+ }
+ }
}
- }
- \group_end:
- }
+}
+\tl_new:N \g__mark_first_marks_tl
+\tl_new:N \g__mark_last_marks_tl
\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
@@ -14934,15 +16358,6 @@ Type H <return> for immediate help.}%
all~columns~have~been~assembled.
\c__msg_return_text_tl
}
-\msg_new:nnnn { mark } { infinite-shrinkage }
- { Infinite~shrinkage~found~in~'#1'. }
- {
- \c__msg_coding_error_text_tl
- The~mark~region~'#1'~contains~some~infinite~negative~glue~
- allowing~it~to~shrink~to~an~arbitrary~size.~
- This~makes~it~impossible~to~split~the~region~apart~to~
- get~at~its~marks.~They~are~lost.
- }
\bool_new:N \g__mark_debug_bool
\cs_new_eq:NN \__mark_debug:n \use_none:n
\cs_new_protected:Npn \mark_debug_on:
@@ -14995,6 +16410,9 @@ Type H <return> for immediate help.}%
\seq_map_inline:Nn \g__mark_classes_seq
{ \__mark_class_status:nn {#1} {##1} }
}
+\cs_new_protected:Npn \ShowMarksAt #1 {
+ \__mark_debug:n { \__mark_status:n {#1} }
+}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
\cs_new_eq:NN \InsertMark \mark_insert:nn
@@ -15010,11 +16428,11 @@ Type H <return> for immediate help.}%
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure:nn {page}
+ \__mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure:nn {page}
+ \__mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
\__mark_update_structure_alias:nn {previous-column}{previous-page}
@@ -15038,11 +16456,11 @@ Type H <return> for immediate help.}%
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure:nn {column}
+ \__mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure:nn {column}
+ \__mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
@@ -15474,6 +16892,11 @@ Type H <return> for immediate help.}%
\ifx#2\@empty\else\expandafter\zap@space\fi
#2}
\def\@fileswithoptions#1{%
+ \ifnum\currentgrouplevel>\z@
+ \@latex@error
+ {Loading a class or package in a group}%
+ {Classes and packages should only be loaded at the top level}%
+ \fi
\@ifnextchar[%]
{\@fileswith@ptions#1}%
{\@fileswith@ptions#1[]}}
@@ -16129,7 +17552,7 @@ Type H <return> for immediate help.}%
\clist_map_inline:cn { @raw@opt@ \@currname . \@currext }
{
\exp_args:Ne \__keys_options_class:nnn
- { \__keys_remove_equals:n {##1} }
+ { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
{##1} {#1}
}
}
@@ -16152,7 +17575,7 @@ Type H <return> for immediate help.}%
\clist_map_inline:Nn \@raw@classoptionslist
{
\exp_args:Ne \__keys_options_package:nnn
- { \__keys_remove_equals:n {##1} }
+ { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
{##1} {#1}
}
}
@@ -16260,8 +17683,6 @@ Type H <return> for immediate help.}%
{ \__keys_options_expand_module:Nn \keys_set:nn {#1} {#2} }
\ExplSyntaxOff
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0o}
-\providecommand\ltfilehookdate{2023/07/10}
\ExplSyntaxOn
\tl_new:N \CurrentFile
\tl_new:N \CurrentFilePath
@@ -16547,12 +17968,10 @@ Type H <return> for immediate help.}%
\declare@file@substitution{atveryend.sty}{atveryend-ltx.sty}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2023
+%% Copyright (C) 2020-2024
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0n}
-\providecommand\ltshipoutdate{2022/11/08}
\ExplSyntaxOn
\bool_new:N \g__shipout_debug_bool
\cs_new_eq:NN \__shipout_debug:n \use_none:n
@@ -18070,6 +19489,198 @@ Type H <return> for immediate help.}%
\let\topfigrule=\relax
\let\botfigrule=\relax
\let\dblfigrule=\relax
+%%% From File: lttagging.dtx
+\ExplSyntaxOn
+\cs_new_eq:NN \SuspendTagging \use_none:n
+\cs_new_eq:NN \ResumeTagging \use_none:n
+\AddToHook{begindocument/before}{
+ \cs_if_exist:NT \tag_stop:n
+ {
+ \cs_set:Npn \SuspendTagging #1 {
+ \tag_stop:n {#1}
+ }
+ \cs_set:Npn \ResumeTagging #1 { \tag_start:n {#1} }
+ }
+}
+\AddToHook{begindocument}[kernel]{
+ \cs_if_exist:NF \tag_if_active:T
+ {
+ \prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
+ { \prg_return_false: }
+ }
+}
+\cs_new_protected:Npn \tag_socket_use:n #1 { }
+\cs_new_protected:Npn \tag_socket_use:nn #1#2 { }
+\cs_new_protected:Npn \UseTaggingSocket #1 {
+ \int_case:nnF
+ { \int_use:c { c__socket_tagsupport/#1_args_int } }
+ {
+ 0 \prg_do_nothing:
+ 1 \use_none:n
+ 2 \use_none:nn
+ }
+ \ERRORusetaggingsocket % that should get a proper error message
+}
+\ExplSyntaxOff
+\NewSocket{tagsupport/tbl/cell/begin}{0}
+\NewSocket{tagsupport/tbl/cell/end}{0}
+\NewSocket{tagsupport/tbl/row/begin}{0}
+\NewSocket{tagsupport/tbl/row/end}{0}
+\NewSocket{tagsupport/tbl/pcell/begin}{0}
+\NewSocket{tagsupport/tbl/pcell/end}{0}
+\NewSocket{tagsupport/tbl/init}{0}
+\NewSocket{tagsupport/tbl/finalize}{0}
+
+\NewSocket{tagsupport/tbl/colspan}{1}
+
+\NewSocket{tagsupport/tbl/hmode/begin}{0}
+\NewSocket{tagsupport/tbl/hmode/end}{0}
+\NewSocket{tagsupport/tbl/vmode/begin}{0}
+\NewSocket{tagsupport/tbl/vmode/end}{0}
+\NewSocket{tagsupport/tbl/longtable/init}{0}
+\NewSocket{tagsupport/tbl/longtable/finalize}{0}
+\NewSocket{tagsupport/tbl/longtable/head}{0}
+\NewSocket{tagsupport/tbl/longtable/foot}{0}
+\ExplSyntaxOn
+\int_new:N \g__tbl_col_int
+\int_new:N \g__tbl_row_int
+\tl_new:N \g__tbl_span_tl
+\tl_new:N \g__tbl_table_cols_tl
+
+\tl_gset:Nn \g__tbl_span_tl {1}
+\tl_gset:Nn \g__tbl_table_cols_tl {0} % indicates outer level
+\tl_new:N \l__tbl_saved_col_tl
+\tl_new:N \l__tbl_saved_row_tl
+\tl_new:N \l__tbl_saved_span_tl
+\tl_new:N \l__tbl_saved_table_cols_tl
+
+\tl_set:Nn \l__tbl_saved_col_tl{0}
+\tl_set:Nn \l__tbl_saved_row_tl{0}
+\tl_set:Nn \l__tbl_saved_span_tl{1}
+\tl_set:Nn \l__tbl_saved_table_cols_tl{0} % indicates outer level
+\int_new:N \g__tbl_missing_cells_int
+\def\DebugTablesOn{
+ \cs_set_eq:NN \__tbl_trace:n \typeout
+}
+\def\DebugTablesOff{
+ \cs_set_eq:NN \__tbl_trace:n \use_none:n
+}
+\cs_new_eq:NN \__tbl_trace:n \use_none:n
+\cs_new_protected:Npn \tbl_update_cell_data: {
+ \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl }
+ \tl_gset:Nn \g__tbl_span_tl {1}
+}
+\cs_new:Npn \tbl_count_table_cols: {
+ \seq_set_split:NnV\l__tbl_tmpa_seq {&}\@preamble
+ \tl_gset:Ne \g__tbl_table_cols_tl { \seq_count:N \l__tbl_tmpa_seq }
+ \__tbl_trace:n { ==>~ Table~ has~ \g__tbl_table_cols_tl \space columns }
+}
+\seq_new:N \l__tbl_tmpa_seq
+\cs_new:Npn \tbl_count_missing_cells:n #1 {
+ \tag_if_active:T {
+ \int_compare:nNnT \g__tbl_col_int > 0
+ {
+ \int_gset:Nn \g__tbl_missing_cells_int
+ {
+ \g__tbl_table_cols_tl
+ - \g__tbl_col_int
+ - \g__tbl_span_tl
+ + 1
+ }
+ \int_compare:nNnT \g__tbl_missing_cells_int < 0 \ERRORmissingcells % should not happen
+ \__tbl_trace:n{==>~
+ (#1)~
+ This~ row~ needs~
+ \int_use:N \g__tbl_missing_cells_int \space
+ additional~ cell(s)
+ }
+ }
+ }
+}
+\cs_new_protected:Npn \tbl_save_outer_table_cols: {
+ \tl_set_eq:NN \l__tbl_saved_table_cols_tl \g__tbl_table_cols_tl
+}
+\cs_new_protected:Npn \tbl_init_cell_data_for_table: {
+ \tl_set:No \l__tbl_saved_col_tl {\int_use:N \g__tbl_col_int }
+ \tl_set:No \l__tbl_saved_row_tl {\int_use:N \g__tbl_row_int }
+ \tl_set_eq:NN \l__tbl_saved_span_tl \g__tbl_span_tl
+ \__tbl_trace:n { ==>~ saved~cell~data:~
+ \l__tbl_saved_row_tl,
+ \l__tbl_saved_col_tl,
+ \l__tbl_saved_span_tl \space
+ (
+ \int_compare:nNnTF \l__tbl_saved_table_cols_tl = 0
+ { outer~ level }
+ { max:~ \l__tbl_saved_table_cols_tl }
+ )
+ }
+ \int_gzero:N \g__tbl_row_int
+ \int_gzero:N \g__tbl_col_int
+ \tl_gset:Nn \g__tbl_span_tl {1}
+}
+\cs_new_protected:Npn \tbl_update_cell_data_for_next_row: {
+ \int_gincr:N \g__tbl_row_int % this row about to start
+ \int_gzero:N \g__tbl_col_int % we are before first col
+}
+\cs_new_protected:Npn \tbl_init_cell_data_for_row: {
+ \int_gset:Nn \g__tbl_col_int {1}
+ \tl_gset:Nn \g__tbl_span_tl {1}
+}
+\cs_new:Npn \tbl_if_row_was_started:T {
+ \int_compare:nNnT \g__tbl_col_int > 0
+}
+\cs_new:Npn \tbl_if_row_was_started:TF {
+ \int_compare:nNnTF \g__tbl_col_int > 0
+}
+\cs_new_protected:Npn \tbl_gzero_row_count: {
+ \int_gzero:N \g__tbl_row_int
+}
+\cs_new_protected:Npn \tbl_gincr_row_count: {
+ \int_gincr:N \g__tbl_row_int
+}
+\cs_new_protected:Npn \tbl_gdecr_row_count: {
+ \int_gdecr:N \g__tbl_row_int
+}
+\cs_new_protected:Npn \tbl_inbetween_rows: {
+ \int_gzero:N \g__tbl_col_int
+}
+\cs_new_protected:Npn \tbl_restore_outer_cell_data: {
+ \int_gset:Nn \g__tbl_col_int { \l__tbl_saved_col_tl }
+ \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
+ \__tbl_trace:n { ==>~ restored~cell~data:~
+ \int_use:N \g__tbl_row_int,
+ \int_use:N \g__tbl_col_int,
+ \l__tbl_saved_span_tl \space
+ (
+ \int_compare:nNnTF \g__tbl_table_cols_tl = 0
+ { outer~ level }
+ { max:~ \g__tbl_table_cols_tl }
+ )
+ }
+}
+\cs_new_protected:Npn \tbl_update_multicolumn_cell_data:n #1 {
+ \int_compare:nNnTF \g__tbl_col_int = 0
+ {
+ \UseTaggingSocket{tbl/row/begin}
+ \int_gset:Nn \g__tbl_col_int {1}
+ }
+ {
+ \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl }
+ }
+ \tl_gset:Nn \g__tbl_span_tl {#1}
+}
+\cs_new:Npn \tbl_crcr:n #1 {
+ \int_compare:nNnT \g__tbl_col_int > 0
+ {
+ \tbl_count_missing_cells:n {#1}
+ \cr
+ }
+}
+\ExplSyntaxOff
+\let\@kernel@refstepcounter\refstepcounter
+\def\hyper@nopatch@longtable{}
%%% From File: ltfinal.dtx
\tracingstats1
\newcount\@lowpenalty
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex209.def b/Master/texmf-dist/tex/latex-dev/base/latex209.def
index 9eb74616f5d..633dbaebcd9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex209.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latex209.def
@@ -15,7 +15,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index a0a76e124ac..033b2233469 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -16,6 +16,7 @@
%% lthooks.dtx (with options: `latexrelease')
%% ltcmdhooks.dtx (with options: `latexrelease')
%% ltsockets.dtx (with options: `latexrelease')
+%% lttemplates.dtx (with options: `latexrelease')
%% ltalloc.dtx (with options: `latexrelease')
%% ltcntrl.dtx (with options: `latexrelease')
%% lterror.dtx (with options: `latexrelease')
@@ -67,7 +68,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -985,7 +986,7 @@ of this package available from CTAN}
\tracinggroups\z@
\tracingparagraphs\z@
\tracingmacros\z@
- \tracinglostchars\@ne
+ \tracinglostchars\tw@
\tracingpages\z@
\tracingstats\z@
}%
@@ -1997,8 +1998,8 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2a}
-\def\ltcmddate{2023-08-19}
+\def\ltcmdversion{v1.2c}
+\def\ltcmddate{2024-02-08}
\edef\@latexrelease@catcode@null{\the\catcode`\^^@ }
\catcode`\^^@=12
\ExplSyntaxOn
@@ -2082,8 +2083,6 @@ of this package available from CTAN}
\cs_new_protected:Npn \__cmd_declare_cmd_internal:Nnnn #1#2#3#4
{
\tl_set:Nx \l__cmd_function_tl { \cs_to_str:N #1 }
- \tl_set:Nx \l__cmd_fn_tl
- { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
\__cmd_normalize_arg_spec:n {#2}
\exp_args:No \__cmd_prepare_signature:n \l__cmd_arg_spec_tl
\__cmd_declare_cmd_code:Nnn #1 {#2} {#3}
@@ -2091,12 +2090,60 @@ of this package available from CTAN}
\__cmd_break_point:n {#2}
}
\cs_new_eq:NN \__cmd_break_point:n \use_none:n
-\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn
+\cs_new:Npn \__cmd_all_m_check:n #1
+ { \tl_map_function:nN {#1} \__cmd_all_m_check_aux:n }
+\cs_new:Npn \__cmd_all_m_check_aux:n #1
{
- \bool_if:NTF \l__cmd_grab_expandably_bool
- { \__cmd_declare_cmd_code_expandable:Nnn }
- { \__cmd_declare_cmd_code_aux:Nnn }
+ \str_if_eq:nnF {#1} { m }
+ {
+ \str_if_eq:nnF {#1} { + }
+ { X }
+ }
+ }
+\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn #1#2
+ {
+ \bool_lazy_any:nTF
+ {
+ { \l__cmd_environment_bool }
+ {
+ \bool_lazy_and_p:nn
+ { \l__cmd_some_short_bool }
+ { \l__cmd_some_long_bool }
+ }
+ { ! \tl_if_blank_p:e { \__cmd_all_m_check:n {#2} } }
+ }
+ {
+ \tl_set:Nx \l__cmd_fn_tl
+ { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
+ \bool_if:NTF \l__cmd_grab_expandably_bool
+ { \__cmd_declare_cmd_code_expandable:Nnn }
+ { \__cmd_declare_cmd_code_aux:Nnn }
+ }
+ { \__cmd_declare_cmd_optimized:Nnn }
+ #1 {#2}
}
+\cs_new_protected:Npn \__cmd_declare_cmd_optimized:Nnn #1#2#3
+ {
+ \bool_if:NTF \l__cmd_expandable_bool
+ { \cs_set_nopar:Npe }
+ { \cs_set_protected_nopar:Npe }
+ #1
+ {
+ \exp_not:N \__cmd_start_optimized:
+ \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+ }
+ \exp_args:Ncc \cs_generate_from_arg_count:NNnn
+ { \l__cmd_function_tl \c_space_tl code }
+ {
+ cs_set
+ \bool_if:NF \l__cmd_expandable_bool { _protected }
+ \bool_if:NF \l__cmd_some_long_bool { _nopar }
+ :Npn
+ }
+ \l__cmd_current_arg_int
+ {#3}
+ }
+\cs_new:Npn \__cmd_start_optimized: { }
\cs_new_protected:Npn \__cmd_declare_cmd_code_aux:Nnn #1#2#3
{
\cs_generate_from_arg_count:cNnn
@@ -2698,7 +2745,12 @@ of this package available from CTAN}
\bool_if:NT \l__cmd_some_obey_spaces_bool
{
\msg_error:nnxx { cmd } { invalid-bang }
- { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+ { \__cmd_environment_or_command: }
+ {
+ \bool_if:NTF \l__cmd_obey_spaces_bool
+ { \tl_to_str:n {'#1'} }
+ { an~optional~argument~before~mandatory~ \tl_to_str:n {'#1'} }
+ }
\__cmd_bad_def:wn
}
\tl_clear:N \l__cmd_last_delimiters_tl
@@ -3022,9 +3074,10 @@ of this package available from CTAN}
\use:x
{
\int_set:Nn \tex_escapechar:D { 92 }
- \exp_not:N \__cmd_cmd_type_cases:NnnnnF \exp_not:N #2
+ \exp_not:N \__cmd_cmd_type_cases:NnnnnnF \exp_not:N #2
{ \__cmd_copy_command:nnNN }
{ \__cmd_copy_expandable:nnNN }
+ { \__cmd_copy_optimized:nnNN }
{ \__cmd_copy_environment:nnNN }
{ \__cmd_copy_environment_end:nnNN }
{ \__cmd_cant_copy:nwn { non-ltcmd } }
@@ -3100,6 +3153,18 @@ of this package available from CTAN}
\IncludeInRelease{2020/10/01}{\__cmd_copy_expandable:nnNN}%
{Support~\NewCommandCopy~in~ltcmd}
\EndIncludeInRelease
+\cs_new_protected:Npn \__cmd_copy_optimized:nnNN #1#2#3#4
+ {
+ \cs_set_eq:cc { #1 ~ code } { #2 ~ code }
+ \token_if_protected_macro:NTF #4
+ { \cs_set_protected_nopar:Npe }
+ { \cs_set_nopar:Npe }
+ #3
+ {
+ \exp_not:N \__cmd_start_optimized:
+ \exp_not:c { #1 ~ code }
+ }
+ }
\IncludeInRelease{2021/11/15}{\__cmd_copy:NN (part 2)}%
{Support~\NewCommandCopy~in~ltcmd}
\cs_new:Npn \__cmd_copy_expandable:NnNNNNnnn #1 #2 #3 #4 #5 #6 #7 #8 #9
@@ -3228,9 +3293,10 @@ of this package available from CTAN}
\use:x
{
\int_set:Nn \tex_escapechar:D { 92 }
- \exp_not:N \__cmd_cmd_type_cases:NnnnnF \exp_not:N #1
+ \exp_not:N \__cmd_cmd_type_cases:NnnnnnF \exp_not:N #1
{ \__cmd_show_command:N }
{ \__cmd_show_expandable:N }
+ { \__cmd_show_optimized:N }
{ \__cmd_show_environment:N }
{ \__cmd_show_environment_end:N }
{ \__cmd_cant_copy:nwn { non-ltcmd } }
@@ -3284,6 +3350,43 @@ of this package available from CTAN}
-> \cs_replacement_spec:N #4
}
}
+\cs_new_protected:Npn \__cmd_show_optimized:N #1
+ {
+ \exp_args:Nc \__cmd_show_optimized:NN
+ { \cs_to_str:N #1 \c_space_tl code }
+ #1
+ }
+\cs_new_protected:Npn \__cmd_show_optimized:NN #1#2
+ {
+ \cs_set:Npe \__cmd_show_optimized_aux:N ##1
+ {
+ \c_space_tl \c_space_tl \c_hash_str ##1 :
+ \bool_lazy_or:nnT
+ { \token_if_long_macro_p:N #1 }
+ { \token_if_protected_long_macro_p:N #1 }
+ { + } m
+ \iow_newline:
+ }
+ \tl_show:e
+ {
+ \token_to_str:N #2 =
+ \bool_lazy_or:nnF
+ { \token_if_protected_macro_p:N #1 }
+ { \token_if_protected_long_macro_p:N #1 }
+ { expandable ~ } document~command:
+ \iow_newline:
+ \int_step_function:nN
+ {
+ \int_div_truncate:nn
+ { \tl_count:e { \cs_parameter_spec:N #1 } }
+ { 2 }
+ }
+ \__cmd_show_optimized_aux:N
+ ->
+ \cs_replacement_spec:N #1
+ }
+ }
+\cs_generate_variant:Nn \tl_count:n { e }
\cs_new_protected:Npn \__cmd_show_environment:N #1
{
\exp_after:wN \__cmd_show_environment:Nnnw #1 \q__cmd
@@ -4326,7 +4429,7 @@ of this package available from CTAN}
#1 {#2} {#4}
\__cmd_tl_mapthread_loop:w #1#3 \q_mark
}
-\cs_new_protected:Npn \__cmd_cmd_type_cases:NnnnnF #1 #2 #3 #4 #5 #6
+\cs_new_protected:Npn \__cmd_cmd_type_cases:NnnnnnF #1 #2 #3 #4 #5 #6 #7
{
\exp_args:Ne \str_case_e:nnF
{
@@ -4336,20 +4439,21 @@ of this package available from CTAN}
{
{ \exp_not:N \__cmd_start:nNNnnn } {#2}
{ \exp_not:N \__cmd_start_expandable:nNNNNn } {#3}
- { \exp_not:N \__cmd_start_env:nnnnn } {#4}
+ { \exp_not:N \__cmd_start_optimized: } {#4}
+ { \exp_not:N \__cmd_start_env:nnnnn } {#5}
{
\exp_after:wN \exp_not:N
\cs:w environment~
\exp_last_unbraced:Ne \use_none:nnn
{ \cs_to_str:N #1 } ~end~aux \cs_end:
- } {#5}
+ } {#6}
}
- {#6}
+ {#7}
}
\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1
{
- \__cmd_cmd_type_cases:NnnnnF #1
- { } { } { } { } { \use_iii:nnn }
+ \__cmd_cmd_type_cases:NnnnnnF #1
+ { } { } { } { } { } { \use_iii:nnn }
\use_i:nn
}
\cs_new_protected:Npn \__cmd_peek_nonspace:NTF
@@ -4405,10 +4509,8 @@ of this package available from CTAN}
\bool_if:NTF \l__cmd_environment_bool
{ environment ~ ' \l__cmd_environment_str ' }
{
- command ~ '
- \exp_args:Nf \tl_trim_spaces:n
- { \exp_after:wN \token_to_str:N \l__cmd_fn_tl }
- '
+ command ~
+ ' \c_backslash_str \tl_to_str:N \l__cmd_function_tl '
}
}
\msg_new:nnnn { cmd } { arg-after-body }
@@ -4500,7 +4602,7 @@ of this package available from CTAN}
{ Invalid~argument~prefix~'!'~in~#1. }
{
The~prefix~'!'~is~only~allowed~for~trailing~optional~arguments.~
- You~tried~to~apply~it~to~'#2'.
+ You~tried~to~apply~it~to~#2.
\c__cmd_ignore_def_tl
}
\msg_new:nnnn { cmd } { not-definable }
@@ -4809,8 +4911,6 @@ of this package available from CTAN}
\catcode`\^^@=\@latexrelease@catcode@null\relax
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.1f}
-\def\lthooksdate{2023/10/02}
\ExplSyntaxOn
\NewModuleRelease{2020/10/01}{lthooks}
{The~hook~management~system}
@@ -5281,7 +5381,8 @@ of this package available from CTAN}
\msg_error:nnnnn { hooks } { set-top-level }
{ for } { SetDefaultHookLabel } {#1}
}
- { \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
+ { \exp_args:Nx
+ \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
}
\cs_new_protected:Npn \__hook_set_default_label:n #1
{
@@ -5388,7 +5489,8 @@ of this package available from CTAN}
\IncludeInRelease{2020/10/01}{\hook_gput_code:nnn}
{Providing~hooks}
\cs_gset_protected:Npn \hook_gput_code:nnn #1 #2
- { \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} }
+ { \__hook_normalize_hook_args:Nnn
+ \__hook_gput_code:nnn {#1} {#2} }
\cs_gset_protected:Npn \__hook_gput_code:nnn #1 #2 #3
{
\__hook_if_execute_immediately:nTF {#1}
@@ -5402,7 +5504,8 @@ of this package available from CTAN}
{
\__hook_if_disabled:nTF {#1}
{ \msg_error:nnn { hooks } { hook-disabled } {#1} }
- { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ { \__hook_try_declaring_generic_hook:nnn
+ {#1} {#2} {#3} }
}
}
}
@@ -5414,7 +5517,8 @@ of this package available from CTAN}
\on@line\space <-~ \tl_to_str:n{#3}} }
\str_if_eq:nnTF {#2} { top-level }
{
- \str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
+ \str_if_eq:eeTF { top-level }
+ { \__hook_currname_or_default: }
{
\__hook_init_structure:n {#1}
\__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
@@ -5422,7 +5526,8 @@ of this package available from CTAN}
{ \msg_error:nnn { hooks } { misused-top-level } {#1} }
}
{
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \prop_get:cnNTF
+ { g__hook_#1_code_prop } {#2} \l__hook_return_tl
{
\prop_gput:cno { g__hook_#1_code_prop } {#2}
{ \l__hook_return_tl #3 }
@@ -5458,7 +5563,8 @@ of this package available from CTAN}
\__hook_init_structure:n {#1}
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
}
-\IncludeInRelease{2023/06/01}{\__hook_try_declaring_generic_hook:nnn}
+\IncludeInRelease{2023/06/01}
+ {\__hook_try_declaring_generic_hook:nnn}
{Hooks~with~args}
\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
{
@@ -5475,54 +5581,66 @@ of this package available from CTAN}
{#1}
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\__hook_try_declaring_generic_hook:nnn}
+\IncludeInRelease{2021/11/15}
+ {\__hook_try_declaring_generic_hook:nnn}
{Standardise~generic~hook~names}
\cs_gset_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
{
- \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
+ \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop:
+ {#1}
\hook_gput_code:nnn
\__hook_gput_undeclared_hook:nnn
{#1}
}
-\cs_gset_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1
+\cs_gset_protected:Npn
+ \__hook_try_declaring_generic_next_hook:nn #1
{
- \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
+ \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop:
+ {#1}
\hook_gput_next_code:nn
\__hook_gput_next_do:nn
{#1}
}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__hook_try_declaring_generic_hook:nnn}
+\IncludeInRelease{2020/10/01}
+ {\__hook_try_declaring_generic_hook:nnn}
{Standardise~generic~hook~names}
-\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
+\cs_new_protected:Npn
+ \__hook_try_declaring_generic_hook:nnn #1
{
\__hook_try_declaring_generic_hook:nNNnn {#1}
\hook_gput_code:nnn \__hook_gput_undeclared_hook:nnn
}
-\cs_new_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1
+\cs_new_protected:Npn
+ \__hook_try_declaring_generic_next_hook:nn #1
{
\__hook_try_declaring_generic_hook:nNNnn {#1}
\hook_gput_next_code:nn \__hook_gput_next_do:nn
}
\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nNNnn #1
{
- \__hook_if_file_hook:wTF #1 / \s__hook_mark
+ \__hook_if_file_hook:wTF #1 / / \s__hook_mark
{
- \exp_args:Ne \__hook_try_declaring_generic_hook_split:nNNnn
+ \exp_args:Ne
+ \__hook_try_declaring_generic_hook_split:nNNnn
{ \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
}
{ \__hook_try_declaring_generic_hook_split:nNNnn {#1} }
}
-\cs_new_protected:Npn \__hook_try_declaring_generic_hook_split:nNNnn #1 #2 #3
+\cs_new_protected:Npn
+ \__hook_try_declaring_generic_hook_split:nNNnn #1 #2 #3
{
- \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
+ \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop:
+ {#1}
{ #2 }
{ #3 } {#1}
}
\EndIncludeInRelease
-\IncludeInRelease{2023/06/01}{\__hook_try_declaring_generic_hook:wn}
+\IncludeInRelease{2023/06/01}
+ {\__hook_try_declaring_generic_hook:wn}
{Hooks~with~args}
-\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+\prg_new_protected_conditional:Npnn
+ \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
\__hook_if_generic:nTF {#5}
@@ -5576,9 +5694,11 @@ of this package available from CTAN}
#1 #2 { #3 / #5 / #4 }
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\__hook_try_declaring_generic_hook:wn}
+\IncludeInRelease{2021/11/15}
+ {\__hook_try_declaring_generic_hook:wn}
{Standardise~generic~hook~names}
-\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+\prg_new_protected_conditional:Npnn
+ \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
\__hook_if_generic:nTF {#5}
@@ -5604,9 +5724,11 @@ of this package available from CTAN}
}
}
\EndIncludeInRelease
-\IncludeInRelease{2021/06/01}{\__hook_try_declaring_generic_hook:wn}
+\IncludeInRelease{2021/06/01}
+ {\__hook_try_declaring_generic_hook:wn}
{Support~cmd~hooks}
-\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+\prg_new_protected_conditional:Npnn
+ \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
\tl_if_empty:nTF {#2}
@@ -5620,10 +5742,12 @@ of this package available from CTAN}
{ \__hook_try_put_cmd_hook:n {#5} }
\__hook_make_usable:n {#5}
}
- \prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2}
+ \prop_if_in:NnTF
+ \c__hook_generics_reversed_ii_prop {#2}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
{
- \prop_if_in:NnT \c__hook_generics_reversed_iii_prop {#3}
+ \prop_if_in:NnT
+ \c__hook_generics_reversed_iii_prop {#3}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
}
\prg_return_true:
@@ -5632,9 +5756,11 @@ of this package available from CTAN}
}
}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__hook_try_declaring_generic_hook:wn}
+\IncludeInRelease{2020/10/01}
+ {\__hook_try_declaring_generic_hook:wn}
{Support~cmd~hooks}
-\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+\prg_new_protected_conditional:Npnn
+ \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
\tl_if_empty:nTF {#2}
@@ -5643,10 +5769,12 @@ of this package available from CTAN}
\prop_if_in:NnTF \c__hook_generics_prop {#1}
{
\__hook_if_declared:nF {#5} { \hook_new:n {#5} }
- \prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2}
+ \prop_if_in:NnTF
+ \c__hook_generics_reversed_ii_prop {#2}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
{
- \prop_if_in:NnT \c__hook_generics_reversed_iii_prop {#3}
+ \prop_if_in:NnT
+ \c__hook_generics_reversed_iii_prop {#3}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
}
\prg_return_true:
@@ -5687,11 +5815,11 @@ of this package available from CTAN}
{ \__hook_strip_double_slash:n {#1} }
\cs_new:Npn \__hook_strip_double_slash:n #1
{ \__hook_strip_double_slash:w #1 // \s__hook_mark }
-\cs_new:Npn \__hook_strip_double_slash:w #1/#2/#3 // #4 \s__hook_mark
+\cs_new:Npn \__hook_strip_double_slash:w #1/#2/#3//#4\s__hook_mark
{
\tl_if_empty:nTF {#4}
{ #1/#2/#3 }
- { \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
+ { \__hook_strip_double_slash:w #1/#2/#3 /#4\s__hook_mark }
}
\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{\c__hook_generics_prop}
@@ -5722,9 +5850,12 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}{\c__hook_generics_reversed_ii_prop}
{Standardise~generic~hook~names}
-\prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=}
-\prop_const_from_keyval:Nn \c__hook_generics_reversed_iii_prop {after=}
-\prop_const_from_keyval:Nn \c__hook_generics_file_prop {before=,after=}
+\prop_const_from_keyval:Nn
+ \c__hook_generics_reversed_ii_prop {after=,end=}
+\prop_const_from_keyval:Nn
+ \c__hook_generics_reversed_iii_prop {after=}
+\prop_const_from_keyval:Nn
+ \c__hook_generics_file_prop {before=,after=}
\EndIncludeInRelease
\IncludeInRelease{2023/06/01}{\c__hook_parameter_cmd/./before_tl}
{Hooks~with~args}
@@ -5752,7 +5883,8 @@ of this package available from CTAN}
\str_if_eq:nnTF {#2} { top-level }
{ \__hook_toplevel_gset:nn {#1} { } }
{
- \prop_gpop:cnNF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \prop_gpop:cnNF { g__hook_#1_code_prop }
+ {#2} \l__hook_return_tl
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
}
@@ -5763,7 +5895,8 @@ of this package available from CTAN}
\__hook_if_deprecated_generic:nTF {#1}
{
\__hook_deprecated_generic_warn:n {#1}
- \__hook_do_deprecated_generic:Nn \__hook_gremove_code:nn {#1} {#2}
+ \__hook_do_deprecated_generic:Nn
+ \__hook_gremove_code:nn {#1} {#2}
}
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
@@ -5785,8 +5918,10 @@ of this package available from CTAN}
\str_if_eq:nnTF {#2} { top-level }
{ \__hook_tl_gclear:c { __hook_toplevel~#1 } }
{
- \prop_gpop:cnNF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
- { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
+ \prop_gpop:cnNF { g__hook_#1_code_prop }
+ {#2} \l__hook_return_tl
+ { \msg_warning:nnnn { hooks } { cannot-remove }
+ {#1} {#2} }
}
}
\__hook_if_usable:nT {#1}
@@ -5796,9 +5931,11 @@ of this package available from CTAN}
\__hook_if_deprecated_generic:nTF {#1}
{
\__hook_deprecated_generic_warn:n {#1}
- \__hook_do_deprecated_generic:Nn \__hook_gremove_code:nn {#1} {#2}
+ \__hook_do_deprecated_generic:Nn
+ \__hook_gremove_code:nn {#1} {#2}
}
- { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
+ { \msg_warning:nnnn { hooks } { cannot-remove }
+ {#1} {#2} }
}
}
\EndIncludeInRelease
@@ -5817,7 +5954,8 @@ of this package available from CTAN}
{#1} {#2}
}
\cs_new_protected:Npn \__hook_cs_gput_right_fast:nnn #1 #2 #3
- { \cs_gset:cpx { __hook#1~#2 } { \exp_not:v { __hook#1~#2 } \exp_not:n {#3} } }
+ { \cs_gset:cpx { __hook#1~#2 }
+ { \exp_not:v { __hook#1~#2 } \exp_not:n {#3} } }
\cs_new_protected:Npn \__hook_cs_gput_right_slow:nnn #1 #2 #3
{
\cs_if_exist:cF { __hook#1~#2 }
@@ -5928,7 +6066,8 @@ of this package available from CTAN}
}
\exp_last_unbraced:NNf
\cs_set:Npn \__hook_tmp:w { \__hook_parameter:n {#1} } { }
- \tl_set:Ne \l__hook_tmpa_tl { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
+ \tl_set:Ne \l__hook_tmpa_tl
+ { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
\cs_gset_protected:Npx \__hook_normalise_fn:nn ##1 ##2
{
\group_begin:
@@ -6114,8 +6253,8 @@ of this package available from CTAN}
\__hook_if_deprecated_generic:nT {#1}
{
\__hook_deprecated_generic_warn:n {#1}
- \__hook_do_deprecated_generic:Nn \__hook_gset_rule:nnnn {#1}
- {#2} {#3} {#4}
+ \__hook_do_deprecated_generic:Nn \__hook_gset_rule:nnnn
+ {#1} {#2} {#3} {#4}
\exp_after:wN \use_none:nnnnnnnnn \use_none:n
}
\__hook_init_structure:n {#1}
@@ -6133,27 +6272,34 @@ of this package available from CTAN}
\EndIncludeInRelease
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_<_gset:nnn } \__hook_rule_before_gset:nnn
\cs_new_protected:Npn \__hook_rule_after_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
{ \__hook_label_ordered:nnTF {#3} {#2} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_>_gset:nnn } \__hook_rule_after_gset:nnn
\cs_new_protected:Npn \__hook_rule_voids_gset:nnn #1#2#3
{
- \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { -> } { <- } }
}
\cs_new_protected:cpn { __hook_rule_incompatible-error_gset:nnn } #1#2#3
- { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
- { xE } }
+ { \__hook_tl_gset:cn
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ { xE }
+ }
\cs_new_protected:cpn { __hook_rule_incompatible-warning_gset:nnn } #1#2#3
- { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
- { xW } }
+ { \__hook_tl_gset:cn
+ { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ { xW }
+ }
\cs_new_protected:Npn \__hook_rule_unrelated_gset:nnn #1#2#3 { }
\cs_new_protected:Npn \__hook_rule_gclear:nnn #1#2#3
{ \cs_undefine:c { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } }
@@ -6211,7 +6357,8 @@ of this package available from CTAN}
{Hooks~with~args}
\cs_gset_protected:Npn \__hook_initialize_all:
{
- \cs_gset_eq:NN \__hook_update_hook_code:n \__hook_initialize_hook_code:n
+ \cs_gset_eq:NN \__hook_update_hook_code:n
+ \__hook_initialize_hook_code:n
\__hook_debug:n { \prop_gclear:N \g__hook_used_prop }
\seq_map_inline:Nn \g__hook_all_seq
{ \__hook_update_hook_code:n {##1} }
@@ -6221,7 +6368,8 @@ of this package available from CTAN}
\prop_map_inline:Nn \g__hook_used_prop
{
\iow_term:x
- { ^^J ~ ##1 ~ -> ~ \cs_replacement_spec:c { __hook~##1 } ~ }
+ { ^^J ~ ##1 ~ -> ~
+ \cs_replacement_spec:c { __hook~##1 } ~ }
}
}
\cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
@@ -6243,8 +6391,10 @@ of this package available from CTAN}
{
\__hook_code_gset:ne {#1}
{
- \exp_not:c { __hook_toplevel~#1 } \__hook_braced_parameter:n {#1}
- \exp_not:c { __hook_next~#1 } \__hook_braced_parameter:n {#1}
+ \exp_not:c { __hook_toplevel~#1 }
+ \__hook_braced_parameter:n {#1}
+ \exp_not:c { __hook_next~#1 }
+ \__hook_braced_parameter:n {#1}
}
}
{
@@ -6267,7 +6417,8 @@ of this package available from CTAN}
\cs_gset_protected:Npn \__hook_initialize_hook_code:n #1
{
\__hook_debug:n
- { \iow_term:x { ^^J Update~code~for~hook~'#1' \on@line :^^J } }
+ { \iow_term:x { ^^J Update~code~for~hook~'#1'
+ \on@line :^^J } }
\__hook_include_legacy_code_chunk:n {#1}
\__hook_if_usable:nT {#1}
{
@@ -6281,15 +6432,21 @@ of this package available from CTAN}
}
{
\__hook_if_reversed:nTF {#1}
- { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_left:Nn
- \cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_left:NV }
- { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_right:Nn
- \cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_right:NV }
- \prop_set_eq:Nc \l__hook_work_prop { g__hook_#1_code_prop }
+ { \cs_set_eq:NN \__hook_tl_gput:Nn
+ \__hook_tl_gput_left:Nn
+ \cs_set_eq:NN \__hook_clist_gput:NV
+ \clist_gput_left:NV }
+ { \cs_set_eq:NN \__hook_tl_gput:Nn
+ \__hook_tl_gput_right:Nn
+ \cs_set_eq:NN \__hook_clist_gput:NV
+ \clist_gput_right:NV }
+ \prop_set_eq:Nc \l__hook_work_prop
+ { g__hook_#1_code_prop }
\__hook_initialize_single:ccn
{ __hook~#1 } { g__hook_#1_labels_clist } {#1}
\__hook_debug:n
- { \exp_args:NNx \prop_gput:Nnn \g__hook_used_prop {#1} { } }
+ { \exp_args:NNx \prop_gput:Nnn \g__hook_used_prop
+ {#1} { } }
}
}
}
@@ -6356,7 +6513,8 @@ of this package available from CTAN}
\int_compare:nNnT
{ \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
{
- \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1}
+ \tl_set:cn
+ { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1}
\tl_set:Nn \l__hook_rear_tl {##1}
}
}
@@ -6407,42 +6565,50 @@ of this package available from CTAN}
{#3}
}
}
- \__hook_debug:n { \__hook_debug_label_data:N \l__hook_work_prop }
+ \__hook_debug:n
+ { \__hook_debug_label_data:N \l__hook_work_prop }
\tl_set:Nn \l__hook_rear_tl { 0 }
\tl_set:cn { \__hook_tl_csname:n { 0 } } { 0 }
\seq_map_inline:Nn \l__hook_labels_seq
{
- \int_compare:nNnT { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
- {
- \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } }{##1}
- \tl_set:Nn \l__hook_rear_tl {##1}
- }
+ \int_compare:nNnT
+ { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
+ {
+ \tl_set:cn { \__hook_tl_csname:n
+ { \l__hook_rear_tl } } {##1}
+ \tl_set:Nn \l__hook_rear_tl {##1}
+ }
}
\tl_set_eq:Nc \l__hook_front_tl { \__hook_tl_csname:n { 0 } }
\__hook_tl_gclear:N #1
\clist_gclear:N #2
- \bool_while_do:nn { ! \str_if_eq_p:Vn \l__hook_front_tl { 0 } }
+ \bool_while_do:nn
+ { ! \str_if_eq_p:Vn \l__hook_front_tl { 0 } }
{
\int_decr:N \l__hook_labels_int
- \prop_get:NVN \l__hook_work_prop \l__hook_front_tl \l__hook_return_tl
+ \prop_get:NVN \l__hook_work_prop
+ \l__hook_front_tl \l__hook_return_tl
\exp_args:NNV \__hook_tl_gput:Nn #1 \l__hook_return_tl
\__hook_clist_gput:NV #2 \l__hook_front_tl
- \__hook_debug:n{ \iow_term:x{Handled~ code~ for~ \l__hook_front_tl} }
- \seq_map_inline:cn { \__hook_seq_csname:n { \l__hook_front_tl } }
+ \__hook_debug:n{ \iow_term:x
+ {Handled~ code~ for~ \l__hook_front_tl} }
+ \seq_map_inline:cn
+ { \__hook_seq_csname:n { \l__hook_front_tl } }
{
\tl_set:cx { \__hook_tl_csname:n {##1} }
- { \int_eval:n
- { \cs:w \__hook_tl_csname:n {##1} \cs_end: - 1 }
- }
+ { \int_eval:n
+ { \cs:w \__hook_tl_csname:n {##1} \cs_end: - 1 }
+ }
\int_compare:nNnT
- { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
- {
- \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1}
- \tl_set:Nn \l__hook_rear_tl {##1}
- }
+ { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0
+ {
+ \tl_set:cn { \__hook_tl_csname:n
+ { \l__hook_rear_tl } } {##1}
+ \tl_set:Nn \l__hook_rear_tl {##1}
+ }
}
\tl_set_eq:Nc \l__hook_front_tl
- { \__hook_tl_csname:n { \l__hook_front_tl } }
+ { \__hook_tl_csname:n { \l__hook_front_tl } }
}
\int_compare:nNnF \l__hook_labels_int = 0
{
@@ -6451,7 +6617,8 @@ of this package available from CTAN}
\__hook_debug_label_data:N \l__hook_work_prop
\iow_term:x{====================}
}
- \exp_args:NNo \__hook_tl_gput:Nn #1 { \cs:w __hook_toplevel~#3 \cs_end: }
+ \exp_args:NNo \__hook_tl_gput:Nn #1
+ { \cs:w __hook_toplevel~#3 \cs_end: }
\__hook_tl_gput_right:No #1 { \cs:w __hook_next~#3 \cs_end: }
}
\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No }
@@ -6588,7 +6755,7 @@ of this package available from CTAN}
hook~'#1'
\__hook_if_disabled:nF {#1}
{
- \exp_args:Nf \__hook_print_args:nn {#1}
+ \exp_args:Nne \__hook_print_args:nn {#1}
{
\int_eval:n
{ \str_count:e { \__hook_parameter:n {#1} } / 3 }
@@ -6697,7 +6864,8 @@ of this package available from CTAN}
}
\__hook_preamble_hook:n {#1}
\__hook_log_cmd:x
- { ^^J ->~The~ \__hook_if_generic:nT {#1} { generic~ } hook~'#1': }
+ { ^^J ->~The~ \__hook_if_generic:nT
+ {#1} { generic~ } hook~'#1': }
\__hook_if_usable:nF {#1}
{ \__hook_log_line:x { The~hook~is~not~declared. } }
\__hook_if_disabled:nT {#1}
@@ -6710,26 +6878,30 @@ of this package available from CTAN}
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
- { \__hook_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } }
+ { \__hook_log_line_indent:x
+ { ##1~->~\tl_to_str:n {##2} } }
}
\__hook_log_line:x
{
Document-level~(top-level)~code
\__hook_if_usable:nT {#1}
- { ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
+ { ~(executed~
+ \__hook_if_reversed:nTF {#1} {first} {last} ) } :
}
\__hook_log_line_indent:x
{
\tl_if_empty:cTF { __hook_toplevel~#1 }
{ --- }
- { -> ~ \exp_args:Nv \tl_to_str:n { __hook_toplevel~#1 } }
+ { -> ~ \exp_args:Nv \tl_to_str:n
+ { __hook_toplevel~#1 } }
}
\__hook_log_line:x { Extra~code~for~next~invocation: }
\__hook_log_line_indent:x
{
\tl_if_empty:cTF { __hook_next~#1 }
{ --- }
- { ->~ \exp_args:Nv \__hook_log_next_code:n { __hook_next~#1 } }
+ { ->~ \exp_args:Nv \__hook_log_next_code:n
+ { __hook_next~#1 } }
}
\__hook_log_line:x { Rules: }
\bool_set_true:N \l__hook_tmpa_bool
@@ -6753,7 +6925,8 @@ of this package available from CTAN}
{
Execution~order
\bool_if:NTF \l__hook_tmpa_bool
- { \__hook_if_reversed:nT {#1} { ~(after~reversal) } }
+ { \__hook_if_reversed:nT
+ {#1}{ ~(after~reversal) } }
{ ~(after~
\__hook_if_reversed:nT {#1} { reversal~and~ }
applying~rules)
@@ -6764,16 +6937,19 @@ of this package available from CTAN}
\@spaces
\clist_if_empty:cTF { g__hook_#1_labels_clist }
{ --- }
- { \clist_use:cn { g__hook_#1_labels_clist } { ,~ } }
+ { \clist_use:cn
+ { g__hook_#1_labels_clist } { ,~ } }
}
}
{
\__hook_log_line:x { Execution~order: }
#2
{
- \@spaces Not~set~because~the~hook~ \__hook_if_usable:nTF {#1}
+ \@spaces Not~set~because~the~hook~
+ \__hook_if_usable:nTF {#1}
{ code~pool~is~empty }
- { is~\__hook_if_disabled:nTF {#1} {disabled} {undeclared} }
+ { is~\__hook_if_disabled:nTF
+ {#1} {disabled} {undeclared} }
}
}
}
@@ -6863,7 +7039,8 @@ of this package available from CTAN}
\IncludeInRelease{2020/10/01}{\hook_gput_next_code:nn}
{Hooks~with~args}
\cs_gset_protected:Npn \hook_gput_next_code:nn #1
- { \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
+ { \__hook_normalize_hook_args:Nn
+ \__hook_gput_next_code:nn {#1} }
\cs_gset_protected:Npn \hook_gput_next_code_with_args:nn #1 #2 { }
\EndIncludeInRelease
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
@@ -6979,7 +7156,8 @@ of this package available from CTAN}
\fi:
\cs:w __hook~#1 \__hook_use_end:
}
-\cs_new:Npn \__hook_use_undefined:w #1 #2 __hook~#3 \__hook_use_end:
+\cs_new:Npn \__hook_use_undefined:w
+ #1 #2 __hook~#3 \__hook_use_end:
{
#1 % fi
\__hook_use:wn #3 / \s__hook_mark {#3}
@@ -7039,12 +7217,13 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_try_file_hook:n #1
{
- \__hook_if_file_hook:wTF #1 / \s__hook_mark
+ \__hook_if_file_hook:wTF #1 / / \s__hook_mark
{
\exp_args:Ne \__hook_if_usable_use:n
{ \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
}
- { \__hook_if_usable_use:n {#1} } % file/ generic hook (e.g. file/before)
+ { \__hook_if_usable_use:n {#1} }
+ % file/ generic hook (e.g. file/before)
}
\cs_new_protected:Npn \__hook_if_usable_use:n #1
{
@@ -7060,12 +7239,14 @@ of this package available from CTAN}
\cs_new_protected:Npn \hook_use_once:n #1
{
\__hook_if_execute_immediately:nF {#1}
- { \__hook_normalize_hook_args:Nn \__hook_use_once:nn { \use:n {#1} } { 0 } }
+ { \__hook_normalize_hook_args:Nn \__hook_use_once:nn
+ { \use:n {#1} } { 0 } }
}
\cs_new_protected:Npn \hook_use_once:nnw #1 #2
{
\__hook_if_execute_immediately:nF {#1}
- { \__hook_normalize_hook_args:Nn \__hook_use_once:nn { \use:n {#1} } {#2} }
+ { \__hook_normalize_hook_args:Nn \__hook_use_once:nn
+ { \use:n {#1} } {#2} }
}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}{\hook_use_once:nnw}
@@ -7073,7 +7254,8 @@ of this package available from CTAN}
\cs_gset_protected:Npn \hook_use_once:n #1
{
\__hook_if_execute_immediately:nF {#1}
- { \__hook_normalize_hook_args:Nn \__hook_use_once:n { \use:n {#1} } }
+ { \__hook_normalize_hook_args:Nn \__hook_use_once:n
+ { \use:n {#1} } }
}
\cs_gset:Npn \hook_use_once:nnw #1 #2
{ \use:c { use_none: \prg_replicate:nn {#2} { n } } }
@@ -7085,7 +7267,8 @@ of this package available from CTAN}
\__hook_preamble_hook:n {#1}
\__hook_use_once_set:n {#1}
\__hook_replacing_args_false:
- \__hook_cs_gput_right:nnn { _next } {#1} { \__hook_use_once_clear:n {#1} }
+ \__hook_cs_gput_right:nnn { _next } {#1}
+ { \__hook_use_once_clear:n {#1} }
\__hook_replacing_args_reset:
\__hook_if_usable:nTF {#1}
{ \__hook_use_initialized:n {#1} }
@@ -7333,7 +7516,8 @@ of this package available from CTAN}
{ Cannot~add~code~to~disabled~hook~'#1'. }
{
The~hook~'#1'~you~tried~to~add~code~to~was~previously~disabled~
- with~\iow_char:N\\hook_disable_generic:n~or~\iow_char:N\\DisableGenericHook,~so~
+ with~\iow_char:N\\hook_disable_generic:n~or~
+ \iow_char:N\\DisableGenericHook,~so~
it~cannot~have~code~added~to~it.
}
\msg_new:nnn { hooks } { empty-label }
@@ -7442,7 +7626,7 @@ of this package available from CTAN}
{Hooks~with~args}
\cs_new_protected:Npn \NewHookWithArguments #1 #2 { }
\cs_new_protected:Npn \NewReversedHookWithArguments #1 #2 { }
-\cs_new_protected:Npn \NewMirroredHookPairWithArguments #1 #2 #3 { }
+\cs_new_protected:Npn \NewMirroredHookPairWithArguments #1 #2 #3{}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}{\ActivateGenericHook}
{Providing~hooks}
@@ -7644,7 +7828,8 @@ of this package available from CTAN}
\exp_args:No \exp_not:o
{
\cs:w __hook#1~#2 \exp_last_unbraced:Ne \cs_end:
- { \__hook_braced_cs_parameter:n { __hook#1~#2 } }
+ { \__hook_braced_cs_parameter:n
+ { __hook#1~#2 } }
}
}
}
@@ -7659,12 +7844,10 @@ of this package available from CTAN}
}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltcmdhooks.dtx
-%% Copyright (C) 2020-2023
-%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0i}
-\def\ltcmdhooksdate{2023/06/16}
+%% Copyright (C) 2020-2024
+%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
+%%% From File: lthooks.dtx
\ExplSyntaxOn
\NewModuleRelease{2021/06/01}{ltcmdhooks}
{The~hook~management~system~for~commands}
@@ -8274,8 +8457,6 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltsockets.dtx
-\def\ltsocketsversion{0.9a}
-\def\ltsocketsdate{2023-08-21}
\ExplSyntaxOn
\NewModuleRelease{2023/11/01}{ltsockets}
{The~socket~management~system}
@@ -8465,6 +8646,1237 @@ of this package available from CTAN}
\EndModuleRelease
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% From File: lttemplates.dtx
+\ExplSyntaxOn
+\NewModuleRelease{2024/06/01}{lttemplates}
+ {Prototype~document~commands}%
+\tl_const:Nn \c__template_code_root_tl { template~code~>~ }
+\tl_const:Nn \c__template_defaults_root_tl { template~defaults~>~ }
+\tl_const:Nn \c__template_instances_root_tl { template~instance~>~ }
+\tl_const:Nn \c__template_keytypes_root_tl { template~key~types~>~ }
+\tl_const:Nn \c__template_key_order_root_tl { template~key~order~>~ }
+\tl_const:Nn \c__template_values_root_tl { template~values~>~ }
+\tl_const:Nn \c__template_vars_root_tl { template~vars~>~ }
+\seq_const_from_clist:Nn \c__template_keytypes_arg_seq
+ { choice , function , instance }
+\prop_new:N \g__template_type_prop
+\tl_new:N \l__template_assignments_tl
+\tl_new:N \l__template_default_tl
+\bool_new:N \l__template_error_bool
+\bool_new:N \l__template_global_bool
+\tl_new:N \l__template_key_name_tl
+\tl_new:N \l__template_keytype_tl
+\tl_new:N \l__template_keytype_arg_tl
+\tl_new:N \l__template_value_tl
+\tl_new:N \l__template_var_tl
+\prop_new:N \l__template_keytypes_prop
+\seq_new:N \l__template_key_order_seq
+\prop_new:N \l__template_values_prop
+\prop_new:N \l__template_vars_prop
+\clist_new:N \l__template_tmp_clist
+\dim_new:N \l__template_tmp_dim
+\int_new:N \l__template_tmp_int
+\muskip_new:N \l__template_tmp_muskip
+\skip_new:N \l__template_tmp_skip
+\tl_new:N \l__template_tmp_tl
+\scan_new:N \s__template_mark
+\scan_new:N \s__template_stop
+\quark_new:N \q__template_nil
+\__kernel_quark_new_conditional:Nn \__template_quark_if_nil:N { F }
+\cs_new_protected:Npn \__template_execute_if_arg_agree:nnT #1#2#3
+ {
+ \prop_get:NnN \g__template_type_prop {#1} \l__template_tmp_tl
+ \int_compare:nNnTF {#2} = \l__template_tmp_tl
+ {#3}
+ {
+ \msg_error:nneee { template } { argument-number-mismatch }
+ {#1} { \l__template_tmp_tl } {#2}
+ }
+ }
+\cs_new_protected:Npn \__template_execute_if_code_exist:nnT #1#2#3
+ {
+ \cs_if_exist:cTF { \c__template_code_root_tl #1 / #2 }
+ {#3}
+ { \msg_error:nnnn { template } { no-template-code } {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_execute_if_keytype_exist:nT #1#2
+ {
+ \cs_if_exist:cTF { __template_store_value_ #1 :n }
+ {#2}
+ { \msg_error:nnn { template } { unknown-keytype } {#1} }
+ }
+\cs_generate_variant:Nn \__template_execute_if_keytype_exist:nT { V }
+\cs_new_protected:Npn \__template_execute_if_type_exist:nT #1#2
+ {
+ \prop_if_in:NnTF \g__template_type_prop {#1}
+ {#2}
+ { \msg_error:nnn { template } { unknown-type } {#1} }
+ }
+\cs_new_protected:Npn \__template_if_keys_exist:nnT #1#2#3
+ {
+ \cs_if_exist:cTF { \c__template_keytypes_root_tl #1 / #2 }
+ {#3}
+ { \msg_error:nnnn { template } { unknown-template } {#1} {#2} }
+ }
+\prg_new_conditional:Npnn \__template_if_key_value:n #1 { T , F , TF }
+ {
+ \str_if_eq:noTF { \KeyValue } { \tl_head:w #1 \q_nil \q_stop }
+ \prg_return_true:
+ \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \__template_if_key_value:n { V } { T , F , TF }
+\prg_new_conditional:Npnn \__template_if_instance_exist:nn #1#2 { T, F, TF }
+ {
+ \cs_if_exist:cTF { \c__template_instances_root_tl #1 / #2 }
+ \prg_return_true:
+ \prg_return_false:
+ }
+\prg_new_conditional:Npnn \__template_if_use_template:n #1 { TF }
+ {
+ \str_if_eq:noTF { \UseTemplate } { \tl_head:w #1 \q_nil \q_stop }
+ \prg_return_true:
+ \prg_return_false:
+}
+\cs_new_protected:Npn \__template_store_defaults:nn #1#2
+ {
+ \debug_suspend:
+ \prop_gclear_new:c { \c__template_defaults_root_tl #1 / #2 }
+ \prop_gset_eq:cN { \c__template_defaults_root_tl #1 / #2 }
+ \l__template_values_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_keytypes:nn #1#2
+ {
+ \debug_suspend:
+ \prop_if_exist:cTF { \c__template_keytypes_root_tl #1 / #2 }
+ {
+ \msg_info:nnnn { template } { declare-template-interface } {#1} {#2}
+ \prop_gclear:c { \c__template_keytypes_root_tl #1 / #2 }
+ }
+ { \prop_new:c { \c__template_keytypes_root_tl #1 / #2 } }
+ \prop_gset_eq:cN { \c__template_keytypes_root_tl #1 / #2 }
+ \l__template_keytypes_prop
+ \seq_gclear_new:c { \c__template_key_order_root_tl #1 / #2 }
+ \seq_gset_eq:cN { \c__template_key_order_root_tl #1 / #2 }
+ \l__template_key_order_seq
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_values:nn #1#2
+ {
+ \debug_suspend:
+ \prop_clear_new:c { \c__template_values_root_tl #1 / #2 }
+ \prop_set_eq:cN { \c__template_values_root_tl #1 / #2 }
+ \l__template_values_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_store_vars:nn #1#2
+ {
+ \debug_suspend:
+ \prop_gclear_new:c { \c__template_vars_root_tl #1 / #2 }
+ \prop_gset_eq:cN { \c__template_vars_root_tl #1 / #2 }
+ \l__template_vars_prop
+ \debug_resume:
+ }
+\cs_new_protected:Npn \__template_recover_defaults:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_defaults_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_values_prop
+ { \c__template_defaults_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_values_prop }
+ }
+\cs_new_protected:Npn \__template_recover_keytypes:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_keytypes_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_keytypes_prop
+ { \c__template_keytypes_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_keytypes_prop }
+ \seq_if_exist:cTF { \c__template_key_order_root_tl #1 / #2 }
+ {
+ \seq_set_eq:Nc \l__template_key_order_seq
+ { \c__template_key_order_root_tl #1 / #2 }
+ }
+ { \seq_clear:N \l__template_key_order_seq }
+ }
+\cs_new_protected:Npn \__template_recover_values:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_values_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_values_prop
+ { \c__template_values_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_values_prop }
+ }
+\cs_new_protected:Npn \__template_recover_vars:nn #1#2
+ {
+ \prop_if_exist:cTF
+ { \c__template_vars_root_tl #1 / #2 }
+ {
+ \prop_set_eq:Nc \l__template_vars_prop
+ { \c__template_vars_root_tl #1 / #2 }
+ }
+ { \prop_clear:N \l__template_vars_prop }
+ }
+\cs_new_protected:Npn \__template_define_type:nn #1#2
+ {
+ \prop_if_in:NnTF \g__template_type_prop {#1}
+ { \msg_error:nnn { template } { type-already-defined } {#1} }
+ { \__template_declare_type:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_declare_type:nn #1#2
+ {
+ \int_set:Nn \l__template_tmp_int {#2}
+ \int_compare:nTF { 0 <= \l__template_tmp_int <= 9 }
+ {
+ \msg_info:nnnV { template } { declare-type }
+ {#1} \l__template_tmp_int
+ \prop_gput:NnV \g__template_type_prop {#1}
+ \l__template_tmp_int
+ }
+ {
+ \msg_error:nnnV { template } { bad-number-of-arguments }
+ {#1} \l__template_tmp_int
+ }
+ }
+\cs_new_protected:Npn \__template_declare_template_keys:nnnn #1#2#3#4
+ {
+ \__template_execute_if_type_exist:nT {#1}
+ {
+ \__template_execute_if_arg_agree:nnT {#1} {#3}
+ {
+ \prop_clear:N \l__template_values_prop
+ \prop_clear:N \l__template_keytypes_prop
+ \seq_clear:N \l__template_key_order_seq
+ \keyval_parse:NNn
+ \__template_parse_keys_elt:n \__template_parse_keys_elt:nn {#4}
+ \__template_store_defaults:nn {#1} {#2}
+ \__template_store_keytypes:nn {#1} {#2}
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt:n #1
+ {
+ \__template_split_keytype:n {#1}
+ \bool_if:NF \l__template_error_bool
+ {
+ \__template_execute_if_keytype_exist:VT \l__template_keytype_tl
+ {
+ \seq_map_function:NN \c__template_keytypes_arg_seq
+ \__template_parse_keys_elt_aux:n
+ \bool_if:NF \l__template_error_bool
+ {
+ \seq_if_in:NoTF \l__template_key_order_seq
+ \l__template_key_name_tl
+ {
+ \msg_error:nnV { template } { duplicate-key-interface }
+ \l__template_key_name_tl
+ }
+ { \__template_parse_keys_elt_aux: }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt_aux:n #1
+ {
+ \str_if_eq:VnT \l__template_keytype_tl {#1}
+ {
+ \tl_if_empty:NT \l__template_keytype_arg_tl
+ {
+ \msg_error:nnn { template } { keytype-requires-argument } {#1}
+ \bool_set_true:N \l__template_error_bool
+ \seq_map_break:
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt_aux:
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ {
+ \l__template_keytype_tl
+ \tl_if_empty:NF \l__template_keytype_arg_tl
+ { { \l__template_keytype_arg_tl } }
+ }
+ \prop_put:NVV \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \seq_put_right:NV \l__template_key_order_seq \l__template_key_name_tl
+ \str_if_eq:VnT \l__template_keytype_tl { choice }
+ {
+ \clist_if_in:NnT \l__template_keytype_arg_tl { unknown }
+ { \msg_error:nn { template } { choice-unknown-reserved } }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_keys_elt:nn #1#2
+ {
+ \__template_parse_keys_elt:n {#1}
+ \use:c { __template_store_value_ \l__template_keytype_tl :n } {#2}
+ }
+\cs_new_protected:Npe \__template_split_keytype:n #1
+ {
+ \exp_not:N \bool_set_false:N \exp_not:N \l__template_error_bool
+ \tl_set:Nn \exp_not:N \l__template_tmp_tl {#1}
+ \tl_replace_all:Nnn \exp_not:N \l__template_tmp_tl { : } { \token_to_str:N : }
+ \tl_if_in:VnTF \exp_not:N \l__template_tmp_tl { \token_to_str:N : }
+ {
+ \exp_not:n
+ {
+ \tl_clear:N \l__template_key_name_tl
+ \exp_after:wN \__template_split_keytype_aux:w
+ \l__template_tmp_tl \s__template_stop
+ }
+ }
+ {
+ \exp_not:N \bool_set_true:N \exp_not:N \l__template_error_bool
+ \msg_error:nnn { template } { missing-keytype } {#1}
+ }
+ }
+\use:e
+ {
+ \cs_new_protected:Npn \exp_not:N \__template_split_keytype_aux:w
+ #1 \token_to_str:N : #2 \s__template_stop
+ {
+ \tl_put_right:Ne \exp_not:N \l__template_key_name_tl
+ {
+ \exp_not:N \tl_trim_spaces:e
+ { \exp_not:N \tl_to_str:n {#1} }
+ }
+ \tl_if_in:nnTF {#2} { \token_to_str:N : }
+ {
+ \tl_put_right:Nn \exp_not:N \l__template_key_name_tl
+ { \token_to_str:N : }
+ \exp_not:N \__template_split_keytype_aux:w #2 \s__template_stop
+ }
+ {
+ \exp_not:N \tl_if_empty:NTF \exp_not:N \l__template_key_name_tl
+ {
+ \msg_error:nnn { template } { empty-key-name }
+ { \token_to_str:N : #2 }
+ }
+ { \exp_not:N \__template_split_keytype_arg:n {#2} }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_split_keytype_arg:n #1
+ {
+ \tl_set:Ne \l__template_keytype_tl { \tl_trim_spaces:n {#1} }
+ \tl_clear:N \l__template_keytype_arg_tl
+ \cs_set_protected:Npn \__template_split_keytype_arg_aux:n ##1
+ {
+ \tl_if_in:nnT {#1} {##1}
+ {
+ \cs_set:Npn \__template_split_keytype_arg_aux:w
+ ####1 ##1 ####2 \s__template_stop
+ {
+ \tl_if_blank:nT {####1}
+ {
+ \tl_set:Ne \l__template_keytype_tl
+ { \tl_trim_spaces:n {##1} }
+ \tl_if_blank:nF {####2}
+ {
+ \tl_set:Ne \l__template_keytype_arg_tl
+ { \use:n ####2 }
+ }
+ \seq_map_break:
+ }
+ }
+ \__template_split_keytype_arg_aux:w #1 \s__template_stop
+ }
+ }
+ \seq_map_function:NN \c__template_keytypes_arg_seq
+ \__template_split_keytype_arg_aux:n
+ }
+\cs_generate_variant:Nn \__template_split_keytype_arg:n { V }
+\cs_new:Npn \__template_split_keytype_arg_aux:n #1 { }
+\cs_new:Npn \__template_split_keytype_arg_aux:w #1 \s__template_stop { }
+\cs_new_protected:Npn \__template_store_value_boolean:n #1
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#1} }
+\cs_new_protected:Npn \__template_store_value:n #1
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#1} }
+\cs_new_eq:NN \__template_store_value_choice:n \__template_store_value:n
+\cs_new_eq:NN \__template_store_value_function:n \__template_store_value:n
+\cs_new_eq:NN \__template_store_value_instance:n \__template_store_value:n
+\cs_new_protected:Npn \__template_store_value_aux:Nn #1#2
+ { \prop_put:Non \l__template_values_prop \l__template_key_name_tl {#2} }
+\cs_new_protected:Npn \__template_store_value_integer:n
+ { \__template_store_value_aux:Nn \int_eval:n }
+\cs_new_protected:Npn \__template_store_value_length:n
+ { \__template_store_value_aux:Nn \dim_eval:n }
+\cs_new_protected:Npn \__template_store_value_muskip:n
+ { \__template_store_value_aux:Nn \muskip_eval:n }
+\cs_new_protected:Npn \__template_store_value_real:n
+ { \__template_store_value_aux:Nn \fp_eval:n }
+\cs_new_protected:Npn \__template_store_value_skip:n
+ { \__template_store_value_aux:Nn \skip_eval:n }
+\cs_new_protected:Npn \__template_store_value_tokenlist:n
+ { \__template_store_value_aux:Nn \use:n }
+\cs_new_eq:NN \__template_store_value_commalist:n \__template_store_value_tokenlist:n
+\cs_new_protected:Npn \__template_declare_template_code:nnnnn #1#2#3#4#5
+ {
+ \__template_execute_if_type_exist:nT {#1}
+ {
+ \__template_execute_if_arg_agree:nnT {#1} {#3}
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_store_key_implementation:nnn {#1} {#2} {#4}
+ \regex_match:nnTF { \c { AssignTemplateKeys } } {#5}
+ { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} }
+ {
+ \__template_declare_template_code:nnnn
+ {#1} {#2} {#3} { \AssignTemplateKeys #5 }
+ }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_declare_template_code:nnnn #1#2#3#4
+ {
+ \cs_if_exist:cT { \c__template_code_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-template-code } {#1} {#2} }
+ \cs_generate_from_arg_count:cNnn
+ { \c__template_code_root_tl #1 / #2 }
+ \cs_gset_protected:Npn {#3} {#4}
+ }
+\cs_new_protected:Npn \__template_store_key_implementation:nnn #1#2#3
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_keytypes:nn {#1} {#2}
+ \prop_clear:N \l__template_vars_prop
+ \keyval_parse:nnn
+ { \__template_parse_vars_elt:n } { \__template_parse_vars_elt:nnn { #1 / #2 } } {#3}
+ \__template_store_vars:nn {#1} {#2}
+ \prop_map_inline:Nn \l__template_keytypes_prop
+ { \msg_error:nnnnn { template } { key-not-implemented } {##1} {#2} {#1} }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt:n #1
+ { \msg_error:nnn { template } { key-no-variable } {#1} }
+\cs_new_protected:Npn \__template_parse_vars_elt:nnn #1#2#3
+ {
+ \tl_set:Ne \l__template_key_name_tl
+ { \tl_trim_spaces:e { \tl_to_str:n {#2} } }
+ \prop_get:NVNTF \l__template_keytypes_prop
+ \l__template_key_name_tl
+ \l__template_keytype_tl
+ {
+ \__template_split_keytype_arg:V \l__template_keytype_tl
+ \__template_parse_vars_elt_aux:nn {#1} {#3}
+ \prop_remove:NV \l__template_keytypes_prop \l__template_key_name_tl
+ }
+ { \msg_error:nnn { template } { unknown-key } {#2} }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nn #1#2
+ {
+ \__template_parse_vars_elt_aux:nw {#1} #2 global global \s__template_stop
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nw
+ #1#2 global #3 global #4 \s__template_stop
+ {
+ \tl_if_blank:nTF {#4}
+ { \__template_parse_vars_elt_aux:nnn {#1} { } {#2} }
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \__template_parse_vars_elt_aux:nne
+ {#1} { global } { \tl_trim_spaces:n {#3} }
+ }
+ { \msg_error:nnn { template } { bad-variable } { #2 global #3 } }
+ }
+ }
+\cs_new_protected:Npn \__template_parse_vars_elt_aux:nnn #1#2#3
+ {
+ \str_case:VnF \l__template_keytype_tl
+ {
+ { choice } { \__template_implement_choices:nn {#1} {#3} }
+ { function }
+ {
+ \cs_if_exist:NF #3
+ { \cs_new:Npn #3 { } }
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ .code:n =
+ {
+ \cs_generate_from_arg_count:NNnn
+ \exp_not:N #3
+ \exp_not:c
+ { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
+ { \exp_not:V \l__template_keytype_arg_tl }
+ {##1}
+ }
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ { instance }
+ {
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ .code:n =
+ {
+ \exp_not:c
+ { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
+ \exp_not:N #3 { \UseInstance {##1} }
+ }
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ }
+ {
+ \tl_if_single:nTF {#3}
+ {
+ \cs_if_exist:NF #3
+ { \use:c { \__template_map_var_type: _new:N } #3 }
+ \__template_parse_vars_elt_key:nn {#1}
+ {
+ . \__template_map_var_type:
+ _ \str_if_eq:nnT {#1} { global } { g } set:N
+ = \exp_not:N #3
+ }
+ \prop_put:NVn \l__template_vars_prop
+ \l__template_key_name_tl {#2#3}
+ }
+ { \msg_error:nnn { template } { bad-variable } {#2#3} }
+ }
+ }
+\cs_generate_variant:Nn \__template_parse_vars_elt_aux:nnn { nne }
+\cs_new_protected:Npn \__template_parse_vars_elt_key:nn #1#2
+ {
+ \keys_define:ne { template / #1 }
+ { \l__template_key_name_tl #2 }
+ }
+\cs_new:Npn \__template_map_var_type:
+ {
+ \str_case:Vn \l__template_keytype_tl
+ {
+ { boolean } { bool }
+ { commalist } { clist }
+ { integer } { int }
+ { length } { dim }
+ { muskip } { muskip }
+ { real } { fp }
+ { skip } { skip }
+ { tokenlist } { tl }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choices:nn #1#2
+ {
+ \clist_set:NV \l__template_tmp_clist \l__template_keytype_arg_tl
+ \prop_put:NVn \l__template_vars_prop \l__template_key_name_tl { }
+ \keys_define:ne { template / #1 } { \l__template_key_name_tl .choice: }
+ \keyval_parse:nnn
+ { \__template_implement_choice_elt:n }
+ { \__template_implement_choice_elt:nnn {#1} }
+ {#2}
+ \prop_get:NVNT \l__template_values_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ { \__template_implement_choices_default: }
+ \clist_if_empty:NF \l__template_tmp_clist
+ {
+ \clist_map_inline:Nn \l__template_tmp_clist
+ { \msg_error:nnn { template } { choice-not-implemented } {##1} }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choices_default:
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl \l__template_tmp_tl }
+ \prop_if_in:NVF \l__template_vars_prop \l__template_tmp_tl
+ {
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl \l__template_tmp_tl }
+ \prop_if_in:NVF \l__template_vars_prop \l__template_tmp_tl
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \prop_get:NVN \l__template_values_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \msg_error:nnVV { template } { unknown-default-choice }
+ \l__template_key_name_tl
+ \l__template_key_name_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt:nnn #1#2#3
+ {
+ \clist_if_empty:NTF \l__template_tmp_clist
+ {
+ \str_if_eq:nnTF {#2} { unknown }
+ { \__template_implement_choice_elt_aux:nnn {#1} {#2} {#3} }
+ { \__template_implement_choice_elt_aux:n {#2} }
+ }
+ {
+ \clist_if_in:NnTF \l__template_tmp_clist {#2}
+ {
+ \clist_remove_all:Nn \l__template_tmp_clist {#2}
+ \__template_implement_choice_elt_aux:nnn {#1} {#2} {#3}
+ }
+ { \__template_implement_choice_elt_aux:n {#2} }
+ }
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt_aux:n #1
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \msg_error:nnVn { template } { unknown-choice } \l__template_key_name_tl {#1}
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt_aux:nnn #1#2#3
+ {
+ \keys_define:ne { template / #1 }
+ { \l__template_key_name_tl / #2 .code:n = { \exp_not:n {#3} } }
+ \tl_set:Ne \l__template_tmp_tl
+ { \l__template_key_name_tl \c_space_tl #2 }
+ \prop_put:NVn \l__template_vars_prop \l__template_tmp_tl {#3}
+ }
+\cs_new_protected:Npn \__template_implement_choice_elt:n #1
+ {
+ \msg_error:nnVn { template } { choice-requires-code }
+ \l__template_key_name_tl {#1}
+ }
+\cs_new_protected:Npn \__template_edit_defaults:nnn #1#2#3
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_parse_values:nnn {#1} {#2} {#3}
+ \__template_store_defaults:nn {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__template_parse_values:nnn #1#2#3
+ {
+ \__template_recover_keytypes:nn {#1} {#2}
+ \keyval_parse:NNn
+ \__template_parse_values_elt:n \__template_parse_values_elt:nn {#3}
+ }
+\cs_new_protected:Npn \__template_parse_values_elt:n #1
+ {
+ \bool_set_true:N \l__template_error_bool
+ \msg_error:nnn { template } { key-no-value } {#1}
+ }
+\cs_new_protected:Npn \__template_parse_values_elt:nn #1#2
+ {
+ \tl_set:Ne \l__template_key_name_tl
+ { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+ \prop_get:NVNTF \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ { \__template_parse_values_elt_aux:n {#2} }
+ { \msg_error:nnV { template } { unknown-key } \l__template_key_name_tl }
+ }
+\cs_new_protected:Npn \__template_parse_values_elt_aux:n #1
+ {
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \use:c { __template_store_value_ \l__template_keytype_tl :n } {#1}
+ }
+\cs_new_protected:Npn \__template_template_set_eq:nnn #1#2#3
+ {
+ \__template_recover_defaults:nn {#1} {#3}
+ \__template_store_defaults:nn {#1} {#2}
+ \__template_recover_keytypes:nn {#1} {#3}
+ \__template_store_keytypes:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#3}
+ \__template_store_vars:nn {#1} {#2}
+ \cs_if_exist:cT { \c__template_code_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-template-code } {#1} {#2} }
+ \cs_gset_eq:cc { \c__template_code_root_tl #1 / #2 }
+ { \c__template_code_root_tl #1 / #3 }
+ }
+\cs_new_protected:Npn \__template_declare_instance:nnnn #1#2#3#4
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_declare_instance_aux:nnnn {#1} {#2} {#3} {#4}
+ }
+ }
+\cs_new_protected:Npn \__template_declare_instance_aux:nnnn #1#2#3#4
+ {
+ \bool_set_false:N \l__template_error_bool
+ \__template_parse_values:nnn {#1} {#2} {#4}
+ \bool_if:NF \l__template_error_bool
+ {
+ \prop_put:Nnn \l__template_values_prop { from~template } {#2}
+ \__template_store_values:nn {#1} {#3}
+ \__template_convert_to_assignments:
+ \cs_if_exist:cT { \c__template_instances_root_tl #1 / #3 }
+ { \msg_info:nnnn { template } { declare-instance } {#3} {#1} }
+ \cs_set_protected:cpe { \c__template_instances_root_tl #1 / #3 }
+ {
+ \exp_not:N \__template_assignments_push:n
+ { \exp_not:V \l__template_assignments_tl }
+ \exp_not:c { \c__template_code_root_tl #1 / #2 }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_instance_set_eq:nnn #1#2#3
+ {
+ \__template_if_instance_exist:nnTF {#1} {#3}
+ {
+ \__template_recover_values:nn {#1} {#3}
+ \__template_store_values:nn {#1} {#2}
+ \cs_if_exist:cT { \c__template_instances_root_tl #1 / #2 }
+ { \msg_info:nnnn { template } { declare-instance } {#2} {#1} }
+ \cs_set_eq:cc { \c__template_instances_root_tl #1 / #2 }
+ { \c__template_instances_root_tl #1 / #3 }
+ }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#3} }
+ }
+\cs_new_protected:Npn \__template_edit_instance:nnn #1#2#3
+ {
+ \__template_if_instance_exist:nnTF {#1} {#2}
+ {
+ \__template_recover_values:nn {#1} {#2}
+ \prop_get:NnN \l__template_values_prop { from~template }
+ \l__template_tmp_tl
+ \__template_edit_instance_aux:nVnn
+ {#1} \l__template_tmp_tl {#2} {#3}
+ }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_edit_instance_aux:nnnn #1#2#3#4
+ {
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_declare_instance_aux:nnnn {#1} {#2} {#3} {#4}
+ }
+\cs_generate_variant:Nn \__template_edit_instance_aux:nnnn { nV }
+\cs_new_protected:Npn \__template_convert_to_assignments:
+ {
+ \tl_clear:N \l__template_assignments_tl
+ \seq_map_function:NN \l__template_key_order_seq
+ \__template_convert_to_assignments_aux:n
+ }
+\cs_new_protected:Npn \__template_convert_to_assignments_aux:n #1
+ {
+ \prop_get:NnN \l__template_keytypes_prop {#1} \l__template_tmp_tl
+ \__template_convert_to_assignments_aux:nV {#1} \l__template_tmp_tl
+ }
+\cs_new_protected:Npn \__template_convert_to_assignments_aux:nn #1#2
+ {
+ \prop_get:NnNT \l__template_values_prop {#1} \l__template_value_tl
+ {
+ \prop_get:NnNTF \l__template_vars_prop {#1} \l__template_var_tl
+ {
+ \__template_split_keytype_arg:n {#2}
+ \str_if_eq:VnF \l__template_keytype_tl { choice }
+ {
+ \str_if_eq:VnF \l__template_keytype_tl { code }
+ { \__template_find_global: }
+ }
+ \tl_set:Nn \l__template_key_name_tl {#1}
+ \use:c { __template_assign_ \l__template_keytype_tl : }
+ }
+ { \msg_error:nnn { template } { unknown-attribute } {#1} }
+ }
+ }
+\cs_generate_variant:Nn \__template_convert_to_assignments_aux:nn { nV }
+\cs_new_protected:Npn \__template_find_global:
+ {
+ \bool_set_false:N \l__template_global_bool
+ \tl_if_in:onT \l__template_var_tl { global }
+ {
+ \exp_after:wN \__template_find_global_aux:w \l__template_var_tl \s__template_stop
+ }
+ }
+\cs_new_protected:Npn \__template_find_global_aux:w #1 global #2 \s__template_stop
+ {
+ \tl_set:Nn \l__template_var_tl {#2}
+ \bool_set_true:N \l__template_global_bool
+ }
+\cs_new_protected:Npn \__template_use_template:nnn #1#2#3
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_parse_values:nnn {#1} {#2} {#3}
+ \__template_convert_to_assignments:
+ \use:c { \c__template_code_root_tl #1 / #2 }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_boolean:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_boolean_aux:n { bool_gset } }
+ { \__template_assign_boolean_aux:n { bool_set } }
+ }
+\cs_new_protected:Npn \__template_assign_boolean_aux:n #1
+ {
+ \__template_if_key_value:VTF \l__template_value_tl
+ {
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 _eq:NN }
+ \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 _ \l__template_value_tl :N }
+ \exp_not:V \l__template_var_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_choice:
+ {
+ \__template_assign_choice_aux:eF
+ { \l__template_key_name_tl \c_space_tl \l__template_value_tl }
+ {
+ \__template_assign_choice_aux:eF
+ { \l__template_key_name_tl \c_space_tl unknown }
+ {
+ \prop_get:NVN \l__template_keytypes_prop \l__template_key_name_tl
+ \l__template_tmp_tl
+ \__template_split_keytype_arg:V \l__template_tmp_tl
+ \msg_error:nnVV { template } { unknown-choice }
+ \l__template_key_name_tl
+ \l__template_value_tl
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_choice_aux:nF #1
+ {
+ \prop_get:NnNTF \l__template_vars_prop {#1} \l__template_tmp_tl
+ { \tl_put_right:NV \l__template_assignments_tl \l__template_tmp_tl }
+ }
+\cs_generate_variant:Nn \__template_assign_choice_aux:nF { e }
+\cs_new_protected:Npn \__template_assign_function:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_function_aux:N \cs_gset:Npn }
+ { \__template_assign_function_aux:N \cs_set:Npn }
+ }
+\cs_new_protected:Npn \__template_assign_function_aux:N #1
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \cs_generate_from_arg_count:NNnn
+ \exp_not:V \l__template_var_tl
+ \exp_not:N #1
+ { \exp_not:V \l__template_keytype_arg_tl }
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_instance:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_instance_aux:N \cs_gset_protected:Npn }
+ { \__template_assign_instance_aux:N \cs_set_protected:Npn }
+ }
+\cs_new_protected:Npn \__template_assign_instance_aux:N #1
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:N #1 \exp_not:V \l__template_var_tl
+ {
+ \__template_use_instance:nn
+ { \exp_not:V \l__template_keytype_arg_tl }
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_integer:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \int_gset:Nn }
+ { \__template_assign_variable:N \int_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_length:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \dim_gset:Nn }
+ { \__template_assign_variable:N \dim_set:Nn }
+}
+\cs_new_protected:Npn \__template_assign_muskip:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \muskip_gset:Nn }
+ { \__template_assign_variable:N \muskip_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_real:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \fp_gset:Nn }
+ { \__template_assign_variable:N \fp_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_skip:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_variable:N \skip_gset:Nn }
+ { \__template_assign_variable:N \skip_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_tokenlist:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_tokenlist_aux:NN \tl_gset:NV \tl_gset:Nn }
+ { \__template_assign_tokenlist_aux:NN \tl_set:NV \tl_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_tokenlist_aux:NN #1#2
+ {
+ \__template_if_key_value:VTF \l__template_value_tl
+ {
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #1 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #2 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+ }
+\cs_new_protected:Npn \__template_assign_commalist:
+ {
+ \bool_if:NTF \l__template_global_bool
+ { \__template_assign_tokenlist_aux:NN \clist_gset:NV \clist_gset:Nn }
+ { \__template_assign_tokenlist_aux:NN \clist_set:NV \clist_set:Nn }
+ }
+\cs_new_protected:Npn \__template_assign_variable:N #1
+ {
+ \__template_if_key_value:VT \l__template_value_tl
+ { \__template_key_to_value: }
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ #1 \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
+ }
+\cs_new_protected:Npn \__template_key_to_value:
+ { \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
+\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
+ {
+ \tl_set:Ne \l__template_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+ \prop_get:NVNTF \l__template_vars_prop \l__template_tmp_tl
+ \l__template_value_tl
+ {
+ \exp_after:wN \__template_key_to_value_auxii:w \l__template_value_tl
+ \s__template_mark global \q__template_nil \s__template_stop
+ }
+ { \msg_error:nnV { template } { unknown-attribute } \l__template_tmp_tl }
+ }
+\cs_new_protected:Npn \__template_key_to_value_auxii:w #1 global #2#3 \s__template_stop
+ {
+ \__template_quark_if_nil:NF #2
+ { \tl_set:Nn \l__template_value_tl {#2} }
+ }
+\cs_new_protected:Npn \__template_use_instance:nn #1#2
+ {
+ \__template_if_use_template:nTF {#2}
+ { \__template_use_instance_aux:nNnnn {#1} #2 }
+ { \__template_use_instance_aux:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__template_use_instance_aux:nNnnn #1#2#3#4#5
+ {
+ \str_if_eq:nnTF {#1} {#3}
+ { \__template_use_template:nnn {#3} {#4} {#5} }
+ { \msg_error:nnnn { template } { type-mismatch } {#1} {#3} }
+}
+\cs_new_protected:Npn \__template_use_instance_aux:nn #1#2
+ {
+ \__template_if_instance_exist:nnTF {#1} {#2}
+ { \use:c { \c__template_instances_root_tl #1 / #2 } }
+ { \msg_error:nnnn { template } { unknown-instance } {#1} {#2} }
+ }
+\cs_new:Npn \__template_assignments_pop: { \l__template_assignments_tl }
+\cs_new_protected:Npn \__template_assignments_push:n #1
+ { \tl_set:Nn \l__template_assignments_tl {#1} }
+\cs_new_protected:Npn \__template_show_code:nn #1#2
+ { \cs_show:c { \c__template_code_root_tl #1 / #2 } }
+\cs_new_protected:Npn \__template_show_defaults:nn #1#2
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_defaults:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_values_prop
+ {#1} {#2} { default~values }
+ }
+ }
+\cs_new_protected:Npn \__template_show_keytypes:nn #1#2
+ {
+ \__template_if_keys_exist:nnT {#1} {#2}
+ {
+ \__template_recover_keytypes:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_keytypes_prop
+ {#1} {#2} { interface }
+ }
+ }
+\cs_new_protected:Npn \__template_show_vars:nn #1#2
+ {
+ \__template_execute_if_code_exist:nnT {#1} {#2}
+ {
+ \__template_recover_vars:nn {#1} {#2}
+ \__template_show:Nnnn \l__template_vars_prop
+ {#1} {#2} { variable~mapping }
+ }
+ }
+\cs_new_protected:Npn \__template_show:Nnnn #1#2#3#4
+ {
+ \msg_show:nneeee { template } { show-attribute }
+ { \tl_to_str:n {#2} }
+ { \tl_to_str:n {#3} }
+ { \tl_to_str:n {#4} }
+ { \prop_map_function:NN #1 \msg_show_item_unbraced:nn }
+ }
+\cs_new_protected:Npn \__template_show_values:nn #1#2
+ {
+ \__template_if_instance_exist:nnT {#1} {#2}
+ {
+ \__template_recover_values:nn {#1} {#2}
+ \msg_show:nneee { template } { show-values }
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ {
+ \prop_map_function:NN \l__template_values_prop
+ \msg_show_item_unbraced:nn
+ }
+ }
+ }
+\msg_new:nnnn { template } { argument-number-mismatch }
+ { Template~type~'#1'~takes~#2~argument(s). }
+ {
+ Templates~of~type~'#1'~require~#2~argument(s).\\
+ You~have~tried~to~make~a~template~for~'#1'~
+ with~#3~argument(s),~which~is~not~possible:~
+ the~number~of~arguments~must~agree.
+ }
+\msg_new:nnnn { template } { bad-number-of-arguments }
+ { Bad~number~of~arguments~for~template~type~'#1'. }
+ {
+ A~template~may~accept~between~0~and~9~arguments.\\
+ You~asked~to~use~#2~arguments:~this~is~not~supported.
+ }
+\msg_new:nnnn { template } { bad-variable }
+ { Incorrect~variable~description~'#1'. }
+ {
+ The~argument~'#1'~is~not~of~the~form \\
+ ~~'<variable>'\\
+ ~or~\\
+ ~~'global~<variable>'.\\
+ It~must~be~given~in~one~of~these~formats~to~be~used~in~a~template.
+ }
+\msg_new:nnnn { template } { choice-not-implemented }
+ { The~choice~'#1'~has~no~implementation. }
+ {
+ Each~choice~listed~in~the~interface~for~a~template~must~
+ have~an~implementation.
+ }
+\msg_new:nnnn { template } { choice-no-code }
+ { The~choice~'#1'~requires~implementation~details. }
+ {
+ When~creating~template~code~using~\DeclareTemplateCode,~
+ each~choice~name~must~have~an~associated~implementation.\\
+ This~should~be~given~after~a~'='~sign:~LaTeX~did~not~find~one.
+ }
+\msg_new:nnnn { template } { choice-requires-code }
+ { The~choice~'#2'~for~key~'#1'~requires~an~implementation. }
+ {
+ You~should~have~put:\\
+ \ \ #1~:~choice~{~#2 = <code> ~} \\
+ but~LaTeX~did~not~find~any~<code>.
+ }
+\msg_new:nnnn { template } { duplicate-key-interface }
+ { Key~'#1'~appears~twice~in~interface~definition~\msg_line_context:. }
+ {
+ Each~key~can~only~have~one~interface~declared~in~a~template.\\
+ LaTeX~found~two~interfaces~for~'#1'.
+ }
+\msg_new:nnnn { template } { keytype-requires-argument }
+ { The~key~type~'#1'~requires~an~argument~\msg_line_context:. }
+ {
+ You~should~have~put:\\
+ \ \ <key-name>~:~#1~{~<argument>~} \\
+ but~LaTeX~did~not~find~an~<argument>.
+ }
+\msg_new:nnnn { template } { invalid-keytype }
+ { The~key~'#1'~is~missing~a~key-type~\msg_line_context:. }
+ {
+ Each~key~in~a~template~requires~a~key-type,~given~in~the~form:\\
+ \ \ <key>~:~<key-type>\\
+ LaTeX~could~not~find~a~<key-type>~in~your~input.
+ }
+\msg_new:nnnn { template } { key-no-value }
+ { The~key~'#1'~has~no~value~\msg_line_context:. }
+ {
+ When~creating~an~instance~of~a~template~
+ every~key~listed~must~include~a~value:\\
+ \ \ <key>~=~<value>
+ }
+\msg_new:nnnn { template } { key-no-variable }
+ { The~key~'#1'~requires~implementation~details~\msg_line_context:. }
+ {
+ When~creating~template~code~using~\DeclareTemplateCode,~
+ each~key~name~must~have~an~associated~implementation.\\
+ This~should~be~given~after~a~'='~sign:~LaTeX~did~not~find~one.
+ }
+\msg_new:nnnn { template } { key-not-implemented }
+ { Key~'#1'~has~no~implementation~\msg_line_context:. }
+ {
+ The~definition~of~key~implementations~for~template~'#2'~
+ of~template~type~'#3'~does~not~include~any~details~for~key~'#1'.\\
+ The~key~was~declared~in~the~interface~definition,~
+ and~so~an~implementation~is~required.
+ }
+\msg_new:nnnn { template } { missing-keytype }
+ { The~key~'#1'~is~missing~a~key-type~\msg_line_context:. }
+ {
+ Key~interface~definitions~should~be~of~the~form\\
+ \ \ #1~:~<key-type>\\
+ but~LaTeX~could~not~find~a~<key-type>.
+ }
+\msg_new:nnnn { template } { no-template-code }
+ {
+ The~template~'#2'~of~type~'#1'~is~unknown~
+ or~has~no~implementation.
+ }
+ {
+ There~is~no~code~available~for~the~template~name~given.\\
+ This~should~be~given~using~\DeclareTemplateCode.
+ }
+\msg_new:nnnn { template } { type-already-defined }
+ { Template~type~'#1'~already~defined. }
+ {
+ You~have~used~\NewTemplateType~
+ with~a~template~type~that~has~already~been~defined.
+ }
+\msg_new:nnnn { template } { type-mismatch }
+ { Template~types~'#1'~and~'#2'~do~not~agree. }
+ {
+ You~are~trying~to~use~a~template~directly~with~\UseInstance
+ (or~a~similar~function),~but~the~template~types~do~not~match.
+ }
+\msg_new:nnnn { template } { unknown-attribute }
+ { The~template~attribute~'#1'~is~unknown. }
+ {
+ There~is~a~definition~in~the~current~template~reading\\
+ \ \ \token_to_str:N \KeyValue {~#1~} \\
+ but~there~is~no~key~called~'#1'.
+ }
+\msg_new:nnnn { template } { unknown-choice }
+ { The~choice~'#2'~was~not~declared~for~key~'#1'. }
+ {
+ The~key~'#1'~takes~a~fixed~list~of~choices~
+ and~this~list~does~not~include~'#2'.
+ }
+\msg_new:nnnn { template } { unknown-default-choice }
+ { The~default~choice~'#2'~was~not~declared~for~key~'#1'. }
+ {
+ The~key~'#1'~takes~a~fixed~list~of~choices~
+ and~this~list~does~not~include~'#2'.
+ }
+\msg_new:nnnn { template } { unknown-instance }
+ { The~instance~'#2'~of~type~'#1'~is~unknown. }
+ {
+ You~have~asked~to~use~an~instance~'#2',~
+ but~this~has~not~been~created.
+ }
+\msg_new:nnnn { template } { unknown-key }
+ { Unknown~template~key~'#1'. }
+ {
+ The~key~'#1'~was~not~declared~in~the~interface~
+ for~the~current~template.
+ }
+\msg_new:nnnn { template } { unknown-keytype }
+ { The~key-type~'#1'~is~unknown. }
+ {
+ Valid~key-types~are:\\
+ -~boolean;\\
+ -~choice;\\
+ -~commalist;\\
+ -~function;\\
+ -~instance;\\
+ -~integer;\\
+ -~length;\\
+ -~muskip;\\
+ -~real;\\
+ -~skip;\\
+ -~tokenlist.
+ }
+\msg_new:nnnn { template } { unknown-type }
+ { The~template~type~'#1'~is~unknown. }
+ {
+ A~template~type~needs~to~be~defined~with~\NewTemplateType
+ prior~to~using~it.
+ }
+\msg_new:nnnn { template } { unknown-template }
+ { The~template~'#2'~of~type~'#1'~is~unknown. }
+ {
+ No~interface~has~been~declared~for~a~template~
+ '#2'~of~template~type~'#1'.
+ }
+\msg_new:nnn { template } { declare-instance }
+ { Declaring~instance~~'#1'~of~type~#2~\msg_line_context:. }
+\msg_new:nnn { template } { declare-template-code }
+ { Declaring~code~for~template~'#2'~of~template~type~'#1'~\msg_line_context:. }
+\msg_new:nnn { template } { declare-template-interface }
+ {
+ Declaring~interface~for~template~'#2'~of~template~type~'#1'~
+ \msg_line_context:.
+ }
+\msg_new:nnn { template } { declare-type }
+ { Declaring~template~type~'#1'~taking~#2~argument(s)~\msg_line_context:. }
+\msg_new:nnn { template } { show-attribute }
+ {
+ The~template~'#2'~of~type~'#1'~has~
+ \tl_if_empty:nTF {#4} { no~#3. } { #3 : #4 }
+ }
+\msg_new:nnn { template } { show-values }
+ {
+ The~instance~'#2'~of~type~'#1'~has~
+ \tl_if_empty:nTF {#3} { no~values. } { values: #3 }
+ }
+\prop_gput:Nnn \g_msg_module_type_prop { template } { LaTeX }
+\cs_new_protected:Npn \NewTemplateType #1#2
+ { \__template_define_type:nn {#1} {#2} }
+\cs_new_protected:Npn \DeclareTemplateInterface #1#2#3#4
+ { \__template_declare_template_keys:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \DeclareTemplateCode #1#2#3#4#5
+ { \__template_declare_template_code:nnnnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \DeclareTemplateCopy #1#2#3
+ { \__template_template_set_eq:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \EditTemplateDefaults #1#2#3
+ { \__template_edit_defaults:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \UseTemplate #1#2#3
+ { \__template_use_template:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \DeclareInstance #1#2#3#4
+ { \__template_declare_instance:nnnn {#1} {#3} {#2} {#4} }
+\cs_new_protected:Npn \DeclareInstanceCopy #1#2#3
+ { \__template_instance_set_eq:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \EditInstance #1#2#3
+ { \__template_edit_instance:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \UseInstance #1#2
+ { \__template_use_instance:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateCode #1#2
+ { \__template_show_code:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateDefaults #1#2
+ { \__template_show_defaults:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateInterface #1#2
+ { \__template_show_keytypes:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowTemplateVariables #1#2
+ { \__template_show_vars:nn {#1} {#2} }
+\cs_new_protected:Npn \ShowInstanceValues #1#2
+ { \__template_show_values:nn {#1} {#2} }
+\cs_new_protected:Npn \KeyValue #1 {#1}
+\cs_new_protected:Npn \AssignTemplateKeys { \__template_assignments_pop: }
+\cs_new_protected:Npn \SetTemplateKeys #1#2#3
+ { \keys_set_known:nnN { template / #1 / #2 } {#3} \l__template_tmp_clist }
+\IncludeInRelease{0000/00/00}{lttemplates}%
+ {Prototype~document~commands}%
+
+\EndModuleRelease
+\ExplSyntaxOff
%%% From File: ltalloc.dtx
%%% From File: ltcntrl.dtx
%%% From File: lterror.dtx
@@ -8511,11 +9923,9 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltpar.dtx
%% File: ltpara.dtx
-%% Copyright (C) 2020-2023
+%% Copyright (C) 2020-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
-\def\ltparaversion{v1.0l}
-\def\ltparadate{2023/01/30}
\ExplSyntaxOn
@@ -8548,7 +9958,7 @@ of this package available from CTAN}
\@kernel@before@para@begin
\hook_use:n {para/begin}
\if_mode_horizontal: \else:
- \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
+ \msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
\EndIncludeInRelease
@@ -8572,7 +9982,7 @@ of this package available from CTAN}
\@kernel@before@para@begin
\hook_use:n {para/begin}
\if_mode_horizontal: \else:
- \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
+ \msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
@@ -8695,11 +10105,9 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: ltmeta.dtx
-%% Copyright (C) 2021-2023
+%% Copyright (C) 2021-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
-\def\ltmetaversion{v1.0b}
-\def\ltmetadate{2022/05/18}
\NewModuleRelease{2022/06/01}{ltmeta}
{Document Metadata handling}
\let \IfDocumentMetadataTF \@secondoftwo
@@ -10346,7 +11754,7 @@ of this package available from CTAN}
\EndIncludeInRelease
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltfssaxes.dtx
-%% Copyright (C) 1999-2020 Frank Mittelbach
+%% Copyright (C) 2019-2020 Frank Mittelbach
\IncludeInRelease{2020/02/02}%
{\DeclareFontSeriesChangeRule}{Series change rules}%
\def\DeclareFontSeriesChangeRule#1#2#3#4{%
@@ -12227,7 +13635,7 @@ of this package available from CTAN}
\let\@defaultfamilyhook\@undefined
\EndIncludeInRelease
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\IncludeInRelease{2017/01/01}%
{\encodingdefault}{TU encoding default}%
\ifx\Umathcode\@undefined
@@ -12725,8 +14133,7 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{lmss} {1}
\DeclareEncodingSubset{TS1}{lmssq} {1}
\DeclareEncodingSubset{TS1}{lmvtt} {1}
-\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM and
- % pertenthousand for some reason
+\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM and pertenthousand
\DeclareEncodingSubset{TS1}{ptmx} {2}
\DeclareEncodingSubset{TS1}{ptmj} {2}
\DeclareEncodingSubset{TS1}{ul8} {2}
@@ -12764,23 +14171,31 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{lato-*} {0} % with a bunch of tofu inside
\DeclareEncodingSubset{TS1}{opensans-*} {0} % with a bunch of tofu inside
\DeclareEncodingSubset{TS1}{cantarell-*} {0} % with a bunch of tofu inside
-\DeclareEncodingSubset{TS1}{fbb-*} {0} % missing centoldstyle
\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside
+\DeclareEncodingSubset{TS1}{fbb-*} {2} % missing centoldstyle
\DeclareEncodingSubset{TS1}{Alegreya-*} {2}
\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2}
+\DeclareEncodingSubset{TS1}{BaskervilleF-*} {2}
\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2}
\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2}
\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2}
\DeclareEncodingSubset{TS1}{EBGaramond-*} {2}
+\DeclareEncodingSubset{TS1}{Merriwthr-OsF} {2}
+\DeclareEncodingSubset{TS1}{MerriwthrSans-OsF} {2}
+\DeclareEncodingSubset{TS1}{Montserrat-*} {2}
+\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {2}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {2}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {2}
\DeclareEncodingSubset{TS1}{Tempora-TLF} {2}
\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2}
+\DeclareEncodingSubset{TS1}{XCharter-TLF} {2}
+\DeclareEncodingSubset{TS1}{XCharter-TOsF} {2}
+\DeclareEncodingSubset{TS1}{erewhon-*} {2}
\DeclareEncodingSubset{TS1}{Arimo-TLF} {3}
-\DeclareEncodingSubset{TS1}{Carlito-*} {3}
-\DeclareEncodingSubset{TS1}{FiraSans-*} {3}
+\DeclareEncodingSubset{TS1}{Crlt-*} {3}
+\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {3}
\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3}
-\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3}
-\DeclareEncodingSubset{TS1}{Montserrat-*} {3}
-\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3}
+\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {3}
\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3}
\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3}
\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3}
@@ -12795,6 +14210,7 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4}
\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4}
\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4}
+\DeclareEncodingSubset{TS1}{FiraSans-*} {4}
\DeclareEncodingSubset{TS1}{Go-TLF} {4}
\DeclareEncodingSubset{TS1}{GoMono-TLF} {4}
\DeclareEncodingSubset{TS1}{InriaSans-*} {4}
@@ -12807,7 +14223,6 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4}
\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4}
\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4}
-\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4}
\DeclareEncodingSubset{TS1}{MintSpirit-*} {4}
\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4}
\DeclareEncodingSubset{TS1}{PTMono-TLF} {4}
@@ -12824,57 +14239,50 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{Rosario-*} {4}
\DeclareEncodingSubset{TS1}{SticksTooText-*} {4}
\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4}
-\DeclareEncodingSubset{TS1}{Almendra-OsF} {5}
+\DeclareEncodingSubset{TS1}{Almndr-OsF} {5}
\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5}
-\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5}
-\DeclareEncodingSubset{TS1}{Bitter-TLF} {5}
+\DeclareEncodingSubset{TS1}{Bttr-TLF} {5}
\DeclareEncodingSubset{TS1}{Cinzel-LF} {5}
\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5}
+\DeclareEncodingSubset{TS1}{Cochineal-*} {5}
\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5}
\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5}
\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5}
\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5}
-\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5}
\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5}
-\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5}
-\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5}
+\DeclareEncodingSubset{TS1}{PlyfrDisplay-TLF} {5}
+\DeclareEncodingSubset{TS1}{PlyfrDisplay-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5}
\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5}
\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5}
+\DeclareEncodingSubset{TS1}{charssil-TLF} {5}
\DeclareEncodingSubset{TS1}{Crimson-TLF} {6}
-\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6}
-\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6}
-\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6}
\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6}
\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6}
\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6}
\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6}
-\DeclareEncodingSubset{TS1}{Overlock-LF} {6}
+\DeclareEncodingSubset{TS1}{Ovrlck-LF} {6}
+\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7}
+\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7}
\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7}
\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7}
\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7}
\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7}
-\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7}
-\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7}
-\DeclareEncodingSubset{TS1}{Marcellus-LF} {7}
+\DeclareEncodingSubset{TS1}{LibreBskrvl-TLF} {7}
+\DeclareEncodingSubset{TS1}{LibreCsln-*} {7}
+\DeclareEncodingSubset{TS1}{Lbstr-LF} {7}
+\DeclareEncodingSubset{TS1}{Mrcls-LF} {7}
\DeclareEncodingSubset{TS1}{NotoSans-*} {7}
-\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7}
-\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7}
\DeclareEncodingSubset{TS1}{NotoSerif-*} {7}
-\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7}
-\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7}
-\DeclareEncodingSubset{TS1}{XCharter-TLF} {7}
-\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7}
-\DeclareEncodingSubset{TS1}{erewhon-*} {7}
-\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7}
-\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7}
-\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing
-\DeclareEncodingSubset{TS1}{Cochineal-*} {8}
+\DeclareEncodingSubset{TS1}{Quattro-LF} {7}
+\DeclareEncodingSubset{TS1}{QuattroSans-LF} {7}
+\DeclareEncodingSubset{TS1}{Frm-LF} {7} % the superiors are missing
+\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {8}
\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9}
\def\UseLegacyTextSymbols{%
\DeclareTextSymbolDefault{\textasteriskcentered}{OMS}%
@@ -13112,7 +14520,6 @@ of this package available from CTAN}
\EndModuleRelease
-
%%% From File: ltpageno.dtx
%%% From File: ltxref.dtx
\IncludeInRelease{2023/06/01}%
@@ -13260,12 +14667,7 @@ of this package available from CTAN}
\let\Ref\@undefined
\EndIncludeInRelease
-%% File: ltproperties.dtx
-\def\ltpropertiesversion{1.0c}
-\def\ltpropertiesdate{2023-10-15}
-
-
-
+%%% From File: ltproperties.dtx
\ExplSyntaxOn
\NewModuleRelease{2023/11/01}{ltproperties}
{Cross-referencing~properties}
@@ -13320,7 +14722,7 @@ of this package available from CTAN}
{
\legacy_if:nT { @filesw }
{
- \iow_shipout_x:Nx \@auxout
+ \protected@write \@auxout {}
{
\token_to_str:N \new@label@record
{#1}
@@ -15770,11 +17172,9 @@ of this package available from CTAN}
\EndIncludeInRelease
%% File: ltmarks.dtx
-%% Copyright (C) 2022-2023
+%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-\def\ltmarksversion{v1.0d}
-\def\ltmarksdate{2022/06/01}
%% \end{function}
\ExplSyntaxOn
@@ -15815,40 +17215,64 @@ of this package available from CTAN}
\tl_new:c { g__mark_last-column_last_ #1 _tl }
}
\box_new:N \l__mark_box
+\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
\tl_new:N \g__mark_new_top_tl
-\cs_new_protected:Npn \__mark_update_structure:nn #1#2
- {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+\cs_new_protected:Npn \__mark_extract_and_handle_marks:nn #1#2 {
\group_begin:
\dim_set_eq:NN \tex_splitmaxdepth:D \c_max_dim
\int_set_eq:NN \tex_vbadness:D \c_max_int
\dim_set_eq:NN \tex_vfuzz:D \c_max_dim
- \vbox_set_to_ht:Nnn \l__mark_box { -.5\c_max_dim }
+ \__mark_prepare_and_extract:nn {#1} {#2}
+ \group_end:
+ }
+\cs_new_protected:Npn \__mark_prepare_and_extract:nn #1#2 {
+ \vbox_set:Nn \l__mark_box
+ {
+ #2
+ \tex_unskip:D
+ \box_set_to_last:N \l__mark_box
+ \int_compare:nNnT \tex_lastnodetype:D < 0
{
- #2
- \tex_unskip:D
- \box_set_to_last:N \l__mark_box
- \int_compare:nNnT \tex_lastnodetype:D < 0
- {
- \box_if_vertical:NT \l__mark_box
- {
- \vbox_set_to_ht:Nnn \l__mark_box { -.5\c_max_dim }
- {
- \vbox_unpack:N \l__mark_box
- \tex_kern:D \c_zero_dim % ensure that box
- % is not empty
- }
- \int_compare:nNnT \tex_badness:D > 0
- { \vbox_unpack:N \l__mark_box }
- }
- }
- \tex_kern:D \c_zero_dim
+ \box_if_vertical:NT \l__mark_box
+ { \vbox_unpack:N \l__mark_box }
}
- \int_compare:nNnTF \tex_badness:D > 0
- {
- \vbox_set_split_to_ht:NNn \l__mark_box \l__mark_box \c_max_dim
- \seq_map_inline:Nn \g__mark_classes_seq
+ }
+ \__mark_vbox_set_split_to_maxdimen:NN \l__mark_ii_box \l__mark_box
+ \box_if_empty:NTF \l__mark_box
+ { #1 }
+ {
+ \__mark_prepare_and_extract:nn {#1}
+ { \vbox_unpack:N \l__mark_ii_box
+ \vbox_unpack:N \l__mark_box }
+ }
+}
+\cs_set_eq:cN {Infinite~shrink~error~above~ignored~!}\c_max_dim
+\cs_new_protected:Npx \__mark_vbox_set_split_to_maxdimen:NN #1#2 {
+ \tl_set:Ne \exp_not:N \l__mark_saved_parameters_tl
+ {
+ \tex_interactionmode:D
+ \exp_not:N \int_use:N \tex_interactionmode:D \scan_stop:
+ \tex_escapechar:D
+ \exp_not:N \int_use:N \tex_escapechar:D \scan_stop:
+ }
+ \tex_escapechar:D -1 \scan_stop:
+ \tex_interactionmode:D 0 \scan_stop:
+ \tex_setbox:D #1 \tex_vsplit:D #2 to
+ \exp_not:N \use:n {
+ \use:c{Infinite~shrink~error~above~ignored~!}
+ }
+ \exp_not:N \l__mark_saved_parameters_tl
+}
+\tl_new:N \l__mark_saved_parameters_tl
+\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+ \__mark_extract_and_handle_marks:nn
+ { \__mark_update_structure_from_splitmarks:n {#1} }
+ { #2 }
+}
+\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
+ \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
\tl_gset_eq:cN { g__mark_#1_top_##1_tl } \g__mark_new_top_tl
@@ -15870,19 +17294,40 @@ of this package available from CTAN}
}
}
}
- }
- {
- \msg_error:nnn { mark } { infinite-shrinkage } {#1}
- \seq_map_inline:Nn \g__mark_classes_seq
+}
+\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_clear:N \g__mark_first_marks_tl
+ \tl_clear:N \g__mark_last_marks_tl
+ \__mark_extract_and_handle_marks:nn
+ \__mark_get_from_splitmarks:
+ { #1 }
+ \tl_set_eq:NN #2 \g__mark_first_marks_tl
+ \tl_set_eq:NN #3 \g__mark_last_marks_tl
+}
+\cs_new_protected:Npn \__mark_get_from_splitmarks: {
+ \seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset_eq:cc { g__mark_#1_top_ ##1_tl }
- { g__mark_#1_last_ ##1_tl }
- \tl_gset_eq:cc { g__mark_#1_first_##1_tl }
- { g__mark_#1_last_ ##1_tl }
+ \tl_gset:No \g__mark_tmp_tl
+ { \tex_splitbotmarks:D \use:c { c__mark_class_##1_mark } }
+
+ \tl_if_empty:NTF \g__mark_tmp_tl
+ {
+ }
+ {
+ \tl_gput_right:Ne \g__mark_last_marks_tl
+ { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ \tl_gput_right:Ne \g__mark_first_marks_tl
+ { \mark_insert:nn {##1}
+ {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
+ }
+ }
}
- }
- \group_end:
- }
+}
+\tl_new:N \g__mark_first_marks_tl
+\tl_new:N \g__mark_last_marks_tl
\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
@@ -15975,15 +17420,6 @@ of this package available from CTAN}
all~columns~have~been~assembled.
\c__msg_return_text_tl
}
-\msg_new:nnnn { mark } { infinite-shrinkage }
- { Infinite~shrinkage~found~in~'#1'. }
- {
- \c__msg_coding_error_text_tl
- The~mark~region~'#1'~contains~some~infinite~negative~glue~
- allowing~it~to~shrink~to~an~arbitrary~size.~
- This~makes~it~impossible~to~split~the~region~apart~to~
- get~at~its~marks.~They~are~lost.
- }
\bool_new:N \g__mark_debug_bool
\cs_new_eq:NN \__mark_debug:n \use_none:n
\cs_new_protected:Npn \mark_debug_on:
@@ -16003,6 +17439,8 @@ of this package available from CTAN}
}
\cs_new_eq:NN \DebugMarksOn \mark_debug_on:
\cs_new_eq:NN \DebugMarksOff \mark_debug_off:
+\cs_new_protected:Npn \ShowMarksAt #1 {
+}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
\cs_new_eq:NN \InsertMark \mark_insert:nn
@@ -16018,11 +17456,11 @@ of this package available from CTAN}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure:nn {page}
+ \__mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure:nn {page}
+ \__mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
\__mark_update_structure_alias:nn {previous-column}{previous-page}
@@ -16033,11 +17471,11 @@ of this package available from CTAN}
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure:nn {column}
+ \__mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure:nn {column}
+ \__mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
@@ -16607,6 +18045,25 @@ of this package available from CTAN}
\AtEndOfPackage{\let\@unprocessedoptions\relax}%
\@loadwithoptions\@pkgextension\RequirePackage}
\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}%
+ {\@fileswithoptions}{Check Group}%
+\def\@fileswithoptions#1{%
+ \ifnum\currentgrouplevel>\z@
+ \@latex@error
+ {Loading a class or package in a group}%
+ {Classes and packages should only be loaded at the top level}%
+ \fi
+ \@ifnextchar[%]
+ {\@fileswith@ptions#1}%
+ {\@fileswith@ptions#1[]}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@fileswithoptions}{Check Group}%
+\def\@fileswithoptions#1{%
+ \@ifnextchar[%]
+ {\@fileswith@ptions#1}%
+ {\@fileswith@ptions#1[]}}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}%
\def\@fileswith@pti@ns#1[#2]#3[#4]{%
@@ -17255,8 +18712,6 @@ of this package available from CTAN}
\endgroup%
\EndIncludeInRelease
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0o}
-\providecommand\ltfilehookdate{2023/07/10}
\IncludeInRelease{2020/10/01}%
{\CurrentFile}{Hook management file}%
\ExplSyntaxOn
@@ -17740,12 +19195,10 @@ of this package available from CTAN}
\EndIncludeInRelease
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2023
+%% Copyright (C) 2020-2024
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0n}
-\providecommand\ltshipoutdate{2022/11/08}
\IncludeInRelease{2020/10/01}%
{\shipout}{Hook management (shipout)}%
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
index caf99f3261e..25d6b0e52e4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin1.def b/Master/texmf-dist/tex/latex-dev/base/latin1.def
index 3d590fd3327..b4784628978 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin1.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin1.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin1.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin10.def b/Master/texmf-dist/tex/latex-dev/base/latin10.def
index f2432ee2564..457b7112ab5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin10.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin10.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin10.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\texteuro}
{\TextSymbolUnavailable\texteuro}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin2.def b/Master/texmf-dist/tex/latex-dev/base/latin2.def
index 5cb4d0b0103..764c5d0de5d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin2.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin2.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin2.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin3.def b/Master/texmf-dist/tex/latex-dev/base/latin3.def
index 14fc3e8c4f6..04e1030b37c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin3.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin3.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin3.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin4.def b/Master/texmf-dist/tex/latex-dev/base/latin4.def
index af250e609d7..6e2739c8704 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin4.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin4.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin4.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin5.def b/Master/texmf-dist/tex/latex-dev/base/latin5.def
index f59d6edd80b..8a6fb46905b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin5.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin5.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin5.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin9.def b/Master/texmf-dist/tex/latex-dev/base/latin9.def
index 487a339844a..35e87e2e564 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin9.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin9.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{latin9.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcent}
{\TextSymbolUnavailable\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
index ea2bea8743b..60b8482da17 100644
--- a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.clo b/Master/texmf-dist/tex/latex-dev/base/leqno.clo
index ab6956249ec..37e057bc7a4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/leqno.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/leqno.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.sty b/Master/texmf-dist/tex/latex-dev/base/leqno.sty
index 30106d69337..8622218b9f3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/leqno.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/leqno.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls
index f926d90218d..f39504c561e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.sty b/Master/texmf-dist/tex/latex-dev/base/letter.sty
index 3eb254e230d..687f7ca76a2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
index 45bd9dff75b..e92a27eb3a4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
@@ -13,7 +13,7 @@
-- (but please observe conditions on bug reports sent to that address!)
--
--
--- Copyright (C) 2015-2023
+-- Copyright (C) 2015-2024
-- The LaTeX Project and any individual authors listed elsewhere
-- in this file.
--
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index c42a75e40b1..2747e4f56f3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,9 +46,9 @@
\ProvidesFile\undefined\begingroup\def\ProvidesFile
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
-\ProvidesFile{ltluatex.tex}%
-[2023/08/03 v1.2c
- LuaTeX support for plain TeX (core)
+\ProvidesFile{ltluatex.tex}
+[2024/02/11 v1.2c
+ LuaTeX support for plain TeX (core)%
]
\edef\etatcatcode{\the\catcode`\@}
\catcode`\@=11
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltnews.cls b/Master/texmf-dist/tex/latex-dev/base/ltnews.cls
index 45ee3664d11..fa86ce17b72 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltnews.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/ltnews.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
index d219d2ebc2c..244bddffceb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg
index 839bfc8e117..edf3638e08d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
index acdbdc2ec58..adee1bf9604 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltxdoc}
- [2023/03/28 v2.1j Standard LaTeX documentation class]
+ [2024/02/08 v2.1j Standard LaTeX documentation class]
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
\newif\ifltxdoc@load@cfg@ \ltxdoc@load@cfg@true
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls b/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls
index 778f7e993e8..c202b56acb5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
index bd5ee53ebc4..4a530edee59 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/macce.def b/Master/texmf-dist/tex/latex-dev/base/macce.def
index 5746e89a40a..49b810b1320 100644
--- a/Master/texmf-dist/tex/latex-dev/base/macce.def
+++ b/Master/texmf-dist/tex/latex-dev/base/macce.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{macce.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textdiv}
{\TextSymbolUnavailable\textdiv}
diff --git a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
index f1579601083..c1c1e7db523 100644
--- a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/minimal.cls b/Master/texmf-dist/tex/latex-dev/base/minimal.cls
index 89c233c30f3..64efdd5287f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/minimal.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/minimal.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
index 79b4a8b7d9f..30e629743e1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/next.def b/Master/texmf-dist/tex/latex-dev/base/next.def
index 760aaccd81e..6cc4d6aaae7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/next.def
+++ b/Master/texmf-dist/tex/latex-dev/base/next.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\ProvidesFile{next.def}
- [2021/02/14 v1.3d Input encoding file]
+ [2024/02/08 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
index b0c10491eac..464b881ffbb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -41,8 +41,8 @@
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
-\def\nfssfontfileversion{v2.2e}
-\def\nfssfontfiledate{2020/11/26}
+\def\nfssfontfileversion{v2.2f}
+\def\nfssfontfiledate{2023/11/07}
\documentclass{article}
@@ -100,7 +100,7 @@
{\PackageWarningNoLine{nfssfont}%
{Encoding file `\next' not found.%
\MessageBreak
- You might have misspelt the name of the encoding
+ You might have misspelled the name of the encoding
\MessageBreak
or perhaps this encoding is not a text encoding,
\MessageBreak
diff --git a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
index 04a08c4b738..ae886f9bf9a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
index 2adb5587cc9..7345df2bb09 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
index 2d2d5b39c9d..562a6d51708 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
index 3f7c8183450..ecc46f89f5c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
index 7a9d2fe5891..322903455a3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omllcmm.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{OML}{lcmm}{\skewchar\font'177}
\DeclareFontShape{OML}{lcmm}{m}{it}{%
<7><8><10><12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>cmmi8%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
index 43181585fd9..610e916200b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
index ce660e5add9..8ec4eb09303 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
index 715ade1b848..13ab8351bca 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
index 94376b83d47..d834c655fde 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
index eefcd4808d1..89295e21cd7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omslcmsy.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{OMS}{lcmsy}{\skewchar\font'60}
\DeclareFontShape{OMS}{lcmsy}{m}{n}{%
<7><8><10><12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>cmsy8%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
index 24bf1415563..31a4753ff62 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
index a6421af7225..12315a1fceb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omxlcmex.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{OMX}{lcmex}{}
\DeclareFontShape{OMX}{lcmex}{m}{n}{%
<->sfixed*[17.28]cmex10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/openbib.sty b/Master/texmf-dist/tex/latex-dev/base/openbib.sty
index 9f8eadf4e7a..0d269866872 100644
--- a/Master/texmf-dist/tex/latex-dev/base/openbib.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/openbib.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
index 4436c6fc885..254da740bf8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
index 21ad4c9adfd..0276b7bde23 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
index c1be1c7b4b6..33bb6d1b126 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
index 21b00587b82..45f862af9b4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
index 48efc3c4095..ad2de5a308f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
index 1e282033c77..54f383b51c7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
index e3cb859356e..bf7b2c9d401 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
index 74c03d042cd..bede1dd19d5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
index dd66ba8ea46..f5f012d3f07 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
index ef45664e15d..d7a5cb11f79 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1lcmss.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{OT1}{lcmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{lcmss}{m}{n}{%
<7><8><10><12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
index 09dbc0e2f5e..2d6d825ffe8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1lcmtt.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{OT1}{lcmtt}{\hyphenchar\font\m@ne}
\DeclareFontShape{OT1}{lcmtt}{m}{n}{%
<13.82><16.59><19.907><23.89><28.66><34.4><41.28>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
index 0d072070b5b..b239d2833f5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
index c93fd6c847f..a15bb8af874 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
index a62c45d74d1..2e89d1f4e74 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -35,11 +35,11 @@
%% the system are in the document `cfgguide.tex'.
%%
%%
-%%% From File: fontdef.dtx
+%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2021/01/15 v3.0i LaTeX Kernel
-(Uncustomized preload
- font setup)]
+ [2024/02/09 v3.0i LaTeX Kernel
+ (Uncustomized preload font setup)
+]
%%
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.ltx b/Master/texmf-dist/tex/latex-dev/base/preload.ltx
index 301b8314502..a63a1ebde85 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.cls b/Master/texmf-dist/tex/latex-dev/base/proc.cls
index 0a253ae64a3..6d287880a19 100644
--- a/Master/texmf-dist/tex/latex-dev/base/proc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/proc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.sty b/Master/texmf-dist/tex/latex-dev/base/proc.sty
index 34debbd88c9..043ad962730 100644
--- a/Master/texmf-dist/tex/latex-dev/base/proc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/proc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.cls b/Master/texmf-dist/tex/latex-dev/base/report.cls
index 3131e66cf47..cb7a32f536d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/report.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{report}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.sty b/Master/texmf-dist/tex/latex-dev/base/report.sty
index 6e64c9a6e5c..855e160f245 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/report.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/sfonts.def b/Master/texmf-dist/tex/latex-dev/base/sfonts.def
index 1f1e20a3b0d..f95ded8243e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/sfonts.def
+++ b/Master/texmf-dist/tex/latex-dev/base/sfonts.def
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -36,7 +36,7 @@
%%
%%
\ProvidesFile{sfonts.def}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareErrorFont{OT1}{lcmss}{m}{n}{19.907}
\DeclareFontSubstitution{OT1}{lcmss}{m}{n}
\input ot1lcmss.fd
diff --git a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
index df1d5a444f4..43c0cdf1013 100644
--- a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,11 +43,11 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2022/11/13 v3.0m
+ [2024/02/08 v3.0o
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-2022 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2023 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/base/showidx.sty b/Master/texmf-dist/tex/latex-dev/base/showidx.sty
index dcae43c5d50..911b1d762e5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/showidx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/showidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/size10.clo b/Master/texmf-dist/tex/latex-dev/base/size10.clo
index 57cfdaa612e..11be942b3e9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/size11.clo b/Master/texmf-dist/tex/latex-dev/base/size11.clo
index 54da9aad2e8..a36fb7931ba 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/size12.clo b/Master/texmf-dist/tex/latex-dev/base/size12.clo
index 8bf5ca45a3f..aa9f0808f73 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -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}
- [2023/05/17 v1.4n
+ [2024/02/08 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.cls b/Master/texmf-dist/tex/latex-dev/base/slides.cls
index 25a632b6e9b..df4cd3a3b68 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.def b/Master/texmf-dist/tex/latex-dev/base/slides.def
index 29e9be29736..d8e5e34fb71 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.def
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.sty b/Master/texmf-dist/tex/latex-dev/base/slides.sty
index 462e6258d83..5208aa6eadd 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
index 5f731af7ae8..48ae49b29a2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
@@ -2,12 +2,12 @@
% This class is buggy and needs fixing
\ProvidesClass{source2edoc}
- [2022/04/03 v0.2c Quick hack to typeset source2.tex
+ [2024/02/14 v0.2e Quick hack to typeset source2.tex
(not usable for anything else and buggy -- will vanish again)!]
-\LoadClass{l3doc}
+\LoadClass[kernel]{l3doc}
\RemoveFromHook{begindocument}[l3doc] % drop the standard setting making " a shortverb
\AddToHook{begindocument}{\MakeShortVerb \|} % but readd | as one
@@ -50,84 +50,6 @@
}
-
-% some l3doc's def are buggy (already fixed there but not distributed yet)
-
-\RenewDocumentCommand \DocInclude { m }
- {
- \relax\clearpage
- \docincludeaux
- \IfFileExists{#1.fdd}
- { \cs_set:Npn \currentfile{#1.fdd} }
- { \cs_set:Npn \currentfile{#1.dtx} }
- \int_compare:nNnTF \@auxout = \@partaux
- { \@latexerr{\string\include\space cannot~be~nested}\@eha }
- { \@docinclude {#1} } % <--- braces needed!
- \int_compare:nNnF { \tex_currentgrouplevel:D } = { 0 }
- {
- \int_compare:nNnT { \tex_interactionmode:D } = { 0 }
- { \int_set:Nn \tex_interactionmode:D { 1 } }
- \msg_fatal:nnn { source2edoc } { missing-endgroup } {#1}
- }
- }
-\msg_new:nnn { source2edoc } { missing-endgroup }
- {
- \str_if_eq:VnTF \@currenvir { document }
- {
- There~are~\int_use:N \tex_currentgrouplevel:D
- \c_space_tl unclosed~groups~in~#1.dtx.
- }
- {
- The~\@currenvir \c_space_tl environment~on~line~\@currenvline
- \c_space_tl doesn't~have~a~matching~\iow_char:N\\end{\@currenvir}.
- }
- }
-\cs_gset:Npn \@docinclude #1
- {
- \clearpage
- \immediate\write\@mainaux{\string\@input{#1.aux}}
- \@tempswatrue
- \if@partsw
- \@tempswafalse
- \cs_set:Npx \@tempb {#1}
- \clist_map_inline:Nn \@partlist
- {
- \if_meaning:w \@tempa \@tempb
- \@tempswatrue
- \fi:
- }
- \fi
- \if@tempswa
- \cs_set_eq:NN \@auxout \@partaux
- \immediate\openout\@partaux #1.aux
- \immediate\write\@partaux{\relax}
- \cs_set_eq:NN \@ltxdoc@PrintIndex \PrintIndex
- \cs_set_eq:NN \PrintIndex \relax
- \cs_set_eq:NN \@ltxdoc@PrintChanges \PrintChanges
- \cs_set_eq:NN \PrintChanges \relax
- \cs_set_eq:NN \@ltxdoc@theglossary \theglossary
- \cs_set_eq:NN \@ltxdoc@endtheglossary \endtheglossary
- \part{\currentfile}
- {
- \cs_set_eq:NN \ttfamily\relax
- \cs_gset:Npx \filekey
- { \filekey,~ \thepart = { \ttfamily \currentfile } } % <-- mising spaces considered harmful
- }
- \DocInput{\currentfile}
- \cs_set_eq:NN \PrintIndex \@ltxdoc@PrintIndex
- \cs_set_eq:NN \PrintChanges \@ltxdoc@PrintChanges
- \cs_set_eq:NN \theglossary \@ltxdoc@theglossary
- \cs_set_eq:NN \endtheglossary \@ltxdoc@endtheglossary
- \clearpage
- \@writeckpt{#1}
- \immediate \closeout \@partaux
- \else
- \@nameuse{cp@#1}
- \fi
- \cs_set_eq:NN \@auxout \@mainaux
- }
-
-
% change the setup here: we have a lot of long names so better run raggeded
\cs_set_protected:Npn \__codedoc_macro_end_style:n #1
@@ -176,7 +98,7 @@
dd%
\else\@ctrerr\fi}
\def\docincludeaux{%
- \def\thepart{\aalph{part}}\def\filesep{\thepart-}%
+ \def\thepart{\ifnum\value{part}<10 0\fi\arabic{part}}\def\filesep{\thepart-}%
\let\filekey\@gobble
\g@addto@macro\index@prologue{%
\gdef\@oddfoot{\parbox[t]{\textwidth}{\strut\footnotesize
@@ -303,6 +225,9 @@ Bug reports can be opened (category \texttt{#1}) at\\%
\AddToHook{cmd/tableofcontents/after}{\global\let\tableofcontents\relax}
+% pages > 1000
+\renewcommand\@pnumwidth{2em}
+
\InputIfFileExists{ltxdoc.cfg}
{\typeout{*************************************^^J%
* Local config file ltxdoc.cfg used^^J%
diff --git a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
index a5392defc98..ba9c2440d5e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,8 +42,8 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0o}
-\providecommand\ltfilehookdate{2023/07/10}
+\def\ltfilehookdate{2024/02/11}
+\def\ltfilehookversion{v1.0o}
\ProvidesExplPackage
{structuredlog}{\ltfilehookdate}{\ltfilehookversion}
{Structuring the TeX transcript file}
diff --git a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
index 957686e358a..4d8aa24f88f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%
\ProvidesPackage{syntonly}
- [2017/06/30 v2.1e Standard LaTeX2e package]
+ [2024/02/08 v2.1e Standard LaTeX2e package]
\font\dummyft@=dummy \relax
\newif\ifsyntax@
\syntax@false
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
index 9e480384ef3..76b5eb1a106 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
index e4a867cf791..8fe21d2fda0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
index 477e2dcfe70..469b8d0d99a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
index e481092f781..ddebbdf6959 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
index 0463f31391f..5294fb74d91 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
index fd119215dfa..ebd77a12951 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
index 0880e905269..4b22b9e7f1a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
index 5920a031593..a46de580623 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
index c51cf0c04a4..0ca48c54712 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
index 5ad6cc05aed..50d9897d906 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
index 3c48a393f95..17e05a62eb5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1lcmss.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{T1}{lcmss}{}
\DeclareFontShape{T1}{lcmss}{m}{n}{%
<7><8><10><12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
index 9aec1c5a515..72ad4664b2e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1lcmtt.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{T1}{lcmtt}{\hyphenchar\font\m@ne}
\DeclareFontShape{T1}{lcmtt}{m}{n}{%
<13.82><16.59><19.907><23.89><28.66><34.4><41.28>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
index 8fa4097f690..aae8bfa09e3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
index e87247dd102..884997b63da 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
index a0ebe8a47a0..0a62592f495 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/testpage.tex b/Master/texmf-dist/tex/latex-dev/base/testpage.tex
index 7eae6c142c2..e8f06313fbf 100644
--- a/Master/texmf-dist/tex/latex-dev/base/testpage.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/testpage.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2023
+% Copyright (C) 1993-2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
index 8ec5f6d5a30..b611d19a427 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -408,7 +408,6 @@
{\PackageInfo{textcomp}{Local configuration file used}}{}
\fi
-
\endinput
%%
%% End of file `textcomp-2018-08-11.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
index e8fb80e6eb7..540274252f6 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -79,7 +79,6 @@
\InputIfFileExists{textcomp.cfg}
{\PackageInfo{textcomp}{Local configuration file used}}{}
-
\endinput
%%
%% End of file `textcomp.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
index d8e726088f8..70180dcbcc9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
index ea39de79b98..8564159c267 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
index 31c65faa830..bce10af852e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
index 66027bc80b8..fc1d3eae689 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
index 60ea33c0af1..02fa3968abf 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
index f311e509e13..5cd97fb8357 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
index 37f1fbc3bf1..9615fb36d96 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
index 28bb87bc084..7d32d90059f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
index 88b4d4a1d24..3d7993d8aae 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
index 3863435ec5e..7e77b3cfdb9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
index 960f33cdb41..0927f951ba3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
index 906972625af..3d19e8d06ca 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
index f6ca9ab4296..28ad4efa9e1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
index f261d440351..6d0ba2299ab 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2023
+%% Copyright (C) 2016-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
index eb81283a900..4ef1f56b42b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
index e861d2129f0..1611fc986c4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
index b889cba996a..247768631e4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
index 001041f1a74..da1be444688 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
index f256e0df6b9..f244ab86e46 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ullasy.fd}
- [2019/07/09 v2.2f Standard LaTeX slide font definitions]
+ [2023/12/02 v2.2f Standard LaTeX slide font definitions]
\DeclareFontFamily{U}{llasy}{}
\DeclareFontShape{U}{llasy}{m}{n}{%
<12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>lasy8%
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
index 52acd666e4c..6e6f97feaba 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8.def b/Master/texmf-dist/tex/latex-dev/base/utf8.def
index 79efa381ff1..58308e13a07 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8.def
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
index 7dbab3b9af3..668359b4742 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
index 1c7bb92d163..1b26bf5dee4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
index b15043fd884..ee69798ec39 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2023-07-20}
-\def\ltlabbibversion{0.81a}
+\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibversion{0.81b}
\ProvidesFile{bib-latex-lab-testphase.ltx}
[\ltlabbibdate\space v\ltlabbibversion\space
latex-lab wrapper bib]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
index 98dd43bb43d..b2fc47b5470 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
@@ -32,9 +32,9 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-block.dtx (C) Copyright 2021-2023 LaTeX Project
-\def\ltlabblockdate{2023-09-01}
-\def\ltlabblockversion{0.8h}
+%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
+\def\ltlabblockdate{2024-02-12}
+\def\ltlabblockversion{0.8l}
\ProvidesFile{block-latex-lab-testphase.ltx}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
index fa6a346a3a8..b1a18f2dee2 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
@@ -36,9 +36,15 @@
\def\documentmetadatasupportversion{1.0f}
\def\documentmetadatasupportdate{2023-09-01}
+
\RequirePackage{pdfmanagement-testphase}
\ExplSyntaxOn\makeatletter
+\clist_if_exist:NF \g__pdfmanagement_firstaidoff_clist
+ { \clist_new:N \g__pdfmanagement_firstaidoff_clist }
+\tl_if_exist:NF \g__pdfmanagement_testphase_tl
+ { \tl_new:N \g__pdfmanagement_testphase_tl }
+
\cs_set_protected:Npn \DocumentMetadata #1
{
\cs_if_eq:NNTF \documentclass \@twoclasseserror
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
index f8719fcdfbf..47c47c8159b 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfirstaiddate{2023-07-20}
-\def\ltlabfirstaidversion{0.85a}
+\def\ltlabfirstaiddate{2024-01-21}
+\def\ltlabfirstaidversion{0.85b}
\ProvidesFile{firstaid-latex-lab-testphase.ltx}
[\ltlabfirstaiddate\space v\ltlabfirstaidversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
index 3f8eefffbdd..f481a0f7546 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2023-07-20}
-\def\ltlabfloatversion{0.81a}
+\def\ltlabfloatdate{2024-02-05}
+\def\ltlabfloatversion{0.81c}
\ProvidesFile{float-latex-lab-testphase.ltx}
[\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
index c2431ca4eff..e78f8cb8d4b 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
@@ -34,7 +34,7 @@
%%
%% File: latex-lab-amsmath.dtx
\ProvidesFile{latex-lab-amsmath.ltx}
- [2023-01-05 v0.1a amsmath adaptions]
+ [2024-02-12 v0.1b amsmath adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\AddToHook{package/amsmath/after}
@@ -43,7 +43,7 @@
\def\intertext##1{%
\ifvmode\else\\\@empty\fi
\noalign{%
- \penalty\postdisplaypenalty\vskip\belowdisplayskip
+ \penalty\postdisplaypenalty\vskip-\belowdisplayskip
\vbox{
\ifmeasuring@\tag_stop:\fi
\normalbaselines
@@ -51,13 +51,62 @@
\else \parshape\@ne \@totalleftmargin \linewidth
\fi
\tag_mc_end_push:
- \tagpdfsetup{paratag=Span}%
+ \tagpdfsetup{paratag=P}%
+ \tagpdfparaOn
\noindent\ignorespaces##1\par
\tag_mc_begin_pop:n{}}%
\penalty\predisplaypenalty\vskip\abovedisplayskip%
}%
}}
}
+\AddToHook{package/amstext/after}
+ {
+ \tag_if_active:T
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \def\text@#1{{%
+ \ifcase\mathstyle
+ \hbox{{#1}}\or
+ \hbox{{#1}}\or
+ \hbox{{#1}}\or
+ \hbox{{#1}}\or
+ \hbox{{\let\f@size\sf@size\selectfont#1}}\or
+ \hbox{{\let\f@size\sf@size\selectfont#1}}\or
+ \hbox{{\let\f@size\ssf@size\selectfont#1}}\or
+ \hbox{{\let\f@size\ssf@size\selectfont#1}}\or
+ \ERROR
+ \fi
+ \check@mathfonts
+ }}
+ }
+ {
+ \def\text@#1
+ {{
+ \int_gincr:N\g__math_mathchoice_int
+ \tag_stop:
+ \mathchoice
+ {
+ \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0}
+ \textdef@\displaystyle\f@size{#1}
+ }
+ {
+ \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{2}
+ \textdef@\textstyle\f@size{\firstchoice@false #1}
+ }
+ {
+ \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{4}
+ \textdef@\textstyle\sf@size{\firstchoice@false #1}
+ }
+ {
+ \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{6}
+ \textdef@\textstyle \ssf@size{\firstchoice@false #1}
+ }
+ \check@mathfonts
+ }}
+ }
+ }
+ }
\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
index f2c99285c91..1282f9d899c 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
@@ -33,9 +33,9 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 LaTeX Project
-\def\ltlabkerneldate{2023-10-16}
-\def\ltlabkernelversion{0.85b}
+%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
+\def\ltlabkerneldate{2024-02-12}
+\def\ltlabkernelversion{0.85c}
\ProvidesPackage{latex-lab-kernel-changes}
[\ltlabkerneldate\space v\ltlabkernelversion\space
General kernel and class changes]
@@ -89,9 +89,9 @@
}
}
\ExplSyntaxOff
-%% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project
-\def\ltlabsecdate{2023-10-16}
-\def\ltlabsecversion{0.84b}
+%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
+\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecversion{0.84c}
\ifdefined\directlua
\ifnum\outputmode > 0
\pdfvariable gentounicode =1
@@ -116,11 +116,11 @@
\fi
\IfBooleanTF {#1}
{
- \tl_gset:Nx \@currentHref {#3}
+ \tl_gset:Ne \@currentHref {#3}
}
{
\int_gincr:N\g__kernel_target_int
- \tl_gset:Nx \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
index 1ced324bb10..d81a161c230 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
@@ -33,24 +33,476 @@
%%
%%
%% File: latex-lab-math.dtx
-\def\ltlabmathdate{2023-09-11}
-\def\ltlabmathversion{0.5c}
+\def\ltlabmathdate{2024-02-09}
+\def\ltlabmathversion{0.5i}
\ProvidesFile{latex-lab-math.ltx}
[\ltlabmathdate\space
v\ltlabmathversion\space
Grab all the math(s) and tag it (experiments)]
\AddToHook{begindocument/before}{\RequirePackage{latex-lab-testphase-block}}
\ExplSyntaxOn
-\tl_gput_right:Nn \@kernel@before@begindocument
- { \RequirePackage { amsmath } }
+\AddToHook{begindocument/before}{ \RequirePackage { amsmath } }
\bool_new:N \l__math_collected_bool
+\bool_new:N \l__math_fakemath_bool
\tl_new:N \g__math_grabbed_env_tl
\tl_new:N \g__math_grabbed_math_tl
+\tl_new:N \l__math_tmpa_tl
+\skip_new:N \l__math_tmpa_skip
+\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
+\tl_new:N \l__math_content_AF_source_tmpa_tl
+\tl_new:N \l__math_content_AF_mathml_tl
+\cs_new_protected:Npn \__tag_tool_close_P:
+ {
+ \tag_if_active:T
+ {
+ \tag_mc_end: %end P-chunk, should perhaps be \tag_mc_end_push: ...
+ \__tag_gincr_para_end_int:
+ \__tag_check_para_end_show:nn{red}{} %debug: show para
+ \tag_struct_end:
+ }
+ }
+\tl_new:N\l__math_attribute_class_tl
+\tagpdfsetup
+ {newattribute = {inline} {/O /Layout /Placement/Inline},
+ newattribute = {display} {/O /Layout /Placement/Block},
+ }
+\bool_new:N\l__tag_math_texsource_AF_bool
+\bool_new:N\l__tag_math_texsource_pane_bool
+\bool_new:N\l__tag_math_mathml_AF_bool
+\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
+\int_new:N\g__math_mathml_total_int
+\int_new:N\g__math_mathml_int
+\int_new:N\g__math_math_total_int
+\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}
+
+\cs_new_protected:Npn \__math_AF_mml:nnnn #1 #2 #3 #4
+ {
+ \int_gincr:N \g__math_mathml_total_int
+ \tl_if_exist:cF { g__math_mathml_#3_tl }
+ {
+ \int_gincr:N \g__math_mathml_int
+ \pdfdict_put:nne {l_pdffile/Filespec} {Desc}{(mathml-#1)}
+ \pdffile_embed_stream:nnN {#4}{mathml-#1.xml}\l_tmpa_tl
+ \bool_if:NT \l__tag_math_mathml_pane_bool
+ {\pdfmanagement_add:nne {Catalog/Names}{EmbeddedFiles}{\l_tmpa_tl}}
+ \tl_new:c{g__math_mathml_#3_tl}
+ \tl_gset_eq:cN{g__math_mathml_#3_tl}\l_tmpa_tl
+ }
+ }
+\cs_new_protected:Npn \__math_AF_html_reader:w#1</h2>#2<p>#3</p>#4<p>#5</p>#6<math{
+ \begingroup
+ \char_set_catcode_other:N\{
+ \char_set_catcode_other:N\}
+ \char_set_catcode_other:N\#
+ \char_set_catcode_other:N\%
+ \__math_AF_html_reader_verb:w{#1}{#3}{#5}<math
+}
+\cs_new_protected:Npn\__math_AF_html_reader_verb:w#1#2#3#4~</div>{
+ \endgroup
+ \__math_AF_mml:nnnn{#1}{#2}{#3}{#4}
+ }
+
+\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{&}{&amp;}
+ \str_replace_all:Nnn\l__math_tmpa_str{<}{&lt;}
+ \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:
+ <math></math>
+ \iow_newline:
+ </div>
+ \iow_newline:
+ }
+ }
+
+\keys_define:nn { __tag / setup }
+ {
+ math/mathml/write-dummy .code:n =
+ {
+ \bool_gset_true:N \g__tag_math_mathml_AF_bool
+ \tl_if_exist:NF\g__math_writedummy_iow
+ {
+ \iow_new:N \g__math_writedummy_iow
+ \iow_open:Nn \g__math_writedummy_iow
+ {
+ \c_sys_jobname_str-mathml-dummy.html
+ }
+ \iow_now:Ne \g__math_writedummy_iow
+ {
+ <!DOCTYPE~html>
+ \iow_newline:
+ <html>
+ }
+ \AssignSocketPlug {tagsupport/math/mathml/write}{On}
+ \AddToHook{enddocument/afterlastpage}
+ {
+ \iow_now:Nn \g__math_writedummy_iow {</html>}
+ \iow_close:N \g__math_writedummy_iow
+ }
+ }
+ },
+ math/mathml/write-dummy .usage:n=preamble
+ }
+\box_new:N\l__math_tmpa_box
+\cs_new_protected:Npn \__math_AF_process_mathml_files:
+ {
+ \hbox_set:Nn \l__math_tmpa_box
+ {
+ \pdfdict_put:nnn { l_pdffile/Filespec }{AFRelationship} { /Supplement }
+ \pdfdict_put:nne
+ { l_pdffile }{Subtype}
+ { \pdf_name_from_unicode_e:n{application/mathml+xml} }
+ \char_set_catcode_other:N \#
+ \cs_set_eq:NN\mml \__math_AF_html_reader:w
+ \clist_map_inline:Nn \l__tag_math_mathml_files_clist
+ {
+ \file_if_exist:nTF {##1.html}
+ {
+ \typeout{Info:~reading~mathml~file~##1}
+ \file_input:n {##1.html}
+ \bool_gset_true:N\g__tag_math_mathml_AF_bool
+ }
+ {
+ \typeout{Info:~mathml~file~##1~does~not~exist}%info message
+ }
+ }
+ }
+ \bool_if:NT\g__tag_math_mathml_AF_bool
+ {
+ \typeout{Info:~Activating~mathml~support}
+ \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}
+ \AddToHook{enddocument/info}
+ {
+ \iow_term:n{MathML~statistic}
+ \iow_term:n{================}
+ \iow_term:e{==>~\int_use:N\g__math_mathml_total_int\c_space_tl
+ MathML~fragments~read}
+ \iow_term:e{==>~\int_use:N\g__math_mathml_int\c_space_tl
+ different~MathML~fragments}
+ \iow_term:e{==>~\int_use:N\g__math_math_total_int\c_space_tl
+ math~fragments~found}
+ \iow_term:e{==>~\int_use:N\g__math_mathml_AF_found_int\c_space_tl
+ fitting~MathML~AF~found}
+ \iow_term:e{==>~\int_use:N\g__math_mathml_AF_attached_int\c_space_tl
+ MathML~AF~attached}
+ }
+ }
+ }
+\AddToHook{begindocument}{\__math_AF_process_mathml_files:}
+\int_new:N \l__math_mathstyle_int
+\int_new:N \g__math_mathchoice_int
+\property_new:nnnn{mathstyle}{now}{-1}{\int_use:N \l__math_mathstyle_int }
+\cs_new_protected:Npn \__math_tag_if_mathstyle:nn #1 #2
+ %#1 refers to label
+ %#2 is a number for the mathstyle (typically 0,2,4,6)
+ {
+ \int_set:Nn \l__math_mathstyle_int {#2}
+ \property_record:nn {#1} { mathstyle }
+ \int_compare:nNnTF { \property_ref:nn {#1}{ mathstyle} } = { #2 }
+ { \tag_start: }{ \tag_stop: }
+ }
+\cs_generate_variant:Nn \__math_tag_if_mathstyle:nn {en}
+\keys_define:nn { __tag / setup }
+ {
+ math/mathml/sources .clist_set:N = \l__tag_math_mathml_files_clist,
+ math/alt/use .bool_set:N = \l__tag_math_alt_bool,
+ viewer/pane/mathml .bool_set:N = \l__tag_math_mathml_pane_bool,
+ viewer/pane/mathml .initial:n = true,
+ viewer/pane/mathsource .bool_set:N = \l__tag_math_texsource_pane_bool,
+ math/mathml/AF .bool_set:N = \l__tag_math_mathml_AF_bool,
+ math/mathml/AF .initial:n = true,
+ math/tex/AF .bool_set:N = \l__tag_math_texsource_AF_bool,
+ math/tex/AF .initial:n = true
+ }
+\socket_new:nn {tagsupport/math/inline/begin}{0}
+\socket_new:nn {tagsupport/math/inline/end}{0}
+\socket_new:nn {tagsupport/math/inline/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/inline/formula/end}{0}
+\socket_new_plug:nnn
+ {tagsupport/math/inline/begin}
+ {MC}
+ {\tag_mc_end_push:}
+\socket_new_plug:nnn
+ {tagsupport/math/inline/end}
+ {MC}
+ {\tag_mc_begin_pop:n{}}
+\socket_new_plug:nnn
+ {tagsupport/math/inline/formula/begin}
+ {default}
+ {
+ \socket_use:n{tagsupport/math/content}
+ \socket_use:n{tagsupport/math/struct/begin}
+ % inner formula if multiple parts (not really implemented yet)
+ \socket_use:n{tagsupport/math/substruct/begin}
+ #1
+ \socket_use:n{tagsupport/math/end}
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/inline/formula/end}
+ {default}
+ {
+ \socket_use:n{tagsupport/math/substruct/end}
+ \socket_use:n{tagsupport/math/struct/end}
+ }
+\socket_new:nn {tagsupport/math/display/begin}{0}
+\socket_new:nn {tagsupport/math/display/end}{0}
+\socket_new:nn {tagsupport/math/display/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/display/formula/end}{0}
+
+\socket_new_plug:nnn
+ {tagsupport/math/display/begin}
+ {default}
+ { \__tag_tool_close_P: }
+\socket_new_plug:nnn
+ {tagsupport/math/display/end}
+ {default}
+ {
+ }
+
+\socket_new_plug:nnn
+ {tagsupport/math/display/formula/begin}
+ {default}
+ {
+ \socket_use:n{tagsupport/math/content}
+ \socket_use:n{tagsupport/math/struct/begin}
+ \socket_use:n{tagsupport/math/substruct/begin}
+ #1
+ \socket_use:n{tagsupport/math/end}
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/display/formula/end}
+ {default}
+ {
+ \socket_use:n{tagsupport/math/substruct/end}
+ \socket_use:n{tagsupport/math/struct/end}
+ }
+\tl_new:N\l__math_content_template_tl
+\tl_set:Nn \l__math_content_template_tl
+ {
+ LaTeX~ formula~ starts~
+ \exp_not:N\begin{\g__math_grabbed_env_tl}
+ \c_space_tl
+ \exp_not:V\g__math_grabbed_math_tl
+ \c_space_tl
+ \exp_not:N\end{\g__math_grabbed_env_tl}
+ \c_space_tl LaTeX~ formula~ ends~
+ }
+
+\tl_new:N\l__math_texsource_template_tl
+\tl_const:Nn\c__math_inline_env_tl {math}
+\tl_set:Nn \l__math_texsource_template_tl
+ {
+ \tl_if_eq:NNTF\g__math_grabbed_env_tl\c__math_inline_env_tl
+ {
+ $
+ \exp_not:V\g__math_grabbed_math_tl
+ $
+ }
+ {
+ \exp_not:N\begin{\g__math_grabbed_env_tl}
+ \exp_not:V\g__math_grabbed_math_tl
+ \exp_not:N\end{\g__math_grabbed_env_tl}
+ }
+ }
+
+\socket_new:nn {tagsupport/math/content}{0}
+\socket_new_plug:nnn
+ {tagsupport/math/content}
+ {actual+source}
+ {
+ \tl_set:Ne\l__math_content_actual_tl
+ {
+ \l__math_content_template_tl
+ }
+ \tl_set:Ne \l__math_content_AF_source_tl
+ {
+ \l__math_texsource_template_tl
+ }
+ \tl_set:Nn \l__math_content_AF_mathml_tl {}
+ \tl_set:Nn \l__math_content_alt_tl {}
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/content}
+ {alt+source}
+ {
+ \tl_set:Ne\l__math_content_alt_tl
+ {
+ \l__math_content_template_tl
+ }
+ \tl_set:Ne \l__math_content_AF_source_tl
+ {
+ \l__math_texsource_template_tl
+ }
+ \tl_set:Nn \l__math_content_AF_mathml_tl {}
+ \tl_set:Nn \l__math_content_actual_tl {}
+ }
+\socket_assign_plug:nn {tagsupport/math/content}{alt+source}
+\socket_new:nn {tagsupport/math/struct/begin}{0}
+\socket_new:nn {tagsupport/math/struct/end}{0}
+\socket_new_plug:nnn
+ {tagsupport/math/struct/begin}
+ {default}
+ {
+ \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 }
+ { \tl_clear:N \l__math_content_AF_source_tmpa_tl }
+ \tag_struct_begin:n
+ {
+ tag=Formula,
+ texsource = \l__math_content_AF_source_tmpa_tl,
+ title-o = \g__math_grabbed_env_tl,
+ actualtext = \l__math_content_actual_tl,
+ alt = \l__math_content_alt_tl
+ }
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/struct/end}
+ {default}
+ { \tag_struct_end: }
+
+\socket_assign_plug:nn {tagsupport/math/struct/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/struct/end}{default}
+\cs_generate_variant:Nn \str_mdfive_hash:n {o}
+\tl_new:N\l__math_content_hash_tl
+\tl_new:N\l__math_grabbed_math_tl
+\socket_new_plug:nnn
+ {tagsupport/math/struct/begin}
+ {test-mathml}
+ {
+ \int_gincr:N\g__math_math_total_int
+ \tl_set:Ne\l__math_content_hash_tl
+ {\str_mdfive_hash:o { \l__math_content_AF_source_tl }}
+ \tl_set_eq:NN\l__math_grabbed_math_tl\g__math_grabbed_math_tl
+ \tl_if_eq:NnTF\g__math_grabbed_env_tl {math}
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{inline}
+ }
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{display}
+ }
+ \bool_if:NF\l__tag_math_alt_bool
+ { \tl_set:Nn \l__math_content_alt_tl{} }
+ \tl_if_exist:cTF { g__math_mathml_ \l__math_content_hash_tl _tl }
+ {
+ \int_gincr:N\g__math_mathml_AF_found_int
+ \bool_if:NTF \l__tag_math_mathml_AF_bool
+ {
+ \int_gincr:N\g__math_mathml_AF_attached_int
+ \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ {
+ \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ }
+ {
+ \typeout{WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
+ }
+ \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 }
+ { \tl_clear:N \l__math_content_AF_source_tmpa_tl }
+ \tag_struct_begin:n
+ {
+ tag=Formula,
+ attribute-class=\l__math_attribute_class_tl, %
+ AFref =
+ \bool_if:NT\l__tag_math_mathml_AF_bool
+ {
+ \cs_if_exist_use:c {g__math_mathml_ \l__math_content_hash_tl _tl}
+ },
+ texsource = \l__math_content_AF_source_tmpa_tl, % should be after mathml AF!
+ title-o = \g__math_grabbed_env_tl, %
+ alt = \l__math_content_alt_tl
+ }
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/struct/end}
+ {test-mathml}
+ {
+ \tag_struct_end:
+ }
+\socket_new:nn {tagsupport/math/substruct/begin}{0}
+\socket_new:nn {tagsupport/math/substruct/end}{0}
+\socket_new_plug:nnn
+ {tagsupport/math/substruct/begin}
+ {default}
+ { \grabaformulapartandstart }
+\socket_new_plug:nnn
+ {tagsupport/math/substruct/end}
+ {default}
+ {
+ \tagmcend
+ \if@subformulas
+ \tagstructend
+ \fi
+ }
+\socket_assign_plug:nn {tagsupport/math/substruct/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/substruct/end}{default}
+
+\socket_new_plug:nnn
+ {tagsupport/math/substruct/begin}
+ {single}
+ {
+ \typeout{====>subpart~splitting~deactivated}
+ \typeout{====>grabbed~math=\meaning\g__math_grabbed_math_tl}
+ \tag_mc_begin:n{}
+ }
+\socket_new_plug:nnn
+ {tagsupport/math/substruct/end}
+ {single}
+ { \tag_mc_end:}
+\socket_new:nn {tagsupport/math/end}{0}
+
+\cs_new_protected:Npn \__tag_math_disable:
+ {
+ \socket_assign_plug:nn {tagsupport/math/inline/begin}{noop}
+ \socket_assign_plug:nn {tagsupport/math/inline/end}{noop}
+ \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{identity}
+ \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{noop}
+ \socket_assign_plug:nn {tagsupport/math/display/begin}{noop}
+ \socket_assign_plug:nn {tagsupport/math/display/end}{noop}
+ \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{identity}
+ \socket_assign_plug:nn {tagsupport/math/display/formula/end}{noop}
+ }
+\cs_new_protected:Npn \__tag_math_enable:
+ {
+ \socket_assign_plug:nn {tagsupport/math/inline/begin}{MC}
+ \socket_assign_plug:nn {tagsupport/math/inline/end}{MC}
+ \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{default}
+ \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{default}
+ \socket_assign_plug:nn {tagsupport/math/display/begin}{default}
+ \socket_assign_plug:nn {tagsupport/math/display/end}{default}
+ \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{default}
+ \socket_assign_plug:nn {tagsupport/math/display/formula/end}{default}
+ }
+\AtBeginDocument{\tag_if_active:T{\__tag_math_enable: }}
\cs_new_protected:Npn \__math_process:nn #1#2
{
\legacy_if:nF { measuring@ }
{
- \tl_if_in:nnF {#2} { \m@th }
+ \tl_if_in:nnTF {#2} { \m@th }
+ { \bool_set_true:N\l__math_fakemath_bool }
{ \tl_trim_spaces_apply:nN {#2} \__math_process_auxi:nn {#1} }
}
}
@@ -70,62 +522,39 @@
\tl_if_blank:nF {#1}
{
\__math_process:nn { math } {#1} % $
- \legacy_if:nTF { measuring@ }
- { #1 $ }
- {
- \tl_if_in:nnTF {#1} { \m@th }
- { #1 $ }
- {
- \tagmcend %end P-chunk, in code: \tag_mc_end_push:
- \@kernel@math@begin
- #1 $
- \@kernel@math@end
- \tagmcbegin{} % restart P-chunk (whatsits in pdftex)
- }
- }
+ \bool_lazy_or:nnTF
+ {\legacy_if_p:n { measuring@ }}
+ { \l__math_fakemath_bool }
+ { #1 $ }
+ {
+ \socket_use:n {tagsupport/math/inline/begin} %end P-MC
+ \socket_use:nn{tagsupport/math/inline/formula/begin}{#1}
+ $
+ \socket_use:n {tagsupport/math/inline/formula/end}
+ \socket_use:n {tagsupport/math/inline/end} % restart P-MC
+ }
}
}
-
-\skip_new:N \l__math_tmpa_skip
-
\cs_new_protected:Npn \__math_grab_dollardollar:w % $$
#1 $$
{
\tl_if_blank:nF {#1}
{
- \__math_tag_dollardollar_display:nn { equation* }{#1}
- #1
+ \__math_process:nn { equation* } {#1}
+ \socket_use:n {tagsupport/math/display/begin}
+ \socket_use:nn{tagsupport/math/display/formula/begin}{#1}
$$
}
}
-\cs_new_protected:Npn \@kernel@close@P {
- \tag_if_active:T
- {
- \tagmcend %end P-chunk, should perhaps be \tag_mc_end_push: ...
- \int_gincr:N \g__tag_para_end_int
- \bool_if:NT \l__tag_para_show_bool
- { \tag_mc_begin:n{artifact}
- \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int}
- \tag_mc_end:
- }
- \tag_struct_end:
- }
-}
-
-\cs_new_protected:Npn \__math_tag_dollardollar_display:nn #1#2 {
- \__math_process:nn {#1} {#2}
- \@kernel@close@P
- \@kernel@math@begin
-%%
-}
-
-\cs_new_protected:Npn \__math_tag_dollardollar_display_end: {
- \tagpdfparaOff
- \para_raw_end:
- \tagpdfparaOn
- \l__math_tmpa_skip \lastskip
- \@kernel@math@end
- \penalty \postdisplaypenalty
+\cs_new_protected:Npn \__math_tag_dollardollar_display_end:
+ {
+ % \typeout{== tag dollarldollar display end}
+ % \ShowTagging{struct-stack}
+ \para_raw_end:
+ \tagpdfparaOn
+ \l__math_tmpa_skip \lastskip
+ \socket_use:n{tagsupport/math/display/formula/end}
+ \penalty \postdisplaypenalty
\skip_vertical:n { -\l__math_tmpa_skip * 2 }
\@doendpe % this has no \end{...} to take care of it
}
@@ -135,7 +564,6 @@
{
\tl_if_blank:nF {#1}
{
- \__math_process:nn { math } {#1}
$ #1 $
}
\bool_set_false:N \l__math_collected_bool
@@ -162,7 +590,7 @@
\keys_set:nn { __math } {#2}
\cs_gset_eq:cc { __math_env_ #1 _begin: } {#1}
\cs_gset_eq:cc { __math_env_ #1 _end: } { end #1 }
- \ExpandArgs { nnx } \RenewDocumentEnvironment {#1} { b }
+ \ExpandArgs { nne } \RenewDocumentEnvironment {#1} { b }
{
\exp_not:N \bool_if:NTF \exp_not:N \l__math_collected_bool
{
@@ -171,28 +599,19 @@
\cs_if_exist:cTF { __math_env #1 _aux: }
{
\exp_not:c { __math_env #1 _aux: }
- ####1 \exp_not:N \__math_env_end: {#1}
+ ##1 \exp_not:N \__math_env_end: {#1}
}
- { \exp_not:N \__math_process:nn {#1} {####1} }
+ { \exp_not:N \__math_process:nn {#1} {##1} }
\exp_not:n { \@kernel@math@registered@begin }
\bool_set_true:N \exp_not:N \l__math_collected_bool
}
\exp_not:c { __math_env_ #1 _begin: }
- ####1
+ ##1
\exp_not:c { __math_env_ #1 _end: }
}
- {
- }
- }
-
-\cs_set_protected:Npn \__cs_tmp:w #1
- {
- \group_begin:
- \exp_args:No \__cs_generate_internal_variant:n
- { \tl_to_str:n {#1} }
- \group_end:
+ {
+ }
}
-\__cs_tmp:w { nnxx }
\cs_new_protected:Npn \math_register_halign_env:nn #1#2
{
@@ -200,7 +619,7 @@
\keys_set:nn { __math } {#2}
\cs_gset_eq:cc { __math_env_ #1 _begin: } {#1}
\cs_gset_eq:cc { __math_env_ #1 _end: } { end #1 }
- \ExpandArgs { nnxx } \RenewDocumentEnvironment {#1} { b }
+ \ExpandArgs { nnee } \RenewDocumentEnvironment {#1} { b }
{
\exp_not:N \bool_if:NTF \exp_not:N \l__math_collected_bool
{
@@ -209,27 +628,26 @@
\cs_if_exist:cTF { __math_env #1 _aux: }
{
\exp_not:c { __math_env #1 _aux: }
- ####1 \exp_not:N \__math_env_end: {#1}
+ ##1 \exp_not:N \__math_env_end: {#1}
}
- { \exp_not:N \__math_process:nn {#1} {####1} }
+ { \exp_not:N \__math_process:nn {#1} {##1} }
\exp_not:n { \@kernel@math@registered@begin }
\bool_set_true:N \exp_not:N \l__math_collected_bool
}
\exp_not:c { __math_env_ #1 _begin: }
- ####1
+ ##1
+ }
+ {
+ \exp_not:c { __math_env_ #1 _end: }
}
- {
- \exp_not:c { __math_env_ #1 _end: }
- }
}
-
\cs_new_protected:Npn \math_register_odd_env:nn #1#2
{
\tl_set:Nn \l__math_env_name_tl {#1}
\keys_set:nn { __math } {#2}
\cs_gset_eq:cc { __math_env_ #1 _begin: } {#1}
\cs_gset_eq:cc { __math_env_ #1 _end: } { end #1 }
- \ExpandArgs { nnxx } \RenewDocumentEnvironment {#1} { b }
+ \ExpandArgs { nnee } \RenewDocumentEnvironment {#1} { b }
{
\exp_not:N \bool_if:NTF \exp_not:N \l__math_collected_bool
{
@@ -238,14 +656,14 @@
\cs_if_exist:cTF { __math_env #1 _aux: }
{
\exp_not:c { __math_env #1 _aux: }
- ####1 \exp_not:N \__math_env_end: {#1}
+ ##1 \exp_not:N \__math_env_end: {#1}
}
- { \exp_not:N \__math_process:nn {#1} {####1} }
+ { \exp_not:N \__math_process:nn {#1} {##1} }
\exp_not:n { \@kernel@math@registered@begin }
\bool_set_true:N \exp_not:N \l__math_collected_bool
}
\exp_not:c { __math_env_ #1 _begin: }
- ####1
+ ##1
}
{
\exp_not:c { __math_env_ #1 _end: }
@@ -257,27 +675,31 @@
\cs_new:Npn \@kernel@math@registered@begin {
\mode_if_vertical:TF
{
- \exp_args:Noo\str_if_eq:nnF \g__tag_struct_tag_tl { \l__tag_para_main_tag_tl } % needs correction!
+ \tag_if_active:T
+ {
+ \exp_args:Noo\str_if_eq:nnF \g__tag_struct_tag_tl { \l__tag_para_main_tag_tl } % needs correction!
{
\__block_beginpar_vmode:
} % needs correction!
+ }
}
{
- \@kernel@close@P
+ \__tag_tool_close_P:
}
- \@kernel@math@begin
+ \socket_use:nn{tagsupport/math/display/formula/begin}{}
\tagpdfparaOff
}
\cs_new:Npn \@kernel@math@registered@end {
\para_raw_end:
\tagpdfparaOn
- \@kernel@math@end
+ \socket_use:n{tagsupport/math/display/formula/end}
\@endpetrue
}
\cs_new_protected:Npn \math_register_env:n #1
{ \math_register_env:nn {#1} { } }
+
\NewDocumentCommand \RegisterMathEnvironment { O{} m }
{ \math_register_env:nn {#2} {#1} }
\cs_new_protected:Npn \__math_env_forward:w #1 \__math_env_end: #2
@@ -311,47 +733,15 @@
{
\cs_gset_protected:Npn \[ % \]
{
- \bool_if:NTF \l__math_collected_bool
- { \begin { equation* } }
- { \__math_grab_eqn:w }
+ \__math_grab_eqn:w
+ % \bool_if:NTF \l__math_collected_bool
} % \[
\cs_gset_protected:Npn \]
{
- \bool_if:NTF \l__math_collected_bool
- { \end{ equation* } }
- { \@badmath }
+ \@badmath
}
}
-\tl_new:N\tmpmathcontent
-
-\def\@kernel@math@begin {
- \tl_gset:Nx\tmpmathcontent
- {
- LaTeX~ formula~ starts~
- \exp_not:N\begin{\g__math_grabbed_env_tl}
- \space
- \exp_not:V\g__math_grabbed_math_tl
- \space
- \exp_not:N\end{\g__math_grabbed_env_tl}
- \space LaTeX~ formula~ ends~
- }
- \tagstructbegin{tag=Formula,
- AFinline-o=\tmpmathcontent,
- title-o=\g__math_grabbed_env_tl,
- actualtext=\tmpmathcontent
- }
- \grabaformulapartandstart
-}
-\def\@kernel@math@end {
- \tagmcend
- \if@subformulas
- \tagstructend
- \else
- \fi
- \tagstructend
-}
-
\exp_args:No \tex_everymath:D
{
\tex_the:D \tex_everymath:D
@@ -379,18 +769,34 @@
}
\math_register_env:n { eqnarray }
\math_register_env:n { eqnarray* }
-\clist_map_inline:nn
- { tabular }
- {
- \AddToHook{ env / #1 / begin }
- { \bool_set_true:N \l__math_collected_bool }
- }
+\RequirePackage{array}
+\tl_if_in:NnT\@tabular{$}
+ {
+ \def\@tabular{%
+ \leavevmode
+ \UseTaggingSocket{tbl/hmode/begin}%
+ \hbox \bgroup
+ \bool_set_true:N \l__math_collected_bool
+ $
+ \bool_set_false:N \l__math_collected_bool
+ \col@sep\tabcolsep \let\d@llarbegin\begingroup
+ \let\d@llarend\endgroup
+ \@tabarray}
+ }
\cs_new_eq:NN \__math_m@th: \m@th
\cs_gset_protected:Npn \m@th
{
\bool_set_true:N \l__math_collected_bool
\__math_m@th:
}
+\tl_gput_right:Nn\@kernel@before@begindocument
+ {
+ \bool_set_true:N\l__math_collected_bool
+ }
+\tl_gput_right:Nn\@kernel@after@begindocument
+ {
+ \bool_set_false:N\l__math_collected_bool
+ }
\tl_gput_right:Nn \@kernel@before@begindocument {
\renewenvironment{gather*}{%
@@ -467,6 +873,8 @@
\def\measuring@true{\let\ifmeasuring@\iftrue\tag_stop:}
\math_register_halign_env:nn {align}{}
\math_register_halign_env:nn {align*}{}
+ \math_register_halign_env:nn {alignat}{}
+ \math_register_halign_env:nn {alignat*}{}
\math_register_halign_env:nn {flalign}{}
\math_register_halign_env:nn {flalign*}{}
\math_register_halign_env:nn {gather}{}
@@ -487,26 +895,6 @@
\tagmcend \tagstructend \tagmcbegin{}%
\fi
}
- \def\intertext@{%
- \def\intertext##1{%
- \ifvmode\else\\\@empty\fi
- \noalign{%
- \penalty\postdisplaypenalty\vskip-\belowdisplayskip
- \vbox{
- \ifmeasuring@\tag_stop:\fi
- \normalbaselines
- \ifdim\linewidth=\columnwidth
- \else \parshape\@ne \@totalleftmargin \linewidth
- \fi
- \tag_mc_end_push:
- \tagpdfsetup{paratag=P}%
- \tagpdfparaOn
- \noindent\ignorespaces##1\par
- \tag_mc_begin_pop:n{}}%
- \penalty\predisplaypenalty\vskip\abovedisplayskip%
- }%
- }
- }
\@namedef{math@cr @ @ @ gather}{%
\ifst@rred\nonumber\fi
&\relax
@@ -538,6 +926,11 @@
\restore@math@cr
}
+\cs_new:Npn \__math_split_at_nl:NN #1#2 {
+ \tl_set:Nf \l__math_tmpa_tl {
+ \exp_after:wN \__math_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop }
+ \exp_after:wN \__math_split_at_nl_aux:nnNN \l__math_tmpa_tl #1 #2
+}
\cs_new:Npn \__math_split_at_nl_first:w #1 \\ #2 \\ #3 \s_stop
{
\quark_if_nil:nTF {#2}
@@ -547,8 +940,15 @@
#2 \\ #3 \s_stop
}
}
-\cs_new:Npn \__math_split_chk_if_begin:ww #1 \begin #2 #3 \s_mark
- #4 \\ \q_nil \\ \s_stop
+
+\cs_new_protected:Npn \__math_split_at_nl_aux:nnNN #1 #2 #3 #4
+ {
+ \tl_gset:Nn #4 {#1}
+ \tl_gset:Nn #3 {#2}
+ }
+
+\cs_new:Npn \__math_split_chk_if_begin:ww
+ #1 \begin #2 #3 \s_mark #4 \\ \q_nil \\ \s_stop
{
\quark_if_nil:nTF {#2}
{ {#1} {#4} }
@@ -558,7 +958,9 @@
{ } { 1 }
}
}
+
\cs_new:Npn \__math_split_cleanup_begin_q_nil:w #1 \begin \q_nil {#1}
+
\cs_new:Npn \__math_split_collect_one_end:w #1 \end #2 #3 \s_stop #4 #5
{
\exp_args:Nf \__math_split_check_count_begins:nnnn
@@ -567,14 +969,16 @@
}
\cs_new:Npn \__math_split_count_begins:n #1
{ \int_eval:n { 0 \__math_split_count_begins:w #1 \begin \q_nil } }
+
\cs_new:Npn \__math_split_count_begins:w #1 \begin #2
{ \quark_if_nil:nF {#2} { +1 \__math_split_count_begins:w } }
+
\cs_new:Npn \__math_split_check_count_begins:nnnn #1 #2 #3 #4
{
\int_compare:nNnTF {#1} = {#2}
{
\exp_last_unbraced:Nf \__math_split_final_cleanup:nn
- { \split:n { \__math_split_guard:n {#3} #4 } }
+ { \__math_split:n { \__math_split_guard:n {#3} #4 } }
}
{
\exp_args:No \use_ii_i:nn
@@ -594,28 +998,10 @@
{ \exp_end: { #4 #1 } }
{ \__math_split_final_cleanup:w #3 \s_mark { #4 #1 #2 } }
}
-\NewDocumentCommand \splitnl { mm +m }
- {
- \tl_set:Nf \l_tmpa_tl { \split:n {#3} }
- \show \l_tmpa_tl
- \exp_after:wN \__splitnl_aux:nnNN \l_tmpa_tl #1 #2
- }
-\cs_new:Npn \split:n #1 {
+\cs_new:Npn \__math_split:n #1 {
\__math_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop }
-\cs_new:Npn \__math_split_at_nl:NN #1#2 {
- \tl_set:Nf \l_tmpa_tl {
- \exp_after:wN \__math_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop }
- \exp_after:wN \__math_split_at_nl_aux:nnNN \l_tmpa_tl #1 #2
-}
-
-\cs_new_protected:Npn \__math_split_at_nl_aux:nnNN #1 #2 #3 #4
- {
- \tl_gset:Nn #4 {#1}
- \tl_gset:Nn #3 {#2}
-}
-
\newif\if@subformulas
\tl_new:N \result
@@ -634,6 +1020,7 @@
\global\@subformulastrue
\edef\resulttitle{\g__math_grabbed_env_tl\space (part)}
\tagstructbegin{tag=Formula,
+ alt = subformula,
title-o=\resulttitle
}
}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
index 575490f5803..185bd45583f 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
@@ -60,7 +60,7 @@
\def\intertext##1{%
\ifvmode\else\\\@empty\fi
\noalign{%
- \penalty\postdisplaypenalty\vskip\belowdisplayskip
+ \penalty\postdisplaypenalty\vskip-\belowdisplayskip
\vskip-\lineskiplimit % CCS
\vskip\normallineskiplimit % CCS
\vskip\l_MT_above_intertext_sep
@@ -107,6 +107,7 @@
\MH_fi:
\tag_mc_end_push:
\tagpdfsetup{paratag=Span}
+ \tagpdfparaOn
\noindent\ignorespaces#1\par
\tag_mc_begin_pop:n{}}
\penalty\predisplaypenalty\vskip\abovedisplayshortskip%
@@ -134,7 +135,8 @@
\parshape\@ne \@totalleftmargin \linewidth
\MH_fi:
\tag_mc_end_push:
- \tagpdfsetup{paratag=Span}
+ \tagpdfsetup{paratag=P}
+ \tagpdfparaOn
\noindent\ignorespaces#1\par
\tag_mc_begin_pop:n{}}%
\penalty\predisplaypenalty\vskip\abovedisplayshortskip%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
index 9261393042e..4cfa0b055c8 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2023-07-20}
-\def\ltlabbibversion{0.81a}
+\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibversion{0.81b}
\ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion}
{Code related to the tagging of bibliography and cite command}
\RequirePackage{latex-lab-testphase-block}
@@ -90,7 +90,7 @@
\AddToHookWithArguments{bibcite/before}
{
\tag_mc_end_push:
- \exp_args:Nx\tagstructbegin{tag=Reference,ref=cite.#1\@extra@b@citeb}
+ \exp_args:Ne\tagstructbegin{tag=Reference,ref=cite.#1\@extra@b@citeb}
\tagmcbegin{}
}
\AddToHookWithArguments{bibcite/after}[tag]
@@ -118,7 +118,7 @@
{
\leavevmode
\tag_mc_end_push:
- \exp_args:Nx\tag_struct_begin:n{tag=Reference,ref=cite.#1\@extra@b@citeb}
+ \exp_args:Ne\tag_struct_begin:n{tag=Reference,ref=cite.#1\@extra@b@citeb}
\tag_mc_begin:n{}
}
\AddToHook{cmd/hyper@natlinkend/after}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
index 2764ca6d8bb..6eaec8efca6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
@@ -32,18 +32,16 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-block.dtx (C) Copyright 2021-2023 LaTeX Project
-\def\ltlabblockdate{2023-09-01}
-\def\ltlabblockversion{0.8h}
+%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
+\def\ltlabblockdate{2024-02-12}
+\def\ltlabblockversion{0.8l}
\ProvidesPackage {latex-lab-testphase-block}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
-\RequirePackage{xtemplate}
\RequirePackage{latex-lab-kernel-changes}
\ExplSyntaxOn
\tl_new:N \l__block_item_align_tl
\tl_new:N\l__block_legacy_env_params_tl
-
\def\@doendpe{\@endpetrue
\def\par
{
@@ -62,11 +60,11 @@
\cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing:
\def\@endpetrue {\global\let\if@endpe\iftrue}
\def\@endpefalse{\global\let\if@endpe\iffalse}
-\DeclareObjectType{blockenv}{1}
-\DeclareObjectType{block}{1}
-\DeclareObjectType{para}{1}
-\DeclareObjectType{list}{1}
-\DeclareObjectType{item}{1}
+\NewTemplateType{blockenv}{1}
+\NewTemplateType{block}{1}
+\NewTemplateType{para}{1}
+\NewTemplateType{list}{1}
+\NewTemplateType{item}{1}
\DeclareTemplateInterface{blockenv}{display}{1}
{
env-name : tokenlist ,
@@ -301,14 +299,14 @@
\@definecounter {#2}
\IfNoValueTF {#4}
{ % @ynthm
- \tl_gset:cx { the #2 }
+ \tl_gset:ce { the #2 }
{
\@thmcounter{#2}
}
}
{ % @xnthm
\@newctr{#1}[#4]
- \tl_gset:cx { the #2 }
+ \tl_gset:ce { the #2 }
{
\expandafter\noexpand\csname the#4\endcsname
\@thmcountersep
@@ -517,7 +515,7 @@
fixed-word-spaces = \l__par_fixed_word_spaces_bool , % name??
final-hyphen-demerits = \finalhyphendemerits ,
cr-cmd = \\ ,
- para-class = \l_tag_para_attr_class_tl ,
+ para-class = \l__tag_para_attr_class_tl ,
}
{
\tl_if_empty:nF {#1} { \SetTemplateKeys{para}{std}{#1} }
@@ -814,8 +812,11 @@
\RenewDocumentCommand{\item}{ ={label}o }
{
\@inmatherr \item
- \tl_if_empty:oTF \__block_item_instance:n %%FMi?
- { \msg_error:nnn { __block } { item-in-nonlist } { \item[{#1}] } }
+ \cs_if_free:NTF \__block_item_instance:n
+ {
+ \@latex@error{Lonely~\string\item--perhaps~a~missing~
+ list~environment}\@ehc
+ }
{
\legacy_if:nTF { @newlist }
{ \__kernel_list_item_begin: }
@@ -1131,6 +1132,7 @@
\DeclareInstance{item}{description}{std}
{
label-format = \normalfont\bfseries #1 ,
+ label-align = left
}
\tag_if_active:T
{
@@ -1203,15 +1205,19 @@
{
\int_compare:nNnT \l__block_flattened_level_int < 2
{
- \int_gincr:N \g__tag_para_main_begin_int
- \tagstructbegin{tag=\l__tag_para_main_tag_tl}
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
}
}
}
\cs_set:Npn \__block_beginpar_hmode:N #1
{
\tag_mc_end:
- \int_gincr:N \g__tag_para_end_int
+ \__tag_gincr_para_end_int:
\__block_debug_typeout:n{increment~ /P \on@line }
\bool_if:NT \l__tag_para_show_bool
{ \tag_mc_begin:n{artifact}
@@ -1234,7 +1240,7 @@
{
\__block_debug_typeout:n{Structure-end~
\l__tag_para_main_tag_tl\space after~ displayblock \on@line }
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\tag_struct_end: %text-unit
}
}
@@ -1257,16 +1263,20 @@
{
\bool_if:NF \l__tag_para_flattened_bool
{
- \int_gincr:N \g__tag_para_main_begin_int
- \tag_struct_begin:n{tag=\l__tag_para_main_tag_tl}
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
}
}
- \int_gincr:N \g__tag_para_begin_int
+ \__tag_gincr_para_begin_int:
\__block_debug_typeout:n{increment~ P \on@line }
\tag_struct_begin:n
{
tag=\l__tag_para_tag_tl
- ,attribute-class=\l_tag_para_attr_class_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
}
\__tag_check_para_begin_show:nn {green}{#1}
\tag_mc_begin:n {}
@@ -1274,15 +1284,19 @@
\cs_new_protected:Npn \__block_start_para_structure_unconditionally:n #1 {
\bool_if:NF \l__tag_para_flattened_bool
{
- \int_gincr:N \g__tag_para_main_begin_int
- \tag_struct_begin:n{tag=\l__tag_para_main_tag_tl}
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
}
- \int_gincr:N \g__tag_para_begin_int
+ \__tag_gincr_para_begin_int:
\__block_debug_typeout:n{increment~ P \on@line }
\tag_struct_begin:n
{
tag=\l__tag_para_tag_tl
- ,attribute-class=\l_tag_para_attr_class_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
}
\__tag_check_para_begin_show:nn {green}{#1}
\tag_mc_begin:n {}
@@ -1292,14 +1306,14 @@
{
\bool_if:NT \l__tag_para_bool
{
- \int_gincr:N \g__tag_para_end_int
+ \__tag_gincr_para_end_int:
\__block_debug_typeout:n{increment~ /P \on@line }
\tag_mc_end:
\__tag_check_para_end_show:nn {red}{}
\tag_struct_end:
\bool_if:NF \l__tag_para_flattened_bool
{
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\tag_struct_end:
}
}
@@ -1334,7 +1348,7 @@
\DeclareRobustCommand*\begin[1]{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
- {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
+ {\def\reserved@a{\@latex@error{Environment~#1~undefined}\@eha}}%
{\def\reserved@a{\def\@currenvir{#1}%
\edef\@currenvline{\on@line}%
\@execute@begin@hook{#1}%
@@ -1349,7 +1363,7 @@
{
\bool_if:NF \l__tag_para_flattened_bool
{
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\tag_struct_end:
}
\@endpefalse
@@ -1369,7 +1383,7 @@
\__block_debug_typeout:n{block-end \on@line}
\legacy_if:nT { @endpe }
{
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\__block_debug_typeout:n{close~ /text-unit \on@line}
\tagstructend
}
@@ -1413,7 +1427,7 @@
\cs_set:Npn \__block_list_item_end: {
\legacy_if:nT { @endpe }
{
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\tagstructend % text-unit
}
\tagstructend \tagstructend % end LBody, LI
@@ -1421,7 +1435,7 @@
\cs_set:Npn \__block_list_end: {
\legacy_if:nT { @endpe }
{
- \int_gincr:N \g__tag_para_main_end_int
+ \__tag_gincr_para_main_end_int:
\tagstructend % text-unit
\__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
index 7ea7fe54bec..f6bc911c456 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
@@ -33,13 +33,16 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfirstaiddate{2023-07-20}
-\def\ltlabfirstaidversion{0.85a}
+\def\ltlabfirstaiddate{2024-01-21}
+\def\ltlabfirstaidversion{0.85b}
\ProvidesPackage {latex-lab-testphase-firstaid} [%
\ltlabfirstaiddate\space v\ltlabfirstaiddate\space
Temporary patches to external packages needed for the tagging project]
-
+\AddToHook{class/amsart/after}
+ {\def\@author{\authors}}
+\AddToHook{class/amsbook/after}
+ {\def\@author{\authors}}
\AddToHook{file/blindtext.sty/after}[latex-lab-firstaid]{%
\FirstAidNeededT{blindtext}{sty}{\blindfiledate\space\blindfileversion\space%
blindtext-Package}%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
index 8b38e4aedef..d00dc9c7cbf 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2023-07-20}
-\def\ltlabfloatversion{0.81a}
+\def\ltlabfloatdate{2024-02-05}
+\def\ltlabfloatversion{0.81c}
\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
{Code related to the tagging of floats}
\prop_new:N \g__tag_float_sect_prop
@@ -51,7 +51,7 @@
\seq_map_inline:Nn\g__tag_float_types_seq
{
\tag_struct_begin:n{tag=##1s,stash}
- \prop_gput:Nnx\g__tag_float_sect_prop {##1-struct}{\int_use:N\c@g__tag_struct_abs_int}
+ \prop_gput:Nne\g__tag_float_sect_prop {##1-struct}{\int_use:N\c@g__tag_struct_abs_int}
\tag_struct_end:
}
}
@@ -93,7 +93,7 @@
{
\__tag_float_end:
\__tag_float_begin:
- \MakeLinkTarget[tagstructure]{g__tag_struct_abs_int}
+ \MakeLinkTarget*{floatstructure.\int_use:N\c@g__tag_struct_abs_int}
}
}
@@ -120,12 +120,12 @@
{
\exp_args:Ne
\tag_struct_begin:n{tag=float,parent=0\prop_item:No\g__tag_float_sect_prop{\@captype-struct}}%
- \prop_gput:Nxx \g__tag_float_sect_prop {\@captype-used}{true}
+ \prop_gput:Nee \g__tag_float_sect_prop {\@captype-used}{true}
}
{
\tag_struct_begin:n{tag=float}
}
- \tl_set:Nx\@current@float@struct{\tag_get:n{struct_num}}%
+ \tl_set:Ne\@current@float@struct{\tag_get:n{struct_num}}%
\typeout{Float structure: \@current@float@struct}
}
@@ -198,7 +198,7 @@
\hsize\columnwidth
\@parboxrestore
\@floatboxreset
- \MakeLinkTarget[tagstructure]{g__tag_struct_abs_int}%
+ \MakeLinkTarget*{floatstructure.\number\value{g__tag_struct_abs_int}}%
}%
\def\end@float{%
\@endfloatbox
@@ -246,10 +246,17 @@
\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel
\def\caption{%
\ifx\@captype\@undefined
- \@latex@error{\noexpand\caption outside float}\@ehd
+ \@latex@error{\noexpand\caption\c_space_tl outside~float}\@ehd
\expandafter\@gobble
\else
- \@kernel@refstepcounter\@captype
+ \tl_if_empty:NTF\@current@float@struct
+ {
+ \refstepcounter\@captype
+ }
+ {
+ \@kernel@refstepcounter\@captype
+ \xdef\@currentHref{floatstructure.\@current@float@struct}%
+ }
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
@@ -260,14 +267,18 @@
{
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
- \xdef\@currentHref{tagstructure.\@current@float@struct}%
\tag_stop:n{caption}
\sbox\@tempboxa{#1:~#2}%
\tag_start:n{caption}
\tagtool{para=false}
+ \tl_if_empty:NT \@current@float@struct
+ { \tl_set:Ne \@current@float@struct {\tag_get:n{struct_num}} }
\tag_struct_begin:n{tag=Caption,parent=\@current@float@struct}
- \seq_gpop_right:cN {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- \seq_gput_left:cV {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
+ \tag_if_active:T
+ {
+ \seq_gpop_right:cN {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
+ \seq_gput_left:cV {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
+ }
\ifdim \wd\@tempboxa >\hsize
\tag_struct_begin:n{tag=Lbl}
\tag_mc_begin:n{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
index 19aed304798..34d29c1de2d 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
@@ -38,6 +38,7 @@
\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
{Code related to the tagging of graphics}
\RequirePackage{l3opacity}
+\cs_generate_variant:Nn \__tag_prop_gput:Nnn {cne}
\cs_new_protected:Npn\__tag_graphic_savepos:n #1
{
\tex_savepos:D
@@ -559,7 +560,7 @@
{red}
{\int_use:N\g__tag_graphic_int}
}
- \__tag_prop_gput:cnx
+ \__tag_prop_gput:cne
{ g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop }
{ A }
{
@@ -626,7 +627,7 @@
{red}
{\int_use:N\g__tag_graphic_int}
}
- \__tag_prop_gput:cnx
+ \__tag_prop_gput:cne
{ g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop }
{ A }
{
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
new file mode 100644
index 00000000000..e40ab0ca2a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
@@ -0,0 +1,109 @@
+%%
+%% This is file `latex-lab-testphase-marginpar.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latex-lab-marginpar.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2021-2023 LaTeX Project
+%%
+%% This file was generated from file(s) of the `LaTeX-lab Bundle'.
+%% ------------------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+%% without such generated files.
+%%
+%% The newest sources can be found below
+%%
+%% https://github.com/latex3/latex2e/required/latex-lab
+%%
+%% where one can also log issues in case there are any.
+%%
+%%
+%% File: latex-lab-marginpar.dtx
+%%
+\def\ltlabmarginpardate{2024-02-12}
+\def\ltlabmarginparversion{0.85b}
+
+\ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion}
+ {Changes related to the tagging of the margin notes}
+\int_new:N \g__kernel_marginpar_int
+\socket_new:nn {tagsupport/marginpar/begin}{0}
+\socket_new:nn {tagsupport/marginpar/end}{0}
+\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}%
+ \else:
+ \tag_struct_begin:n{tag=Aside}%
+ \fi:
+ }
+\socket_new_plug:nnn {tagsupport/marginpar/end}{default}
+ {
+ \tag_struct_end:
+ \if_mode_horizontal: \tag_mc_begin:n{} \fi:
+ }
+\socket_assign_plug:nn {tagsupport/marginpar/begin}{default}
+\socket_assign_plug:nn {tagsupport/marginpar/end}{default}
+
+\long\def \@savemarbox #1#2{%
+ \UseTaggingSocket{marginpar/begin}
+ \global\setbox #1%
+ \color@vbox
+ \vtop{%
+ \hsize\marginparwidth
+ \@parboxrestore
+ \@marginparreset
+ #2\par
+ \@minipagefalse
+ \outer@nobreak
+ }%
+ \color@endbox
+ \UseTaggingSocket{marginpar/end}
+}
+\long\def\@ympar#1{%
+ \@savemarbox\@marbox{#1}%
+ \global\setbox\@currbox\copy\@marbox
+ \tag_stop:
+ \@xympar
+ \tag_start:}
+\long\def\@xmpar[#1]#2{%
+ \int_gincr:N\g__kernel_marginpar_int
+ \property_if_recorded:eTF { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }
+ {
+ \@savemarbox\@marbox {#1
+ \property_record:ee
+ { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}
+ }%
+ \tag_stop:
+ \@savemarbox\@currbox{#2}%
+ \tag_start:
+ }
+ {
+ \@savemarbox\@currbox{#2}%
+ \tag_stop:
+ \@savemarbox\@marbox{#1
+ \property_record:ee
+ { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}}
+ \tag_start:
+ }
+ \tag_stop:
+ \@xympar
+ \tag_start:
+ }
+\endinput
+%%
+%% End of file `latex-lab-testphase-marginpar.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
index 1f8c5eb5b42..3b35a7beb38 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
@@ -32,7 +32,8 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project
+%% File: latex-lab-minipage.dtx
+%%
\def\ltlabminipagedate{2023-10-30}
\def\ltlabminipageversion{0.81c}
\ProvidesExplPackage {latex-lab-testphase-minipage}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
index 167c5d6130e..38bc8993446 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
@@ -32,7 +32,7 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2023 Frank Mittelbach
+%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
\def\ltlabneworIdate{2023-07-20}
\def\ltlabneworIversion{0.85a}
\ProvidesPackage{latex-lab-testphase-new-or-1}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
index 9e98894969c..6fee3cc5a94 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
@@ -32,9 +32,9 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project
-\def\ltlabsecdate{2023-10-16}
-\def\ltlabsecversion{0.84b}
+%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
+\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecversion{0.84c}
\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
{Code related to the tagging of sectioning commands}
\RequirePackage{latex-lab-kernel-changes}
@@ -50,7 +50,7 @@
tag= {\int_compare:nNnTF {#1}={-1}{Part}{Sect}}
,#2
}
- \seq_gpush:Nx \g__tag_sec_stack_seq {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}}
+ \seq_gpush:Ne \g__tag_sec_stack_seq {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}}
}
\msg_new:nnn { tag } {wrong-sect-nesting}
{
@@ -74,7 +74,7 @@
\__tag_sec_end:n {#1}
}
{
- \msg_warning:nnxx {tag}{wrong-sect-nesting}
+ \msg_warning:nnee {tag}{wrong-sect-nesting}
{ \exp_last_unbraced:NV\use_i:nn \l__tag_tmpa_tl }
{ \exp_last_unbraced:NV\use_i:nn \l__tag_tmpb_tl }
}
@@ -292,6 +292,7 @@
\cs_new_protected:Npn \@kernel@tag@hangfrom #1
{
\tagstructbegin{tag=\l__tag_para_tag_tl}
+ \cs_if_exist_use:N \__tag_gincr_para_begin_int:
\tagstructbegin{tag=Lbl}
\setbox\@tempboxa
\hbox
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
index e6c89d16715..a2d3f8d1711 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
@@ -32,37 +32,29 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabtbldate{2023-10-30}
-\def\ltlabtblversion{0.85d}
+%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
+\def\ltlabtbldate{2024-02-07}
+\def\ltlabtblversion{0.85k}
\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
{Code related to the tagging of tables}
\RequirePackage{array}
\tl_new:N \l__tbl_celltag_tl
\tl_set:Nn \l__tbl_celltag_tl {TD}
+\tl_new:N \l__tbl_pcelltag_tl
+\tl_set:Nn \l__tbl_pcelltag_tl {TD}
\tl_new:N \l__tbl_rowtag_tl
\tl_set:Nn \l__tbl_rowtag_tl {TR}
+\tl_new:N \l__tbl_tabletag_tl
+\tl_set:Nn \l__tbl_tabletag_tl {Table}
\tl_new:N \l__tbl_cellattribute_tl
\tl_set:Nn \l__tbl_cellattribute_tl {}
\tl_new:N \l__tbl_rowattribute_tl
\tl_set:Nn \l__tbl_rowattribute_tl {}
-\int_new:N \g__tbl_missing_cells_int
\clist_new:N \l__tbl_tmpa_clist
-\seq_new:N \l__tbl_tmpa_seq
\tl_new:N \l__tbl_tmpa_tl
-\NewSocket{tagsupport/tblcell/begin}{0}
-\NewSocket{tagsupport/tblcell/end}{0}
-\NewSocket{tagsupport/tblrow/begin}{0}
-\NewSocket{tagsupport/tblrow/end}{0}
-\NewSocket{tagsupport/tbl/init}{0}
-\NewSocket{tagsupport/tbl/finalize}{0}
-\NewSocket{tagsupport/tbl/finalize/longtable}{0}
-\NewSocket{tagsupport/tblhmode/begin}{0}
-\NewSocket{tagsupport/tblhmode/end}{0}
-\NewSocket{tagsupport/tblvmode/begin}{0}
-\NewSocket{tagsupport/tblvmode/end}{0}
-\NewSocketPlug{tagsupport/tblcell/begin}{TD}
+\NewSocketPlug{tagsupport/tbl/cell/begin}{TD}
{
+ \__tbl_show_curr_cell_data:
\tag_struct_begin:n
{
tag =\l__tbl_celltag_tl,
@@ -75,16 +67,17 @@
}
\tag_mc_begin:n{}
}
-\NewSocketPlug{tagsupport/tblcell/end}{TD}
+\NewSocketPlug{tagsupport/tbl/cell/end}{TD}
{
\tag_mc_end:
\tag_struct_end:
}
-\NewSocketPlug{tagsupport/tblcell/begin}{TDpbox}
+\NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
{
+ \__tbl_show_curr_cell_data:
\tag_struct_begin:n
{
- tag =\l__tbl_celltag_tl,
+ 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} }
@@ -95,11 +88,11 @@
\tagpdfparaOn
\tl_set:Nn \l__tag_para_main_tag_tl {Div}
}
-\NewSocketPlug{tagsupport/tblcell/end}{TDpbox}
+\NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
{
\tag_struct_end:
}
-\NewSocketPlug{tagsupport/tblrow/begin}{TR}
+\NewSocketPlug{tagsupport/tbl/row/begin}{TR}
{
\seq_gclear:N \g__tbl_struct_cur_seq
\tag_struct_begin:n
@@ -109,36 +102,53 @@
}
\seq_gput_right:Ne \g__tbl_struct_rows_seq { \tag_get:n {struct_num} }
}
-\NewSocketPlug{tagsupport/tblrow/end}{TR}
+\NewSocketPlug{tagsupport/tbl/row/end}{TR}
{
- \__tag_tbl_add_missing_cells:n { \g__tbl_missing_cells_int }
+ \tag_if_active:T
+ {
+ \__tbl_add_missing_cells:
\seq_gput_right:Ne \g__tbl_struct_cells_seq
{
\seq_use:Nn \g__tbl_struct_cur_seq {,}
}
- \int_compare:nNnTF { \g__tbl_row_int } = { \seq_count:N\g__tbl_struct_cells_seq }
+ \int_compare:nNnTF { \g__tbl_row_int } =
+ { \seq_count:N \g__tbl_struct_cells_seq }
{
- \typeout
+ \__tbl_trace:n
{==>~
stucture~stored~for~row~\int_use:N\g__tbl_row_int :~
\seq_use:Nn \g__tbl_struct_cur_seq {,}
}
}
- { \ERROR } % should not happen ...
+ { \ERRORtbl/row } % should not happen ...
\tag_struct_end:
}
+ }
\NewSocketPlug{tagsupport/tbl/init}{Table}
{
\tag_if_active:T
{
\bool_set_false:N \l__tag_para_bool
+ \__tbl_init_struct_data:
}
}
\NewSocketPlug{tagsupport/tbl/finalize}{Table}
{
\__tbl_set_header_rows:
+ \__tbl_restore_struct_data:
}
-\NewSocketPlug{tagsupport/tbl/finalize/longtable}{Table}
+\NewSocketPlug{tagsupport/tbl/longtable/init}{Table}
+ {
+ \seq_gclear:N\g__tbl_struct_rows_seq
+ \seq_gclear:N\g__tbl_struct_cells_seq
+ \seq_gclear:N\g__tbl_struct_cur_seq
+ \seq_gclear:N\g__tbl_LT@firsthead_rows_seq
+ \seq_gclear:N\g__tbl_LT@head_rows_seq
+ \seq_gclear:N\g__tbl_LT@lastfoot_rows_seq
+ \seq_gclear:N\g__tbl_LT@foot_rows_seq
+ }
+
+\NewSocketPlug{tagsupport/tbl/longtable/finalize}{Table}
{
\bool_lazy_and:nnTF
{ \seq_if_empty_p:N \g__tbl_LT@head_rows_seq }
@@ -258,17 +268,28 @@
}
}
}
-\NewSocketPlug{tagsupport/tblhmode/begin}{Table}
+\NewSocketPlug{tagsupport/tbl/longtable/head}{Table}
+ {
+ \tagmcbegin{artifact}
+ \tag_mc_reset_box:N\LT@head
+ \tagmcend
+ }
+\NewSocketPlug{tagsupport/tbl/longtable/foot}{Table}
+ {
+ \tagmcbegin{artifact}
+ \tag_mc_reset_box:N \LT@foot
+ \tagmcend
+ }
+\NewSocketPlug{tagsupport/tbl/hmode/begin}{Table}
{
- \mode_leave_vertical:
\tag_mc_end_push:
\bool_lazy_and:nnT
{ \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool }
{ \tag_struct_end:n { text } }
- \tag_struct_begin:n {tag=Table}
+ \tag_struct_begin:n {tag=\l__tbl_tabletag_tl}
\tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} }
}
-\NewSocketPlug{tagsupport/tblhmode/end}{Table}
+\NewSocketPlug{tagsupport/tbl/hmode/end}{Table}
{
\tag_struct_end:
\bool_lazy_and:nnT
@@ -276,94 +297,101 @@
{ \tag_struct_begin:n { tag=\l__tag_para_tag_tl } }
\tag_mc_begin_pop:n{}
}
-\NewSocketPlug{tagsupport/tblvmode/begin}{Table}
+\NewSocketPlug{tagsupport/tbl/vmode/begin}{Table}
{
- \tag_struct_begin:n {tag=Table}
+ \tag_struct_begin:n {tag=\l__tbl_tabletag_tl}
\tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} }
}
-\NewSocketPlug{tagsupport/tblvmode/end}{Table}
+\NewSocketPlug{tagsupport/tbl/vmode/end}{Table}
{
\tag_struct_end:
\par
}
-\AddToHook{env/tabular/before} {\UseSocket{tagsupport/tblhmode/begin}}
-\AddToHook{env/tabular/after} {\UseSocket{tagsupport/tblhmode/end}}
-\AddToHook{env/tabular*/before} {\UseSocket{tagsupport/tblhmode/begin}}
-\AddToHook{env/tabular*/after} {\UseSocket{tagsupport/tblhmode/end}}
-\AddToHook{env/tabularx/before} {\UseSocket{tagsupport/tblhmode/begin}}
-\AddToHook{env/tabularx/after} {\UseSocket{tagsupport/tblhmode/end}}
-\AddToHook{env/longtable/before}{\UseSocket{tagsupport/tblvmode/begin}}
-\AddToHook{env/longtable/after} {\UseSocket{tagsupport/tblvmode/end}}
-\AddToHook{env/array/begin} {\__tag_tbl_disable:}
-\tag_if_active:T
- { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
-\cs_new_protected:Npn \__tbl_set_colspan:n #1
+\NewSocketPlug{tagsupport/tbl/colspan}{code}
{
- \tag_if_active:T
- {
- \int_compare:nNnT {#1}>{1}
- {
- \prop_get:NeNF \g__tag_attr_entries_prop
- {colspan-\int_eval:n{#1}}
- \l__tbl_tmpa_tl
- {
- \__tag_attr_new_entry:ee
- {colspan-\int_eval:n{#1}}
- {/O /Table /ColSpan~\int_eval:n{#1}}
- }
- \tl_set:Ne \l__tbl_cellattribute_tl
+ \int_compare:nNnT {#1}>{1}
+ {
+ \prop_get:NeNF \g__tag_attr_entries_prop
+ {colspan-\int_eval:n{#1}}
+ \l__tbl_tmpa_tl
+ {
+ \__tag_attr_new_entry:ee
{colspan-\int_eval:n{#1}}
- }
- }
+ {/O /Table /ColSpan~\int_eval:n{#1}}
+ }
+ \tl_set:Ne \l__tbl_cellattribute_tl
+ {colspan-\int_eval:n{#1}}
+ }
}
+\tag_if_active:T
+ { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
+
+\AddToHook{cmd/array/before}{\__tag_tbl_disable:}
\cs_new_protected:Npn \__tag_tbl_disable:
{
- \AssignSocketPlug{tagsupport/tblcell/begin}{noop}
- \AssignSocketPlug{tagsupport/tblcell/end}{noop}
- \AssignSocketPlug{tagsupport/tblrow/begin}{noop}
- \AssignSocketPlug{tagsupport/tblrow/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/cell/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/cell/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/pcell/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/pcell/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/row/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/row/end}{noop}
\AssignSocketPlug{tagsupport/tbl/init}{noop}
\AssignSocketPlug{tagsupport/tbl/finalize}{noop}
- \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{noop}
- \AssignSocketPlug{tagsupport/tblhmode/begin}{noop}
- \AssignSocketPlug{tagsupport/tblhmode/end}{noop}
- \AssignSocketPlug{tagsupport/tblvmode/begin}{noop}
- \AssignSocketPlug{tagsupport/tblvmode/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/longtable/init}{noop}
+ \AssignSocketPlug{tagsupport/tbl/longtable/head}{noop}
+ \AssignSocketPlug{tagsupport/tbl/longtable/foot}{noop}
+ \AssignSocketPlug{tagsupport/tbl/longtable/finalize}{noop}
+ \AssignSocketPlug{tagsupport/tbl/hmode/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/hmode/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/vmode/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/colspan}{noop}
}
\cs_new_protected:Npn \__tag_tbl_enable:
{
- \AssignSocketPlug{tagsupport/tblcell/begin}{TD}
- \AssignSocketPlug{tagsupport/tblcell/end}{TD}
- \AssignSocketPlug{tagsupport/tblrow/begin}{TR}
- \AssignSocketPlug{tagsupport/tblrow/end}{TR}
+ \AssignSocketPlug{tagsupport/tbl/cell/begin}{TD}
+ \AssignSocketPlug{tagsupport/tbl/cell/end}{TD}
+ \AssignSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
+ \AssignSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
+ \AssignSocketPlug{tagsupport/tbl/row/begin}{TR}
+ \AssignSocketPlug{tagsupport/tbl/row/end}{TR}
\AssignSocketPlug{tagsupport/tbl/init}{Table}
\AssignSocketPlug{tagsupport/tbl/finalize}{Table}
- \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{Table}
- \AssignSocketPlug{tagsupport/tblhmode/begin}{Table}
- \AssignSocketPlug{tagsupport/tblhmode/end}{Table}
- \AssignSocketPlug{tagsupport/tblvmode/begin}{Table}
- \AssignSocketPlug{tagsupport/tblvmode/end}{Table}
+ \AssignSocketPlug{tagsupport/tbl/longtable/head}{Table}
+ \AssignSocketPlug{tagsupport/tbl/longtable/foot}{Table}
+ \AssignSocketPlug{tagsupport/tbl/longtable/init}{Table}
+ \AssignSocketPlug{tagsupport/tbl/longtable/finalize}{Table}
+ \AssignSocketPlug{tagsupport/tbl/hmode/begin}{Table}
+ \AssignSocketPlug{tagsupport/tbl/hmode/end}{Table}
+ \AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table}
+ \AssignSocketPlug{tagsupport/tbl/vmode/end}{Table}
+ \AssignSocketPlug{tagsupport/tbl/colspan}{code}
}
\keys_define:nn { __tag / setup }
{
- table-tagging .choices:nn = { true, on }
+ table/tagging .choices:nn = { true, on }
{ \__tag_tbl_enable: },
- table-tagging .choices:nn = { false, off }
+ table/tagging .choices:nn = { false, off }
{ \__tag_tbl_disable: },
- table-tagging .default:n = true,
- table-tagging .initial:n = true
+ table/tagging .choice:,
+ table/tagging / presentation .code:n =
+ {
+ \__tag_tbl_enable:
+ \tl_set:Nn\l__tbl_rowtag_tl {NonStruct}
+ \tl_set:Nn\l__tbl_pcelltag_tl {NonStruct}
+ \tl_set:Nn\l__tbl_celltag_tl {text}
+ \tl_set:Nn\l__tbl_tabletag_tl {Div}
+ },
+ table/tagging .default:n = true,
+ table/tagging .initial:n = true
+ }
+\keys_define:nn { __tag / setup }
+ {
+ table-tagging .meta:n = {table/tagging={#1}}
}
-\AddToHook{begindocument}
- {
- \cs_if_exist:NT \@kernel@before@head
- {
- \tl_put_right:Nn \@kernel@before@head {\__tag_tbl_disable:}
- \tl_put_right:Nn \@kernel@before@foot {\__tag_tbl_disable:}
- }
- }
\AddToHook{begindocument}
{
\tag_if_active:T
@@ -421,183 +449,34 @@
}
\keys_define:nn { __tag / setup }
{
- table-header-rows .clist_set:N = \l__tbl_header_rows_clist
+ table/header-rows .clist_set:N = \l__tbl_header_rows_clist,
+ table-header-rows .meta:n = {table/header-rows={#1}}
}
\cs_new_protected:Npn \__tbl_show_curr_cell_data: {
- \typeout { ==>~ current~cell~data:~
- \int_use:N \g__tbl_row_int ,
- \int_use:N \g__tbl_col_int ,
- \g__tbl_span_tl
- }
-}
-\def\insert@column{%
- \__tbl_show_curr_cell_data:
- \UseSocket{tagsupport/tblcell/begin}%
- \the@toks \the \@tempcnta
- \ignorespaces \@sharp \unskip
- \the@toks \the \count@ \relax
- \UseSocket{tagsupport/tblcell/end}%
-}
-\def\@classz{\@classx
- \@tempcnta \count@
- \prepnext@tok
- \@addtopreamble{\ifcase \@chnum
- \hfil
- \hskip1sp%
- \d@llarbegin
- \insert@column
- \d@llarend \do@row@strut \hfil \or
- \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or
- \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or
- \setbox\ar@mcellbox\vbox
- \@startpbox{\@nextchar}
- \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
- \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
- \insert@column \@endpbox
- \ar@align@mcell
- \do@row@strut \or
- \vtop \@startpbox{\@nextchar}
- \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
- \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
- \insert@column \@endpbox\do@row@strut \or
- \vbox \@startpbox{\@nextchar}
- \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
- \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
- \insert@column \@endpbox\do@row@strut
- \fi}\prepnext@tok}
-\def\@array[#1]#2{%
- \@tempdima \ht \strutbox
- \advance \@tempdima by\extrarowheight
- \setbox \@arstrutbox \hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
- \tl_set_eq:NN \l__tbl_saved_table_cols_tl \g__tbl_table_cols_tl
- \begingroup
- \@mkpream{#2}
- \__tbl_determine_table_cols:
- \xdef\@preamble{%
- \noexpand
- \ar@ialign
- \@halignto
- \bgroup \@arstrut
- \UseSocket{tagsupport/tblrow/begin}%
- \__tbl_init_cell_data:
- \@preamble
- \tabskip \z@ \cr}%
- \endgroup
- \@arrayleft
- \UseSocket{tagsupport/tbl/init}
- \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
- \bgroup
- \let \@sharp ##\let \protect \relax
- \lineskip \z@
- \baselineskip \z@
- \m@th
- \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
- \@preamble}
-\let\@@array\@array
-\cs_new_protected:Npn \__tbl_init_cell_data: {
- \int_gset:Nn \g__tbl_col_int {1}
- \tl_gset:Nn \g__tbl_span_tl {1}
-}
-\cs_new_protected:Npn \__tbl_update_cell_data: {
- \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl }
- \tl_gset:Nn \g__tbl_span_tl {1}
-}
-\cs_new:Npn \__tbl_determine_table_cols: {
- \seq_set_split:NnV\l__tbl_tmpa_seq {&}\@preamble
- \tl_gset:Ne \g__tbl_table_cols_tl { \seq_count:N \l__tbl_tmpa_seq }
- \typeout{ ==>~ Table~ has~ \g__tbl_table_cols_tl \space columns }
-}
-\protected\def\@arraycr{
- \relax
- \__tbl_store_missing_cells:n{@arraycr}
- %
- \iffalse{\fi\ifnum 0=`}\fi
- \@ifstar \@xarraycr \@xarraycr}
-\cs_new:Npn \__tbl_store_missing_cells:n #1 {
- \int_compare:nNnT \g__tbl_col_int > 0
- {
- \int_gset:Nn \g__tbl_missing_cells_int
- {
- \g__tbl_table_cols_tl
- - \g__tbl_col_int
- - \g__tbl_span_tl
- + 1
- }
- \int_compare:nNnT \g__tbl_missing_cells_int < 0 \ERROR % should not happen
- \typeout{==>~
- (#1)~
- This~ row~ needs~
- \int_use:N \g__tbl_missing_cells_int \space
- additional~ cell(s)
- }
- }
+ \__tbl_trace:n { ==>~ current~cell~data:~
+ \int_use:N \g__tbl_row_int ,
+ \int_use:N \g__tbl_col_int ,
+ \g__tbl_span_tl
+ }
}
-\cs_new:Npn \__tag_tbl_add_missing_cells:n #1
+\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 {#1}>{0}
- {
- \typeout{==>~
- ~Inserting~\int_eval:n{#1}~additional~cell(s)~into~previous~row:}
- }
- \int_step_inline:nn { #1 }
+ \int_compare:nNnT \g__tbl_missing_cells_int > 0
{
- \UseSocket{tagsupport/tblcell/begin}
- \UseSocket{tagsupport/tblcell/end}
+ \__tbl_trace:n {==>~
+ ~Inserting~\int_use:N \g__tbl_missing_cells_int \space
+ additional~cell(s)~into~previous~row:}
+ \int_step_inline:nn { \g__tbl_missing_cells_int }
+ {
+ \UseTaggingSocket{tbl/cell/begin}
+ \UseTaggingSocket{tbl/cell/end}
+ }
}
}
-\def\endarray{
- \__tbl_store_missing_cells:n{endarray}
- \crcr \egroup
- \UseSocket{tagsupport/tbl/finalize}
- \int_gset:Nn \g__tbl_col_int { \l__tbl_saved_col_tl }
- \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
- \tl_gset_eq:NN \g__tbl_struct_table_tl \l__tbl_saved_struct_table_tl
- \seq_gset_eq:NN \g__tbl_struct_rows_seq \l__tbl_saved_struct_rows_seq
- \seq_gset_eq:NN \g__tbl_struct_cells_seq\l__tbl_saved_struct_cells_seq
- \seq_gset_eq:NN \g__tbl_struct_cur_seq \l__tbl_saved_struct_cur_seq
- \typeout{==>~ restored~cell~data:~
- \int_use:N \g__tbl_row_int,
- \int_use:N \g__tbl_col_int,
- \l__tbl_saved_span_tl \space
- (
- \int_compare:nNnTF \g__tbl_table_cols_tl = 0
- { outer~ level }
- { max:~ \g__tbl_table_cols_tl }
- )
- }
- \egroup
- \@arrayright \gdef\@preamble{}%
-}
-\def\@addamp {
- \if@firstamp
- \@firstampfalse
- \else
- \edef\@preamble{\@preamble &
- \__tbl_update_cell_data:
- }
- \fi
-}
-\int_new:N \g__tbl_col_int
-\int_new:N \g__tbl_row_int
-\tl_new:N \g__tbl_span_tl
-\tl_new:N \g__tbl_table_cols_tl
-
-\tl_gset:Nn \g__tbl_span_tl {1}
-\tl_gset:Nn \g__tbl_table_cols_tl {0} % indicates outer level
-\tl_new:N \l__tbl_saved_col_tl
-\tl_new:N \l__tbl_saved_row_tl
-\tl_new:N \l__tbl_saved_span_tl
-\tl_new:N \l__tbl_saved_table_cols_tl
-
-\tl_set:Nn \l__tbl_saved_col_tl{0}
-\tl_set:Nn \l__tbl_saved_row_tl{0}
-\tl_set:Nn \l__tbl_saved_span_tl{1}
-\tl_set:Nn \l__tbl_saved_table_cols_tl{0} % indicates outer level
\tl_new:N \g__tbl_struct_table_tl
\tl_new:N \l__tbl_saved_struct_table_tl
\seq_new:N \g__tbl_struct_rows_seq
@@ -606,300 +485,24 @@
\seq_new:N \l__tbl_saved_struct_cells_seq
\seq_new:N \g__tbl_struct_cur_seq
\seq_new:N \l__tbl_saved_struct_cur_seq
-\def\ar@ialign{%
- \tl_set:No \l__tbl_saved_col_tl {\int_use:N \g__tbl_col_int }
- \tl_set:No \l__tbl_saved_row_tl {\int_use:N \g__tbl_row_int }
- \tl_set_eq:NN \l__tbl_saved_span_tl \g__tbl_span_tl
+
+\cs_new_protected:Npn \__tbl_init_struct_data: {
\tl_set_eq:NN \l__tbl_saved_struct_table_tl \g__tbl_struct_table_tl
\seq_set_eq:NN \l__tbl_saved_struct_rows_seq \g__tbl_struct_rows_seq
\seq_set_eq:NN \l__tbl_saved_struct_cells_seq \g__tbl_struct_cells_seq
\seq_set_eq:NN \l__tbl_saved_struct_cur_seq \g__tbl_struct_cur_seq
- \typeout{==>~ saved~cell~data:~
- \l__tbl_saved_row_tl,
- \l__tbl_saved_col_tl,
- \l__tbl_saved_span_tl \space
- (
- \int_compare:nNnTF \l__tbl_saved_table_cols_tl = 0
- { outer~ level }
- { max:~ \l__tbl_saved_table_cols_tl }
- )
- }
- \int_gzero:N \g__tbl_row_int
- \int_gzero:N \g__tbl_col_int
- \tl_gset:Nn \g__tbl_span_tl {1}
- \seq_gclear:N\g__tbl_struct_rows_seq
- \seq_gclear:N\g__tbl_struct_cells_seq
- \seq_gclear:N\g__tbl_struct_cur_seq
- \everycr{%
- \noalign{%
- \int_compare:nNnT \g__tbl_col_int > 0
- { \UseSocket{tagsupport/tblrow/end} }
- \int_gincr:N \g__tbl_row_int % this row about to start
- \int_gzero:N \g__tbl_col_int % we are before first col
- }%
- }%
- \tabskip\z@skip\halign}
-\long\def\multicolumn#1#2#3{%
- % alternative: determine first col with vmode test ...
- % \ifvmode
- % \multispan{#1}\typeout{A==> vmode}%
- % \else
- % \multispan{#1}\typeout{A==> not vmode}
- % \fi
- % but this makes the \crcr handling really complicated which would
- % then need to become something like
- % \ifvmode \expandafter \@gobble
- % \else \expandafter \@iden \fi {\cr\noalign{do something}}%
- % so not used.
- % Instead:
- \multispan{#1}\begingroup
- \int_compare:nNnTF \g__tbl_col_int = 0
- {
- \UseSocket{tagsupport/tblrow/begin}
- \int_gset:Nn \g__tbl_col_int {1}
- }
- {
- \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl }
- }
- \tl_gset:Nn \g__tbl_span_tl {#1}
- \def\@addamp{\if@firstamp\@firstampfalse \else
- \@preamerr 5\fi}%
- \@mkpream{#2}\@addtopreamble\@empty
- \endgroup
- \__tbl_set_colspan:n {#1}
- \def\@sharp{#3}%
- \@arstrut \@preamble
- \null
- \ignorespaces}
-\let\@kernel@refstepcounter\refstepcounter
-\def\hyper@nopatch@longtable{}
-\def\__tbl_patch_LT@array[#1]#2{%
- \UseSocket{tagsupport/tbl/init}%
- \@kernel@refstepcounter{table}\stepcounter{LT@tables}%
- \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
- \int_gzero:N \g__tbl_row_int
\seq_gclear:N\g__tbl_struct_rows_seq
\seq_gclear:N\g__tbl_struct_cells_seq
\seq_gclear:N\g__tbl_struct_cur_seq
- \seq_gclear:N\g__tbl_LT@firsthead_rows_seq
- \seq_gclear:N\g__tbl_LT@head_rows_seq
- \seq_gclear:N\g__tbl_LT@lastfoot_rows_seq
- \seq_gclear:N\g__tbl_LT@foot_rows_seq
- \if l#1%
- \LTleft\z@ \LTright\fill
- \else\if r#1%
- \LTleft\fill \LTright\z@
- \else\if c#1%
- \LTleft\fill \LTright\fill
- \fi\fi\fi
- \let\LT@mcol\multicolumn
- \let\LT@@tabarray\@tabarray
- \let\LT@@hl\hline
- \def\@tabarray{%
- \let\hline\LT@@hl
- \LT@@tabarray}%
- \let\\\LT@tabularcr
- \let\tabularnewline\\%
- \def\newpage{\noalign{\break}}%
- \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
- \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
- \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
- \@tempdima\ht\strutbox
- \let\@endpbox\LT@endpbox
- \ifx\extrarowheight\@undefined
- \let\@acol\@tabacol
- \let\@classz\@tabclassz \let\@classiv\@tabclassiv
- \def\@startpbox{\vtop\LT@startpbox}%
- \let\@@startpbox\@startpbox
- \let\@@endpbox\@endpbox
- \let\LT@LL@FM@cr\@tabularcr
- \else
- \advance\@tempdima\extrarowheight
- \col@sep\tabcolsep
- \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
- \fi
- \setbox\@arstrutbox\hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
- \let\@sharp##\let\protect\relax
- \begingroup
- \@mkpream{#2}%
- \__tbl_determine_table_cols:
- \xdef\LT@bchunk{%
- \int_gzero:N \g__tbl_col_int
- \global\advance\c@LT@chunks\@ne
- \global\LT@rows\z@\setbox\z@\vbox\bgroup
- \LT@setprevdepth
- \tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut
- \UseSocket{tagsupport/tblrow/begin}%
- \__tbl_init_cell_data:
- \@preamble \tabskip\LTright \cr}%
- \endgroup
- \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
- \LT@make@row
- \m@th\let\par\@empty
- \everycr{%
- \noalign{%
- \typeout{--longtable-->~chunk~row:~ \the\LT@rows \space
- row:~ \the\g__tbl_row_int \space
- column:~ \the\g__tbl_col_int
- }
- \int_compare:nNnT \g__tbl_col_int > 0
- {
- \UseSocket{tagsupport/tblrow/end}
- }
- \int_gzero:N \g__tbl_col_int % before first col
- \int_compare:nNnT \LT@rows < \LTchunksize
- { \int_gincr:N \g__tbl_row_int } % this row about to start
- }%
- }%
- \lineskip\z@\baselineskip\z@
- \LT@bchunk}
-\def\__tbl_patch_endlongtable{%
- \__tbl_store_missing_cells:n{endlongtable}
- \crcr
- \noalign{%
- \UseSocket{tagsupport/tbl/finalize/longtable}
- \int_gzero:N \g__tbl_row_int % this prevents considering the next
- % \crcr as another row end.
- \let\LT@entry\LT@entry@chop
- \xdef\LT@save@row{\LT@save@row}}%
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \if@filesw
- {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
- \gdef\expandafter\noexpand
- \csname LT@\romannumeral\c@LT@tables\endcsname
- {\LT@save@row}}}%
- \fi
- \ifx\LT@save@row\LT@@save@row
- \else
- \LT@warn{Column~\@width s~have~changed\MessageBreak
- in~table~\thetable}%
- \LT@final@warn
- \fi
- \endgraf\penalty -\LT@end@pen
- \ifvoid\LT@foot\else
- \global\advance\vsize\ht\LT@foot
- \global\advance\@colroom\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
- \fi
- \endgroup
- \global\@mparbottom\z@
- \endgraf\penalty\z@\addvspace\LTpost
- \ifvoid\footins\else\insert\footins{}\fi}
-\def\__tbl_patch_LT@t@bularcr{%
- \global\advance\LT@rows\@ne
- \ifnum\LT@rows=\LTchunksize
- \__tbl_store_missing_cells:n{echunk}
- \gdef\LT@setprevdepth{%
- \prevdepth\z@
- \global\let\LT@setprevdepth\relax}%
- \expandafter\LT@xtabularcr
- \else
- \ifnum0=`{}\fi
- \expandafter\LT@LL@FM@cr
- \fi}
+}
-\def\__tbl_patch_LT@end@hd@ft#1{%
- \__tbl_store_missing_cells:n{head/foot}
- \int_step_inline:nn
- { \LT@rows + 1 }
- {
- \seq_gput_left:ce
- {g__tbl_\cs_to_str:N #1 _rows_seq }
- { \int_eval:n {\g__tbl_row_int + 1 - ##1 } }
- }
- \int_gset:Nn \LT@rows { \LTchunksize }
- \LT@echunk
- \ifx\LT@start\endgraf
- \LT@err
- {Longtable head or foot not at start of table}%
- {Increase LTchunksize}%
- \fi
- \setbox#1\box\z@
- \LT@get@widths
- \LT@bchunk}
+\cs_new_protected:Npn \__tbl_restore_struct_data: {
+ \tl_gset_eq:NN \g__tbl_struct_table_tl \l__tbl_saved_struct_table_tl
+ \seq_gset_eq:NN \g__tbl_struct_rows_seq \l__tbl_saved_struct_rows_seq
+ \seq_gset_eq:NN \g__tbl_struct_cells_seq\l__tbl_saved_struct_cells_seq
+ \seq_gset_eq:NN \g__tbl_struct_cur_seq \l__tbl_saved_struct_cur_seq
+}
-\def\__tbl_patch_LT@start{%
- \let\LT@start\endgraf
- \endgraf\penalty\z@\vskip\LTpre\endgraf
- \ifdim \pagetotal<\pagegoal \else
- \dimen@=\pageshrink
- \advance \dimen@ 1sp %
- \kern\dimen@\penalty 9999\endgraf \kern-\dimen@
- \fi
- \dimen@\pagetotal
- \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \ht\LT@foot
- \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}%
- \vfuzz\maxdimen
- \vbadness\@M
- \setbox\tw@\copy\z@
- \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
- \setbox\tw@\vbox{\unvbox\tw@}%
- \LT@reset@vfuzz
- \advance\dimen@ \ht
- \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@\dp
- \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@ -\pagegoal
- \ifdim \dimen@>\z@
- \vfil\break
- \else
- \ifdim\pageshrink>\z@\pageshrink\z@\fi
- \fi
- \global\@colroom\@colht
- \ifvoid\LT@foot\else
- \global\advance\vsize-\ht\LT@foot
- \global\advance\@colroom-\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
- \maxdepth\z@
- \fi
- \MakeLinkTarget{table}
- \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
- \tagmcbegin{artifact}
- \tag_mc_reset_box:N\LT@head
- \tagmcend
- \output{\LT@output}}
-\def\__tbl_patch_LT@output{%
- \ifnum\outputpenalty <-\@Mi
- \ifnum\outputpenalty > -\LT@end@pen
- \LT@err{floats and marginpars not allowed in a longtable}\@ehc
- \else
- \setbox\z@\vbox{\unvbox\@cclv}%
- \ifdim \ht\LT@lastfoot>\ht\LT@foot
- \dimen@\pagegoal
- \advance\dimen@\ht\LT@foot
- \advance\dimen@-\ht\LT@lastfoot
- \ifdim\dimen@<\ht\z@
- \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
- \@makecol
- \@outputpage
- \global\vsize\@colroom
- \setbox\z@\vbox{\box\LT@head}%
- \fi
- \fi
- \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi
- \tagmcbegin{artifact}
- \tag_mc_reset_box:N \LT@foot
- \tagmcend
- \fi
- \else
- \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
- \tagmcbegin{artifact}
- \tag_mc_reset_box:N \LT@foot
- \tagmcend
- \@makecol
- \@outputpage
- \global\vsize\@colroom
- \copy\LT@head\nobreak
- \fi}
\def\__tbl_patch_LT@makecaption#1#2#3{%
\LT@mcol\LT@cols c{%
% test can go after merge
@@ -922,56 +525,10 @@
\hss}}}
\AddToHook{package/longtable/after}
{
- \seq_new:N \g__tbl_LT@firsthead_rows_seq
- \seq_new:N \g__tbl_LT@head_rows_seq
- \seq_new:N \g__tbl_LT@lastfoot_rows_seq
- \seq_new:N \g__tbl_LT@foot_rows_seq
- \cs_set_eq:NN \LT@array\__tbl_patch_LT@array
- \cs_set_eq:NN \endlongtable\__tbl_patch_endlongtable
- \cs_set_eq:NN \LT@start\__tbl_patch_LT@start
- \cs_set_eq:NN \LT@output\__tbl_patch_LT@output
- \cs_set_eq:NN \LT@t@bularcr\__tbl_patch_LT@t@bularcr
- \cs_set_eq:NN \LT@end@hd@ft\__tbl_patch_LT@end@hd@ft
\cs_set_eq:NN \LT@makecaption\__tbl_patch_LT@makecaption
}
-\def\__tbl_patch_TX@endtabularx{%
- \expandafter\expandafter\expandafter
- \TX@find@endtabularxa\csname end\TX@\endcsname
- \endtabularx\TX@\endtabularx\TX@find@endtabularxa
- \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}%
- \let\verb\TX@verb
- \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
- \edef\TX@ckpt{\cl@@ckpt}%
- \let\@elt\relax
- \TX@old@table\maxdimen
- \TX@col@width\TX@target
- \global\TX@cols\@ne
- \TX@typeout@
- {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
- \tag_stop:n{tabularx}
- \TX@trial{\def\NC@rewrite@X{%
- \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
- \loop
- \TX@arith
- \ifTX@
- \TX@trial{}%
- \repeat
- \tag_start:n{tabularx}
- {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext
- \csname tabular*\expandafter\endcsname\expandafter\TX@target
- \the\toks@
- \csname endtabular*\endcsname}%
- \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn
- \ifnum0=`{\fi}%
- \expandafter\expandafter\expandafter
- \TX@find@endtabularxbb
- \expandafter\end\expandafter{\TX@}%
- \endtabularx\TX@\endtabularx\TX@find@endtabularxb
-}
-\AddToHook{package/tabularx/after}
- {\cs_set_eq:NN \TX@endtabularx\__tbl_patch_TX@endtabularx }
\endinput
%%
%% End of file `latex-lab-testphase-table.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
index 7cae4fc4897..749ab3aa08a 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
@@ -32,7 +32,7 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-text.dtx (C) Copyright 2023 LaTeX Project
+%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
\def\ltlabtextdate{2023-07-20}
\def\ltlabtextversion{0.85a}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty
new file mode 100644
index 00000000000..f3518622dfa
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty
@@ -0,0 +1,300 @@
+%%
+%% This is file `latex-lab-testphase-title.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latex-lab-title.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2021-2023 LaTeX Project
+%%
+%% This file was generated from file(s) of the `LaTeX-lab Bundle'.
+%% ------------------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+%% without such generated files.
+%%
+%% The newest sources can be found below
+%%
+%% https://github.com/latex3/latex2e/required/latex-lab
+%%
+%% where one can also log issues in case there are any.
+%%
+%%
+%% File: latex-lab-title.dtx (C) Copyright 2023-2024 LaTeX Project
+\def\ltlabtitledate{2024-02-09}
+\def\ltlabtitleversion{0.85c}
+
+
+\ProvidesExplPackage {latex-lab-testphase-title} {\ltlabtitledate} {\ltlabtitleversion}
+ {Changes related to the tagging of the title}
+\cs_new_protected:Npn \__tag_patch_thanks:n #1
+ {
+ \rlap{\footnotemark}
+ \protected@xdef\@thanks{\@thanks
+ \protect\footnotetext[\the\c@footnote]{#1}}
+ }
+\cs_new_protected:Npn \__tag_patch_maketitle:
+ {
+ \par
+ \begingroup
+ \cs_if_exist_use:N\__tag_tbl_disable:
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \cs_set_eq:NN \thanks \__tag_patch_thanks:n
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }
+\cs_new_protected:Npn \__tag_patch_@maketitle:
+ {
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \let \footnote \thanks
+ \pdf_version_compare:NnTF > {1.7}
+ {{\LARGE \tag_struct_begin:n{tag=Title}\@title \par\tag_struct_end:}}
+ {{\LARGE \tagtool{paratag=Title}\@title \par}}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em
+ }
+
+\cs_new_protected:Npn \__tag_patch_maketitle_page:
+ {\begin{titlepage}%
+ \cs_if_exist_use:N\__tag_tbl_disable:
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let \footnote \thanks
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ \pdf_version_compare:NnTF > {1.7}
+ {{\LARGE \tag_struct_begin:n{tag=Title}\@title \par\tag_struct_end:}}
+ {{\LARGE \tagtool{paratag=Title}\@title \par}}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }
+
+\AddToHook{class/article/after}
+ {
+ \if@titlepage
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle_page:
+ \else
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle:
+ \cs_set_eq:NN \@maketitle \__tag_patch_@maketitle:
+ \fi
+ }
+\AddToHook{class/report/after}
+ {
+ \if@titlepage
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle_page:
+ \else
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle:
+ \cs_set_eq:NN \@maketitle \__tag_patch_@maketitle:
+ \fi
+ }
+\AddToHook{class/book/after}
+ {
+ \if@titlepage
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle_page:
+ \else
+ \cs_set_eq:NN \maketitle \__tag_patch_maketitle:
+ \cs_set_eq:NN \@maketitle \__tag_patch_@maketitle:
+ \fi
+ }
+\str_new:N \g__tag_title_tmpa_str
+\str_new:N \l__tag_title_tmpa_str
+\tl_new:N \l__tag_title_tmpa_tl
+\seq_new:N \l__tag_title_tmpa_seq
+\providecommand\texorpdfstring[2]{#1}%
+\protected\def\@title{\@latex@error{No \noexpand\title given}\@ehc}
+\protected\def\@author{\@latex@warning@no@line{No \noexpand\author given}}
+\cs_new_protected:Npn \__tag_title_pdfstring:nnN #1 #2 #3 % #1 text, #2 e.g. utf16/hex
+ {
+ \group_begin:
+ \cs_set_eq:NN\texorpdfstring\use_ii:nn
+ \str_set:Ne \l__tag_title_tmpa_str {\text_purify:n { #1 } }
+ \pdf_string_from_unicode:nVN { #2 } \l__tag_title_tmpa_str \l__tag_title_tmpa_str
+ \str_gset_eq:NN \g__tag_title_tmpa_str\l__tag_title_tmpa_str
+ \group_end:
+ \str_set_eq:NN #3 \g__tag_title_tmpa_str
+ }
+\cs_generate_variant:Nn\__tag_title_pdfstring:nnN {e}
+
+\tl_new:N \g__tag_title_title_tl
+\RenewDocumentCommand\title{O{}m}
+ {
+ \gdef\@title{#2}
+ \tl_gset_eq:NN\g__tag_title_title_tl\@title
+ \keys_set:nn {hyp}{#1}
+ }
+\regex_new:N\l__tag_title_optlang_regex
+\regex_set:Nn\l__tag_title_optlang_regex {\A\[([A-Za-z\-]+)\](.*)}
+\cs_generate_variant:Nn \regex_extract_once:NnN{NVN}
+\cs_generate_variant:Nn \clist_item:nn {on}
+\keys_define:nn { hyp }
+ {
+ pdftitle .code:n =
+ {
+ \tl_if_blank:nTF {#1}
+ {
+ \pdfmanagement_remove:nn {Info}{Title}
+ }
+ {
+ \tl_set:Ne\l__tag_title_tmpa_tl {\clist_item:on{#1}{1}}
+ \regex_extract_once:NVN
+ \l__tag_title_optlang_regex
+ \l__tag_title_tmpa_tl
+ \l__tag_title_tmpa_seq
+ \seq_if_empty:NTF\l__tag_title_tmpa_seq
+ {
+ \__tag_title_pdfstring:nnN {#1}{utf16/hex}\l__tag_title_tmpa_str
+ }
+ {
+ \__tag_title_pdfstring:enN
+ {\seq_item:Nn \l__tag_title_tmpa_seq{3}}{utf16/hex}\l__tag_title_tmpa_str
+ }
+ \str_if_eq:VnF\l__tag_title_tmpa_str{<FEFF>}
+ {
+ \pdfmanagement_add:nne {Info}{Title}{\l__tag_title_tmpa_str}
+ }
+ }
+ \AddToDocumentProperties[hyperref]{pdftitle}{#1}
+ }
+ ,pdfsubtitle .code:n = { \AddToDocumentProperties[hyperref]{pdfsubtitle}{#1} }
+ }
+\tl_new:N \g__tag_title_author_tl
+\RenewDocumentCommand\author{O{}m}
+ {
+ \gdef\@author{#2}
+ \tl_gset_eq:NN\g__tag_title_author_tl\@author
+ \keys_set:nn {hyp}{#1}
+ }
+
+\keys_define:nn { hyp }
+ {
+ pdfauthor .code:n =
+ {
+ \tl_if_blank:nTF {#1}
+ {
+ \pdfmanagement_remove:nn {Info}{Author}
+ }
+ {
+ \tl_set:Ne\l__tag_title_tmpa_tl {\clist_item:on{#1}{1}}
+ \regex_extract_once:NVN
+ \l__tag_title_optlang_regex
+ \l__tag_title_tmpa_tl
+ \l__tag_title_tmpa_seq
+ \seq_if_empty:NTF\l__tag_title_tmpa_seq
+ {
+ \__tag_title_pdfstring:nnN {#1}{utf16/hex}\l__tag_title_tmpa_str
+ }
+ {
+ \__tag_title_pdfstring:enN
+ {\seq_item:Nn \l__tag_title_tmpa_seq{3}}{utf16/hex}\l__tag_title_tmpa_str
+ }
+ \str_if_eq:VnF\l__tag_title_tmpa_str{<FEFF>}
+ {
+ \pdfmanagement_add:nne {Info}{Author}{\l__tag_title_tmpa_str}
+ }
+ }
+ \AddToDocumentProperties[hyperref]{pdfauthor}{#1}
+ }
+ }
+\AddToHook{cmd/maketitle/before}
+ {
+ \tl_gset_eq:NN \g__tag_title_author_tl\@author
+ \tl_gset_eq:NN \g__tag_title_title_tl\@title
+ }
+\AddToHook{shipout/lastpage}
+ {
+ \tl_if_empty:eT{\GetDocumentProperties{hyperref/pdftitle}}
+ {
+ \group_begin:
+ \cs_set_eq:NN\thanks \use_none:n
+ \str_set:Ne \l__tag_title_tmpa_str {\text_purify:n { \g__tag_title_title_tl } }
+ \keys_set:ne{hyp}{pdftitle={\exp_not:V\l__tag_title_tmpa_str}}
+ \group_end:
+ }
+ \tl_if_empty:eT{\GetDocumentProperties{hyperref/pdfauthor}}
+ {
+ \group_begin:
+ \cs_set_eq:NN\thanks \use_none:n
+ \cs_set:Npn \and {,}
+ \str_set:Ne \l__tag_title_tmpa_str {\text_purify:n { \g__tag_title_author_tl } }
+ \keys_set:ne{hyp}{pdfauthor={\exp_not:V\l__tag_title_tmpa_str}}
+ \group_end:
+ }
+ \tl_if_empty:eF{\GetDocumentProperties{document/pdfstandard-UA}}
+ {
+ \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { DisplayDocTitle } { true }
+ }
+ }
+\DeclareHookRule{shipout/lastpage}{latex-lab-testphase-title}{before}{pdfmanagement-testphase}
+
+\endinput
+%%
+%% End of file `latex-lab-testphase-title.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
index bf1cb9bb87f..e4cb035ba10 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
@@ -35,14 +35,14 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtocdate{2023-10-16}
\def\ltlabtocversion{0.85b}
\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-2023 LaTeX Project
-\def\ltlabkerneldate{2023-10-16}
-\def\ltlabkernelversion{0.85b}
+%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
+\def\ltlabkerneldate{2024-02-12}
+\def\ltlabkernelversion{0.85c}
\RequirePackage{latex-lab-kernel-changes}
\def\@contentsline@cfgpoint@before#1#2#3#4{}
\def\@contentsline@cfgpoint@after#1#2#3#4{}
@@ -64,7 +64,7 @@
\makeatletter
\@starttoc@cfgpoint@before{#1}%
\@input{\jobname.#1}%
- \@starttoc@cfgpoint@after{#1}
+ \@starttoc@cfgpoint@after{#1}%
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
@@ -275,7 +275,7 @@
\endgroup
\fi}
}
-%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtocdate{2023-10-16}
\def\ltlabtocversion{0.85b}
\tl_new:N \l__tag_toc_tmpa_tl
@@ -372,7 +372,7 @@
{ \int_compare_p:nNn { \g__tag_toc_level_int } > {-100} }
{ \int_compare_p:nNn { \use:c{toclevel@#1} } > { \g__tag_toc_level_int } }
{
- \seq_gpush:Nx \g__tag_toc_stack_seq {{TOC}\use:c{toclevel@#1}}
+ \seq_gpush:Ne \g__tag_toc_stack_seq {{TOC}\use:c{toclevel@#1}}
\tag_struct_begin:n{tag=TOC}
}
\int_compare:nNnT
@@ -383,10 +383,10 @@
\int_gset:Nn \g__tag_toc_level_int { \use:c{toclevel@#1} }
\group_begin:
\text_declare_expand_equivalent:Nn \numberline \use_none:n
- \exp_args:Nx \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
- \prop_gput:Nxx \g__tag_struct_ref_by_dest_prop
+ \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}
- \seq_gpush:Nx \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
+ \seq_gpush:Ne \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
\group_end:
}
}
@@ -438,7 +438,7 @@
\def\@dottedtocline@cfgpoint@leaders#1{%
\tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:}
-%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtochyperdate{2023-07-20}
\def\ltlabtochyperversion{0.85a}
\def\hyper@nopatch@toc{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
new file mode 100644
index 00000000000..a74a5f65ef3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
@@ -0,0 +1,48 @@
+%%
+%% This is file `marginpar-latex-lab-testphase.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latex-lab-marginpar.dtx (with options: `latex-lab')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2021-2023 LaTeX Project
+%%
+%% This file was generated from file(s) of the `LaTeX-lab Bundle'.
+%% ------------------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+%% without such generated files.
+%%
+%% The newest sources can be found below
+%%
+%% https://github.com/latex3/latex2e/required/latex-lab
+%%
+%% where one can also log issues in case there are any.
+%%
+%%
+%% File: latex-lab-marginpar.dtx
+%%
+\def\ltlabmarginpardate{2024-02-12}
+\def\ltlabmarginparversion{0.85b}
+
+\ProvidesFile{marginpar-latex-lab-testphase.ltx}
+ [\ltlabmarginpardate\space v\ltlabmarginparversion\space
+ Changes related to the tagging of the margin notes]
+
+\RequirePackage{latex-lab-testphase-marginpar}
+
+\endinput
+%%
+%% End of file `marginpar-latex-lab-testphase.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
index e309b479ed1..0cf1da13360 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
@@ -32,7 +32,8 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project
+%% File: latex-lab-minipage.dtx
+%%
\def\ltlabminipagedate{2023-10-30}
\def\ltlabminipageversion{0.81c}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
index 015487e4396..915a065c5e5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
@@ -32,7 +32,7 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2023 Frank Mittelbach
+%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
\def\ltlabneworIdate{2023-07-20}
\def\ltlabneworIversion{0.85a}
\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx
index 2f7a38ef142..c782abde3ad 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx
@@ -36,7 +36,7 @@
\ProvidesFile{phase-III-latex-lab-testphase.ltx}
- [2023-07-20 v0.1b latex-lab wrapper phase-III]
+ [2024-02-12 v0.1c latex-lab wrapper phase-III]
\input{phase-II-latex-lab-testphase.ltx}
\IfFormatAtLeastTF{2023-06-01}
{
@@ -48,6 +48,7 @@
\RequirePackage{latex-lab-testphase-float}
\RequirePackage{latex-lab-testphase-bib}
\RequirePackage{latex-lab-testphase-text}
+ \RequirePackage{latex-lab-testphase-marginpar}
}
{\PackageWarning{latex-lab}{Testphase III needs newer format}{}}
\endinput
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
index bf39e9949f7..5cd6edae269 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
@@ -32,9 +32,9 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project
-\def\ltlabsecdate{2023-10-16}
-\def\ltlabsecversion{0.84b}
+%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
+\def\ltlabsecdate{2024-02-12}
+\def\ltlabsecversion{0.84c}
\ProvidesFile{sec-latex-lab-testphase.ltx}
[\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
index 850f3ffa110..5aaec815cb0 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
@@ -32,12 +32,13 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabtbldate{2023-10-30}
-\def\ltlabtblversion{0.85d}
+%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
+\def\ltlabtbldate{2024-02-07}
+\def\ltlabtblversion{0.85k}
\ProvidesFile{table-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
\RequirePackage{latex-lab-testphase-table}
+
\endinput
%%
%% End of file `table-latex-lab-testphase.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
new file mode 100644
index 00000000000..1ad0f327a79
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
@@ -0,0 +1,44 @@
+%%
+%% This is file `tabular-latex-lab-testphase.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latex-lab-table.dtx (with options: `latex-lab-alias')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2021-2023 LaTeX Project
+%%
+%% This file was generated from file(s) of the `LaTeX-lab Bundle'.
+%% ------------------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+%% without such generated files.
+%%
+%% The newest sources can be found below
+%%
+%% https://github.com/latex3/latex2e/required/latex-lab
+%%
+%% where one can also log issues in case there are any.
+%%
+%%
+%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
+\def\ltlabtbldate{2024-02-07}
+\def\ltlabtblversion{0.85k}
+
+\ProvidesFile{tabular-latex-lab-testphase.ltx}
+ [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular]
+\RequirePackage{latex-lab-testphase-table}
+\endinput
+%%
+%% End of file `tabular-latex-lab-testphase.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def
index ac71752ca07..89e4e1e0f87 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def
@@ -6,7 +6,8 @@
%%
%% latex-lab-namespace.dtx (with options: `ns-latex-lab')
%%
-%% File: latex-lab-namespace.dtx (C) Copyright 2023 LaTeX Project
+%% File: latex-lab-namespace.dtx
+%%
%% \ProvidesExplFile {tagpdf-ns-latex-lab.def} {2023-09-04} {0.8}
%% {latex} {https://www.latex-project.org/ns/lab/2022}{}
title, Title, pdf2,
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
index 59d30103ae9..2615850378c 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
@@ -32,7 +32,7 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-text.dtx (C) Copyright 2023 LaTeX Project
+%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
\def\ltlabtextdate{2023-07-20}
\def\ltlabtextversion{0.85a}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx
new file mode 100644
index 00000000000..17f603db23e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx
@@ -0,0 +1,49 @@
+%%
+%% This is file `title-latex-lab-testphase.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% latex-lab-title.dtx (with options: `latex-lab')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2021-2023 LaTeX Project
+%%
+%% This file was generated from file(s) of the `LaTeX-lab Bundle'.
+%% ------------------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+%% without such generated files.
+%%
+%% The newest sources can be found below
+%%
+%% https://github.com/latex3/latex2e/required/latex-lab
+%%
+%% where one can also log issues in case there are any.
+%%
+%%
+%% File: latex-lab-title.dtx (C) Copyright 2023-2024 LaTeX Project
+\def\ltlabtitledate{2024-02-09}
+\def\ltlabtitleversion{0.85c}
+
+
+
+\ProvidesFile{title-latex-lab-testphase.ltx}
+ [\ltlabtitledate\space v\ltlabtitleversion\space
+ Changes related to the tagging of the title]
+
+\RequirePackage{latex-lab-testphase-title}
+
+\endinput
+%%
+%% End of file `title-latex-lab-testphase.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
index 1d7e70c5d79..8b2c05d329c 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
@@ -32,7 +32,7 @@
%% where one can also log issues in case there are any.
%%
%%
-%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtocdate{2023-10-16}
\def\ltlabtocversion{0.85b}
\ProvidesFile{toc-latex-lab-testphase.ltx}
diff --git a/Master/texmf-dist/tex/latex-dev/tools/.tex b/Master/texmf-dist/tex/latex-dev/tools/.tex
index f3f759f1180..ff0d77e6fc4 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty
index 823f3ffa25c..2a487eac7e9 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/array-2023-11-01.sty b/Master/texmf-dist/tex/latex-dev/tools/array-2023-11-01.sty
new file mode 100644
index 00000000000..cd6eee6a0fc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/tools/array-2023-11-01.sty
@@ -0,0 +1,375 @@
+%%
+%% This is file `array.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% array.dtx (with options: `package,ncols')
+%%
+%% This is a generated file.
+%%
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs/
+%% (but please observe conditions on bug reports sent to that address!)
+%%
+%%
+%% Copyright (C) 1993-2023
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%%
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%% Package `array' to use with LaTeX 2e
+%% Copyright (C) 1989-1998 Frank Mittelbach, all rights reserved.
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty}
+\DeclareRelease{v2.4}{2020-02-10}{array-2020-02-10.sty}
+\DeclareCurrentRelease{}{2020-10-01}
+
+\ProvidesPackage{array}
+ [2023/10/16 v2.5g Tabular extension package (FMi)]
+%%
+
+\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar l\@ne \else
+ \if \@nextchar r\tw@ \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextchar b5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+\def\@xexpast#1*#2#3#4\@@{%
+ \@tempcnta #2
+ \toks@={#1}\@temptokena={#3}%
+ \let\the@toksz\relax \let\the@toks\relax
+ \def\@tempa{\the@toksz}%
+ \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
+ {\edef\@tempa{\@tempa\the@toks}\advance \@tempcnta \m@ne}%
+ \let \@tempb \@xexpast \else
+ \let \@tempb \@xexnoop \fi
+ \def\the@toksz{\the\toks@}\def\the@toks{\the\@temptokena}%
+ \edef\@tempa{\@tempa}%
+ \expandafter \@tempb \@tempa #4\@@}
+\def\prepnext@tok{\advance \count@ \@ne
+ \toks\count@{}}
+\def\save@decl{\toks\count@ \expandafter{\@nextchar}}
+\def\insert@column{%
+ \the@toks \the \@tempcnta
+ \ignorespaces \@sharp \unskip
+ \the@toks \the \count@ \relax}
+\newdimen\col@sep
+\def\@acol{\@addtopreamble{\hskip\col@sep}}
+\def\@classx{%
+ \ifcase \@lastchclass
+ \@acolampacol \or
+ \@addamp \@acol \or
+ \@acolampacol \or
+ \or
+ \@acol \@firstampfalse \or
+ \@addamp
+ \fi}
+\def\@classz{\@classx
+ \@tempcnta \count@
+ \prepnext@tok
+ \@addtopreamble{\ifcase \@chnum
+ \hfil
+ \hskip1sp%
+ \d@llarbegin
+ \insert@column
+ \d@llarend \do@row@strut \hfil \or
+ \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or
+ \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or
+ \setbox\ar@mcellbox\vbox
+ \@startpbox{\@nextchar}\insert@column \@endpbox
+ \ar@align@mcell
+ \do@row@strut \or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox\do@row@strut \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox\do@row@strut
+ \fi}\prepnext@tok}
+
+\newbox\ar@mcellbox
+\def\ar@align@mcell{%
+ \ifdim \ht\ar@mcellbox > \ht\strutbox
+ \begingroup
+ \dimen@\ht\ar@mcellbox
+ \advance\dimen@-\ht\@arstrutbox
+ \advance\dimen@\baselineskip
+ \lower.5\dimen@\box\ar@mcellbox
+ \endgroup
+ \else % assume one line and align at baseline
+ \box\ar@mcellbox
+ \fi}
+
+\def\@arrayrule{\@addtopreamble \vline}
+\def\@classvii{\ifnum \@lastchclass = \thr@@
+ \@preamerr \thr@@ \fi}
+\def\@classvi{\ifcase \@lastchclass
+ \@acol \or
+ \@addtopreamble{\hskip \doublerulesep}\or
+ \@acol \or
+ \@classvii
+ \fi}
+\def\@classii{\advance \count@ \m@ne
+ \save@decl\prepnext@tok}
+\def\@classi{\@classvi
+ \ifcase \@chnum \@arrayrule \or
+ \@classv \fi}
+\def\@startpbox#1{\bgroup
+ \color@begingroup
+ \setlength\hsize{#1}\@arrayparboxrestore
+ \everypar{%
+ \vrule \@height \ht\@arstrutbox \@width \z@
+ \everypar{}}%
+ }
+\def\@endpbox{\@finalstrut\@arstrutbox \par \color@endgroup \egroup\hfil}
+\def\@array[#1]#2{%
+ \@tempdima \ht \strutbox
+ \advance \@tempdima by\extrarowheight
+ \setbox \@arstrutbox \hbox{\vrule
+ \@height \arraystretch \@tempdima
+ \@depth \arraystretch \dp \strutbox
+ \@width \z@}%
+ \begingroup
+ \@mkpream{#2}%
+ \xdef\@preamble{\noexpand \ialign \@halignto
+ \bgroup \@arstrut \@preamble
+ \tabskip \z@ \cr}%
+ \endgroup
+ \@arrayleft
+ \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+ \bgroup
+ \let \@sharp ##\let \protect \relax
+ \lineskip \z@
+ \baselineskip \z@
+ \m@th
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+\def\arraybackslash{\let\\\tabularnewline}
+\newdimen \extrarowheight
+\extrarowheight=0pt
+\def\@arstrut{\unhcopy\@arstrutbox}
+\protected\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
+ \@ifstar \@xarraycr \@xarraycr}
+\def\@xarraycr{\@ifnextchar [%
+ \@argarraycr {\ifnum 0=`{}\fi\cr}}
+\def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
+ \expandafter\@xargarraycr\else
+ \expandafter\@yargarraycr\fi{#1}}
+\def\@xargarraycr#1{\unskip\gdef\do@row@strut
+ {\@tempdima #1\advance\@tempdima \dp\@arstrutbox
+ \vrule \@depth\@tempdima \@width\z@\global\let\do@row@strut\relax}%
+ \ifnum\@multicnt >\z@ \do@row@strut \fi
+ \cr}
+\let\do@row@strut\relax
+\long\def\multicolumn#1#2#3{%
+ \multispan{#1}\begingroup
+ \def\@addamp{\if@firstamp \@firstampfalse \else
+ \@preamerr 5\fi}%
+ \@mkpream{#2}\@addtopreamble\@empty
+ \endgroup
+ \def\@sharp{#3}%
+ \@arstrut \@preamble
+ \null
+ \ignorespaces}
+\let\d@llarbegin\begingroup
+\let\d@llarend\endgroup
+\def\array{\col@sep\arraycolsep
+ \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}%
+ \@tabarray}
+\def\tabular{\def\@halignto{}\@tabular}
+\expandafter\def\csname tabular*\endcsname#1{%
+ \setlength\dimen@{#1}%
+ \edef\@halignto{to\the\dimen@}\@tabular}
+\def\@tabular{%
+ \leavevmode
+ \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
+ \let\d@llarend\endgroup
+ \@tabarray}
+\def\endtabular{\endarray\m@th $\egroup}
+\expandafter\let\csname endtabular*\endcsname=\endtabular
+\let\@ampacol=\relax \let\@expast=\relax
+\let\@arrayclassiv=\relax \let\@arrayclassz=\relax
+\let\@tabclassiv=\relax \let\@tabclassz=\relax
+\let\@arrayacol=\relax \let\@tabacol=\relax
+\let\@tabularcr=\relax \let\@@endpbox=\relax
+\let\@argtabularcr=\relax \let\@xtabularcr=\relax
+\def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
+ \PackageError{array}{%
+ \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
+ Missing arg: token ignored\or %1
+ Empty preamble: `l' used\or %2
+ >\@tempd token ignored\or %3
+ <\@tempd changed to !{..}\or %4
+ Only one column-spec. allowed.\fi}\@ehc} %5
+\def\newcolumntype#1{%
+ \edef\NC@char{\string#1}%
+ \@ifundefined{NC@find@\NC@char}%
+ {\@tfor\next:=<>clrmbp@!|\do
+ {%
+ \if\expandafter\noexpand\next\NC@char
+ \PackageWarning{array}%
+ {Redefining primitive column \NC@char}\fi}%
+ \NC@list\expandafter{\the\NC@list\NC@do#1}}%
+ {\PackageWarning{array}{Column \NC@char\space is already defined}}%
+ \@namedef{NC@find@\NC@char}##1#1{\NC@{##1}}%
+ \@ifnextchar[{\newcol@{\NC@char}}{\newcol@{\NC@char}[0]}}
+\def\newcol@#1[#2]#3{\expandafter\@reargdef
+ \csname NC@rewrite@#1\endcsname[#2]{\NC@find#3}}
+\def\NC@#1{%
+ \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC@ifend}
+\def\NC@ifend{%
+ \ifx\next\relax
+ \else\@tempswatrue\expandafter\NC@rewrite\fi}
+\def\NC@do#1{%
+ \expandafter\let\expandafter\NC@rewrite
+ \csname NC@rewrite@\string#1\endcsname
+ \expandafter\let\expandafter\NC@find
+ \csname NC@find@\string#1\endcsname
+ \expandafter\@temptokena\expandafter{\expandafter}%
+ \expandafter\NC@find\the\@temptokena#1\relax}
+\def\showcols{{\def\NC@do##1{\let\NC@do\NC@show}\the\NC@list}}
+\def\NC@show#1{%
+ \typeout{Column #1\expandafter\expandafter\expandafter\NC@strip
+ \expandafter\meaning\csname NC@rewrite@#1\endcsname\@@}}
+\def\NC@strip#1:#2->#3 #4\@@{#2 -> #4}
+\newtoks\NC@list
+\newcolumntype{*}[2]{}
+\long\@namedef{NC@rewrite@*}#1#2{%
+ \count@#1\relax
+ \loop
+ \ifnum\count@>\z@
+ \advance\count@\m@ne
+ \@temptokena\expandafter{\the\@temptokena#2}%
+ \repeat
+ \NC@find}
+\let\@xexpast\relax
+\let\@xexnoop\relax
+\def\save@decl{\toks \count@ = \expandafter\expandafter\expandafter
+ {\expandafter\@nextchar\the\toks\count@}}
+\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
+ \let\@sharp\relax
+ \def\@startpbox##1{\unexpanded\expandafter{\expandafter
+ \@startpbox\expandafter{##1}}}\let\@endpbox\relax
+ \let\do@row@strut\relax
+ \let\ar@align@mcell\relax
+ \@temptokena{#1}\@tempswatrue
+ \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
+ \count@\m@ne
+ \let\the@toks\relax
+ \prepnext@tok
+ \expandafter \@tfor \expandafter \@nextchar
+ \expandafter :\expandafter =\the\@temptokena \do
+ {\@testpach
+ \ifcase \@chclass \@classz \or \@classi \or \@classii
+ \or \save@decl \or \or \@classv \or \@classvi
+ \or \@classvii \or \@classviii
+ \or \@classx
+ \or \@classx \fi
+ \@lastchclass\@chclass}%
+ \ifcase\@lastchclass
+ \@acol \or
+ \or
+ \@acol \or
+ \@preamerr \thr@@ \or
+ \@preamerr \tw@ \@addtopreamble\@sharp \or
+ \or
+ \else \@preamerr \@ne \fi
+ \def\the@toks{\the\toks}}
+\let\@classix\relax
+\def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
+ \@preamerr 4\@chclass 6 \@classvi \fi\fi}
+\def\@classv{\save@decl
+ \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
+ \prepnext@tok}
+\def\NC@ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
+ \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
+\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
+\let\@@array\@array
+\def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
+\let\@arrayleft\@empty
+\let\@arrayright\@empty
+\newlength{\extratabsurround}
+\setlength{\extratabsurround}{2pt}
+\newlength{\backup@length}
+\newcommand{\firsthline}{%
+ \multicolumn1{@{}c@{}}{%
+ \global\backup@length\ht\@arstrutbox
+ \global\advance\backup@length\dp\@arstrutbox
+ \global\advance\backup@length\arrayrulewidth
+ \raise\extratabsurround\copy\@arstrutbox
+ \kern-1sp%
+ }\\[-\backup@length]\hline
+}
+\newcommand{\lasthline}{\hline\multicolumn1{@{}c@{}}{%
+ \global\backup@length2\ht\@arstrutbox
+ \global\advance\backup@length2\dp\@arstrutbox
+ \global\advance\backup@length\arrayrulewidth
+ }\\[-\backup@length]%
+ \multicolumn1{@{}c@{}}{%
+ \lower\extratabsurround\copy\@arstrutbox
+ \kern-1sp%
+ }%
+}
+\CheckCommand*\@xhline{\ifx\reserved@a\hline
+ \vskip\doublerulesep
+ \vskip-\arrayrulewidth
+ \fi
+ \ifnum0=`{\fi}}
+\renewcommand*\@xhline{\ifx\reserved@a\hline
+ \vskip\doublerulesep
+ \fi
+ \ifnum0=`{\fi}}
+
+\newsavebox\ar@cellbox
+\newcolumntype{w}[2]{%
+ >{\begin{lrbox}\ar@cellbox\d@llarbegin}%
+ c%
+ <{\d@llarend \end{lrbox}%
+ \makebox[#2][#1]{\unhbox\ar@cellbox}}}
+
+\newcolumntype{W}[2]
+ {>{\begin{lrbox}\ar@cellbox\d@llarbegin}%
+ c%
+ <{\d@llarend\end{lrbox}%
+ \let\hss\hfil
+ \makebox[#2][#1]{\unhbox\ar@cellbox}}}
+\endinput
+%%
+%% End of file `array.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty
index cd6eee6a0fc..c2fc16814a8 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/array.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,13 +43,17 @@
\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty}
\DeclareRelease{v2.4}{2020-02-10}{array-2020-02-10.sty}
-\DeclareCurrentRelease{}{2020-10-01}
+\DeclareRelease{v2.5}{2023-11-01}{array-2023-11-01.sty}
+\DeclareCurrentRelease{}{2024-06-01}
+\NeedsTeXFormat{LaTeX2e}[2024/06/01]
\ProvidesPackage{array}
- [2023/10/16 v2.5g Tabular extension package (FMi)]
+ [2023/12/11 v2.6a Tabular extension package (FMi)]
%%
+\ExplSyntaxOn
\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
+\ExplSyntaxOff
\def\@testpach{\@chclass
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
\ifnum \@lastchclass=7 5 \else
@@ -70,11 +74,12 @@
\if \@nextchar >9 \else
10
\@chnum
- \if \@nextchar m\thr@@\else
+ \if \@nextchar m\thr@@ \else
\if \@nextchar p4 \else
\if \@nextchar b5 \else
\z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+\ExplSyntaxOn
\def\@xexpast#1*#2#3#4\@@{%
\@tempcnta #2
\toks@={#1}\@temptokena={#3}%
@@ -91,9 +96,27 @@
\toks\count@{}}
\def\save@decl{\toks\count@ \expandafter{\@nextchar}}
\def\insert@column{%
+ \UseTaggingSocket{tbl/cell/begin}%
\the@toks \the \@tempcnta
\ignorespaces \@sharp \unskip
- \the@toks \the \count@ \relax}
+ \the@toks \the \count@ \relax
+ \UseTaggingSocket{tbl/cell/end}%
+}
+\def\insert@pcolumn{%
+ \UseTaggingSocket{tbl/pcell/begin}%
+ \the@toks \the \@tempcnta
+ \ignorespaces \@sharp \unskip
+ \the@toks \the \count@ \relax
+ \UseTaggingSocket{tbl/pcell/end}%
+}
+\def\@addamp {
+ \if@firstamp
+ \@firstampfalse
+ \else
+ \edef\@preamble{\@preamble &
+ \noexpand\tbl_update_cell_data: }
+ \fi
+}
\newdimen\col@sep
\def\@acol{\@addtopreamble{\hskip\col@sep}}
\def\@classx{%
@@ -117,11 +140,11 @@
\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or
\hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or
\setbox\ar@mcellbox\vbox
- \@startpbox{\@nextchar}\insert@column \@endpbox
+ \@startpbox{\@nextchar}\insert@pcolumn \@endpbox
\ar@align@mcell
\do@row@strut \or
- \vtop \@startpbox{\@nextchar}\insert@column \@endpbox\do@row@strut \or
- \vbox \@startpbox{\@nextchar}\insert@column \@endpbox\do@row@strut
+ \vtop \@startpbox{\@nextchar}\insert@pcolumn \@endpbox\do@row@strut \or
+ \vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox\do@row@strut
\fi}\prepnext@tok}
\newbox\ar@mcellbox
@@ -159,18 +182,25 @@
\everypar{}}%
}
\def\@endpbox{\@finalstrut\@arstrutbox \par \color@endgroup \egroup\hfil}
-\def\@array[#1]#2{%
+\def\@array[#1]#2{
\@tempdima \ht \strutbox
\advance \@tempdima by\extrarowheight
\setbox \@arstrutbox \hbox{\vrule
\@height \arraystretch \@tempdima
\@depth \arraystretch \dp \strutbox
\@width \z@}%
+ \tbl_save_outer_table_cols:
\begingroup
\@mkpream{#2}%
- \xdef\@preamble{\noexpand \ialign \@halignto
- \bgroup \@arstrut \@preamble
- \tabskip \z@ \cr}%
+ \tbl_count_table_cols:
+ \xdef\@preamble{
+ \noexpand \ar@ialign
+ \@halignto
+ \bgroup \@arstrut
+ \UseTaggingSocket{tbl/row/begin}
+ \tbl_init_cell_data_for_row:
+ \@preamble
+ \tabskip \z@ \cr}
\endgroup
\@arrayleft
\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
@@ -178,14 +208,29 @@
\let \@sharp ##\let \protect \relax
\lineskip \z@
\baselineskip \z@
- \m@th
- \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+ \mathsurround \z@
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+ \UseTaggingSocket{tbl/init}
+ \@preamble
+}
+\def\ar@ialign{%
+ \tbl_init_cell_data_for_table:
+ \everycr{%
+ \noalign{%
+ \tbl_if_row_was_started:T { \UseTaggingSocket{tbl/row/end} }
+ \tbl_update_cell_data_for_next_row:
+ }%
+ }%
+ \tabskip\z@skip\halign}
\def\arraybackslash{\let\\\tabularnewline}
\newdimen \extrarowheight
\extrarowheight=0pt
\def\@arstrut{\unhcopy\@arstrutbox}
-\protected\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
+\protected\def\@arraycr {
+ \tbl_count_missing_cells:n {@arraycr}
+ \iffalse{\fi\ifnum 0=`}\fi
\@ifstar \@xarraycr \@xarraycr}
+
\def\@xarraycr{\@ifnextchar [%
\@argarraycr {\ifnum 0=`{}\fi\cr}}
\def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
@@ -199,10 +244,12 @@
\let\do@row@strut\relax
\long\def\multicolumn#1#2#3{%
\multispan{#1}\begingroup
+ \tbl_update_multicolumn_cell_data:n {#1}
\def\@addamp{\if@firstamp \@firstampfalse \else
\@preamerr 5\fi}%
\@mkpream{#2}\@addtopreamble\@empty
\endgroup
+ \UseTaggingSocket{tbl/colspan}{#1}%
\def\@sharp{#3}%
\@arstrut \@preamble
\null
@@ -218,10 +265,20 @@
\edef\@halignto{to\the\dimen@}\@tabular}
\def\@tabular{%
\leavevmode
+ \UseTaggingSocket{tbl/hmode/begin}%
\hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
\let\d@llarend\endgroup
\@tabarray}
-\def\endtabular{\endarray\m@th $\egroup}
+\def\endarray {
+ \tbl_crcr:n{endarray} \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \egroup
+ \@arrayright \gdef\@preamble{}%
+}
+\def\endtabular{\endarray\m@th $\egroup
+ \UseTaggingSocket{tbl/hmode/end}%
+}
\expandafter\let\csname endtabular*\endcsname=\endtabular
\let\@ampacol=\relax \let\@expast=\relax
\let\@arrayclassiv=\relax \let\@arrayclassz=\relax
@@ -237,6 +294,7 @@
>\@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@char{\string#1}%
\@ifundefined{NC@find@\NC@char}%
@@ -249,6 +307,7 @@
{\PackageWarning{array}{Column \NC@char\space is already defined}}%
\@namedef{NC@find@\NC@char}##1#1{\NC@{##1}}%
\@ifnextchar[{\newcol@{\NC@char}}{\newcol@{\NC@char}[0]}}
+\ExplSyntaxOn
\def\newcol@#1[#2]#3{\expandafter\@reargdef
\csname NC@rewrite@#1\endcsname[#2]{\NC@find#3}}
\def\NC@#1{%
@@ -265,9 +324,11 @@
\expandafter\NC@find\the\@temptokena#1\relax}
\def\showcols{{\def\NC@do##1{\let\NC@do\NC@show}\the\NC@list}}
\def\NC@show#1{%
- \typeout{Column #1\expandafter\expandafter\expandafter\NC@strip
+ \typeout{Column~ #1\expandafter\expandafter\expandafter\NC@strip
\expandafter\meaning\csname NC@rewrite@#1\endcsname\@@}}
+\ExplSyntaxOff
\def\NC@strip#1:#2->#3 #4\@@{#2 -> #4}
+\ExplSyntaxOn
\newtoks\NC@list
\newcolumntype{*}[2]{}
\long\@namedef{NC@rewrite@*}#1#2{%
@@ -282,6 +343,7 @@
\let\@xexnoop\relax
\def\save@decl{\toks \count@ = \expandafter\expandafter\expandafter
{\expandafter\@nextchar\the\toks\count@}}
+\ExplSyntaxOff % really oldstyle using \@tfor :=
\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
\let\@sharp\relax
\def\@startpbox##1{\unexpanded\expandafter{\expandafter
@@ -311,18 +373,18 @@
\or
\else \@preamerr \@ne \fi
\def\the@toks{\the\toks}}
+\ExplSyntaxOn
\let\@classix\relax
\def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
\@preamerr 4\@chclass 6 \@classvi \fi\fi}
\def\@classv{\save@decl
- \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@__tbl
\@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
\prepnext@tok}
-\def\NC@ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
+\def\NC@ecs#1\extracolsep#2#3\extracolsep#4\@@__tbl{\def\@tempa{#2}%
\ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
\let\@@array\@array
-\def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
\let\@arrayleft\@empty
\let\@arrayright\@empty
\newlength{\extratabsurround}
@@ -370,6 +432,7 @@
<{\d@llarend\end{lrbox}%
\let\hss\hfil
\makebox[#2][#1]{\unhbox\ar@cellbox}}}
+\ExplSyntaxOff
\endinput
%%
%% End of file `array.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/bm.sty b/Master/texmf-dist/tex/latex-dev/tools/bm.sty
index 8a136bd86d5..175a3c6e84e 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/bm.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/bm.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -34,13 +34,13 @@
%% The list of all files belonging to the LaTeX `Tools Bundle' is
%% given in the file `manifest.txt'.
%%
-%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 2021 2022
+%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 2021 2022 2023
%% David Carlisle Frank Mittelbach
%%
%% Development of this package was commissioned by Y&Y Inc.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bm}
- [2023/07/08 v1.2f Bold Symbol Support (DPC/FMi)]
+ [2023/12/19 v1.2f Bold Symbol Support (DPC/FMi)]
\DeclareOption{nopmb}{\let\bm@pmb@\@firstofone}
\DeclareOption{warn}{\def\bm@info{\PackageWarningNoLine{bm}}}
\DeclareOption{info}{\def\bm@info#1{\PackageInfo{bm}{#1\@gobble}}}
diff --git a/Master/texmf-dist/tex/latex-dev/tools/calc.sty b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
index d36e1a57ba6..42526027853 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/calc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty
index dccfaac71cb..552e282aa81 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/delarray.sty b/Master/texmf-dist/tex/latex-dev/tools/delarray.sty
index 7f98e7ca54d..a5b7f5c43fe 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/delarray.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/delarray.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/e.tex b/Master/texmf-dist/tex/latex-dev/tools/e.tex
index f527cdda628..987b7fc8fcf 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/e.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/e.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty
index 31a7b6d8d11..189b630df7d 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty
index 7795c1b0da2..781e333f1e5 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex
index 4ea37210957..8c1671492fd 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty
index fbae2b7949a..06d26677fbc 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/h.tex b/Master/texmf-dist/tex/latex-dev/tools/h.tex
index c7af478cf4a..e17174333b4 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/h.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/h.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/hhline.sty b/Master/texmf-dist/tex/latex-dev/tools/hhline.sty
index 97bb952b645..e4fb937acb8 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/hhline.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/hhline.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty
index be715f3d89b..68ba4564107 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/layout.sty b/Master/texmf-dist/tex/latex-dev/tools/layout.sty
index 485dd89fac4..33d9bd36333 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/layout.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/layout.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
index 0da756ace51..fabcf42aa8d 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2023-11-01 v4.19 Multi-page Table package (DPC)]
+ [2023-12-16 v4.19 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -99,10 +99,16 @@
\if@twocolumn
\LT@err{longtable not in 1-column mode}\@ehc
\fi
+ \UseTaggingSocket{tbl/vmode/begin}%
\begingroup
\@ifnextchar[\LT@array{\LT@array[x]}}
+\ExplSyntaxOn
\def\LT@array[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
+ \UseTaggingSocket{tbl/init}
+ \@kernel@refstepcounter{table}\stepcounter{LT@tables}
+ \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+ \tbl_gzero_row_count:
+ \UseTaggingSocket{tbl/longtable/init}
\if l#1%
\LTleft\z@ \LTright\fill
\else\if r#1%
@@ -116,7 +122,8 @@
\def\@tabarray{%
\let\hline\LT@@hl
\LT@@tabarray}%
- \let\\\LT@tabularcr\let\tabularnewline\\%
+ \let\\\LT@tabularcr
+ \let\tabularnewline\\%
\def\newpage{\noalign{\break}}%
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
@@ -142,19 +149,41 @@
\let\@sharp##\let\protect\relax
\begingroup
\@mkpream{#2}%
+ \tbl_count_table_cols:
\xdef\LT@bchunk{%
+ \tbl_inbetween_rows:
\global\advance\c@LT@chunks\@ne
\global\LT@rows\z@\setbox\z@\vbox\bgroup
\LT@setprevdepth
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+ \tabskip\z@ \@arstrut
+ \UseTaggingSocket{tbl/row/begin}%
+ \tbl_init_cell_data_for_row:
+ \@preamble \tabskip\LTright \cr}%
\endgroup
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
\LT@make@row
\m@th\let\par\@empty
- \everycr{}\lineskip\z@\baselineskip\z@
+ \everycr{%
+ \noalign{%
+ \__tbl_trace:n {--longtable-->~chunk~row:~ \the\LT@rows \space
+ row:~ \the\g__tbl_row_int \space
+ column:~ \the\g__tbl_col_int
+ }
+ \tbl_if_row_was_started:T
+ {
+ \UseTaggingSocket{tbl/row/end}
+ \tbl_inbetween_rows:
+ }
+ \int_compare:nNnT \LT@rows < \LTchunksize
+ { \tbl_gincr_row_count: } % next is row about to start
+ }%
+ }%
+ \lineskip\z@\baselineskip\z@
\LT@bchunk}
+\ExplSyntaxOff
\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
+\ExplSyntaxOn
\def\LT@start{%
\let\LT@start\endgraf
\endgraf\penalty\z@\vskip\LTpre\endgraf
@@ -184,18 +213,23 @@
\else
\ifdim\pageshrink>\z@\pageshrink\z@\fi
\fi
- \global\@colroom\@colht
+ \global\@colroom\@colht
\ifvoid\LT@foot\else
\global\advance\vsize-\ht\LT@foot
\global\advance\@colroom-\ht\LT@foot
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
+ \MakeLinkTarget{table}
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
+ \UseTaggingSocket{tbl/longtable/head}
\output{\LT@output}}
+\ExplSyntaxOff
+\ExplSyntaxOn
\def\endlongtable{%
- \crcr
+ \tbl_crcr:n {endlongtable}
\noalign{%
+ \UseTaggingSocket{tbl/longtable/finalize}
\let\LT@entry\LT@entry@chop
\xdef\LT@save@row{\LT@save@row}}%
\LT@echunk
@@ -210,8 +244,8 @@
\fi
\ifx\LT@save@row\LT@@save@row
\else
- \LT@warn{Column \@width s have changed\MessageBreak
- in table \thetable}%
+ \LT@warn{Column~ widths~ have~ changed\MessageBreak
+ in~ table~ \thetable}%
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
@@ -223,7 +257,10 @@
\endgroup
\global\@mparbottom\z@
\endgraf\penalty\z@\addvspace\LTpost
- \ifvoid\footins\else\insert\footins{}\fi}
+ \ifvoid\footins\else\insert\footins{}\fi
+ \UseTaggingSocket{tbl/vmode/end}%
+}
+\ExplSyntaxOff
\def\LT@nofcols#1&{%
\futurelet\@let@token\LT@n@fcols}
\def\LT@n@fcols{%
@@ -241,9 +278,11 @@
{\LT@t@bularcr}}
\let\LT@crcr\crcr
\let\LT@setprevdepth\relax
+\ExplSyntaxOn
\def\LT@t@bularcr{%
\global\advance\LT@rows\@ne
\ifnum\LT@rows=\LTchunksize
+ \tbl_count_missing_cells:n {echunk}
\gdef\LT@setprevdepth{%
\prevdepth\z@
\global\let\LT@setprevdepth\relax}%
@@ -252,6 +291,7 @@
\ifnum0=`{}\fi
\expandafter\LT@LL@FM@cr
\fi}
+\ExplSyntaxOff
\def\LT@xtabularcr{%
\@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
\def\LT@ntabularcr{%
@@ -370,6 +410,7 @@
\noalign{\ifnum0=`}\fi
\penalty\@M
\futurelet\@let@token\LT@@hline}
+\ExplSyntaxOn
\def\LT@@hline{%
\ifx\@let@token\hline
\global\let\@gtempa\@gobble
@@ -381,11 +422,16 @@
\ifnum0=`{\fi}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\LT@sep}%
+ \noalign{
+ \tbl_gdecr_row_count:
+ \LT@sep}
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\penalty\@M}%
+ \noalign{
+ \tbl_gdecr_row_count:
+ \penalty\@M}
\@gtempa}
+\ExplSyntaxOff
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
@@ -411,10 +457,11 @@
\fi
\endgraf\vskip\baselineskip}%
\hss}}}
+\ExplSyntaxOn
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
- \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \LT@err{floats~ and~ marginpars~ not~ allowed~ in~ a~ longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
@@ -430,24 +477,50 @@
\fi
\fi
\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi
+ \UseTaggingSocket{tbl/longtable/foot}
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \UseTaggingSocket{tbl/longtable/foot}
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
+\ExplSyntaxOff
+\ExplSyntaxOn
\def\LT@end@hd@ft#1{%
+ \tbl_if_row_was_started:TF
+ {
+ \tbl_count_missing_cells:n {head/foot}
+ \int_step_inline:nn
+ { \LT@rows + 1 }
+ {
+ \seq_gput_left:ce
+ {g__tbl_\cs_to_str:N #1 _rows_seq }
+ { \int_eval:n {\g__tbl_row_int + 1 - ##1 } }
+ }
+ \int_gset:Nn \LT@rows { \LTchunksize }
+ }
+
+ {
+ \crcr
+ \noalign{
+ \tbl_gdecr_row_count: % undo the increment
+ \int_gset:Nn \LT@rows { \LTchunksize }
+ }
+ }
\LT@echunk
\ifx\LT@start\endgraf
\LT@err
- {Longtable head or foot not at start of table}%
- {Increase LTchunksize}%
+ {Longtable~ head~ or~ foot~ not~ at~ start~ of~ table}%
+ {Increase~ LTchunksize}%
\fi
\setbox#1\box\z@
+ \__tbl_trace:n {-->>~ Saving~\noexpand#1}
\LT@get@widths
\LT@bchunk}
+\ExplSyntaxOff
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
\def\endhead{\LT@end@hd@ft\LT@head}
\def\endfoot{\LT@end@hd@ft\LT@foot}
@@ -472,6 +545,12 @@
\long\def\LT@p@ftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
+\ExplSyntaxOn
+ \seq_new:N \g__tbl_LT@firsthead_rows_seq
+ \seq_new:N \g__tbl_LT@head_rows_seq
+ \seq_new:N \g__tbl_LT@lastfoot_rows_seq
+ \seq_new:N \g__tbl_LT@foot_rows_seq
+\ExplSyntaxOff
\endinput
%%
%% End of file `longtable.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
index 4b97a784f51..37125021618 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -108,8 +108,7 @@
\DeclareCurrentRelease{}{2021-11-15}
\ProvidesPackage{multicol}
- [2023/03/30 v1.9f multicolumn formatting (FMi)]
-%%
+ [2024/01/29 v1.9g multicolumn formatting (FMi)]
\DeclareOption{twocolumn}
{\PackageWarning{multicol}{May not work
with the twocolumn option}}
@@ -904,10 +903,17 @@
\begingroup
\vbadness\@M
\setbox#1\copy#1%
- \setbox#1\vsplit#1to\maxdimen
+ \mc@get@all@box@marks #1%
\set@keptmarks
\endgroup
}
+\def\mc@get@all@box@marks #1{%
+ \setbox\@tempboxa\vsplit#1to\maxdimen
+ \ifvoid#1\else
+ \setbox#1\vbox{\unvbox\@tempboxa \unvbox#1}%
+ \mc@get@all@box@marks #1%
+ \fi
+}
\def\set@keptmarks{%
\ifx\kept@firstmark\@empty
\expandafter\gdef\expandafter
diff --git a/Master/texmf-dist/tex/latex-dev/tools/q.tex b/Master/texmf-dist/tex/latex-dev/tools/q.tex
index 6b478940cee..ef93425302e 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/q.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/q.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/r.tex b/Master/texmf-dist/tex/latex-dev/tools/r.tex
index cda1fb1951a..0031b8b56f8 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/r.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/r.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty b/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty
index e0ae4dadd37..1dec5d108fa 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/s.tex b/Master/texmf-dist/tex/latex-dev/tools/s.tex
index 30f05c6a854..67068e8f3ee 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/s.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/s.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty
index 6fbd004dfed..ddeb937bb21 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%% Source File: shellesc.dtx
-%% Copyright (C) 2015-2023
+%% Copyright (C) 2015-2024
%%
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty
index 090a8fb7875..1de125c5f92 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle
-%% File: showkeys.dtx Copyright (C) 2006-2019 David Carlisle, LaTeX Project
+%% File: showkeys.dtx Copyright (C) 2006-2023 David Carlisle, LaTeX Project
\NeedsTeXFormat{LaTeX2e}
\providecommand\DeclareRelease[3]{}
@@ -46,7 +46,7 @@
\DeclareCurrentRelease{}{2022-06-01}
\ProvidesPackage{showkeys}
- [2023/07/08 v3.19 Show cite and label keys (DPC, MH)]
+ [2023/12/16 v3.20 Show cite and label keys (DPC, MH)]
\DeclareOption{notref}{\let\SK@ref\@empty}
\DeclareOption{notcite}{\let\SK@cite\@empty}
\let\SK@refcolor\relax
@@ -90,7 +90,7 @@
\global\setbox\@labels\hbox{%
\llap{\SK@lab\SK@lab@relax
\kern\@totalleftmargin\kern\marginparsep}%
- \box\@labels}%
+ \unhbox\@labels}%
\else
\dimen@\prevdepth
\nointerlineskip
diff --git a/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty b/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty
index d50478a051a..8c5226d39bc 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty
index 4079dc9f63e..9cedcd02754 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,8 @@
%% File: tabularx.dtx Copyright (C) 1991-1999 2012 2014 2016 2017 David Carlisle
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tabularx}
- [2023/07/08 v2.11c `tabularx' package (DPC)]
+ [2023/12/11 v2.12a `tabularx' package (DPC)]
+\NeedsTeXFormat{LaTeX2e}[2024/06/01]
\DeclareOption{infoshow}{\AtEndOfPackage\tracingtabularx}
\DeclareOption{debugshow}{\AtEndOfPackage\tracingtabularx}
\ProcessOptions
@@ -96,6 +97,7 @@
\global\TX@cols\@ne
\TX@typeout@
{\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
+ \SuspendTagging {tabularx}%
\TX@trial{\def\NC@rewrite@X{%
\global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
\loop
@@ -103,6 +105,7 @@
\ifTX@
\TX@trial{}%
\repeat
+ \ResumeTagging {tabularx}%
{\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext
\csname tabular*\expandafter\endcsname\expandafter\TX@target
\the\toks@
@@ -167,7 +170,7 @@
\hfuzz\maxdimen
\let\hbadness\@tempcnta
\let\hfuzz\@tempdima
- \expandafter\tabular\the\toks@
+ \expandafter\tabular\the\toks@
\endtabular}%
\TX@ckpt
\TX@typeout@{\@spaces
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thb.sty b/Master/texmf-dist/tex/latex-dev/tools/thb.sty
index 60ffb1140b8..7d78943b773 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thc.sty b/Master/texmf-dist/tex/latex-dev/tools/thc.sty
index c8ddd8b16c3..7819ee2f44f 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
index f6db2854666..d05f9459ae2 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
index 5bbbe63e71a..565fe7344b0 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thm.sty b/Master/texmf-dist/tex/latex-dev/tools/thm.sty
index 7c98832f830..26474e89142 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thm.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thm.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
index 47babc61d69..eb8cdc7e396 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thp.sty b/Master/texmf-dist/tex/latex-dev/tools/thp.sty
index 951bc8fa14c..1fc19ff5a99 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thp.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thp.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/trace.sty b/Master/texmf-dist/tex/latex-dev/tools/trace.sty
index 659039e7fee..00d42ef7af4 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/trace.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/trace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/varioref.sty b/Master/texmf-dist/tex/latex-dev/tools/varioref.sty
index 5cf0a91c5ac..3500f89b922 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/varioref.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/varioref.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty b/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty
index 79defc23c06..069ed64286b 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -39,15 +39,17 @@
%% Copyright (C) 1989--2003 by Rainer Sch\"opf. All rights reserved.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{verbatim}
- [2022-07-02 v1.5u LaTeX2e package for verbatim enhancements]
+ [2024-01-22 v1.5x LaTeX2e package for verbatim enhancements]
\@ifundefined{verbatim@@@}{}{\endinput}
\newtoks\every@verbatim
\every@verbatim={}
\def\@makeother#1{\catcode`#112\relax}
\begingroup
- \catcode`\ =\active%
- \def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
- \expandafter\endgroup\x
+\catcode`\ =\active%
+\@ifl@t@r\fmtversion{2023-11-01}%
+{\def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp\@vobeytabs}}}%
+{\def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}}%
+\expandafter\endgroup\x
\def\@xobeysp{\leavevmode\penalty\@M\ }
\newtoks\verbatim@line
\def\verbatim@startline{\verbatim@line{}}
@@ -203,7 +205,7 @@
\fi
}
\def\verbatiminput{\begingroup
- \@ifstar{\verbatim@input\relax}%
+ \@ifstar{\verbatim@input{\@setupverbvisiblespace\@vobeyspaces}}%
{\verbatim@input{\frenchspacing\@vobeyspaces}}}
\def\verbatim@input#1#2{%
\IfFileExists {#2}{%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex b/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex
index 2bd3f6141fa..a5c40684c96 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/x.tex b/Master/texmf-dist/tex/latex-dev/tools/x.tex
index 1e903a79953..8c5e356a45b 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/x.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/x.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/xr.sty b/Master/texmf-dist/tex/latex-dev/tools/xr.sty
index ece5e0df2d0..3f7185039c2 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/xr.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/xr.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/xspace.sty b/Master/texmf-dist/tex/latex-dev/tools/xspace.sty
index e95d6a1b698..7c4532b2a07 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/xspace.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/xspace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%