summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/base
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-06-09 20:19:52 +0000
committerKarl Berry <karl@freefriends.org>2023-06-09 20:19:52 +0000
commitbea33e16f382ecf8188f0b613d553f8367f8d0d3 (patch)
treee88c683b3c53728bc08b661af5d42933f6614549 /Master/texmf-dist/tex/latex/base
parent31c338d4c559ed4bd789902a355068edc3bb9776 (diff)
latex2e (9jun23)
git-svn-id: svn://tug.org/texlive/trunk@67314 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/base')
-rw-r--r--Master/texmf-dist/tex/latex/base/alltt.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ansinew.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/applemac.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/article.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/article.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ascii.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty10
-rw-r--r--Master/texmf-dist/tex/latex/base/atveryend-ltx.sty6
-rw-r--r--Master/texmf-dist/tex/latex/base/bezier.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk10.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/bk11.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/bk12.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/book.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/book.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1250.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1252.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1257.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp437.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp437de.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp850.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp852.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp858.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp865.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/decmulti.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/doc.sty63
-rw-r--r--Master/texmf-dist/tex/latex/base/docstrip.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/exscale.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fix-cm.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fixltx2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fleqn.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/fleqn.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fltrace.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/graphpap.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/hyphen.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/idx.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/ifthen.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/inputenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/lablst.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/latex.ltx1204
-rw-r--r--Master/texmf-dist/tex/latex/base/latex209.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latexrelease.sty2098
-rw-r--r--Master/texmf-dist/tex/latex/base/latexsym.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin1.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin10.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin2.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin3.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin4.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin5.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin9.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/lcyenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/leqno.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/leqno.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/letter.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.lua3
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.tex4
-rw-r--r--Master/texmf-dist/tex/latex/base/ltnews.cls42
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxcheck.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxdoc.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxdoc.cls9
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxguide.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/ly1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/macce.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/makeidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/minimal.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/newlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/next.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/nfssfont.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/oldlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmm.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/omllcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmsy.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/omsenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/omslcmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omxcmex.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omxlcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/openbib.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmdh.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfib.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmvtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot2enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/preload.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/preload.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/proc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/proc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/report.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/report.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/sfonts.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/shortvrb.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/showidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/size10.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/size11.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/size12.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/structuredlog.sty6
-rw-r--r--Master/texmf-dist/tex/latex/base/syntonly.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmdh.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfib.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmvtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2aenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2benc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2cenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/testpage.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/textcomp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/tracefnt.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmvtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmssq.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmtt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/ulasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ullasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8-2018.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/x2enc.dfu2
158 files changed, 3122 insertions, 692 deletions
diff --git a/Master/texmf-dist/tex/latex/base/alltt.sty b/Master/texmf-dist/tex/latex/base/alltt.sty
index e79e0862641..c7409fe365a 100644
--- a/Master/texmf-dist/tex/latex/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex/base/alltt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ansinew.def b/Master/texmf-dist/tex/latex/base/ansinew.def
index c941e68cb5d..8d1d09ea85a 100644
--- a/Master/texmf-dist/tex/latex/base/ansinew.def
+++ b/Master/texmf-dist/tex/latex/base/ansinew.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/applemac.def b/Master/texmf-dist/tex/latex/base/applemac.def
index 3938259fa9c..3fbc4cff384 100644
--- a/Master/texmf-dist/tex/latex/base/applemac.def
+++ b/Master/texmf-dist/tex/latex/base/applemac.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/article.cls b/Master/texmf-dist/tex/latex/base/article.cls
index 1488c02e760..d5084603f5d 100644
--- a/Master/texmf-dist/tex/latex/base/article.cls
+++ b/Master/texmf-dist/tex/latex/base/article.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/article.sty b/Master/texmf-dist/tex/latex/base/article.sty
index c1f4f6c6070..cbd94b3df15 100644
--- a/Master/texmf-dist/tex/latex/base/article.sty
+++ b/Master/texmf-dist/tex/latex/base/article.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ascii.def b/Master/texmf-dist/tex/latex/base/ascii.def
index ae9b42af78f..86dbf872058 100644
--- a/Master/texmf-dist/tex/latex/base/ascii.def
+++ b/Master/texmf-dist/tex/latex/base/ascii.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
index e9fee034661..8bdc7c1b662 100644
--- a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,12 +42,12 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% Copyright (C) 2020-2022
-%% Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0m}
-\providecommand\ltshipoutdate{2022/08/26}
+\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/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
index 2a6db6d67d4..2f63091fb5d 100644
--- a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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.0n}
-\providecommand\ltfilehookdate{2022/08/18}
+\providecommand\ltfilehookversion{v1.0o}
+\providecommand\ltfilehookdate{2023/04/02}
\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/base/bezier.sty b/Master/texmf-dist/tex/latex/base/bezier.sty
index 91ac946ffd8..d786d454783 100644
--- a/Master/texmf-dist/tex/latex/base/bezier.sty
+++ b/Master/texmf-dist/tex/latex/base/bezier.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/bk10.clo b/Master/texmf-dist/tex/latex/base/bk10.clo
index 3befcaa3945..d0a27151f32 100644
--- a/Master/texmf-dist/tex/latex/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex/base/bk10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex/base/bk11.clo b/Master/texmf-dist/tex/latex/base/bk11.clo
index 5bec4cf1184..8fb3375e2ef 100644
--- a/Master/texmf-dist/tex/latex/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex/base/bk11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex/base/bk12.clo b/Master/texmf-dist/tex/latex/base/bk12.clo
index b38d1c7c590..73b7d496dce 100644
--- a/Master/texmf-dist/tex/latex/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex/base/bk12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex/base/book.cls b/Master/texmf-dist/tex/latex/base/book.cls
index 28a99524e79..18f0e8d59d1 100644
--- a/Master/texmf-dist/tex/latex/base/book.cls
+++ b/Master/texmf-dist/tex/latex/base/book.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/book.sty b/Master/texmf-dist/tex/latex/base/book.sty
index e52d7ae685f..86444d5aa97 100644
--- a/Master/texmf-dist/tex/latex/base/book.sty
+++ b/Master/texmf-dist/tex/latex/base/book.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp1250.def b/Master/texmf-dist/tex/latex/base/cp1250.def
index aee11b800c2..275eae0b384 100644
--- a/Master/texmf-dist/tex/latex/base/cp1250.def
+++ b/Master/texmf-dist/tex/latex/base/cp1250.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp1252.def b/Master/texmf-dist/tex/latex/base/cp1252.def
index c1d6ef2cec2..ed4ad38d00f 100644
--- a/Master/texmf-dist/tex/latex/base/cp1252.def
+++ b/Master/texmf-dist/tex/latex/base/cp1252.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp1257.def b/Master/texmf-dist/tex/latex/base/cp1257.def
index a959b5793a2..24018898d18 100644
--- a/Master/texmf-dist/tex/latex/base/cp1257.def
+++ b/Master/texmf-dist/tex/latex/base/cp1257.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp437.def b/Master/texmf-dist/tex/latex/base/cp437.def
index 730da2cd07f..a23ff74b70e 100644
--- a/Master/texmf-dist/tex/latex/base/cp437.def
+++ b/Master/texmf-dist/tex/latex/base/cp437.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp437de.def b/Master/texmf-dist/tex/latex/base/cp437de.def
index 124e89ede50..207223c1784 100644
--- a/Master/texmf-dist/tex/latex/base/cp437de.def
+++ b/Master/texmf-dist/tex/latex/base/cp437de.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp850.def b/Master/texmf-dist/tex/latex/base/cp850.def
index df640c78323..50d9a083a32 100644
--- a/Master/texmf-dist/tex/latex/base/cp850.def
+++ b/Master/texmf-dist/tex/latex/base/cp850.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp852.def b/Master/texmf-dist/tex/latex/base/cp852.def
index 6551253c681..d1a42292cfb 100644
--- a/Master/texmf-dist/tex/latex/base/cp852.def
+++ b/Master/texmf-dist/tex/latex/base/cp852.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp858.def b/Master/texmf-dist/tex/latex/base/cp858.def
index 99af92f4a52..6a4527b1152 100644
--- a/Master/texmf-dist/tex/latex/base/cp858.def
+++ b/Master/texmf-dist/tex/latex/base/cp858.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp865.def b/Master/texmf-dist/tex/latex/base/cp865.def
index dcae5746c73..1aeca6908f2 100644
--- a/Master/texmf-dist/tex/latex/base/cp865.def
+++ b/Master/texmf-dist/tex/latex/base/cp865.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/decmulti.def b/Master/texmf-dist/tex/latex/base/decmulti.def
index c9c88431531..2c7282aaba1 100644
--- a/Master/texmf-dist/tex/latex/base/decmulti.def
+++ b/Master/texmf-dist/tex/latex/base/decmulti.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/doc.sty b/Master/texmf-dist/tex/latex/base/doc.sty
index bbaa9a9937e..17ecafd6c6a 100644
--- a/Master/texmf-dist/tex/latex/base/doc.sty
+++ b/Master/texmf-dist/tex/latex/base/doc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -53,7 +53,7 @@
\DeclareCurrentRelease{v3}{2022-06-01}
\ProvidesPackage{doc}
- [2022/07/03 v3.0k
+ [2022/11/13 v3.0m
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
@@ -292,38 +292,28 @@
\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
\@setupverbvisiblespace
\MacroFont \@vobeyspaces \@sxverbatim}
-\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
- \leftskip\@totalleftmargin\rightskip\z@
- \parindent\z@\parfillskip\@flushglue\parskip\z@
- \@@par
- \@tempswafalse
- \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
- \penalty\interlinepenalty
+\def\@verbatim{\trivlist \item\relax
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin\rightskip\z@
+ \parindent\z@\parfillskip\@flushglue\parskip\z@
+ \language\l@nohyphenation
+ \@@par
+ \@tempswafalse
+ \def\par{%
+ \if@tempswa
+ \leavevmode \null \@@par\penalty\interlinepenalty
+ \else
+ \@tempswatrue
+ \ifhmode\@@par\penalty\interlinepenalty\fi
+ \fi
\check@percent}%
- \obeylines
- \let\do\do@noligs \verbatim@nolig@list
- \let\do\@makeother \dospecials}
+ \let\do\@makeother \dospecials
+ \obeylines \verbatim@font \@noligs
+ \everypar \expandafter{\the\everypar \unpenalty}%
+}
{\catcode`\%=12
\long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
\let\next=#1\fi \next}}
-\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
- \bgroup \let\do\do@noligs \verbatim@nolig@list
- \ttfamily \verb@eol@error \let\do\@makeother \dospecials
- \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
-\let\verb@balance@group\@empty
-\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
-\begingroup
- \obeylines%
- \gdef\verb@eol@error{\obeylines%
- \def^^M{\verb@egroup\@latex@error{%
- \noexpand\verb command ended by end of line}\@ehc}}%
-\endgroup
-\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
-\def\do@noligs#1{%
- \catcode`#1\active
- \begingroup
- \lccode`\~=`#1\relax
- \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
\newcount\macro@cnt \macro@cnt=0
\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
\begingroup
@@ -360,16 +350,11 @@
\let\next\macro@name
\else \let\next\short@macro \fi
\next}
-\begingroup
-\catcode`\&=12
-\gdef\short@macro#1{\begingroup
- \uccode`\&=\expandafter`\string#1%
- \uppercase{\def\x{\def\macro@namepart{&}}}%
- \expandafter\endgroup\x
+\def\short@macro#1{%
+ \edef\macro@namepart{\string#1}%
\maybe@index@short@macro\macro@namepart
\scan@allowedfalse#1%
\scan@allowedtrue }
-\endgroup
\def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
\futurelet\next\more@macroname}
\def\more@macroname{\ifcat\noexpand\next a%
@@ -447,7 +432,7 @@
}
\cs_set_eq:NN \maybe@index@macro \__doc_maybe_index:o
\cs_new:Npn \__doc_maybe_index_short:o #1 {
- \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+ \exp_args:No \__doc_maybe_index_aux:nN #1
\SpecialShortIndex
}
\cs_set_eq:NN \maybe@index@short@macro \__doc_maybe_index_short:o
@@ -479,7 +464,7 @@
{\cs_to_str:N \^^M } {\def\reserved@a{ \string \space \actualchar }
\def\reserved@b { \space }
\let\reserved@c \@empty }
- { } {\def\reserved@a{ \string \space \actualchar }
+ { ~ } {\def\reserved@a{ \string \space \actualchar }
\def\reserved@b { \space }
\let\reserved@c \@empty }
{\c_left_brace_str} { \def\reserved@a{ \bgroup \actualchar }
diff --git a/Master/texmf-dist/tex/latex/base/docstrip.tex b/Master/texmf-dist/tex/latex/base/docstrip.tex
index a04954ae4a8..fa6dbc7cc18 100644
--- a/Master/texmf-dist/tex/latex/base/docstrip.tex
+++ b/Master/texmf-dist/tex/latex/base/docstrip.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/exscale.sty b/Master/texmf-dist/tex/latex/base/exscale.sty
index 1863d30d4ca..6963e460dce 100644
--- a/Master/texmf-dist/tex/latex/base/exscale.sty
+++ b/Master/texmf-dist/tex/latex/base/exscale.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fix-cm.sty b/Master/texmf-dist/tex/latex/base/fix-cm.sty
index 2308c89ad89..a3b9cdb159d 100644
--- a/Master/texmf-dist/tex/latex/base/fix-cm.sty
+++ b/Master/texmf-dist/tex/latex/base/fix-cm.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fixltx2e.sty b/Master/texmf-dist/tex/latex/base/fixltx2e.sty
index d0f5fd64e07..6ad616e364a 100644
--- a/Master/texmf-dist/tex/latex/base/fixltx2e.sty
+++ b/Master/texmf-dist/tex/latex/base/fixltx2e.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/flafter.sty b/Master/texmf-dist/tex/latex/base/flafter.sty
index a20588cd7cc..1e63489fc05 100644
--- a/Master/texmf-dist/tex/latex/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex/base/flafter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fleqn.clo b/Master/texmf-dist/tex/latex/base/fleqn.clo
index d7e3559b77a..2c359bb5140 100644
--- a/Master/texmf-dist/tex/latex/base/fleqn.clo
+++ b/Master/texmf-dist/tex/latex/base/fleqn.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fleqn.sty b/Master/texmf-dist/tex/latex/base/fleqn.sty
index 95fc2382cd8..87a4373fcad 100644
--- a/Master/texmf-dist/tex/latex/base/fleqn.sty
+++ b/Master/texmf-dist/tex/latex/base/fleqn.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fltrace.sty b/Master/texmf-dist/tex/latex/base/fltrace.sty
index 1f6ccd47118..6b6c5d2b48e 100644
--- a/Master/texmf-dist/tex/latex/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex/base/fltrace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontenc.sty b/Master/texmf-dist/tex/latex/base/fontenc.sty
index d1aa2ccd41f..4e2ab3f175b 100644
--- a/Master/texmf-dist/tex/latex/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex/base/fontenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontmath.cfg b/Master/texmf-dist/tex/latex/base/fontmath.cfg
index 07c5e9da740..90df936090f 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex/base/fontmath.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontmath.ltx b/Master/texmf-dist/tex/latex/base/fontmath.ltx
index e0bf5b2b610..f7b757f2352 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex/base/fontmath.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fonttext.cfg b/Master/texmf-dist/tex/latex/base/fonttext.cfg
index 2d15d5b3516..5dfa252040f 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex/base/fonttext.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fonttext.ltx b/Master/texmf-dist/tex/latex/base/fonttext.ltx
index 5ec0a9b4292..5acce723ccf 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex/base/fonttext.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/graphpap.sty b/Master/texmf-dist/tex/latex/base/graphpap.sty
index f6163a85d5e..d13dd84d277 100644
--- a/Master/texmf-dist/tex/latex/base/graphpap.sty
+++ b/Master/texmf-dist/tex/latex/base/graphpap.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/hyphen.ltx b/Master/texmf-dist/tex/latex/base/hyphen.ltx
index e4e9fb40f8d..4a33216714a 100644
--- a/Master/texmf-dist/tex/latex/base/hyphen.ltx
+++ b/Master/texmf-dist/tex/latex/base/hyphen.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/idx.tex b/Master/texmf-dist/tex/latex/base/idx.tex
index bc0dd710218..04c8ef69591 100644
--- a/Master/texmf-dist/tex/latex/base/idx.tex
+++ b/Master/texmf-dist/tex/latex/base/idx.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2022
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ifthen.sty b/Master/texmf-dist/tex/latex/base/ifthen.sty
index d09c133511f..db0c04e05d0 100644
--- a/Master/texmf-dist/tex/latex/base/ifthen.sty
+++ b/Master/texmf-dist/tex/latex/base/ifthen.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/inputenc.sty b/Master/texmf-dist/tex/latex/base/inputenc.sty
index 22c61bdb9bb..f1861718935 100644
--- a/Master/texmf-dist/tex/latex/base/inputenc.sty
+++ b/Master/texmf-dist/tex/latex/base/inputenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/lablst.tex b/Master/texmf-dist/tex/latex/base/lablst.tex
index 0821b0e4f06..b0a3ac1ab60 100644
--- a/Master/texmf-dist/tex/latex/base/lablst.tex
+++ b/Master/texmf-dist/tex/latex/base/lablst.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2022
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/latex.ltx b/Master/texmf-dist/tex/latex/base/latex.ltx
index daf5ff1c8ef..d8c3df4c6d7 100644
--- a/Master/texmf-dist/tex/latex/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex/base/latex.ltx
@@ -61,7 +61,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -432,6 +432,7 @@
\def\extrafloats#1{%
\ifnum#1>\z@
\count@\numexpr\float@count-1\relax
+ \ifnum\count@<266 \ch@ck0\m@ne\insert\fi
\ch@ck0\count@\count
\ch@ck1\count@\dimen
\ch@ck2\count@\skip
@@ -440,8 +441,7 @@
\global\expandafter\e@alloc@chardef
\csname bx@\the\float@count\endcsname\float@count
\@cons\@freelist{\csname bx@\the\float@count\endcsname}%
-\expandafter
-\extrafloats\expandafter{\numexpr#1-1\relax}%
+\expandafter\extrafloats\expandafter{\the\numexpr#1-1\expandafter}%
\fi}%
\fi
\def\alloc@#1#2#3#4{\e@alloc#2#3{\count1#1}#4\float@count}
@@ -705,8 +705,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2022-11-01}
-\def\patch@level{1}
+ {2023-06-01}
+\def\patch@level{0}
\edef\development@branch@name{}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -732,19 +732,22 @@
\fi
\let\reserved@a\relax
\fi
+\newtoks\LaTeXReleaseInfo
+\everyjob\expandafter{\the\everyjob\the\LaTeXReleaseInfo}
+\let\show@release@info\typeout
\ifnum0\ifnum\patch@level=0 \ifx\development@branch@name\@empty 1\fi\fi>0 %
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion>}}
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion>}}
\immediate
\write16{\fmtname \space<\fmtversion>}
\else\ifnum\patch@level>0
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion> patch level \patch@level}}
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion> patch level \patch@level}}
\immediate
\write16{\fmtname\space <\fmtversion> patch level \patch@level}
\else
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion>
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion>
pre-release-\number-\patch@level\space
\ifx\development@branch@name\@undefined \else
\ifx\development@branch@name\@empty \else
@@ -1519,13 +1522,35 @@
\long\def\declare@commandcopy#1#2#3#4{%
\edef\reserved@a{\@expl@cs@to@str@@N#3}%
\@ifundefined\reserved@a{#1}{#2}%
- {\robust@command@act
- \@declarecommandcopylisthook#4%
- \declare@commandcopy@let{#3#4}}}
+ {\declare@commandcopy@do{#3}{#4}}}
+\long\def\declare@commandcopy@do#1#2{%
+ \robust@command@act
+ \@declarecommandcopylisthook#2%
+ \declare@commandcopy@let{#1#2}}
\def\@declarecommandcopylisthook{%
{\@if@DeclareRobustCommand \@copy@DeclareRobustCommand}%
{\@if@newcommand \@copy@newcommand}}
\long\def\declare@commandcopy@let#1#2{\let#1=#2\relax}
+\def\NewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstoftwo\@notdefinable}}
+\def\RenewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@latex@error{Environment \reserved@a\space undefined}\@ehc
+ \@firstofone}%
+ {\@firstofone}}
+\def\DeclareEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstofone}}
+\long\def\declare@environmentcopy#1#2#3#4{%
+ \edef\reserved@a{\@ifundefined{#3}{end#3}{#3}}%
+ \@ifundefined\reserved@a
+ {\def\reserved@a{#3}#1}%
+ {\def\reserved@a{#3}#2}%
+ {\ExpandArgs{cc}\declare@commandcopy@do{#3}{#4}%
+ \ExpandArgs{cc}\declare@commandcopy@do{end#3}{end#4}}}
\long\def\ShowCommand#1{%
\robust@command@act
\@showcommandlisthook#1%
@@ -1585,9 +1610,10 @@
\robust@command@chk@safe#1%
{\@if@newcommand#1%
{\@show@newcommand}%
- {\show}}%
- {\show}%
+ {\@show@macro}}%
+ {\@show@macro}%
#1}
+\let\@show@macro\show
\long\def\@if@newcommand#1{%
\edef\reserved@a{%
\noexpand\@protected@testopt
@@ -1615,13 +1641,59 @@
\typeout{->\@expl@cs@replacement@spec@@N#1.^^J}%
\expandafter\@show@newcommand@aux
\csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
- \expandafter{#1}}
-\long\def\@show@newcommand@aux#1#2{%
+ \expandafter{#1}\@show@tokens}
+\long\def\@show@newcommand@aux#1#2#3{%
\typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}%
- \edef\reserved@a{%
- default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
- \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}%
- \showtokens\expandafter\expandafter\expandafter{\expandafter\reserved@a}}
+ #3{default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
+ \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}}
+\long\def\@show@tokens#1{%
+ \edef\reserved@a{#1}%
+ \showtokens\expandafter
+ \expandafter\expandafter{\expandafter\reserved@a}}
+\def\ShowEnvironment#1{%
+ \expandafter\@show@environment\csname #1\endcsname}
+\long\def\@show@environment#1{%
+ \robust@command@act
+ \@showenvironmentlisthook#1%
+ \@show@normalenv#1}
+\def\@showenvironmentlisthook{%
+ {\@if@DeclareRobustCommand \@show@DeclareRobustCommand@env}%
+ {\@if@newcommand \@show@newcommand@env}}
+\long\def\@show@newcommand@env#1{%
+ \@show@environment@begin#1%
+ \expandafter\@show@newcommand@aux
+ \csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
+ \expandafter{#1}\@show@typeout
+ \@show@environment@end#1}
+\long\def\@show@DeclareRobustCommand@env#1{%
+ \@show@environment@begin#1%
+ \begingroup
+ \let\@show@tokens\@show@typeout
+ \let\@show@macro\@show@nonstop
+ \expandafter\show@kernel@robust@command
+ \csname\@expl@cs@to@str@@N#1 \endcsname
+ \endgroup
+ \@show@environment@end#1}
+\long\def\@show@environment@begin#1{%
+ \typeout{> \string\begin{\@expl@cs@to@str@@N#1}=environment:}%
+ \typeout{\@expl@cs@argument@spec@@N#1->%
+ \@expl@cs@replacement@spec@@N#1.^^J}}
+\long\def\@show@normalenv#1{%
+ \@show@environment@begin#1%
+ \@show@environment@end#1}
+\long\def\@show@environment@end#1{%
+ \expandafter\@show@environment@end@aux
+ \csname end\@expl@cs@to@str@@N#1\endcsname#1}
+\long\def\@show@environment@end@aux#1#2{%
+ \@show@tokens{\string\end{\@expl@cs@to@str@@N#2}%
+ \ifx\relax#1=undefined%
+ \else:^^J\@expl@cs@argument@spec@@N#1->%
+ \@expl@cs@replacement@spec@@N#1%
+ \fi}}
+\def\@show@nonstop#1{%
+ \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:^^J%
+ \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}}
+\def\@show@typeout#1{\typeout{> #1.^^J}}
\def\@ifundefined#1{%
\ifcsname#1\endcsname\@ifundefin@d@i\else\@ifundefin@d@ii\fi{#1}}
\long\def\@ifundefin@d@i#1\fi#2{\fi
@@ -1731,8 +1803,8 @@
\xdef#1{\the\toks@}%
\endgroup}
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.1a}
-\def\ltcmddate{2022-08-16}
+\def\ltcmdversion{v1.1e}
+\def\ltcmddate{2023-05-26}
\message{document commands,}
\ExplSyntaxOn
\tl_new:N \l__cmd_arg_spec_tl
@@ -2014,10 +2086,10 @@
\int_zero:N \l__cmd_current_arg_int
\__cmd_tl_mapthread_function:NNN \l__cmd_args_tl \l__cmd_defaults_tl
\__cmd_defaults_def:nn
- \cs_generate_from_arg_count:NNVo \__cmd_tmp:w \cs_set:Npn
+ \cs_generate_from_arg_count:NNno \__cmd_tmp:w \cs_set:Npn
\l__cmd_current_arg_int \l__cmd_tmpa_tl
}
-\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNno }
\cs_new_protected:Npn \__cmd_defaults_def:nn
{
\int_incr:N \l__cmd_current_arg_int
@@ -2801,7 +2873,9 @@
\__cmd_set_eq_if_exist:cc { #1 ~ \c_space_tl } { #2 ~ \c_space_tl }
\__cmd_set_eq_if_exist:cc { #1 ~ defaults } { #2 ~ defaults }
\exp_after:wN \__cmd_copy_expandable_signature:NnNNNNnnn #4 {#1} {#2}
- \cs_set_nopar:Npx #3
+ \token_if_protected_macro:NTF #4
+ { \cs_set_protected_nopar:Npx }{ \cs_set_nopar:Npx }
+ #3
{ \exp_after:wN \__cmd_copy_expandable:NnNNNNnnn #4 {#1} {#2} }
}
\cs_new:Npn \__cmd_copy_expandable:NnNNNNnnn #1 #2 #3 #4 #5 #6 #7 #8 #9
@@ -2938,19 +3012,26 @@
\cs_new_protected:Npn \__cmd_show_command:N #1
{ \exp_after:wN \__cmd_show_command:NnNNwN #1 \q__cmd #1 }
\cs_new_protected:Npn \__cmd_show_command:NnNNwN #1 #2 #3 #4 #5 \q__cmd #6
- { \__cmd_show_command_aux:nNNn { document~command } #6 #4 {#2} }
+ {
+ \__cmd_show_command_aux:NnNNn \tl_show:x
+ { document~command } #6 #4 {#2}
+ }
\cs_new_protected:Npn \__cmd_show_expandable:N #1
{ \exp_after:wN \__cmd_show_expandable:NnNNNNnN #1 #1 }
\cs_new_protected:Npn \__cmd_show_expandable:NnNNNNnN #1 #2 #3 #4 #5 #6 #7 #8
- { \__cmd_show_command_aux:nNNn { expandable~document~command } #8 #5 {#2} }
-\cs_new_protected:Npn \__cmd_show_command_aux:nNNn #1 #2 #3 #4
{
- \__cmd_split_signature:n {#4}
- \tl_show:x
+ \exp_args:NNe \__cmd_show_command_aux:NnNNn \tl_show:x
+ { \token_if_protected_macro:NF #8 { expandable~ } document~command }
+ #8 #5 {#2}
+ }
+\cs_new_protected:Npn \__cmd_show_command_aux:NnNNn #1 #2 #3 #4 #5
+ {
+ \__cmd_split_signature:n {#5}
+ #1
{
- \token_to_str:N #2 = #1: \iow_newline:
+ \token_to_str:N #3 = #2: \iow_newline:
\tl_use:N \l__cmd_tmpa_tl
- -> \cs_replacement_spec:N #3
+ -> \cs_replacement_spec:N #4
}
}
\cs_new_protected:Npn \__cmd_show_environment:N #1
@@ -2967,12 +3048,14 @@
{
\use:x
{
- \__cmd_show_command_aux:nNNn { document~environment }
+ \__cmd_show_command_aux:NnNNn \__cmd_show:x { document~environment }
{ \exp_not:N \begin {#3} }
\exp_not:c { environment~ #3 ~ code }
{#2}
}
}
+\cs_new_protected:Npn \__cmd_show:x #1
+ { \iow_term:x { > ~ #1 . \iow_newline: } }
\cs_new_protected:Npn \__cmd_show_environment_end:N #1
{
\exp_args:NNx \__cmd_check_end:Nn \l__cmd_tmpa_tl { \cs_to_str:N #1 }
@@ -2980,6 +3063,8 @@
}
\tl_gput_right:Nn \@showcommandlisthook
{ { \__kernel_cmd_if_xparse:NTF \__cmd_show:N } }
+\tl_gput_right:Nn \@showenvironmentlisthook
+ { { \__kernel_cmd_if_xparse:NTF \__cmd_show:N } }
\cs_new_protected:Npn \__cmd_split_signature:n #1
{
\int_set:Nn \l__cmd_current_arg_int { 1 }
@@ -3390,6 +3475,7 @@
\tl_set:Nn \l__cmd_signature_tl {#1}
\group_begin:
\tex_escapechar:D = 92 \scan_stop:
+ \tex_endlinechar:D = `\^^M \scan_stop:
\tl_clear:N \l__cmd_v_arg_tl
\peek_remove_spaces:n
{
@@ -3407,8 +3493,8 @@
}
\cs_new_protected:Npn \__cmd_grab_v_group_end:
{
- \exp_args:NNNo
- \group_end:
+ \exp_args:NNNo
+ \group_end:
\tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl }
}
\cs_new_protected:Npn \__cmd_grab_v_aux_test:N #1
@@ -3486,7 +3572,6 @@
{
\cs_set_eq:NN \do \char_set_catcode_other:N
\dospecials
- \tex_endlinechar:D = `\^^M \scan_stop:
\bool_if:NTF \l__cmd_long_bool
{ \char_set_catcode_other:n { \tex_endlinechar:D } }
{ \char_set_catcode_parameter:n { \tex_endlinechar:D } }
@@ -4535,8 +4620,8 @@
\ExplSyntaxOff
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0v}
-\def\lthooksdate{2022/06/15}
+\def\lthooksversion{v1.1e}
+\def\lthooksdate{2023/06/06}
\ExplSyntaxOn
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -4567,61 +4652,77 @@
\tl_new:N \g__hook_hook_curr_name_tl
\seq_new:N \g__hook_name_stack_seq
\cs_new_eq:NN \__hook_tmp:w ?
+\tl_const:Nn \c__hook_empty_tl { }
+\tl_const:Nn \c__hook_nine_parameters_tl { #1#2#3#4#5#6#7#8#9 }
\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx }
\cs_generate_variant:Nn \tl_show:n { x }
\cs_generate_variant:Nn \tl_log:n { x }
+\cs_generate_variant:Nn \tl_set:Nn { Ne }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
+\cs_generate_variant:Nn \prop_put:Nnn { Nne }
+\cs_generate_variant:Nn \str_count:n { e }
\scan_new:N \s__hook_mark
-\cs_new:Npn \__hook_clean_to_scan:w #1 \s__hook_mark { }
-\cs_new_protected:Npn \__hook_tl_set:Nn #1#2
- { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
-\cs_new_protected:Npn \__hook_tl_set:Nx #1#2
- { \cs_set_nopar:Npx #1 {#2} }
-\cs_generate_variant:Nn \__hook_tl_set:Nn { c }
-\cs_generate_variant:Nn \__hook_tl_set:Nx { c }
+\cs_new:Npn \__hook_use_none_delimit_by_s_mark:w #1 \s__hook_mark { }
+\cs_new:Npn \__hook_use_i_delimit_by_s_mark:nw #1 #2 \s__hook_mark {#1}
+\cs_new_protected:Npn \__hook_tl_set:cn #1#2
+ { \cs_set_nopar:cpx {#1} { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \__hook_tl_gset:Nn #1#2
{ \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
-\cs_new_protected:Npn \__hook_tl_gset:No #1#2
- { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \__hook_tl_gset:Nx #1#2
{ \cs_gset_nopar:Npx #1 {#2} }
-\cs_generate_variant:Nn \__hook_tl_gset:Nn { c }
-\cs_generate_variant:Nn \__hook_tl_gset:No { c }
+\cs_generate_variant:Nn \__hook_tl_gset:Nn { c, co }
\cs_generate_variant:Nn \__hook_tl_gset:Nx { c }
\cs_new_protected:Npn \__hook_tl_gput_right:Nn #1#2
{ \__hook_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
-\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No, cn }
+\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { Ne, cn }
\cs_new_protected:Npn \__hook_tl_gput_left:Nn #1#2
{
\__hook_tl_gset:Nx #1
{ \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
-\cs_generate_variant:Nn \__hook_tl_gput_left:Nn { No }
\cs_new_eq:NN \__hook_tl_gset_eq:NN \tl_gset_eq:NN
\cs_new_protected:Npn \__hook_tl_gclear:N #1
{ \__hook_tl_gset_eq:NN #1 \c_empty_tl }
\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
-
\cs_new_protected:Npn \hook_new:n #1
- { \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
-\cs_new_protected:Npn \__hook_new:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_new:nn {#1} { 0 } }
+\cs_new_protected:Npn \hook_new_with_args:nn #1 #2
+ { \__hook_normalize_hook_args:Nn \__hook_new:nn {#1} {#2} }
+\cs_new_protected:Npn \__hook_new:nn #1 #2
{
\__hook_if_declared:nTF {#1}
{ \msg_error:nnn { hooks } { exists } {#1} }
{
\tl_new:c { g__hook_#1_declared_tl }
- \__hook_make_usable:n {#1}
+ \cs_undefine:c { __hook~#1 }
+ \cs_undefine:c { c__hook_#1_parameter_tl }
+ \__hook_make_usable:nn {#1} {#2}
+ \__hook_update_hook_code:n {#1}
}
}
-\cs_new_protected:Npn \__hook_make_usable:n #1
+\cs_new_protected:Npn \__hook_make_usable:nn #1 #2
{
- \tl_if_exist:cF { __hook~#1 }
+ \__hook_if_usable:nF {#1}
{
\seq_gput_right:Nn \g__hook_all_seq {#1}
- \tl_new:c { __hook~#1 }
+ \__kernel_cs_parm_from_arg_count:nnF
+ { \tl_const:cn { c__hook_#1_parameter_tl } } {#2}
+ {
+ \msg_error:nnnn { hooks } { too-many-args } {#1} {#2}
+ \tl_const:cx { c__hook_#1_parameter_tl }
+ { \exp_not:V \c__hook_nine_parameters_tl }
+ }
+ \__hook_normalise_cs_args:nn { _toplevel } {#1}
+ \__hook_normalise_cs_args:nn { _next } {#1}
+ \__hook_code_gset:nn {#1} { }
\__hook_init_structure:n {#1}
- \clist_new:c { g__hook_#1_labels_clist }
- \tl_new:c { g__hook_#1_reversed_tl }
+ \__hook_normalise_code_pool:n {#1}
+ \clist_if_exist:cF { g__hook_#1_labels_clist }
+ {
+ \clist_new:c { g__hook_#1_labels_clist }
+ \tl_new:c { g__hook_#1_reversed_tl }
+ }
\__hook_include_legacy_code_chunk:n {#1}
}
}
@@ -4630,27 +4731,53 @@
\__hook_if_structure_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
- \tl_new:c { __hook_toplevel~#1 }
- \tl_new:c { __hook_next~#1 }
+ \__hook_toplevel_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
}
}
\cs_new_protected:Npn \hook_new_reversed:n #1
- { \__hook_normalize_hook_args:Nn \__hook_new_reversed:n {#1} }
-\cs_new_protected:Npn \__hook_new_reversed:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_new_reversed:nn {#1} { 0 } }
+\cs_new_protected:Npn \hook_new_reversed_with_args:nn #1 #2
+ { \__hook_normalize_hook_args:Nn \__hook_new_reversed:nn {#1} {#2} }
+\cs_new_protected:Npn \__hook_new_reversed:nn #1 #2
{
- \__hook_new:n {#1}
- \tl_gset:cn { g__hook_#1_reversed_tl } { - }
+ \__hook_if_declared:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \__hook_new:nn {#1} {#2}
+ \tl_gset:cn { g__hook_#1_reversed_tl } { - }
+ }
}
\cs_new_protected:Npn \hook_new_pair:nn #1#2
- { \hook_new:n {#1} \hook_new_reversed:n {#2} }
+ { \__hook_normalize_hook_args:Nnn \__hook_new_pair:nnn {#1} {#2} { 0 } }
+\cs_new_protected:Npn \hook_new_pair_with_args:nnn #1#2#3
+ { \__hook_normalize_hook_args:Nnn \__hook_new_pair:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \__hook_new_pair:nnn #1 #2 #3
+ {
+ \__hook_if_declared:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \__hook_if_declared:nTF {#2}
+ { \msg_error:nnn { hooks } { exists } {#2} }
+ {
+ \__hook_new:nn {#1} {#3}
+ \__hook_new_reversed:nn {#2} {#3}
+ }
+ }
+ }
\cs_new_protected:Npn \__hook_include_legacy_code_chunk:n #1
{
\tl_if_exist:cT { @#1hook }
{
\tl_if_empty:cF { @#1hook }
{
- \exp_args:Nnnv \__hook_hook_gput_code_do:nnn {#1}
- { legacy } { @#1hook }
+ \__hook_replacing_args_false:
+ \use:e
+ {
+ \__hook_hook_gput_code_do:nnn {#1} { legacy }
+ { \exp_not:v { @#1hook } }
+ }
+ \__hook_replacing_args_reset:
\__hook_tl_gclear:c { @#1hook }
}
}
@@ -4666,7 +4793,7 @@
{
\bool_lazy_and:nnTF
{ \tl_if_exist_p:c { g__hook_#1_declared_tl } }
- { ! \tl_if_exist_p:c { __hook~#1 } }
+ { ! \cs_if_exist_p:c { __hook~#1 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -4680,7 +4807,7 @@
\__hook_if_declared:nF {#1}
{
\tl_new:c { g__hook_#1_declared_tl }
- \__hook_make_usable:n {#1}
+ \__hook_make_usable:nn {#1} { 0 }
\tl_gset:cx { g__hook_#1_reversed_tl }
{ \__hook_if_generic_reversed:nT {#1} { - } }
\__hook_update_hook_code:n {#1}
@@ -4827,23 +4954,45 @@
}
{ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
-\cs_new_protected:Npn \hook_gput_code:nnn #1 #2
- { \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} }
+\cs_new_protected:Npn \hook_gput_code:nnn #1 #2 #3
+ {
+ \__hook_replacing_args_false:
+ \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} {#3}
+ \__hook_replacing_args_reset:
+ }
+\cs_new_protected:Npn \hook_gput_code_with_args:nnn #1 #2 #3
+ {
+ \__hook_replacing_args_true:
+ \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} {#3}
+ \__hook_replacing_args_reset:
+ }
\cs_new_protected:Npn \__hook_gput_code:nnn #1 #2 #3
{
+ \__hook_chk_args_allowed:nn {#1} { AddToHook }
\__hook_if_execute_immediately:nTF {#1}
- {#3}
{
- \__hook_if_usable:nTF {#1}
+ \__hook_if_replacing_args:TF
{
- \__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
- \__hook_update_hook_code:n {#1}
- }
- {
- \__hook_if_disabled:nTF {#1}
- { \msg_error:nnn { hooks } { hook-disabled } {#1} }
- { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ \msg_error:nnnn { hooks } { one-time-args }
+ {#1} { AddToHook }
}
+ { }
+ \use:n
+ }
+ { \__hook_gput_code_store:nnn {#1} {#2} }
+ {#3}
+ }
+\cs_new_protected:Npn \__hook_gput_code_store:nnn #1 #2 #3
+ {
+ \__hook_if_usable:nTF {#1}
+ {
+ \__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
+ \__hook_update_hook_code:n {#1}
+ }
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \msg_error:nnn { hooks } { hook-disabled } {#1} }
+ { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
}
}
\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
@@ -4857,18 +5006,57 @@
\str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
{
\__hook_init_structure:n {#1}
- \__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
+ \__hook_cs_gput_right:nnn { _toplevel } {#1} {#3}
}
{ \msg_error:nnn { hooks } { misused-top-level } {#1} }
}
{
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \exp_args:Nx \__hook_prop_gput_labeled_cleanup:nnn
+ {
+ \__hook_if_replacing_args:TF
+ { \exp_not:n }
+ { \__hook_double_hashes:n }
+ {#3}
+ }
+ {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__hook_prop_gput_labeled_cleanup:nnn #1 #2 #3
+ {
+ \tl_set:Nn \l__hook_return_tl {#1}
+ \__hook_if_replacing_args:TF
+ {
+ \__hook_if_usable:nT {#2}
{
- \prop_gput:cno { g__hook_#1_code_prop } {#2}
- { \l__hook_return_tl #3 }
+ \__hook_set_normalise_fn:nn {#2}
+ { Invalid~code~added~\msg_line_context: }
+ \__hook_normalise_fn:nn {#3} {#1}
+ \prop_get:NnN \l__hook_work_prop {#3} \l__hook_return_tl
}
- { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
+ { }
+ \exp_args:NcV \__hook_prop_gput_labeled_do:Nnn
+ { g__hook_#2_code_prop } \l__hook_return_tl {#3}
+ }
+\cs_new_protected:Npn \__hook_prop_gput_labeled_do:Nnn #1 #2 #3
+ {
+ \prop_get:NnNTF #1 {#3} \l__hook_return_tl
+ { \prop_gput:Nno #1 {#3} { \l__hook_return_tl #2 } }
+ { \prop_gput:Nnn #1 {#3} {#2} }
+ }
+\cs_new_protected:Npn \__hook_chk_args_allowed:nn #1 #2
+ {
+ \__hook_if_replacing_args:TF
+ {
+ \__hook_if_declared:nT {#1}
+ { \tl_if_empty:cT { c__hook_#1_parameter_tl } { \use_ii:nn } }
+ \use_none:n
+ {
+ \msg_error:nnnn { hooks } { without-args } {#1} {#2}
+ \__hook_replacing_args_false:
+ }
+ }
+ { }
}
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
@@ -4878,14 +5066,14 @@
\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
{
\__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
- \hook_gput_code:nnn
+ \__hook_gput_code:nnn
\__hook_gput_undeclared_hook:nnn
{#1}
}
\cs_new_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1
{
\__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
- \hook_gput_next_code:nn
+ \__hook_gput_next_code:nn
\__hook_gput_next_do:nn
{#1}
}
@@ -4897,8 +5085,12 @@
\__hook_if_usable:nF {#5}
{
\str_if_eq:nnT {#1} { cmd }
- { \__hook_try_put_cmd_hook:n {#5} }
- \__hook_make_usable:n {#5}
+ {
+ \__hook_try_put_cmd_hook:n {#5}
+ \__hook_make_usable:nn {#5} { 9 }
+ \use_none:nnn
+ }
+ \__hook_make_usable:nn {#5} { 0 }
}
\__hook_if_generic_reversed:nT {#5}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
@@ -4938,17 +5130,6 @@
{ #3 / #5 / #4 }
#1 #2 { #3 / #5 / #4 }
}
-\prg_new_conditional:Npnn \__hook_if_file_hook:w
- #1 / #2 \s__hook_mark #3 { TF }
- {
- \__hook_if_generic:nTF {#3}
- {
- \str_if_eq:nnTF {#1} { file }
- { \prg_return_true: }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
\clist_map_inline:nn { cmd , env , file , package , class , include }
{
\tl_const:cn { c__hook_generic_#1/./before_tl } { + }
@@ -4964,6 +5145,8 @@
\tl_const:cn { c__hook_deprecated_#1/./after_tl } { }
}
\tl_const:cn { c__hook_deprecated_include/./end_tl } { }
+\tl_const:cn { c__hook_parameter_cmd/./before_tl } { #1#2#3#4#5#6#7#8#9 }
+\tl_const:cn { c__hook_parameter_cmd/./after_tl } { #1#2#3#4#5#6#7#8#9 }
\cs_new_protected:Npn \hook_gremove_code:nn #1 #2
{ \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} }
\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
@@ -4973,12 +5156,12 @@
\str_if_eq:nnTF {#2} {*}
{
\prop_gclear:c { g__hook_#1_code_prop }
- \__hook_tl_gclear:c { __hook_toplevel~#1 }
- \__hook_tl_gclear:c { __hook_next~#1 }
+ \__hook_toplevel_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
}
{
\str_if_eq:nnTF {#2} { top-level }
- { \__hook_tl_gclear:c { __hook_toplevel~#1 } }
+ { \__hook_toplevel_gset:nn {#1} { } }
{
\prop_gpop:cnNF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
@@ -4996,9 +5179,206 @@
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
}
-\prop_new:c {g__hook_??_code_prop}
-\prop_new:c {__hook~??}
-\tl_new:c {g__hook_??_reversed_tl}
+\cs_new_protected:Npn \__hook_cs_gput_right:nnn #1 #2
+ {
+ \if:w T
+ \__hook_if_declared:nF {#2} { F }
+ \tl_if_empty:cF { c__hook_#2_parameter_tl } { F }
+ T
+ \exp_after:wN \__hook_cs_gput_right_fast:nnn
+ \else:
+ \exp_after:wN \__hook_cs_gput_right_slow:nnn
+ \fi:
+ {#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_new_protected:Npn \__hook_cs_gput_right_slow:nnn #1 #2 #3
+ {
+ \cs_if_exist:cF { __hook#1~#2 }
+ { \__hook_code_gset_aux:nnn {#1} {#2} { } }
+ \__hook_code_gset_auxi:eeen
+ {
+ \__hook_if_declared:nTF {#2}
+ { \tl_use:c { c__hook_#2_parameter_tl } }
+ {
+ \__hook_if_generic:nTF {#2}
+ { \__hook_generic_parameter:n {#2} }
+ { \c__hook_nine_parameters_tl }
+ }
+ }
+ {
+ \exp_args:NNo \exp_args:No \__hook_double_hashes:n
+ {
+ \cs:w __hook#1~#2 \exp_last_unbraced:Ne \cs_end:
+ { \__hook_braced_cs_parameter:n { __hook#1~#2 } }
+ }
+ }
+ {
+ \__hook_if_replacing_args:TF
+ { \exp_not:n }
+ { \__hook_double_hashes:n }
+ {#3}
+ }
+ { __hook#1~#2 }
+ }
+\cs_new_protected:Npn \__hook_code_gset_auxi:nnnn #1 #2 #3 #4
+ { \cs_gset:cpn {#4} #1 { #2 #3 } }
+\cs_generate_variant:Nn \__hook_code_gset_auxi:nnnn { eeen }
+\cs_new_protected:Npn \__hook_code_gset:nn
+ { \__hook_code_gset_aux:nnn { } }
+\cs_new_protected:Npn \__hook_toplevel_gset:nn
+ { \__hook_code_gset_aux:nnn { _toplevel } }
+\cs_new_protected:Npn \__hook_next_gset:nn
+ { \__hook_code_gset_aux:nnn { _next } }
+\cs_new_protected:Npn \__hook_code_gset_aux:nnn #1 #2 #3
+ {
+ \cs_gset:cpn { __hook#1~#2 \exp_last_unbraced:Ne }
+ { \__hook_parameter:n {#2} }
+ {#3}
+ }
+\cs_generate_variant:Nn \__hook_code_gset:nn { ne }
+\cs_new_protected:Npn \__hook_normalise_cs_args:nn #1 #2
+ {
+ \cs_if_exist:cT { __hook#1~#2 }
+ {
+ \__hook_code_gset_auxi:eeen
+ { \tl_use:c { c__hook_#2_parameter_tl } }
+ {
+ \exp_args:NNo \exp_args:No \__hook_double_hashes:n
+ {
+ \cs:w __hook#1~#2 \exp_last_unbraced:Ne \cs_end:
+ { \__hook_braced_cs_parameter:n { __hook#1~#2 } }
+ }
+ }
+ { }
+ { __hook#1~#2 }
+ }
+ }
+\cs_new_protected:Npn \__hook_normalise_code_pool:n #1
+ {
+ \__hook_set_normalise_fn:nn {#1} { Offending~label:~'##1' }
+ \prop_clear:N \l__hook_work_prop
+ \prop_map_function:cN { g__hook_#1_code_prop } \__hook_normalise_fn:nn
+ \prop_gset_eq:cN { g__hook_#1_code_prop } \l__hook_work_prop
+ }
+\cs_new_protected:Npn \__hook_set_normalise_fn:nn #1 #2
+ {
+ \cs_set:Npn \__hook_tmp:w ##1##2##3##4##5##6##7##8##9 { }
+ \tl_set:Ne \l__hook_tmpb_tl
+ { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
+ \group_begin:
+ \__hook_tl_set:cn { c__hook_hash_tl } { \exp_not:N \c__hook_hashes_tl }
+ \use:e
+ {
+ \group_end:
+ \tl_set:Nn \exp_not:N \l__hook_tmpb_tl { \l__hook_tmpb_tl }
+ }
+ \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 } }
+ \cs_gset_protected:Npx \__hook_normalise_fn:nn ##1 ##2
+ {
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { -1 }
+ \cs_set:cpn
+ {
+ hook~'#1'. ^^J
+ (hooks) \prg_replicate:nn { 13 } { ~ }
+ #2 % more message text
+ }
+ \exp_not:v { c__hook_#1_parameter_tl }
+ {##2}
+ \group_end:
+ \cs_set:Npn \exp_not:N \__hook_tmp:w
+ \exp_not:V \c__hook_nine_parameters_tl
+ {
+ \prop_put:Nne \exp_not:N \l__hook_work_prop
+ {##1} { \exp_not:N \__hook_double_hashes:n {##2} }
+ }
+ \exp_not:N \__hook_tmp:w
+ \exp_not:V \l__hook_tmpa_tl
+ \exp_args:No \exp_not:o
+ { \exp_after:wN \__hook_tmp:w \l__hook_tmpb_tl }
+ }
+ }
+\cs_new_eq:NN \__hook_normalise_fn:nn ?
+\prg_new_conditional:Npnn \__hook_cs_if_empty:c #1 { p, T, F, TF }
+ {
+ \if:w \scan_stop: \__hook_replacement_spec:c {#1} \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_new:Npn \__hook_replacement_spec:c #1
+ {
+ \exp_args:Nc \token_if_macro:NT {#1}
+ { \cs_replacement_spec:c {#1} }
+ }
+\cs_new:Npn \__hook_braced_cs_parameter:n #1
+ {
+ \exp_last_unbraced:Ne \__hook_braced_hidden_loop:w
+ { \exp_args:Nc \__hook_cs_parameter_count:N {#1} } ? \s__hook_mark
+ }
+\cs_new:Npn \__hook_braced_hidden_loop:w #1
+ {
+ \if:w ? #1
+ \__hook_use_i_delimit_by_s_mark:nw
+ \fi:
+ { \exp_not:N \c__hook_hash_tl #1 }
+ \__hook_braced_hidden_loop:w
+ }
+\cs_new:Npn \__hook_cs_parameter_count:N #1
+ {
+ \exp_last_unbraced:Nf \__hook_cs_parameter_count:w
+ { \token_if_macro:NT #1 { \cs_parameter_spec:N #1 } }
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ \s__hook_mark
+ }
+\cs_new:Npn \__hook_cs_parameter_count:w #1#2 #3#4 #5#6 #7#8
+ { #2 #4 #6 #8 \__hook_cs_parameter_count:w }
+\cs_new:Npn \__hook_cs_end:w #1 \s__hook_mark { }
+\cs_new:Npn \__hook_braced_parameter:n #1
+ {
+ \if_case:w
+ \int_eval:n
+ { \exp_args:Nv \str_count:n { c__hook_#1_parameter_tl } / 3 }
+ \exp_stop_f:
+ \or: {##1}
+ \or: {##1} {##2}
+ \or: {##1} {##2} {##3}
+ \or: {##1} {##2} {##3} {##4}
+ \or: {##1} {##2} {##3} {##4} {##5}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8} {##9}
+ \else:
+ \msg_expandable_error:nnn { latex2e } { should-not-happen }
+ { Invalid~parameter~spec. }
+ \fi:
+ }
+\cs_new:Npn \__hook_parameter:n #1
+ {
+ \cs:w c__hook_
+ \tl_if_exist:cTF { c__hook_#1_parameter_tl }
+ { #1_parameter } { empty }
+ _tl \cs_end:
+ }
+\cs_new:Npn \__hook_generic_parameter:n #1
+ { \__hook_generic_parameter:w #1 / / / \s__hook_mark }
+\cs_new:Npn \__hook_generic_parameter:w #1 / #2 / #3 / #4 \s__hook_mark
+ {
+ \cs_if_exist_use:cF { c__hook_parameter_#1/./#3_tl }
+ { \c__hook_empty_tl }
+ }
+\prop_new:c { g__hook_??_code_prop }
+\prop_new:c { __hook~?? }
+\tl_new:c { g__hook_??_reversed_tl }
+\tl_const:cn { c__hook_??_parameter_tl } { }
\cs_new_protected:Npn \hook_gset_rule:nnnn #1#2#3#4
{
\__hook_normalize_hook_rule_args:Nnnnn \__hook_gset_rule:nnnn
@@ -5011,13 +5391,13 @@
\__hook_deprecated_generic_warn:n {#1}
\__hook_do_deprecated_generic:Nn \__hook_gset_rule:nnnn {#1}
{#2} {#3} {#4}
- \__hook_clean_to_scan:w
+ \__hook_use_none_delimit_by_s_mark:w
}
\__hook_if_execute_immediately:nT {#1}
{
\msg_error:nnnnnn { hooks } { rule-too-late }
{#1} {#2} {#3} {#4}
- \__hook_clean_to_scan:w
+ \__hook_use_none_delimit_by_s_mark:w
}
\__hook_init_structure:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
@@ -5082,23 +5462,29 @@
\cs_end:
}
\cs_new_eq:NN \__hook_update_hook_code:n \use_none:n
-\cs_new_protected:Npn \__hook_initialize_all: {
- \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
+\cs_new_protected:Npn \__hook_initialize_all:
+ {
+ \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
{
+ \tl_if_empty:cTF { c__hook_##1_parameter_tl }
+ { \__hook_replacing_args_false: }
+ { \__hook_replacing_args_true: }
\__hook_update_hook_code:n {##1}
+ \__hook_replacing_args_reset:
}
- \__hook_debug:n
- { \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:}
- \prop_map_inline:Nn \g__hook_used_prop
- { \iow_term:x{^^J~ ##1~ ->~
- \exp_not:v {__hook~##1}~ }
- }
- }
- \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
- \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
-}
+ \__hook_debug:n
+ {
+ \iow_term:x { ^^J All~initialized~(non-empty)~hooks: }
+ \prop_map_inline:Nn \g__hook_used_prop
+ {
+ \iow_term:x
+ { ^^J ~ ##1 ~ -> ~ \cs_replacement_spec:c { __hook~##1 } ~ }
+ }
+ }
+ \__hook_post_initialization_defs:
+ }
\cs_new_protected:Npn \__hook_initialize_hook_code:n #1
{
\__hook_debug:n
@@ -5108,10 +5494,10 @@
{
\prop_if_empty:cTF { g__hook_#1_code_prop }
{
- \__hook_tl_gset:co { __hook~#1 }
+ \__hook_code_gset:ne {#1}
{
- \cs:w __hook_toplevel~#1 \exp_after:wN \cs_end:
- \cs:w __hook_next~#1 \cs_end:
+ \exp_not:c { __hook_toplevel~#1 } \__hook_braced_parameter:n {#1}
+ \exp_not:c { __hook_next~#1 } \__hook_braced_parameter:n {#1}
}
}
{
@@ -5202,8 +5588,15 @@
\__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: }
- \__hook_tl_gput_right:No #1 { \cs:w __hook_next~#3 \cs_end: }
+ \exp_args:NNe \__hook_tl_gput:Nn #1
+ { \exp_not:c { __hook_toplevel~#3 } \__hook_braced_parameter:n {#3} }
+ \__hook_tl_gput_right:Ne #1
+ { \exp_not:c { __hook_next~#3 } \__hook_braced_parameter:n {#3} }
+ \use:e
+ {
+ \cs_gset:cpn { __hook~#3 } \use:c { c__hook_#3_parameter_tl }
+ { \exp_not:V #1 }
+ }
}
\cs_generate_variant:Nn \__hook_initialize_single:NNn { cc }
\cs_new:Npn \__hook_tl_gput:Nn { \ERROR }
@@ -5330,7 +5723,20 @@
}
\__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_disabled:nF {#1}
+ {
+ \exp_args:Nf \__hook_print_args:nn {#1}
+ {
+ \int_eval:n
+ { \str_count:e { \__hook_parameter:n {#1} } / 3 }
+ }
+ }
+ :
+ }
\__hook_if_usable:nF {#1}
{ \__hook_log_line:x { The~hook~is~not~declared. } }
\__hook_if_disabled:nT {#1}
@@ -5343,7 +5749,12 @@
{ \__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} } }
+ {
+ \exp_after:wN \cs_set:Npn \exp_after:wN \__hook_tmp:w
+ \c__hook_nine_parameters_tl {##2}
+ \__hook_log_line_indent:x
+ { ##1~->~\cs_replacement_spec:N \__hook_tmp:w }
+ }
}
\__hook_log_line:x
{
@@ -5353,16 +5764,19 @@
}
\__hook_log_line_indent:x
{
- \tl_if_empty:cTF { __hook_toplevel~#1 }
+ \__hook_cs_if_empty:cTF { __hook_toplevel~#1 }
{ --- }
- { -> ~ \exp_args:Nv \tl_to_str:n { __hook_toplevel~#1 } }
+ { -> ~ \cs_replacement_spec:c { __hook_toplevel~#1 } }
}
\__hook_log_line:x { Extra~code~for~next~invocation: }
\__hook_log_line_indent:x
{
- \tl_if_empty:cTF { __hook_next~#1 }
+ \__hook_cs_if_empty:cTF { __hook_next~#1 }
{ --- }
- { ->~ \exp_args:Nv \__hook_log_next_code:n { __hook_next~#1 } }
+ {
+ -> ~ \exp_last_unbraced:Nf \__hook_log_next_code:w
+ { \cs_replacement_spec:c { __hook_next~#1 } }
+ }
}
\__hook_log_line:x { Rules: }
\bool_set_true:N \l__hook_tmpa_bool
@@ -5397,7 +5811,7 @@
\@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 } { ,~ } }
}
}
{
@@ -5411,8 +5825,19 @@
}
}
}
-\cs_new:Npn \__hook_log_next_code:n #1
- { \exp_args:No \tl_to_str:n { \use_none:nn #1 } }
+\exp_last_unbraced:NNNNo
+\cs_new:Npn \__hook_log_next_code:w #1 \c_right_brace_str { }
+\cs_new:Npn \__hook_print_args:nn #1 #2
+ {
+ \int_compare:nNnT {#2} > { 0 }
+ {
+ \__hook_if_declared:nT {#1} { \use_none:nnn }
+ \__hook_if_cmd_hook:nT {#1}
+ { \use_i:nnn { ~ (unknown ~ } }
+ \use:n { ~ (#2 ~ }
+ argument \int_compare:nNnT {#2} > { 1 } { s } )
+ }
+ }
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
\cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
@@ -5458,105 +5883,147 @@
}
\exp_args:No \__hook_tmp:w { \use:nn { ~ } { ~ } }
}
-\cs_new_protected:Npn \hook_gput_next_code:nn #1
- { \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
+\cs_new_protected:Npn \hook_gput_next_code:nn #1 #2
+ {
+ \__hook_replacing_args_false:
+ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2}
+ \__hook_replacing_args_reset:
+ }
+\cs_new_protected:Npn \hook_gput_next_code_with_args:nn #1 #2
+ {
+ \__hook_replacing_args_true:
+ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2}
+ \__hook_replacing_args_reset:
+ }
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
{
\__hook_if_disabled:nTF {#1}
{ \msg_error:nnn { hooks } { hook-disabled } {#1} }
{
\__hook_if_structure_exist:nTF {#1}
- { \__hook_gput_next_do:nn {#1} {#2} }
- { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ { \__hook_gput_next_do:nn }
+ { \__hook_try_declaring_generic_next_hook:nn }
+ {#1} {#2}
}
}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
- \exp_args:Nc \__hook_gput_next_do:Nnn
- { __hook_next~#1 } {#1}
- }
-\cs_new_protected:Npn \__hook_gput_next_do:Nnn #1 #2
- {
- \tl_if_empty:cT { __hook~#2 }
- { \__hook_update_hook_code:n {#2} }
- \tl_if_empty:NT #1
- { \__hook_tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
- \__hook_tl_gput_right:Nn #1
+ \__hook_init_structure:n {#1}
+ \__hook_chk_args_allowed:nn {#1} { AddToHookNext }
+ \__hook_cs_if_empty:cT { __hook~#1 }
+ { \__hook_update_hook_code:n {#1} }
+ \__hook_cs_if_empty:cT { __hook_next~#1 }
+ { \__hook_next_gset:nn {#1} { \__hook_clear_next:n {#1} } }
+ \__hook_cs_gput_right:nnn { _next } {#1}
}
\cs_new_protected:Npn \hook_gclear_next_code:n #1
{ \__hook_normalize_hook_args:Nn \__hook_clear_next:n {#1} }
\cs_new_protected:Npn \__hook_clear_next:n #1
- { \cs_gset_eq:cN { __hook_next~#1 } \c_empty_tl }
+ { \__hook_next_gset:nn {#1} { } }
\cs_new_protected:Npn \hook_use:n #1
{
- \tl_if_exist:cT { __hook~#1 }
- {
- \__hook_preamble_hook:n {#1}
- \cs:w __hook~#1 \cs_end:
- }
+ \__hook_preamble_hook:n {#1}
+ \__hook_use_initialized:n {#1}
}
\cs_new:Npn \__hook_use_initialized:n #1
{
\if_cs_exist:w __hook~#1 \cs_end:
- \cs:w __hook~#1 \exp_after:wN \cs_end:
+ \cs:w __hook~#1 \use_i:nn
\fi:
+ \use_none:n
+ \cs_end:
}
\cs_new_protected:Npn \__hook_preamble_hook:n #1
- { \__hook_initialize_hook_code:n {#1} }
+ {
+ \if_cs_exist:w __hook~#1 \cs_end:
+ \__hook_initialize_hook_code:n {#1}
+ \fi:
+ }
+\cs_new_protected:Npn \hook_use:nnw #1
+ {
+ \__hook_preamble_hook:n {#1}
+ \__hook_use_initialized:nnw {#1}
+ }
+\cs_new:Npn \__hook_use_initialized:nnw #1 #2
+ {
+ \cs:w
+ \if_cs_exist:w __hook~#1 \cs_end:
+ __hook~#1
+ \else:
+ use_none: \prg_replicate:nn {#2} { n }
+ \fi:
+ \cs_end:
+ }
+\cs_new_protected:Npn \__hook_post_initialization_defs:
+ {
+ \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
+ \cs_gset_eq:NN \hook_use:nnw \__hook_use_initialized:nnw
+ \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
+ \cs_gset_eq:NN \__hook_post_initialization_defs: \prg_do_nothing:
+ }
\cs_new_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: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} }
}
-\cs_new_protected:Npn \__hook_use_once:n #1
+\cs_new_protected:Npn \__hook_use_once:nn #1 #2
{
\__hook_preamble_hook:n {#1}
\__hook_use_once_set:n {#1}
- \__hook_use_initialized:n {#1}
- \__hook_use_once_clear:n {#1}
+ \__hook_replacing_args_false:
+ \__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} }
+ {
+ \int_compare:nNnT {#2} > { 0 }
+ { \use:c { use_none: \prg_replicate:nn {#2} { n } } }
+ }
}
\cs_new_protected:Npn \__hook_use_once_set:n #1
{ \__hook_tl_gset:cn { g__hook_#1_reversed_tl } { I } }
\cs_new_protected:Npn \__hook_use_once_clear:n #1
{
- \__hook_tl_gclear:c { __hook~#1 }
- \__hook_tl_gclear:c { __hook_next~#1 }
- \__hook_tl_gclear:c { __hook_toplevel~#1 }
+ \__hook_code_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
+ \__hook_toplevel_gset:nn {#1} { }
\prop_gclear_new:c { g__hook_#1_code_prop }
}
\prg_new_conditional:Npnn \__hook_if_execute_immediately:n #1 { T, F, TF }
{
- \__hook_if_usable:nTF {#1}
- {
- \exp_after:wN \__hook_clean_to_scan:w
- \if:w I \cs:w g__hook_#1_reversed_tl \cs_end:
- \s__hook_mark \prg_return_true:
- \else:
- \s__hook_mark \prg_return_false:
+ \exp_after:wN \__hook_use_none_delimit_by_s_mark:w
+ \if:w I
+ \if_cs_exist:w g__hook_#1_reversed_tl \cs_end:
+ \cs:w g__hook_#1_reversed_tl \exp_after:wN \cs_end:
\fi:
- }
- { \prg_return_false: }
+ X
+ \s__hook_mark \prg_return_true:
+ \else:
+ \s__hook_mark \prg_return_false:
+ \fi:
}
-
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
{
- \__hook_if_structure_exist:nTF {#1}
- {
- \bool_lazy_and:nnTF
- { \prop_if_empty_p:c { g__hook_#1_code_prop } }
- {
- \bool_lazy_and_p:nn
- { \tl_if_empty_p:c { __hook_toplevel~#1 } }
- { \tl_if_empty_p:c { __hook_next~#1 } }
- }
- { \prg_return_true: }
- { \prg_return_false: }
- }
- { \prg_return_true: }
+ \if:w
+ T
+ \prop_if_exist:cT { g__hook_#1_code_prop }
+ { \prop_if_empty:cF { g__hook_#1_code_prop } { F } }
+ \__hook_cs_if_empty:cF { __hook_toplevel~#1 } { F }
+ \__hook_cs_if_empty:cF { __hook_next~#1 } { F }
+ T
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
\prg_new_conditional:Npnn \__hook_if_usable:n #1 { p , T , F , TF }
{
- \tl_if_exist:cTF { __hook~#1 }
+ \cs_if_exist:cTF { __hook~#1 }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -5574,7 +6041,7 @@
}
\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF }
{
- \exp_after:wN \__hook_clean_to_scan:w
+ \exp_after:wN \__hook_use_none_delimit_by_s_mark:w
\if:w - \cs:w g__hook_#1_reversed_tl \cs_end:
\s__hook_mark \prg_return_true:
\else:
@@ -5601,6 +6068,19 @@
}
{ \prg_return_false: }
}
+\prg_new_conditional:Npnn \__hook_if_cmd_hook:n #1 { T }
+ { \__hook_if_cmd_hook:w #1 / / / \s__hook_mark }
+\cs_new:Npn \__hook_if_cmd_hook:w #1 / #2 / #3 / #4 \s__hook_mark
+ {
+ \if:w Y
+ \str_if_eq:nnF {#1} { cmd } { N }
+ \tl_if_exist:cF { c__hook_generic_#1/./#3_tl } { N }
+ Y
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
\prg_new_conditional:Npnn \__hook_if_generic_reversed:n #1 { T }
{ \__hook_if_generic_reversed:w #1 / / / \scan_stop: }
\cs_new:Npn \__hook_if_generic_reversed:w #1 / #2 / #3 / #4 \scan_stop:
@@ -5611,6 +6091,31 @@
\prg_return_false:
\fi:
}
+\seq_new:N \g__hook_replacing_stack_seq
+\cs_new:Npn \__hook_misused_if_replacing_args:nn #1 #2
+ {
+ \msg_expandable_error:nnn { latex2e } { should-not-happen }
+ { Misused~\__hook_if_replacing_args:. }
+ }
+\cs_new:Npn \__hook_if_replacing_args:TF
+ { \__hook_misused_if_replacing_args:nn }
+\cs_new_protected:Npn \__hook_replacing_args_true:
+ {
+ \seq_gpush:No \g__hook_replacing_stack_seq
+ { \__hook_if_replacing_args:TF }
+ \cs_set:Npn \__hook_if_replacing_args:TF { \use_i:nn }
+ }
+\cs_new_protected:Npn \__hook_replacing_args_false:
+ {
+ \seq_gpush:No \g__hook_replacing_stack_seq
+ { \__hook_if_replacing_args:TF }
+ \cs_set:Npn \__hook_if_replacing_args:TF { \use_ii:nn }
+ }
+\cs_new_protected:Npn \__hook_replacing_args_reset:
+ {
+ \seq_gpop:NN \g__hook_replacing_stack_seq \l__hook_return_tl
+ \cs_gset_eq:NN \__hook_if_replacing_args:TF \l__hook_return_tl
+ }
\prop_gput:Nnn \g_msg_module_type_prop { hooks } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { latex2e } { LaTeX }
\prop_gput:Nnn \g_msg_module_name_prop { latex2e } { kernel }
@@ -5629,6 +6134,32 @@
{ There~ already~ exists~ a~ hook~ declaration~ with~ this~
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
+\msg_new:nnnn { hooks } { too-many-args }
+ { Too~many~arguments~for~hook~'#1'. }
+ {
+ You~tried~to~declare~a~hook~with~#2~arguments,~but~a~
+ hook~can~only~have~up~to~nine.~LaTeX~will~define~this~
+ hook~with~nine~arguments.
+ }
+\msg_new:nnnn { hooks } { without-args }
+ { Hook~'#1'~has~no~arguments. }
+ {
+ You~tried~to~use~\iow_char:N\\#2WithArguments~
+ on~a~hook~that~takes~no~arguments.\\
+ Check~the~usage~of~the~hook~or~use~\iow_char:N\\#2~instead.\\
+ \\
+ LaTeX~will~use~\iow_char:N\\#2.
+ }
+\msg_new:nnnn { hooks } { one-time-args }
+ { You~can't~have~arguments~in~used~one-time~hook~'#1'. }
+ {
+ You~tried~to~use~\iow_char:N\\#2WithArguments~
+ on~a~one-time~hook~that~has~already~been~used.~
+ You~have~to~add~the~code~before~the~hook~is~used,~
+ or~add~the~code~without~arguments~using~\iow_char:N\\#2~instead.\\
+ \\
+ LaTeX~will~use~\iow_char:N\\#2.
+ }
\msg_new:nnnn { hooks } { hook-disabled }
{ Cannot~add~code~to~disabled~hook~'#1'. }
{
@@ -5723,15 +6254,30 @@
Generic~hook~'#1/#2/#3'~is~deprecated. \\
Use~hook~'#1/#3/#2'~instead.
}
-\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} }
-\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} }
-\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} }
-\NewDocumentCommand \ActivateGenericHook { m }{ \hook_activate_generic:n {#1} }
-\NewDocumentCommand \DisableGenericHook { m }{ \hook_disable_generic:n {#1} }
+\NewDocumentCommand \NewHook { m }
+ { \hook_new:n {#1} }
+\NewDocumentCommand \NewReversedHook { m }
+ { \hook_new_reversed:n {#1} }
+\NewDocumentCommand \NewMirroredHookPair { mm }
+ { \hook_new_pair:nn {#1}{#2} }
+\NewDocumentCommand \NewHookWithArguments { mm }
+ { \hook_new_with_args:nn {#1} {#2} }
+\NewDocumentCommand \NewReversedHookWithArguments { mm }
+ { \hook_new_reversed_with_args:nn {#1} {#2} }
+\NewDocumentCommand \NewMirroredHookPairWithArguments { mmm }
+ { \hook_new_pair_with_args:nnn {#1} {#2} {#3} }
+\NewDocumentCommand \ActivateGenericHook { m }
+ { \hook_activate_generic:n {#1} }
+\NewDocumentCommand \DisableGenericHook { m }
+ { \hook_disable_generic:n {#1} }
\NewDocumentCommand \AddToHook { m o +m }
{ \hook_gput_code:nnn {#1} {#2} {#3} }
+\NewDocumentCommand \AddToHookWithArguments { m o +m }
+ { \hook_gput_code_with_args:nnn {#1} {#2} {#3} }
\NewDocumentCommand \AddToHookNext { m +m }
{ \hook_gput_next_code:nn {#1} {#2} }
+\NewDocumentCommand \AddToHookNextWithArguments { m +m }
+ { \hook_gput_next_code_with_args:nn {#1} {#2} }
\NewDocumentCommand \ClearHookNext { m }
{ \hook_gclear_next_code:n {#1} }
\NewDocumentCommand \RemoveFromHook { m o }
@@ -5750,6 +6296,8 @@
}
\cs_new:Npn \UseHook { \hook_use:n }
\cs_new:Npn \UseOneTimeHook { \hook_use_once:n }
+\cs_new:Npn \UseHookWithArguments { \hook_use:nnw }
+\cs_new:Npn \UseOneTimeHookWithArguments { \hook_use_once:nnw }
\cs_new_protected:Npn \ShowHook { \hook_show:n }
\cs_new_protected:Npn \LogHook { \hook_log:n }
\cs_new_protected:Npn \DebugHooksOn { \hook_debug_on: }
@@ -5839,18 +6387,20 @@
\__hook_curr_name_pop:
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltcmdhooks.dtx (C) Copyright 2020-2021
-%% Frank Mittelbach, Phelype Oleinik, LaTeX Team
+%% File: ltcmdhooks.dtx
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0f}
-\def\ltcmdhooksdate{2021/10/20}
+\def\ltcmdhooksversion{v1.0h}
+\def\ltcmdhooksdate{2023/05/21}
\ExplSyntaxOn
\tl_new:N \g_hook_patch_action_list_tl
\int_new:N \l__hook_patch_num_args_int
\tl_new:N \l__hook_patch_prefixes_tl
\tl_new:N \l__hook_param_text_tl
\tl_new:N \l__hook_replace_text_tl
-\tl_const:Nn \c__hook_hash_tl { # # }
+\tl_const:Nn \c__hook_hash_tl { # }
+\tl_const:Nn \c__hook_hashes_tl { # # }
\cs_new_eq:NN \__hook_exp_not:NN ?
\cs_new_eq:NN \__hook_def_cmd:w ?
\quark_new:N \q__hook_recursion_tail
@@ -5998,10 +6548,10 @@
##1 \l__hook_replace_text_tl { \__hook_exp_not:n {##2} }
}
\bool_if:NTF #1
- { \__hook_tmp:w \tl_set:Nx { [ \c__hook_hash_tl 1 ] } }
- { \__hook_tmp:w \tl_set:Nx { { \c__hook_hash_tl 1 } } }
+ { \__hook_tmp:w \tl_set:Nx { [ \c__hook_hashes_tl 1 ] } }
+ { \__hook_tmp:w \tl_set:Nx { { \c__hook_hashes_tl 1 } } }
\int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
- { \__hook_tmp:w \tl_put_right:Nx { { \c__hook_hash_tl ##1 } } }
+ { \__hook_tmp:w \tl_put_right:Nx { { \c__hook_hashes_tl ##1 } } }
\tl_set:Nx \l__hook_replace_text_tl
{ \exp_not:N #2 \exp_not:V \l__hook_replace_text_tl }
\tl_set:Nx \l__hook_replace_text_tl
@@ -6028,16 +6578,24 @@
\tl_set:Nx \exp_not:N \l__hook_patch_prefixes_tl
{ \exp_not:N \__hook_make_prefixes:w \cs_prefix_spec:N #2 / / }
}
- \use:x
+ \__hook_disable:n { cmd / #3 / #4 }
+ \cs_undefine:c { c__hook_cmd / #3 / #4_parameter_tl }
+ \__hook_make_usable:nn { cmd / #3 / #4 } { \l__hook_patch_num_args_int }
+ \use:e
{
\__hook_redefine_with_hooks:Nnnn \exp_not:N #2
\str_if_eq:nnTF {#4} { after }
{ \use_ii_i:nn }
{ \use:nn }
- { { \__hook_exp_not:NN \exp_not:N \UseHook { cmd / #3 / #4 } } }
+ { {
+ \__hook_exp_not:NN \exp_not:N \UseHookWithArguments
+ { cmd / #3 / #4 } { \int_use:N \l__hook_patch_num_args_int }
+ \__hook_braced_parameter:n { cmd / #3 / #4 }
+ } }
{ { } }
{ \__hook_exp_not:NN \exp_not:V \l__hook_replace_text_tl }
}
+ \__hook_update_hook_code:n { cmd / #3 / #4 }
}
\cs_new_protected:Npn \__hook_redefine_with_hooks:Nnnn #1 #2 #3 #4
{
@@ -6086,7 +6644,11 @@
\if_meaning:w \q__hook_recursion_tail #1
\__hook_double_hashes_stop:w
\fi:
- \if_meaning:w \c__hook_hash_tl #1
+ \if:w ?
+ \if_meaning:w \c__hook_hash_tl #1 ! \fi:
+ \if_meaning:w \c__hook_hashes_tl #1 ! \fi:
+ ?
+ \else:
\use_i:nnnn
\fi:
\use:n
@@ -6108,10 +6670,10 @@
{ ~ \__hook_double_hashes:w }
\cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3
{
- \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
\str_if_eq:eeTF { \cs_argument_spec:N #1 } { }
{ \__hook_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} }
{
+ \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
\tl_set:Nx \l__hook_tmpa_tl
{
\int_compare:nNnTF { \char_value_catcode:n {`\@ } } = { 12 }
@@ -6149,7 +6711,7 @@
{
\__hook_patch_debug:x { ++~macro~can~be~retokenized~cleanly }
\__hook_patch_debug:x { ==~retokenizing~macro~now }
- \__hook_patch_retokenize:Nnnn #1 {#2} {#3} {#4}
+ \__hook_patch_retokenize:Nnnn #1 { cmd / #2 / #3 } {#3} {#4}
\use_i_delimit_by_q_recursion_stop:nw \use_none:n
}
{
@@ -6184,8 +6746,41 @@
{ \prg_return_true: }
{ \prg_return_false: }
}
+\cs_new_protected:Npn \__hook_guess_arg_count:NN #1
+ {
+ \exp_after:wN \__hook_guess_arg_count:wN
+ \token_to_meaning:N #1 \s__hook_mark
+ }
+\exp_last_unbraced:NNNNo
+\cs_new_protected:Npx \__hook_guess_arg_count:wN
+ #1 { \tl_to_str:n { macro: } } #2 \s__hook_mark #3
+ {
+ \int_set:Nn #3
+ {
+ \exp_not:N \__hook_guess_arg_count:nw { 0 } #2
+ \c_hash_str 0 \s__hook_mark
+ }
+ }
+\use:e
+ { \cs_new:Npn \exp_not:N \__hook_guess_arg_count:nw #1 #2 \c_hash_str #3 }
+ {
+ \int_compare:nNnTF { #1 + 1 } = {#3}
+ { \__hook_guess_arg_count:nw {#3} }
+ { #1 \__hook_use_none_delimit_by_s_mark:w }
+ }
\cs_new_protected:Npn \__hook_patch_retokenize:Nnnn #1 #2 #3 #4
{
+ \__hook_guess_arg_count:NN #1 \l__hook_patch_num_args_int
+ \__hook_disable:n {#2}
+ \cs_undefine:c { c__hook_#2_parameter_tl }
+ \__hook_make_usable:nn {#2} { \l__hook_patch_num_args_int }
+ \tl_set:Ne \l__hook_tmpa_tl
+ { \exp_args:Ne \tl_to_str:n { \__hook_braced_parameter:n {#2} } }
+ \use:x
+ {
+ \str_replace_all:Nnn \exp_not:N \l__hook_tmpa_tl
+ { #### } { \c_hash_str }
+ }
\cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
\cs_set_eq:NN \__hook_tmp:w \scan_stop:
\use:x
@@ -6196,10 +6791,18 @@
####1 \def \kerneltmpDoNotUse ####2
{
\str_if_eq:nnT {#3} { before }
- { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ {
+ \token_to_str:N \UseHookWithArguments {#2}
+ { \int_use:N \l__hook_patch_num_args_int }
+ \l__hook_tmpa_tl
+ }
####3
\str_if_eq:nnT {#3} { after }
- { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ {
+ \token_to_str:N \UseHookWithArguments {#2}
+ { \int_use:N \l__hook_patch_num_args_int }
+ \l__hook_tmpa_tl
+ }
}
}
\tl_set:Nx \exp_not:N \l__hook_tmpa_tl
@@ -6207,6 +6810,7 @@
}
\tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
\cs_gset_eq:NN #1 \kerneltmpDoNotUse
+ \__hook_update_hook_code:n {#2}
}
\msg_new:nnnn { hooks } { cant-patch }
{
@@ -6544,10 +7148,12 @@ Type H <return> for immediate help.}%
\def\@setpar#1{\def\par{#1}\def\@par{#1}}
\def\@par{\let\par\@@par\par}
\def\@restorepar{\def\par{\@par}}
-%% File: ltpara.dtx (C) Copyright 2020-2021
+%% File: ltpara.dtx
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
-\def\ltparaversion{v1.0k}
-\def\ltparadate{2022/05/13}
+\def\ltparaversion{v1.0l}
+\def\ltparadate{2023/01/30}
\ExplSyntaxOn
@@ -6568,7 +7174,8 @@ Type H <return> for immediate help.}%
\hook_use:n {para/before}
\group_begin:
\tex_everypar:D {}
- \skip_zero:N \tex_parskip:D
+ \skip_set:Nn \tex_parskip:D
+ { \if@minipage -\tex_parskip:D \else: \c_zero_skip \fi: }
\tex_noindent:D
\group_end:
\tex_everypar:D{\g__para_standard_everypar_tl}
@@ -6672,7 +7279,9 @@ Type H <return> for immediate help.}%
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltmeta.dtx (C) Copyright 2021, 2022
+%% File: ltmeta.dtx
+%% Copyright (C) 2021-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
\def\ltmetaversion{v1.0b}
\def\ltmetadate{2022/05/18}
@@ -6710,6 +7319,7 @@ Type H <return> for immediate help.}%
\DeclareRobustCommand\linebreak{\@testopt{\@no@lnbk-}4}
\DeclareRobustCommand\nolinebreak{\@testopt\@no@lnbk4}
\DeclareRobustCommand\samepage{\interlinepenalty\@M
+ \predisplaypenalty\@M
\postdisplaypenalty\@M
\interdisplaylinepenalty\@M
\@beginparpenalty\@M
@@ -7015,6 +7625,7 @@ Type H <return> for immediate help.}%
\global\let\do\noexpand
\UseOneTimeHook{begindocument/end}%
\ignorespaces}
+\let\do\noexpand
\NewHook{begindocument}
\NewHook{begindocument/before}
\NewHook{begindocument/end}
@@ -7159,21 +7770,24 @@ Type H <return> for immediate help.}%
\set@curr@file{#1}%
\expandafter\IfFileExists@\expandafter{\@curr@file}}
\long\def \IfFileExists@#1#2#3{%
- \openin\@inputcheck"#1" %
- \ifeof\@inputcheck
- \ifx\input@path\@undefined
- \let\reserved@a\@secondoftwo
+ \edef\@filef@und{\IfFileExists@@{#1}}%
+ \ifx\@filef@und\@empty
+ \if\relax\detokenize{#1}\relax
+ \let\reserved@a\@firstoftwo
+ \def\@filef@und{".tex" }%
\else
- \def\reserved@a{\@iffileonpath{#1}}%
+ \let\reserved@a\@secondoftwo
\fi
\else
- \closein\@inputcheck
- \edef\@filef@und{"#1" }%
\let\reserved@a\@firstoftwo
+ \edef\@filef@und{"\@filef@und" }%
\fi
\expandafter\def\expandafter\reserved@a
\expandafter{\reserved@a{#2}{#3}}%
\reserved@a}
+\ExplSyntaxOn
+\cs_new_eq:NN \IfFileExists@@ \file_full_name:n
+\ExplSyntaxOff
\long\def\@iffileonpath#1{%
\let\reserved@a\@secondoftwo
\expandafter\@tfor\expandafter\reserved@b\expandafter
@@ -7923,6 +8537,11 @@ Type H <return> for immediate help.}%
{\@nomath\mathversion
\expandafter\ifx\csname mv@#1\endcsname\relax
\@latex@error{Math version `#1' is not defined}\@eha\else
+ \ifcsname mv@\math@version @frozen\endcsname
+ \expandafter\let
+ \csname mv@\math@version @frozen\expandafter\endcsname
+ \csname mv@\math@version\endcsname
+ \fi
\edef\math@version{#1}%
\gdef\glb@currsize{}%
\aftergroup\glb@settings
@@ -11168,11 +11787,13 @@ Type H <return> for immediate help.}%
\@latex@warning{Reference `#3' on page \thepage \space
undefined}%
\else
- \expandafter#2#1\null
+ \expandafter#2#1\@empty\@empty\@empty\null
\fi}
-\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
+\long\def\@firstoffive#1#2#3#4#5{#1}
+\long\def\@secondoffive#1#2#3#4#5{#2}
+\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}}
\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname
- \@secondoftwo{#1}}
+ \@secondoffive{#1}}
\let\@kernel@ref\@kernel@sref
\let\@kernel@pageref\@kernel@spageref
\NewDocumentCommand\ref{s}
@@ -11193,9 +11814,17 @@ Type H <return> for immediate help.}%
\def\newlabel{\@newl@bel r}
\@onlypreamble\@newl@bel
\let \@multiplelabels \relax
+\providecommand\@currentlabelname{}
+\providecommand\@currentHref{}
+\providecommand\@kernel@reserved@label@data{}
+\NewHookWithArguments{label}{1}
\def\label#1{\@bsphack
+ \begingroup
+ \UseHookWithArguments{label}{1}{#1}%
\protected@write\@auxout{}%
- {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
+ {\string\newlabel{#1}{{\@currentlabel}{\thepage}%
+ {\@currentlabelname}{\@currentHref}{\@kernel@reserved@label@data}}}%
+ \endgroup
\@esphack}
\def\@currentcounter{}
\def\refstepcounter#1{\stepcounter{#1}%
@@ -11246,6 +11875,13 @@ Type H <return> for immediate help.}%
\NewHook{enddocument/end}
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
+\AddToHook{enddocument/info}[kernel/release]{%
+ \let\show@release@info\wlog
+ \show@release@info{ ***********}%
+ \the\LaTeXReleaseInfo
+ \show@release@info{ ***********}}
+
+\DeclareHookRule{enddocument/info}{kernel/release}{before}{kernel/filelist}
\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
\def\@enddocument@kernel@warnings{%
\ifdim \font@submax >\fontsubfuzz\relax
@@ -11751,6 +12387,10 @@ Type H <return> for immediate help.}%
\ifx\mathdefaultsmode\@undefined\else
\mathdefaultsmode=1
\fi
+\let\@kernel@eqno\eqno
+\let\@kernel@leqno\leqno
+\protected\def\eqno{\@kernel@eqno\aftergroup\ignorespaces}
+\protected\def\leqno{\@kernel@leqno\aftergroup\ignorespaces}
%%% From File: ltlists.dtx
\newskip\topsep
\newskip\partopsep
@@ -13690,7 +14330,9 @@ Type H <return> for immediate help.}%
\def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}
\let\@cite@ofmt\hbox
\def\@biblabel#1{[#1]}
-%% File: ltmarks.dtx (C) Copyright 2022
+%% File: ltmarks.dtx
+%% Copyright (C) 2022-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
\def\ltmarksversion{v1.0d}
\def\ltmarksdate{2022/06/01}
@@ -14177,6 +14819,7 @@ Type H <return> for immediate help.}%
\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\let\IfPackageAtLeastTF\@ifpackagelater
\let\IfClassAtLeastTF\@ifclasslater
+\def\IfFileAtLeastTF#1{\expandafter\@ifl@t@r\csname ver@#1\endcsname}
\def\@ifl@ter#1#2{%
\expandafter\@ifl@t@r
\csname ver@#2.#1\endcsname}
@@ -14686,7 +15329,7 @@ Type H <return> for immediate help.}%
\csname filec@ntents@\reserved@a\endcsname
\else
\@latex@error{Unknown filecontents option \reserved@a}%
- {Valid options are force (or overwrite), nosearch, noheader}%
+ {Valid options are force (or overwrite), nosearch, noheader, nowarn}%
\fi}%
\filec@ntents
}
@@ -14698,6 +15341,10 @@ Type H <return> for immediate help.}%
\def\filec@ntents@where{in current directory}}
\let\filec@ntents@checkdir\@empty
\def\filec@ntents@where{exists on the system}
+\def\filec@ntents@nowarn{%
+ \let\filec@ntents@warning\@latex@note@no@line
+}
+\let\filec@ntents@warning\@latex@warning@no@line
\begingroup%
\@tempcnta=1
\loop
@@ -14742,8 +15389,8 @@ Type H <return> for immediate help.}%
write to the file you are reading from!\MessageBreak%
Data is written to screen instead.}%
\else%
- \@latex@warning@no@line%
- {Writing or overwriting file `\@currdir\@curr@file'}%
+ \filec@ntents@warning%
+ {Writing or overwriting file `\@curr@file'}%
\immediate\openout\reserved@c\q@curr@file\relax%
\fi%
\fi%
@@ -15216,8 +15863,8 @@ Type H <return> for immediate help.}%
{ \__keys_options_expand_module:Nn \keys_set:nn {#1} {#2} }
\ExplSyntaxOff
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0n}
-\providecommand\ltfilehookdate{2022/08/18}
+\providecommand\ltfilehookversion{v1.0o}
+\providecommand\ltfilehookdate{2023/04/02}
\ExplSyntaxOn
\tl_new:N \CurrentFile
\tl_new:N \CurrentFilePath
@@ -15386,7 +16033,7 @@ Type H <return> for immediate help.}%
\def\@kernel@make@file@csname#1#2#3{%
\xdef#1{\expandafter\@set@curr@file@aux
\csname\expandafter#2\@firstofone#3\@nil\endcsname}}
-\def\@set@curr@file@aux#1{%
+\long\def\@set@curr@file@aux#1{%
\expandafter\ifx\csname\endcsname#1%
.tex\else\string#1\fi}
\def\@filehook@set@CurrentFile{%
@@ -15504,12 +16151,12 @@ Type H <return> for immediate help.}%
\declare@file@substitution{atveryend.sty}{atveryend-ltx.sty}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2022
-%% Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0m}
-\providecommand\ltshipoutdate{2022/08/26}
+\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
@@ -15623,6 +16270,7 @@ Type H <return> for immediate help.}%
\bool_gset_true:N \g__shipout_lastpage_handled_bool
}
}
+ \hook_use:n {shipout}
\__shipout_finalize_box:
\cs_set_eq:NN \protect \exp_not:N
\tex_shipout:D \box_use:N \l_shipout_box
@@ -15654,6 +16302,7 @@ Type H <return> for immediate help.}%
\cs_gset_eq:NN \RawShipout \__shipout_execute_raw:
\cs_new_eq:NN \__shipout_saved_protect: \protect
\hook_new:n{shipout/before}
+\hook_new:n{shipout}
\hook_new:n{shipout/after}
\hook_new:n{shipout/foreground}
\hook_new:n{shipout/background}
@@ -17350,6 +17999,17 @@ Type H <return> for immediate help.}%
\lccode`\^^[=`\^^[ % oe in OT1
\fi % End of reset block for 8-bit engines
\ExplSyntaxOn
+\newcommand*\BCPdata[1]{
+ \str_case:nn {#1}
+ {
+ { language } { en }
+ { region } { US }
+ { script } { Latn }
+ { tag } { en-US }
+ }
+}
+\ExplSyntaxOff
+\ExplSyntaxOn
\keys_define:nn { __kernel }
{
lang .str_set:N = \reserved@a ,
@@ -17359,26 +18019,17 @@ Type H <return> for immediate help.}%
{
\cs_set_nopar:Npn \reserved@a { }
\tl_if_blank:nTF {#2}
- { \@@text@case@aux@ }
- { \keys_set:nn { __kernel } {#2} }
- \use:c { text_ #1 case:Vn } \reserved@a {#3}
- }
-\cs_new_protected:Npn \@@text@case@aux@ { }
-\tl_gput_right:Nn \@kernel@after@begindocument
- {
- \@ifpackageloaded { babel }
{
- \@ifpackagelater { babel } { 2020-01-15 }
+ \str_set:Nx \reserved@a
+ { \BCPdata { casing } }
+ \str_if_empty:NT \reserved@a
{
- \cs_gset_protected:Npn \@@text@case@aux@
- {
- \str_set:Nx \reserved@a
- { \localeinfo* { tag.bcp47 } }
- }
+ \str_set:Nx \reserved@a
+ { \BCPdata { language } }
}
- { }
}
- { }
+ { \keys_set:nn { __kernel } {#2} }
+ \use:c { text_ #1 case:Vn } \reserved@a {#3}
}
\exp_args_generate:n { cnx }
\cs_set_protected:Npn \reserved@a #1
@@ -17393,26 +18044,20 @@ Type H <return> for immediate help.}%
\reserved@a { Lower }
\reserved@a { Title }
\cs_new_protected:cpn { MakeLowercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
- {
- \let \kernel@saved@OE \OE
+ {{
\let \OE \oe
\@@text@case@aux { lower } {#1} {#2}
- \let \OE \kernel@saved@OE
- }
+ }}
\cs_new_protected:cpn { MakeUppercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
- {
- \let \kernel@saved@oe \oe
+ {{
\let \oe \OE
\@@text@case@aux { upper } {#1} {#2}
- \let \oe \kernel@saved@oe
- }
+ }}
\cs_new_protected:cpn { MakeTitlecase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
- {
- \let \kernel@saved@oe \oe
+ {{
\let \oe \OE
\@@text@case@aux { title } {#1} {#2}
- \let \oe \kernel@saved@oe
- }
+ }}
\cs_new_protected_nopar:Npn\AddToNoCaseChangeList
{\tl_put_right:Nn \l_text_case_exclude_arg_tl}
\AddToNoCaseChangeList{ \NoCaseChange }
@@ -17420,6 +18065,27 @@ Type H <return> for immediate help.}%
\cs_new_eq:NN \CaseSwitch \text_case_switch:nnnn
\cs_new_eq:NN \DeclareCaseChangeEquivalent
\text_declare_case_equivalent:Nn
+\NewDocumentCommand \DeclareLowercaseMapping { o m m }
+ {
+ \IfNoValueTF {#1}
+ { \text_declare_lowercase_mapping:nn }
+ { \text_declare_lowercase_mapping:nnn {#1} }
+ {#2} {#3}
+ }
+\NewDocumentCommand \DeclareTitlecaseMapping { o m m }
+ {
+ \IfNoValueTF {#1}
+ { \text_declare_titlecase_mapping:nn }
+ { \text_declare_titlecase_mapping:nnn {#1} }
+ {#2} {#3}
+ }
+\NewDocumentCommand \DeclareUppercaseMapping { o m m }
+ {
+ \IfNoValueTF {#1}
+ { \text_declare_uppercase_mapping:nn }
+ { \text_declare_uppercase_mapping:nnn {#1} }
+ {#2} {#3}
+ }
\ExplSyntaxOff
\def\@uclclist{\oe\OE\o\O\ae\AE
\dh\DH\dj\DJ\l\L\ng\NG\ss\SS\ij\IJ\th\TH}
diff --git a/Master/texmf-dist/tex/latex/base/latex209.def b/Master/texmf-dist/tex/latex/base/latex209.def
index 110d7fb26e0..9eb74616f5d 100644
--- a/Master/texmf-dist/tex/latex/base/latex209.def
+++ b/Master/texmf-dist/tex/latex/base/latex209.def
@@ -15,7 +15,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty
index 0597e6a5ba4..8084e186c1c 100644
--- a/Master/texmf-dist/tex/latex/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty
@@ -65,7 +65,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -290,7 +290,7 @@
}
%%% From File: ltvers.dtx
\edef\latexreleaseversion
- {2022-11-01}
+ {2023-06-01}
\newif\if@includeinrelease
\@includeinreleasefalse
\def\IncludeInRelease#1{%
@@ -421,7 +421,7 @@
\@skipping@modulefalse
\fi}
\ProvidesPackage{latexrelease}
- [2022/02/28 v1.0o LaTeX release emulation and tests
+ [2022/11/14 v1.0p LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\@ifundefined{sourceLaTeXdate}{%
@@ -544,6 +544,7 @@ of this package available from CTAN}
\q_recursion_tail \q_recursion_tail
\q_recursion_stop
\msg_redirect_name:nnn { hooks } { exists } { none }
+\msg_redirect_name:nnn { mark } { class-already-defined }{ none }
\cs_gset_protected:Npn \latexrelease@postltcmd
{
\__latexrelease_redefines:w
@@ -764,6 +765,7 @@ of this package available from CTAN}
\def\extrafloats#1{%
\ifnum#1>\z@
\count@\numexpr\float@count-1\relax
+ \ifnum\count@<266 \ch@ck0\m@ne\insert\fi
\ch@ck0\count@\count
\ch@ck1\count@\dimen
\ch@ck2\count@\skip
@@ -772,8 +774,7 @@ of this package available from CTAN}
\global\expandafter\e@alloc@chardef
\csname bx@\the\float@count\endcsname\float@count
\@cons\@freelist{\csname bx@\the\float@count\endcsname}%
-\expandafter
-\extrafloats\expandafter{\numexpr#1-1\relax}%
+\expandafter\extrafloats\expandafter{\the\numexpr#1-1\expandafter}%
\fi}%
\fi
\EndIncludeInRelease
@@ -1630,9 +1631,11 @@ of this package available from CTAN}
\long\def\declare@commandcopy#1#2#3#4{%
\edef\reserved@a{\@expl@cs@to@str@@N#3}%
\@ifundefined\reserved@a{#1}{#2}%
- {\robust@command@act
- \@declarecommandcopylisthook#4%
- \declare@commandcopy@let{#3#4}}}
+ {\declare@commandcopy@do{#3}{#4}}}
+\long\def\declare@commandcopy@do#1#2{%
+ \robust@command@act
+ \@declarecommandcopylisthook#2%
+ \declare@commandcopy@let{#1#2}}
\def\@declarecommandcopylisthook{%
{\@if@DeclareRobustCommand \@copy@DeclareRobustCommand}%
{\@if@newcommand \@copy@newcommand}}
@@ -1647,6 +1650,35 @@ of this package available from CTAN}
\let\@declarecommandcopylisthook\@undefined
\let\declare@commandcopy@let\@undefined
\EndIncludeInRelease
+\IncludeInRelease{2023-06-01}{\DeclareEnvironmentCopy}
+ {Add \NewEnvironmentCopy, \RenewEnvironmentCopy, and \DeclareEnvironmentCopy}%
+\def\NewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstoftwo\@notdefinable}}
+\def\RenewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@latex@error{Environment \reserved@a\space undefined}\@ehc
+ \@firstofone}%
+ {\@firstofone}}
+\def\DeclareEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstofone}}
+\long\def\declare@environmentcopy#1#2#3#4{%
+ \edef\reserved@a{\@ifundefined{#3}{end#3}{#3}}%
+ \@ifundefined\reserved@a
+ {\def\reserved@a{#3}#1}%
+ {\def\reserved@a{#3}#2}%
+ {\ExpandArgs{cc}\declare@commandcopy@do{#3}{#4}%
+ \ExpandArgs{cc}\declare@commandcopy@do{end#3}{end#4}}}
+\EndIncludeInRelease
+\IncludeInRelease{0000-00-00}{\DeclareEnvironmentCopy}
+ {Undefine \NewEnvironmentCopy, \RenewEnvironmentCopy, and \DeclareEnvironmentCopy}%
+\let\NewEnvironmentCopy\@undefined
+\let\RenewEnvironmentCopy\@undefined
+\let\DeclareEnvironmentCopy\@undefined
+\EndIncludeInRelease
\IncludeInRelease{2020-10-01}{\ShowCommand}%
{Add \ShowCommand}%
\long\def\ShowCommand#1{%
@@ -1718,9 +1750,10 @@ of this package available from CTAN}
\robust@command@chk@safe#1%
{\@if@newcommand#1%
{\@show@newcommand}%
- {\show}}%
- {\show}%
+ {\@show@macro}}%
+ {\@show@macro}%
#1}
+\let\@show@macro\show
\long\def\@if@newcommand#1{%
\edef\reserved@a{%
\noexpand\@protected@testopt
@@ -1748,13 +1781,15 @@ of this package available from CTAN}
\typeout{->\@expl@cs@replacement@spec@@N#1.^^J}%
\expandafter\@show@newcommand@aux
\csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
- \expandafter{#1}}
-\long\def\@show@newcommand@aux#1#2{%
+ \expandafter{#1}\@show@tokens}
+\long\def\@show@newcommand@aux#1#2#3{%
\typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}%
- \edef\reserved@a{%
- default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
- \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}%
- \showtokens\expandafter\expandafter\expandafter{\expandafter\reserved@a}}
+ #3{default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
+ \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}}
+\long\def\@show@tokens#1{%
+ \edef\reserved@a{#1}%
+ \showtokens\expandafter
+ \expandafter\expandafter{\expandafter\reserved@a}}
\EndIncludeInRelease
\IncludeInRelease{0000-00-00}{\@if@DeclareRobustCommand}
{Undefine \@if@DeclareRobustCommand, \@if@newcommand,
@@ -1770,6 +1805,57 @@ of this package available from CTAN}
\let\show@kernel@robust@command\@undefined
\let\@show@newcommand@aux\@undefined
\EndIncludeInRelease
+\IncludeInRelease{2023-06-01}{\ShowEnvironment}
+ {Add \ShowEnvironment}%
+\def\ShowEnvironment#1{%
+ \expandafter\@show@environment\csname #1\endcsname}
+\long\def\@show@environment#1{%
+ \robust@command@act
+ \@showenvironmentlisthook#1%
+ \@show@normalenv#1}
+\def\@showenvironmentlisthook{%
+ {\@if@DeclareRobustCommand \@show@DeclareRobustCommand@env}%
+ {\@if@newcommand \@show@newcommand@env}}
+\long\def\@show@newcommand@env#1{%
+ \@show@environment@begin#1%
+ \expandafter\@show@newcommand@aux
+ \csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
+ \expandafter{#1}\@show@typeout
+ \@show@environment@end#1}
+\long\def\@show@DeclareRobustCommand@env#1{%
+ \@show@environment@begin#1%
+ \begingroup
+ \let\@show@tokens\@show@typeout
+ \let\@show@macro\@show@nonstop
+ \expandafter\show@kernel@robust@command
+ \csname\@expl@cs@to@str@@N#1 \endcsname
+ \endgroup
+ \@show@environment@end#1}
+\long\def\@show@environment@begin#1{%
+ \typeout{> \string\begin{\@expl@cs@to@str@@N#1}=environment:}%
+ \typeout{\@expl@cs@argument@spec@@N#1->%
+ \@expl@cs@replacement@spec@@N#1.^^J}}
+\long\def\@show@normalenv#1{%
+ \@show@environment@begin#1%
+ \@show@environment@end#1}
+\long\def\@show@environment@end#1{%
+ \expandafter\@show@environment@end@aux
+ \csname end\@expl@cs@to@str@@N#1\endcsname#1}
+\long\def\@show@environment@end@aux#1#2{%
+ \@show@tokens{\string\end{\@expl@cs@to@str@@N#2}%
+ \ifx\relax#1=undefined%
+ \else:^^J\@expl@cs@argument@spec@@N#1->%
+ \@expl@cs@replacement@spec@@N#1%
+ \fi}}
+\def\@show@nonstop#1{%
+ \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:^^J%
+ \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}}
+\def\@show@typeout#1{\typeout{> #1.^^J}}
+\EndIncludeInRelease
+\IncludeInRelease{0000-00-00}{\ShowEnvironment}
+ {Undefine \ShowEnvironment}%
+\let\ShowEnvironment\@undefined
+\EndIncludeInRelease
\IncludeInRelease{2018-04-01}{\@ifundefined}
{Leave commands undefined in \@ifundefined}%
\def\@ifundefined#1{%
@@ -1900,8 +1986,8 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.1a}
-\def\ltcmddate{2022-08-16}
+\def\ltcmdversion{v1.1e}
+\def\ltcmddate{2023-05-26}
\edef\@latexrelease@catcode@null{\the\catcode`\^^@ }
\catcode`\^^@=12
\ExplSyntaxOn
@@ -2186,10 +2272,10 @@ of this package available from CTAN}
\int_zero:N \l__cmd_current_arg_int
\__cmd_tl_mapthread_function:NNN \l__cmd_args_tl \l__cmd_defaults_tl
\__cmd_defaults_def:nn
- \cs_generate_from_arg_count:NNVo \__cmd_tmp:w \cs_set:Npn
+ \cs_generate_from_arg_count:NNno \__cmd_tmp:w \cs_set:Npn
\l__cmd_current_arg_int \l__cmd_tmpa_tl
}
-\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNno }
\cs_new_protected:Npn \__cmd_defaults_def:nn
{
\int_incr:N \l__cmd_current_arg_int
@@ -2968,6 +3054,27 @@ of this package available from CTAN}
\exp_not:c { #8 ~ } \exp_not:c { #8 ~ code }
\exp_not:n { {#5} {#6} {#7} }
}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__cmd_copy:NN}%
+ {Support~\NewCommandCopy~in~ltcmd}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__cmd_copy_expandable:nnNN}%
+ {Distinguish~non-expandable~document~commands}
+\cs_new_protected:Npn \__cmd_copy_expandable:nnNN #1 #2 #3 #4
+ {
+ \cs_set_eq:cc { #1 ~ code } { #2 ~ code }
+ \__cmd_set_eq_if_exist:cc { #1 ~ } { #2 ~ }
+ \__cmd_set_eq_if_exist:cc { #1 ~ \c_space_tl } { #2 ~ \c_space_tl }
+ \__cmd_set_eq_if_exist:cc { #1 ~ defaults } { #2 ~ defaults }
+ \exp_after:wN \__cmd_copy_expandable_signature:NnNNNNnnn #4 {#1} {#2}
+ \token_if_protected_macro:NTF #4
+ { \cs_set_protected_nopar:Npx }{ \cs_set_nopar:Npx }
+ #3
+ { \exp_after:wN \__cmd_copy_expandable:NnNNNNnnn #4 {#1} {#2} }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/11/15}{\__cmd_copy_expandable:nnNN}%
+ {Support~\NewCommandCopy~in~ltcmd}
\cs_new_protected:Npn \__cmd_copy_expandable:nnNN #1 #2 #3 #4
{
\cs_set_eq:cc { #1 ~ code } { #2 ~ code }
@@ -2978,6 +3085,12 @@ of this package available from CTAN}
\cs_set_nopar:Npx #3
{ \exp_after:wN \__cmd_copy_expandable:NnNNNNnnn #4 {#1} {#2} }
}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__cmd_copy_expandable:nnNN}%
+ {Support~\NewCommandCopy~in~ltcmd}
+\EndIncludeInRelease
+\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
{
\exp_not:N #1 \exp_not:n { {#2} }
@@ -3094,7 +3207,7 @@ of this package available from CTAN}
}
\exp_args:No \__cmd_tmp:w { \tl_to_str:n { end } }
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__cmd_copy:NN}%
+\IncludeInRelease{2020/10/01}{\__cmd_copy:NN (part 2)}%
{Support~\NewCommandCopy~in~ltcmd}
\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{\__cmd_show:N}%
@@ -3118,19 +3231,46 @@ of this package available from CTAN}
\cs_new_protected:Npn \__cmd_show_command:N #1
{ \exp_after:wN \__cmd_show_command:NnNNwN #1 \q__cmd #1 }
\cs_new_protected:Npn \__cmd_show_command:NnNNwN #1 #2 #3 #4 #5 \q__cmd #6
- { \__cmd_show_command_aux:nNNn { document~command } #6 #4 {#2} }
+ {
+ \__cmd_show_command_aux:NnNNn \tl_show:x
+ { document~command } #6 #4 {#2}
+ }
\cs_new_protected:Npn \__cmd_show_expandable:N #1
{ \exp_after:wN \__cmd_show_expandable:NnNNNNnN #1 #1 }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__cmd_show:N}%
+ {Support~\ShowCommand~in~ltcmd}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__cmd_show_expandable:NnNNNNnN}%
+ {Distinguish~non-expandable~document~commands}
\cs_new_protected:Npn \__cmd_show_expandable:NnNNNNnN #1 #2 #3 #4 #5 #6 #7 #8
- { \__cmd_show_command_aux:nNNn { expandable~document~command } #8 #5 {#2} }
-\cs_new_protected:Npn \__cmd_show_command_aux:nNNn #1 #2 #3 #4
{
- \__cmd_split_signature:n {#4}
- \tl_show:x
+ \exp_args:NNe \__cmd_show_command_aux:NnNNn \tl_show:x
+ { \token_if_protected_macro:NF #8 { expandable~ } document~command }
+ #8 #5 {#2}
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/11/15}{\__cmd_show_expandable:NnNNNNnN}%
+ {Support~\ShowCommand~in~ltcmd}
+\cs_new_protected:Npn \__cmd_show_expandable:NnNNNNnN #1 #2 #3 #4 #5 #6 #7 #8
+ {
+ \__cmd_show_command_aux:NnNNn \tl_show:x
+ { expandable~document~command } #8 #5 {#2}
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__cmd_show_expandable:NnNNNNnN}%
+ {Support~\ShowCommand~in~ltcmd}
+\EndIncludeInRelease
+\IncludeInRelease{2021/11/15}{\__cmd_show:N (part 2)}%
+ {Support~\ShowCommand~in~ltcmd}
+\cs_new_protected:Npn \__cmd_show_command_aux:NnNNn #1 #2 #3 #4 #5
+ {
+ \__cmd_split_signature:n {#5}
+ #1
{
- \token_to_str:N #2 = #1: \iow_newline:
+ \token_to_str:N #3 = #2: \iow_newline:
\tl_use:N \l__cmd_tmpa_tl
- -> \cs_replacement_spec:N #3
+ -> \cs_replacement_spec:N #4
}
}
\cs_new_protected:Npn \__cmd_show_environment:N #1
@@ -3147,12 +3287,14 @@ of this package available from CTAN}
{
\use:x
{
- \__cmd_show_command_aux:nNNn { document~environment }
+ \__cmd_show_command_aux:NnNNn \__cmd_show:x { document~environment }
{ \exp_not:N \begin {#3} }
\exp_not:c { environment~ #3 ~ code }
{#2}
}
}
+\cs_new_protected:Npn \__cmd_show:x #1
+ { \iow_term:x { > ~ #1 . \iow_newline: } }
\cs_new_protected:Npn \__cmd_show_environment_end:N #1
{
\exp_args:NNx \__cmd_check_end:Nn \l__cmd_tmpa_tl { \cs_to_str:N #1 }
@@ -3160,6 +3302,8 @@ of this package available from CTAN}
}
\tl_gput_right:Nn \@showcommandlisthook
{ { \__kernel_cmd_if_xparse:NTF \__cmd_show:N } }
+\tl_gput_right:Nn \@showenvironmentlisthook
+ { { \__kernel_cmd_if_xparse:NTF \__cmd_show:N } }
\cs_new_protected:Npn \__cmd_split_signature:n #1
{
\int_set:Nn \l__cmd_current_arg_int { 1 }
@@ -3240,7 +3384,7 @@ of this package available from CTAN}
\int_incr:N \l__cmd_current_arg_int
}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__cmd_show:N}%
+\IncludeInRelease{2020/10/01}{\__cmd_show:N (part 2)}%
{Support~\ShowCommand~in~ltcmd}
\EndIncludeInRelease
\cs_new_protected:Npn \__cmd_grab_b:w
@@ -3574,6 +3718,7 @@ of this package available from CTAN}
\tl_set:Nn \l__cmd_signature_tl {#1}
\group_begin:
\tex_escapechar:D = 92 \scan_stop:
+ \tex_endlinechar:D = `\^^M \scan_stop:
\tl_clear:N \l__cmd_v_arg_tl
\peek_remove_spaces:n
{
@@ -3591,8 +3736,8 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__cmd_grab_v_group_end:
{
- \exp_args:NNNo
- \group_end:
+ \exp_args:NNNo
+ \group_end:
\tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl }
}
\cs_new_protected:Npn \__cmd_grab_v_aux_test:N #1
@@ -3670,7 +3815,6 @@ of this package available from CTAN}
{
\cs_set_eq:NN \do \char_set_catcode_other:N
\dospecials
- \tex_endlinechar:D = `\^^M \scan_stop:
\bool_if:NTF \l__cmd_long_bool
{ \char_set_catcode_other:n { \tex_endlinechar:D } }
{ \char_set_catcode_parameter:n { \tex_endlinechar:D } }
@@ -4740,8 +4884,8 @@ of this package available from CTAN}
\catcode`\^^@=\@latexrelease@catcode@null\relax
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0v}
-\def\lthooksdate{2022/06/15}
+\def\lthooksversion{v1.1e}
+\def\lthooksdate{2023/06/06}
\ExplSyntaxOn
\NewModuleRelease{2020/10/01}{lthooks}
{The~hook~management~system}
@@ -4774,44 +4918,64 @@ of this package available from CTAN}
\tl_new:N \g__hook_hook_curr_name_tl
\seq_new:N \g__hook_name_stack_seq
\cs_new_eq:NN \__hook_tmp:w ?
+\tl_const:Nn \c__hook_empty_tl { }
+\tl_const:Nn \c__hook_nine_parameters_tl { #1#2#3#4#5#6#7#8#9 }
\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx }
\cs_generate_variant:Nn \tl_show:n { x }
\cs_generate_variant:Nn \tl_log:n { x }
+\cs_generate_variant:Nn \tl_set:Nn { Ne }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
+\cs_generate_variant:Nn \prop_put:Nnn { Nne }
+\cs_generate_variant:Nn \str_count:n { e }
\scan_new:N \s__hook_mark
-\cs_new:Npn \__hook_clean_to_scan:w #1 \s__hook_mark { }
-\cs_new_protected:Npn \__hook_tl_set:Nn #1#2
- { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
-\cs_new_protected:Npn \__hook_tl_set:Nx #1#2
- { \cs_set_nopar:Npx #1 {#2} }
-\cs_generate_variant:Nn \__hook_tl_set:Nn { c }
-\cs_generate_variant:Nn \__hook_tl_set:Nx { c }
+\cs_new:Npn \__hook_use_none_delimit_by_s_mark:w #1 \s__hook_mark { }
+\cs_new:Npn \__hook_use_i_delimit_by_s_mark:nw #1 #2 \s__hook_mark {#1}
+\cs_new_protected:Npn \__hook_tl_set:cn #1#2
+ { \cs_set_nopar:cpx {#1} { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \__hook_tl_gset:Nn #1#2
{ \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
-\cs_new_protected:Npn \__hook_tl_gset:No #1#2
- { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \__hook_tl_gset:Nx #1#2
{ \cs_gset_nopar:Npx #1 {#2} }
-\cs_generate_variant:Nn \__hook_tl_gset:Nn { c }
-\cs_generate_variant:Nn \__hook_tl_gset:No { c }
+\cs_generate_variant:Nn \__hook_tl_gset:Nn { c, co }
\cs_generate_variant:Nn \__hook_tl_gset:Nx { c }
\cs_new_protected:Npn \__hook_tl_gput_right:Nn #1#2
{ \__hook_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
-\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No, cn }
+\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { Ne, cn }
\cs_new_protected:Npn \__hook_tl_gput_left:Nn #1#2
{
\__hook_tl_gset:Nx #1
{ \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
-\cs_generate_variant:Nn \__hook_tl_gput_left:Nn { No }
\cs_new_eq:NN \__hook_tl_gset_eq:NN \tl_gset_eq:NN
\cs_new_protected:Npn \__hook_tl_gclear:N #1
{ \__hook_tl_gset_eq:NN #1 \c_empty_tl }
\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
-
+\IncludeInRelease{2023/06/01}{\hook_new_with_args:nn}
+ {Hooks~with~args}
\cs_new_protected:Npn \hook_new:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_new:nn {#1} { 0 } }
+\cs_new_protected:Npn \hook_new_with_args:nn #1 #2
+ { \__hook_normalize_hook_args:Nn \__hook_new:nn {#1} {#2} }
+\cs_new_protected:Npn \__hook_new:nn #1 #2
+ {
+ \__hook_if_declared:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
+ \cs_undefine:c { __hook~#1 }
+ \cs_undefine:c { c__hook_#1_parameter_tl }
+ \__hook_make_usable:nn {#1} {#2}
+ \__hook_update_hook_code:n {#1}
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_new_with_args:nn}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \hook_new:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
-\cs_new_protected:Npn \__hook_new:n #1
+\cs_undefine:N \__hook_new:nn
+\cs_gset_protected:Npn \__hook_new:n #1
{
\__hook_if_declared:nTF {#1}
{ \msg_error:nnn { hooks } { exists } {#1} }
@@ -4820,7 +4984,40 @@ of this package available from CTAN}
\__hook_make_usable:n {#1}
}
}
-\cs_new_protected:Npn \__hook_make_usable:n #1
+\cs_gset_protected:Npn \hook_new_with_args:nn #1 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_make_usable:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_make_usable:nn #1 #2
+ {
+ \__hook_if_usable:nF {#1}
+ {
+ \seq_gput_right:Nn \g__hook_all_seq {#1}
+ \__kernel_cs_parm_from_arg_count:nnF
+ { \tl_const:cn { c__hook_#1_parameter_tl } } {#2}
+ {
+ \msg_error:nnnn { hooks } { too-many-args } {#1} {#2}
+ \tl_const:cx { c__hook_#1_parameter_tl }
+ { \exp_not:V \c__hook_nine_parameters_tl }
+ }
+ \__hook_normalise_cs_args:nn { _toplevel } {#1}
+ \__hook_normalise_cs_args:nn { _next } {#1}
+ \__hook_code_gset:nn {#1} { }
+ \__hook_init_structure:n {#1}
+ \__hook_normalise_code_pool:n {#1}
+ \clist_if_exist:cF { g__hook_#1_labels_clist }
+ {
+ \clist_new:c { g__hook_#1_labels_clist }
+ \tl_new:c { g__hook_#1_reversed_tl }
+ }
+ \__hook_include_legacy_code_chunk:n {#1}
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_make_usable:nn}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_make_usable:nn
+\cs_gset_protected:Npn \__hook_make_usable:n #1
{
\tl_if_exist:cF { __hook~#1 }
{
@@ -4832,38 +5029,127 @@ of this package available from CTAN}
\__hook_include_legacy_code_chunk:n {#1}
}
}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_init_structure:n}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_init_structure:n #1
{
\__hook_if_structure_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
+ \__hook_toplevel_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_init_structure:n}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_init_structure:n #1
+ {
+ \__hook_if_structure_exist:nF {#1}
+ {
+ \prop_new:c { g__hook_#1_code_prop }
\tl_new:c { __hook_toplevel~#1 }
\tl_new:c { __hook_next~#1 }
}
}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_new_reversed_with_args:nn}
+ {Hooks~with~args}
\cs_new_protected:Npn \hook_new_reversed:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_new_reversed:nn {#1} { 0 } }
+\cs_new_protected:Npn \hook_new_reversed_with_args:nn #1 #2
+ { \__hook_normalize_hook_args:Nn \__hook_new_reversed:nn {#1} {#2} }
+\cs_new_protected:Npn \__hook_new_reversed:nn #1 #2
+ {
+ \__hook_if_declared:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \__hook_new:nn {#1} {#2}
+ \tl_gset:cn { g__hook_#1_reversed_tl } { - }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_new_reversed_with_args:nn}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \hook_new_reversed:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new_reversed:n {#1} }
-\cs_new_protected:Npn \__hook_new_reversed:n #1
+\cs_undefine:N \__hook_new_reversed:nn
+\cs_gset_protected:Npn \__hook_new_reversed:n #1
{
\__hook_new:n {#1}
\tl_gset:cn { g__hook_#1_reversed_tl } { - }
}
+\cs_undefine:N \__hook_new_reversed:nn
+\cs_gset_protected:Npn \hook_new_reversed_with_args:nn #1 #2 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_new_pair_with_args:nnn}
+ {Hooks~with~args}
\cs_new_protected:Npn \hook_new_pair:nn #1#2
- { \hook_new:n {#1} \hook_new_reversed:n {#2} }
+ { \__hook_normalize_hook_args:Nnn \__hook_new_pair:nnn {#1} {#2} { 0 } }
+\cs_new_protected:Npn \hook_new_pair_with_args:nnn #1#2#3
+ { \__hook_normalize_hook_args:Nnn \__hook_new_pair:nnn {#1} {#2} {#3} }
+\cs_new_protected:Npn \__hook_new_pair:nnn #1 #2 #3
+ {
+ \__hook_if_declared:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \__hook_if_declared:nTF {#2}
+ { \msg_error:nnn { hooks } { exists } {#2} }
+ {
+ \__hook_new:nn {#1} {#3}
+ \__hook_new_reversed:nn {#2} {#3}
+ }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_new_pair_with_args:nnn}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \hook_new_pair:nn #1#2
+ {
+ \hook_new:n {#1}
+ \hook_new_reversed:n {#2}
+ }
+\cs_gset_protected:Npn \hook_new_pair_with_args:nnn #1#2#3
+ { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_include_legacy_code_chunk:n}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_include_legacy_code_chunk:n #1
{
\tl_if_exist:cT { @#1hook }
{
\tl_if_empty:cF { @#1hook }
{
- \exp_args:Nnnv \__hook_hook_gput_code_do:nnn {#1}
- { legacy } { @#1hook }
+ \__hook_replacing_args_false:
+ \use:e
+ {
+ \__hook_hook_gput_code_do:nnn {#1} { legacy }
+ { \exp_not:v { @#1hook } }
+ }
+ \__hook_replacing_args_reset:
\__hook_tl_gclear:c { @#1hook }
}
}
}
-\IncludeInRelease{2021/06/01}%
- {\hook_disable_generic:n}{Disable~hooks}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_include_legacy_code_chunk:n}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_include_legacy_code_chunk:n #1
+ {
+ \tl_if_exist:cT { @#1hook }
+ {
+ \tl_if_empty:cF { @#1hook }
+ {
+ \exp_args:Nnnv \__hook_hook_gput_code_do:nnn
+ {#1} { legacy } { @#1hook }
+ \__hook_tl_gclear:c { @#1hook }
+ }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\hook_disable_generic:n}
+ {Disable~hooks}
\cs_new_protected:Npn \hook_disable_generic:n #1
{ \__hook_normalize_hook_args:Nn \__hook_disable:n {#1} }
\cs_new_protected:Npn \__hook_disable:n #1
@@ -4875,19 +5161,19 @@ of this package available from CTAN}
{
\bool_lazy_and:nnTF
{ \tl_if_exist_p:c { g__hook_#1_declared_tl } }
- { ! \tl_if_exist_p:c { __hook~#1 } }
+ { ! \cs_if_exist_p:c { __hook~#1 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}
- {\hook_disable_generic:n}{Disable~hooks}
+\IncludeInRelease{2020/10/01}{\hook_disable_generic:n}
+ {Disable~hooks}
\cs_new_protected:Npn \hook_disable_generic:n #1 {}
\EndIncludeInRelease
-\IncludeInRelease{2021/06/01}%
- {\hook_activate_generic:n}{Providing~hooks}
+\IncludeInRelease{2023/06/01}{\hook_activate_generic:n}
+ {Providing~hooks}
\cs_new_protected:Npn \hook_activate_generic:n #1
{ \__hook_normalize_hook_args:Nn \__hook_activate_generic:nn {#1} { } }
\cs_new_protected:Npn \__hook_activate_generic:nn #1 #2
@@ -4898,6 +5184,24 @@ of this package available from CTAN}
\__hook_if_declared:nF {#1}
{
\tl_new:c { g__hook_#1_declared_tl }
+ \__hook_make_usable:nn {#1} { 0 }
+ \tl_gset:cx { g__hook_#1_reversed_tl }
+ { \__hook_if_generic_reversed:nT {#1} { - } }
+ \__hook_update_hook_code:n {#1}
+ }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\hook_activate_generic:n}
+ {Providing~hooks}
+\cs_gset_protected:Npn \__hook_activate_generic:nn #1 #2
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \msg_warning:nnn { hooks } { activate-disabled } {#1} }
+ {
+ \__hook_if_declared:nF {#1}
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
\__hook_make_usable:n {#1}
\tl_gset:cx { g__hook_#1_reversed_tl }
{ \__hook_if_generic_reversed:nT {#1} { - } }
@@ -4906,11 +5210,9 @@ of this package available from CTAN}
}
}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}
- {\hook_activate_generic:n}{Providing~hooks}
-
-\cs_new_protected:Npn \hook_activate_generic:n #1 {}
-
+\IncludeInRelease{2020/10/01}{\hook_activate_generic:n}
+ {Providing~hooks}
+\cs_gset_protected:Npn \hook_activate_generic:n #1 { }
\EndIncludeInRelease
\cs_new:Npn \__hook_parse_label_default:n #1
{
@@ -5065,10 +5367,105 @@ of this package available from CTAN}
}
{ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
-\cs_new_protected:Npn \hook_gput_code:nnn #1 #2
- { \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} }
+\IncludeInRelease{2023/06/01}{\hook_gput_code_with_args:nnn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \hook_gput_code:nnn #1 #2 #3
+ {
+ \__hook_replacing_args_false:
+ \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} {#3}
+ \__hook_replacing_args_reset:
+ }
+\cs_new_protected:Npn \hook_gput_code_with_args:nnn #1 #2 #3
+ {
+ \__hook_replacing_args_true:
+ \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} {#3}
+ \__hook_replacing_args_reset:
+ }
\cs_new_protected:Npn \__hook_gput_code:nnn #1 #2 #3
{
+ \__hook_chk_args_allowed:nn {#1} { AddToHook }
+ \__hook_if_execute_immediately:nTF {#1}
+ {
+ \__hook_if_replacing_args:TF
+ {
+ \msg_error:nnnn { hooks } { one-time-args }
+ {#1} { AddToHook }
+ }
+ { }
+ \use:n
+ }
+ { \__hook_gput_code_store:nnn {#1} {#2} }
+ {#3}
+ }
+\cs_new_protected:Npn \__hook_gput_code_store:nnn #1 #2 #3
+ {
+ \__hook_if_usable:nTF {#1}
+ {
+ \__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
+ \__hook_update_hook_code:n {#1}
+ }
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \msg_error:nnn { hooks } { hook-disabled } {#1} }
+ { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ }
+ }
+\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
+ {
+ \__hook_debug:n{\iow_term:x{****~ Add~ to~
+ \__hook_if_usable:nF {#1} { undeclared~ }
+ hook~ #1~ (#2)
+ \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: }
+ {
+ \__hook_init_structure:n {#1}
+ \__hook_cs_gput_right:nnn { _toplevel } {#1} {#3}
+ }
+ { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ }
+ {
+ \exp_args:Nx \__hook_prop_gput_labeled_cleanup:nnn
+ {
+ \__hook_if_replacing_args:TF
+ { \exp_not:n }
+ { \__hook_double_hashes:n }
+ {#3}
+ }
+ {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__hook_prop_gput_labeled_cleanup:nnn #1 #2 #3
+ {
+ \tl_set:Nn \l__hook_return_tl {#1}
+ \__hook_if_replacing_args:TF
+ {
+ \__hook_if_usable:nT {#2}
+ {
+ \__hook_set_normalise_fn:nn {#2}
+ { Invalid~code~added~\msg_line_context: }
+ \__hook_normalise_fn:nn {#3} {#1}
+ \prop_get:NnN \l__hook_work_prop {#3} \l__hook_return_tl
+ }
+ }
+ { }
+ \exp_args:NcV \__hook_prop_gput_labeled_do:Nnn
+ { g__hook_#2_code_prop } \l__hook_return_tl {#3}
+ }
+\cs_new_protected:Npn \__hook_prop_gput_labeled_do:Nnn #1 #2 #3
+ {
+ \prop_get:NnNTF #1 {#3} \l__hook_return_tl
+ { \prop_gput:Nno #1 {#3} { \l__hook_return_tl #2 } }
+ { \prop_gput:Nnn #1 {#3} {#2} }
+ }
+\EndIncludeInRelease
+\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} }
+\cs_gset_protected:Npn \__hook_gput_code:nnn #1 #2 #3
+ {
\__hook_if_execute_immediately:nTF {#1}
{#3}
{
@@ -5084,7 +5481,7 @@ of this package available from CTAN}
}
}
}
-\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
+\cs_gset_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
{
\__hook_debug:n{\iow_term:x{****~ Add~ to~
\__hook_if_usable:nF {#1} { undeclared~ }
@@ -5108,21 +5505,61 @@ of this package available from CTAN}
{ \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
}
+\cs_gset_protected:Npn \hook_gput_code_with_args:nnn #1#2#3 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_chk_args_allowed:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_chk_args_allowed:nn #1 #2
+ {
+ \__hook_if_replacing_args:TF
+ {
+ \__hook_if_declared:nT {#1}
+ { \tl_if_empty:cT { c__hook_#1_parameter_tl } { \use_ii:nn } }
+ \use_none:n
+ {
+ \msg_error:nnnn { hooks } { without-args } {#1} {#2}
+ \__hook_replacing_args_false:
+ }
+ }
+ { }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_chk_args_allowed:nn}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_chk_args_allowed:nn
+\EndIncludeInRelease
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
\__hook_init_structure:n {#1}
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
}
+\IncludeInRelease{2023/06/01}{\__hook_try_declaring_generic_hook:nnn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
+ {
+ \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
+ \__hook_gput_code:nnn
+ \__hook_gput_undeclared_hook:nnn
+ {#1}
+ }
+\cs_new_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1
+ {
+ \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
+ \__hook_gput_next_code:nn
+ \__hook_gput_next_do:nn
+ {#1}
+ }
+\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{\__hook_try_declaring_generic_hook:nnn}
{Standardise~generic~hook~names}
-\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
+\cs_gset_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
{
\__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1}
\hook_gput_code:nnn
\__hook_gput_undeclared_hook:nnn
{#1}
}
-\cs_new_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_gput_next_code:nn
@@ -5158,8 +5595,8 @@ of this package available from CTAN}
{ #3 } {#1}
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\__hook_try_declaring_generic_hook:wn}%
- {Standardise~generic~hook~names}
+\IncludeInRelease{2023/06/01}{\__hook_try_declaring_generic_hook:wn}
+ {Hooks~with~args}
\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
@@ -5168,8 +5605,12 @@ of this package available from CTAN}
\__hook_if_usable:nF {#5}
{
\str_if_eq:nnT {#1} { cmd }
- { \__hook_try_put_cmd_hook:n {#5} }
- \__hook_make_usable:n {#5}
+ {
+ \__hook_try_put_cmd_hook:n {#5}
+ \__hook_make_usable:nn {#5} { 9 }
+ \use_none:nnn
+ }
+ \__hook_make_usable:nn {#5} { 0 }
}
\__hook_if_generic_reversed:nT {#5}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
@@ -5210,6 +5651,34 @@ of this package available from CTAN}
#1 #2 { #3 / #5 / #4 }
}
\EndIncludeInRelease
+\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
+ #1 / #2 / #3 / #4 \scan_stop: #5 { TF }
+ {
+ \__hook_if_generic:nTF {#5}
+ {
+ \__hook_if_usable:nF {#5}
+ {
+ \str_if_eq:nnT {#1} { cmd }
+ { \__hook_try_put_cmd_hook:n {#5} }
+ \__hook_make_usable:n {#5}
+ }
+ \__hook_if_generic_reversed:nT {#5}
+ { \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
+ \prg_return_true:
+ }
+ {
+ \__hook_if_deprecated_generic:nTF {#5}
+ {
+ \__hook_deprecated_generic_warn:n {#5}
+ \exp_after:wN \__hook_declare_deprecated_generic:NNn
+ \exp:w % \exp_end:
+ }
+ { \prg_return_false: }
+ }
+ }
+\EndIncludeInRelease
\IncludeInRelease{2021/06/01}{\__hook_try_declaring_generic_hook:wn}
{Support~cmd~hooks}
\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
@@ -5238,7 +5707,7 @@ 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
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
@@ -5260,23 +5729,11 @@ of this package available from CTAN}
{ \prg_return_false: }
}
}
-
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\__hook_if_file_hook:w}%
+\IncludeInRelease{2021/11/15}{\__hook_if_file_hook:w}
{Standardise~generic~hook~names}
-\prg_new_conditional:Npnn \__hook_if_file_hook:w
- #1 / #2 \s__hook_mark #3 { TF }
- {
- \__hook_if_generic:nTF {#3}
- {
- \str_if_eq:nnTF {#1} { file }
- { \prg_return_true: }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__hook_if_file_hook:w}%
+\IncludeInRelease{2020/10/01}{\__hook_if_file_hook:w}
{Standardise~generic~hook~names}
\prg_new_conditional:Npnn \__hook_if_file_hook:w
#1 / #2 / #3 \s__hook_mark { TF }
@@ -5296,10 +5753,10 @@ of this package available from CTAN}
{ \prg_return_false: }
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\__hook_file_hook_normalize:n}%
+\IncludeInRelease{2021/11/15}{\__hook_file_hook_normalize:n}
{Standardise~generic~hook~names}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\__hook_file_hook_normalize:n}%
+\IncludeInRelease{2020/10/01}{\__hook_file_hook_normalize:n}
{Standardise~generic~hook~names}
\cs_new:Npn \__hook_file_hook_normalize:n #1
{ \__hook_strip_double_slash:n {#1} }
@@ -5312,7 +5769,7 @@ of this package available from CTAN}
{ \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\c__hook_generics_prop}%
+\IncludeInRelease{2021/11/15}{\c__hook_generics_prop}
{Standardise~generic~hook~names}
\clist_map_inline:nn { cmd , env , file , package , class , include }
{
@@ -5330,20 +5787,30 @@ of this package available from CTAN}
}
\tl_const:cn { c__hook_deprecated_include/./end_tl } { }
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\c__hook_generics_prop}%
+\IncludeInRelease{2020/10/01}{\c__hook_generics_prop}
{Standardise~generic~hook~names}
\prop_const_from_keyval:Nn \c__hook_generics_prop
{cmd=,env=,file=,package=,class=,include=}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{\c__hook_generics_reversed_ii_prop}%
+\IncludeInRelease{2021/11/15}{\c__hook_generics_reversed_ii_prop}
{Standardise~generic~hook~names}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\c__hook_generics_reversed_ii_prop}%
+\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=}
\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\c__hook_parameter_cmd/./before_tl}
+ {Hooks~with~args}
+\tl_const:cn { c__hook_parameter_cmd/./before_tl } { #1#2#3#4#5#6#7#8#9 }
+\tl_const:cn { c__hook_parameter_cmd/./after_tl } { #1#2#3#4#5#6#7#8#9 }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\c__hook_parameter_cmd/./before_tl}
+ {Hooks~with~args}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_gremove_code:nn}
+ {Hooks~with~args}
\cs_new_protected:Npn \hook_gremove_code:nn #1 #2
{ \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} }
\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
@@ -5353,6 +5820,39 @@ of this package available from CTAN}
\str_if_eq:nnTF {#2} {*}
{
\prop_gclear:c { g__hook_#1_code_prop }
+ \__hook_toplevel_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
+ }
+ {
+ \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
+ { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
+ }
+ }
+ \__hook_if_usable:nT {#1}
+ { \__hook_update_hook_code:n {#1} }
+ }
+ {
+ \__hook_if_deprecated_generic:nTF {#1}
+ {
+ \__hook_deprecated_generic_warn:n {#1}
+ \__hook_do_deprecated_generic:Nn \__hook_gremove_code:nn {#1} {#2}
+ }
+ { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_gremove_code:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
+ {
+ \__hook_if_structure_exist:nTF {#1}
+ {
+ \str_if_eq:nnTF {#2} {*}
+ {
+ \prop_gclear:c { g__hook_#1_code_prop }
\__hook_tl_gclear:c { __hook_toplevel~#1 }
\__hook_tl_gclear:c { __hook_next~#1 }
}
@@ -5376,9 +5876,276 @@ of this package available from CTAN}
{ \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} }
}
}
-\prop_new:c {g__hook_??_code_prop}
-\prop_new:c {__hook~??}
-\tl_new:c {g__hook_??_reversed_tl}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_cs_gput_right:nnn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_cs_gput_right:nnn #1 #2
+ {
+ \if:w T
+ \__hook_if_declared:nF {#2} { F }
+ \tl_if_empty:cF { c__hook_#2_parameter_tl } { F }
+ T
+ \exp_after:wN \__hook_cs_gput_right_fast:nnn
+ \else:
+ \exp_after:wN \__hook_cs_gput_right_slow:nnn
+ \fi:
+ {#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_new_protected:Npn \__hook_cs_gput_right_slow:nnn #1 #2 #3
+ {
+ \cs_if_exist:cF { __hook#1~#2 }
+ { \__hook_code_gset_aux:nnn {#1} {#2} { } }
+ \__hook_code_gset_auxi:eeen
+ {
+ \__hook_if_declared:nTF {#2}
+ { \tl_use:c { c__hook_#2_parameter_tl } }
+ {
+ \__hook_if_generic:nTF {#2}
+ { \__hook_generic_parameter:n {#2} }
+ { \c__hook_nine_parameters_tl }
+ }
+ }
+ {
+ \exp_args:NNo \exp_args:No \__hook_double_hashes:n
+ {
+ \cs:w __hook#1~#2 \exp_last_unbraced:Ne \cs_end:
+ { \__hook_braced_cs_parameter:n { __hook#1~#2 } }
+ }
+ }
+ {
+ \__hook_if_replacing_args:TF
+ { \exp_not:n }
+ { \__hook_double_hashes:n }
+ {#3}
+ }
+ { __hook#1~#2 }
+ }
+\cs_new_protected:Npn \__hook_code_gset_auxi:nnnn #1 #2 #3 #4
+ { \cs_gset:cpn {#4} #1 { #2 #3 } }
+\cs_generate_variant:Nn \__hook_code_gset_auxi:nnnn { eeen }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_cs_gput_right:nnn}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_cs_gput_right:nnn
+\cs_undefine:N \__hook_cs_gput_right_fast:nnn
+\cs_undefine:N \__hook_cs_gput_right_slow:nnn
+\cs_undefine:N \__hook_code_gset_auxi:nnnn
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_code_gset:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_code_gset:nn
+ { \__hook_code_gset_aux:nnn { } }
+\cs_new_protected:Npn \__hook_toplevel_gset:nn
+ { \__hook_code_gset_aux:nnn { _toplevel } }
+\cs_new_protected:Npn \__hook_next_gset:nn
+ { \__hook_code_gset_aux:nnn { _next } }
+\cs_new_protected:Npn \__hook_code_gset_aux:nnn #1 #2 #3
+ {
+ \cs_gset:cpn { __hook#1~#2 \exp_last_unbraced:Ne }
+ { \__hook_parameter:n {#2} }
+ {#3}
+ }
+\cs_generate_variant:Nn \__hook_code_gset:nn { ne }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_code_gset:nn}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_code_gset:nn
+\cs_undefine:N \__hook_toplevel_gset:nn
+\cs_undefine:N \__hook_next_gset:nn
+\cs_undefine:N \__hook_code_gset_aux:nnn
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_normalise_cs_args:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_normalise_cs_args:nn #1 #2
+ {
+ \cs_if_exist:cT { __hook#1~#2 }
+ {
+ \__hook_code_gset_auxi:eeen
+ { \tl_use:c { c__hook_#2_parameter_tl } }
+ {
+ \exp_args:NNo \exp_args:No \__hook_double_hashes:n
+ {
+ \cs:w __hook#1~#2 \exp_last_unbraced:Ne \cs_end:
+ { \__hook_braced_cs_parameter:n { __hook#1~#2 } }
+ }
+ }
+ { }
+ { __hook#1~#2 }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_normalise_cs_args:nn}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_normalise_cs_args:nn
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_normalise_code_pool:n}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_normalise_code_pool:n #1
+ {
+ \__hook_set_normalise_fn:nn {#1} { Offending~label:~'##1' }
+ \prop_clear:N \l__hook_work_prop
+ \prop_map_function:cN { g__hook_#1_code_prop } \__hook_normalise_fn:nn
+ \prop_gset_eq:cN { g__hook_#1_code_prop } \l__hook_work_prop
+ }
+\cs_new_protected:Npn \__hook_set_normalise_fn:nn #1 #2
+ {
+ \cs_set:Npn \__hook_tmp:w ##1##2##3##4##5##6##7##8##9 { }
+ \tl_set:Ne \l__hook_tmpb_tl
+ { \__hook_braced_cs_parameter:n { __hook_tmp:w } }
+ \group_begin:
+ \__hook_tl_set:cn { c__hook_hash_tl } { \exp_not:N \c__hook_hashes_tl }
+ \use:e
+ {
+ \group_end:
+ \tl_set:Nn \exp_not:N \l__hook_tmpb_tl { \l__hook_tmpb_tl }
+ }
+ \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 } }
+ \cs_gset_protected:Npx \__hook_normalise_fn:nn ##1 ##2
+ {
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { -1 }
+ \cs_set:cpn
+ {
+ hook~'#1'. ^^J
+ (hooks) \prg_replicate:nn { 13 } { ~ }
+ #2 % more message text
+ }
+ \exp_not:v { c__hook_#1_parameter_tl }
+ {##2}
+ \group_end:
+ \cs_set:Npn \exp_not:N \__hook_tmp:w
+ \exp_not:V \c__hook_nine_parameters_tl
+ {
+ \prop_put:Nne \exp_not:N \l__hook_work_prop
+ {##1} { \exp_not:N \__hook_double_hashes:n {##2} }
+ }
+ \exp_not:N \__hook_tmp:w
+ \exp_not:V \l__hook_tmpa_tl
+ \exp_args:No \exp_not:o
+ { \exp_after:wN \__hook_tmp:w \l__hook_tmpb_tl }
+ }
+ }
+\cs_new_eq:NN \__hook_normalise_fn:nn ?
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_normalise_code_pool:n}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_normalise_code_pool:n
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_cs_if_empty:c}
+ {Hooks~with~args}
+\prg_new_conditional:Npnn \__hook_cs_if_empty:c #1 { p, T, F, TF }
+ {
+ \if:w \scan_stop: \__hook_replacement_spec:c {#1} \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_new:Npn \__hook_replacement_spec:c #1
+ {
+ \exp_args:Nc \token_if_macro:NT {#1}
+ { \cs_replacement_spec:c {#1} }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_cs_if_empty:c}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_cs_if_empty:c
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_braced_cs_parameter:n}
+ {Hooks~with~args}
+\cs_new:Npn \__hook_braced_cs_parameter:n #1
+ {
+ \exp_last_unbraced:Ne \__hook_braced_hidden_loop:w
+ { \exp_args:Nc \__hook_cs_parameter_count:N {#1} } ? \s__hook_mark
+ }
+\cs_new:Npn \__hook_braced_hidden_loop:w #1
+ {
+ \if:w ? #1
+ \__hook_use_i_delimit_by_s_mark:nw
+ \fi:
+ { \exp_not:N \c__hook_hash_tl #1 }
+ \__hook_braced_hidden_loop:w
+ }
+\cs_new:Npn \__hook_cs_parameter_count:N #1
+ {
+ \exp_last_unbraced:Nf \__hook_cs_parameter_count:w
+ { \token_if_macro:NT #1 { \cs_parameter_spec:N #1 } }
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ ? \__hook_cs_end:w ? \__hook_cs_end:w ? \__hook_cs_end:w
+ \s__hook_mark
+ }
+\cs_new:Npn \__hook_cs_parameter_count:w #1#2 #3#4 #5#6 #7#8
+ { #2 #4 #6 #8 \__hook_cs_parameter_count:w }
+\cs_new:Npn \__hook_cs_end:w #1 \s__hook_mark { }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_braced_cs_parameter:n}
+ {Hooks~with~args}
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_braced_parameter:n}
+ {Hooks~with~args}
+\cs_new:Npn \__hook_braced_parameter:n #1
+ {
+ \if_case:w
+ \int_eval:n
+ { \exp_args:Nv \str_count:n { c__hook_#1_parameter_tl } / 3 }
+ \exp_stop_f:
+ \or: {##1}
+ \or: {##1} {##2}
+ \or: {##1} {##2} {##3}
+ \or: {##1} {##2} {##3} {##4}
+ \or: {##1} {##2} {##3} {##4} {##5}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8}
+ \or: {##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8} {##9}
+ \else:
+ \msg_expandable_error:nnn { latex2e } { should-not-happen }
+ { Invalid~parameter~spec. }
+ \fi:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_braced_parameter:n}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_braced_parameter:n
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_parameter:n}
+ {Hooks~with~args}
+\cs_new:Npn \__hook_parameter:n #1
+ {
+ \cs:w c__hook_
+ \tl_if_exist:cTF { c__hook_#1_parameter_tl }
+ { #1_parameter } { empty }
+ _tl \cs_end:
+ }
+\cs_new:Npn \__hook_generic_parameter:n #1
+ { \__hook_generic_parameter:w #1 / / / \s__hook_mark }
+\cs_new:Npn \__hook_generic_parameter:w #1 / #2 / #3 / #4 \s__hook_mark
+ {
+ \cs_if_exist_use:cF { c__hook_parameter_#1/./#3_tl }
+ { \c__hook_empty_tl }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_parameter:n}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_parameter:n
+\cs_undefine:N \__hook_generic_parameter:n
+\EndIncludeInRelease
+\prop_new:c { g__hook_??_code_prop }
+\prop_new:c { __hook~?? }
+\tl_new:c { g__hook_??_reversed_tl }
+\IncludeInRelease{2023/06/01}{\c__hook_??_parameter_tl}
+ {Hooks~with~args}
+\tl_const:cn { c__hook_??_parameter_tl } { }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\c__hook_??_parameter_tl}
+ {Hooks~with~args}
+\cs_undefine:c { c__hook_??_parameter_tl }
+\EndIncludeInRelease
\cs_new_protected:Npn \hook_gset_rule:nnnn #1#2#3#4
{
\__hook_normalize_hook_rule_args:Nnnnn \__hook_gset_rule:nnnn
@@ -5393,13 +6160,13 @@ of this package available from CTAN}
\__hook_deprecated_generic_warn:n {#1}
\__hook_do_deprecated_generic:Nn \__hook_gset_rule:nnnn {#1}
{#2} {#3} {#4}
- \__hook_clean_to_scan:w
+ \__hook_use_none_delimit_by_s_mark:w
}
\__hook_if_execute_immediately:nT {#1}
{
\msg_error:nnnnnn { hooks } { rule-too-late }
{#1} {#2} {#3} {#4}
- \__hook_clean_to_scan:w
+ \__hook_use_none_delimit_by_s_mark:w
}
\__hook_init_structure:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
@@ -5489,23 +6256,55 @@ of this package available from CTAN}
\cs_end:
}
\cs_new_eq:NN \__hook_update_hook_code:n \use_none:n
-\cs_new_protected:Npn \__hook_initialize_all: {
- \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
+\IncludeInRelease{2023/06/01}{\__hook_initialize_all:}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_initialize_all:
+ {
+ \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
{
+ \tl_if_empty:cTF { c__hook_##1_parameter_tl }
+ { \__hook_replacing_args_false: }
+ { \__hook_replacing_args_true: }
\__hook_update_hook_code:n {##1}
+ \__hook_replacing_args_reset:
}
- \__hook_debug:n
- { \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:}
- \prop_map_inline:Nn \g__hook_used_prop
- { \iow_term:x{^^J~ ##1~ ->~
- \exp_not:v {__hook~##1}~ }
- }
- }
- \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
- \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
-}
+ \__hook_debug:n
+ {
+ \iow_term:x { ^^J All~initialized~(non-empty)~hooks: }
+ \prop_map_inline:Nn \g__hook_used_prop
+ {
+ \iow_term:x
+ { ^^J ~ ##1 ~ -> ~ \cs_replacement_spec:c { __hook~##1 } ~ }
+ }
+ }
+ \__hook_post_initialization_defs:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_initialize_all:}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_initialize_all:
+ {
+ \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} }
+ \__hook_debug:n
+ {
+ \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:}
+ \prop_map_inline:Nn \g__hook_used_prop
+ {
+ \iow_term:x
+ { ^^J ~ ##1 ~ -> ~ \cs_replacement_spec:c { __hook~##1 } ~ }
+ }
+ }
+ \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
+ \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_initialize_hook_code:n}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_initialize_hook_code:n #1
{
\__hook_debug:n
@@ -5515,6 +6314,38 @@ of this package available from CTAN}
{
\prop_if_empty:cTF { g__hook_#1_code_prop }
{
+ \__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}
+ }
+ }
+ {
+ \__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 }
+ \__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} { } }
+ }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_initialize_hook_code:n}
+ {Hooks~with~args}
+\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 } }
+ \__hook_include_legacy_code_chunk:n {#1}
+ \__hook_if_usable:nT {#1}
+ {
+ \prop_if_empty:cTF { g__hook_#1_code_prop }
+ {
\__hook_tl_gset:co { __hook~#1 }
{
\cs:w __hook_toplevel~#1 \exp_after:wN \cs_end:
@@ -5535,6 +6366,7 @@ of this package available from CTAN}
}
}
}
+\EndIncludeInRelease
\cs_new:Npn \__hook_tl_csname:n #1 { l__hook_label_#1_tl }
\cs_new:Npn \__hook_seq_csname:n #1 { l__hook_label_#1_seq }
\seq_new:N \l__hook_labels_seq
@@ -5542,6 +6374,89 @@ of this package available from CTAN}
\tl_new:N \l__hook_front_tl
\tl_new:N \l__hook_rear_tl
\tl_new:c { \__hook_tl_csname:n { 0 } }
+\IncludeInRelease{2023/06/01}{\__hook_initialize_single:NNn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_initialize_single:NNn #1#2#3
+ {
+ \seq_clear:N \l__hook_labels_seq
+ \int_zero:N \l__hook_labels_int
+ \tl_set:Nn \l__hook_cur_hook_tl {#3}
+ \prop_map_inline:Nn \l__hook_work_prop
+ {
+ \int_incr:N \l__hook_labels_int
+ \seq_put_right:Nn \l__hook_labels_seq {##1}
+ \__hook_tl_set:cn { \__hook_tl_csname:n {##1} } { 0 }
+ \seq_clear_new:c { \__hook_seq_csname:n {##1} }
+ }
+ \prop_map_inline:Nn \l__hook_work_prop
+ {
+ \prop_map_inline:Nn \l__hook_work_prop
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_apply_label_pair:nnn {##1} {####1} }
+ { \__hook_apply_label_pair:nnn {####1} {##1} }
+ {#3}
+ }
+ }
+ \__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}
+ }
+ }
+ \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 } }
+ {
+ \int_decr:N \l__hook_labels_int
+ \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 } }
+ {
+ \tl_set:cx { \__hook_tl_csname:n {##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}
+ }
+ }
+ \tl_set_eq:Nc \l__hook_front_tl
+ { \__hook_tl_csname:n { \l__hook_front_tl } }
+ }
+ \int_compare:nNnF \l__hook_labels_int = 0
+ {
+ \iow_term:x{====================}
+ \iow_term:x{Error:~ label~ rules~ are~ incompatible:}
+ \__hook_debug_label_data:N \l__hook_work_prop
+ \iow_term:x{====================}
+ }
+ \exp_args:NNe \__hook_tl_gput:Nn #1
+ { \exp_not:c { __hook_toplevel~#3 } \__hook_braced_parameter:n {#3} }
+ \__hook_tl_gput_right:Ne #1
+ { \exp_not:c { __hook_next~#3 } \__hook_braced_parameter:n {#3} }
+ \use:e
+ {
+ \cs_gset:cpn { __hook~#3 } \use:c { c__hook_#3_parameter_tl }
+ { \exp_not:V #1 }
+ }
+ }
+\cs_generate_variant:Nn \__hook_initialize_single:NNn { cc }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_initialize_single:NNn}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_initialize_single:NNn #1#2#3
{
\seq_clear:N \l__hook_labels_seq
@@ -5612,7 +6527,8 @@ of this package available from CTAN}
\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_initialize_single:NNn { cc }
+\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No }
+\EndIncludeInRelease
\cs_new:Npn \__hook_tl_gput:Nn { \ERROR }
\cs_new:Npn \__hook_clist_gput:NV { \ERROR }
\cs_new_protected:Npn \__hook_apply_label_pair:nnn #1#2#3
@@ -5727,6 +6643,123 @@ of this package available from CTAN}
{ \__hook_log_cmd:x { >~#1 } }
\cs_new_protected:Npn \__hook_log_line_indent:x #1
{ \__hook_log_cmd:x { >~\@spaces #1 } }
+\IncludeInRelease{2023/06/01}{\__hook_log:nN}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_log:nN #1 #2
+ {
+ \__hook_if_deprecated_generic:nT {#1}
+ {
+ \__hook_deprecated_generic_warn:n {#1}
+ \__hook_do_deprecated_generic:Nn \__hook_log:nN {#1} #2
+ \exp_after:wN \use_none:nnnnnnnnn \use_none:nnnnn
+ }
+ \__hook_preamble_hook:n {#1}
+ \__hook_log_cmd:x
+ {
+ ^^J ->~The~
+ \__hook_if_generic:nT {#1} { generic~ }
+ hook~'#1'
+ \__hook_if_disabled:nF {#1}
+ {
+ \exp_args:Nf \__hook_print_args:nn {#1}
+ {
+ \int_eval:n
+ { \str_count:e { \__hook_parameter:n {#1} } / 3 }
+ }
+ }
+ :
+ }
+ \__hook_if_usable:nF {#1}
+ { \__hook_log_line:x { The~hook~is~not~declared. } }
+ \__hook_if_disabled:nT {#1}
+ { \__hook_log_line:x { The~hook~is~disabled. } }
+ \hook_if_empty:nTF {#1}
+ { #2 { The~hook~is~empty } }
+ {
+ \__hook_log_line:x { Code~chunks: }
+ \prop_if_empty:cTF { g__hook_#1_code_prop }
+ { \__hook_log_line_indent:x { --- } }
+ {
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \exp_after:wN \cs_set:Npn \exp_after:wN \__hook_tmp:w
+ \c__hook_nine_parameters_tl {##2}
+ \__hook_log_line_indent:x
+ { ##1~->~\cs_replacement_spec:N \__hook_tmp:w }
+ }
+ }
+ \__hook_log_line:x
+ {
+ Document-level~(top-level)~code
+ \__hook_if_usable:nT {#1}
+ { ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
+ }
+ \__hook_log_line_indent:x
+ {
+ \__hook_cs_if_empty:cTF { __hook_toplevel~#1 }
+ { --- }
+ { -> ~ \cs_replacement_spec:c { __hook_toplevel~#1 } }
+ }
+ \__hook_log_line:x { Extra~code~for~next~invocation: }
+ \__hook_log_line_indent:x
+ {
+ \__hook_cs_if_empty:cTF { __hook_next~#1 }
+ { --- }
+ {
+ -> ~ \exp_last_unbraced:Nf \__hook_log_next_code:w
+ { \cs_replacement_spec:c { __hook_next~#1 } }
+ }
+ }
+ \__hook_log_line:x { Rules: }
+ \bool_set_true:N \l__hook_tmpa_bool
+ \__hook_list_rules:nn {#1}
+ {
+ \bool_set_false:N \l__hook_tmpa_bool
+ \__hook_log_line_indent:x
+ {
+ ##2~ with~
+ \str_if_eq:nnT {##3} {??} { default~ }
+ relation~ ##1
+ }
+ }
+ \bool_if:NT \l__hook_tmpa_bool
+ { \__hook_log_line_indent:x { --- } }
+ \bool_lazy_and:nnTF
+ { \__hook_if_usable_p:n {#1} }
+ { ! \hook_if_empty_p:n {#1} }
+ {
+ \__hook_log_line:x
+ {
+ Execution~order
+ \bool_if:NTF \l__hook_tmpa_bool
+ { \__hook_if_reversed:nT {#1} { ~(after~reversal) } }
+ { ~(after~
+ \__hook_if_reversed:nT {#1} { reversal~and~ }
+ applying~rules)
+ } :
+ }
+ #2 % \tl_show:n
+ {
+ \@spaces
+ \clist_if_empty:cTF { 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}
+ { code~pool~is~empty }
+ { is~\__hook_if_disabled:nTF {#1} {disabled} {undeclared} }
+ }
+ }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_log:nN}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_log:nN #1 #2
{
\__hook_if_deprecated_generic:nT {#1}
@@ -5804,7 +6837,7 @@ 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 } { ,~ } }
}
}
{
@@ -5818,8 +6851,28 @@ of this package available from CTAN}
}
}
}
-\cs_new:Npn \__hook_log_next_code:n #1
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_log_next_code:n}
+ {Hooks~with~args}
+\exp_last_unbraced:NNNNo
+\cs_new:Npn \__hook_log_next_code:w #1 \c_right_brace_str { }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_log_next_code:n}
+ {Hooks~with~args}
+\cs_gset:Npn \__hook_log_next_code:n #1
{ \exp_args:No \tl_to_str:n { \use_none:nn #1 } }
+\EndIncludeInRelease
+\cs_new:Npn \__hook_print_args:nn #1 #2
+ {
+ \int_compare:nNnT {#2} > { 0 }
+ {
+ \__hook_if_declared:nT {#1} { \use_none:nnn }
+ \__hook_if_cmd_hook:nT {#1}
+ { \use_i:nnn { ~ (unknown ~ } }
+ \use:n { ~ (#2 ~ }
+ argument \int_compare:nNnT {#2} > { 1 } { s } )
+ }
+ }
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
\cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
@@ -5865,24 +6918,59 @@ of this package available from CTAN}
}
\exp_args:No \__hook_tmp:w { \use:nn { ~ } { ~ } }
}
-\cs_new_protected:Npn \hook_gput_next_code:nn #1
+\IncludeInRelease{2023/06/01}{\hook_gput_next_code:nn}
+ {Hooks~with~args}
+\cs_new_protected:Npn \hook_gput_next_code:nn #1 #2
+ {
+ \__hook_replacing_args_false:
+ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2}
+ \__hook_replacing_args_reset:
+ }
+\cs_new_protected:Npn \hook_gput_next_code_with_args:nn #1 #2
+ {
+ \__hook_replacing_args_true:
+ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2}
+ \__hook_replacing_args_reset:
+ }
+\EndIncludeInRelease
+\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} }
+\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
{
\__hook_if_disabled:nTF {#1}
{ \msg_error:nnn { hooks } { hook-disabled } {#1} }
{
\__hook_if_structure_exist:nTF {#1}
- { \__hook_gput_next_do:nn {#1} {#2} }
- { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ { \__hook_gput_next_do:nn }
+ { \__hook_try_declaring_generic_next_hook:nn }
+ {#1} {#2}
}
}
+\IncludeInRelease{2023/06/01}{\__hook_gput_next_do:nn}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
+ \__hook_init_structure:n {#1}
+ \__hook_chk_args_allowed:nn {#1} { AddToHookNext }
+ \__hook_cs_if_empty:cT { __hook~#1 }
+ { \__hook_update_hook_code:n {#1} }
+ \__hook_cs_if_empty:cT { __hook_next~#1 }
+ { \__hook_next_gset:nn {#1} { \__hook_clear_next:n {#1} } }
+ \__hook_cs_gput_right:nnn { _next } {#1}
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_gput_next_do:nn}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_gput_next_do:nn #1
+ {
\exp_args:Nc \__hook_gput_next_do:Nnn
{ __hook_next~#1 } {#1}
}
-\cs_new_protected:Npn \__hook_gput_next_do:Nnn #1 #2
+\cs_gset_protected:Npn \__hook_gput_next_do:Nnn #1 #2
{
\tl_if_empty:cT { __hook~#2 }
{ \__hook_update_hook_code:n {#2} }
@@ -5890,10 +6978,41 @@ of this package available from CTAN}
{ \__hook_tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
\__hook_tl_gput_right:Nn #1
}
+\EndIncludeInRelease
\cs_new_protected:Npn \hook_gclear_next_code:n #1
{ \__hook_normalize_hook_args:Nn \__hook_clear_next:n {#1} }
+\IncludeInRelease{2023/06/01}{\__hook_clear_next:n}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_clear_next:n #1
+ { \__hook_next_gset:nn {#1} { } }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_clear_next:n}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_clear_next:n #1
{ \cs_gset_eq:cN { __hook_next~#1 } \c_empty_tl }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_use:n}
+ {Hooks~with~args}
+\cs_new_protected:Npn \hook_use:n #1
+ {
+ \__hook_preamble_hook:n {#1}
+ \__hook_use_initialized:n {#1}
+ }
+\cs_new:Npn \__hook_use_initialized:n #1
+ {
+ \if_cs_exist:w __hook~#1 \cs_end:
+ \cs:w __hook~#1 \use_i:nn
+ \fi:
+ \use_none:n
+ \cs_end:
+ }
+\cs_new_protected:Npn \__hook_preamble_hook:n #1
+ {
+ \if_cs_exist:w __hook~#1 \cs_end:
+ \__hook_initialize_hook_code:n {#1}
+ \fi:
+ }
+\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{\hook_use:n}
{Standardise~generic~hook~names}
\cs_new_protected:Npn \hook_use:n #1
@@ -5912,6 +7031,7 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_preamble_hook:n #1
{ \__hook_initialize_hook_code:n {#1} }
+\cs_new:Npn \hook_use:nnw #1 { }
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}{\hook_use:n}
{Standardise~generic~hook~names}
@@ -5940,6 +7060,44 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_preamble_hook:n #1
{ \__hook_initialize_hook_code:n {#1} }
\cs_new_eq:NN \__hook_use_end: \cs_end:
+\cs_new:Npn \hook_use:nnw #1 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_use:nnw}
+ {Hooks~with~args}
+\cs_new_protected:Npn \hook_use:nnw #1
+ {
+ \__hook_preamble_hook:n {#1}
+ \__hook_use_initialized:nnw {#1}
+ }
+\cs_new:Npn \__hook_use_initialized:nnw #1 #2
+ {
+ \cs:w
+ \if_cs_exist:w __hook~#1 \cs_end:
+ __hook~#1
+ \else:
+ use_none: \prg_replicate:nn {#2} { n }
+ \fi:
+ \cs_end:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_use:nnw}
+ {Hooks~with~args}
+\cs_gset:Npn \hook_use:nnw #1 #2
+ { \use:c { use_none: \prg_replicate:nn {#2} { n } } }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_post_initialization_defs:}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_post_initialization_defs:
+ {
+ \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
+ \cs_gset_eq:NN \hook_use:nnw \__hook_use_initialized:nnw
+ \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
+ \cs_gset_eq:NN \__hook_post_initialization_defs: \prg_do_nothing:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_post_initialization_defs:}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_post_initialization_defs:
\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{\__hook_use:wn}
{Standardise~generic~hook~names}
@@ -5970,41 +7128,111 @@ of this package available from CTAN}
}
}
\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\hook_use_once:nnw}
+ {Hooks~with~args}
\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 } }
+ }
+\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} }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_use_once:nnw}
+ {Hooks~with~args}
+\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} } }
}
-\cs_new_protected:Npn \__hook_use_once:n #1
+\cs_gset:Npn \hook_use_once:nnw #1 #2
+ { \use:c { use_none: \prg_replicate:nn {#2} { n } } }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_use_once:nn}
+ {Hooks~with~args}
+\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_replacing_args_reset:
+ \__hook_if_usable:nTF {#1}
+ { \__hook_use_initialized:n {#1} }
+ {
+ \int_compare:nNnT {#2} > { 0 }
+ { \use:c { use_none: \prg_replicate:nn {#2} { n } } }
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_use_once:nn}
+ {Hooks~with~args}
+\cs_gset_protected:Npn \__hook_use_once:n #1
{
\__hook_preamble_hook:n {#1}
\__hook_use_once_set:n {#1}
\__hook_use_initialized:n {#1}
\__hook_use_once_clear:n {#1}
}
+\cs_undefine:N \__hook_use_once:nn
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_use_once_clear:n}
+ {Hooks~with~args}
\cs_new_protected:Npn \__hook_use_once_set:n #1
{ \__hook_tl_gset:cn { g__hook_#1_reversed_tl } { I } }
\cs_new_protected:Npn \__hook_use_once_clear:n #1
{
+ \__hook_code_gset:nn {#1} { }
+ \__hook_next_gset:nn {#1} { }
+ \__hook_toplevel_gset:nn {#1} { }
+ \prop_gclear_new:c { g__hook_#1_code_prop }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_use_once_clear:n}
+ {Hooks~with~args}
+\cs_new_protected:Npn \__hook_use_once_clear:n #1
+ {
\__hook_tl_gclear:c { __hook~#1 }
\__hook_tl_gclear:c { __hook_next~#1 }
\__hook_tl_gclear:c { __hook_toplevel~#1 }
\prop_gclear_new:c { g__hook_#1_code_prop }
}
+\EndIncludeInRelease
\prg_new_conditional:Npnn \__hook_if_execute_immediately:n #1 { T, F, TF }
{
- \__hook_if_usable:nTF {#1}
- {
- \exp_after:wN \__hook_clean_to_scan:w
- \if:w I \cs:w g__hook_#1_reversed_tl \cs_end:
- \s__hook_mark \prg_return_true:
- \else:
- \s__hook_mark \prg_return_false:
+ \exp_after:wN \__hook_use_none_delimit_by_s_mark:w
+ \if:w I
+ \if_cs_exist:w g__hook_#1_reversed_tl \cs_end:
+ \cs:w g__hook_#1_reversed_tl \exp_after:wN \cs_end:
\fi:
- }
- { \prg_return_false: }
+ X
+ \s__hook_mark \prg_return_true:
+ \else:
+ \s__hook_mark \prg_return_false:
+ \fi:
}
-
+\IncludeInRelease{2023/06/01}{\hook_if_empty:n}
+ {Hooks~with~args}
+\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
+ {
+ \if:w
+ T
+ \prop_if_exist:cT { g__hook_#1_code_prop }
+ { \prop_if_empty:cF { g__hook_#1_code_prop } { F } }
+ \__hook_cs_if_empty:cF { __hook_toplevel~#1 } { F }
+ \__hook_cs_if_empty:cF { __hook_next~#1 } { F }
+ T
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\hook_if_empty:n}
+ {Hooks~with~args}
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
{
\__hook_if_structure_exist:nTF {#1}
@@ -6021,9 +7249,10 @@ of this package available from CTAN}
}
{ \prg_return_true: }
}
+\EndIncludeInRelease
\prg_new_conditional:Npnn \__hook_if_usable:n #1 { p , T , F , TF }
{
- \tl_if_exist:cTF { __hook~#1 }
+ \cs_if_exist:cTF { __hook~#1 }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -6041,7 +7270,7 @@ of this package available from CTAN}
}
\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF }
{
- \exp_after:wN \__hook_clean_to_scan:w
+ \exp_after:wN \__hook_use_none_delimit_by_s_mark:w
\if:w - \cs:w g__hook_#1_reversed_tl \cs_end:
\s__hook_mark \prg_return_true:
\else:
@@ -6068,6 +7297,26 @@ of this package available from CTAN}
}
{ \prg_return_false: }
}
+\IncludeInRelease{2023/06/01}{\__hook_if_cmd_hook:n}
+ {Hooks~with~args}
+\prg_new_conditional:Npnn \__hook_if_cmd_hook:n #1 { T }
+ { \__hook_if_cmd_hook:w #1 / / / \s__hook_mark }
+\cs_new:Npn \__hook_if_cmd_hook:w #1 / #2 / #3 / #4 \s__hook_mark
+ {
+ \if:w Y
+ \str_if_eq:nnF {#1} { cmd } { N }
+ \tl_if_exist:cF { c__hook_generic_#1/./#3_tl } { N }
+ Y
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\__hook_if_cmd_hook:n}
+ {Hooks~with~args}
+\cs_undefine:N \__hook_if_cmd_hook:nT
+\EndIncludeInRelease
\prg_new_conditional:Npnn \__hook_if_generic_reversed:n #1 { T }
{ \__hook_if_generic_reversed:w #1 / / / \scan_stop: }
\cs_new:Npn \__hook_if_generic_reversed:w #1 / #2 / #3 / #4 \scan_stop:
@@ -6078,6 +7327,31 @@ of this package available from CTAN}
\prg_return_false:
\fi:
}
+\seq_new:N \g__hook_replacing_stack_seq
+\cs_new:Npn \__hook_misused_if_replacing_args:nn #1 #2
+ {
+ \msg_expandable_error:nnn { latex2e } { should-not-happen }
+ { Misused~\__hook_if_replacing_args:. }
+ }
+\cs_new:Npn \__hook_if_replacing_args:TF
+ { \__hook_misused_if_replacing_args:nn }
+\cs_new_protected:Npn \__hook_replacing_args_true:
+ {
+ \seq_gpush:No \g__hook_replacing_stack_seq
+ { \__hook_if_replacing_args:TF }
+ \cs_set:Npn \__hook_if_replacing_args:TF { \use_i:nn }
+ }
+\cs_new_protected:Npn \__hook_replacing_args_false:
+ {
+ \seq_gpush:No \g__hook_replacing_stack_seq
+ { \__hook_if_replacing_args:TF }
+ \cs_set:Npn \__hook_if_replacing_args:TF { \use_ii:nn }
+ }
+\cs_new_protected:Npn \__hook_replacing_args_reset:
+ {
+ \seq_gpop:NN \g__hook_replacing_stack_seq \l__hook_return_tl
+ \cs_gset_eq:NN \__hook_if_replacing_args:TF \l__hook_return_tl
+ }
\prop_gput:Nnn \g_msg_module_type_prop { hooks } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { latex2e } { LaTeX }
\prop_gput:Nnn \g_msg_module_name_prop { latex2e } { kernel }
@@ -6096,6 +7370,38 @@ of this package available from CTAN}
{ There~ already~ exists~ a~ hook~ declaration~ with~ this~
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
+\IncludeInRelease{2023/06/01}{too-many-args}
+ {Hooks~with~args}
+\msg_new:nnnn { hooks } { too-many-args }
+ { Too~many~arguments~for~hook~'#1'. }
+ {
+ You~tried~to~declare~a~hook~with~#2~arguments,~but~a~
+ hook~can~only~have~up~to~nine.~LaTeX~will~define~this~
+ hook~with~nine~arguments.
+ }
+\msg_new:nnnn { hooks } { without-args }
+ { Hook~'#1'~has~no~arguments. }
+ {
+ You~tried~to~use~\iow_char:N\\#2WithArguments~
+ on~a~hook~that~takes~no~arguments.\\
+ Check~the~usage~of~the~hook~or~use~\iow_char:N\\#2~instead.\\
+ \\
+ LaTeX~will~use~\iow_char:N\\#2.
+ }
+\msg_new:nnnn { hooks } { one-time-args }
+ { You~can't~have~arguments~in~used~one-time~hook~'#1'. }
+ {
+ You~tried~to~use~\iow_char:N\\#2WithArguments~
+ on~a~one-time~hook~that~has~already~been~used.~
+ You~have~to~add~the~code~before~the~hook~is~used,~
+ or~add~the~code~without~arguments~using~\iow_char:N\\#2~instead.\\
+ \\
+ LaTeX~will~use~\iow_char:N\\#2.
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{too-many-args}
+ {Hooks~with~args}
+\EndIncludeInRelease
\msg_new:nnnn { hooks } { hook-disabled }
{ Cannot~add~code~to~disabled~hook~'#1'. }
{
@@ -6190,24 +7496,61 @@ of this package available from CTAN}
Generic~hook~'#1/#2/#3'~is~deprecated. \\
Use~hook~'#1/#3/#2'~instead.
}
-\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} }
-\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} }
-\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} }
-\IncludeInRelease{2021/06/01}%
- {\hook_activate_generic:n}{Providing~hooks}
-\NewDocumentCommand \ActivateGenericHook { m }{ \hook_activate_generic:n {#1} }
-\NewDocumentCommand \DisableGenericHook { m }{ \hook_disable_generic:n {#1} }
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}
- {\hook_activate_generic:n}{Providing~hooks}
-
-\def \ActivateGenericHook#1{}
-
-\EndIncludeInRelease
+\NewDocumentCommand \NewHook { m }
+ { \hook_new:n {#1} }
+\NewDocumentCommand \NewReversedHook { m }
+ { \hook_new_reversed:n {#1} }
+\NewDocumentCommand \NewMirroredHookPair { mm }
+ { \hook_new_pair:nn {#1}{#2} }
+\IncludeInRelease{2023/06/01}{\NewHookWithArguments}
+ {Hooks~with~args}
+\NewDocumentCommand \NewHookWithArguments { mm }
+ { \hook_new_with_args:nn {#1} {#2} }
+\NewDocumentCommand \NewReversedHookWithArguments { mm }
+ { \hook_new_reversed_with_args:nn {#1} {#2} }
+\NewDocumentCommand \NewMirroredHookPairWithArguments { mmm }
+ { \hook_new_pair_with_args:nnn {#1} {#2} {#3} }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\NewHookWithArguments}
+ {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 { }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\ActivateGenericHook}
+ {Providing~hooks}
+\NewDocumentCommand \ActivateGenericHook { m }
+ { \hook_activate_generic:n {#1} }
+\NewDocumentCommand \DisableGenericHook { m }
+ { \hook_disable_generic:n {#1} }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\ActivateGenericHook}
+ {Providing~hooks}
+\def \ActivateGenericHook #1 { }
+\def \DisableGenericHook #1 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\AddToHookWithArguments}
+ {Hooks~with~args}
\NewDocumentCommand \AddToHook { m o +m }
{ \hook_gput_code:nnn {#1} {#2} {#3} }
+\NewDocumentCommand \AddToHookWithArguments { m o +m }
+ { \hook_gput_code_with_args:nnn {#1} {#2} {#3} }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\AddToHookWithArguments}
+ {Hooks~with~args}
+\cs_new_protected:Npn \AddToHookWithArguments #1 #2 #3 { }
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\AddToHookNextWithArguments}
+ {Hooks~with~args}
\NewDocumentCommand \AddToHookNext { m +m }
{ \hook_gput_next_code:nn {#1} {#2} }
+\NewDocumentCommand \AddToHookNextWithArguments { m +m }
+ { \hook_gput_next_code_with_args:nn {#1} {#2} }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\AddToHookNextWithArguments}
+ {Hooks~with~args}
+\cs_new_protected:Npn \AddToHookNextWithArguments #1 #2 { }
+\EndIncludeInRelease
\NewDocumentCommand \ClearHookNext { m }
{ \hook_gclear_next_code:n {#1} }
\NewDocumentCommand \RemoveFromHook { m o }
@@ -6224,8 +7567,18 @@ of this package available from CTAN}
\str_gset:Nx \g_file_curr_name_str {#3}
#1 #2 {#3}
}
+\IncludeInRelease{2023/06/01}{\UseHookWithArguments}
+ {Hooks~with~args}
\cs_new:Npn \UseHook { \hook_use:n }
\cs_new:Npn \UseOneTimeHook { \hook_use_once:n }
+\cs_new:Npn \UseHookWithArguments { \hook_use:nnw }
+\cs_new:Npn \UseOneTimeHookWithArguments { \hook_use_once:nnw }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\UseHookWithArguments}
+ {Hooks~with~args}
+\cs_new:Npn \UseHookWithArguments #1 #2 { }
+\cs_new:Npn \UseOneTimeHookWithArguments #1 #2 { }
+\EndIncludeInRelease
\cs_new_protected:Npn \ShowHook { \hook_show:n }
\cs_new_protected:Npn \LogHook { \hook_log:n }
\cs_new_protected:Npn \DebugHooksOn { \hook_debug_on: }
@@ -6313,8 +7666,8 @@ of this package available from CTAN}
\__hook_initialize_all:
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
-\IncludeInRelease{0000/00/00}%
- {lthooks}{The~hook~management}%
+\IncludeInRelease{0000/00/00}{lthooks}
+ {The~hook~management}%
\def \NewHook#1{}
\def \NewReversedHook#1{}
@@ -6343,13 +7696,48 @@ of this package available from CTAN}
\long\def \IfHookEmptyTF #1#2#3{#2}
\EndModuleRelease
+\cs:w __hook_rollback_tidying: \cs_end:
+\bool_lazy_and:nnT
+ { \int_compare_p:nNn { \sourceLaTeXdate } > { 20230600 } }
+ { \int_compare_p:nNn { \requestedLaTeXdate } < { 20230601 } }
+ {
+ \cs_gset_protected:Npn \__hook_rollback_tidying:
+ {
+ \@latex@error { Rollback~code~executed~twice }
+ {
+ Something~went~wrong~(unless~this~was~
+ done~on~purpose~in~a~testing~environment).
+ }
+ \use_none:nnnn
+ }
+ \cs_set:Npn \__hook_tmp:w #1 #2
+ {
+ \__hook_tl_gset:cx { __hook#1~#2 }
+ {
+ \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 } }
+ }
+ }
+ }
+ \seq_map_inline:Nn \g__hook_all_seq
+ {
+ \exp_after:wN \cs_gset_nopar:Npn
+ \cs:w g__hook_#1_code_prop \exp_args:NNo \exp_args:No
+ \cs_end: { \cs:w g__hook_#1_code_prop \cs_end: }
+ \__hook_tmp:w { _toplevel } {#1}
+ \__hook_tmp:w { _next } {#1}
+ }
+ }
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltcmdhooks.dtx (C) Copyright 2020-2021
-%% Frank Mittelbach, Phelype Oleinik, LaTeX Team
+%% File: ltcmdhooks.dtx
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0f}
-\def\ltcmdhooksdate{2021/10/20}
+\def\ltcmdhooksversion{v1.0h}
+\def\ltcmdhooksdate{2023/05/21}
\ExplSyntaxOn
\NewModuleRelease{2021/06/01}{ltcmdhooks}
{The~hook~management~system~for~commands}
@@ -6358,7 +7746,8 @@ of this package available from CTAN}
\tl_new:N \l__hook_patch_prefixes_tl
\tl_new:N \l__hook_param_text_tl
\tl_new:N \l__hook_replace_text_tl
-\tl_const:Nn \c__hook_hash_tl { # # }
+\tl_const:Nn \c__hook_hash_tl { # }
+\tl_const:Nn \c__hook_hashes_tl { # # }
\cs_new_eq:NN \__hook_exp_not:NN ?
\cs_new_eq:NN \__hook_def_cmd:w ?
\quark_new:N \q__hook_recursion_tail
@@ -6500,6 +7889,8 @@ of this package available from CTAN}
\exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_false_bool
{ \cs_to_str:N #1 ~ code }
}
+\IncludeInRelease{2023/06/01}{\__hook_patch_expand_redefine:NNnn}
+ {cmd~hooks~with~args}
\cs_new_protected:Npn \__hook_patch_expand_redefine:NNnn #1 #2 #3 #4
{
\__hook_patch_debug:x { ++~command~can~be~patched~without~rescanning }
@@ -6523,6 +7914,81 @@ of this package available from CTAN}
##1 \l__hook_replace_text_tl { \__hook_exp_not:n {##2} }
}
\bool_if:NTF #1
+ { \__hook_tmp:w \tl_set:Nx { [ \c__hook_hashes_tl 1 ] } }
+ { \__hook_tmp:w \tl_set:Nx { { \c__hook_hashes_tl 1 } } }
+ \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+ { \__hook_tmp:w \tl_put_right:Nx { { \c__hook_hashes_tl ##1 } } }
+ \tl_set:Nx \l__hook_replace_text_tl
+ { \exp_not:N #2 \exp_not:V \l__hook_replace_text_tl }
+ \tl_set:Nx \l__hook_replace_text_tl
+ {
+ \token_if_eq_meaning:NNTF \__hook_exp_not:n \exp_not:n
+ { \exp_args:NNV \exp_args:No \__hook_double_hashes:n }
+ { \exp_args:NV \exp_not:o }
+ \l__hook_replace_text_tl
+ }
+ \cs_set_eq:NN \__hook_def_cmd:w \tex_gdef:D
+ \cs_set_eq:NN \__hook_exp_not:NN \prg_do_nothing:
+ }
+ {
+ \tl_clear:N \l__hook_param_text_tl
+ \tl_set_eq:NN \l__hook_replace_text_tl #2
+ \cs_set_eq:NN \__hook_def_cmd:w \tex_xdef:D
+ \cs_set:Npn \__hook_exp_not:NN ##1 { \exp_not:N ##1 \exp_not:N }
+ }
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { `\/ }
+ \use:x
+ {
+ \group_end:
+ \tl_set:Nx \exp_not:N \l__hook_patch_prefixes_tl
+ { \exp_not:N \__hook_make_prefixes:w \cs_prefix_spec:N #2 / / }
+ }
+ \__hook_disable:n { cmd / #3 / #4 }
+ \cs_undefine:c { c__hook_cmd / #3 / #4_parameter_tl }
+ \__hook_make_usable:nn { cmd / #3 / #4 } { \l__hook_patch_num_args_int }
+ \use:e
+ {
+ \__hook_redefine_with_hooks:Nnnn \exp_not:N #2
+ \str_if_eq:nnTF {#4} { after }
+ { \use_ii_i:nn }
+ { \use:nn }
+ { {
+ \__hook_exp_not:NN \exp_not:N \UseHookWithArguments
+ { cmd / #3 / #4 } { \int_use:N \l__hook_patch_num_args_int }
+ \__hook_braced_parameter:n { cmd / #3 / #4 }
+ } }
+ { { } }
+ { \__hook_exp_not:NN \exp_not:V \l__hook_replace_text_tl }
+ }
+ \__hook_update_hook_code:n { cmd / #3 / #4 }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\__hook_patch_expand_redefine:NNnn}
+ {cmd~hooks~with~args}
+\cs_gset_protected:Npn \__hook_patch_expand_redefine:NNnn #1 #2 #3 #4
+ {
+ \__hook_patch_debug:x { ++~command~can~be~patched~without~rescanning }
+ \int_set:Nn \l__hook_patch_num_args_int
+ {
+ \exp_args:Nf \str_count:n { \cs_argument_spec:N #2 } / 2
+ \bool_if:NT #1 { -1 }
+ }
+ \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int }
+ {
+ \tl_set:Nx \l__hook_tmpa_tl { \bool_if:NTF #1 { [ ] } { { } } }
+ \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+ { \tl_put_right:Nn \l__hook_tmpa_tl { { } } }
+ \exp_args:NNo \exp_args:No \__hook_if_has_hash:nTF
+ { \exp_after:wN #2 \l__hook_tmpa_tl }
+ { \cs_set_eq:NN \__hook_exp_not:n \exp_not:n }
+ { \cs_set_eq:NN \__hook_exp_not:n \use:n }
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2
+ {
+ ##1 \l__hook_param_text_tl { \use:n ##2 }
+ ##1 \l__hook_replace_text_tl { \__hook_exp_not:n {##2} }
+ }
+ \bool_if:NTF #1
{ \__hook_tmp:w \tl_set:Nx { [ \c__hook_hash_tl 1 ] } }
{ \__hook_tmp:w \tl_set:Nx { { \c__hook_hash_tl 1 } } }
\int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
@@ -6564,6 +8030,7 @@ of this package available from CTAN}
{ \__hook_exp_not:NN \exp_not:V \l__hook_replace_text_tl }
}
}
+\EndIncludeInRelease
\cs_new_protected:Npn \__hook_redefine_with_hooks:Nnnn #1 #2 #3 #4
{
\l__hook_patch_prefixes_tl
@@ -6611,7 +8078,11 @@ of this package available from CTAN}
\if_meaning:w \q__hook_recursion_tail #1
\__hook_double_hashes_stop:w
\fi:
- \if_meaning:w \c__hook_hash_tl #1
+ \if:w ?
+ \if_meaning:w \c__hook_hash_tl #1 ! \fi:
+ \if_meaning:w \c__hook_hashes_tl #1 ! \fi:
+ ?
+ \else:
\use_i:nnnn
\fi:
\use:n
@@ -6633,10 +8104,10 @@ of this package available from CTAN}
{ ~ \__hook_double_hashes:w }
\cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3
{
- \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
\str_if_eq:eeTF { \cs_argument_spec:N #1 } { }
{ \__hook_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} }
{
+ \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
\tl_set:Nx \l__hook_tmpa_tl
{
\int_compare:nNnTF { \char_value_catcode:n {`\@ } } = { 12 }
@@ -6666,6 +8137,8 @@ of this package available from CTAN}
}
}
}
+\IncludeInRelease{2023/06/01}{\__hook_try_patch_with_catcodes:Nnnnw}
+ {cmd~hooks~with~args}
\cs_new_protected:Npn \__hook_try_patch_with_catcodes:Nnnnw #1 #2 #3 #4
{
\quark_if_recursion_tail_stop_do:nn {#4} { \use:n }
@@ -6674,6 +8147,25 @@ of this package available from CTAN}
{
\__hook_patch_debug:x { ++~macro~can~be~retokenized~cleanly }
\__hook_patch_debug:x { ==~retokenizing~macro~now }
+ \__hook_patch_retokenize:Nnnn #1 { cmd / #2 / #3 } {#3} {#4}
+ \use_i_delimit_by_q_recursion_stop:nw \use_none:n
+ }
+ {
+ \__hook_patch_debug:x { --~macro~cannot~be~retokenized~cleanly }
+ \__hook_try_patch_with_catcodes:Nnnnw #1 {#2} {#3}
+ }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\__hook_try_patch_with_catcodes:Nnnnw}
+ {cmd~hooks~with~args}
+\cs_gset_protected:Npn \__hook_try_patch_with_catcodes:Nnnnw #1 #2 #3 #4
+ {
+ \quark_if_recursion_tail_stop_do:nn {#4} { \use:n }
+ \__hook_patch_debug:x { ++~trying~to~patch~by~retokenization }
+ \__hook_cmd_if_scanable:NnTF {#1} {#4}
+ {
+ \__hook_patch_debug:x { ++~macro~can~be~retokenized~cleanly }
+ \__hook_patch_debug:x { ==~retokenizing~macro~now }
\__hook_patch_retokenize:Nnnn #1 {#2} {#3} {#4}
\use_i_delimit_by_q_recursion_stop:nw \use_none:n
}
@@ -6682,6 +8174,7 @@ of this package available from CTAN}
\__hook_try_patch_with_catcodes:Nnnnw #1 {#2} {#3}
}
}
+\EndIncludeInRelease
\cs_new_eq:NN \kerneltmpDoNotUse !
\cs_new_protected:Npn \__hook_patch_required_catcodes:
{
@@ -6709,8 +8202,86 @@ of this package available from CTAN}
{ \prg_return_true: }
{ \prg_return_false: }
}
+\IncludeInRelease{2023/06/01}{\__hook_guess_arg_count:NN}
+ {cmd~hooks~with~args}
+\cs_new_protected:Npn \__hook_guess_arg_count:NN #1
+ {
+ \exp_after:wN \__hook_guess_arg_count:wN
+ \token_to_meaning:N #1 \s__hook_mark
+ }
+\exp_last_unbraced:NNNNo
+\cs_new_protected:Npx \__hook_guess_arg_count:wN
+ #1 { \tl_to_str:n { macro: } } #2 \s__hook_mark #3
+ {
+ \int_set:Nn #3
+ {
+ \exp_not:N \__hook_guess_arg_count:nw { 0 } #2
+ \c_hash_str 0 \s__hook_mark
+ }
+ }
+\use:e
+ { \cs_new:Npn \exp_not:N \__hook_guess_arg_count:nw #1 #2 \c_hash_str #3 }
+ {
+ \int_compare:nNnTF { #1 + 1 } = {#3}
+ { \__hook_guess_arg_count:nw {#3} }
+ { #1 \__hook_use_none_delimit_by_s_mark:w }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\__hook_guess_arg_count:NN}
+ {cmd~hooks~with~args}
+\cs_undefine:N \__hook_guess_arg_count:NN
+\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}{\__hook_patch_retokenize:Nnnn}
+ {cmd~hooks~with~args}
\cs_new_protected:Npn \__hook_patch_retokenize:Nnnn #1 #2 #3 #4
{
+ \__hook_guess_arg_count:NN #1 \l__hook_patch_num_args_int
+ \__hook_disable:n {#2}
+ \cs_undefine:c { c__hook_#2_parameter_tl }
+ \__hook_make_usable:nn {#2} { \l__hook_patch_num_args_int }
+ \tl_set:Ne \l__hook_tmpa_tl
+ { \exp_args:Ne \tl_to_str:n { \__hook_braced_parameter:n {#2} } }
+ \use:x
+ {
+ \str_replace_all:Nnn \exp_not:N \l__hook_tmpa_tl
+ { #### } { \c_hash_str }
+ }
+ \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
+ \cs_set_eq:NN \__hook_tmp:w \scan_stop:
+ \use:x
+ {
+ \cs_set:Npn \__hook_tmp:w
+ ####1 \tl_to_str:n { macro: } ####2 -> ####3 \s__hook_mark
+ {
+ ####1 \def \kerneltmpDoNotUse ####2
+ {
+ \str_if_eq:nnT {#3} { before }
+ {
+ \token_to_str:N \UseHookWithArguments {#2}
+ { \int_use:N \l__hook_patch_num_args_int }
+ \l__hook_tmpa_tl
+ }
+ ####3
+ \str_if_eq:nnT {#3} { after }
+ {
+ \token_to_str:N \UseHookWithArguments {#2}
+ { \int_use:N \l__hook_patch_num_args_int }
+ \l__hook_tmpa_tl
+ }
+ }
+ }
+ \tl_set:Nx \exp_not:N \l__hook_tmpa_tl
+ { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
+ }
+ \tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
+ \cs_gset_eq:NN #1 \kerneltmpDoNotUse
+ \__hook_update_hook_code:n {#2}
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\__hook_patch_retokenize:Nnnn}
+ {cmd~hooks~with~args}
+\cs_gset_protected:Npn \__hook_patch_retokenize:Nnnn #1 #2 #3 #4
+ {
\cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
\cs_set_eq:NN \__hook_tmp:w \scan_stop:
\use:x
@@ -6733,6 +8304,7 @@ of this package available from CTAN}
\tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
\cs_gset_eq:NN #1 \kerneltmpDoNotUse
}
+\EndIncludeInRelease
\IncludeInRelease{2021/11/15}{wrong-cmd-hook}%
{Standardise~generic~hook~names}
\EndIncludeInRelease
@@ -6819,10 +8391,12 @@ of this package available from CTAN}
\let\@latex@note@no@line\@latex@info@no@line
\EndIncludeInRelease
%%% From File: ltpar.dtx
-%% File: ltpara.dtx (C) Copyright 2020-2021
+%% File: ltpara.dtx
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
-\def\ltparaversion{v1.0k}
-\def\ltparadate{2022/05/13}
+\def\ltparaversion{v1.0l}
+\def\ltparadate{2023/01/30}
\ExplSyntaxOn
@@ -6834,6 +8408,8 @@ of this package available from CTAN}
\let \@kernel@before@para@begin \@empty
\let \@kernel@after@para@end \@empty
\let \@kernel@after@para@after \@empty
+\IncludeInRelease{2023/06/01}
+ {\g__para_standard_everypar_tl}{minipage~ fix}
\tl_new:N \g__para_standard_everypar_tl
\tl_gset:Nn \g__para_standard_everypar_tl {
\box_gset_to_last:N \g_para_indent_box
@@ -6845,6 +8421,31 @@ of this package available from CTAN}
\hook_use:n {para/before}
\group_begin:
\tex_everypar:D {}
+ \skip_set:Nn \tex_parskip:D
+ { \if@minipage -\tex_parskip:D \else: \c_zero_skip \fi: }
+ \tex_noindent:D
+ \group_end:
+ \tex_everypar:D{\g__para_standard_everypar_tl}
+ \@kernel@before@para@begin
+ \hook_use:n {para/begin}
+ \if_mode_horizontal: \else:
+ \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
+ \__para_handle_indent:
+}
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}
+ {\g__para_standard_everypar_tl}{minipage~ fix}
+
+\tl_gset:Nn \g__para_standard_everypar_tl {
+ \box_gset_to_last:N \g_para_indent_box
+ \group_begin:
+ \tex_par:D
+ \group_end:
+ \tex_everypar:D { \msg_error:nnnn { hooks }{ para-mode }{before}{vertical} }
+ \@kernel@before@para@before
+ \hook_use:n {para/before}
+ \group_begin:
+ \tex_everypar:D {}
\skip_zero:N \tex_parskip:D
\tex_noindent:D
\group_end:
@@ -6855,6 +8456,14 @@ of this package available from CTAN}
\msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
\__para_handle_indent:
}
+\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \exp_after:wN \__para_tmp:w \token_to_meaning:N \everypar
+ \c_space_tl
+}
+\EndIncludeInRelease
\tex_everypar:D{\g__para_standard_everypar_tl}
\newtoks \everypar
@@ -6966,7 +8575,9 @@ of this package available from CTAN}
\EndModuleRelease
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% File: ltmeta.dtx (C) Copyright 2021, 2022
+%% File: ltmeta.dtx
+%% Copyright (C) 2021-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
\def\ltmetaversion{v1.0b}
\def\ltmetadate{2022/05/18}
@@ -7013,6 +8624,7 @@ of this package available from CTAN}
\DeclareRobustCommand\linebreak{\@testopt{\@no@lnbk-}4}
\DeclareRobustCommand\nolinebreak{\@testopt\@no@lnbk4}
\DeclareRobustCommand\samepage{\interlinepenalty\@M
+ \predisplaypenalty\@M
\postdisplaypenalty\@M
\interdisplaylinepenalty\@M
\@beginparpenalty\@M
@@ -7401,6 +9013,7 @@ of this package available from CTAN}
\global\let\do\noexpand
\UseOneTimeHook{begindocument/end}%
\ignorespaces}
+\let\do\noexpand
\NewHook{begindocument}
\NewHook{begindocument/before}
\NewHook{begindocument/end}
@@ -7758,8 +9371,31 @@ of this package available from CTAN}
\reserved@a}
\EndIncludeInRelease
+\IncludeInRelease{2023/05/01}%
+ {\IfFileExists@}{IfFileExists}
+\long\def \IfFileExists@#1#2#3{%
+ \edef\@filef@und{\IfFileExists@@{#1}}%
+ \ifx\@filef@und\@empty
+ \if\relax\detokenize{#1}\relax
+ \let\reserved@a\@firstoftwo
+ \def\@filef@und{".tex" }%
+ \else
+ \let\reserved@a\@secondoftwo
+ \fi
+ \else
+ \let\reserved@a\@firstoftwo
+ \edef\@filef@und{"\@filef@und" }%
+ \fi
+ \expandafter\def\expandafter\reserved@a
+ \expandafter{\reserved@a{#2}{#3}}%
+\reserved@a}
+\ExplSyntaxOn
+\cs_new_eq:NN \IfFileExists@@ \file_full_name:n
+\ExplSyntaxOff
+\EndIncludeInRelease
\IncludeInRelease{2021/06/01}%
- {\IfFileExists@}{manage unbalanced conditionals}
+ {\IfFileExists@}{IfFileExists}
+
\long\def \IfFileExists@#1#2#3{%
\openin\@inputcheck"#1" %
\ifeof\@inputcheck
@@ -7776,9 +9412,11 @@ of this package available from CTAN}
\expandafter\def\expandafter\reserved@a
\expandafter{\reserved@a{#2}{#3}}%
\reserved@a}
+\let\IfFileExists@@\@undefined
\EndIncludeInRelease
+
\IncludeInRelease{2019/10/01}%
- {\IfFileExists@}{manage unbalanced conditionals}
+ {\IfFileExists@}{IfFileExists}
\long\def \IfFileExists@#1#2#3{%
\openin\@inputcheck"#1" %
@@ -7796,7 +9434,7 @@ of this package available from CTAN}
\reserved@a}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\IfFileExists@}{manage unbalanced conditionals}
+ {\IfFileExists@}{IfFileExists}
\let\IfFileExists@\@undefined
@@ -11328,11 +12966,58 @@ of this package available from CTAN}
%%% From File: ltpageno.dtx
%%% From File: ltxref.dtx
+\IncludeInRelease{2023/06/01}%
+ {\@kernel@sref}{store five arguments}%
+\def\@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#3' on page \thepage \space
+ undefined}%
+ \else
+ \expandafter#2#1\@empty\@empty\@empty\null
+ \fi}
+\long\def\@firstoffive#1#2#3#4#5{#1}
+\long\def\@secondoffive#1#2#3#4#5{#2}
+\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}}
+\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname
+ \@secondoffive{#1}}
+\EndIncludeInRelease
\IncludeInRelease{2022/06/01}%
- {\ref}{Add starred reference commands}%
+ {\@kernel@sref}{store five arguments}%
+\def\@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#3' on page \thepage \space
+ undefined}%
+ \else
+ \expandafter#2#1\null
+ \fi}
+\let\@firstoffive\undefined
+\let\@secondoffive\undefined
\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname
\@secondoftwo{#1}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@kernel@sref}{store five arguments}%
+\def\@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#3' on page \thepage \space
+ undefined}%
+ \else
+ \expandafter#2#1\null
+ \fi}
+\let\@firstoffive\undefined
+\let\@secondoffive\undefined
+\let\@kernel@sref\undefined
+\let\@kernel@spageref\undefined
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\ref}{Add starred reference commands}%
\let\@kernel@ref\@kernel@sref
\let\@kernel@pageref\@kernel@spageref
\NewDocumentCommand\ref{s}
@@ -11351,6 +13036,21 @@ of this package available from CTAN}
\@secondoftwo{#1}}
\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}%
+ {\label}{store five label arguments}%
+\providecommand\@currentlabelname{}
+\providecommand\@currentHref{}
+\providecommand\@kernel@reserved@label@data{}
+\NewHookWithArguments{label}{1}
+\def\label#1{\@bsphack
+ \begingroup
+ \UseHookWithArguments{label}{1}{#1}%
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\@currentlabel}{\thepage}%
+ {\@currentlabelname}{\@currentHref}{\@kernel@reserved@label@data}}}%
+ \endgroup
+ \@esphack}
+\EndIncludeInRelease
\IncludeInRelease{2022/06/01}%
{\Ref}{Add starred version}%
\def\@currentcounter{}
@@ -11367,6 +13067,16 @@ of this package available from CTAN}
\NewDocumentCommand\Ref{s}
{\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}}
\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\label}{store five label arguments}%
+\let\@currenttitle\@undefined
+\let\@currenttarget\@undefined
+\let\@kernel@currentdata\@undefined
+\def\label#1{\@bsphack
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
+ \@esphack}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\Ref}{Add starred version}%
\def\@currentcounter{}
@@ -11432,6 +13142,13 @@ of this package available from CTAN}
\NewHook{enddocument/end}
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
+\AddToHook{enddocument/info}[kernel/release]{%
+ \let\show@release@info\wlog
+ \show@release@info{ ***********}%
+ \the\LaTeXReleaseInfo
+ \show@release@info{ ***********}}
+
+\DeclareHookRule{enddocument/info}{kernel/release}{before}{kernel/filelist}
\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
\def\@enddocument@kernel@warnings{%
\ifdim \font@submax >\fontsubfuzz\relax
@@ -12047,6 +13764,18 @@ of this package available from CTAN}
\noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
}
\EndIncludeInRelease
+\IncludeInRelease{2023/06/01}%
+ {\eqno}{add ignorespaces to eqno}%
+\let\@kernel@eqno\eqno
+\let\@kernel@leqno\leqno
+\protected\def\eqno{\@kernel@eqno\aftergroup\ignorespaces}
+\protected\def\leqno{\@kernel@leqno\aftergroup\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\eqno}{add ignorespaces to eqno}%
+\let\eqno\@kernel@eqno
+\let\leqno\@kernel@leqno
+\EndIncludeInRelease
%%% From File: ltlists.dtx
%%% From File: ltboxes.dtx
\IncludeInRelease{2015/01/01}%
@@ -13393,7 +15122,9 @@ of this package available from CTAN}
\@esphack}
\EndIncludeInRelease
-%% File: ltmarks.dtx (C) Copyright 2022
+%% File: ltmarks.dtx
+%% Copyright (C) 2022-2023
+%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
\def\ltmarksversion{v1.0d}
\def\ltmarksdate{2022/06/01}
@@ -13880,12 +15611,14 @@ of this package available from CTAN}
\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\let\IfPackageAtLeastTF\@ifpackagelater
\let\IfClassAtLeastTF\@ifclasslater
+\def\IfFileAtLeastTF#1{\expandafter\@ifl@t@r\csname ver@#1\endcsname}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\IfFormatAtLeastTF}{Test format date}%
\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\let\IfPackageAtLeastTF\@ifpackagelater
\let\IfClassAtLeastTF\@ifclasslater
+\def\IfFileAtLeastTF#1{\expandafter\@ifl@t@r\csname ver@#1\endcsname}
\EndIncludeInRelease
\IncludeInRelease{2018/04/01}%
{\@ifl@t@r}{Guard against bad input}%
@@ -14312,7 +16045,7 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\@onefilewithoptions}{Hooks and unused options issue}%
-\def\@onefilewithoptions#1[#2][#3]#4{%
+\def\load@onefilewithoptions#1[#2][#3]#4{%
\@expl@@@filehook@set@curr@file@@nNN{#1.#4}\reserved@a\reserved@b
\edef\reserved@c{\def\noexpand\reserved@c####1%
\detokenize\expandafter{\expanded{.#4}}%
@@ -14535,7 +16268,7 @@ of this package available from CTAN}
\csname filec@ntents@\reserved@a\endcsname
\else
\@latex@error{Unknown filecontents option \reserved@a}%
- {Valid options are force (or overwrite), nosearch, noheader}%
+ {Valid options are force (or overwrite), nosearch, noheader, nowarn}%
\fi}%
\filec@ntents
}
@@ -14547,6 +16280,10 @@ of this package available from CTAN}
\def\filec@ntents@where{in current directory}}
\let\filec@ntents@checkdir\@empty
\def\filec@ntents@where{exists on the system}
+\def\filec@ntents@nowarn{%
+ \let\filec@ntents@warning\@latex@note@no@line
+}
+\let\filec@ntents@warning\@latex@warning@no@line
\begingroup%
\@tempcnta=1
\loop
@@ -14591,8 +16328,8 @@ of this package available from CTAN}
write to the file you are reading from!\MessageBreak%
Data is written to screen instead.}%
\else%
- \@latex@warning@no@line%
- {Writing or overwriting file `\@currdir\@curr@file'}%
+ \filec@ntents@warning%
+ {Writing or overwriting file `\@curr@file'}%
\immediate\openout\reserved@c\q@curr@file\relax%
\fi%
\fi%
@@ -14871,8 +16608,8 @@ of this package available from CTAN}
\endgroup%
\EndIncludeInRelease
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0n}
-\providecommand\ltfilehookdate{2022/08/18}
+\providecommand\ltfilehookversion{v1.0o}
+\providecommand\ltfilehookdate{2023/04/02}
\IncludeInRelease{2020/10/01}%
{\CurrentFile}{Hook management file}%
\ExplSyntaxOn
@@ -15211,7 +16948,7 @@ of this package available from CTAN}
\def\@kernel@make@file@csname#1#2#3{%
\xdef#1{\expandafter\@set@curr@file@aux
\csname\expandafter#2\@firstofone#3\@nil\endcsname}}
-\def\@set@curr@file@aux#1{%
+\long\def\@set@curr@file@aux#1{%
\expandafter\ifx\csname\endcsname#1%
.tex\else\string#1\fi}
\def\@filehook@set@CurrentFile{%
@@ -15356,12 +17093,12 @@ of this package available from CTAN}
\EndIncludeInRelease
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2022
-%% Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2023
+%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0m}
-\providecommand\ltshipoutdate{2022/08/26}
+\providecommand\ltshipoutversion{v1.0n}
+\providecommand\ltshipoutdate{2022/11/08}
\IncludeInRelease{2020/10/01}%
{\shipout}{Hook management (shipout)}%
\ExplSyntaxOn
@@ -15477,6 +17214,7 @@ of this package available from CTAN}
\bool_gset_true:N \g__shipout_lastpage_handled_bool
}
}
+ \hook_use:n {shipout}
\__shipout_finalize_box:
\cs_set_eq:NN \protect \exp_not:N
\tex_shipout:D \box_use:N \l_shipout_box
@@ -15508,6 +17246,7 @@ of this package available from CTAN}
\cs_gset_eq:NN \RawShipout \__shipout_execute_raw:
\cs_new_eq:NN \__shipout_saved_protect: \protect
\hook_new:n{shipout/before}
+\hook_new:n{shipout}
\hook_new:n{shipout/after}
\hook_new:n{shipout/foreground}
\hook_new:n{shipout/background}
@@ -17139,6 +18878,7 @@ of this package available from CTAN}
}
\tl_clear:N \l__latexrelease_restores_tl
\msg_redirect_name:nnn { hooks } { exists } { }
+\msg_redirect_name:nnn { mark } { class-already-defined } { }
\ExplSyntaxOff}%
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/base/latexsym.sty b/Master/texmf-dist/tex/latex/base/latexsym.sty
index d73a74a9c92..caf99f3261e 100644
--- a/Master/texmf-dist/tex/latex/base/latexsym.sty
+++ b/Master/texmf-dist/tex/latex/base/latexsym.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin1.def b/Master/texmf-dist/tex/latex/base/latin1.def
index 120d9721fe0..3d590fd3327 100644
--- a/Master/texmf-dist/tex/latex/base/latin1.def
+++ b/Master/texmf-dist/tex/latex/base/latin1.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin10.def b/Master/texmf-dist/tex/latex/base/latin10.def
index f4241d8c027..f2432ee2564 100644
--- a/Master/texmf-dist/tex/latex/base/latin10.def
+++ b/Master/texmf-dist/tex/latex/base/latin10.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin2.def b/Master/texmf-dist/tex/latex/base/latin2.def
index b547a325c11..5cb4d0b0103 100644
--- a/Master/texmf-dist/tex/latex/base/latin2.def
+++ b/Master/texmf-dist/tex/latex/base/latin2.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin3.def b/Master/texmf-dist/tex/latex/base/latin3.def
index 4ae99149208..14fc3e8c4f6 100644
--- a/Master/texmf-dist/tex/latex/base/latin3.def
+++ b/Master/texmf-dist/tex/latex/base/latin3.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin4.def b/Master/texmf-dist/tex/latex/base/latin4.def
index b6add411489..af250e609d7 100644
--- a/Master/texmf-dist/tex/latex/base/latin4.def
+++ b/Master/texmf-dist/tex/latex/base/latin4.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin5.def b/Master/texmf-dist/tex/latex/base/latin5.def
index 45bf0918e60..f59d6edd80b 100644
--- a/Master/texmf-dist/tex/latex/base/latin5.def
+++ b/Master/texmf-dist/tex/latex/base/latin5.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin9.def b/Master/texmf-dist/tex/latex/base/latin9.def
index ef314108513..487a339844a 100644
--- a/Master/texmf-dist/tex/latex/base/latin9.def
+++ b/Master/texmf-dist/tex/latex/base/latin9.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/lcyenc.dfu b/Master/texmf-dist/tex/latex/base/lcyenc.dfu
index 94694168669..ea2bea8743b 100644
--- a/Master/texmf-dist/tex/latex/base/lcyenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/lcyenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/leqno.clo b/Master/texmf-dist/tex/latex/base/leqno.clo
index cac53d6e890..ab6956249ec 100644
--- a/Master/texmf-dist/tex/latex/base/leqno.clo
+++ b/Master/texmf-dist/tex/latex/base/leqno.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/leqno.sty b/Master/texmf-dist/tex/latex/base/leqno.sty
index 9d2d65de04b..30106d69337 100644
--- a/Master/texmf-dist/tex/latex/base/leqno.sty
+++ b/Master/texmf-dist/tex/latex/base/leqno.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/letter.cls b/Master/texmf-dist/tex/latex/base/letter.cls
index 9207cf32505..f926d90218d 100644
--- a/Master/texmf-dist/tex/latex/base/letter.cls
+++ b/Master/texmf-dist/tex/latex/base/letter.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/letter.sty b/Master/texmf-dist/tex/latex/base/letter.sty
index 87953c9e372..3eb254e230d 100644
--- a/Master/texmf-dist/tex/latex/base/letter.sty
+++ b/Master/texmf-dist/tex/latex/base/letter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.lua b/Master/texmf-dist/tex/latex/base/ltluatex.lua
index 1565ae7d19d..5573fc75636 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.lua
@@ -13,7 +13,7 @@
-- (but please observe conditions on bug reports sent to that address!)
--
--
--- Copyright (C) 2015-2022
+-- Copyright (C) 2015-2023
-- The LaTeX Project and any individual authors listed elsewhere
-- in this file.
--
@@ -45,7 +45,6 @@ luatexbase = luatexbase or { }
local luatexbase = luatexbase
local string_gsub = string.gsub
local tex_count = tex.count
-local tex_setattribute = tex.setattribute
local tex_setcount = tex.setcount
local texio_write_nl = texio.write_nl
local flush_list = node.flush_list
diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.tex b/Master/texmf-dist/tex/latex/base/ltluatex.tex
index dc356201b06..ddef389f103 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}%
-[2022/10/03 v1.2a
+[2023/01/19 v1.2b
LuaTeX support for plain TeX (core)
]
\edef\etatcatcode{\the\catcode`\@}
diff --git a/Master/texmf-dist/tex/latex/base/ltnews.cls b/Master/texmf-dist/tex/latex/base/ltnews.cls
index 9271b56f1c6..45ee3664d11 100644
--- a/Master/texmf-dist/tex/latex/base/ltnews.cls
+++ b/Master/texmf-dist/tex/latex/base/ltnews.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1993-2020
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -41,7 +41,7 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{ltnews}[2017/12/13 v1.06 Standard LaTeX class]
+\ProvidesClass{ltnews}[2023/05/28 v1.08 Standard LaTeX class]
% The configuration file, used for passing options.
@@ -429,6 +429,30 @@
\newcommand{\@year}{\ClassError{ltnews}
{No \protect\publicationyear~given}\@eha}
+\newcommand{\publicationday}{\renewcommand{\@day}}
+\newcommand{\@day}{01} % most releases happen on 1st of a month
+
+\newcommand{\publicationdate}{%
+ % support draft ltnews, \publicationyear{2023 --- DRAFT ...}
+ \expandafter\@gobblenonyear\@year\@nil
+ -\@julianmonthtonum\@month-\two@digits\@day}
+
+\newcommand{\@julianmonthtonum}[1]{\@nameuse{@juliantonum#1}}
+\def\@juliantonumJanuary {01}
+\def\@juliantonumFebruary {02}
+\def\@juliantonumMarch {03}
+\def\@juliantonumApril {04}
+\def\@juliantonumMay {05}
+\def\@juliantonumJune {06}
+\def\@juliantonumJuly {07}
+\def\@juliantonumAugust {08}
+\def\@juliantonumSeptember{09}
+\def\@juliantonumOctober {10}
+\def\@juliantonumNovember {11}
+\def\@juliantonumDecember {12}
+
+\long\def\@gobblenonyear#1#2#3#4#5\@nil{#1#2#3#4}
+
\newcommand{\publicationissue}{\renewcommand{\@issue}}
\newcommand{\@issue}{\ClassError{ltnews}
{No \protect\publicationissue~given}\@eha}
@@ -449,7 +473,8 @@
\twocolumn[{%
\parbox[t][7\baselineskip]{\textwidth}{%
\@titlefont\@title\\[\medskipamount]
- \normalfont\normalsize\issuename~\@issue, \@month~\@year
+ \normalfont\normalsize\issuename~\@issue,
+ \@month~\@year~(\LaTeX\ release \publicationdate)%
}%
}]%
\thispagestyle{titlepage}
@@ -494,6 +519,17 @@
{1sp}{\@subheadingfont}%
}
+
+% suggestion by Karl Berry (not integrated (yet))
+
+\newcommand{\ltnewssectformat}{%
+ \@headingfont
+ \frenchspacing
+ \raggedright
+ \hyphenpenalty=10000
+ \exhyphenpenalty=10000
+}
+
% No section numbers.
\setcounter{secnumdepth}{0}
diff --git a/Master/texmf-dist/tex/latex/base/ltxcheck.tex b/Master/texmf-dist/tex/latex/base/ltxcheck.tex
index 7f4b925b79f..d219d2ebc2c 100644
--- a/Master/texmf-dist/tex/latex/base/ltxcheck.tex
+++ b/Master/texmf-dist/tex/latex/base/ltxcheck.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2022
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ltxdoc.cfg b/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
index 84131c3da6a..839bfc8e117 100644
--- a/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
+++ b/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ltxdoc.cls b/Master/texmf-dist/tex/latex/base/ltxdoc.cls
index 9cf4c034c5f..acdbdc2ec58 100644
--- a/Master/texmf-dist/tex/latex/base/ltxdoc.cls
+++ b/Master/texmf-dist/tex/latex/base/ltxdoc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,13 +43,16 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltxdoc}
- [2022/06/22 v2.1i Standard LaTeX documentation class]
+ [2023/03/28 v2.1j Standard LaTeX documentation class]
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
\newif\ifltxdoc@load@cfg@ \ltxdoc@load@cfg@true
\DeclareOption{nocfg}{\ltxdoc@load@cfg@false}
\let\ltxdoc@doc@version\@empty % use current version by default
-\DeclareOption{doc2}{\def\ltxdoc@doc@version{=v2}}
+\DeclareOption{doc2}{%
+ \def\ltxdoc@doc@version{=v2}%
+ \DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}%
+}
\DeclareOption*{%
\PassOptionsToClass {\CurrentOption}{article}}
\ProcessOptions
diff --git a/Master/texmf-dist/tex/latex/base/ltxguide.cls b/Master/texmf-dist/tex/latex/base/ltxguide.cls
index b743fd9cdae..778f7e993e8 100644
--- a/Master/texmf-dist/tex/latex/base/ltxguide.cls
+++ b/Master/texmf-dist/tex/latex/base/ltxguide.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1993-2019
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ly1enc.dfu b/Master/texmf-dist/tex/latex/base/ly1enc.dfu
index 28a68ce14f0..bd5ee53ebc4 100644
--- a/Master/texmf-dist/tex/latex/base/ly1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ly1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/macce.def b/Master/texmf-dist/tex/latex/base/macce.def
index e5c22b74610..5746e89a40a 100644
--- a/Master/texmf-dist/tex/latex/base/macce.def
+++ b/Master/texmf-dist/tex/latex/base/macce.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/makeidx.sty b/Master/texmf-dist/tex/latex/base/makeidx.sty
index 16a1db6ab56..f1579601083 100644
--- a/Master/texmf-dist/tex/latex/base/makeidx.sty
+++ b/Master/texmf-dist/tex/latex/base/makeidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/minimal.cls b/Master/texmf-dist/tex/latex/base/minimal.cls
index 9024a23bca7..89c233c30f3 100644
--- a/Master/texmf-dist/tex/latex/base/minimal.cls
+++ b/Master/texmf-dist/tex/latex/base/minimal.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1993-2019
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/newlfont.sty b/Master/texmf-dist/tex/latex/base/newlfont.sty
index f15202c9a07..79b4a8b7d9f 100644
--- a/Master/texmf-dist/tex/latex/base/newlfont.sty
+++ b/Master/texmf-dist/tex/latex/base/newlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/next.def b/Master/texmf-dist/tex/latex/base/next.def
index 0fdc2a5350a..760aaccd81e 100644
--- a/Master/texmf-dist/tex/latex/base/next.def
+++ b/Master/texmf-dist/tex/latex/base/next.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/nfssfont.tex b/Master/texmf-dist/tex/latex/base/nfssfont.tex
index 2dd193aeeba..b0c10491eac 100644
--- a/Master/texmf-dist/tex/latex/base/nfssfont.tex
+++ b/Master/texmf-dist/tex/latex/base/nfssfont.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/oldlfont.sty b/Master/texmf-dist/tex/latex/base/oldlfont.sty
index 60c4d56ae74..04a08c4b738 100644
--- a/Master/texmf-dist/tex/latex/base/oldlfont.sty
+++ b/Master/texmf-dist/tex/latex/base/oldlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omlcmm.fd b/Master/texmf-dist/tex/latex/base/omlcmm.fd
index 329e1cb193d..2adb5587cc9 100644
--- a/Master/texmf-dist/tex/latex/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex/base/omlcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmm.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmm}{\skewchar\font127 }
\DeclareFontShape{OML}{cmm}{m}{it}%
{<5><6><7><8><9>gen*cmmi%
diff --git a/Master/texmf-dist/tex/latex/base/omlcmr.fd b/Master/texmf-dist/tex/latex/base/omlcmr.fd
index 34a6edab171..2d2d5b39c9d 100644
--- a/Master/texmf-dist/tex/latex/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex/base/omlcmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmr}{\skewchar\font127 }
\DeclareFontShape{OML}{cmr}{m}{n}%
{<->ssub*cmm/m/it}{}
diff --git a/Master/texmf-dist/tex/latex/base/omlenc.def b/Master/texmf-dist/tex/latex/base/omlenc.def
index a3f09a94301..3f7c8183450 100644
--- a/Master/texmf-dist/tex/latex/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex/base/omlenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omllcmm.fd b/Master/texmf-dist/tex/latex/base/omllcmm.fd
index 6321c690539..7a9d2fe5891 100644
--- a/Master/texmf-dist/tex/latex/base/omllcmm.fd
+++ b/Master/texmf-dist/tex/latex/base/omllcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omscmr.fd b/Master/texmf-dist/tex/latex/base/omscmr.fd
index 35be157bd6b..43181585fd9 100644
--- a/Master/texmf-dist/tex/latex/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex/base/omscmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmr}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmr}{m}{n}%
{<->ssub*cmsy/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/base/omscmsy.fd b/Master/texmf-dist/tex/latex/base/omscmsy.fd
index 696a1cd9942..ce660e5add9 100644
--- a/Master/texmf-dist/tex/latex/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex/base/omscmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmsy.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmsy}{m}{n}{%
<5><6><7><8><9><10>gen*cmsy%
diff --git a/Master/texmf-dist/tex/latex/base/omsenc.def b/Master/texmf-dist/tex/latex/base/omsenc.def
index cd8e0b9a183..715ade1b848 100644
--- a/Master/texmf-dist/tex/latex/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex/base/omsenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omsenc.dfu b/Master/texmf-dist/tex/latex/base/omsenc.dfu
index 0e2e5c93a10..94376b83d47 100644
--- a/Master/texmf-dist/tex/latex/base/omsenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/omsenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omslcmsy.fd b/Master/texmf-dist/tex/latex/base/omslcmsy.fd
index 2373069d3e1..eefcd4808d1 100644
--- a/Master/texmf-dist/tex/latex/base/omslcmsy.fd
+++ b/Master/texmf-dist/tex/latex/base/omslcmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omxcmex.fd b/Master/texmf-dist/tex/latex/base/omxcmex.fd
index 2f3fa1342fe..24bf1415563 100644
--- a/Master/texmf-dist/tex/latex/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex/base/omxcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omxcmex.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OMX}{cmex}{}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
<->sfixed*cmex10%
diff --git a/Master/texmf-dist/tex/latex/base/omxlcmex.fd b/Master/texmf-dist/tex/latex/base/omxlcmex.fd
index 9cff2309ae0..a6421af7225 100644
--- a/Master/texmf-dist/tex/latex/base/omxlcmex.fd
+++ b/Master/texmf-dist/tex/latex/base/omxlcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/openbib.sty b/Master/texmf-dist/tex/latex/base/openbib.sty
index 97b1d644082..9f8eadf4e7a 100644
--- a/Master/texmf-dist/tex/latex/base/openbib.sty
+++ b/Master/texmf-dist/tex/latex/base/openbib.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
index 2ad840921f1..4436c6fc885 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmdh.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmdh}{m}{n}{%
<10>cmdunh10%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
index 31a94988252..21ad4c9adfd 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfib.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfib}{m}{n}{%
<8>cmfib8%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
index 378a07d8670..c1be1c7b4b6 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfr}{m}{n}{%
<10>cmff10%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmr.fd b/Master/texmf-dist/tex/latex/base/ot1cmr.fd
index a79e2b366f2..21b00587b82 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmss.fd b/Master/texmf-dist/tex/latex/base/ot1cmss.fd
index 891c4f46c44..48efc3c4095 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmss.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
index 02f080ce517..1e282033c77 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{OT1}{cmtt}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
index bf485c7e1d7..e3cb859356e 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmvtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmvtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1enc.def b/Master/texmf-dist/tex/latex/base/ot1enc.def
index 5232a26c1d1..74c03d042cd 100644
--- a/Master/texmf-dist/tex/latex/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex/base/ot1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1enc.dfu b/Master/texmf-dist/tex/latex/base/ot1enc.dfu
index 5cb0f7098a2..dd66ba8ea46 100644
--- a/Master/texmf-dist/tex/latex/base/ot1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ot1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1lcmss.fd b/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
index 49131029e53..ef45664e15d 100644
--- a/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd b/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
index 16dcda30472..09dbc0e2f5e 100644
--- a/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot2enc.dfu b/Master/texmf-dist/tex/latex/base/ot2enc.dfu
index 7bc71b4ee0b..0d072070b5b 100644
--- a/Master/texmf-dist/tex/latex/base/ot2enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ot2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot4enc.def b/Master/texmf-dist/tex/latex/base/ot4enc.def
index 6c356a0236e..c93fd6c847f 100644
--- a/Master/texmf-dist/tex/latex/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex/base/ot4enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/preload.cfg b/Master/texmf-dist/tex/latex/base/preload.cfg
index 6cf4ffa63bc..a62c45d74d1 100644
--- a/Master/texmf-dist/tex/latex/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex/base/preload.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/preload.ltx b/Master/texmf-dist/tex/latex/base/preload.ltx
index f47c071359e..301b8314502 100644
--- a/Master/texmf-dist/tex/latex/base/preload.ltx
+++ b/Master/texmf-dist/tex/latex/base/preload.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/proc.cls b/Master/texmf-dist/tex/latex/base/proc.cls
index 187202280e8..0a253ae64a3 100644
--- a/Master/texmf-dist/tex/latex/base/proc.cls
+++ b/Master/texmf-dist/tex/latex/base/proc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/proc.sty b/Master/texmf-dist/tex/latex/base/proc.sty
index 27bb2c28ba7..34debbd88c9 100644
--- a/Master/texmf-dist/tex/latex/base/proc.sty
+++ b/Master/texmf-dist/tex/latex/base/proc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/report.cls b/Master/texmf-dist/tex/latex/base/report.cls
index 2b2c29351d2..3131e66cf47 100644
--- a/Master/texmf-dist/tex/latex/base/report.cls
+++ b/Master/texmf-dist/tex/latex/base/report.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/report.sty b/Master/texmf-dist/tex/latex/base/report.sty
index 7c4c63b859e..6e64c9a6e5c 100644
--- a/Master/texmf-dist/tex/latex/base/report.sty
+++ b/Master/texmf-dist/tex/latex/base/report.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/sfonts.def b/Master/texmf-dist/tex/latex/base/sfonts.def
index 4e2b0a03aa0..1f1e20a3b0d 100644
--- a/Master/texmf-dist/tex/latex/base/sfonts.def
+++ b/Master/texmf-dist/tex/latex/base/sfonts.def
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/shortvrb.sty b/Master/texmf-dist/tex/latex/base/shortvrb.sty
index 9b4753ced92..df1d5a444f4 100644
--- a/Master/texmf-dist/tex/latex/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex/base/shortvrb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2022/07/03 v3.0k
+ [2022/11/13 v3.0m
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex/base/showidx.sty b/Master/texmf-dist/tex/latex/base/showidx.sty
index 3bdb36f0cd7..dcae43c5d50 100644
--- a/Master/texmf-dist/tex/latex/base/showidx.sty
+++ b/Master/texmf-dist/tex/latex/base/showidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/size10.clo b/Master/texmf-dist/tex/latex/base/size10.clo
index 03dc8e61fc5..57cfdaa612e 100644
--- a/Master/texmf-dist/tex/latex/base/size10.clo
+++ b/Master/texmf-dist/tex/latex/base/size10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex/base/size11.clo b/Master/texmf-dist/tex/latex/base/size11.clo
index 71f930d413d..54da9aad2e8 100644
--- a/Master/texmf-dist/tex/latex/base/size11.clo
+++ b/Master/texmf-dist/tex/latex/base/size11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex/base/size12.clo b/Master/texmf-dist/tex/latex/base/size12.clo
index e85a5983c4c..8bf5ca45a3f 100644
--- a/Master/texmf-dist/tex/latex/base/size12.clo
+++ b/Master/texmf-dist/tex/latex/base/size12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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}
- [2022/07/02 v1.4n
+ [2023/05/17 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex/base/slides.cls b/Master/texmf-dist/tex/latex/base/slides.cls
index 832b37cd253..25a632b6e9b 100644
--- a/Master/texmf-dist/tex/latex/base/slides.cls
+++ b/Master/texmf-dist/tex/latex/base/slides.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/slides.def b/Master/texmf-dist/tex/latex/base/slides.def
index 19d98ed86ba..29e9be29736 100644
--- a/Master/texmf-dist/tex/latex/base/slides.def
+++ b/Master/texmf-dist/tex/latex/base/slides.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/slides.sty b/Master/texmf-dist/tex/latex/base/slides.sty
index 4fb211590d3..462e6258d83 100644
--- a/Master/texmf-dist/tex/latex/base/slides.sty
+++ b/Master/texmf-dist/tex/latex/base/slides.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/structuredlog.sty b/Master/texmf-dist/tex/latex/base/structuredlog.sty
index 3821aefdeb2..cd77c7b8d2c 100644
--- a/Master/texmf-dist/tex/latex/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex/base/structuredlog.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% 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.0n}
-\providecommand\ltfilehookdate{2022/08/18}
+\providecommand\ltfilehookversion{v1.0o}
+\providecommand\ltfilehookdate{2023/04/02}
\ProvidesExplPackage
{structuredlog}{\ltfilehookdate}{\ltfilehookversion}
{Structuring the TeX transcript file}
diff --git a/Master/texmf-dist/tex/latex/base/syntonly.sty b/Master/texmf-dist/tex/latex/base/syntonly.sty
index aaac80ea9a3..957686e358a 100644
--- a/Master/texmf-dist/tex/latex/base/syntonly.sty
+++ b/Master/texmf-dist/tex/latex/base/syntonly.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmdh.fd b/Master/texmf-dist/tex/latex/base/t1cmdh.fd
index 780a713ce9b..9e480384ef3 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmdh.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmfib.fd b/Master/texmf-dist/tex/latex/base/t1cmfib.fd
index c2f39ac5212..e4a867cf791 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfib.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmfr.fd b/Master/texmf-dist/tex/latex/base/t1cmfr.fd
index ec37c5faf36..477e2dcfe70 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmr.fd b/Master/texmf-dist/tex/latex/base/t1cmr.fd
index 04c86917c23..e481092f781 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmss.fd b/Master/texmf-dist/tex/latex/base/t1cmss.fd
index 1f7138b51b7..0463f31391f 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmss.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@ssfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmtt.fd b/Master/texmf-dist/tex/latex/base/t1cmtt.fd
index 3cb4e498c51..fd119215dfa 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
index bd33c77b7fd..0880e905269 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmvtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.def b/Master/texmf-dist/tex/latex/base/t1enc.def
index 553d72e7a80..5920a031593 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex/base/t1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.dfu b/Master/texmf-dist/tex/latex/base/t1enc.dfu
index ef6c441be2b..c51cf0c04a4 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.sty b/Master/texmf-dist/tex/latex/base/t1enc.sty
index ddb9f5e4c06..5ad6cc05aed 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.sty
+++ b/Master/texmf-dist/tex/latex/base/t1enc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1lcmss.fd b/Master/texmf-dist/tex/latex/base/t1lcmss.fd
index 0b9e1ef509f..3c48a393f95 100644
--- a/Master/texmf-dist/tex/latex/base/t1lcmss.fd
+++ b/Master/texmf-dist/tex/latex/base/t1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1lcmtt.fd b/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
index e2a94984bf7..9aec1c5a515 100644
--- a/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2aenc.dfu b/Master/texmf-dist/tex/latex/base/t2aenc.dfu
index 9ff4e9f140e..8fa4097f690 100644
--- a/Master/texmf-dist/tex/latex/base/t2aenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2aenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2benc.dfu b/Master/texmf-dist/tex/latex/base/t2benc.dfu
index 59fda59a1f6..e87247dd102 100644
--- a/Master/texmf-dist/tex/latex/base/t2benc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2benc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2cenc.dfu b/Master/texmf-dist/tex/latex/base/t2cenc.dfu
index e3e14bc4624..a0ebe8a47a0 100644
--- a/Master/texmf-dist/tex/latex/base/t2cenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2cenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/testpage.tex b/Master/texmf-dist/tex/latex/base/testpage.tex
index e199a2bb71c..7eae6c142c2 100644
--- a/Master/texmf-dist/tex/latex/base/testpage.tex
+++ b/Master/texmf-dist/tex/latex/base/testpage.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2022
+% Copyright (C) 1993-2023
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
index a27026e8263..8ec5f6d5a30 100644
--- a/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/textcomp.sty b/Master/texmf-dist/tex/latex/base/textcomp.sty
index 449a9f38598..e8fb80e6eb7 100644
--- a/Master/texmf-dist/tex/latex/base/textcomp.sty
+++ b/Master/texmf-dist/tex/latex/base/textcomp.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tracefnt.sty b/Master/texmf-dist/tex/latex/base/tracefnt.sty
index 6a06bb50332..d8e726088f8 100644
--- a/Master/texmf-dist/tex/latex/base/tracefnt.sty
+++ b/Master/texmf-dist/tex/latex/base/tracefnt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmr.fd b/Master/texmf-dist/tex/latex/base/ts1cmr.fd
index 62e7610e4a8..ea39de79b98 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmss.fd b/Master/texmf-dist/tex/latex/base/ts1cmss.fd
index 88329e97559..31c65faa830 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmss.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
index bbea6182516..66027bc80b8 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
index 33e6ede3271..60ea33c0af1 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmvtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/ts1enc.def b/Master/texmf-dist/tex/latex/base/ts1enc.def
index b97bac2eba3..f311e509e13 100644
--- a/Master/texmf-dist/tex/latex/base/ts1enc.def
+++ b/Master/texmf-dist/tex/latex/base/ts1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ts1enc.dfu b/Master/texmf-dist/tex/latex/base/ts1enc.dfu
index 246b328c58b..37f1fbc3bf1 100644
--- a/Master/texmf-dist/tex/latex/base/ts1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ts1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tuenc.def b/Master/texmf-dist/tex/latex/base/tuenc.def
index 859a7af46a2..28bb87bc084 100644
--- a/Master/texmf-dist/tex/latex/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex/base/tuenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmdh.fd b/Master/texmf-dist/tex/latex/base/tulmdh.fd
index 0028cb541eb..88b4d4a1d24 100644
--- a/Master/texmf-dist/tex/latex/base/tulmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmr.fd b/Master/texmf-dist/tex/latex/base/tulmr.fd
index d58d8d144e0..3863435ec5e 100644
--- a/Master/texmf-dist/tex/latex/base/tulmr.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmss.fd b/Master/texmf-dist/tex/latex/base/tulmss.fd
index e51508cb329..960f33cdb41 100644
--- a/Master/texmf-dist/tex/latex/base/tulmss.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmssq.fd b/Master/texmf-dist/tex/latex/base/tulmssq.fd
index 8ac54fac397..906972625af 100644
--- a/Master/texmf-dist/tex/latex/base/tulmssq.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmssq.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmtt.fd b/Master/texmf-dist/tex/latex/base/tulmtt.fd
index 6db1233c3b3..f6ca9ab4296 100644
--- a/Master/texmf-dist/tex/latex/base/tulmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmvtt.fd b/Master/texmf-dist/tex/latex/base/tulmvtt.fd
index fc74365e5b0..f261d440351 100644
--- a/Master/texmf-dist/tex/latex/base/tulmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2022
+%% Copyright (C) 2016-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ucmr.fd b/Master/texmf-dist/tex/latex/base/ucmr.fd
index 7ab1d923a2a..eb81283a900 100644
--- a/Master/texmf-dist/tex/latex/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmr.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex/base/ucmss.fd b/Master/texmf-dist/tex/latex/base/ucmss.fd
index 963b6316c86..e861d2129f0 100644
--- a/Master/texmf-dist/tex/latex/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmss.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmss}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex/base/ucmtt.fd b/Master/texmf-dist/tex/latex/base/ucmtt.fd
index 5fa40718388..b889cba996a 100644
--- a/Master/texmf-dist/tex/latex/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmtt.fd}
- [2022/07/10 v2.5l Standard LaTeX font definitions]
+ [2023/04/13 v2.5m Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{U}{cmtt}{m}{n}%
{%
@@ -76,6 +76,7 @@
{<->sub*cmtt/m/n}{}
\DeclareFontShape{U}{cmtt}{bx}{it}%
{<->sub*cmtt/m/it}{}
+\DeclareFontShape{U}{cmtt}{bx}{sl}
{<->sub*cmtt/m/n}{}
\DeclareFontShape{U}{cmtt}{bx}{ui}%
{<->sub*cmtt/m/it}{}
diff --git a/Master/texmf-dist/tex/latex/base/ulasy.fd b/Master/texmf-dist/tex/latex/base/ulasy.fd
index 0f8daebd998..001041f1a74 100644
--- a/Master/texmf-dist/tex/latex/base/ulasy.fd
+++ b/Master/texmf-dist/tex/latex/base/ulasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ullasy.fd b/Master/texmf-dist/tex/latex/base/ullasy.fd
index dd5081d6546..f256e0df6b9 100644
--- a/Master/texmf-dist/tex/latex/base/ullasy.fd
+++ b/Master/texmf-dist/tex/latex/base/ullasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8-2018.def b/Master/texmf-dist/tex/latex/base/utf8-2018.def
index bed3941b41e..52acd666e4c 100644
--- a/Master/texmf-dist/tex/latex/base/utf8-2018.def
+++ b/Master/texmf-dist/tex/latex/base/utf8-2018.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8.def b/Master/texmf-dist/tex/latex/base/utf8.def
index ee2a25e7df5..79efa381ff1 100644
--- a/Master/texmf-dist/tex/latex/base/utf8.def
+++ b/Master/texmf-dist/tex/latex/base/utf8.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8enc.dfu b/Master/texmf-dist/tex/latex/base/utf8enc.dfu
index 57e7700d150..7dbab3b9af3 100644
--- a/Master/texmf-dist/tex/latex/base/utf8enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/utf8enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/x2enc.dfu b/Master/texmf-dist/tex/latex/base/x2enc.dfu
index d2f2d53e6eb..1c7bb92d163 100644
--- a/Master/texmf-dist/tex/latex/base/x2enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/x2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2022
+%% Copyright (C) 1993-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%