From 0ac73e799c615f6509cd7f86227d602f16ca1a76 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 14 Feb 2024 21:31:06 +0000 Subject: latex-dev (14feb24) git-svn-id: svn://tug.org/texlive/trunk@69860 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex-dev/base/alltt.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/ansinew.def | 4 +- Master/texmf-dist/tex/latex-dev/base/applemac.def | 4 +- Master/texmf-dist/tex/latex-dev/base/article.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/article.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ascii.def | 4 +- .../texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty | 6 +- .../tex/latex-dev/base/atveryend-ltx.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/bezier.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/bk10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/book.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/book.sty | 2 +- .../tex/latex-dev/base/checkencodingsubset.tex | 419 ++++ Master/texmf-dist/tex/latex-dev/base/cp1250.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp1252.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp1257.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp437.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp437de.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp850.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp852.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp858.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp865.def | 4 +- Master/texmf-dist/tex/latex-dev/base/decmulti.def | 4 +- Master/texmf-dist/tex/latex-dev/base/doc.sty | 24 +- Master/texmf-dist/tex/latex-dev/base/docstrip.tex | 4 +- Master/texmf-dist/tex/latex-dev/base/exscale.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fix-cm.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/flafter.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fleqn.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/fleqn.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fltrace.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fontenc.sty | 8 +- Master/texmf-dist/tex/latex-dev/base/fontmath.cfg | 10 +- Master/texmf-dist/tex/latex-dev/base/fontmath.ltx | 10 +- Master/texmf-dist/tex/latex-dev/base/fonttext.cfg | 10 +- Master/texmf-dist/tex/latex-dev/base/fonttext.ltx | 10 +- Master/texmf-dist/tex/latex-dev/base/graphpap.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/hyphen.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/idx.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ifthen.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/inputenc.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/lablst.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/latex.ltx | 2095 ++++++++++++++++--- Master/texmf-dist/tex/latex-dev/base/latex209.def | 2 +- .../texmf-dist/tex/latex-dev/base/latexrelease.sty | 2145 ++++++++++++++++---- Master/texmf-dist/tex/latex-dev/base/latexsym.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/latin1.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin10.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin2.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin3.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin4.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin5.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin9.def | 4 +- Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/leqno.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/leqno.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/letter.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/letter.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ltluatex.lua | 2 +- Master/texmf-dist/tex/latex-dev/base/ltluatex.tex | 8 +- Master/texmf-dist/tex/latex-dev/base/ltnews.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/ltxguide.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/macce.def | 4 +- Master/texmf-dist/tex/latex-dev/base/makeidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/minimal.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/newlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/next.def | 4 +- Master/texmf-dist/tex/latex-dev/base/nfssfont.tex | 8 +- Master/texmf-dist/tex/latex-dev/base/oldlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmm.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/omllcmm.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/omscmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omscmsy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omsenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/omsenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/omxcmex.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/openbib.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/ot4enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/preload.cfg | 10 +- Master/texmf-dist/tex/latex-dev/base/preload.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/proc.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/proc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/report.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/report.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/sfonts.def | 4 +- Master/texmf-dist/tex/latex-dev/base/shortvrb.sty | 6 +- Master/texmf-dist/tex/latex-dev/base/showidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/size10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/slides.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/slides.def | 2 +- Master/texmf-dist/tex/latex-dev/base/slides.sty | 2 +- .../texmf-dist/tex/latex-dev/base/source2edoc.cls | 87 +- .../tex/latex-dev/base/structuredlog.sty | 6 +- Master/texmf-dist/tex/latex-dev/base/syntonly.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t2benc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/testpage.tex | 2 +- .../tex/latex-dev/base/textcomp-2018-08-11.sty | 3 +- Master/texmf-dist/tex/latex-dev/base/textcomp.sty | 3 +- Master/texmf-dist/tex/latex-dev/base/tracefnt.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/tuenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmssq.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ulasy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ullasy.fd | 4 +- Master/texmf-dist/tex/latex-dev/base/utf8-2018.def | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8.def | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/x2enc.dfu | 2 +- .../latex-lab/bib-latex-lab-testphase.ltx | 4 +- .../latex-lab/block-latex-lab-testphase.ltx | 6 +- .../latex-lab/documentmetadata-support.ltx | 6 + .../latex-lab/firstaid-latex-lab-testphase.ltx | 4 +- .../latex-lab/float-latex-lab-testphase.ltx | 4 +- .../tex/latex-dev/latex-lab/latex-lab-amsmath.ltx | 55 +- .../latex-lab/latex-lab-kernel-changes.sty | 16 +- .../tex/latex-dev/latex-lab/latex-lab-math.ltx | 719 +++++-- .../latex-dev/latex-lab/latex-lab-mathtools.ltx | 6 +- .../latex-lab/latex-lab-testphase-bib.sty | 8 +- .../latex-lab/latex-lab-testphase-block.sty | 82 +- .../latex-lab/latex-lab-testphase-firstaid.sty | 9 +- .../latex-lab/latex-lab-testphase-float.sty | 35 +- .../latex-lab/latex-lab-testphase-graphic.sty | 5 +- .../latex-lab/latex-lab-testphase-marginpar.sty | 109 + .../latex-lab/latex-lab-testphase-minipage.sty | 3 +- .../latex-lab/latex-lab-testphase-new-or-1.sty | 2 +- .../latex-lab/latex-lab-testphase-sec.sty | 11 +- .../latex-lab/latex-lab-testphase-table.sty | 743 ++----- .../latex-lab/latex-lab-testphase-text.sty | 2 +- .../latex-lab/latex-lab-testphase-title.sty | 300 +++ .../latex-lab/latex-lab-testphase-toc.sty | 22 +- .../latex-lab/marginpar-latex-lab-testphase.ltx | 48 + .../latex-lab/minipage-latex-lab-testphase.ltx | 3 +- .../latex-lab/new-or-1-latex-lab-testphase.ltx | 2 +- .../latex-lab/phase-III-latex-lab-testphase.ltx | 3 +- .../latex-lab/sec-latex-lab-testphase.ltx | 6 +- .../latex-lab/table-latex-lab-testphase.ltx | 7 +- .../latex-lab/tabular-latex-lab-testphase.ltx | 44 + .../latex-dev/latex-lab/tagpdf-ns-latex-lab.def | 3 +- .../latex-lab/text-latex-lab-testphase.ltx | 2 +- .../latex-lab/title-latex-lab-testphase.ltx | 49 + .../latex-lab/toc-latex-lab-testphase.ltx | 2 +- Master/texmf-dist/tex/latex-dev/tools/.tex | 2 +- .../texmf-dist/tex/latex-dev/tools/afterpage.sty | 2 +- .../tex/latex-dev/tools/array-2023-11-01.sty | 375 ++++ Master/texmf-dist/tex/latex-dev/tools/array.sty | 103 +- Master/texmf-dist/tex/latex-dev/tools/bm.sty | 6 +- Master/texmf-dist/tex/latex-dev/tools/calc.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/delarray.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/e.tex | 2 +- .../texmf-dist/tex/latex-dev/tools/enumerate.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/ftnright.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/h.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/hhline.sty | 2 +- .../texmf-dist/tex/latex-dev/tools/indentfirst.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/layout.sty | 2 +- .../texmf-dist/tex/latex-dev/tools/longtable.sty | 111 +- Master/texmf-dist/tex/latex-dev/tools/multicol.sty | 14 +- Master/texmf-dist/tex/latex-dev/tools/q.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/r.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/s.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/shellesc.sty | 4 +- Master/texmf-dist/tex/latex-dev/tools/showkeys.sty | 8 +- Master/texmf-dist/tex/latex-dev/tools/somedefs.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/tabularx.sty | 9 +- Master/texmf-dist/tex/latex-dev/tools/thb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thc.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thcb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/theorem.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thm.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thmb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thp.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/trace.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/varioref.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/verbatim.sty | 14 +- Master/texmf-dist/tex/latex-dev/tools/verbtest.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/x.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/xr.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/xspace.sty | 2 +- 234 files changed, 6404 insertions(+), 1868 deletions(-) create mode 100644 Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx create mode 100644 Master/texmf-dist/tex/latex-dev/tools/array-2023-11-01.sty (limited to 'Master/texmf-dist/tex') 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 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 @@ -6841,91 +6958,1317 @@ } } { - \msg_error:nnn { socket } { undeclared } {#1} + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_set_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ changed. } + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \__socket_debug_term:n + { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ + with~ '#2'~ in~ socket~ '#1'. } + \str_set:cn { l__socket_#1_plug_str } {#2} + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { \msg_error:nnn { socket } { undeclared } {#1} } +} +\cs_new_protected:Npn \socket_use:nw #1 { + \__socket_debug_term:n + { Socket~ '#1'~ containing~ plug~ + '\str_use:c { l__socket_#1_plug_str }'~ used. } + \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } +} +\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs +\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input +\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs +\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs + +\msg_new:nnnn { socket } { already-declared } + { Socket~ '#1'~ already~ declared! } + { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ + already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } + +\msg_new:nnnn { socket } { undeclared } + { Socket~ '#1'~ undeclared! } + { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } + +\msg_new:nnnn { socket } { not-top-level } + { Sockets~ can~ only~ be~ declared~ at~ top-level! } + { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ + group.~ Move~ the~ declaration~ to~ the~ top-level. } +\msg_new:nnnn { socket } { plug-already-declared } + { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } + { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ + is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ + layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } + +\msg_new:nnnn { socket } { plug-undeclared } + { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } + { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ + intend~ to~ assign~ it~ to~ a~ different~ socket? } +\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } +\cs_new_eq:NN \NewSocket \socket_new:nn +\cs_new_eq:NN \ShowSocket \socket_show:n +\cs_new_eq:NN \LogSocket \socket_log:n +\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn +\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn +\cs_new_eq:NN \UseSocket \socket_use:nw +\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: +\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 \socket_set_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } +\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} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } - { - \cs_generate_from_arg_count:cNnn - { __socket_#1_plug_#2:w } - \cs_set_protected:Npn - { \int_use:c { c__socket_#1_args_int } } - {#3} - \__socket_debug_term:n - { Plug~ '#2'~ for~ socket~ '#1'~ changed. } - } - { - \msg_error:nnnn { socket } { plug-undeclared } {#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} { - \msg_error:nnn { socket } { undeclared } {#1} + \__template_recover_keytypes:nn {#1} {#2} + \__template_show:Nnnn \l__template_keytypes_prop + {#1} {#2} { interface } } -} -\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + } +\cs_new_protected:Npn \__template_show_vars:nn #1#2 + { + \__template_execute_if_code_exist:nnT {#1} {#2} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } - { - \__socket_debug_term:n - { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ - with~ '#2'~ in~ socket~ '#1'. } - \str_set:cn { l__socket_#1_plug_str } {#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} } { - \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + \prop_map_function:NN \l__template_values_prop + \msg_show_item_unbraced:nn } } - { \msg_error:nnn { socket } { undeclared } {#1} } -} -\cs_new_protected:Npn \socket_use:nw #1 { - \__socket_debug_term:n - { Socket~ '#1'~ containing~ plug~ - '\str_use:c { l__socket_#1_plug_str }'~ used. } - \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } -} -\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs -\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input -\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs -\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs - -\msg_new:nnnn { socket } { already-declared } - { Socket~ '#1'~ already~ declared! } - { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ - already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } - -\msg_new:nnnn { socket } { undeclared } - { Socket~ '#1'~ undeclared! } - { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } - -\msg_new:nnnn { socket } { not-top-level } - { Sockets~ can~ only~ be~ declared~ at~ top-level! } - { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ - group.~ Move~ the~ declaration~ to~ the~ top-level. } -\msg_new:nnnn { socket } { plug-already-declared } - { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } - { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ - is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ - layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } - -\msg_new:nnnn { socket } { plug-undeclared } - { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } - { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ - intend~ to~ assign~ it~ to~ a~ different~ socket? } -\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } -\cs_new_eq:NN \NewSocket \socket_new:nn -\cs_new_eq:NN \ShowSocket \socket_show:n -\cs_new_eq:NN \LogSocket \socket_log:n -\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn -\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn -\cs_new_eq:NN \UseSocket \socket_use:nw -\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: -\cs_new_eq:NN \DebugSocketsOff \socket_debug_off: + } +\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 \\ + ~~''\\ + ~or~\\ + ~~'global~'.\\ + 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 = ~} \\ + but~LaTeX~did~not~find~any~. + } +\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:\\ + \ \ ~:~#1~{~~} \\ + but~LaTeX~did~not~find~an~. + } +\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:\\ + \ \ ~:~\\ + LaTeX~could~not~find~a~~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:\\ + \ \ ~=~ + } +\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~:~\\ + but~LaTeX~could~not~find~a~. + } +\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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 + { + \str_if_eq:nnF {#1} { m } + { + \str_if_eq:nnF {#1} { + } + { X } + } + } +\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn #1#2 { - \bool_if:NTF \l__cmd_grab_expandably_bool - { \__cmd_declare_cmd_code_expandable:Nnn } - { \__cmd_declare_cmd_code_aux:Nnn } + \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} @@ -8345,126 +8526,1357 @@ of this package available from CTAN} \typeout { Socket~ is~ not~ declared! } } } -\cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} -\cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } +\cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} +\cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} + } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_new_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \seq_put_right:cn { l__socket_#1_plugs_seq } {#2} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ declared. } + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_set_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ changed. } + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \__socket_debug_term:n + { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ + with~ '#2'~ in~ socket~ '#1'. } + \str_set:cn { l__socket_#1_plug_str } {#2} + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { \msg_error:nnn { socket } { undeclared } {#1} } +} +\cs_new_protected:Npn \socket_use:nw #1 { + \__socket_debug_term:n + { Socket~ '#1'~ containing~ plug~ + '\str_use:c { l__socket_#1_plug_str }'~ used. } + \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } +} +\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs +\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input +\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs +\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs + +\msg_new:nnnn { socket } { already-declared } + { Socket~ '#1'~ already~ declared! } + { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ + already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } + +\msg_new:nnnn { socket } { undeclared } + { Socket~ '#1'~ undeclared! } + { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } + +\msg_new:nnnn { socket } { not-top-level } + { Sockets~ can~ only~ be~ declared~ at~ top-level! } + { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ + group.~ Move~ the~ declaration~ to~ the~ top-level. } +\msg_new:nnnn { socket } { plug-already-declared } + { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } + { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ + is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ + layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } + +\msg_new:nnnn { socket } { plug-undeclared } + { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } + { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ + intend~ to~ assign~ it~ to~ a~ different~ socket? } +\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } +\cs_new_eq:NN \NewSocket \socket_new:nn +\cs_new_eq:NN \ShowSocket \socket_show:n +\cs_new_eq:NN \LogSocket \socket_log:n +\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn +\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn +\cs_new_eq:NN \UseSocket \socket_use:nw +\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: +\cs_new_eq:NN \DebugSocketsOff \socket_debug_off: +\IncludeInRelease{0000/00/00}{ltsockets} + {The~socket~management~(undo)}% + +\let \NewSocket \@undefined +\let \ShowSocket \@undefined +\let \LogSocket \@undefined + +\let \NewSocketPlug \@undefined +\let \AssignSocketPlug \@undefined +\let \UseSocket \@undefined + +\let \DebugSocketsOn \@undefined +\let \DebugSocketsOff \@undefined + +\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 { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \__template_key_to_value: + \tl_put_right:Ne \l__template_assignments_tl { - \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} + #1 \exp_not:V \l__template_var_tl + { \exp_not:V \l__template_value_tl } } + } + { + \tl_put_right:Ne \l__template_assignments_tl { - \cs_generate_from_arg_count:cNnn - { __socket_#1_plug_#2:w } - \cs_new_protected:Npn - { \int_use:c { c__socket_#1_args_int } } - {#3} - \seq_put_right:cn { l__socket_#1_plugs_seq } {#2} - \__socket_debug_term:n - { Plug~ '#2'~ for~ socket~ '#1'~ declared. } + #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 { - \msg_error:nnn { socket } { undeclared } {#1} + \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 \socket_set_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } +\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} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } - { - \cs_generate_from_arg_count:cNnn - { __socket_#1_plug_#2:w } - \cs_set_protected:Npn - { \int_use:c { c__socket_#1_args_int } } - {#3} - \__socket_debug_term:n - { Plug~ '#2'~ for~ socket~ '#1'~ changed. } - } - { - \msg_error:nnnn { socket } { plug-undeclared } {#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} { - \msg_error:nnn { socket } { undeclared } {#1} + \__template_recover_keytypes:nn {#1} {#2} + \__template_show:Nnnn \l__template_keytypes_prop + {#1} {#2} { interface } } -} -\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + } +\cs_new_protected:Npn \__template_show_vars:nn #1#2 + { + \__template_execute_if_code_exist:nnT {#1} {#2} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } - { - \__socket_debug_term:n - { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ - with~ '#2'~ in~ socket~ '#1'. } - \str_set:cn { l__socket_#1_plug_str } {#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} } { - \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + \prop_map_function:NN \l__template_values_prop + \msg_show_item_unbraced:nn } } - { \msg_error:nnn { socket } { undeclared } {#1} } -} -\cs_new_protected:Npn \socket_use:nw #1 { - \__socket_debug_term:n - { Socket~ '#1'~ containing~ plug~ - '\str_use:c { l__socket_#1_plug_str }'~ used. } - \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } -} -\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs -\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input -\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs -\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs - -\msg_new:nnnn { socket } { already-declared } - { Socket~ '#1'~ already~ declared! } - { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ - already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } - -\msg_new:nnnn { socket } { undeclared } - { Socket~ '#1'~ undeclared! } - { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } - -\msg_new:nnnn { socket } { not-top-level } - { Sockets~ can~ only~ be~ declared~ at~ top-level! } - { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ - group.~ Move~ the~ declaration~ to~ the~ top-level. } -\msg_new:nnnn { socket } { plug-already-declared } - { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } - { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ - is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ - layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } - -\msg_new:nnnn { socket } { plug-undeclared } - { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } - { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ - intend~ to~ assign~ it~ to~ a~ different~ socket? } -\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } -\cs_new_eq:NN \NewSocket \socket_new:nn -\cs_new_eq:NN \ShowSocket \socket_show:n -\cs_new_eq:NN \LogSocket \socket_log:n -\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn -\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn -\cs_new_eq:NN \UseSocket \socket_use:nw -\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: -\cs_new_eq:NN \DebugSocketsOff \socket_debug_off: -\IncludeInRelease{0000/00/00}{ltsockets} - {The~socket~management~(undo)}% - -\let \NewSocket \@undefined -\let \ShowSocket \@undefined -\let \LogSocket \@undefined - -\let \NewSocketPlug \@undefined -\let \AssignSocketPlug \@undefined -\let \UseSocket \@undefined - -\let \DebugSocketsOn \@undefined -\let \DebugSocketsOff \@undefined + } +\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 \\ + ~~''\\ + ~or~\\ + ~~'global~'.\\ + 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 = ~} \\ + but~LaTeX~did~not~find~any~. + } +\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:\\ + \ \ ~:~#1~{~~} \\ + but~LaTeX~did~not~find~an~. + } +\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:\\ + \ \ ~:~\\ + LaTeX~could~not~find~a~~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:\\ + \ \ ~=~ + } +\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~:~\\ + but~LaTeX~could~not~find~a~. + } +\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#2

#3

#4

#5

#6{ + \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{&}{&} + \str_replace_all:Nnn\l__math_tmpa_str{<}{<} + \iow_now:Ne \g__math_writedummy_iow + { + \iow_newline: +
+ \iow_newline: +

\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int

+ \iow_newline: +

\l__math_tmpa_str

+ \iow_newline: +

\l__math_content_hash_tl

+ \iow_newline: + + \iow_newline: +
+ \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 + { + + \iow_newline: + + } + \AssignSocketPlug {tagsupport/math/mathml/write}{On} + \AddToHook{enddocument/afterlastpage} + { + \iow_now:Nn \g__math_writedummy_iow {} + \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{} + { + \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{} + { + \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. %% -- cgit v1.2.3