summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex-dev
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev')
-rw-r--r--Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/alltt.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk10.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk11.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk12.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/doc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fltrace.sty37
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.ltx11
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx908
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex209.def5
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty885
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.lua6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.def3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/shortvrb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size10.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size11.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size12.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.def3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty1
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx40
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/color.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex2411
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls59
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx14
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx5
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx34
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty94
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx584
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx10
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty1139
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty248
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty158
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty10
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty38
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty42
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty16
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty32
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty230
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty150
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/array.sty28
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/calc.sty5
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/longtable.sty60
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty1144
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol.sty261
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thcb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/theorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thm.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thmb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thp.sty2
132 files changed, 5947 insertions, 2974 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
index 63f578290a7..4e3165add6a 100644
--- a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
+++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
@@ -26,7 +26,7 @@
\DeclareRelease{}{1994-06-01}{amsmath-2018-12-01.sty}
\DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty}
\DeclareCurrentRelease{}{2019-04-01}
-\ProvidesPackage{amsmath}[2024/05/23 v2.17q AMS math features]
+\ProvidesPackage{amsmath}[2024/11/05 v2.17t AMS math features]
\edef\@temp{\catcode 96=\number\catcode 96 }
\catcode\string `\`=12
\def\do#1{\catcode\number`#1=\number\catcode`#1}
diff --git a/Master/texmf-dist/tex/latex-dev/base/alltt.sty b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
index 78c5e6a9241..2cbaf54abb0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
@@ -49,7 +49,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{alltt}
- [2024/02/08 v2.0g defines alltt environment]
+ [2024/07/07 v2.0g defines alltt environment]
\begingroup
\lccode`\~=`\'
\lowercase{\endgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/article.cls b/Master/texmf-dist/tex/latex-dev/base/article.cls
index 869bdc0db41..0dcb9da0226 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/article.cls
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{article}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk10.clo b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
index ba4701bead9..958c45b467e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk10.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk11.clo b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
index c0a4a4420f1..cbcbd0dae62 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk11.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk12.clo b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
index c4a5e3c2457..ccdb40f6d42 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk12.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/book.cls b/Master/texmf-dist/tex/latex-dev/base/book.cls
index 2838b7f1ce3..e73e83ea3c0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/book.cls
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{book}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
index 02410ad693a..54663361c3d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
@@ -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: lttextcomp.dtx
-\Providesfile{checkencodingsubset.tex}
- [2024/01/27 v0.5a Figure out safe TS1 encoding subsets]
+\ProvidesFile{checkencodingsubset.tex}
+ [2024/10/18 v0.5b Figure out safe TS1 encoding subsets]
\let\typeoutdetails\typeout
\def\doesglyphexist#1#2{\iffontchar\testFont #1 0\else 1\relax \fi}
\def\glyphmissingdetails#1#2{\iffontchar\testFont #1 \else
diff --git a/Master/texmf-dist/tex/latex-dev/base/doc.sty b/Master/texmf-dist/tex/latex-dev/base/doc.sty
index 16b0fbc897d..31930d29767 100644
--- a/Master/texmf-dist/tex/latex-dev/base/doc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/doc.sty
@@ -52,7 +52,7 @@
\DeclareCurrentRelease{v3}{2022-06-01}
\ProvidesPackage{doc}
- [2024/06/04 v3.0q
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex-dev/base/flafter.sty b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
index b1ec0552512..ca332b7b16b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutput.dtx
\ProvidesPackage{flafter}
- [2021/07/31 v1.4e
+ [2024/11/16 v1.4k
Standard LaTeX floats after reference (FMi)]
\IncludeInRelease{2015/01/01}%
{\@addtocurcol}{float order in 2-column}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
index f372c6da667..17adc6c4771 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutput.dtx
\ProvidesPackage{fltrace}
- [2021/07/31 v1.4e
+ [2024/11/16 v1.4k
Tracing LaTeX floats algorithm (FMi)]
\def\onecolumn{%
\clearpage
@@ -1130,13 +1130,41 @@
\fi
}
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputdblcol}{Use new mark mechanism}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \fl@trace{PAGE: first column boxed}%
+ \else
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
+ \fl@trace{PAGE: second column also boxed}%
+ \@combinedblfloats
+ \@outputpage
+ \fl@trace{PAGE: two column page completed}%
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \fl@trace{PAGE: double float page completed}%
+ \@startdblcolumn}%
+ \endgroup
+ \fi}%
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
\if@firstcolumn
\global\@firstcolumnfalse
\global\setbox\@leftcolumn\copy\@outputbox
- \fl@trace{PAGE: first column boxed}%
\splitmaxdepth\maxdimen
\vbadness\maxdimen
\setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
@@ -1161,19 +1189,16 @@
{\normalcolor\vrule \@width\columnseprule}%
\hfil
\hb@xt@\columnwidth{\box\@outputbox \hss}}}%
- \fl@trace{PAGE: second column also boxed}%
\@combinedblfloats
\@setmarks
\@outputpage
- \fl@trace{PAGE: two column page completed}%
\begingroup
\@dblfloatplacement
\@startdblcolumn
\@whilesw\if@fcolmade \fi{\@outputpage
- \fl@trace{PAGE: double float page completed}%
\@startdblcolumn}%
\endgroup
- \fi}%
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\@outputdblcol}{2 column marks}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
index 0eb19b6f6a0..51c2f7df284 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesPackage{fontenc}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX package]
\def\update@uclc@with@cyrillic{%
\expandafter\def\expandafter\@uclclist\expandafter
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
index eca079d15b3..0edfc33f6fe 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized math font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
index a7dd9cc44ad..c4a7d49a36e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Math font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
index b37c4407d63..dffaf71b43d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized text font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
index ec6ce8ed910..06eb08221ae 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Text font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -45,7 +45,7 @@
\input {omsenc.def}
\input {ot1enc.def}
\input {t1enc.def}
-\input{ts1enc.def}
+\input {ts1enc.def}
\ifx\Umathcode\@undefined
\fontencoding{OT1}
\def\@fontenc@load@list{\@elt{T1,OT1}}
@@ -68,17 +68,20 @@
\DeclareFontSubstitution{TU}{lmr}{m}{n}
\fi
\DeclareFontEncodingDefaults{}{}
-\DeclareFontSubstitution{T1}{cmr}{m}{n}
-\DeclareFontSubstitution{OT1}{cmr}{m}{n}
\begingroup
\nfss@catcodes
\input {t1cmr.fd}
\input {ot1cmr.fd}
+\input {ts1cmr.fd}
\endgroup
\begingroup
\nfss@catcodes
+\input {t1cmss.fd}
+\input {t1cmtt.fd}
\input {ot1cmss.fd}
\input {ot1cmtt.fd}
+\input {ts1cmss.fd}
+\input {ts1cmtt.fd}
\endgroup
\DeclareErrorFont{OT1}{cmr}{m}{n}{10}
\ifx\Umathcode\@undefined
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index 66ee8826d2a..eeaba260833 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -128,7 +128,7 @@
\newlinechar`\^^J
\def\typeout{\immediate\write17}
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\%\do\~}
+ \do\#\do\^\do\_\do\%\do\~\do\^^I}
\def\@makeother#1{\catcode`#1=12\relax}
\def\space{ }
\def\@tempswafalse{\let\if@tempswa\iffalse}
@@ -316,7 +316,7 @@
\catcode`\^^L=\active \def^^L{\par}% ascii form-feed is \par
\message{catcodes,}
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\%\do\~}
+ \do\#\do\^\do\_\do\%\do\~\do\^^I}
\catcode`@=11
\chardef\@ne=1
\chardef\tw@=2
@@ -709,8 +709,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2024-11-01}
-\def\patch@level{1}
+ {2025-06-01}
+\def\patch@level{-1}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -1811,8 +1811,8 @@
\xdef#1{\the\toks@}%
\endgroup}
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
\message{document commands,}
\ExplSyntaxOn
\tl_new:N \l__cmd_arg_spec_tl
@@ -2030,23 +2030,15 @@
}
\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
{
- \str_set:Nx \l__cmd_environment_str {#1}
- \str_set:Nx \l__cmd_environment_str
- { \tl_trim_spaces:o { \l__cmd_environment_str } }
- \cs_if_exist:cTF { \l__cmd_environment_str }
- {
- \msg_info:nnxx { cmd } { redefine-env }
- { \l__cmd_environment_str } { \tl_to_str:n {#2} }
- }
- {
- \msg_info:nnxx { cmd } { define-env }
- { \l__cmd_environment_str } { \tl_to_str:n {#2} }
- }
+ \str_set:Nn \l__cmd_environment_str {#1}
+ \cs_if_exist:cTF { #1 }
+ { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+ { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
\bool_set_false:N \l__cmd_expandable_bool
\bool_set_true:N \l__cmd_environment_bool
- \exp_args:NV \__cmd_declare_env_internal:nnnn
- \l__cmd_environment_str {#2}
+ \__cmd_declare_env_internal:nnnn {#1} {#2}
}
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
{
\exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4556,24 +4548,54 @@
}
\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
{
+ \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+ {
\cs_if_exist:cTF {#1}
- { \msg_error:nnx { cmd } { env-already-defined } {#1} }
+ {
+ \msg_error:nnx { cmd } { env-already-defined } {#1}
+ \use_none:nnn
+ }
{
\cs_if_exist:cTF { end #1 }
- { \msg_error:nnx { cmd } { env-end-already-defined } {#1} }
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+ {
+ \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+ \use_none:nnn
+ }
+ { \__cmd_declare_env:nnnn {#1} }
}
}
-\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
{
\cs_if_exist:cTF {#1}
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
- { \msg_error:nnx { cmd } { env-undefined } {#1} }
+ { \__cmd_declare_env:nnnn {#1} }
+ {
+ \msg_error:nnx { cmd } { env-undefined } {#1}
+ \use_none:nnn
+ }
}
-\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
- { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
-\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \use_none:nnn }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
{
\__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -4842,17 +4864,19 @@
}
}
}
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -4907,24 +4931,24 @@
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -5789,7 +5813,9 @@
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -5884,16 +5910,19 @@
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -6220,6 +6249,10 @@
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -6358,6 +6391,8 @@
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -6957,7 +6992,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -6976,7 +7011,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -7016,6 +7051,10 @@
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -7890,23 +7929,33 @@
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
+ {
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -8524,6 +8573,8 @@ Type H <return> for immediate help.}%
\@latex@error{%
Bad \protect\line\space or \protect\vector
\space argument}\@ehb}
+\gdef\@LRmoderr{%
+ \@latex@error{Not allowed in LR mode}\@ehb}
\gdef\@parmoderr{%
\@latex@error{Not in outer par mode}\@ehb}
\gdef\@fltovf{%
@@ -8587,10 +8638,10 @@ Type H <return> for immediate help.}%
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -8696,6 +8747,8 @@ Type H <return> for immediate help.}%
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -8703,8 +8756,19 @@ Type H <return> for immediate help.}%
\@savsf\spacefactor
\smash{}%
\spacefactor\@savsf
- \fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -8817,50 +8881,46 @@ Type H <return> for immediate help.}%
\fi
\fi
\fi}
-\def\addvspace#1{%
- \ifvmode
- \if@minipage\else
- \ifdim \lastskip =\z@
- \@vspace@calcify{#1}%
- \else
- \setlength\@tempskipb{#1}%
- \@xaddvskip
- \fi
- \fi
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
\else
- \@noitemerr
- \fi}
-\def\addpenalty#1{%
- \ifvmode
- \if@minipage
+ \if@nobreak
\else
- \if@nobreak
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
\else
- \ifdim\lastskip=\z@
- \penalty#1\relax
- \else
- \@tempskipb\lastskip
- \begingroup
- \@tempskipa\@tempskipb
- \advance \@tempskipb
- \ifdim\prevdepth>\maxdepth\maxdepth\else
- \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
- \fi
- \vskip -\@tempskipb
- \penalty#1%
- \ifdim\@tempskipa=\@tempskipb
- \else
- \advance\@tempskipb -\@tempskipa
- \vskip \@tempskipb
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
\fi
- \vskip \@tempskipa
- \endgroup
- \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
\fi
\fi
- \else
- \@noitemerr
- \fi}%
+ \fi
+}
\DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
\def\@vspace #1{%
\ifvmode
@@ -9625,6 +9685,8 @@ Type H <return> for immediate help.}%
\global\expandafter\let\csname cl@#1\endcsname\@empty
\@addtoreset{#1}{@ckpt}%
\global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
\expandafter
\ifx\csname the#1\endcsname\relax
\expandafter
@@ -9634,7 +9696,11 @@ Type H <return> for immediate help.}%
\@latex@warning{Command `\string\the#1' already
defined -- not changed}%
\fi}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
\def\@removefromreset#1#2{%
\@ifundefined{c@#2}\relax
{\begingroup
@@ -9728,7 +9794,8 @@ Type H <return> for immediate help.}%
\def\newlength#1{\@ifdefinable#1{\newskip#1}}
\def\setlength#1#2{#1 #2\relax}
\def\addtolength#1#2{\advance#1 #2\relax}
-\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
\setbox\@tempboxa\box\voidb@x}
\DeclareRobustCommand\settoheight{\@settodim\ht}
\DeclareRobustCommand\settodepth {\@settodim\dp}
@@ -9736,6 +9803,7 @@ Type H <return> for immediate help.}%
\def\@settopoint#1{\divide#1\p@\multiply#1\p@}
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
+\message{NFSS base,}
\def\@nomath#1{\relax\ifmmode
\@font@warning{Command \noexpand#1invalid in math mode}\fi}
\gdef\no@alphabet@error#1{\relax \ifmmode
@@ -9882,6 +9950,40 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareFontEncodingDefaults
\let\default@T\@empty
\let\default@M\@empty
+\def\DeclareEncodingSubset#1#2{%
+ \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
+}
+\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
+ \expandafter\ifx\expandafter X\detokenize{#3}X%
+ \@DeclareEncodingSubset{#1}{#2}{#4}%
+ \else
+ \@DeclareEncodingSubset{#1}{#2LF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
+ \fi
+}
+\def\@DeclareEncodingSubset#1#2#3{%
+ \@ifundefined{#1:#2}%
+ {\@font@info{Setting #2 sub-encoding to #1/#3}}%
+ {\@font@info{Changing #2 sub-encoding to #1/#3}}%
+ \global\@namedef{#1:#2}{#3}}
+
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ \expandafter\ifx\csname #2:\f@family\endcsname\relax
+ 0\csname #2:?\endcsname
+ \else
+ \csname #2:\f@family\endcsname
+ \fi
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
\def\DeclarePreloadSizes#1#2#3#4#5{%
\@ifundefined{T@#1}%
{\@latex@error{Encoding scheme `#1' unknown}\@eha}%
@@ -10201,6 +10303,7 @@ Type H <return> for immediate help.}%
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -10257,6 +10360,7 @@ Type H <return> for immediate help.}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltfssaxes.dtx
%% Copyright (C) 2019-2020 Frank Mittelbach
+\message{NFSS axes,}
\def\DeclareFontSeriesChangeRule#1#2#3#4{%
\@namedef{series@#1@#2}{{#3}{#4}}}
\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
@@ -10858,6 +10962,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfsstrc.dtx
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
+\message{NFSS tracing,}
\def\tracingfonts{%
\@font@warning{Command \noexpand\tracingfonts
not provided.\MessageBreak
@@ -11202,6 +11307,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssdcl.dtx
%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS declarative interface,}
\def\in@#1#2%
{%
\begingroup
@@ -12096,6 +12202,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssini.dtx
%% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS initialization,}
\DeclareMathVersion{normal}
\DeclareMathVersion{bold}
\DeclareRobustCommand\upshape
@@ -12649,45 +12756,6 @@ Type H <return> for immediate help.}%
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -13004,11 +13072,7 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -13273,11 +13337,27 @@ Type H <return> for immediate help.}%
\endgroup
\@esphack}
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -13337,14 +13417,11 @@ Type H <return> for immediate help.}%
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -13450,7 +13527,7 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF
\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} }
@@ -13465,10 +13542,10 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -13480,8 +13557,10 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -13644,7 +13723,7 @@ Type H <return> for immediate help.}%
\def\stop{\clearpage\deadcycles\z@\let\par\@@par\@@end}
\everypar{\@nodocument} %% To get an error if text appears before the
\nullfont %% \begin{document}
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -13662,6 +13741,7 @@ Type H <return> for immediate help.}%
\fi
\UseHook{env/#1/begin}%
}
+
\edef\end
{\unexpanded{%
\romannumeral
@@ -13680,13 +13760,14 @@ Type H <return> for immediate help.}%
}%
\expandafter\noexpand\csname end \endcsname
}
+
\@namedef{end }#1{%
\romannumeral
\IfHookEmptyTF{env/#1/end}%
{\expandafter\z@}%
{\z@\UseHook{env/#1/end}}%
\csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
+ \endgroup
\UseHook{env/#1/after}%
\if@ignore\@ignorefalse\ignorespaces\fi
}
@@ -14233,11 +14314,20 @@ Type H <return> for immediate help.}%
\def\@doendpe{\@endpetrue
\def\par{\@restorepar
\clubpenalty\@clubpenalty
- \everypar{}\par\@endpefalse}\everypar
- {{\setbox\z@\lastbox}%
- \everypar{}\@endpefalse}}
+ \@endpefalse
+ \everypar{}\par}%
+ \everypar
+ {{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}}
\newif\if@endpe
-\@endpefalse
+\def\@endpefalse{\global\let\if@endpe\iffalse}
+\def\@endpetrue {%
+ \global\let\if@endpe\iftrue
+ \ifnum\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
\def\@mklab#1{\hfil #1}
\def\item{%
\@inmatherr\item
@@ -14405,12 +14495,14 @@ Type H <return> for immediate help.}%
\kern\z@}}
\let\set@color\relax
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
\def\color@setgroup{\color@begingroup} % changed further in color package
\let\normalcolor\relax % remains untouched; only changed in a color package
\def\color@hbox{\hbox\bgroup\color@begingroup}
\def\color@vbox{\vbox\bgroup\color@begingroup}
\def\color@endbox{\color@endgroup\egroup}
+
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
+
\def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
\DeclareRobustCommand\savebox[1]{%
\@ifnextchar(%)
@@ -16072,7 +16164,9 @@ Type H <return> for immediate help.}%
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
+
+
+
\ExplSyntaxOn
\seq_new:N \g__mark_classes_seq
@@ -16091,43 +16185,42 @@ Type H <return> for immediate help.}%
\__mark_debug:n { \iow_term:x { Marks:~new~mark:~#1~\msg_line_context: } }
\exp_args:Nc \newmarks {c__mark_class_ #1 _mark}
\seq_gput_right:Nn \g__mark_classes_seq {#1}
- \tl_new:c { g__mark_page_top_ #1 _tl }
- \tl_new:c { g__mark_page_first_ #1 _tl }
- \tl_new:c { g__mark_page_last_ #1 _tl }
- \tl_new:c { g__mark_previous-page_top_ #1 _tl }
- \tl_new:c { g__mark_previous-page_first_ #1 _tl }
- \tl_new:c { g__mark_previous-page_last_ #1 _tl }
- \tl_new:c { g__mark_column_top_ #1 _tl }
- \tl_new:c { g__mark_column_first_ #1 _tl }
- \tl_new:c { g__mark_column_last_ #1 _tl }
- \tl_new:c { g__mark_previous-column_top_ #1 _tl }
- \tl_new:c { g__mark_previous-column_first_ #1 _tl }
- \tl_new:c { g__mark_previous-column_last_ #1 _tl }
- \tl_new:c { g__mark_first-column_top_ #1 _tl }
- \tl_new:c { g__mark_first-column_first_ #1 _tl }
- \tl_new:c { g__mark_first-column_last_ #1 _tl }
- \tl_new:c { g__mark_last-column_top_ #1 _tl }
- \tl_new:c { g__mark_last-column_first_ #1 _tl }
- \tl_new:c { g__mark_last-column_last_ #1 _tl }
- \tl_set:cn { g__mark_page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_last_ #1 _tl }{ \__mark_id:n{0} }
-}
+ \__mark_init_region:nn {page}{#1}
+ \__mark_init_region:nn {previous-page}{#1}
+ \__mark_init_region:nn {column}{#1}
+ \__mark_init_region:nn {previous-column}{#1}
+ \__mark_init_region:nn {first-column}{#1}
+ \__mark_init_region:nn {last-column}{#1}
+ \__mark_init_region:nn {mcol-1}{#1}
+ \__mark_init_region:nn {mcol-2}{#1}
+ \__mark_init_region:nn {mcol-3}{#1}
+ \__mark_init_region:nn {mcol-4}{#1}
+ \__mark_init_region:nn {mcol-5}{#1}
+ \__mark_init_region:nn {mcol-6}{#1}
+ \__mark_init_region:nn {mcol-7}{#1}
+ \__mark_init_region:nn {mcol-8}{#1}
+ \__mark_init_region:nn {mcol-9}{#1}
+ \__mark_init_region:nn {mcol-10}{#1}
+ \__mark_init_region:nn {mcol-11}{#1}
+ \__mark_init_region:nn {mcol-12}{#1}
+ \__mark_init_region:nn {mcol-13}{#1}
+ \__mark_init_region:nn {mcol-14}{#1}
+ \__mark_init_region:nn {mcol-15}{#1}
+ \__mark_init_region:nn {mcol-16}{#1}
+ \__mark_init_region:nn {mcol-17}{#1}
+ \__mark_init_region:nn {mcol-18}{#1}
+ \__mark_init_region:nn {mcol-19}{#1}
+ \__mark_init_region:nn {mcol-20}{#1}
+}
+\cs_new_protected:Npn \__mark_init_region:nn #1 #2 {
+ \tl_new:c { g__mark_#1_top_ #2 _tl }
+ \tl_new:c { g__mark_#1_first_ #2 _tl }
+ \tl_new:c { g__mark_#1_last_ #2 _tl }
+ \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl
+}
+\tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} }
\box_new:N \l__mark_box
\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
@@ -16182,13 +16275,13 @@ Type H <return> for immediate help.}%
\exp_not:N \l__mark_saved_parameters_tl
}
\tl_new:N \l__mark_saved_parameters_tl
-\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+\cs_new_protected:Npn \mark_update_structure_from_material:nn #1#2 {
\__mark_extract_and_handle_marks:nn
{ \__mark_update_structure_from_splitmarks:n {#1} }
{ #2 }
}
\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \mark_copy_structure:nn { previous-#1 } {#1}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
@@ -16212,9 +16305,9 @@ Type H <return> for immediate help.}%
}
}
}
-\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
- \tl_clear:N \g__mark_first_marks_tl
- \tl_clear:N \g__mark_last_marks_tl
+\cs_new_protected:Npn \mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_gclear:N \g__mark_first_marks_tl
+ \tl_gclear:N \g__mark_last_marks_tl
\__mark_extract_and_handle_marks:nn
\__mark_get_from_splitmarks:
{ #1 }
@@ -16236,7 +16329,7 @@ Type H <return> for immediate help.}%
\__mark_debug:n { \iow_term:x { Marks:~ extract~ last~
mark~ for~ class~ '##1'~ =~ \g__mark_tmp_tl } }
\tl_gput_right:Ne \g__mark_last_marks_tl
- { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ { \mark_insert:nn {##1} { \__mark_drop_id:o { \g__mark_tmp_tl } } }
\__mark_debug:n { \iow_term:x { Marks:~ extract~ first~
mark~ for~ class~ '##1'~ =~
\tex_splitfirstmarks:D
@@ -16245,8 +16338,10 @@ Type H <return> for immediate help.}%
\tl_gput_right:Ne \g__mark_first_marks_tl
{ \mark_insert:nn {##1}
{
- \tex_splitfirstmarks:D
- \use:c { c__mark_class_##1_mark }
+ \__mark_drop_id:o {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
}
}
}
@@ -16254,7 +16349,7 @@ Type H <return> for immediate help.}%
}
\tl_new:N \g__mark_first_marks_tl
\tl_new:N \g__mark_last_marks_tl
-\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
+\cs_new_protected:Npn \mark_copy_structure:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_ #1 _top_ ##1 _tl }
@@ -16265,16 +16360,27 @@ Type H <return> for immediate help.}%
{ g__mark_ #2 _last_ ##1 _tl }
}
}
-\cs_new_protected:Npn \__mark_update_structure_to_err:n #1 {
+\cs_new_protected:Npn \mark_clear_structure:n #1 {
+ \seq_map_inline:Nn \g__mark_classes_seq
+ {
+ \tl_gset_eq:cN { g__mark_ #1 _top_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _first_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _last_ ##1 _tl }
+ \c__mark_empty_tl
+ }
+}
+\cs_new_protected:Npn \mark_set_structure_to_err:n #1 {
\seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset:cn { g__mark_ #1 _top_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _first_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _last_ ##1 _tl } { \__mark_error:n {#1} }
+ \tl_gset:ce { g__mark_ #1 _top_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _first_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _last_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
}
}
-\cs_new_protected:Npn \__mark_error:n #1 {
- \msg_error:nnn { mark } { invalid-use } {#1}
+\cs_new_protected:Npn \__mark_error:nn #1#2 {
+ \msg_error:nnnn { mark } { invalid-use } {#1} {#2}
}
\cs_new_protected:Npn \mark_insert:nn #1#2
{
@@ -16285,8 +16391,7 @@ Type H <return> for immediate help.}%
\hook_use:n { insertmark }
\unrestored@protected@xdef \g__mark_tmp_tl
{
- \__mark_id:n{ \int_use:N\g__mark_int }
- #2
+ \__mark_value:nn{ \int_use:N\g__mark_int }{#2}
}
\__mark_debug:n{ \iow_term:x { Marks:~ set~#1~<-~
'\tl_to_str:V \g__mark_tmp_tl' ~ \msg_line_context: } }
@@ -16302,7 +16407,7 @@ Type H <return> for immediate help.}%
{ \tl_to_str:n {#1} }
}
}
-\cs_new_protected:Npn \__mark_id:n #1 { }
+\cs_new_protected:Npn \__mark_value:nn #1#2 { #2 }
\int_new:N \g__mark_int
\cs_new:Npn \@kernel@before@insertmark {
\cs_set_eq:NN \label \scan_stop:
@@ -16314,11 +16419,16 @@ Type H <return> for immediate help.}%
}
\hook_new:n {insertmark}
-\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use:v { g__mark_#1_first_#2_tl } }
-\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use:v { g__mark_#1_last_#2_tl } }
-\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use:v { g__mark_#1_top_#2_tl } }
-\cs_new:Npn \__mark_use:n #1 { \exp_not:o { \use_none:nn #1 } }
-\cs_generate_variant:Nn \__mark_use:n { v }
+\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_first_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_last_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_top_#2_tl } {#1} {#2} }
+\cs_new:Npn \__mark_use_check:nnn #1#2#3 {
+ \tl_if_eq:cNTF {#1} \relax
+ { \__mark_error:nn {#2} {#3} }
+ { \__mark_drop_id:v {#1} }
+}
+\cs_new:Npn \__mark_drop_id:n #1 { \exp_not:o { #1 } }
+\cs_generate_variant:Nn \__mark_drop_id:n { o, v }
\prg_new_conditional:Npnn \mark_if_eq:nnnn #1#2#3#4 { T , F , TF }
{
\tl_if_eq:ccTF { g__mark_ #1 _#3_ #2 _tl }
@@ -16349,13 +16459,14 @@ Type H <return> for immediate help.}%
LaTeX~was~asked~to~manipulate~a~mark~of~class~'#1',~
but~this~class~of~marks~does~not~exist.
}
-
\msg_new:nnnn { mark } { invalid-use }
- { Mark~region~'#1'~not ~usable }
+ { Mark~region~'#1'~not~usable~or~class~'#2'~unknown }
{
\c__msg_coding_error_text_tl
- The~region~'#1'~can~only~be~used~after~
- all~columns~have~been~assembled.
+ The~region~'#1'~is~either~not~known~or~data~for~it~
+ still~needs~to~be~assembled,~e.g.,~last-column~
+ while~building~the~first-column.~
+ Also~possible:~the~class~namne~'#2'~is~misspelled.
\c__msg_return_text_tl
}
\bool_new:N \g__mark_debug_bool
@@ -16377,41 +16488,42 @@ Type H <return> for immediate help.}%
}
\cs_new_eq:NN \DebugMarksOn \mark_debug_on:
\cs_new_eq:NN \DebugMarksOff \mark_debug_off:
-\cs_new_protected:Npn \__mark_class_status:nn #1#2
- {
- \typeout{ Marks:~#2~ #1:}
- \typeout{\@spaces page~ (current):
- | \exp_not:v { g__mark_page_top_ #2 _tl }
- | \exp_not:v { g__mark_page_first_ #2 _tl }
- | \exp_not:v { g__mark_page_last_ #2 _tl } |}
- \typeout{\@spaces page~ (previous):
- | \exp_not:v { g__mark_previous-page_top_ #2 _tl }
- | \exp_not:v { g__mark_previous-page_first_ #2 _tl }
- | \exp_not:v { g__mark_previous-page_last_ #2 _tl } |}
- \typeout{\@spaces column~ (previous):
- | \exp_not:v { g__mark_previous-column_top_ #2 _tl }
- | \exp_not:v { g__mark_previous-column_first_ #2 _tl }
- | \exp_not:v { g__mark_previous-column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (current):
- | \exp_not:v { g__mark_column_top_ #2 _tl }
- | \exp_not:v { g__mark_column_first_ #2 _tl }
- | \exp_not:v { g__mark_column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (first):
- | \exp_not:v { g__mark_first-column_top_ #2 _tl }
- | \exp_not:v { g__mark_first-column_first_ #2 _tl }
- | \exp_not:v { g__mark_first-column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (second):
- | \exp_not:v { g__mark_last-column_top_ #2 _tl }
- | \exp_not:v { g__mark_last-column_first_ #2 _tl }
- | \exp_not:v { g__mark_last-column_last_ #2 _tl } |}
-}
-\cs_new_protected:Npn \__mark_status:n #1
+\cs_new_protected:Npn \__mark_class_status:nnn #1#2#3 {
+ \typeout{ Marks:~#2~ #1:}
+ \__mark_region_status:nnn {#2}{ page~ (previous) } { previous-page }
+ \__mark_region_status:nnn {#2}{ page~ (current)~ } { page }
+ \__mark_region_status:nnn {#2}{ column~ (previous) }{ previous-column }
+ \__mark_region_status:nnn {#2}{ column~ (current)~ }{ column }
+ \__mark_region_status:nnn {#2}{ column~ (first) } { first-column }
+ \__mark_region_status:nnn {#2}{ column~ (last)~ } { last-column }
+ \int_step_inline:nn {#3}
+ {
+ \__mark_region_status:nnn {#2}{ column~ (##1)~ } { mcol-##1 }
+ }
+}
+\cs_new_protected:Npn \__mark_region_status:nnn #1#2#3 {
+ \group_begin:
+ \cs_set:Npn \__mark_value:nn ##1##2{ \exp_not:n{ {##1} ~ ##2 } }
+ \tl_if_exist:cT { g__mark_#3_last_ #1 _tl }
+ {
+ \tl_if_eq:cNF { g__mark_#3_last_ #1 _tl } \c__mark_empty_tl
+ {
+ \typeout{\@spaces #2 =
+ ~|~ \use:c { g__mark_#3_top_ #1 _tl } ~|~
+ \use:c { g__mark_#3_first_ #1 _tl } ~|~
+ \use:c { g__mark_#3_last_ #1 _tl } ~|
+ }
+ }
+ }
+ \group_end:
+}
+\cs_new_protected:Npn \__mark_status:nn #1#2
{
\seq_map_inline:Nn \g__mark_classes_seq
- { \__mark_class_status:nn {#1} {##1} }
+ { \__mark_class_status:nnn {#1} {##1} {#2} }
}
-\cs_new_protected:Npn \ShowMarksAt #1 {
- \__mark_debug:n { \__mark_status:n {#1} }
+\NewDocumentCommand \ShowMarksAt {m O{4} } {
+ \__mark_debug:n { \__mark_status:nn {#1}{#2} }
}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
@@ -16425,23 +16537,29 @@ Type H <return> for immediate help.}%
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
- \__mark_update_structure_alias:nn {previous-column}{previous-page}
- \__mark_update_structure_alias:nn {column}{page}
- \__mark_update_structure_alias:nn {first-column}{page}
- \__mark_update_structure_alias:nn {last-column}{page}
+ \mark_copy_structure:nn {previous-column}{previous-page}
+ \mark_copy_structure:nn {column}{page}
+ \mark_copy_structure:nn {first-column}{page}
+ \mark_copy_structure:nn {last-column}{page}
\__mark_debug:n
{
- \__mark_status:n
+ \__mark_status:nn
{ in~ OR~ (
\legacy_if:nTF {@twoside}
{ twoside-
@@ -16451,25 +16569,26 @@ Type H <return> for immediate help.}%
{ oneside }
)
}
+ {0}
}
}
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
{
- \__mark_update_structure_alias:nn {first-column}{column}
- \__mark_update_structure_to_err:n {last-column}
+ \mark_copy_structure:nn {first-column}{column}
+ \mark_set_structure_to_err:n {last-column}
}
{
- \__mark_update_structure_alias:nn {last-column}{column}
+ \mark_copy_structure:nn {last-column}{column}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_previous-page_top_ ##1 _tl }
@@ -16497,7 +16616,7 @@ Type H <return> for immediate help.}%
}
\__mark_debug:n
{
- \__mark_status:n
+ \__mark_status:nn
{ in~ OR~ (
\legacy_if:nTF {@twoside}
{ twoside-
@@ -16510,8 +16629,10 @@ Type H <return> for immediate help.}%
{ first~ }{ second~ }
column )
}
+ {0}
}
}
+
\cs_new_eq:NN \@expl@@@mark@update@singlecol@structures@@
\__mark_update_singlecol_structures:
\cs_new_eq:NN \@expl@@@mark@update@dblcol@structures@@
@@ -16537,32 +16658,19 @@ Type H <return> for immediate help.}%
\let\@rightmark\@secondoftwo
\ExplSyntaxOn
\DeclareRobustCommand*\markboth[2]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \unrestored@protected@xdef\@themark {{#1}{#2}}%
- \@temptokena \expandafter{\@themark}%
\mark_insert:nn{2e-left}{#1}
\mark_insert:nn{2e-right}{#2}
\tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} }
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
+}
\DeclareRobustCommand*\markright[1]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \expandafter\@markright\@themark {#1}%
- \@temptokena \expandafter{\@themark}%
\mark_insert:nn{2e-right}{#1}
\tl_if_empty:nF{#1}{ \mark_insert:nn{2e-right-nonempty}{#1} }
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
+}
+\ExplSyntaxOff
+\ExplSyntaxOn
+\cs_new:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_new:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
\ExplSyntaxOff
-\def\@markright#1#2#3{\@temptokena {#1}%
- \unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
-\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
-\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
-\def\@themark{{}{}}
\DeclareRobustCommand\raggedbottom{%
\def\@textbottom{\vskip \z@ \@plus.0001fil}\let\@texttop\relax}
\DeclareRobustCommand\flushbottom{%
@@ -16780,7 +16888,9 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareOption
\@onlypreamble\@declareoption
\@onlypreamble\@defdefault@ds
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -17445,6 +17555,7 @@ Type H <return> for immediate help.}%
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -17537,7 +17648,40 @@ Type H <return> for immediate help.}%
{ \q_recursion_tail } { }
\q_recursion_stop
\group_end:
+\cs_new_protected:cpn { \c__keys_props_root_str .pass-to-packages }
+ {
+ \bool_if:NTF \l__keys_no_value_bool
+ { \__keys_scope:n { true } }
+ { \__keys_scope:n }
+ }
+\cs_new_protected:Npn \__keys_scope:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { true }
+ { \__keys_scope:N \clist_put_right:NV }
+ { false }
+ { \__keys_scope:N \clist_remove_all:NV }
+ }
+ {
+ \msg_error:nnnn { keys }
+ { choice-unknown }
+ { .pass-to-packages }
+ {#1}
+ }
+ }
+\cs_new_protected:Npn \__keys_scope:N #1
+ {
+ \exp_after:wN \__keys_find_key_module:wNN
+ \l_keys_path_str \s__keys_stop
+ \l_keys_key_tl \l_keys_key_str
+ #1 \l__keys_forced_global_clist \l_keys_key_str
+ }
+\cs_generate_variant:Nn \clist_if_in:NnT { Ne }
+\cs_generate_variant:Nn \clist_if_in:NnTF { Ne }
\cs_generate_variant:Nn \clist_put_right:Nn { Nv }
+\clist_new:N \l__keys_class_only_clist
+\clist_new:N \l__keys_forced_global_clist
\clist_new:N \l__keys_options_clist
\bool_new:N \l__keys_options_loading_bool
\cs_new_protected:Npn \__keys_options:n #1
@@ -17590,18 +17734,11 @@ Type H <return> for immediate help.}%
{
\cs_if_free:cF { @raw@opt@ \@currname . \@currext }
{
- \keys_if_exist:nnTF {#1} { unknown }
- {
- \clist_put_right:Nv \l__keys_options_clist
- { @raw@opt@ \@currname . \@currext }
- }
+ \clist_map_inline:cn { @raw@opt@ \@currname . \@currext }
{
- \clist_map_inline:cn { @raw@opt@ \@currname . \@currext }
- {
- \exp_args:Ne \__keys_options_class:nnn
- { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
- {##1} {#1}
- }
+ \exp_args:Ne \__keys_options_class:nnn
+ { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
+ {##1} {#1}
}
}
}
@@ -17609,14 +17746,23 @@ Type H <return> for immediate help.}%
{
\keys_if_exist:nnTF {#3} {#1}
{
- \clist_put_right:Nn \l__keys_options_clist {#2}
- \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \__keys_options_class:nn {#1} {#2}
+ \clist_put_right:Ne \l__keys_class_only_clist { \tl_to_str:n {#1} }
}
{
- \clist_if_in:NnF \@unusedoptionlist {#1}
- { \clist_put_right:Nn \@unusedoptionlist {#1} }
+ \keys_if_exist:nnTF {#3} { unknown }
+ { \__keys_options_class:nn {#1} {#2} }
+ {
+ \clist_if_in:NnF \@unusedoptionlist {#1}
+ { \clist_put_right:Nn \@unusedoptionlist {#1} }
+ }
}
}
+\cs_new_protected:Npn \__keys_options_class:nn #1#2
+ {
+ \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \clist_put_right:Nn \l__keys_options_clist {#2}
+ }
\cs_new_protected:Npn \__keys_options_package:n #1
{
\clist_map_inline:Nn \@raw@classoptionslist
@@ -17630,10 +17776,19 @@ Type H <return> for immediate help.}%
{
\keys_if_exist:nnT {#3} {#1}
{
- \clist_put_right:Nn \l__keys_options_clist {#2}
- \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \clist_if_in:NeTF \l__keys_class_only_clist { \tl_to_str:n {#1} }
+ {
+ \clist_if_in:NeT \l__keys_forced_global_clist { \tl_to_str:n {#1} }
+ { \__keys_options_package:nn {#1} {#2} }
+ }
+ { \__keys_options_package:nn {#1} {#2} }
}
}
+\cs_new_protected:Npn \__keys_options_package:nn #1#2
+ {
+ \clist_put_right:Nn \l__keys_options_clist {#2}
+ \clist_remove_all:Nn \@unusedoptionlist {#1}
+ }
\cs_new_protected:Npn \__keys_options_local:
{
\cs_if_eq:NNF \@currext \@clsextension
@@ -18918,7 +19073,6 @@ Type H <return> for immediate help.}%
\global\let\if@newlist\@@if@newlist
\global \@colht \textheight
\stepcounter{page}%
- \let\firstmark\botmark
}
\def \@begindvi{%
\unvbox \@begindvibox
@@ -19463,21 +19617,6 @@ Type H <return> for immediate help.}%
\if@firstcolumn
\global\@firstcolumnfalse
\global\setbox\@leftcolumn\copy\@outputbox
- \splitmaxdepth\maxdimen
- \vbadness\maxdimen
- \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
- \setbox\@outputbox\vsplit\@outputbox to\maxdimen
- \toks@\expandafter{\topmark}%
- \xdef\@firstcoltopmark{\the\toks@}%
- \toks@\expandafter{\splitfirstmark}%
- \xdef\@firstcolfirstmark{\the\toks@}%
- \ifx\@firstcolfirstmark\@empty
- \global\let\@setmarks\relax
- \else
- \gdef\@setmarks{%
- \let\firstmark\@firstcolfirstmark
- \let\topmark\@firstcoltopmark}%
- \fi
\else
\global\@firstcolumntrue
\setbox\@outputbox\vbox{%
@@ -19487,8 +19626,7 @@ Type H <return> for immediate help.}%
{\normalcolor\vrule \@width\columnseprule}%
\hfil
\hb@xt@\columnwidth{\box\@outputbox \hss}}}%
- \@combinedblfloats
- \@setmarks
+ \@combinedblfloats
\@outputpage
\begingroup
\@dblfloatplacement
@@ -19538,37 +19676,70 @@ Type H <return> for immediate help.}%
\let\dblfigrule=\relax
%%% From File: lttagging.dtx
\ExplSyntaxOn
-\cs_new_eq:NN \SuspendTagging \use_none:n
-\cs_new_eq:NN \ResumeTagging \use_none:n
-\AddToHook{begindocument/before}{
- \cs_if_exist:NT \tag_stop:n
- {
- \cs_set:Npn \SuspendTagging #1 {
- \tag_stop:n {#1}
- }
- \cs_set:Npn \ResumeTagging #1 { \tag_start:n {#1} }
- }
-}
-\AddToHook{begindocument}[kernel]{
- \cs_if_exist:NF \tag_if_active:T
- {
- \prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
- { \prg_return_false: }
- }
-}
+
+\cs_new_eq:NN \tag_suspend:n \use_none:n
+\cs_new_eq:NN \tag_resume:n \use_none:n
+\cs_new_protected:Npn \SuspendTagging #1 { \tag_suspend:n {#1} }
+\cs_new_protected:Npn \ResumeTagging #1 { \tag_resume:n {#1} }
+\prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
+ { \prg_return_false: }
+\cs_new:Npn \tag_socket_use_expandable:n #1 { }
\cs_new_protected:Npn \tag_socket_use:n #1 { }
\cs_new_protected:Npn \tag_socket_use:nn #1#2 { }
+\cs_new_protected:Npn \tag_socket_use:nnn #1#2#3 { #3 }
\cs_new_protected:Npn \UseTaggingSocket #1 {
\int_case:nnF
{ \int_use:c { c__socket_tagsupport/#1_args_int } }
{
0 \prg_do_nothing:
1 \use_none:n
- 2 \use_none:nn
+ 2 \use_ii:nn
+ }
+ \ERRORusetaggingsocket % that should get a proper error message
+}
+\cs_new:Npn \UseExpandableTaggingSocket #1 {
+ \int_case:nnF
+ { \int_use:c { c__socket_tagsupport/#1_args_int } }
+ {
+ 0 \prg_do_nothing:
+ 1 \use_none:n
+ 2 \use_ii:nn
}
\ERRORusetaggingsocket % that should get a proper error message
}
+\int_new:N \l__tag_block_flattened_level_int
+\NewSocket{tagsupport/para/restore}{0}
+\NewSocketPlug{tagsupport/para/restore}{default}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {text-unit}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_false:N\l__tag_para_flattened_bool
+ \int_zero:N \l__tag_block_flattened_level_int
+ \bool_set_true:N \l__tag_para_bool
+ }
+\AssignSocketPlug{tagsupport/para/restore}{default}
+
+
+\NewSocket{tagsupport/recordtarget}{0}
+\NewSocketPlug{tagsupport/recordtarget}{kernel}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee
+ \g__tag_struct_dest_num_prop
+ {\@currentHref}
+ {\tag_get:n{struct_num}}
+ }
+ }
+\AssignSocketPlug{tagsupport/recordtarget}{kernel}
\ExplSyntaxOff
+
+\NewSocket{tagsupport/toc/contentsline/before}{1}
+\NewSocket{tagsupport/toc/contentsline/after}{1}
+\NewSocket{tagsupport/toc/starttoc/before}{1}
+\NewSocket{tagsupport/toc/starttoc/after}{1}
+\NewSocket{tagsupport/toc/leaders/before}{0}
+\NewSocket{tagsupport/toc/leaders/after}{0}
\NewSocket{tagsupport/tbl/cell/begin}{0}
\NewSocket{tagsupport/tbl/cell/end}{0}
\NewSocket{tagsupport/tbl/row/begin}{0}
@@ -19576,7 +19747,9 @@ Type H <return> for immediate help.}%
\NewSocket{tagsupport/tbl/pcell/begin}{0}
\NewSocket{tagsupport/tbl/pcell/end}{0}
\NewSocket{tagsupport/tbl/init}{0}
+\NewSocket{tagsupport/tbl/init/celldata}{0}
\NewSocket{tagsupport/tbl/finalize}{0}
+\NewSocket{tagsupport/tbl/restore/celldata}{0}
\NewSocket{tagsupport/tbl/colspan}{1}
@@ -19588,6 +19761,16 @@ Type H <return> for immediate help.}%
\NewSocket{tagsupport/tbl/longtable/finalize}{0}
\NewSocket{tagsupport/tbl/longtable/head}{0}
\NewSocket{tagsupport/tbl/longtable/foot}{0}
+\NewSocket{tagsupport/tbl/leaders/begin}{0}
+\NewSocket{tagsupport/tbl/leaders/end}{0}
+\NewSocket{tagsupport/float/hmode/begin}{0}
+\NewSocket{tagsupport/float/hmode/end}{0}
+\NewSocket{tagsupport/float/begin}{0}
+\NewSocket{tagsupport/float/end}{0}
+\NewSocket{tagsupport/caption/begin}{1}
+\NewSocket{tagsupport/caption/end}{0}
+\NewSocket{tagsupport/caption/label/begin}{0}
+\NewSocket{tagsupport/caption/label/end}{0}
\ExplSyntaxOn
\int_new:N \g__tbl_col_int
\int_new:N \g__tbl_row_int
@@ -19661,6 +19844,7 @@ Type H <return> for immediate help.}%
{ max:~ \l__tbl_saved_table_cols_tl }
)
}
+ \UseTaggingSocket{tbl/init/celldata}
\int_gzero:N \g__tbl_row_int
\int_gzero:N \g__tbl_col_int
\tl_gset:Nn \g__tbl_span_tl {1}
@@ -19696,6 +19880,7 @@ Type H <return> for immediate help.}%
\int_gset:Nn \g__tbl_row_int { \l__tbl_saved_row_tl }
\tl_gset_eq:NN \g__tbl_span_tl \l__tbl_saved_span_tl
\tl_gset_eq:NN \g__tbl_table_cols_tl \l__tbl_saved_table_cols_tl
+ \UseTaggingSocket{tbl/restore/celldata}
\__tbl_trace:n { ==>~ restored~cell~data:~
\int_use:N \g__tbl_row_int,
\int_use:N \g__tbl_col_int,
@@ -19726,7 +19911,6 @@ Type H <return> for immediate help.}%
\crcr
}
\ExplSyntaxOff
-\let\@kernel@refstepcounter\refstepcounter
\def\hyper@nopatch@longtable{}
%%% From File: ltfinal.dtx
\tracingstats1
@@ -20067,11 +20251,15 @@ Type H <return> for immediate help.}%
\keys_define:nn { __kernel }
{
lang .str_set:N = \reserved@a ,
- locale .str_set:N = \reserved@a
+ locale .str_set:N = \reserved@a ,
+ words .choices:nn =
+ { all , first }
+ { \str_set:Nn \reserved@b {#1} }
}
\cs_new_protected:Npn \@@text@case@aux #1#2#3
{
\cs_set_nopar:Npn \reserved@a { }
+ \cs_set_nopar:Npn \reserved@b { }
\tl_if_blank:nTF {#2}
{
\str_set:Nx \reserved@a
@@ -20083,7 +20271,7 @@ Type H <return> for immediate help.}%
}
}
{ \keys_set:nn { __kernel } {#2} }
- \use:c { text_ #1 case:Vn } \reserved@a {#3}
+ \use:c { text_ #1 :Vn } \reserved@a {#3}
}
\exp_args_generate:n { cnx }
\cs_set_protected:Npn \reserved@a #1
@@ -20097,20 +20285,22 @@ Type H <return> for immediate help.}%
\reserved@a { Upper }
\reserved@a { Lower }
\reserved@a { Title }
+\cs_generate_variant:Nn \text_titlecase_all:nn { V }
+\cs_generate_variant:Nn \text_titlecase_first:nn { V }
\cs_new_protected:cpn { MakeLowercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \OE \oe
- \@@text@case@aux { lower } {#1} {#2}
+ \@@text@case@aux { lowercase } {#1} {#2}
}}
\cs_new_protected:cpn { MakeUppercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \oe \OE
- \@@text@case@aux { upper } {#1} {#2}
+ \@@text@case@aux { uppercase } {#1} {#2}
}}
\cs_new_protected:cpn { MakeTitlecase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \oe \OE
- \@@text@case@aux { title } {#1} {#2}
+ \@@text@case@aux { titlecase_ \reserved@b } {#1} {#2}
}}
\cs_new_protected_nopar:Npn\AddToNoCaseChangeList
{\tl_put_right:Nn \l_text_case_exclude_arg_tl}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex209.def b/Master/texmf-dist/tex/latex-dev/base/latex209.def
index 633dbaebcd9..c4a6450ac4f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex209.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latex209.def
@@ -167,6 +167,11 @@
\newdimen\@maxsep
\newdimen\@dblmaxsep
\mark{{}{}}
+\ExplSyntaxOn
+\marks1{\__mark_value:nn {2.09-compat}{}}
+\marks2{\__mark_value:nn {2.09-compat}{}}
+\marks3{\__mark_value:nn {2.09-compat}{}}
+\ExplSyntaxOff
\def\sloppy{\tolerance \@M \hfuzz .5\p@ \vfuzz .5\p@}
\def\@finalstrut#1{\unskip\strut}
\let \@marginparreset \@empty
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 5a696389f15..8a463b97ddb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -226,6 +226,7 @@
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -300,7 +301,7 @@
}
%%% From File: ltvers.dtx
\edef\latexreleaseversion
- {2024-11-01}
+ {2025-06-01}
\newif\if@includeinrelease
\@includeinreleasefalse
\def\IncludeInRelease#1{%
@@ -431,7 +432,7 @@
\@skipping@modulefalse
\fi}
\ProvidesPackage{latexrelease}
- [2022/11/14 v1.0p LaTeX release emulation and tests
+ [2024/08/11 v1.0p LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\@ifundefined{sourceLaTeXdate}{%
@@ -1989,8 +1990,8 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
\edef\@latexrelease@catcode@null{\the\catcode`\^^@ }
\catcode`\^^@=12
\ExplSyntaxOn
@@ -2209,6 +2210,22 @@ of this package available from CTAN}
{ \cs_set_nopar:cpx }
{ \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
}
+\IncludeInRelease{2024/11/01}{\__cmd_declare_env:nnnn}%
+ {Use~space-trimmed~envname~directly}
+\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
+ {
+ \str_set:Nn \l__cmd_environment_str {#1}
+ \cs_if_exist:cTF { #1 }
+ { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+ { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
+ \bool_set_false:N \l__cmd_expandable_bool
+ \bool_set_true:N \l__cmd_environment_bool
+ \__cmd_declare_env_internal:nnnn {#1} {#2}
+ }
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\__cmd_declare_env:nnnn}%
+ {Use~space-trimmed~envname~directly}
\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
{
\str_set:Nx \l__cmd_environment_str {#1}
@@ -2228,6 +2245,8 @@ of this package available from CTAN}
\exp_args:NV \__cmd_declare_env_internal:nnnn
\l__cmd_environment_str {#2}
}
+
+\EndIncludeInRelease
\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
{
\exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4806,6 +4825,61 @@ of this package available from CTAN}
\__cmd_check_definable:nNT {#1} \DeclareDocumentCommand
{ \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
}
+\IncludeInRelease{2024/11/01}{\NewDocumentEnvironment}%
+ {Trim~spaces~from~envname~first}
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ {
+ \msg_error:nnx { cmd } { env-already-defined } {#1}
+ \use_none:nnn
+ }
+ {
+ \cs_if_exist:cTF { end #1 }
+ {
+ \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+ \use_none:nnn
+ }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+ }
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \__cmd_declare_env:nnnn {#1} }
+ {
+ \msg_error:nnx { cmd } { env-undefined } {#1}
+ \use_none:nnn
+ }
+ }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \use_none:nnn }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\NewDocumentEnvironment}%
+ {Trim~spaces~from~envname~first}
\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
{
\cs_if_exist:cTF {#1}
@@ -4826,6 +4900,14 @@ of this package available from CTAN}
{ \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
{ \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_undefine:N \__cmd_new_env:nnnn
+\cs_undefine:N \__cmd_new_env:ennn
+\cs_undefine:N \__cmd_renew_env:nnnn
+\cs_undefine:N \__cmd_renew_env:ennn
+\cs_undefine:N \__cmd_provide_env:nnnn
+\cs_undefine:N \__cmd_provide_env:ennn
+
+\EndIncludeInRelease
\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
{
\__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -5249,17 +5331,19 @@ of this package available from CTAN}
{Providing~hooks}
\cs_gset_protected:Npn \hook_activate_generic:n #1 { }
\EndIncludeInRelease
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -5314,24 +5398,24 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -6781,7 +6865,9 @@ of this package available from CTAN}
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -6988,16 +7074,19 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -7535,6 +7624,10 @@ of this package available from CTAN}
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -7712,6 +7805,8 @@ of this package available from CTAN}
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -8547,7 +8642,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -8566,7 +8661,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -8606,6 +8701,10 @@ of this package available from CTAN}
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -9496,23 +9595,33 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -9926,6 +10035,13 @@ of this package available from CTAN}
\msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
+\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \exp_after:wN \__para_tmp:w \token_to_meaning:N \everypar
+ \c_space_tl
+}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}
{\g__para_standard_everypar_tl}{minipage~ fix}
@@ -9962,10 +10078,10 @@ of this package available from CTAN}
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -10090,6 +10206,32 @@ of this package available from CTAN}
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\IncludeInRelease{2024/11/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
+\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -10098,7 +10240,8 @@ of this package available from CTAN}
\smash{}%
\spacefactor\@savsf
\fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+\EndIncludeInRelease
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
\IncludeInRelease{0000/00/00}{ltmeta}%
@@ -10258,6 +10401,20 @@ of this package available from CTAN}
\fi
\fi}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addvspace}{drop unnecessary no-item error}%
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\addvspace}{\addvspace calc support}%
\def\addvspace#1{%
@@ -10291,6 +10448,38 @@ of this package available from CTAN}
\@noitemerr
\fi}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addpenalty}{\addpenalty drop error}%
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
+ \else
+ \if@nobreak
+ \else
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
+ \else
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
+ \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
+ \fi
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\addpenalty}{\addpenalty}%
\def\addpenalty#1{%
@@ -11227,6 +11416,54 @@ of this package available from CTAN}
{Reset nested counters}%%
\def\@stpelt#1{\global\csname c@#1\endcsname \z@}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@definecounter}
+ {provide theHfoo commands}%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@definecounter}
+ {provide theHfoo commands}%%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@addtoreset}
+ {provide theHfoo commands}%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@addtoreset}
+ {provide theHfoo commands}%%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\EndIncludeInRelease
\IncludeInRelease{2018-04-01}
{\@removefromreset}{Add interfaces}%
\def\@removefromreset#1#2{%
@@ -11359,6 +11596,17 @@ of this package available from CTAN}
{\setlength}{Using \setlength with \dimen0}%
\def\setlength#1#2{#1#2\relax}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
\IncludeInRelease{2020/02/02}%
@@ -11664,6 +11912,7 @@ of this package available from CTAN}
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -13718,45 +13967,6 @@ of this package available from CTAN}
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -14073,11 +14283,7 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -14575,11 +14781,42 @@ of this package available from CTAN}
\IncludeInRelease{2022/06/01}%
{\Ref}{Add starred version}%
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@currentHref}{set theHcounter representation}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
+}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\@currentHref}{set theHcounter representation}%
+\def\refstepcounter#1{\stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
}
+\let\@kernel@refstepcounter\refstepcounter
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\Ref}{Add starred version}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -14685,14 +14922,11 @@ of this package available from CTAN}
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -14798,7 +15032,7 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF
\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} }
@@ -14813,10 +15047,10 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -14828,8 +15062,10 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -14943,6 +15179,9 @@ of this package available from CTAN}
\NewHook{enddocument/afteraux}
\NewHook{enddocument/info}
\NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\AddToHook{enddocument/info}[kernel/release]{%
@@ -15004,6 +15243,9 @@ of this package available from CTAN}
\NewHook{enddocument/afteraux}
\NewHook{enddocument/info}
\NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\AddToHook{enddocument/info}[kernel/release]{%
@@ -15127,7 +15369,7 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\begin}{Use hook system}%
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -15145,34 +15387,6 @@ of this package available from CTAN}
\fi
\UseHook{env/#1/begin}%
}
-\edef\end
- {\unexpanded{%
- \romannumeral
- \ifx\protect\@typeset@protect
- \expandafter %1
- \expandafter %2
- \expandafter %1
- \expandafter %3 expands the \csname inside \end<space>
- \expandafter %1
- \expandafter %2 expands \end<space>
- \expandafter %1 expands the \else
- \z@
- \else
- \expandafter\z@\expandafter\protect
- \fi
- }%
- \expandafter\noexpand\csname end \endcsname
- }
-\@namedef{end }#1{%
- \romannumeral
- \IfHookEmptyTF{env/#1/end}%
- {\expandafter\z@}%
- {\z@\UseHook{env/#1/end}}%
- \csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
- \UseHook{env/#1/after}%
- \if@ignore\@ignorefalse\ignorespaces\fi
-}
\EndIncludeInRelease
\IncludeInRelease{2019/10/01}%
{\begin}{Making \begin/\end robust}%
@@ -15184,6 +15398,23 @@ of this package available from CTAN}
\csname #1\endcsname}}%
\@ignorefalse
\begingroup\@endpefalse\reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\begin}{Making \begin/\end robust}%
+\def\begin#1{%
+ \@ifundefined{#1}%
+ {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
+ {\def\reserved@a{\def\@currenvir{#1}%
+ \edef\@currenvline{\on@line}%
+ \csname #1\endcsname}}%
+ \@ignorefalse
+ \begingroup\@endpefalse\reserved@a}
+
+\expandafter\let\csname begin \endcsname\@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\end}{Making \begin/\end robust}%
\edef\end
{\unexpanded{%
\romannumeral
@@ -15202,27 +15433,52 @@ of this package available from CTAN}
}%
\expandafter\noexpand\csname end \endcsname
}
-\@namedef{end }#1{%
- \csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
- \if@ignore\@ignorefalse\ignorespaces\fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\begin}{Making \begin/\end robust}%
-\def\begin#1{%
- \@ifundefined{#1}%
- {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
- {\def\reserved@a{\def\@currenvir{#1}%
- \edef\@currenvline{\on@line}%
- \csname #1\endcsname}}%
- \@ignorefalse
- \begingroup\@endpefalse\reserved@a}
+ {\end}{Making \begin/\end robust}%
\def\end#1{%
\csname end#1\endcsname\@checkend{#1}%
\expandafter\endgroup\if@endpe\@doendpe\fi
\if@ignore\@ignorefalse\ignorespaces\fi}
-\expandafter\let\csname begin \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\end!space}{New @endpe handling}%
+\@namedef{end }#1{%
+ \romannumeral
+ \IfHookEmptyTF{env/#1/end}%
+ {\expandafter\z@}%
+ {\z@\UseHook{env/#1/end}}%
+ \csname end#1\endcsname\@checkend{#1}%
+ \endgroup
+ \UseHook{env/#1/after}%
+ \if@ignore\@ignorefalse\ignorespaces\fi
+}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\end!space}{Use hook system}%
+
+\@namedef{end }#1{%
+ \romannumeral
+ \IfHookEmptyTF{env/#1/end}%
+ {\expandafter\z@}%
+ {\z@\UseHook{env/#1/end}}%
+ \csname end#1\endcsname\@checkend{#1}%
+ \expandafter\endgroup\if@endpe\@doendpe\fi
+ \UseHook{env/#1/after}%
+ \if@ignore\@ignorefalse\ignorespaces\fi
+}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\end!space}{Making \begin/\end robust}%
+
+\@namedef{end }#1{%
+ \csname end#1\endcsname\@checkend{#1}%
+ \expandafter\endgroup\if@endpe\@doendpe\fi
+ \if@ignore\@ignorefalse\ignorespaces\fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\end!space}{Making \begin/\end robust}%
\expandafter\let\csname end \endcsname\@undefined
\EndIncludeInRelease
@@ -15697,6 +15953,25 @@ of this package available from CTAN}
\let\leqno\@kernel@leqno
\EndIncludeInRelease
%%% From File: ltlists.dtx
+\IncludeInRelease{2024/11/01}%
+ {\@endpetrue}{New @endpe handling}%
+\def\@endpefalse{\global\let\if@endpe\iffalse}
+\def\@endpetrue {%
+ \global\let\if@endpe\iftrue
+ \ifnum\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@endpetrue}{New @endpe handling}%
+
+
+\def\@endpefalse{\let\if@endpe\iffalse}
+\def\@endpetrue{\let\if@endpe\iftrue}
+
+\EndIncludeInRelease
%%% From File: ltboxes.dtx
\IncludeInRelease{2015/01/01}%
{\makebox}{Make \makebox robust}%
@@ -15776,7 +16051,6 @@ of this package available from CTAN}
\IncludeInRelease{2021/06/01}%
{\color@begingroup}{color group settings}%
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
\def\color@setgroup{\color@begingroup} % changed further in color package
\let\normalcolor\relax % remains untouched; only changed in a color package
\def\color@hbox{\hbox\bgroup\color@begingroup}
@@ -15787,7 +16061,6 @@ of this package available from CTAN}
{\color@begingroup}{color group settings}%
\let\color@begingroup\relax
-\let\color@endgroup\relax
\let\color@setgroup\relax
\let\normalcolor\relax
\let\color@hbox\relax
@@ -15795,6 +16068,22 @@ of this package available from CTAN}
\let\color@endbox\relax
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\color@endgroup}{color group settings}%
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\color@endgroup}{color group settings}%
+\def\color@endgroup{\endgraf\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\color@endgroup}{color group settings}%
+
+\let\color@endgroup\relax
+
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\savebox}{Make \savebox robust}%
\DeclareRobustCommand\savebox[1]{%
@@ -17187,7 +17476,9 @@ of this package available from CTAN}
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
+
+
+
\ExplSyntaxOn
\NewModuleRelease{2022/06/01}{ltmarks}
@@ -17207,43 +17498,42 @@ of this package available from CTAN}
{
\exp_args:Nc \newmarks {c__mark_class_ #1 _mark}
\seq_gput_right:Nn \g__mark_classes_seq {#1}
- \tl_new:c { g__mark_page_top_ #1 _tl }
- \tl_new:c { g__mark_page_first_ #1 _tl }
- \tl_new:c { g__mark_page_last_ #1 _tl }
- \tl_new:c { g__mark_previous-page_top_ #1 _tl }
- \tl_new:c { g__mark_previous-page_first_ #1 _tl }
- \tl_new:c { g__mark_previous-page_last_ #1 _tl }
- \tl_new:c { g__mark_column_top_ #1 _tl }
- \tl_new:c { g__mark_column_first_ #1 _tl }
- \tl_new:c { g__mark_column_last_ #1 _tl }
- \tl_new:c { g__mark_previous-column_top_ #1 _tl }
- \tl_new:c { g__mark_previous-column_first_ #1 _tl }
- \tl_new:c { g__mark_previous-column_last_ #1 _tl }
- \tl_new:c { g__mark_first-column_top_ #1 _tl }
- \tl_new:c { g__mark_first-column_first_ #1 _tl }
- \tl_new:c { g__mark_first-column_last_ #1 _tl }
- \tl_new:c { g__mark_last-column_top_ #1 _tl }
- \tl_new:c { g__mark_last-column_first_ #1 _tl }
- \tl_new:c { g__mark_last-column_last_ #1 _tl }
- \tl_set:cn { g__mark_page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_last_ #1 _tl }{ \__mark_id:n{0} }
+ \__mark_init_region:nn {page}{#1}
+ \__mark_init_region:nn {previous-page}{#1}
+ \__mark_init_region:nn {column}{#1}
+ \__mark_init_region:nn {previous-column}{#1}
+ \__mark_init_region:nn {first-column}{#1}
+ \__mark_init_region:nn {last-column}{#1}
+ \__mark_init_region:nn {mcol-1}{#1}
+ \__mark_init_region:nn {mcol-2}{#1}
+ \__mark_init_region:nn {mcol-3}{#1}
+ \__mark_init_region:nn {mcol-4}{#1}
+ \__mark_init_region:nn {mcol-5}{#1}
+ \__mark_init_region:nn {mcol-6}{#1}
+ \__mark_init_region:nn {mcol-7}{#1}
+ \__mark_init_region:nn {mcol-8}{#1}
+ \__mark_init_region:nn {mcol-9}{#1}
+ \__mark_init_region:nn {mcol-10}{#1}
+ \__mark_init_region:nn {mcol-11}{#1}
+ \__mark_init_region:nn {mcol-12}{#1}
+ \__mark_init_region:nn {mcol-13}{#1}
+ \__mark_init_region:nn {mcol-14}{#1}
+ \__mark_init_region:nn {mcol-15}{#1}
+ \__mark_init_region:nn {mcol-16}{#1}
+ \__mark_init_region:nn {mcol-17}{#1}
+ \__mark_init_region:nn {mcol-18}{#1}
+ \__mark_init_region:nn {mcol-19}{#1}
+ \__mark_init_region:nn {mcol-20}{#1}
+}
+\cs_new_protected:Npn \__mark_init_region:nn #1 #2 {
+ \tl_new:c { g__mark_#1_top_ #2 _tl }
+ \tl_new:c { g__mark_#1_first_ #2 _tl }
+ \tl_new:c { g__mark_#1_last_ #2 _tl }
+ \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl
}
+\tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} }
\box_new:N \l__mark_box
\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
@@ -17295,13 +17585,13 @@ of this package available from CTAN}
\exp_not:N \l__mark_saved_parameters_tl
}
\tl_new:N \l__mark_saved_parameters_tl
-\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+\cs_new_protected:Npn \mark_update_structure_from_material:nn #1#2 {
\__mark_extract_and_handle_marks:nn
{ \__mark_update_structure_from_splitmarks:n {#1} }
{ #2 }
}
\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \mark_copy_structure:nn { previous-#1 } {#1}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
@@ -17325,9 +17615,9 @@ of this package available from CTAN}
}
}
}
-\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
- \tl_clear:N \g__mark_first_marks_tl
- \tl_clear:N \g__mark_last_marks_tl
+\cs_new_protected:Npn \mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_gclear:N \g__mark_first_marks_tl
+ \tl_gclear:N \g__mark_last_marks_tl
\__mark_extract_and_handle_marks:nn
\__mark_get_from_splitmarks:
{ #1 }
@@ -17345,12 +17635,14 @@ of this package available from CTAN}
}
{
\tl_gput_right:Ne \g__mark_last_marks_tl
- { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ { \mark_insert:nn {##1} { \__mark_drop_id:o { \g__mark_tmp_tl } } }
\tl_gput_right:Ne \g__mark_first_marks_tl
{ \mark_insert:nn {##1}
{
- \tex_splitfirstmarks:D
- \use:c { c__mark_class_##1_mark }
+ \__mark_drop_id:o {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
}
}
}
@@ -17358,7 +17650,7 @@ of this package available from CTAN}
}
\tl_new:N \g__mark_first_marks_tl
\tl_new:N \g__mark_last_marks_tl
-\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
+\cs_new_protected:Npn \mark_copy_structure:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_ #1 _top_ ##1 _tl }
@@ -17369,16 +17661,27 @@ of this package available from CTAN}
{ g__mark_ #2 _last_ ##1 _tl }
}
}
-\cs_new_protected:Npn \__mark_update_structure_to_err:n #1 {
+\cs_new_protected:Npn \mark_clear_structure:n #1 {
+ \seq_map_inline:Nn \g__mark_classes_seq
+ {
+ \tl_gset_eq:cN { g__mark_ #1 _top_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _first_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _last_ ##1 _tl }
+ \c__mark_empty_tl
+ }
+}
+\cs_new_protected:Npn \mark_set_structure_to_err:n #1 {
\seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset:cn { g__mark_ #1 _top_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _first_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _last_ ##1 _tl } { \__mark_error:n {#1} }
+ \tl_gset:ce { g__mark_ #1 _top_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _first_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _last_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
}
}
-\cs_new_protected:Npn \__mark_error:n #1 {
- \msg_error:nnn { mark } { invalid-use } {#1}
+\cs_new_protected:Npn \__mark_error:nn #1#2 {
+ \msg_error:nnnn { mark } { invalid-use } {#1} {#2}
}
\cs_new_protected:Npn \mark_insert:nn #1#2
{
@@ -17389,8 +17692,7 @@ of this package available from CTAN}
\hook_use:n { insertmark }
\unrestored@protected@xdef \g__mark_tmp_tl
{
- \__mark_id:n{ \int_use:N\g__mark_int }
- #2
+ \__mark_value:nn{ \int_use:N\g__mark_int }{#2}
}
\tex_marks:D \use:c { c__mark_class_ #1 _mark }
{
@@ -17404,7 +17706,7 @@ of this package available from CTAN}
{ \tl_to_str:n {#1} }
}
}
-\cs_new_protected:Npn \__mark_id:n #1 { }
+\cs_new_protected:Npn \__mark_value:nn #1#2 { #2 }
\int_new:N \g__mark_int
\cs_new:Npn \@kernel@before@insertmark {
\cs_set_eq:NN \label \scan_stop:
@@ -17416,11 +17718,16 @@ of this package available from CTAN}
}
\hook_new:n {insertmark}
-\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use:v { g__mark_#1_first_#2_tl } }
-\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use:v { g__mark_#1_last_#2_tl } }
-\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use:v { g__mark_#1_top_#2_tl } }
-\cs_new:Npn \__mark_use:n #1 { \exp_not:o { \use_none:nn #1 } }
-\cs_generate_variant:Nn \__mark_use:n { v }
+\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_first_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_last_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_top_#2_tl } {#1} {#2} }
+\cs_new:Npn \__mark_use_check:nnn #1#2#3 {
+ \tl_if_eq:cNTF {#1} \relax
+ { \__mark_error:nn {#2} {#3} }
+ { \__mark_drop_id:v {#1} }
+}
+\cs_new:Npn \__mark_drop_id:n #1 { \exp_not:o { #1 } }
+\cs_generate_variant:Nn \__mark_drop_id:n { o, v }
\prg_new_conditional:Npnn \mark_if_eq:nnnn #1#2#3#4 { T , F , TF }
{
\tl_if_eq:ccTF { g__mark_ #1 _#3_ #2 _tl }
@@ -17451,13 +17758,14 @@ of this package available from CTAN}
LaTeX~was~asked~to~manipulate~a~mark~of~class~'#1',~
but~this~class~of~marks~does~not~exist.
}
-
\msg_new:nnnn { mark } { invalid-use }
- { Mark~region~'#1'~not ~usable }
+ { Mark~region~'#1'~not~usable~or~class~'#2'~unknown }
{
\c__msg_coding_error_text_tl
- The~region~'#1'~can~only~be~used~after~
- all~columns~have~been~assembled.
+ The~region~'#1'~is~either~not~known~or~data~for~it~
+ still~needs~to~be~assembled,~e.g.,~last-column~
+ while~building~the~first-column.~
+ Also~possible:~the~class~namne~'#2'~is~misspelled.
\c__msg_return_text_tl
}
\bool_new:N \g__mark_debug_bool
@@ -17479,7 +17787,7 @@ of this package available from CTAN}
}
\cs_new_eq:NN \DebugMarksOn \mark_debug_on:
\cs_new_eq:NN \DebugMarksOff \mark_debug_off:
-\cs_new_protected:Npn \ShowMarksAt #1 {
+\NewDocumentCommand \ShowMarksAt {m O{4} } {
}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
@@ -17493,38 +17801,44 @@ of this package available from CTAN}
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
- \__mark_update_structure_alias:nn {previous-column}{previous-page}
- \__mark_update_structure_alias:nn {column}{page}
- \__mark_update_structure_alias:nn {first-column}{page}
- \__mark_update_structure_alias:nn {last-column}{page}
+ \mark_copy_structure:nn {previous-column}{previous-page}
+ \mark_copy_structure:nn {column}{page}
+ \mark_copy_structure:nn {first-column}{page}
+ \mark_copy_structure:nn {last-column}{page}
}
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
{
- \__mark_update_structure_alias:nn {first-column}{column}
- \__mark_update_structure_to_err:n {last-column}
+ \mark_copy_structure:nn {first-column}{column}
+ \mark_set_structure_to_err:n {last-column}
}
{
- \__mark_update_structure_alias:nn {last-column}{column}
+ \mark_copy_structure:nn {last-column}{column}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_previous-page_top_ ##1 _tl }
@@ -17551,6 +17865,7 @@ of this package available from CTAN}
}
}
}
+
\cs_new_eq:NN \@expl@@@mark@update@singlecol@structures@@
\__mark_update_singlecol_structures:
\cs_new_eq:NN \@expl@@@mark@update@dblcol@structures@@
@@ -17573,6 +17888,20 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltpage.dtx
+\IncludeInRelease{2025/06/01}%
+ {\markboth}{Drop legacy mark support}%
+\ExplSyntaxOn
+\DeclareRobustCommand*\markboth[2]{%
+ \mark_insert:nn{2e-left}{#1}
+ \mark_insert:nn{2e-right}{#2}
+ \tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} }
+}
+\DeclareRobustCommand*\markright[1]{%
+ \mark_insert:nn{2e-right}{#1}
+ \tl_if_empty:nF{#1}{ \mark_insert:nn{2e-right-nonempty}{#1} }
+}
+\ExplSyntaxOff
+\EndIncludeInRelease
\IncludeInRelease{2022/06/01}%
{\markboth}{New mark support}%
\ExplSyntaxOn
@@ -17623,10 +17952,42 @@ of this package available from CTAN}
\IncludeInRelease{0000/00/00}%
{\markboth}{Make commands robust}%
-\kernel@make@fragile\markboth
-\kernel@make@fragile\markright
+%\kernel@make@fragile\markboth
+%\kernel@make@fragile\markright
+\def\markboth#1#2{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \unrestored@protected@xdef\@themark {{#1}{#2}}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\def\markright#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markright\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\leftmark}{Use new mark mechanism}%
+\ExplSyntaxOn
+\cs_new:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_new:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\leftmark}{Use new mark mechanism}%
+
+\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
+\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
+\def\@themark{{}{}}
+\def\@markright#1#2#3{\@temptokena {#1}%
+\unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
+\EndIncludeInRelease
%%% From File: ltclass.dtx
@@ -18003,7 +18364,9 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}%
{\OptionNotUsed}{filter unused option list}%
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -19982,6 +20345,63 @@ of this package available from CTAN}
\fi
}%
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputpage}{Use new mark mechanism}%
+\def\@outputpage{%
+\begingroup
+ \let \protect \noexpand
+ \language\document@default@language
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+ \global\let\if@newlist\@@if@newlist
+ \global \@colht \textheight
+ \stepcounter{page}%
+}
+\EndIncludeInRelease
\IncludeInRelease{2017/04/15}%
{\@outputpage}{Reset language for hyphenation}%
\def\@outputpage{%
@@ -20555,6 +20975,31 @@ of this package available from CTAN}
\endgroup
}
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputdblcol}{Use new mark mechanism}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \else
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi}%
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
@@ -20594,7 +21039,7 @@ of this package available from CTAN}
\@whilesw\if@fcolmade \fi{\@outputpage
\@startdblcolumn}%
\endgroup
- \fi}%
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\@outputdblcol}{2 column marks}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls
index f39504c561e..484203d5777 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\ProvidesClass{letter}
- [2021/12/07 v1.3c
+ [2024/08/12 v1.3c
Standard LaTeX document class]
\newcommand\@ptsize{}
\DeclareOption{a4paper}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
index e92a27eb3a4..8a650531558 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
@@ -64,7 +64,7 @@ local function provides_module(info)
luatexbase_log(
"Lua module: " .. info.name
.. spaced(info.date)
- .. spaced(info.version)
+ .. spaced(info.version and string_gsub(info.version or "","^(%d)","v%1"))
.. spaced(info.description)
)
modules[info.name] = info
@@ -301,7 +301,7 @@ local callbacklist = setmetatable({}, {
end
list[i] = current.value
else
- -- Cycle occured. TODO: Show cycle for debugging
+ -- Cycle occurred. TODO: Show cycle for debugging
-- list[i] = ...
local remaining = {}
for name, entry in next, meta do
@@ -335,7 +335,7 @@ local callbacklist = setmetatable({}, {
for i=2, length//2 do
cycle[i], cycle[length + 1 - i] = cycle[length + 1 - i], cycle[i]
end
- error('Cycle occured at ' .. table.concat(cycle, ' -> ', 1, length))
+ error('Cycle occurred at ' .. table.concat(cycle, ' -> ', 1, length))
end
end
end
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index 2747e4f56f3..fc23e470097 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}
-[2024/02/11 v1.2c
+[2024/08/16 v1.2e
LuaTeX support for plain TeX (core)%
]
\edef\etatcatcode{\the\catcode`\@}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
index 7345df2bb09..bf6ad9d0a7c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmm.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/omlcmr.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
index 562a6d51708..98b20aedd0d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
index ecc46f89f5c..e1df971f089 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omlenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OML}{}{}
\DeclareTextSymbol{\textless}{OML}{`\<}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
index 610e916200b..707ace394f1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/omscmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
index 8ec4eb09303..b4389f2e858 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmsy.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
index 13ab8351bca..6bb512e53f7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omsenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OMS}{}{}
\DeclareTextSymbol{\textasteriskcentered}{OMS}{3} % "03
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
index 31a4753ff62..5e32aebc6db 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omxcmex.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMX}{cmex}{}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
<->sfixed*cmex10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
index 254da740bf8..935344838ad 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmdh}{m}{n}{%
<10>cmdunh10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
index 0276b7bde23..77373fbb58e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfib}{m}{n}{%
<8>cmfib8%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
index 33bb6d1b126..bd4d21551d5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfr}{m}{n}{%
<10>cmff10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
index 45f862af9b4..2393e7caedd 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/ot1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
index ad2de5a308f..6c724c2effe 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
index 54f383b51c7..2716074395a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{OT1}{cmtt}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
index bf7b2c9d401..b787fea9dfc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmvtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
index bede1dd19d5..634b28158f3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot1enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OT1}{}{}
\DeclareTextAccent{\"}{OT1}{127}
@@ -117,6 +117,7 @@
\DeclareTextCompositeCommand{\'}{OT1}{i}{\@tabacckludge'\i}
\DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}
\DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}
+\DeclareTextCompositeCommand{\=}{OT1}{i}{\=\i}
\ifx\textcommaabove\@undefined\else
\DeclareTextCompositeCommand{\c}{OT1}{g}{\textcommaabove{g}}
\fi
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
index a15bb8af874..75ab485f172 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot4enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OT4}{}{}
\DeclareFontSubstitution{OT4}{cmr}{m}{n}
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
index 2e89d1f4e74..2c128ff0719 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized preload font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.cls b/Master/texmf-dist/tex/latex-dev/base/report.cls
index cb7a32f536d..b0f60a1f5db 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/report.cls
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{report}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
index 8caa7e43a8b..4a9ae8833df 100644
--- a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2024/06/04 v3.0q
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex-dev/base/size10.clo b/Master/texmf-dist/tex/latex-dev/base/size10.clo
index 11be942b3e9..a2c22c047f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size10.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size10.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/size11.clo b/Master/texmf-dist/tex/latex-dev/base/size11.clo
index a36fb7931ba..0259727c40c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size11.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size11.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/size12.clo b/Master/texmf-dist/tex/latex-dev/base/size12.clo
index aa9f0808f73..e1dd32b0325 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size12.clo
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size12.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
index 76b5eb1a106..3ae4a12f0a0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
index 8fe21d2fda0..04c5389628f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
index 469b8d0d99a..1278f2b65ab 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
index ddebbdf6959..698686aa6e8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
index 5294fb74d91..5bc389b29aa 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
index ebd77a12951..044c63a222d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
index 4b22b9e7f1a..ffdbeade0c7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
index a46de580623..6178c89a96c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{t1enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
@@ -291,6 +291,7 @@
\DeclareTextCompositeCommand{\c}{T1}{R}{\textcommabelow{R}}
\DeclareTextCompositeCommand{\c}{T1}{r}{\textcommabelow{r}}
\fi
+\DeclareTextCompositeCommand{\=}{T1}{\i}{\=\i}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
index b611d19a427..3108e802e95 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
@@ -64,7 +64,6 @@
{\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
{\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
\newif\iftc@forced \tc@forcedfalse
\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
index 8564159c267..fb97c97abeb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -60,6 +60,7 @@
\EC@family{TS1}{cmr}{bx}{it}{tcbi}
\EC@family{TS1}{cmr}{bx}{sl}{tcbl}
\EC@family{TS1}{cmr}{m}{ui}{tcui}
+\DeclareEncodingSubset{TS1}{cmr}{0}
\endinput
%%
%% End of file `ts1cmr.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
index bce10af852e..98a5d38e738 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -58,6 +58,7 @@
\EC@family{TS1}{cmss}{bx}{n}{tcsx}
\EC@family{TS1}{cmss}{bx}{it}{tcso}
\EC@family{TS1}{cmss}{bx}{sl}{tcso}
+\DeclareEncodingSubset{TS1}{cmss}{0}
\endinput
%%
%% End of file `ts1cmss.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
index fc1d3eae689..1d6ae48c351 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -56,6 +56,7 @@
\EC@ttfamily{TS1}{cmtt}{m}{n}{tctt}
\EC@ttfamily{TS1}{cmtt}{m}{sl}{tcst}
\EC@ttfamily{TS1}{cmtt}{m}{it}{tcit}
+\DeclareEncodingSubset{TS1}{cmtt}{0}
\endinput
%%
%% End of file `ts1cmtt.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
index 02fa3968abf..fce8290fb12 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -55,6 +55,7 @@
\DeclareFontFamily{TS1}{cmvtt}{}
\EC@ttfamily{TS1}{cmvtt}{m}{n}{tcvt}
\EC@ttfamily{TS1}{cmvtt}{m}{it}{tcvi}
+\DeclareEncodingSubset{TS1}{cmvtt}{0}
\endinput
%%
%% End of file `ts1cmvtt.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
index 7d32d90059f..c85c620c6bb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{tuenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\providecommand\UnicodeEncodingName{TU}
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
index 4ef1f56b42b..367aab2f0e4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n 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-dev/base/ucmss.fd b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
index 1611fc986c4..24c6e14bf3b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmss}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
index 247768631e4..cd9cd439b0d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{U}{cmtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
index d2317b204af..6e008fb9f04 100644
--- a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
+++ b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
@@ -34,8 +34,8 @@
%%
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
-\def\LaTeXFirstAidDate{2024/03/20}
-\def\LaTeXFirstAidVersion{v1.1e}
+\def\LaTeXFirstAidDate{2024/11/24}
+\def\LaTeXFirstAidVersion{v1.1j}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -228,8 +228,44 @@
{[\@tempb][\arabic{page}][\cref@result]\thepage}{}{}{}}}% <------- five
\@esphack}%
}
+ \newcommand\firstaid@cref@smugglelabel{\let\cref@currentlabel\cref@gcurrentlabel@temp}
+ \newcommand\firstaid@cref@updatelabeldata[1]{%
+ \cref@constructprefix{#1}{\cref@result}%
+ \@ifundefined{cref@#1@alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1@alias\endcsname}}%
+ \protected@xdef\cref@gcurrentlabel@temp{%
+ [\@tempa][\arabic{#1}][\cref@result]%
+ \csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \aftergroup\firstaid@cref@smugglelabel
+ }
+ \newif\iftag@
+ \AddToHook{label}[firstaid/cleveref]
+ {\ifx
+ \@currentcounter\@empty
+ \else
+ \iftag@\else
+ \firstaid@cref@updatelabeldata{\@currentcounter}%
+ \fi
+ \fi}
}%
}
+\AddToHook{package/arydshln/after}[firstaid]{%
+ \FirstAidNeededT{arydshln}{sty}{2019/02/21 v1.76 }
+ {%
+\protected\def\adl@@vlineL#1#2#3#4{\adl@ivline#4\@nil{#1}{#2}%
+ \xdef\adl@colsL{\adl@colsL
+ \@elt{#3}{\number\@tempcnta}{\number\@tempcntb}%
+ {\adl@dashcolor}{\adl@gapcolor}}}%
+\protected\def\adl@@vlineR#1#2#3#4{\adl@ivline#4\@nil{#1}{#2}%
+ \xdef\adl@colsR{%
+ \@elt{#3}{\number\@tempcnta}{\number\@tempcntb}%
+ {\adl@dashcolor}{\adl@gapcolor}%
+ \adl@colsR}}%
+\let\adl@act@@vlineL\adl@@vlineL
+\let\adl@act@@vlineR\adl@@vlineR
+ }%
+}
\endinput
%%
%% End of file `latex2e-first-aid-for-external-files.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/color.sty b/Master/texmf-dist/tex/latex-dev/graphics/color.sty
index 7083345d319..6eac5d7e41a 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/color.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/color.sty
@@ -25,7 +25,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{color}
- [2024/01/14 v1.3d Standard LaTeX Color (DPC)]
+ [2024/06/23 v1.3e Standard LaTeX Color (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
\catcode`\noexpand\"\the\catcode`\"\relax
@@ -170,7 +170,7 @@
\input{mathcolor.ltx}
\def\color@setgroup{\begingroup\set@color}
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
\def\color@hbox{\hbox\bgroup\color@begingroup}
\def\color@vbox{\vbox\bgroup\color@begingroup}
\def\color@endbox{\color@endgroup\egroup}
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
index 9d6e6c3b176..bbbe11f3325 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
@@ -30,7 +30,7 @@
\DeclareCurrentRelease{}{2019-10-01}
\ProvidesPackage{graphics}
- [2024/05/23 v1.4g Standard LaTeX Graphics (DPC,SPQR)]
+ [2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
\catcode`\noexpand\"\the\catcode`\"\relax
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
index 54aa898cc98..8d95f514b00 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
@@ -62,7 +62,7 @@
%% l3legacy.dtx (with options: `package')
%% l3deprecation.dtx (with options: `package')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-07-20}%
+\def\ExplFileDate{2025-01-18}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -716,7 +716,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D
\__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D
\__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D
- \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D
\__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D
\__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D
\__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D
@@ -1313,13 +1312,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \ybaselineshift \tex_ybaselineshift:D
\__kernel_primitive:NN \yoko \tex_yoko:D
\__kernel_primitive:NN \vfi \tex_vfi:D
- \__kernel_primitive:NN \currentcjktoken \tex_currentcjktoken:D
\__kernel_primitive:NN \disablecjktoken \tex_disablecjktoken:D
\__kernel_primitive:NN \enablecjktoken \tex_enablecjktoken:D
\__kernel_primitive:NN \forcecjktoken \tex_forcecjktoken:D
\__kernel_primitive:NN \kchar \tex_kchar:D
\__kernel_primitive:NN \kchardef \tex_kchardef:D
- \__kernel_primitive:NN \kuten \tex_kuten:D
\__kernel_primitive:NN \uptexrevision \tex_uptexrevision:D
\__kernel_primitive:NN \uptexversion \tex_uptexversion:D
\__kernel_primitive:NN \odelcode \tex_odelcode:D
@@ -3076,13 +3073,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__cs_generate_variant:w #2 \s__cs_mark {#3} {#4} {#5}
}
\cs_new_protected:Npn \__cs_generate_variant_p_form:nnn #1#2
- { \cs_generate_variant:cn { #1 _p : #2 } }
+ { \__cs_generate_variant_check:nn { #1 _p : #2 } }
\cs_new_protected:Npn \__cs_generate_variant_T_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 T } }
+ { \__cs_generate_variant_check:nn { #1 : #2 T } }
\cs_new_protected:Npn \__cs_generate_variant_F_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 F } }
+ { \__cs_generate_variant_check:nn { #1 : #2 F } }
\cs_new_protected:Npn \__cs_generate_variant_TF_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 TF } }
+ { \__cs_generate_variant_check:nn { #1 : #2 TF } }
+\cs_new_protected:Npn \__cs_generate_variant_check:nn #1#2
+ {
+ \cs_if_exist:cTF {#1}
+ { \cs_generate_variant:cn {#1} {#2} }
+ {
+ \msg_error:nne
+ { kernel } { conditional-base-undefined }
+ { \token_to_str:c {#1} }
+ }
+ }
\cs_new_protected:Npn \exp_args_generate:n #1
{
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
@@ -3476,7 +3483,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_chk_if_free_cs:N #1
\cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
}
-\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { NV , Ne , c , cV , ce }
\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
\cs_new_protected:Npn \tl_clear:N #1
{ \tex_let:D #1 = ~ \c_empty_tl }
@@ -3867,6 +3874,37 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__tl_replace_next_aux:w { \__tl_replace_next:w { } { } }
\cs_new_eq:NN \__tl_replace_wrap:w ?
\cs_new_eq:NN \__tl_replace_next:w ?
+\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3
+ { \regex_replace_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3
+ { \regex_replace_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3
+ { \regex_replace_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3
+ { \regex_replace_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__tl_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \tl_set_eq:NN \exp_not:N \l__tl_internal_a_tl ##1
+ \exp_not:c { regex_replace_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__tl_internal_a_tl
+ \tl_gset_eq:NN ##1 \exp_not:N \l__tl_internal_a_tl
+ \group_end:
+ }
+ \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c }
+ }
+ \__tl_tmp:w { once } n { }
+ \__tl_tmp:w { once } N \use:n
+ \__tl_tmp:w { all } n { }
+ \__tl_tmp:w { all } N \use:n
+\group_end:
\cs_new_protected:Npn \tl_remove_once:Nn #1#2
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
@@ -4019,6 +4057,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F }
+ {
+ \regex_match:nnTF {#2} {#1}
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn
+ { V } { TF , T , F }
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F }
+ {
+ \regex_match:nNTF {#2} #1
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN
+ { V } { TF , T , F }
\cs_new:Npn \tl_map_function:nN #1#2
{
\__tl_map_function:Nnnnnnnnn #2 #1
@@ -5622,6 +5674,45 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 #2 { #3 }
\__seq_pop_item_def:
}
+\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3
+ { \regex_extract_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3
+ { \regex_extract_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3
+ { \regex_extract_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3
+ { \regex_extract_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3
+ { \regex_split:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3
+ { \regex_split:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__seq_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \seq_set_eq:NN \exp_not:N \l__seq_tmp_seq ##1
+ \exp_not:c { regex_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__seq_tmp_seq
+ \seq_gset_eq:NN ##1 \exp_not:N \l__seq_tmp_seq
+ \group_end:
+ }
+ \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c }
+ }
+ \__seq_tmp:w { extract_once } n { }
+ \__seq_tmp:w { extract_once } N \use:n
+ \__seq_tmp:w { extract_all } n { }
+ \__seq_tmp:w { extract_all } N \use:n
+ \__seq_tmp:w { split } n { }
+ \__seq_tmp:w { split } N \use:n
+\group_end:
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
{ \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
@@ -5662,20 +5753,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
\cs_new:Npn \__seq_wrap_item:n #1 { \exp_not:n { \__seq_item:n {#1} } }
-\seq_new:N \l__seq_remove_seq
+\seq_new:N \l__seq_tmp_seq
\cs_new_protected:Npn \seq_remove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_set_eq:NN }
\cs_new_protected:Npn \seq_gremove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \__seq_remove_duplicates:NN #1#2
{
- \seq_clear:N \l__seq_remove_seq
+ \seq_clear:N \l__seq_tmp_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l__seq_remove_seq {##1}
- { \seq_put_right:Nn \l__seq_remove_seq {##1} }
+ \seq_if_in:NnF \l__seq_tmp_seq {##1}
+ { \seq_put_right:Nn \l__seq_tmp_seq {##1} }
}
- #1 #2 \l__seq_remove_seq
+ #1 #2 \l__seq_tmp_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
@@ -6138,6 +6229,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__seq_map_pairwise_function:wNw #2 \s__seq_stop #3
#1 { ? \prg_break: } { }
\prg_break_point:
+ \prg_break_point:Nn \seq_map_break: { }
}
\cs_new:Npn \__seq_map_pairwise_function:wNw \s__seq #1 \s__seq_stop #2
{
@@ -6297,13 +6389,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_eval:n #1
{ \tex_the:D \__int_eval:w #1 \__int_eval_end: }
\cs_new:Npn \int_eval:w { \tex_the:D \__int_eval:w }
+\cs_new_eq:NN \__int_sep: \tex_right:D
\cs_new:Npn \int_sign:n #1
{
\int_value:w \exp_after:wN \__int_sign:Nw
- \int_value:w \__int_eval:w #1 \__int_eval_end: ;
+ \int_value:w \__int_eval:w #1 \__int_eval_end: \__int_sep:
\exp_stop_f:
}
-\cs_new:Npn \__int_sign:Nw #1#2 ;
+\cs_new:Npn \__int_sign:Nw #1#2 \__int_sep:
{
\if_meaning:w 0 #1
0
@@ -6322,20 +6415,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_max:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
>
\exp_stop_f:
}
\cs_new:Npn \int_min:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
<
\exp_stop_f:
}
-\cs_new:Npn \__int_maxmin:wwN #1 ; #2 ; #3
+\cs_new:Npn \__int_maxmin:wwN #1 \__int_sep: #2 \__int_sep: #3
{
\if_int_compare:w #1 #3 #2 ~
#1
@@ -6347,11 +6440,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\int_value:w \__int_eval:w
\exp_after:wN \__int_div_truncate:NwNw
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
\__int_eval_end:
}
-\cs_new:Npn \__int_div_truncate:NwNw #1#2; #3#4;
+\cs_new:Npn \__int_div_truncate:NwNw #1#2 \__int_sep: #3#4 \__int_sep:
{
\if_meaning:w 0 #1
0
@@ -6369,12 +6462,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_mod:nn #1#2
{
\int_value:w \__int_eval:w \exp_after:wN \__int_mod:ww
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
\__int_eval_end:
}
-\cs_new:Npn \__int_mod:ww #1; #2;
- { #1 - ( \__int_div_truncate:NwNw #1 ; #2 ; ) * #2 }
+\cs_new:Npn \__int_mod:ww #1 \__int_sep: #2 \__int_sep:
+ { #1 - ( \__int_div_truncate:NwNw #1 \__int_sep: #2 \__int_sep: ) * #2 }
\cs_new:Npn \__kernel_int_add:nnn #1#2#3
{
\int_value:w \__int_eval:w #1
@@ -6470,8 +6563,32 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__int_eval:w #2 \__int_eval_end: }
\cs_new_protected:Npn \int_gset:Nn #1#2
{ \tex_global:D #1 = \__int_eval:w #2 \__int_eval_end: }
-\cs_generate_variant:Nn \int_set:Nn { c }
-\cs_generate_variant:Nn \int_gset:Nn { c }
+\cs_generate_variant:Nn \int_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \int_gset:Nn { NV , c , cV }
+\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3
+ { \regex_count:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:nnN {#2} {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3
+ { \regex_count:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:NnN #2 {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:NNn { c }
\cs_new_eq:NN \int_use:N \tex_the:D
\cs_new:Npn \int_use:c #1 { \tex_the:D \cs:w #1 \cs_end: }
\cs_new_protected:Npn \__int_compare_error:
@@ -6662,41 +6779,47 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \int_step_function:nnnN #1#2#3
{
- \exp_after:wN \__int_step:wwwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 \exp_after:wN ;
- \int_value:w \__int_eval:w #3 ;
+ \exp_after:wN \__int_step:w
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #3 \__int_sep:
}
-\cs_new:Npn \__int_step:wwwN #1; #2; #3; #4
+\cs_new:Npn \__int_step:w #1 \__int_sep: #2 \__int_sep: #3 \__int_sep: #4
{
\int_compare:nNnTF {#2} > \c_zero_int
- { \__int_step:NwnnN > }
+ { \__int_step:Nw > }
{
- \int_compare:nNnTF {#2} = \c_zero_int
+ \if_meaning:w 0 #2
+ \exp_after:wN \use_ii:nn
+ \fi:
+ \use_none:n
{
\msg_expandable_error:nnn
{ kernel } { zero-step } {#4}
\prg_break:
}
- { \__int_step:NwnnN < }
+ \__int_step:Nw <
}
- #1 ; {#2} {#3} #4
+ #1 \__int_sep: {#2} {#3} {#4}
\prg_break_point:
}
-\cs_new:Npn \__int_step:NwnnN #1#2 ; #3#4#5
+\cs_new:Npn \__int_step:Nw #1#2 \__int_sep: #3#4#5
{
\if_int_compare:w #2 #1 #4 \exp_stop_f:
\prg_break:n
\fi:
#5 {#2}
- \exp_after:wN \__int_step:NwnnN
+ \exp_after:wN \__int_step:Nw
\exp_after:wN #1
- \int_value:w \__int_eval:w #2 + #3 ; {#3} {#4} #5
+ \int_value:w \__int_eval:w #2 + #3 \__int_sep: {#3} {#4} {#5}
}
\cs_new:Npn \int_step_function:nN
- { \int_step_function:nnnN { 1 } { 1 } }
+ { \int_step_function:nnnN \c_one_int \c_one_int }
\cs_new:Npn \int_step_function:nnN #1
- { \int_step_function:nnnN {#1} { 1 } }
+ { \int_step_function:nnnN {#1} \c_one_int }
+\cs_new_eq:NN \int_step_tokens:nn \int_step_function:nN
+\cs_new_eq:NN \int_step_tokens:nnn \int_step_function:nnN
+\cs_new_eq:NN \int_step_tokens:nnnn \int_step_function:nnnN
\cs_new_protected:Npn \int_step_inline:nn
{ \int_step_inline:nnnn { 1 } { 1 } }
\cs_new_protected:Npn \int_step_inline:nnn #1
@@ -7584,6 +7707,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__sys_const:nn { sys_if_engine_ #1 }
{ \str_if_eq_p:Vn \c_sys_engine_str {#1} }
}
+\__sys_const:nn
+ { sys_if_engine_opentype }
+ { \cs_if_exist_p:N \tex_Umathcode:D }
\group_begin:
\cs_set_eq:NN \lua_now:e \tex_directlua:D
\str_const:Ne \c_sys_engine_exec_str
@@ -8640,6 +8766,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \clist_use:Nn #1#2
{ \clist_use:Nnnn #1 {#2} {#2} {#2} }
\cs_generate_variant:Nn \clist_use:Nn { c }
+\cs_new_eq:NN \clist_use:N \tl_use:N
+\cs_generate_variant:Nn \clist_use:N { c }
\cs_new:Npn \clist_use:nnnn #1#2#3#4
{
\__clist_use:Nw \__clist_use_none_delimit_by_s_stop:w
@@ -9074,7 +9202,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_end:
\group_begin:
\char_set_catcode_active:N \*
- \tl_const:Nn \c_catcode_active_tl { \exp_not:N * }
+ \tl_const:Nn \c__token_active_tl { \exp_not:N * }
\group_end:
\prg_new_conditional:Npnn \token_if_group_begin:N #1 { p , T , F , TF }
{
@@ -9132,7 +9260,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF }
{
- \if_catcode:w \exp_not:N #1 \c_catcode_active_tl
+ \if_catcode:w \exp_not:N #1 \c__token_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
@@ -9934,7 +10062,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN { \tl_to_str:n {#2} }
}
}
- { \exp_after:wN \__prop_get_linked:w #1 {#2} \use:n { } { } }
+ { \exp_after:wN \__prop_get_linked:w #1 {#2} \exp_not:n { } { } }
}
\cs_new:Npn \__prop_item:nnn #1#2#3
{
@@ -11054,6 +11182,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\msg_new:nnn { kernel } { randint-backward-range }
{ Wrong~order~of~bounds~in~\iow_char:N\\int_rand:nn{#1}{#2}. }
+\msg_new:nnnn { kernel } { conditional-base-undefined }
+ { Undefined~conditional~base~function~'#1'. }
+ {
+ \c__msg_coding_error_text_tl
+ LaTeX~has~been~asked~to~define~a~variant~of~the~conditional~'#1',~
+ but~the~latter~is~not~defined.
+ }
\msg_new:nnnn { kernel } { conditional-form-unknown }
{ Conditional~form~'#1'~for~function~'#2'~unknown. }
{
@@ -12363,6 +12498,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
+\cs_new_protected:Npn \file_forget:n #1
+ { \cs_undefine:c { __file_seen_ \file_full_name:n {#1} : } }
\cs_new_protected:Npn \file_get_full_name:nN #1#2
{
\file_get_full_name:nNF {#1} #2
@@ -12952,8 +13089,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
\cs_new_protected:Npn \dim_gset:Nn #1#2
{ \tex_global:D #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\cs_generate_variant:Nn \dim_set:Nn { c }
-\cs_generate_variant:Nn \dim_gset:Nn { c }
+\cs_generate_variant:Nn \dim_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \dim_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \dim_set_eq:NN #1#2
{ #1 = #2 \scan_stop: }
\cs_generate_variant:Nn \dim_set_eq:NN { c , Nc , cc }
@@ -13379,8 +13516,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_glueexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \skip_set:Nn { c }
-\cs_generate_variant:Nn \skip_gset:Nn { c }
+\cs_generate_variant:Nn \skip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \skip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \skip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \skip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -13472,8 +13609,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_muexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \muskip_set:Nn { c }
-\cs_generate_variant:Nn \muskip_gset:Nn { c }
+\cs_generate_variant:Nn \muskip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \muskip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \muskip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \muskip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -13781,16 +13918,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\cs_set_eq:cN {#1} \tex_undefined:D
}
-\cs_new_protected:Npn \keys_define:nn
- { \__keys_define:onn \l__keys_module_str }
-\cs_generate_variant:Nn \keys_define:nn { ne , nx }
-\cs_new_protected:Npn \__keys_define:nnn #1#2#3
+\cs_new_protected:Npn \keys_define:nn #1#2
{
- \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#2} }
- \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#3}
- \str_set:Nn \l__keys_module_str {#1}
+ \use:e
+ {
+ \exp_not:n
+ {
+ \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#1} }
+ \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#2}
+ }
+ \__keys_reset_var:N \l__keys_module_str
+ \__keys_reset_var:N \l__keys_inherit_str
+ \__keys_reset_var:N \l_keys_choice_tl
+ \__keys_reset_var:N \l_keys_key_tl
+ \__keys_reset_var:N \l_keys_key_str
+ \__keys_reset_var:N \l_keys_path_tl
+ \__keys_reset_var:N \l_keys_path_str
+ \__keys_reset_var:N \l_keys_value_tl
+ \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int }
+ }
}
-\cs_generate_variant:Nn \__keys_define:nnn { o }
+\cs_generate_variant:Nn \keys_define:nn { ne , nx }
\cs_new_protected:Npn \__keys_define:n #1
{
\bool_set_true:N \l__keys_no_value_bool
@@ -14054,14 +14202,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs:w if#1 \cs_end:
}
}
-\cs_new_protected:Npn \__keys_meta_make:n #1
- {
- \exp_args:NVo \__keys_cmd_set_direct:nn \l_keys_path_str
- {
- \exp_after:wN \__keys_set:nn \exp_after:wN
- { \l__keys_module_str } {#1}
- }
- }
+\cs_new_protected:Npn \__keys_meta_make:n
+ { \exp_args:NV \__keys_meta_make:nn \l__keys_module_str }
\cs_new_protected:Npn \__keys_meta_make:nn #1#2
{
\exp_args:NV \__keys_cmd_set_direct:nn
@@ -14388,33 +14530,34 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__keys_value_requirement:nn { forbidden } {#1} }
\cs_new_protected:cpn { \c__keys_props_root_str .value_required:n } #1
{ \__keys_value_requirement:nn { required } {#1} }
-\cs_new_protected:Npn \__keys_set:nnnnNn
+\cs_new_protected:Npn \__keys_set:nnnnNn #1#2#3#4#5#6
{
- \exp_args:Nooo \__keys_set:nnnnnnnNn
- \l__keys_unused_clist
- \l__keys_selective_clist
- \l__keys_relative_tl
- }
-\cs_new_protected:Npn \__keys_set:nnnnnnnNn #1#2#3#4#5#6#7#8#9
- {
- \clist_clear:N \l__keys_unused_clist
- \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#5} }
- \tl_set:Nn \l__keys_relative_tl {#7}
\use:e
{
\exp_not:n
{
- #9
- \__keys_set:nn {#4} {#6}
+ \clist_clear:N \l__keys_unused_clist
+ \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#2} }
+ \tl_set:Nn \l__keys_relative_tl {#4}
+ #6
+ \__keys_set:nn {#1} {#3}
+ \clist_set_eq:NN #5 \l__keys_unused_clist
}
\__keys_reset_bool:N \l__keys_only_known_bool
\__keys_reset_bool:N \l__keys_exclude_bool
\__keys_reset_bool:N \l__keys_selective_bool
+ \__keys_reset_var:N \l__keys_unused_clist
+ \__keys_reset_var:N \l__keys_selective_clist
+ \__keys_reset_var:N \l__keys_relative_tl
+ \__keys_reset_var:N \l__keys_inherit_str
+ \__keys_reset_var:N \l_keys_choice_tl
+ \__keys_reset_var:N \l_keys_key_tl
+ \__keys_reset_var:N \l_keys_key_str
+ \__keys_reset_var:N \l_keys_path_tl
+ \__keys_reset_var:N \l_keys_path_str
+ \__keys_reset_var:N \l_keys_value_tl
+ \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int }
}
- \clist_set_eq:NN #8 \l__keys_unused_clist
- \__kernel_tl_set:Nx \l__keys_unused_clist { \exp_not:n {#1} }
- \__kernel_tl_set:Nx \l__keys_selective_clist {#2}
- \__kernel_tl_set:Nx \l__keys_relative_tl { \exp_not:n {#3} }
}
\cs_new:Npn \__keys_reset_bool:N #1
{
@@ -14422,6 +14565,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ bool_set_ \bool_if:NTF #1 { true } { false } :N }
\exp_not:N #1
}
+\cs_new:Npn \__keys_reset_var:N #1
+ {
+ \exp_not:n
+ { \__kernel_tl_set:Nx #1 }
+ { \exp_not:N \exp_not:n { \exp_not:o { #1 } } }
+ }
\cs_new_protected:Npn \__keys_set:nn #1#2
{ \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
\cs_new_protected:Npn \__keys_set:nnn #1#2#3
@@ -15225,21 +15374,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \__fp_int_eval:w \tex_numexpr:D
\cs_new_eq:NN \__fp_int_eval_end: \scan_stop:
\cs_new_eq:NN \__fp_int_to_roman:w \tex_romannumeral:D
+\cs_new_eq:NN \__fp_sep: \tex_right:D
\cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: }
-\cs_new:Npn \__fp_use_s:n #1 { #1; }
-\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2; }
-\cs_new:Npn \__fp_use_none_until_s:w #1; { }
-\cs_new:Npn \__fp_use_i_until_s:nw #1#2; {#1}
-\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3; {#2}
-\cs_new:Npn \__fp_reverse_args:Nww #1 #2; #3; { #1 #3; #2; }
-\cs_new:Npn \__fp_rrot:www #1; #2; #3; { #2; #3; #1; }
-\cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
-\cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
+\cs_new:Npn \__fp_use_s:n #1 { #1\__fp_sep: }
+\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2\__fp_sep: }
+\cs_new:Npn \__fp_use_none_until_s:w #1\__fp_sep: { }
+\cs_new:Npn \__fp_use_i_until_s:nw #1#2\__fp_sep: {#1}
+\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3\__fp_sep: {#2}
+\cs_new:Npn \__fp_reverse_args:Nww #1 #2\__fp_sep: #3\__fp_sep:
+ { #1 #3\__fp_sep: #2\__fp_sep: }
+\cs_new:Npn \__fp_rrot:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
+ { #2\__fp_sep: #3\__fp_sep: #1\__fp_sep: }
+\cs_new:Npn \__fp_use_i:ww #1\__fp_sep: #2\__fp_sep: { #1\__fp_sep: }
+\cs_new:Npn \__fp_use_i:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { #1\__fp_sep: }
\cs_new_protected:Npn \__fp_misused:n #1
{ \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } }
\scan_new:N \s__fp
-\cs_new_protected:Npn \__fp_chk:w #1 ;
- { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } }
+\cs_new_protected:Npn \__fp_chk:w #1 \__fp_sep:
+ { \__fp_misused:n { \s__fp \__fp_chk:w #1 \__fp_sep: } }
\scan_new:N \s__fp_expr_mark
\scan_new:N \s__fp_expr_stop
\scan_new:N \s__fp_mark
@@ -15250,11 +15402,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\scan_new:N \s__fp_overflow
\scan_new:N \s__fp_division
\scan_new:N \s__fp_exact
-\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact ; }
-\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact ; }
-\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact ; }
-\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact ; }
-\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact ; }
+\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact \__fp_sep: }
\int_const:Nn \c__fp_prec_int { 16 }
\int_const:Nn \c__fp_half_prec_int { 8 }
\int_const:Nn \c__fp_block_int { 4 }
@@ -15266,12 +15418,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\s__fp \__fp_chk:w 1 0
{ \int_eval:n { \c__fp_max_exponent_int + 1 } }
- {1000} {0000} {0000} {0000} ;
+ {1000} {0000} {0000} {0000} \__fp_sep:
}
\cs_new:Npn \__fp_zero_fp:N #1
- { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow ; }
+ { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow \__fp_sep: }
\cs_new:Npn \__fp_inf_fp:N #1
- { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow ; }
+ { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow \__fp_sep: }
\cs_new:Npn \__fp_exponent:w \s__fp \__fp_chk:w #1
{
\if_meaning:w 1 #1
@@ -15290,7 +15442,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp { \__fp_use_i_until_s:nw 4 }
\s__fp_stop
}
-\cs_new:Npn \__fp_sanitize:Nw #1 #2;
+\cs_new:Npn \__fp_sanitize:Nw #1 #2\__fp_sep:
{
\if_case:w
\if_int_compare:w #2 > \c__fp_max_exponent_int 1 ~ \else:
@@ -15302,8 +15454,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\s__fp \__fp_chk:w 1 #1 {#2}
}
-\cs_new:Npn \__fp_sanitize:wN #1; #2 { \__fp_sanitize:Nw #2 #1; }
-\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3;
+\cs_new:Npn \__fp_sanitize:wN #1\__fp_sep: #2 { \__fp_sanitize:Nw #2 #1\__fp_sep: }
+\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3\__fp_sep:
{ \c_zero_fp }
\cs_new:Npn \__fp_exp_after_o:w \s__fp \__fp_chk:w #1
{
@@ -15325,52 +15477,52 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp:w \exp_end_continue_f:w #1 }
#2
}
-\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4;
+\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4\__fp_sep:
{
\exp_after:wN \s__fp
\exp_after:wN \__fp_chk:w
\exp_after:wN #2
\exp_after:wN #3
\exp_after:wN #4
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
#1
}
-\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7;
+\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7\__fp_sep:
{
\exp_after:wN \__fp_exp_after_normal:Nwwwww
\exp_after:wN #2
- \int_value:w #3 \exp_after:wN ;
- \int_value:w 1 #4 \exp_after:wN ;
- \int_value:w 1 #5 \exp_after:wN ;
- \int_value:w 1 #6 \exp_after:wN ;
- \int_value:w 1 #7 \exp_after:wN ; #1
+ \int_value:w #3 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #4 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #5 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #6 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #7 \exp_after:wN \__fp_sep: #1
}
\cs_new:Npn \__fp_exp_after_normal:Nwwwww
- #1 #2; 1 #3 ; 1 #4 ; 1 #5 ; 1 #6 ;
- { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} ; }
+ #1 #2\__fp_sep: 1 #3 \__fp_sep: 1 #4 \__fp_sep: 1 #5 \__fp_sep: 1 #6 \__fp_sep:
+ { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} \__fp_sep: }
\scan_new:N \s__fp_tuple
-\cs_new_protected:Npn \__fp_tuple_chk:w #1 ;
- { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 ; } }
+\cs_new_protected:Npn \__fp_tuple_chk:w #1 \__fp_sep:
+ { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep: } }
\tl_const:Nn \c__fp_empty_tuple_fp
- { \s__fp_tuple \__fp_tuple_chk:w { } ; }
+ { \s__fp_tuple \__fp_tuple_chk:w { } \__fp_sep: }
\cs_new:Npn \__fp_array_count:n #1
- { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} ; }
-\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 ;
+ { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} \__fp_sep: }
+\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep:
{
\int_value:w \__fp_int_eval:w 0
- \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } ;
+ \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } \__fp_sep:
\prg_break_point:
\__fp_int_eval_end:
}
-\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2;
+\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2\__fp_sep:
{ \use_none:n #1 + 1 \__fp_tuple_count_loop:Nw }
\cs_new:Npn \__fp_if_type_fp:NTwFw #1 \s__fp #2 #3 \s__fp_stop {#2}
\cs_new:Npn \__fp_array_if_all_fp:nTF #1
{
- \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } ;
+ \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point: \use_i:nn
}
-\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 ;
+\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 \__fp_sep:
{
\__fp_if_type_fp:NTwFw
#1 \__fp_array_if_all_fp_loop:w
@@ -15432,7 +15584,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_exp_after_tuple_o:w
{ \__fp_exp_after_tuple_f:nw { \exp_after:wN \exp_stop_f: } }
\cs_new:Npn \__fp_exp_after_tuple_f:nw
- #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+ #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
@@ -15440,7 +15592,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #2 \s__fp_expr_stop
\exp_after:wN }
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w #1
}
\cs_new:Npn \__fp_exp_after_array_f:w
@@ -15448,42 +15600,43 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_const:Nn \c__fp_leading_shift_int { - 5 0000 }
\int_const:Nn \c__fp_middle_shift_int { 5 0000 * 9999 }
\int_const:Nn \c__fp_trailing_shift_int { 5 0000 * 10000 }
-\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6; { + #1#2#3#4#5 ; {#6} }
+\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: {#6} }
\int_const:Nn \c__fp_big_leading_shift_int { - 15 2374 }
\int_const:Nn \c__fp_big_middle_shift_int { 15 2374 * 9999 }
\int_const:Nn \c__fp_big_trailing_shift_int { 15 2374 * 10000 }
-\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7;
- { + #1#2#3#4#5#6 ; {#7} }
+\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { + #1#2#3#4#5#6 \__fp_sep: {#7} }
\int_const:Nn \c__fp_Bigg_leading_shift_int { - 20 0000 }
\int_const:Nn \c__fp_Bigg_middle_shift_int { 20 0000 * 9999 }
\int_const:Nn \c__fp_Bigg_trailing_shift_int { 20 0000 * 10000 }
-\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7;
- { + #1#2#3#4#5#6 ; {#7} }
-\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9
- { #1 {#2#3#4#5} {#6#7#8#9} ; }
-\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9
- { #1 {#2#3#4#5#6#7#8#9} ; }
-\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6;
- { + #1 - 1 ; {#2#3#4#5} {#6} ; }
-\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6;
+\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { + #1#2#3#4#5#6 \__fp_sep: {#7} }
+\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9
+ { #1 {#2#3#4#5} {#6#7#8#9} \__fp_sep: }
+\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9
+ { #1 {#2#3#4#5#6#7#8#9} \__fp_sep: }
+\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1 - 1 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep: }
+\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
{
\if_meaning:w 2 #1
\__fp_basics_pack_high_carry:w
\fi:
- ; {#2#3#4#5} {#6}
+ \__fp_sep: {#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: ; #1
- { \fi: + 1 ; {1000} }
-\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5;
+\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: \__fp_sep: #1
+ { \fi: + 1 \__fp_sep: {1000} }
+\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5\__fp_sep:
{
\if_meaning:w 2 #1
+ 1
\fi:
\__fp_int_eval_end:
- #2#3#4; {#5} ;
+ #2#3#4\__fp_sep: {#5} \__fp_sep:
}
\cs_new:Npn \__fp_basics_pack_weird_high:NNNNNNNNw
- 1 #1#2#3#4 #5#6#7#8 #9; { ; {#1#2#3#4} {#5#6#7#8} {#9} }
+ 1 #1#2#3#4 #5#6#7#8 #9\__fp_sep: { \__fp_sep: {#1#2#3#4} {#5#6#7#8} {#9} }
\cs_new:Npn \__fp_decimate:nNnnnn #1
{
\cs:w
@@ -15497,17 +15650,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_end:
}
\cs_new:Npn \__fp_decimate_:Nnnnn #1 #2#3#4#5
- { #1 0 {#2#3} {#4#5} ; }
+ { #1 0 {#2#3} {#4#5} \__fp_sep: }
\cs_new:Npn \__fp_decimate_tiny:Nnnnn #1 #2#3#4#5
- { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 ; }
+ { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 \__fp_sep: }
\cs_new:Npn \__fp_tmp:w #1 #2 #3
{
\cs_new:cpn { __fp_decimate_ #1 :Nnnnn } ##1 ##2##3##4##5
{
\exp_after:wN ##1
\int_value:w
- \exp_after:wN \__fp_round_digit:Nw #2 ;
- \__fp_decimate_pack:nnnnnnnnnnw #3 ;
+ \exp_after:wN \__fp_round_digit:Nw #2 \__fp_sep:
+ \__fp_decimate_pack:nnnnnnnnnnw #3 \__fp_sep:
}
}
\__fp_tmp:w {i} {\use_none:nnn #50}{ 0{#2}#3{#4}#5 }
@@ -15531,18 +15684,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_decimate_pack:nnnnnnw #1 #2#3#4#5#6
{ {#1} {#2#3#4#5#6} }
\cs_new:Npn \__fp_case_use:nw #1#2 \fi: #3 \s__fp { \fi: #1 \s__fp }
-\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 ; { \fi: #1 }
-\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 ;
+\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 \__fp_sep: { \fi: #1 }
+\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 \__fp_sep:
{ \fi: \exp_after:wN #1 }
\cs_new:Npn \__fp_case_return_same_o:w #1 \fi: #2 \s__fp
{ \fi: \__fp_exp_after_o:w \s__fp }
-\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 ; #5 ;
+\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 \__fp_sep: #5 \__fp_sep:
{ \fi: \exp_after:wN #1 }
-\cs_new:Npn \__fp_case_return_i_o:ww #1 \fi: #2 \s__fp #3 ; \s__fp #4 ;
- { \fi: \__fp_exp_after_o:w \s__fp #3 ; }
-\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 ;
+\cs_new:Npn \__fp_case_return_i_o:ww
+ #1 \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4 \__fp_sep:
+ { \fi: \__fp_exp_after_o:w \s__fp #3 \__fp_sep: }
+\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 \__fp_sep:
{ \fi: \__fp_exp_after_o:w }
-\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4;
+\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4\__fp_sep:
{ TF , T , F , p }
{
\if_case:w #1 \exp_stop_f:
@@ -15561,26 +15715,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_small_int:wTF \s__fp \__fp_chk:w #1#2
{
\if_case:w #1 \exp_stop_f:
- \__fp_case_return:nw { \__fp_small_int_true:wTF 0 ; }
+ \__fp_case_return:nw { \__fp_small_int_true:wTF 0 \__fp_sep: }
\or: \exp_after:wN \__fp_small_int_normal:NnwTF
\or:
\__fp_case_return:nw
{
\exp_after:wN \__fp_small_int_true:wTF \int_value:w
- \if_meaning:w 2 #2 - \fi: 1 0000 0000 ;
+ \if_meaning:w 2 #2 - \fi: 1 0000 0000 \__fp_sep:
}
\else: \__fp_case_return:nw \use_ii:nn
\fi:
#2
}
-\cs_new:Npn \__fp_small_int_true:wTF #1; #2#3 { #2 {#1} }
-\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3;
+\cs_new:Npn \__fp_small_int_true:wTF #1\__fp_sep: #2#3 { #2 {#1} }
+\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3\__fp_sep:
{
\__fp_decimate:nNnnnn { \c__fp_prec_int - #2 }
\__fp_small_int_test:NnnwNw
#3 #1
}
-\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4; #5
+\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4\__fp_sep: #5
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_small_int_true:wTF
@@ -15590,7 +15744,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
#3
\fi:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\else:
\exp_after:wN \use_ii:nn
\fi:
@@ -15646,19 +15800,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_invalid_operation_set:N #1
{
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3; }
+ { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3\__fp_sep: }
{
#1
- \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { }
\flag_ensure_raised:N \l_fp_invalid_operation_flag
##1
}
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2; ##3; }
+ { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2\__fp_sep: ##3\__fp_sep: }
{
#1
\__fp_error:nffn { invalid-ii }
- { \fp_to_tl:n { ##2; } } { \fp_to_tl:n { ##3; } } {##1}
+ { \fp_to_tl:n { ##2\__fp_sep: } }
+ { \fp_to_tl:n { ##3\__fp_sep: } }
+ {##1}
\flag_ensure_raised:N \l_fp_invalid_operation_flag
\exp_after:wN \c_nan_fp
}
@@ -15680,19 +15836,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_division_by_zero_set:N #1
{
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3; }
+ { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3\__fp_sep: }
{
#1
- \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { }
\flag_ensure_raised:N \l_fp_division_by_zero_flag
\exp_after:wN ##1
}
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3; ##4; }
+ {
+ \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3\__fp_sep: ##4\__fp_sep:
+ }
{
#1
\__fp_error:nffn { zero-div-ii }
- { \fp_to_tl:n { ##3; } } { \fp_to_tl:n { ##4; } } {##2}
+ { \fp_to_tl:n { ##3\__fp_sep: } }
+ { \fp_to_tl:n { ##4\__fp_sep: } }
+ {##2}
\flag_ensure_raised:N \l_fp_division_by_zero_flag
\exp_after:wN ##1
}
@@ -15716,23 +15876,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_overflow_set:NnNn #1#2#3#4
{
\exp_args:Nno \use:n
- { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3; }
+ { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3\__fp_sep: }
{
#1
\__fp_error:nffn
{ flow \if_meaning:w 1 ##1 -to \fi: }
- { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3; } }
+ { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3\__fp_sep: } }
{ \token_if_eq_meaning:NNF 0 ##2 { - } #4 }
{#2}
\flag_ensure_raised:c { l_fp_#2_flag }
#3 ##2
}
}
-\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3; { }
-\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2; #3; { }
+\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3\__fp_sep: { }
+\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2\__fp_sep: #3\__fp_sep: { }
\cs_new:Npn \__fp_invalid_operation_tl_o:ff #1 #2 { }
-\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3; { }
-\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3; #4; { }
+\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3\__fp_sep: { }
+\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3\__fp_sep: #4\__fp_sep: { }
\cs_new:Npn \__fp_overflow:w { }
\cs_new:Npn \__fp_underflow:w { }
\fp_trap:nn { invalid_operation } { error }
@@ -15870,7 +16030,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\c_zero_int
}
\cs_new_eq:NN \__fp_round:NNN \__fp_round_to_nearest:NNN
-\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4;
+\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4\__fp_sep:
{
\exp_after:wN \__fp_round:NNN
\exp_after:wN #1
@@ -15884,9 +16044,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
#3
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_round_digit:Nw #1 #2;
+\cs_new:Npn \__fp_round_digit:Nw #1 #2\__fp_sep:
{
\if_int_odd:w \if_meaning:w 0 #1 1 \else:
\if_meaning:w 5 #1 1 \else:
@@ -15946,7 +16106,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\exp_after:wN \c_nan_fp
}
-\cs_new:Npn \__fp_round:Nwww #1#2 ; #3 ; \s__fp \__fp_chk:w #4#5#6 ; #7 @
+\cs_new:Npn \__fp_round:Nwww
+ #1#2 \__fp_sep: #3 \__fp_sep: \s__fp \__fp_chk:w #4#5#6 \__fp_sep: #7 @
{
\cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN
{
@@ -15959,7 +16120,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_case:w #5 \exp_stop_f: _pinf \or: \else: _ninf \fi: \fi:
:NNN
}
- #2 ; #3 ;
+ #2 \__fp_sep: #3 \__fp_sep:
}
{
\__fp_error:nnnn { num-args } { round () } { 1 } { 3 }
@@ -15983,11 +16144,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_new:Npn \__fp_round:Nww #1#2 ; #3 ;
+\cs_new:Npn \__fp_round:Nww #1#2 \__fp_sep: #3 \__fp_sep:
{
- \__fp_small_int:wTF #3; { \__fp_round:Nwn #1#2; }
+ \__fp_small_int:wTF #3\__fp_sep: { \__fp_round:Nwn #1#2\__fp_sep: }
{
- \if:w 3 \__fp_kind:w #3 ;
+ \if:w 3 \__fp_kind:w #3 \__fp_sep:
\exp_after:wN \use_i:nn
\else:
\exp_after:wN \use_ii:nn
@@ -15996,11 +16157,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_invalid_operation_tl_o:ff
{ \__fp_round_name_from_cs:N #1 }
- { \__fp_array_to_clist:n { #2; #3; } }
+ { \__fp_array_to_clist:n { #2\__fp_sep: #3\__fp_sep: } }
}
}
}
-\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4; #5
+\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: #5
{
\if_meaning:w 1 #2
\exp_after:wN \__fp_round_normal:NwNNnw
@@ -16009,14 +16170,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_exp_after_o:w
\fi:
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
-\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5;
+\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5\__fp_sep:
{
\__fp_decimate:nNnnnn { \c__fp_prec_int - #4 - #2 }
\__fp_round_normal:NnnwNNnn #5 #1 #3 {#4} {#2}
}
-\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6
+\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4\__fp_sep: #5#6
{
\exp_after:wN \__fp_round_normal:NNwNnn
\int_value:w \__fp_int_eval:w
@@ -16034,7 +16195,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\use_none:nnnnnnn #3
#1
\__fp_int_eval_end:
- 0000 0000 0000 0000 ; #6
+ 0000 0000 0000 0000 \__fp_sep: #6
}
\cs_new:Npn \__fp_round_pack:Nw #1
{ \if_meaning:w 2 #1 + 1 \fi: \__fp_int_eval_end: }
@@ -16047,14 +16208,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_round_normal_end:wwNnn
- ; #2
+ \__fp_sep: #2
}
-\cs_new:Npn \__fp_round_normal_end:wwNnn #1;#2;#3#4#5
+\cs_new:Npn \__fp_round_normal_end:wwNnn #1\__fp_sep:#2\__fp_sep:#3#4#5
{
\exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
- \__fp_sanitize:Nw #3 #4 ; #1 ;
+ \__fp_sanitize:Nw #3 #4 \__fp_sep: #1 \__fp_sep:
}
-\cs_new:Npn \__fp_round_special:NwwNnn #1#2;#3;#4#5#6
+\cs_new:Npn \__fp_round_special:NwwNnn #1#2\__fp_sep:#3\__fp_sep:#4#5#6
{
\if_meaning:w 0 #1
\__fp_case_return:nw
@@ -16065,12 +16226,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w 1
\if_meaning:w 1 #1 -#6 \else: +#5 \fi:
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_round_special_aux:Nw #1#2;
+\cs_new:Npn \__fp_round_special_aux:Nw #1#2\__fp_sep:
{
\exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
- \__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000};
+ \__fp_sanitize:Nw #1#2\__fp_sep: {1000}{0000}{0000}{0000}\__fp_sep:
}
%% File: l3fp-parse.dtx
\int_const:Nn \c__fp_prec_func_int { 16 }
@@ -16090,7 +16251,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_const:Nn \c__fp_prec_end_int { 0 }
\cs_new:Npn \__fp_parse_expand:w #1 { \exp_end_continue_f:w #1 }
\cs_new:Npn \__fp_parse_return_semicolon:w
- #1 \fi: \__fp_parse_expand:w { \fi: ; #1 }
+ #1 \fi: \__fp_parse_expand:w { \fi: \__fp_sep: #1 }
\cs_set_protected:Npn \__fp_tmp:w #1 #2 #3
{
\cs_new:cpn { __fp_parse_digits_ #1 :N } ##1
@@ -16103,14 +16264,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_expand:w
}
}
-\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 ; 7 }
-\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 ; 6 }
-\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 ; 5 }
-\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 ; 4 }
-\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 ; 3 }
-\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 ; 2 }
-\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 ; 1 }
-\cs_new:Npn \__fp_parse_digits_:N { ; ; 0 }
+\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 \__fp_sep: 7 }
+\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 \__fp_sep: 6 }
+\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 \__fp_sep: 5 }
+\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 \__fp_sep: 4 }
+\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 \__fp_sep: 3 }
+\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 \__fp_sep: 2 }
+\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 \__fp_sep: 1 }
+\cs_new:Npn \__fp_parse_digits_:N { \__fp_sep: \__fp_sep: 0 }
\cs_new:Npn \__fp_parse_one:Nw #1 #2
{
\if_catcode:w \scan_stop: \exp_not:N #2
@@ -16210,26 +16371,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_one_register_auxii:wwwNw
}
\exp_not:N \exp_after:wN { \exp_not:N \tex_the:D #1 }
- ; \exp_not:N \__fp_parse_one_register_dim:ww
- \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_mu:www
- . \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_int:www
+ \__fp_sep: \exp_not:N \__fp_parse_one_register_dim:ww
+ \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_mu:www
+ . \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_int:www
\s__fp_stop
}
\exp_args:Nno \use:nn
{ \cs_new:Npn \__fp_parse_one_register_auxii:wwwNw #1 . #2 }
- { \tl_to_str:n { pt } #3 ; #4#5 \s__fp_stop }
- { #4 #1.#2; }
+ { \tl_to_str:n { pt } #3 \__fp_sep: #4#5 \s__fp_stop }
+ { #4 #1.#2\__fp_sep: }
\exp_args:Nno \use:nn
{ \cs_new:Npn \__fp_parse_one_register_mu:www #1 }
- { \tl_to_str:n { mu } ; #2 ; }
- { \__fp_parse_one_register_dim:ww #1 ; }
-\cs_new:Npn \__fp_parse_one_register_int:www #1; #2.; #3;
+ { \tl_to_str:n { mu } \__fp_sep: #2 \__fp_sep: }
+ { \__fp_parse_one_register_dim:ww #1 \__fp_sep: }
+\cs_new:Npn \__fp_parse_one_register_int:www #1\__fp_sep: #2.\__fp_sep: #3\__fp_sep:
{ \__fp_parse:n { #1 e #3 } }
-\cs_new:Npn \__fp_parse_one_register_dim:ww #1; #2;
+\cs_new:Npn \__fp_parse_one_register_dim:ww #1\__fp_sep: #2\__fp_sep:
{
\exp_after:wN \__fp_from_dim_test:ww
\int_value:w #2 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { #1 pt } ;
+ \int_value:w \dim_to_decimal_in_sp:n { #1 pt } \__fp_sep:
}
\cs_new:Npn \__fp_parse_one_register_special:N #1
{
@@ -16262,11 +16423,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_one_register_wd:Nw
#4 \__fp_parse_expand:w e
}
-\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 ;
+\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 \__fp_sep:
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } ;
+ \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } \__fp_sep:
}
\cs_new:Npn \__fp_parse_one_digit:NN #1
{
@@ -16299,7 +16460,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_word:Nw #1#2;
+\cs_new:Npn \__fp_parse_word:Nw #1#2\__fp_sep:
{
\cs_if_exist_use:cF { __fp_parse_word_#2:N }
{
@@ -16404,7 +16565,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_parse_zero:
{
- \exp_after:wN ; \exp_after:wN 1
+ \exp_after:wN \__fp_sep: \exp_after:wN 1
\int_value:w \__fp_parse_exponent:N
}
\cs_new:Npn \__fp_parse_small:N #1
@@ -16416,7 +16577,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_digits_vii:N
\exp:w \__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
#1 #2
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
@@ -16433,7 +16594,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
#1 #2
\if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f:
@@ -16446,19 +16607,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww #1 #2 #3#4#5#6 #7; #8 ;
+\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww
+ #1 #2 #3#4#5#6 #7\__fp_sep: #8 \__fp_sep:
{
\if_meaning:w 2 #2 + 1 \fi:
- ; #8 + #1 ; {#3#4#5#6} {#7};
+ \__fp_sep: #8 + #1 \__fp_sep: {#3#4#5#6} {#7}\__fp_sep:
}
-\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6; #7;
+\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6\__fp_sep: #7\__fp_sep:
{
+ #7
\if_meaning:w 2 #1 \__fp_parse_pack_carry:w \fi:
- ; 0 {#2#3#4#5} {#6}
+ \__fp_sep: 0 {#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_parse_pack_carry:w \fi: ; 0 #1
- { \fi: + 1 ; 0 {1000} }
+\cs_new:Npn \__fp_parse_pack_carry:w \fi: \__fp_sep: 0 #1
+ { \fi: + 1 \__fp_sep: 0 {1000} }
\cs_new:Npn \__fp_parse_large:N #1
{
\exp_after:wN \__fp_parse_large_leading:wwNN
@@ -16466,7 +16628,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_digits_vii:N
\exp:w \__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
+ \c__fp_half_prec_int - #3
\exp_after:wN \__fp_parse_pack_leading:NNNNNww
@@ -16496,7 +16658,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
\if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f:
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
@@ -16551,9 +16713,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_round_after:wN #1; #2
+\cs_new:Npn \__fp_parse_round_after:wN #1\__fp_sep: #2
{
- + #2 \exp_after:wN ;
+ + #2 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w #1 + \__fp_parse_exponent:N
}
\cs_new:Npn \__fp_parse_small_round:NN #1#2
@@ -16603,7 +16765,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 ; #2 #3
+\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 \__fp_sep: #2 #3
{
+ #2
\exp_after:wN \__fp_parse_round_after:wN
@@ -16613,14 +16775,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_round_loop:N
\exp:w \exp_after:wN \__fp_parse_expand:w
\else:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp_after:wN 0
\exp_after:wN #3
\fi:
}
\cs_new:Npn \__fp_parse_exponent:Nw #1 #2 \__fp_parse_expand:w
{
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w #2 \__fp_parse_exponent:N #1
}
\cs_new:Npn \__fp_parse_exponent:N #1
@@ -16638,7 +16800,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\if_int_compare:w \if_catcode:w \scan_stop: \exp_not:N #2
0 \else: `#2 \fi: > `9 \exp_stop_f:
- 0 \exp_after:wN ; \exp_after:wN #1
+ 0 \exp_after:wN \__fp_sep: \exp_after:wN #1
\else:
\exp_after:wN \__fp_parse_exponent_sign:N
\fi:
@@ -16664,7 +16826,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_exponent_keep:NTF #1
{ \__fp_parse_return_semicolon:w #1 }
{
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w
}
\fi:
@@ -16721,12 +16883,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_parse_apply_unary:NNNwN #1#2#3#4@#5
{
- \__fp_parse_apply_unary_chk:NwNw #4 @ ; . \s__fp_stop
+ \__fp_parse_apply_unary_chk:NwNw #4 @ \__fp_sep: . \s__fp_stop
\__fp_parse_apply_unary_type:NNN
#3 #2 #4 @
\exp:w \exp_end_continue_f:w #5 #1
}
-\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 ; #3#4 \s__fp_stop
+\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 \__fp_sep: #3#4 \s__fp_stop
{
\if_meaning:w @ #3 \else:
\token_if_eq_meaning:NNTF . #3
@@ -16840,7 +17002,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:cpn { __fp_parse_word_#1:N }
{
\__fp_exp_after_f:nw { \__fp_parse_infix:NN }
- \s__fp \__fp_chk:w 10 #2 ;
+ \s__fp \__fp_chk:w 10 #2 \__fp_sep:
}
}
\__fp_tmp:w {pt} { {1} {1000} {0000} {0000} {0000} }
@@ -16860,7 +17022,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN ;
+ \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w \__fp_parse_infix:NN
}
}
@@ -16949,7 +17111,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2
\__fp_invalid_operation_o:Nww #1
}
-\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 ; #4
+\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 \__fp_sep: #4
{
\exp_after:wN \__fp_parse_apply_binary_chk:NN
\cs:w
@@ -16960,9 +17122,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
_o:ww
\cs_end:
#1
- #2 #3 ; #4
+ #2 #3 \__fp_sep: #4
}
-\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 ; #4#5 ;
+\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 \__fp_sep: #4#5 \__fp_sep:
{
\exp_after:wN \__fp_parse_apply_binary_chk:NN
\cs:w
@@ -16973,12 +17135,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
_o:ww
\cs_end:
#1
- #4 #5 ; #2 #3 ;
+ #4 #5 \__fp_sep: #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2;
+\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2\__fp_sep:
{
\__fp_exp_after_f:nw { \__fp_parse_infix:NN #1 }
- #2;
+ #2\__fp_sep:
}
\cs_new:Npn \__fp_parse_infix:NN #1 #2
{
@@ -17102,7 +17264,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\exp:w \exp_end_continue_f:w
\__fp_exp_after_tuple_f:nw { }
- \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } ;
+ \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } \__fp_sep:
#5 #1
}
\cs_set_protected:Npn \__fp_tmp:w #1#2#3#4
@@ -17287,14 +17449,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1 #8 #9
}
-\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3; #4
+\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3\__fp_sep: #4
{
\if_meaning:w \__fp_parse_compare:NNNNNNN #4
\exp_after:wN \__fp_parse_continue_compare:NNwNN
\exp_after:wN #1
\exp_after:wN #2
\exp:w \exp_end_continue_f:w
- \__fp_exp_after_o:w #3;
+ \__fp_exp_after_o:w #3\__fp_sep:
\exp:w \exp_end_continue_f:w
\else:
\exp_after:wN \__fp_parse_continue:NwN
@@ -17314,7 +17476,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_error:nffn { bad-args }
{#1}
- { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} ; } }
+ { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} \__fp_sep: } }
{ }
\exp_after:wN \c_nan_fp
}
@@ -17329,11 +17491,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_error:nffn { bad-args }
{#2}
- { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} ; } }
+ { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} \__fp_sep: } }
{ }
\exp_after:wN \c_nan_fp
}
-\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3; #4
+\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3\__fp_sep: #4
{
\__fp_if_type_fp:NTwFw
#4 { }
@@ -17345,52 +17507,52 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_function_one_two_error_o:w
}
\s__fp_stop
- \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3; #4
+ \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3\__fp_sep: #4
}
-\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3; #4; #5
+\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3\__fp_sep: #4\__fp_sep: #5
{
\if_meaning:w @ #5 \else:
\exp_after:wN \__fp_parse_function_one_two_error_o:w
\fi:
- \use_ii:nn {#1} { \use_none:n #2 } #3; #4; #5
+ \use_ii:nn {#1} { \use_none:n #2 } #3\__fp_sep: #4\__fp_sep: #5
}
-\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
\exp_after:wN {
\exp:w \exp_end_continue_f:w
\__fp_tuple_map_loop_o:nw {#1} #2
- { \s__fp \prg_break: } ;
+ { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
- \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN } \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 ;
+\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 \__fp_sep:
{
\use_none:n #2
- #1 #2 #3 ;
+ #1 #2 #3 \__fp_sep:
\exp:w \exp_end_continue_f:w
\__fp_tuple_map_loop_o:nw {#1}
}
\cs_new:Npn \__fp_tuple_mapthread_o:nww #1
- \s__fp_tuple \__fp_tuple_chk:w #2 ;
- \s__fp_tuple \__fp_tuple_chk:w #3 ;
+ \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w #3 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
\exp_after:wN {
\exp:w \exp_end_continue_f:w
\__fp_tuple_mapthread_loop_o:nw {#1}
- #2 { \s__fp \prg_break: } ; @
- #3 { \s__fp \prg_break: } ;
+ #2 { \s__fp \prg_break: } \__fp_sep: @
+ #3 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
- \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN } \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 ; #4 @ #5#6 ;
+\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 \__fp_sep: #4 @ #5#6 \__fp_sep:
{
\use_none:n #2
\use_none:n #5
- #1 #2 #3 ; #5 #6 ;
+ #1 #2 #3 \__fp_sep: #5 #6 \__fp_sep:
\exp:w \exp_end_continue_f:w
\__fp_tuple_mapthread_loop_o:nw {#1} #4 @
}
@@ -17437,8 +17599,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_new_protected:Npn \fp_const:Nn #1#2
{ \tl_const:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
-\cs_generate_variant:Nn \fp_set:Nn {c}
-\cs_generate_variant:Nn \fp_gset:Nn {c}
+\cs_generate_variant:Nn \fp_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \fp_gset:Nn { NV , c , cV }
\cs_generate_variant:Nn \fp_const:Nn {c}
\cs_new_eq:NN \fp_set_eq:NN \tl_set_eq:NN
\cs_new_eq:NN \fp_gset_eq:NN \tl_gset_eq:NN
@@ -17478,9 +17640,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_show_validate:nn { #1 }
{
- \s__fp \__fp_chk:w ??? ;~ or \iow_newline:
- \s__fp_tuple \__fp_tuple_chk:w ? ;~ or \iow_newline:
- \s__fp_symbolic \__fp_symbolic_chk:w ? , ? ;
+ \s__fp \__fp_chk:w ??? \__fp_sep: or \iow_newline:
+ \s__fp_tuple \__fp_tuple_chk:w ? \__fp_sep: or \iow_newline:
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ? \__fp_sep:
}
}
\cs_new:Npn \__fp_show_validate_aux:n #1
@@ -17496,46 +17658,49 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \s__fp }
{
\__fp_show_validate:w #1 \s__fp
- \__fp_chk:w ??? ; \s__fp_stop
+ \__fp_chk:w ??? \__fp_sep: \s__fp_stop
}
{ \s__fp_tuple }
{
\__fp_tuple_show_validate:w #1
- \s__fp_tuple \__fp_tuple_chk:w ?? ; \s__fp_stop
+ \s__fp_tuple \__fp_tuple_chk:w ?? \__fp_sep: \s__fp_stop
}
{ \s__fp_symbolic }
{
\__fp_symbolic_show_validate:w #1
- \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? ; \s__fp_stop
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? \__fp_sep: \s__fp_stop
}
}
{ #2 }
}
}
\cs_new:Npn \__fp_show_validate:w
- #1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop
+ #1 \s__fp \__fp_chk:w #2#3#4#5 \__fp_sep: #6 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
{
\token_if_eq_meaning:NNTF #2 1
- { \s__fp \__fp_chk:w #2 #3 { #4 } #5 ; }
- { \s__fp \__fp_chk:w #2 #3 #4 #5 ; }
+ { \s__fp \__fp_chk:w #2 #3 { #4 } #5 \__fp_sep: }
+ { \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep: }
\__fp_show_validate_aux:n { #6 }
}
}
\cs_new:Npn \__fp_tuple_show_validate:w
- #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 ; #4 \s__fp_stop
+ #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 \__fp_sep: #4 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
- { \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } } ; }
+ {
+ \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } }
+ \__fp_sep:
+ }
}
\cs_new:Npn \__fp_symbolic_show_validate:w
- #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 ; #5 \s__fp_stop
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 \__fp_sep: #5 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
{
\s__fp_symbolic \__fp_symbolic_chk:w \exp_not:n { #2 } ,
- { \__fp_show_validate_aux:n { #3 } };
+ { \__fp_show_validate_aux:n { #3 } }\__fp_sep:
\__fp_show_validate_aux:n { #5 }
}
}
@@ -17571,7 +17736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_compare_return:w
\exp:w \exp_end_continue_f:w \__fp_parse:n {#1}
}
-\cs_new:Npn \__fp_compare_return:w #1#2#3;
+\cs_new:Npn \__fp_compare_return:w #1#2#3\__fp_sep:
{
\if_charcode:w 0
\__fp_if_type_fp:NTwFw
@@ -17593,12 +17758,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
-\cs_new:Npn \__fp_compare_aux:wn #1; #2
+\cs_new:Npn \__fp_compare_aux:wn #1\__fp_sep: #2
{
\exp_after:wN \__fp_compare_back_any:ww
- \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1;
+ \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1\__fp_sep:
}
-\cs_new:Npn \__fp_compare_back:ww #1#2; #3#4;
+\cs_new:Npn \__fp_compare_back:ww #1#2\__fp_sep: #3#4\__fp_sep:
{
\cs:w
__fp
@@ -17607,9 +17772,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_type_from_scan:N #3
:ww
\cs_end:
- #1#2; #3#4;
+ #1#2\__fp_sep: #3#4\__fp_sep:
}
-\cs_new:Npn \__fp_compare_back_any:ww #1#2; #3
+\cs_new:Npn \__fp_compare_back_any:ww #1#2\__fp_sep: #3
{
\__fp_if_type_fp:NTwFw
#1 { \__fp_if_type_fp:NTwFw #3 \use_i:nn \s__fp \use_ii:nn \s__fp_stop }
@@ -17624,11 +17789,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
:ww
\cs_end:
}
- #1#2 ; #3
+ #1#2 \__fp_sep: #3
}
\cs_new:Npn \__fp_bcmp:ww
- \s__fp \__fp_chk:w #1 #2 #3;
- \s__fp \__fp_chk:w #4 #5 #6;
+ \s__fp \__fp_chk:w #1 #2 #3\__fp_sep:
+ \s__fp \__fp_chk:w #4 #5 #6\__fp_sep:
{
\int_value:w
\if_meaning:w 3 #1 \exp_after:wN \__fp_compare_nan:w \fi:
@@ -17637,7 +17802,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_meaning:w #2 #5
\if_meaning:w #1 #4
\if_meaning:w 1 #1
- \__fp_compare_npos:nwnw #6; #3;
+ \__fp_compare_npos:nwnw #6\__fp_sep: #3\__fp_sep:
\else:
0
\fi:
@@ -17654,36 +17819,36 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_stop_f:
}
\cs_new:Npn \__fp_compare_nan:w #1 \fi: \exp_stop_f: { 2 \exp_stop_f: }
-\cs_new:Npn \__fp_compare_back_tuple:ww #1; #2; { 2 }
-\cs_new:Npn \__fp_tuple_compare_back:ww #1; #2; { 2 }
+\cs_new:Npn \__fp_compare_back_tuple:ww #1\__fp_sep: #2\__fp_sep: { 2 }
+\cs_new:Npn \__fp_tuple_compare_back:ww #1\__fp_sep: #2\__fp_sep: { 2 }
\cs_new:Npn \__fp_tuple_compare_back_tuple:ww
- \s__fp_tuple \__fp_tuple_chk:w #1;
- \s__fp_tuple \__fp_tuple_chk:w #2;
+ \s__fp_tuple \__fp_tuple_chk:w #1\__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w #2\__fp_sep:
{
\int_compare:nNnTF { \__fp_array_count:n {#1} } =
{ \__fp_array_count:n {#2} }
{
\int_value:w 0
\__fp_tuple_compare_back_loop:w
- #1 { \s__fp \prg_break: } ; @
- #2 { \s__fp \prg_break: } ;
+ #1 { \s__fp \prg_break: } \__fp_sep: @
+ #2 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
\exp_stop_f:
}
{ 2 }
}
-\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 ; #3 @ #4#5 ;
+\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 \__fp_sep: #3 @ #4#5 \__fp_sep:
{
\use_none:n #1
\use_none:n #4
\if_int_compare:w
- \__fp_compare_back_any:ww #1 #2 ; #4 #5 ; = \c_zero_int
+ \__fp_compare_back_any:ww #1 #2 \__fp_sep: #4 #5 \__fp_sep: = \c_zero_int
\else:
2 \exp_after:wN \prg_break:
\fi:
\__fp_tuple_compare_back_loop:w #3 @
}
-\cs_new:Npn \__fp_compare_npos:nwnw #1#2; #3#4;
+\cs_new:Npn \__fp_compare_npos:nwnw #1#2\__fp_sep: #3#4\__fp_sep:
{
\if_int_compare:w #1 = #3 \exp_stop_f:
\__fp_compare_significand:nnnnnnnn #2 #4
@@ -17767,20 +17932,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w \exp_end_continue_f:w \__fp_parse:n {#3}
}
\cs_generate_variant:Nn \fp_step_function:nnnN { nnnc }
-\cs_new:Npn \__fp_step:wwwN #1#2; #3#4; #5#6; #7
+\cs_new:Npn \__fp_step:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7
{
\__fp_if_type_fp:NTwFw #1 { } \s__fp \prg_break: \s__fp_stop
\__fp_if_type_fp:NTwFw #3 { } \s__fp \prg_break: \s__fp_stop
\__fp_if_type_fp:NTwFw #5 { } \s__fp \prg_break: \s__fp_stop
- \use_i:nnnn { \__fp_step_fp:wwwN #1#2; #3#4; #5#6; #7 }
+ \use_i:nnnn
+ { \__fp_step_fp:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7 }
\prg_break_point:
\use:n
{
- \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 ; } }
- { \fp_to_tl:n { #3#4 ; } } { \fp_to_tl:n { #5#6 ; } }
+ \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 \__fp_sep: } }
+ { \fp_to_tl:n { #3#4 \__fp_sep: } } { \fp_to_tl:n { #5#6 \__fp_sep: } }
}
}
-\cs_new:Npn \__fp_step_fp:wwwN #1 ; \s__fp \__fp_chk:w #2#3#4 ; #5; #6
+\cs_new:Npn \__fp_step_fp:wwwN
+ #1 \__fp_sep: \s__fp \__fp_chk:w #2#3#4 \__fp_sep: #5\__fp_sep: #6
{
\token_if_eq_meaning:NNTF #2 1
{
@@ -17796,11 +17963,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{
\__fp_error:nnfn { bad-step } { }
- { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 ; } } {#6}
+ { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: } } {#6}
}
\use_none:nnnnn
}
- { #1 ; } { \c_nan_fp } { \s__fp \__fp_chk:w #2#3#4 ; } { #5 ; } #6
+ { #1 \__fp_sep: }
+ { \c_nan_fp }
+ { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: }
+ { #5 \__fp_sep: }
+ #6
}
\cs_new:Npn \__fp_step:NnnnnN #1#2#3#4#5#6
{
@@ -17864,11 +18035,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_minmax_loop:Nww \exp_after:wN -
\fi:
#2
- \s__fp \__fp_chk:w 2 #1 \s__fp_exact ;
- \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } ;
+ \s__fp \__fp_chk:w 2 #1 \s__fp_exact \__fp_sep:
+ \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } \__fp_sep:
}
\cs_new:Npn \__fp_minmax_loop:Nww
- #1 \s__fp \__fp_chk:w #2#3; \s__fp \__fp_chk:w #4#5;
+ #1 \s__fp \__fp_chk:w #2#3\__fp_sep: \s__fp \__fp_chk:w #4#5\__fp_sep:
{
\if_meaning:w 3 #4
\if_meaning:w 3 #2
@@ -17879,8 +18050,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\if_int_compare:w
\__fp_compare_back:ww
- \s__fp \__fp_chk:w #4#5;
- \s__fp \__fp_chk:w #2#3;
+ \s__fp \__fp_chk:w #4#5\__fp_sep:
+ \s__fp \__fp_chk:w #2#3\__fp_sep:
= #1 1 \exp_stop_f:
\__fp_minmax_auxii:ww
\else:
@@ -17888,16 +18059,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
\__fp_minmax_loop:Nww #1
- \s__fp \__fp_chk:w #2#3;
- \s__fp \__fp_chk:w #4#5;
+ \s__fp \__fp_chk:w #2#3\__fp_sep:
+ \s__fp \__fp_chk:w #4#5\__fp_sep:
}
-\cs_new:Npn \__fp_minmax_auxi:ww #1 \fi: \fi: #2 \s__fp #3 ; \s__fp #4;
- { \fi: \fi: #2 \s__fp #3 ; }
-\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 ;
+\cs_new:Npn \__fp_minmax_auxi:ww
+ #1 \fi: \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4\__fp_sep:
+ { \fi: \fi: #2 \s__fp #3 \__fp_sep: }
+\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 \__fp_sep:
{ \fi: \fi: #2 }
-\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3; #4;
- { \fi: \__fp_exp_after_o:w \s__fp #3; }
-\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3\__fp_sep: #4\__fp_sep:
+ { \fi: \__fp_exp_after_o:w \s__fp #3\__fp_sep: }
+\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_meaning:w 0 #2
\exp_after:wN \exp_after:wN \exp_after:wN \c_one_fp
@@ -17909,30 +18081,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_begin:
\char_set_catcode_letter:N &
\char_set_catcode_letter:N |
- \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3;
+ \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep:
{
\if_meaning:w 0 #2 #1
- \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3;
+ \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep:
\fi:
\__fp_exp_after_o:w
}
- \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3;
+ \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep:
{
\if_meaning:w 0 #2 #1
- \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3;
+ \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep:
\fi:
\__fp_exp_after_tuple_o:w
}
- \cs_new:Npn \__fp_tuple_&_o:ww #1; { \__fp_exp_after_o:w }
- \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1; { \__fp_exp_after_tuple_o:w }
+ \cs_new:Npn \__fp_tuple_&_o:ww #1\__fp_sep: { \__fp_exp_after_o:w }
+ \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1\__fp_sep: { \__fp_exp_after_tuple_o:w }
\cs_new:Npn \__fp_|_o:ww { \__fp_&_o:ww \else: }
\cs_new:Npn \__fp_|_tuple_o:ww { \__fp_&_tuple_o:ww \else: }
- \cs_new:Npn \__fp_tuple_|_o:ww #1; #2; { \__fp_exp_after_tuple_o:w #1; }
- \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1; #2;
- { \__fp_exp_after_tuple_o:w #1; }
+ \cs_new:Npn \__fp_tuple_|_o:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_after_tuple_o:w #1\__fp_sep: }
+ \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_after_tuple_o:w #1\__fp_sep: }
\group_end:
-\cs_new:Npn \__fp_and_return:wNw #1; \fi: #2;
- { \fi: \__fp_exp_after_o:w #1; }
+\cs_new:Npn \__fp_and_return:wNw #1\__fp_sep: \fi: #2\__fp_sep:
+ { \fi: \__fp_exp_after_o:w #1\__fp_sep: }
\cs_new:Npn \__fp_ternary:NwwN #1 #2#3@ #4@ #5
{
\if_meaning:w \__fp_parse_infix_::N #5
@@ -17993,7 +18166,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:n { \s__fp \__fp_neg_sign:N }
}
\cs_new:cpn { __fp_+_o:ww }
- \s__fp #1 \__fp_chk:w #2 #3 ; \s__fp \__fp_chk:w #4 #5
+ \s__fp #1 \__fp_chk:w #2 #3 \__fp_sep: \s__fp \__fp_chk:w #4 #5
{
\if_case:w
\if_meaning:w #2 #4
@@ -18013,10 +18186,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: \exp_after:wN \__fp_add_return_ii_o:Nww \int_value:w
\fi:
#1 #5
- \s__fp \__fp_chk:w #2 #3 ;
+ \s__fp \__fp_chk:w #2 #3 \__fp_sep:
\s__fp \__fp_chk:w #4 #5
}
-\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 ; \s__fp \__fp_chk:w #3 #4
+\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 \__fp_sep: \s__fp \__fp_chk:w #3 #4
{ \__fp_exp_after_o:w \s__fp \__fp_chk:w #3 #1 }
\cs_new:Npn \__fp_add_zeros_o:Nww #1 \s__fp \__fp_chk:w 0 #2
{
@@ -18029,7 +18202,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w 0 #2
}
\cs_new:Npn \__fp_add_inf_o:Nww
- #1 \s__fp \__fp_chk:w 2 #2 #3; \s__fp \__fp_chk:w 2 #4
+ #1 \s__fp \__fp_chk:w 2 #2 #3\__fp_sep: \s__fp \__fp_chk:w 2 #4
{
\if_meaning:w #1 #2
\__fp_case_return_i_o:ww
@@ -18040,7 +18213,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \token_if_eq_meaning:NNTF #1 #4 + - }
}
\fi:
- \s__fp \__fp_chk:w 2 #2 #3;
+ \s__fp \__fp_chk:w 2 #2 #3\__fp_sep:
\s__fp \__fp_chk:w 2 #4
}
\cs_new:Npn \__fp_add_normal_o:Nww #1 \s__fp \__fp_chk:w 1 #2
@@ -18052,7 +18225,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#2
}
-\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 ; \s__fp \__fp_chk:w 1 #4 #5
+\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 \__fp_sep: \s__fp \__fp_chk:w 1 #4 #5
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18064,9 +18237,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#5
\exp_after:wN \__fp_add_big_ii_o:wNww \int_value:w
\fi:
- \__fp_int_eval:w #5 - #2 ; #1 #3;
+ \__fp_int_eval:w #5 - #2 \__fp_sep: #1 #3\__fp_sep:
}
-\cs_new:Npn \__fp_add_big_i_o:wNww #1; #2 #3; #4;
+\cs_new:Npn \__fp_add_big_i_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep:
{
\__fp_decimate:nNnnnn {#1}
\__fp_add_significand_o:NnnwnnnnN
@@ -18074,7 +18247,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#3
#2
}
-\cs_new:Npn \__fp_add_big_ii_o:wNww #1; #2 #3; #4;
+\cs_new:Npn \__fp_add_big_ii_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep:
{
\__fp_decimate:nNnnnn {#1}
\__fp_add_significand_o:NnnwnnnnN
@@ -18082,19 +18255,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
#4
#2
}
-\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8
+\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8
{
\exp_after:wN \__fp_add_significand_test_o:N
\int_value:w \__fp_int_eval:w 1#5#6 + #2
\exp_after:wN \__fp_add_significand_pack:NNNNNNN
- \int_value:w \__fp_int_eval:w 1#7#8 + #3 ; #1
+ \int_value:w \__fp_int_eval:w 1#7#8 + #3 \__fp_sep: #1
}
\cs_new:Npn \__fp_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7
{
\if_meaning:w 2 #1
+ 1
\fi:
- ; #2 #3 #4 #5 #6 #7 ;
+ \__fp_sep: #2 #3 #4 #5 #6 #7 \__fp_sep:
}
\cs_new:Npn \__fp_add_significand_test_o:N #1
{
@@ -18105,17 +18278,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\cs_new:Npn \__fp_add_significand_no_carry_o:wwwNN
- #1; #2; #3#4 ; #5#6
+ #1\__fp_sep: #2\__fp_sep: #3#4 \__fp_sep: #5#6
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w 1 #2 #3#4
+ \__fp_round:NNN #6 #4 #5
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_add_significand_carry_o:wwwNN
- #1; #2; #3#4; #5#6
+ #1\__fp_sep: #2\__fp_sep: #3#4\__fp_sep: #5#6
{
+ 1
\exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw
@@ -18125,28 +18298,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_round:NNN
\exp_after:wN #6
\exp_after:wN #3
- \int_value:w \__fp_round_digit:Nw #4 #5 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #4 #5 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sub_npos_o:NnwNnw #1#2#3; \s__fp \__fp_chk:w 1 #4#5#6;
+\cs_new:Npn \__fp_sub_npos_o:NnwNnw
+ #1#2#3\__fp_sep: \s__fp \__fp_chk:w 1 #4#5#6\__fp_sep:
{
- \if_case:w \__fp_compare_npos:nwnw {#2} #3; {#5} #6; \exp_stop_f:
+ \if_case:w
+ \__fp_compare_npos:nwnw {#2} #3\__fp_sep: {#5} #6\__fp_sep: \exp_stop_f:
\exp_after:wN \__fp_sub_eq_o:Nnwnw
\or:
\exp_after:wN \__fp_sub_npos_i_o:Nnwnw
\else:
\exp_after:wN \__fp_sub_npos_ii_o:Nnwnw
\fi:
- #1 {#2} #3; {#5} #6;
+ #1 {#2} #3\__fp_sep: {#5} #6\__fp_sep:
}
-\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2; #3; { \exp_after:wN \c_zero_fp }
-\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2; #3;
+\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2\__fp_sep: #3\__fp_sep:
+ { \exp_after:wN \c_zero_fp }
+\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_sub_npos_i_o:Nnwnw
\int_value:w \__fp_neg_sign:N #1
- #3; #2;
+ #3\__fp_sep: #2\__fp_sep:
}
-\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3; #4#5;
+\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3\__fp_sep: #4#5\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18168,42 +18344,43 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sub_back_near_after:wNNNNw
\int_value:w \__fp_int_eval:w 10#5#6 - #1#2 - 11
\exp_after:wN \__fp_sub_back_near_pack:NNNNNNw
- \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 ;
- { + #1#2 ; {#3#4#5#6} {#7} ; }
-\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 ;
+\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 \__fp_sep:
+ { + #1#2 \__fp_sep: {#3#4#5#6} {#7} \__fp_sep: }
+\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 \__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_sub_back_shift:wnnnn
\fi:
- ; {#1#2#3#4} {#5}
+ \__fp_sep: {#1#2#3#4} {#5}
}
-\cs_new:Npn \__fp_sub_back_shift:wnnnn ; #1#2
+\cs_new:Npn \__fp_sub_back_shift:wnnnn \__fp_sep: #1#2
{
\exp_after:wN \__fp_sub_back_shift_ii:ww
- \int_value:w #1 #2 0 ;
+ \int_value:w #1 #2 0 \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 ; #2#3 ;
+\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 \__fp_sep: #2#3 \__fp_sep:
{
\if_meaning:w @ #1 @
- 7
- \exp_after:wN \use_i:nnn
\exp_after:wN \__fp_sub_back_shift_iii:NNNNNNNNw
- \int_value:w #2#3 0 ~ 123456789;
+ \int_value:w #2#3 0 ~ 123456789\__fp_sep:
\else:
- - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789;
+ - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789\__fp_sep:
\fi:
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_sub_back_shift_iv:nnnnw
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w
- #1 ~ #2#3 0 ~ 0000 0000 0000 000 ;
+ #1 ~ #2#3 0 ~ 0000 0000 0000 000 \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9; {#8}
-\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 ; #2 ; { ; #1 ; }
-\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8
+\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9\__fp_sep: {#8}
+\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 \__fp_sep: #2 \__fp_sep:
+ { \__fp_sep: #1 \__fp_sep: }
+\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8
{
\if_case:w
\if_int_compare:w 1 #2 = #5#6 \use_i:nnnn #7 \exp_stop_f:
@@ -18220,9 +18397,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \exp_after:wN \__fp_sub_back_very_far_o:wwwwNN
\else: \exp_after:wN \__fp_sub_back_not_far_o:wwwwNN
\fi:
- #2 ~ #3 ; #5 #6 ~ #7 #8 ; #1
+ #2 ~ #3 \__fp_sep: #5 #6 ~ #7 #8 \__fp_sep: #1
}
-\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1; #2; #3#4
+\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1\__fp_sep: #2\__fp_sep: #3#4
{
\exp_after:wN \__fp_sub_back_quite_far_ii:NN
\exp_after:wN #3
@@ -18235,10 +18412,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \use_ii:nn
\fi:
- { ; {1000} {0000} {0000} {0000} ; }
- { - 1 ; {9999} {9999} {9999} {9999} ; }
+ { \__fp_sep: {1000} {0000} {0000} {0000} \__fp_sep: }
+ { - 1 \__fp_sep: {9999} {9999} {9999} {9999} \__fp_sep: }
}
-\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2; #3 ~ #4; #5#6
+\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2\__fp_sep: #3 ~ #4\__fp_sep: #5#6
{
- 1
\exp_after:wN \__fp_sub_back_near_after:wNNNNw
@@ -18248,16 +18425,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
- \exp_after:wN \__fp_round_neg:NNN
\exp_after:wN #6
\use_none:nnnnnnn #2 #5
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_sub_back_very_far_o:wwwwNN #1#2#3#4#5#6#7
{
\__fp_pack_eight:wNNNNNNNN
\__fp_sub_back_very_far_ii_o:nnNwwNN
{ 0 #1#2#3 #4#5#6#7 }
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7
+\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN
+ #1#2 \__fp_sep: #3 \__fp_sep: #4 ~ #5\__fp_sep: #6#7
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1#4 - #1 - 1
@@ -18268,8 +18446,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w
\if_int_odd:w \__fp_int_eval:w #5 - #2 \__fp_int_eval_end:
1 \else: 2 \fi:
- \int_value:w \__fp_round_digit:Nw #3 #6 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #3 #6 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
\cs_new:cpn { __fp_*_o:ww }
{
@@ -18280,7 +18458,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ }
}
\cs_new:Npn \__fp_mul_cases_o:NnNnww
- #1#2#3#4 \s__fp \__fp_chk:w #5#6#7; \s__fp \__fp_chk:w #8#9
+ #1#2#3#4 \s__fp \__fp_chk:w #5#6#7\__fp_sep: \s__fp \__fp_chk:w #8#9
{
\if_case:w \__fp_int_eval:w
\if_int_compare:w #5 #8 = 11 ~
@@ -18314,11 +18492,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_o:Nww \c_minus_inf_fp
#4
\fi:
- \s__fp \__fp_chk:w #5 #6 #7;
+ \s__fp \__fp_chk:w #5 #6 #7\__fp_sep:
\s__fp \__fp_chk:w #8 #9
}
\cs_new:Npn \__fp_mul_npos_o:Nww
- #1 \s__fp \__fp_chk:w #2 #3 #4 #5 ; \s__fp \__fp_chk:w #6 #7 #8 #9 ;
+ #1 \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep:
+ \s__fp \__fp_chk:w #6 #7 #8 #9 \__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18344,13 +18523,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_mul_significand_drop:NNNNNw
\int_value:w \__fp_int_eval:w 99990000 + #3*#9 + #4*#8 +
\exp_after:wN \__fp_mul_significand_drop:NNNNNw
- \int_value:w \__fp_int_eval:w 100000000 + #4*#9 ;
- ; \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 100000000 + #4*#9 \__fp_sep:
+ \__fp_sep: \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6;
- { #1#2#3#4#5 ; + #6 }
-\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6;
- { #1#2#3#4#5 ; #6 ; }
+\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6\__fp_sep:
+ { #1#2#3#4#5 \__fp_sep: + #6 }
+\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6\__fp_sep:
+ { #1#2#3#4#5 \__fp_sep: #6 \__fp_sep: }
\cs_new:Npn \__fp_mul_significand_test_f:NNN #1 #2 #3
{
\if_meaning:w 0 #3
@@ -18360,7 +18539,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1 #3
}
-\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN #1 #2; #3; #4#5#6#7; +
+\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN
+ #1 #2\__fp_sep: #3\__fp_sep: #4#5#6#7\__fp_sep: +
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1#2
@@ -18371,7 +18551,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #7
\int_value:w \__fp_round_digit:Nw
}
-\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN #1 #2#3; #4#5; #6; + #7
+\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN
+ #1 #2#3\__fp_sep: #4#5\__fp_sep: #6\__fp_sep: + #7
{
- 1
\exp_after:wN \__fp_basics_pack_high:NNNNNw
@@ -18399,25 +18580,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_new:Npn \__fp_div_npos_o:Nww
- #1 \s__fp \__fp_chk:w 1 #2 #3 #4 ; \s__fp \__fp_chk:w 1 #5 #6 #7#8#9;
+ #1 \s__fp \__fp_chk:w 1 #2 #3 #4 \__fp_sep:
+ \s__fp \__fp_chk:w 1 #5 #6 #7#8#9\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
\int_value:w \__fp_int_eval:w
#3 - #6
\exp_after:wN \__fp_div_significand_i_o:wnnw
- \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 ;
+ \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 \__fp_sep:
#4
- {#7}{#8}#9 ;
+ {#7}{#8}#9 \__fp_sep:
#1
}
-\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 ; #2#3 #4 ;
+\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 \__fp_sep: #2#3 #4 \__fp_sep:
{
\exp_after:wN \__fp_div_significand_test_o:w
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ;
- #2 #3 ;
+ \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 \__fp_sep:
+ #2 #3 \__fp_sep:
#4
{ \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 }
@@ -18433,10 +18615,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\cs_new:Npn \__fp_div_significand_calc_i:wwnnnnnnn
- #1; #2;#3#4 #5#6#7#8 #9
+ #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9
{
1 1 #1
- #9 \exp_after:wN ;
+ #9 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int
+ #2 - #1 * #5 - #5#60
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
@@ -18447,14 +18629,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ #4 - #1 * #7 - #80
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int
- - #1 * #8 ;
+ - #1 * #8 \__fp_sep:
{#5}{#6}{#7}{#8}
}
\cs_new:Npn \__fp_div_significand_calc_ii:wwnnnnnnn
- #1; #2;#3#4 #5#6#7#8 #9
+ #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9
{
1 0 #1
- #9 \exp_after:wN ;
+ #9 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int
+ #2 - #1 * #5
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
@@ -18465,25 +18647,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ #4 - #1 * #7
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int
- - #1 * #8 ;
+ - #1 * #8 \__fp_sep:
{#5}{#6}{#7}{#8}
}
-\cs_new:Npn \__fp_div_significand_ii:wwn #1; #2;#3
+\cs_new:Npn \__fp_div_significand_ii:wwn #1\__fp_sep: #2\__fp_sep:#3
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ;
+ \int_value:w \__fp_int_eval:w
+ 999999 + #2 #3 0 / #1 \__fp_sep: #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1; #2;#3#4#5 #6#7
+\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7
{
0
\exp_after:wN \__fp_div_significand_iv:wwnnnnnnn
- \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 ; % <- P
- #2 ; {#3} {#4} {#5}
+ \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 \__fp_sep: % <- P
+ #2 \__fp_sep: {#3} {#4} {#5}
{#6} {#7}
}
-\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn #1; #2;#3#4#5 #6#7#8#9
+\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn
+ #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9
{
+ 5 * #1
\exp_after:wN \__fp_div_significand_vi:Nw
@@ -18491,19 +18675,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_div_significand_v:NN
\int_value:w \__fp_int_eval:w 499950 + 2*#4 - #1*#8 +
\exp_after:wN \__fp_div_significand_v:NN
- \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 ;
+ \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 \__fp_sep:
}
\cs_new:Npn \__fp_div_significand_v:NN #1#2 { #1#2 \__fp_int_eval_end: + }
-\cs_new:Npn \__fp_div_significand_vi:Nw #1#2;
+\cs_new:Npn \__fp_div_significand_vi:Nw #1#2\__fp_sep:
{
\if_meaning:w 0 #1
\if_int_compare:w \__fp_int_eval:w #2 > 0 + 1 \fi:
\else:
\if_meaning:w - #1 - \else: + \fi: 1
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 ; }
+\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 \__fp_sep: }
\cs_new:Npn \__fp_div_significand_test_o:w 10 #1
{
\if_meaning:w 0 #1
@@ -18514,17 +18698,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1
}
\cs_new:Npn \__fp_div_significand_small_o:wwwNNNNwN
- 0 #1; #2; #3; #4#5#6#7#8; #9
+ 0 #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1#2
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w 1 #3#4#5#6#7
+ \__fp_round:NNN #9 #7 #8
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_div_significand_large_o:wwwNNNNwN
- #1; #2; #3; #4#5#6#7#8; #9
+ #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9
{
+ 1
\exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw
@@ -18534,10 +18718,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_round:NNN
\exp_after:wN #9
\exp_after:wN #6
- \int_value:w \__fp_round_digit:Nw #7 #8 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #7 #8 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_meaning:w 0 #2 \__fp_case_return_same_o:w \fi:
\if_meaning:w 2 #3
@@ -18545,9 +18729,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\if_meaning:w 1 #2 \else: \__fp_case_return_same_o:w \fi:
\__fp_sqrt_npos_o:w
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5;
+\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
@@ -18556,19 +18740,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN
\fi:
#1 / 2
- \__fp_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0
+ \__fp_sqrt_Newton_o:wwn 56234133\__fp_sep: 0\__fp_sep: {#2#3} {#4#5} 0
}
-\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2; 0; #3#4#5
+\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2\__fp_sep: 0\__fp_sep: #3#4#5
{
( #1 + 1 ) / 2
\__fp_pack_eight:wNNNNNNNN
\__fp_sqrt_npos_auxii_o:wNNNNNNNN
- ;
+ \__fp_sep:
0 #3 #4
}
-\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
- { \__fp_sqrt_Newton_o:wwn 17782794; 0; {#1} {#2#3#4#5#6#7#8#9} }
-\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1; #2; #3
+\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1\__fp_sep: #2#3#4#5#6#7#8#9
+ { \__fp_sqrt_Newton_o:wwn 17782794\__fp_sep: 0\__fp_sep: {#1} {#2#3#4#5#6#7#8#9} }
+\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1\__fp_sep: #2\__fp_sep: #3
{
\if_int_compare:w #1 = #2 \exp_stop_f:
\exp_after:wN \__fp_sqrt_auxi_o:NNNNwnnN
@@ -18576,10 +18760,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_use_none_until_s:w
\fi:
\exp_after:wN \__fp_sqrt_Newton_o:wwn
- \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 ;
- #1; {#3}
+ \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 \__fp_sep:
+ #1\__fp_sep: {#3}
}
-\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5;
+\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5\__fp_sep:
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxiii_o:wnnnnnnnn
@@ -18615,13 +18799,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w
\c__fp_big_trailing_shift_int
- - #6 * #6 ;
+ - #6 * #6 \__fp_sep:
% (
- - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 ;
+ - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 \__fp_sep:
{#2}{#3}{#4}{#5}{#6} {#7}{#8}#9
}
\cs_new:Npn \__fp_sqrt_auxiii_o:wnnnnnnnn
- #1; #2#3#4#5#6#7#8#9
+ #1\__fp_sep: #2#3#4#5#6#7#8#9
{
\if_int_compare:w #1 > \c_one_int
\exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw
@@ -18641,13 +18825,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {#1#2#3#4#5#6} {00000000} }
-\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {000#1#2#3#4#5} {#60000} }
-\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} }
-\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{
\if_int_compare:w #1#2 = \c_zero_int
\exp_after:wN \__fp_sqrt_auxx_o:Nnnnnnnn
@@ -18661,9 +18845,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w #1 + 1#4#5
\exp_after:wN \__fp_basics_pack_low:NNNNNw
- \int_value:w \__fp_int_eval:w #2 + 1#6#7 ;
+ \int_value:w \__fp_int_eval:w #2 + 1#6#7 \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1; #2#3; #4#5;
+\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1\__fp_sep: #2#3\__fp_sep: #4#5\__fp_sep:
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxiii_o:wnnnnnnnn {#1}{#2}{#3}{#4}{#5}
@@ -18672,17 +18856,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_sqrt_auxxi_o:wwnnN
\int_value:w \__fp_int_eval:w
- (#8 + 2499) / 5000 * 5000 ;
- {#4} {#5} {#6} {#7} ;
+ (#8 + 2499) / 5000 * 5000 \__fp_sep:
+ {#4} {#5} {#6} {#7} \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1; #2; #3#4#5
+\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1\__fp_sep: #2\__fp_sep: #3#4#5
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxxii_o:nnnnnnnnw
#2 {#1}
{#3} { #4 + 1 } #5
}
-\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9;
+\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0\__fp_sep: #1#2#3#4#5#6#7#8 #9\__fp_sep:
{
\if_int_compare:w #1#2 > \c_zero_int
\if_int_compare:w #1#2 = \c_one_int
@@ -18700,14 +18884,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sqrt_auxxiv_o:wnnnnnnnN
\int_value:w 10000
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: ;
+\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: \__fp_sep:
{
\fi: \fi: \fi: \fi: \fi:
- \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 ;
+ \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9
+\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1\__fp_sep: #2#3#4#5#6 #7#8#9
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 0000 0000 + #2#3
@@ -18721,10 +18905,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_round_digit:Nw
- \int_value:w \__fp_int_eval:w #6 + 19999 - #1 ;
- \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w #6 + 19999 - #1 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2; @
+\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @
{
\if_case:w #1 \exp_stop_f:
\__fp_case_use:nw
@@ -18733,14 +18917,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_o:Nw \c_inf_fp
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #1 #2;
+ \s__fp \__fp_chk:w #1 #2\__fp_sep:
}
-\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 ;
+\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 \__fp_sep:
{
\exp_after:wN \__fp_parse:n \exp_after:wN
{ \int_value:w \int_eval:w #3 - 1 \exp_after:wN }
}
-\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2; @
+\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @
{
\if_case:w #1 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -18748,11 +18932,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \exp_after:wN \__fp_sign_aux_o:w
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #1 #2;
+ \s__fp \__fp_chk:w #1 #2\__fp_sep:
}
-\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 ;
+\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 \__fp_sep:
{ \exp_after:wN \__fp_set_sign_o:w \exp_after:wN #2 \c_one_fp @ }
-\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\exp_after:wN \__fp_exp_after_o:w
\exp_after:wN \s__fp
@@ -18760,7 +18944,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #2
\int_value:w
\if_case:w #3 \exp_stop_f: #1 \or: 1 \or: 0 \fi: \exp_stop_f:
- #4;
+ #4\__fp_sep:
}
\cs_new:Npn \__fp_tuple_set_sign_o:w #1#2 @
{
@@ -18772,53 +18956,60 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_tuple_set_sign_aux_o:Nnw #1#2
{ \__fp_tuple_map_o:nw \__fp_tuple_set_sign_aux_o:w }
-\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 ;
+\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_set_sign_o:w
\__fp_parse_apply_unary_error:NNw
- 2 #1 #2 ; @
- }
-\cs_new:cpn { __fp_*_tuple_o:ww } #1 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 ; } }
-\cs_new:cpn { __fp_tuple_*_o:ww } #1 ; #2 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 ; } #1 ; }
-\cs_new:cpn { __fp_tuple_/_o:ww } #1 ; #2 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 ; } #1 ; }
+ 2 #1 #2 \__fp_sep: @
+ }
+\cs_new:cpn { __fp_*_tuple_o:ww } #1 \__fp_sep:
+ { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 \__fp_sep: } }
+\cs_new:cpn { __fp_tuple_*_o:ww } #1 \__fp_sep: #2 \__fp_sep:
+ {
+ \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 \__fp_sep: }
+ #1 \__fp_sep:
+ }
+\cs_new:cpn { __fp_tuple_/_o:ww } #1 \__fp_sep: #2 \__fp_sep:
+ {
+ \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 \__fp_sep: }
+ #1 \__fp_sep:
+ }
\cs_set_protected:Npn \__fp_tmp:w #1
{
\cs_new:cpn { __fp_tuple_#1_tuple_o:ww }
- \s__fp_tuple \__fp_tuple_chk:w ##1 ;
- \s__fp_tuple \__fp_tuple_chk:w ##2 ;
+ \s__fp_tuple \__fp_tuple_chk:w ##1 \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w ##2 \__fp_sep:
{
\int_compare:nNnTF
{ \__fp_array_count:n {##1} } = { \__fp_array_count:n {##2} }
{ \__fp_tuple_mapthread_o:nww { \__fp_binary_type_o:Nww #1 } }
{ \__fp_invalid_operation_o:nww #1 }
- \s__fp_tuple \__fp_tuple_chk:w {##1} ;
- \s__fp_tuple \__fp_tuple_chk:w {##2} ;
+ \s__fp_tuple \__fp_tuple_chk:w {##1} \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w {##2} \__fp_sep:
}
}
\__fp_tmp:w +
\__fp_tmp:w -
%% File: l3fp-extended.dtx
\tl_const:Nn \c__fp_one_fixed_tl
- { {10000} {0000} {0000} {0000} {0000} {0000} ; }
-\cs_new:Npn \__fp_fixed_continue:wn #1; #2 { #2 #1; }
-\cs_new:Npn \__fp_fixed_add_one:wN #1#2; #3
+ { {10000} {0000} {0000} {0000} {0000} {0000} \__fp_sep: }
+\cs_new:Npn \__fp_fixed_continue:wn #1\__fp_sep: #2 { #2 #1\__fp_sep: }
+\cs_new:Npn \__fp_fixed_add_one:wN #1#2\__fp_sep: #3
{
\exp_after:wN #3 \exp_after:wN
- { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 ;
+ { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6;
+\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
\exp_after:wN \__fp_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
- + #1 ; {#2}{#3}{#4}{#5};
+ + #1 \__fp_sep: {#2}{#3}{#4}{#5}\__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; }
-\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9;
+\cs_new:Npn \__fp_fixed_mul_after:wwn #1\__fp_sep: #2\__fp_sep: #3
+ { #3 {#1} #2\__fp_sep: }
+\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6\__fp_sep: #7#8#9\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -18839,29 +19030,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
+ #4*#9 + #5*#8 + #6*#7
+ ( #5*#9 + #6*#8 + #6*#9 / \c__fp_myriad_int )
- / \c__fp_myriad_int ; ;
+ / \c__fp_myriad_int \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 ; #7 ; #8
+\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 \__fp_sep: #7 \__fp_sep: #8
{
\exp_after:wN \__fp_fixed_div_int_after:Nw
\exp_after:wN #8
\int_value:w \__fp_int_eval:w - 1
\__fp_fixed_div_int:wnN
- #1; {#7} \__fp_fixed_div_int_auxi:wnn
- #2; {#7} \__fp_fixed_div_int_auxi:wnn
- #3; {#7} \__fp_fixed_div_int_auxi:wnn
- #4; {#7} \__fp_fixed_div_int_auxi:wnn
- #5; {#7} \__fp_fixed_div_int_auxi:wnn
- #6; {#7} \__fp_fixed_div_int_auxii:wnn ;
+ #1\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #2\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #3\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #4\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #5\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #6\__fp_sep: {#7} \__fp_fixed_div_int_auxii:wnn \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3
+\cs_new:Npn \__fp_fixed_div_int:wnN #1\__fp_sep: #2 #3
{
\exp_after:wN #3
- \int_value:w \__fp_int_eval:w #1 / #2 - 1 ;
+ \int_value:w \__fp_int_eval:w #1 / #2 - 1 \__fp_sep:
{#2}
{#1}
}
-\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1; #2 #3
+\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1\__fp_sep: #2 #3
{
+ #1
\exp_after:wN \__fp_fixed_div_int_pack:Nw
@@ -18869,12 +19060,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_fixed_div_int:wnN
\int_value:w \__fp_int_eval:w #3 - #1*#2 \__fp_int_eval_end:
}
-\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + 2 ; }
-\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} }
-\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2; { #1 {#2} }
+\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1\__fp_sep: #2 #3 { + #1 + 2 \__fp_sep: }
+\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2\__fp_sep: { + #1\__fp_sep: {#2} }
+\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2\__fp_sep: { #1 {#2} }
\cs_new:Npn \__fp_fixed_add:wwn { \__fp_fixed_add:Nnnnnwnn + }
\cs_new:Npn \__fp_fixed_sub:wwn { \__fp_fixed_add:Nnnnnwnn - }
-\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8
+\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6\__fp_sep: #7#8
{
\exp_after:wN \__fp_fixed_add_after:NNNNNwn
\int_value:w \__fp_int_eval:w 9 9999 9998 + #2#3 #1 #7#8
@@ -18882,17 +19073,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w 1 9999 9998 + #4#5
\__fp_fixed_add:nnNnnnwn #6 #1
}
-\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8
+\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 \__fp_sep: #8
{
#3 #4#5
\exp_after:wN \__fp_fixed_add_pack:NNNNNwn
- \int_value:w \__fp_int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ;
+ \int_value:w \__fp_int_eval:w
+ 2 0000 0000 #3 #6#7 + #1#2 \__fp_sep: {#8} \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6; #7
- { + #1 ; {#7} {#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6; #7
+\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6\__fp_sep: #7
+ { + #1 \__fp_sep: {#7} {#2#3#4#5} {#6} }
+\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6\__fp_sep: #7
{ #7 {#1#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9
+\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5\__fp_sep: #6#7#8#9
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -18914,32 +19106,33 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ ( #3*#9 + #4*#8
+ \__fp_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2}
}
-\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ;
+\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 \__fp_sep:
{
#1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c__fp_myriad_int
- + #1*#3 + #5*#7 ; ;
+ + #1*#3 + #5*#7 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_fixed_mul_add:wwwn #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn +
- + #5 #6 ; #2 ; #1 ; #2 ; +
- + #7 #8 ; ;
+ + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: +
+ + #7 #8 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn
+ #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn -
- + #5 #6 ; #2 ; #1 ; #2 ; -
- + #7 #8 ; ;
+ + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: -
+ + #7 #8 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2;
+\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1\__fp_sep: #2\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
@@ -18947,10 +19140,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int +
1 0000 0000
\__fp_fixed_mul_add:Nwnnnwnnn -
- ; #2 ; #1 ; #2 ; -
- ; ;
+ \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: -
+ \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9
+\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2\__fp_sep: #3#4#5#6\__fp_sep: #7#8#9
{
#1 #7*#3
\exp_after:wN \__fp_pack_big:NNNNNNw
@@ -18963,7 +19156,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int
#1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9}
}
-\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9
+\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5\__fp_sep: #6#7#8#9
{
( #1*#9 + #2*#8 + #3*#7 + #4*#6 )
\exp_after:wN \__fp_pack_big:NNNNNNw
@@ -18971,10 +19164,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_fixed_mul_add:nnnnwnnwN
{ #6 + #4*#7 + #3*#8 + #2*#9 + #1 }
{ #7 + #4*#8 + #3*#9 + #2 }
- {#1} #5;
+ {#1} #5\__fp_sep:
{#6}
}
-\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9
+\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5\__fp_sep: #6#7#8\__fp_sep: #9
{
#9 (#4* #1 *#7)
#9 (#5*#6+#4* #2 *#7+#3*#8) / \c__fp_myriad_int
@@ -18982,29 +19175,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_ep_to_fixed:wwn #1,#2
{
\exp_after:wN \__fp_ep_to_fixed_auxi:www
- \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w
- \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } ;
+ \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } \__fp_sep:
}
-\cs_new:Npn \__fp_ep_to_fixed_auxi:www 1#1; #2; #3#4#5#6#7;
+\cs_new:Npn \__fp_ep_to_fixed_auxi:www
+ 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7\__fp_sep:
{
\__fp_pack_eight:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
- \__fp_ep_to_fixed_auxii:nnnnnnnwn ;
+ \__fp_ep_to_fixed_auxii:nnnnnnnwn \__fp_sep:
#2 #1#3#4#5#6#7 0000 !
}
-\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7; #8! #9
- { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}; }
-\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8
+\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7\__fp_sep: #8! #9
+ { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}\__fp_sep: }
+\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7\__fp_sep: #8
{
\exp_after:wN #8
\int_value:w \__fp_int_eval:w #1 + 4
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_ep_to_ep_loop:N
\int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \__fp_int_eval_end:
- #3#4#5#6#7 ; ; !
+ #3#4#5#6#7 \__fp_sep: \__fp_sep: !
}
\cs_new:Npn \__fp_ep_to_ep_loop:N #1
{
@@ -19016,27 +19210,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_ep_to_ep_loop:N
}
\cs_new:Npn \__fp_ep_to_ep_end:www
- #1 \fi: \__fp_ep_to_ep_loop:N #2; #3!
+ #1 \fi: \__fp_ep_to_ep_loop:N #2\__fp_sep: #3!
{
\fi:
- \if_meaning:w ; #1
+ \if_meaning:w \__fp_sep: #1
- 2 * \c__fp_max_exponent_int
\__fp_ep_to_ep_zero:ww
\fi:
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
- \__fp_use_i:ww , ;
- #1 #2 0000 0000 0000 0000 0000 0000 ;
+ \__fp_use_i:ww , \__fp_sep:
+ #1 #2 0000 0000 0000 0000 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1; #2; #3;
- { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} ; }
-\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7;
- { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}; #6#7; }
-\cs_new:Npn \__fp_ep_compare_aux:wwww #1;#2;#3,#4#5#6#7#8#9;
+\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
+ { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} \__fp_sep: }
+\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7\__fp_sep:
+ { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}\__fp_sep: #6#7\__fp_sep: }
+\cs_new:Npn \__fp_ep_compare_aux:wwww
+ #1\__fp_sep:#2\__fp_sep:#3,#4#5#6#7#8#9\__fp_sep:
{
\if_case:w
- \__fp_compare_npos:nwnw #1; {#3}{#4}{#5}{#6}{#7}; \exp_stop_f:
+ \__fp_compare_npos:nwnw
+ #1\__fp_sep: {#3}{#4}{#5}{#6}{#7}\__fp_sep: \exp_stop_f:
\if_int_compare:w #2 = #8#9 \exp_stop_f:
0
\else:
@@ -19046,77 +19242,79 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: -1
\fi:
}
-\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2; #3,#4;
+\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep:
{
- \__fp_ep_to_ep:wwN #3,#4;
+ \__fp_ep_to_ep:wwN #3,#4\__fp_sep:
\__fp_fixed_continue:wn
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_ep_mul_raw:wwwwN
}
\__fp_fixed_continue:wn
}
-\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2; #3,#4; #5
+\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2\__fp_sep: #3,#4\__fp_sep: #5
{
- \__fp_fixed_mul:wwn #2; #4;
+ \__fp_fixed_mul:wwn #2\__fp_sep: #4\__fp_sep:
{ \exp_after:wN #5 \int_value:w \__fp_int_eval:w #1 + #3 , }
}
-\cs_new:Npn \__fp_ep_div:wwwwn #1,#2; #3,#4;
+\cs_new:Npn \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep:
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_fixed_continue:wn
{
- \__fp_ep_to_ep:wwN #3,#4;
+ \__fp_ep_to_ep:wwN #3,#4\__fp_sep:
\__fp_ep_div_esti:wwwwn
}
}
-\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3; #4,
+\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3\__fp_sep: #4,
{
\exp_after:wN \__fp_ep_div_estii:wwnnwwn
\int_value:w \__fp_int_eval:w 10 0000 0000 / ( #2 + 1 )
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w #4 - #1 + 1 ,
- {#2} #3;
+ {#2} #3\__fp_sep:
}
-\cs_new:Npn \__fp_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7
+\cs_new:Npn \__fp_ep_div_estii:wwnnwwn
+ #1\__fp_sep: #2,#3#4#5\__fp_sep: #6\__fp_sep: #7
{
\exp_after:wN \__fp_ep_div_estiii:NNNNNwwwn
\int_value:w \__fp_int_eval:w 10 0000 0000 - 1750
- + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) ;
- {#3}{#4}#5; #6; { #7 #2, }
+ + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) \__fp_sep:
+ {#3}{#4}#5\__fp_sep: #6\__fp_sep: { #7 #2, }
}
-\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6; #7;
+\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6\__fp_sep: #7\__fp_sep:
{
- \__fp_fixed_mul_short:wwn #7; {#1}{#2#3#4#5}{#6};
+ \__fp_fixed_mul_short:wwn #7\__fp_sep: {#1}{#2#3#4#5}{#6}\__fp_sep:
\__fp_ep_div_epsi:wnNNNNNn {#1#2#3#4}#5#6
\__fp_fixed_mul:wwn
}
-\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6;
+\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_ep_div_epsii:wwnNNNNNn
\int_value:w \__fp_int_eval:w 1 9998 - #2
\exp_after:wN \__fp_ep_div_eps_pack:NNNNNw
\int_value:w \__fp_int_eval:w 1 9999 9998 - #3#4
\exp_after:wN \__fp_ep_div_eps_pack:NNNNNw
- \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 ; ;
+ \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6;
- { + #1 ; {#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1; #2; #3#4#5#6#7#8
+\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6\__fp_sep:
+ { + #1 \__fp_sep: {#2#3#4#5} {#6} }
+\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8
{
- \__fp_fixed_mul:wwn {0000}{#1}#2; {0000}{#1}#2;
+ \__fp_fixed_mul:wwn {0000}{#1}#2\__fp_sep: {0000}{#1}#2\__fp_sep:
\__fp_fixed_add_one:wN
- \__fp_fixed_mul:wwn {10000} {#1} #2 ;
+ \__fp_fixed_mul:wwn {10000} {#1} #2 \__fp_sep:
{
- \__fp_fixed_mul_short:wwn {0000}{#1}#2; {#3}{#4#5#6#7}{#8000};
+ \__fp_fixed_mul_short:wwn
+ {0000}{#1}#2\__fp_sep: {#3}{#4#5#6#7}{#8000}\__fp_sep:
\__fp_fixed_div_myriad:wn
\__fp_fixed_mul:wwn
}
- \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000};
+ \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2;
+\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2\__fp_sep:
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_ep_isqrt_auxi:wwn
}
\cs_new:Npn \__fp_ep_isqrt_auxi:wwn #1,
@@ -19127,10 +19325,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ (1 - #1) / 2 , 535 , { 0 } { } }
{ 1 - #1 / 2 , 168 , { } { 0 } }
}
-\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6; #7
+\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6\__fp_sep: #7
{
\__fp_ep_isqrt_esti:wwwnnwn #2, 0, #5, {#3} {#4}
- {#5} #6 ; { #7 #1 , }
+ {#5} #6 \__fp_sep: { #7 #1 , }
}
\cs_new:Npn \__fp_ep_isqrt_esti:wwwnnwn #1, #2, #3, #4
{
@@ -19146,45 +19344,47 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_ep_isqrt_estiii:NNNNNwwwn
\int_value:w \__fp_int_eval:w 1000 0000 + #2 * #2 #5 * 5
- \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 ;
+ \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 \__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9;
+\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn
+ 1#1#2#3#4#5#6, 1#7#8\__fp_sep: #9\__fp_sep:
{
- \__fp_fixed_mul_short:wwn #9; {#1} {#2#3#4#5} {#600} ;
+ \__fp_fixed_mul_short:wwn #9\__fp_sep: {#1} {#2#3#4#5} {#600} \__fp_sep:
\__fp_ep_isqrt_epsi:wN
- \__fp_fixed_mul_short:wwn {#7} {#80} {0000} ;
+ \__fp_fixed_mul_short:wwn {#7} {#80} {0000} \__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1;
+\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1\__fp_sep:
{
- \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}; #1;
- \__fp_ep_isqrt_epsii:wwN #1;
- \__fp_ep_isqrt_epsii:wwN #1;
- \__fp_ep_isqrt_epsii:wwN #1;
+ \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1; #2;
+\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: #2\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; #1;
- \__fp_fixed_mul_sub_back:wwwn #2;
- {15000}{0000}{0000}{0000}{0000}{0000};
- \__fp_fixed_mul:wwn #1;
+ \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep:
+ {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ \__fp_fixed_mul:wwn #1\__fp_sep:
}
\cs_new:Npn \__fp_ep_to_float_o:wwN #1,
{ + \__fp_int_eval:w #1 \__fp_fixed_to_float_o:wN }
-\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2;
+\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2\__fp_sep:
{
- \__fp_ep_div:wwwwn 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1,#2;
+ \__fp_ep_div:wwwwn
+ 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1,#2\__fp_sep:
\__fp_ep_to_float_o:wwN
}
\cs_new:Npn \__fp_fixed_inv_to_float_o:wN
{ \__fp_ep_inv_to_float_o:wwN 0, }
-\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1;
+\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; {5729}{5779}{5130}{8232}{0876}{7981};
+ \__fp_fixed_mul:wwn #1\__fp_sep: {5729}{5779}{5130}{8232}{0876}{7981}\__fp_sep:
{ \__fp_ep_to_float_o:wwN 2, }
}
-\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2;
- { \__fp_fixed_to_float_o:wN #2; #1 }
-\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6; #7
+\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2\__fp_sep:
+ { \__fp_fixed_to_float_o:wN #2\__fp_sep: #1 }
+\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6\__fp_sep: #7
{ % for the 8-digit-at-the-start thing
+ \__fp_int_eval:w \c__fp_block_int
\exp_after:wN \exp_after:wN
@@ -19195,8 +19395,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w 1#2 \exp_after:wN \__fp_use_none_stop_f:n
\int_value:w 1#3#4 \exp_after:wN \__fp_use_none_stop_f:n
\int_value:w 1#5#6
- \exp_after:wN ;
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_fixed_to_loop:N #1
{
@@ -19208,36 +19408,36 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\fi:
}
-\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 ;
+\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 \__fp_sep:
{
- \if_meaning:w ; #1
+ \if_meaning:w \__fp_sep: #1
\exp_after:wN \__fp_fixed_to_float_zero:w
\else:
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_fixed_to_float_pack:ww
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\fi:
- #1 #2 0000 0000 0000 0000 ;
+ #1 #2 0000 0000 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_zero:w ; 0000 0000 0000 0000 ;
+\cs_new:Npn \__fp_fixed_to_float_zero:w \__fp_sep: 0000 0000 0000 0000 \__fp_sep:
{
- - 2 * \c__fp_max_exponent_int ;
- {0000} {0000} {0000} {0000} ;
+ - 2 * \c__fp_max_exponent_int \__fp_sep:
+ {0000} {0000} {0000} {0000} \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 ; #2#3 ; ;
+\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 \__fp_sep: #2#3 \__fp_sep: \__fp_sep:
{
\if_int_compare:w #2 > 4 \exp_stop_f:
\exp_after:wN \__fp_fixed_to_float_round_up:wnnnnw
\fi:
- ; #1 ;
+ \__fp_sep: #1 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw ; #1#2#3#4 ;
+\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw \__fp_sep: #1#2#3#4 \__fp_sep:
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1#2
\exp_after:wN \__fp_basics_pack_low:NNNNNw
- \int_value:w \__fp_int_eval:w 1 #3#4 + 1 ;
+ \int_value:w \__fp_int_eval:w 1 #3#4 + 1 \__fp_sep:
}
%% File: l3fp-expo.dtx
\cs_new:Npn \__fp_parse_word_exp:N
@@ -19246,16 +19446,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_parse_unary_function:NNN \__fp_ln_o:w ? }
\cs_new:Npn \__fp_parse_word_fact:N
{ \__fp_parse_unary_function:NNN \__fp_fact_o:w ? }
-\tl_const:Nn \c__fp_ln_i_fixed_tl { {0000}{0000}{0000}{0000}{0000}{0000};}
-\tl_const:Nn \c__fp_ln_ii_fixed_tl { {6931}{4718}{0559}{9453}{0941}{7232};}
-\tl_const:Nn \c__fp_ln_iii_fixed_tl {{10986}{1228}{8668}{1096}{9139}{5245};}
-\tl_const:Nn \c__fp_ln_iv_fixed_tl {{13862}{9436}{1119}{8906}{1883}{4464};}
-\tl_const:Nn \c__fp_ln_vi_fixed_tl {{17917}{5946}{9228}{0550}{0081}{2477};}
-\tl_const:Nn \c__fp_ln_vii_fixed_tl {{19459}{1014}{9055}{3133}{0510}{5353};}
-\tl_const:Nn \c__fp_ln_viii_fixed_tl{{20794}{4154}{1679}{8359}{2825}{1696};}
-\tl_const:Nn \c__fp_ln_ix_fixed_tl {{21972}{2457}{7336}{2193}{8279}{0490};}
-\tl_const:Nn \c__fp_ln_x_fixed_tl {{23025}{8509}{2994}{0456}{8401}{7991};}
-\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\tl_const:Nn \c__fp_ln_i_fixed_tl
+ { {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_ii_fixed_tl
+ { {6931}{4718}{0559}{9453}{0941}{7232}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_iii_fixed_tl
+ {{10986}{1228}{8668}{1096}{9139}{5245}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_iv_fixed_tl
+ {{13862}{9436}{1119}{8906}{1883}{4464}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_vi_fixed_tl
+ {{17917}{5946}{9228}{0550}{0081}{2477}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_vii_fixed_tl
+ {{19459}{1014}{9055}{3133}{0510}{5353}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_viii_fixed_tl
+ {{20794}{4154}{1679}{8359}{2825}{1696}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_ix_fixed_tl
+ {{21972}{2457}{7336}{2193}{8279}{0490}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_x_fixed_tl
+ {{23025}{8509}{2994}{0456}{8401}{7991}\__fp_sep:}
+\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_meaning:w 2 #3
\__fp_case_use:nw { \__fp_invalid_operation_o:nw { ln } }
@@ -19267,9 +19476,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4;
+ \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
-\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3;
+\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3\__fp_sep:
{ %^^A todo: ln(1) should be "exact zero", not "underflow"
\exp_after:wN \__fp_sanitize:Nw
\int_value:w % for the overall sign
@@ -19301,9 +19510,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: 2
\else: 1
\fi:
- ; { #1 #2 #3 #4 }
+ \__fp_sep: { #1 #2 #3 #4 }
}
-\cs_new:Npn \__fp_ln_x_ii:wnnnn #1; #2#3#4#5
+\cs_new:Npn \__fp_ln_x_ii:wnnnn #1\__fp_sep: #2#3#4#5
{
\exp_after:wN \__fp_ln_div_after:Nw
\cs:w c__fp_ln_ \__fp_int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end:
@@ -19313,22 +19522,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ln_x_iii_var:NNNNNw
\int_value:w \__fp_int_eval:w 9999 9990 + #1*#2#3 +
\exp_after:wN \__fp_ln_x_iii:NNNNNNw
- \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 ;
+ \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 \__fp_sep:
{20000} {0000} {0000} {0000}
} %^^A todo: reoptimize (a generalization attempt failed).
-\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7;
- { #1#2; {#3#4#5#6} {#7} }
-\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6;
+\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { #1#2\__fp_sep: {#3#4#5#6} {#7} }
+\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
{
- #1#2#3#4#5 + 1 ;
+ #1#2#3#4#5 + 1 \__fp_sep:
{#1#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9
+\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1\__fp_sep: #2#3#4#5 #6#7#8#9
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
- \__fp_ln_div_i:w #1 ;
- #6 #7 ; {#8} {#9}
+ \__fp_ln_div_i:w #1 \__fp_sep:
+ #6 #7 \__fp_sep: {#8} {#9}
{#2} {#3} {#4} {#5}
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
@@ -19336,25 +19545,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_ln_div_vi:wwn \int_value:w #1 }
}
-\cs_new:Npn \__fp_ln_div_i:w #1;
+\cs_new:Npn \__fp_ln_div_i:w #1\__fp_sep:
{
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1
+ \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 \__fp_sep: % Q1
}
-\cs_new:Npn \__fp_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1
+\cs_new:Npn \__fp_ln_div_ii:wwn
+ #1\__fp_sep: #2\__fp_sep:#3 % y\__fp_sep: B1\__fp_sep:B2 <- for k=1
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 ; % Q2
- #2 #3 ;
+ \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 \__fp_sep: % Q2
+ #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4
+\cs_new:Npn \__fp_ln_div_vi:wwn
+ #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9 %y\__fp_sep:F1\__fp_sep:F2F3F4x1x2x3x4
{
\exp_after:wN \__fp_div_significand_pack:NNN
- \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 ; % Q6
+ \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 \__fp_sep: % Q6
}
-\cs_new:Npn \__fp_ln_div_after:Nw #1#2;
+\cs_new:Npn \__fp_ln_div_after:Nw #1#2\__fp_sep:
{
\if_meaning:w 0 #2
\exp_after:wN \__fp_ln_t_small:Nw
@@ -19364,19 +19575,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1
}
-\cs_new:Npn \__fp_ln_t_small:Nw #1 #2; #3; #4; #5; #6; #7;
+\cs_new:Npn \__fp_ln_t_small:Nw
+ #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep:
{
\exp_after:wN \__fp_ln_t_large:NNw
\exp_after:wN + % <sign>
\exp_after:wN #1
- \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 1 0000 - #7 ;
- }
-\cs_new:Npn \__fp_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8;
+ \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 1 0000 - #7 \__fp_sep:
+ }
+\cs_new:Npn \__fp_ln_t_large:NNw
+ #1 #2
+ #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep: #8\__fp_sep:
{
\exp_after:wN \__fp_ln_square_t_after:w
\int_value:w \__fp_int_eval:w 9999 0000 + #3*#3
@@ -19390,7 +19604,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w
1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5
+ (2*#3*#8 + 2*#4*#7 + 2*#5*#6) / 1 0000
- % ; ; ;
+ % \__fp_sep: \__fp_sep: \__fp_sep:
\exp_after:wN \__fp_ln_twice_t_after:w
\int_value:w \__fp_int_eval:w -1 + 2*#3
\exp_after:wN \__fp_ln_twice_t_pack:Nw
@@ -19402,48 +19616,53 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ln_twice_t_pack:Nw
\int_value:w \__fp_int_eval:w 9999 + 2*#7
\exp_after:wN \__fp_ln_twice_t_pack:Nw
- \int_value:w \__fp_int_eval:w 10000 + 2*#8 ; ;
+ \int_value:w \__fp_int_eval:w 10000 + 2*#8 \__fp_sep: \__fp_sep:
{ \__fp_ln_c:NwNw #1 }
#2
}
-\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2; { + #1 ; {#2} }
-\cs_new:Npn \__fp_ln_twice_t_after:w #1; { ;;; {#1} }
-\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6;
- { + #1#2#3#4#5 ; {#6} }
-\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4;
+\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2\__fp_sep: { + #1 \__fp_sep: {#2} }
+\cs_new:Npn \__fp_ln_twice_t_after:w #1\__fp_sep:
+ { \__fp_sep:\__fp_sep:\__fp_sep: {#1} }
+\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: {#6} }
+\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4\__fp_sep:
{ \__fp_ln_Taylor:wwNw {0#1#2#3} {#4} }
\cs_new:Npn \__fp_ln_Taylor:wwNw
- { \__fp_ln_Taylor_loop:www 21 ; {0000}{0000}{0000}{0000}{0000}{0000} ; }
-\cs_new:Npn \__fp_ln_Taylor_loop:www #1; #2; #3;
+ {
+ \__fp_ln_Taylor_loop:www
+ 21 \__fp_sep: {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
+ }
+\cs_new:Npn \__fp_ln_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = \c_one_int
\__fp_ln_Taylor_break:w
\fi:
- \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1;
- \__fp_fixed_add:wwn #2;
- \__fp_fixed_mul:wwn #3;
+ \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep:
+ \__fp_fixed_add:wwn #2\__fp_sep:
+ \__fp_fixed_mul:wwn #3\__fp_sep:
{
\exp_after:wN \__fp_ln_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 2 ;
+ \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep:
}
- #3;
+ #3\__fp_sep:
}
-\cs_new:Npn \__fp_ln_Taylor_break:w \fi: #1 \__fp_fixed_add:wwn #2#3; #4 ;;
+\cs_new:Npn \__fp_ln_Taylor_break:w
+ \fi: #1 \__fp_fixed_add:wwn #2#3\__fp_sep: #4 \__fp_sep:\__fp_sep:
{
\fi:
\exp_after:wN \__fp_fixed_mul:wwn
- \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3;
+ \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3\__fp_sep:
}
-\cs_new:Npn \__fp_ln_c:NwNw #1 #2; #3
+\cs_new:Npn \__fp_ln_c:NwNw #1 #2\__fp_sep: #3
{
\if_meaning:w + #1
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_sub:wwn
\else:
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_add:wwn
\fi:
- #3 #2 ;
+ #3 #2 \__fp_sep:
}
-\cs_new:Npn \__fp_ln_exponent:wn #1; #2
+\cs_new:Npn \__fp_ln_exponent:wn #1\__fp_sep: #2
{
\if_case:w #2 \exp_stop_f:
0 \__fp_case_return:nw { \__fp_fixed_to_float_o:Nw 2 }
@@ -19460,25 +19679,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_fixed_add:wwn \int_value:w -
\fi:
\fi:
- #2; #1;
+ #2\__fp_sep: #1\__fp_sep:
}
-\cs_new:Npn \__fp_ln_exponent_one:ww 1; #1;
+\cs_new:Npn \__fp_ln_exponent_one:ww 1\__fp_sep: #1\__fp_sep:
{
0
- \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1;
+ \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1\__fp_sep:
\__fp_fixed_to_float_o:wN 0
}
-\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3; #4#5#6#7#8#9;
+\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3\__fp_sep: #4#5#6#7#8#9\__fp_sep:
{
4
\exp_after:wN \__fp_fixed_mul:wwn
\c__fp_ln_x_fixed_tl
- {#3}{0000}{0000}{0000}{0000}{0000} ;
+ {#3}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
#2
- {0000}{#4}{#5}{#6}{#7}{#8};
+ {0000}{#4}{#5}{#6}{#7}{#8}\__fp_sep:
\__fp_fixed_to_float_o:wN #1
}
-\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -19495,7 +19714,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
\cs_new:Npn \__fp_exp_normal_o:w \s__fp \__fp_chk:w 1#1
{
@@ -19505,7 +19724,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_pos_o:NNwnw - \__fp_fixed_inv_to_float_o:wN
\fi:
}
-\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5;
+\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5\__fp_sep:
{
\fi:
\if_int_compare:w #4 > \c__fp_max_exp_exponent_int
@@ -19544,33 +19763,33 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\exp_after:wN #2
}
-\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4; #5 #6
+\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4\__fp_sep: #5 #6
{
#6
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_exp_Taylor_ii:ww
- ; #2#3#4 0000 0000 ;
+ \__fp_sep: #2#3#4 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_exp_Taylor_ii:ww #1; #2;
- { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__fp_stop }
-\cs_new:Npn \__fp_exp_Taylor_loop:www #1; #2; #3;
+\cs_new:Npn \__fp_exp_Taylor_ii:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_Taylor_loop:www 10 \__fp_sep: #1 \__fp_sep: #1 \__fp_sep: \s__fp_stop }
+\cs_new:Npn \__fp_exp_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = \c_one_int
\exp_after:wN \__fp_exp_Taylor_break:Nww
\fi:
- \__fp_fixed_div_int:wwN #3 ; #1 ;
+ \__fp_fixed_div_int:wwN #3 \__fp_sep: #1 \__fp_sep:
\__fp_fixed_add_one:wN
- \__fp_fixed_mul:wwn #2 ;
+ \__fp_fixed_mul:wwn #2 \__fp_sep:
{
\exp_after:wN \__fp_exp_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 1 ;
- #2 ;
+ \int_value:w \__fp_int_eval:w #1 - 1 \__fp_sep:
+ #2 \__fp_sep:
}
}
-\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2; #3 \s__fp_stop
- { \__fp_fixed_add_one:wN #2 ; }
+\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2\__fp_sep: #3 \s__fp_stop
+ { \__fp_fixed_add_one:wN #2 \__fp_sep: }
\intarray_const_from_clist:Nn \c__fp_exp_intarray
{
1 , 1 1105 1709 , 1 1807 5647 , 1 6248 1171 ,
@@ -19628,23 +19847,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
34744 , 1 3618 6973 , 1 3140 0875 , 1 3856 4102 ,
39087 , 1 3186 9209 , 1 6113 3900 , 1 6705 9685 ,
}
-\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5; #6
+\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5\__fp_sep: #6
{
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_exp_large:NwN
\exp_after:wN \exp_after:wN \exp_after:wN #6
\exp_after:wN \c__fp_one_fixed_tl
\int_value:w #3 #4 \exp_stop_f:
- #5 00000 ;
+ #5 00000 \__fp_sep:
}
-\cs_new:Npn \__fp_exp_large:NwN #1#2; #3
+\cs_new:Npn \__fp_exp_large:NwN #1#2\__fp_sep: #3
{
\if_case:w #3 ~
\exp_after:wN \__fp_fixed_continue:wn
\else:
\exp_after:wN \__fp_exp_intarray:w
- \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN \__fp_sep:
\fi:
- #2;
+ #2\__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_exp_large_after:wwn
@@ -19654,7 +19873,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
}
-\cs_new:Npn \__fp_exp_intarray:w #1 ;
+\cs_new:Npn \__fp_exp_intarray:w #1 \__fp_sep:
{
+
\__kernel_intarray_item:Nn \c__fp_exp_intarray
@@ -19669,16 +19888,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__kernel_intarray_item:Nn
\c__fp_exp_intarray { \__fp_int_eval:w #1 - 1 }
\exp_after:wN \__fp_exp_intarray_aux:w
- \int_value:w \__kernel_intarray_item:Nn \c__fp_exp_intarray {#1} ; ;
+ \int_value:w \__kernel_intarray_item:Nn
+ \c__fp_exp_intarray {#1} \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 ; { ; {#1#2#3#4} {#5} }
-\cs_new:Npn \__fp_exp_large_after:wwn #1; #2; #3
+\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 \__fp_sep:
+ { \__fp_sep: {#1#2#3#4} {#5} }
+\cs_new:Npn \__fp_exp_large_after:wwn #1\__fp_sep: #2\__fp_sep: #3
{
- \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2; {} #3
- \__fp_fixed_mul:wwn #1;
+ \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2\__fp_sep: {} #3
+ \__fp_fixed_mul:wwn #1\__fp_sep:
}
\cs_new:cpn { __fp_ \iow_char:N \^ _o:ww }
- \s__fp \__fp_chk:w #1#2#3; \s__fp \__fp_chk:w #4#5#6;
+ \s__fp \__fp_chk:w #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5#6\__fp_sep:
{
\if_meaning:w 0 #4
\__fp_case_return_o:Nw \c_one_fp
@@ -19697,13 +19918,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_pow_zero_or_inf:ww
\fi:
- \s__fp \__fp_chk:w #1#2#3;
+ \s__fp \__fp_chk:w #1#2#3\__fp_sep:
}
- { \s__fp \__fp_chk:w #4#5#6; \s__fp \__fp_chk:w #1#2#3; }
- \s__fp \__fp_chk:w #4#5#6;
+ { \s__fp \__fp_chk:w #4#5#6\__fp_sep: \s__fp \__fp_chk:w #1#2#3\__fp_sep: }
+ \s__fp \__fp_chk:w #4#5#6\__fp_sep:
}
\cs_new:Npn \__fp_pow_zero_or_inf:ww
- \s__fp \__fp_chk:w #1#2; \s__fp \__fp_chk:w #3#4
+ \s__fp \__fp_chk:w #1#2\__fp_sep: \s__fp \__fp_chk:w #3#4
{
\if_meaning:w 1 #4
\__fp_case_return_same_o:w
@@ -19720,13 +19941,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_case_use:nw
{
\__fp_division_by_zero_o:NNww \c_inf_fp ^
- \s__fp \__fp_chk:w #1 #2 ;
+ \s__fp \__fp_chk:w #1 #2 \__fp_sep:
}
\fi:
\s__fp \__fp_chk:w #3#4
}
\cs_new:Npn \__fp_pow_normal_o:ww
- \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5
+ \s__fp \__fp_chk:w 1 #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5
{
\if:w 0 \__fp_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} }
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
@@ -19750,7 +19971,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or:
\__fp_case_return_ii_o:ww
\fi:
- \s__fp \__fp_chk:w 1 #1 {#2} #3 ;
+ \s__fp \__fp_chk:w 1 #1 {#2} #3 \__fp_sep:
\s__fp \__fp_chk:w #4 #5
}
\cs_new:Npn \__fp_pow_npos_o:Nww #1 \s__fp \__fp_chk:w 1#2#3
@@ -19769,17 +19990,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
{#3}
}
-\cs_new:Npn \__fp_pow_npos_aux:NNnww #1#2#3#4#5; \s__fp \__fp_chk:w 1#6#7#8;
+\cs_new:Npn \__fp_pow_npos_aux:NNnww
+ #1#2#3#4#5\__fp_sep: \s__fp \__fp_chk:w 1#6#7#8\__fp_sep:
{
#1
\__fp_int_eval:w
\__fp_ln_significand:NNNNnnnN #4#5
\__fp_pow_exponent:wnN {#3}
- \__fp_fixed_mul:wwn #8 {0000}{0000} ;
- \__fp_pow_B:wwN #7;
+ \__fp_fixed_mul:wwn #8 {0000}{0000} \__fp_sep:
+ \__fp_pow_B:wwN #7\__fp_sep:
#1 #2 0 % fixed_to_float_o:wN
}
-\cs_new:Npn \__fp_pow_exponent:wnN #1; #2
+\cs_new:Npn \__fp_pow_exponent:wnN #1\__fp_sep: #2
{
\if_int_compare:w #2 > \c_zero_int
\exp_after:wN \__fp_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x))
@@ -19788,9 +20010,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pow_exponent:Nwnnnnnw % -(|n|\ln(10) + (-\ln(x)))
\exp_after:wN -
\fi:
- #2; #1;
+ #2\__fp_sep: #1\__fp_sep:
}
-\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{ %^^A todo: use that in ln.
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -19809,9 +20031,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
#1 #2*8401 - #1 #7
- #1 ( #2*7991 - #8 ) / 1 0000 ; ;
+ #1 ( #2*7991 - #8 ) / 1 0000 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6; #7;
+\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6\__fp_sep: #7\__fp_sep:
{
\if_int_compare:w #7 < \c_zero_int
\exp_after:wN \__fp_pow_C_neg:w \int_value:w -
@@ -19822,23 +20044,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pow_C_overflow:w \int_value:w
\fi:
\fi:
- #7 \exp_after:wN ;
+ #7 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w 10 0000 + #1 \__fp_int_eval_end:
- #2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0?
+ #2#3#4#5#6 0000 0000 0000 0000 0000 0000 \__fp_sep: %^^A todo: how many 0?
}
-\cs_new:Npn \__fp_pow_C_overflow:w #1; #2; #3
+\cs_new:Npn \__fp_pow_C_overflow:w #1\__fp_sep: #2\__fp_sep: #3
{
+ 2 * \c__fp_max_exponent_int
\exp_after:wN \__fp_fixed_continue:wn \c__fp_one_fixed_tl
}
-\cs_new:Npn \__fp_pow_C_neg:w #1 ; 1
+\cs_new:Npn \__fp_pow_C_neg:w #1 \__fp_sep: 1
{
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_pow_C_pack:w
\prg_replicate:nn {#1} {0}
}
-\cs_new:Npn \__fp_pow_C_pos:w #1; 1
- { \__fp_pow_C_pos_loop:wN #1; }
-\cs_new:Npn \__fp_pow_C_pos_loop:wN #1; #2
+\cs_new:Npn \__fp_pow_C_pos:w #1\__fp_sep: 1
+ { \__fp_pow_C_pos_loop:wN #1\__fp_sep: }
+\cs_new:Npn \__fp_pow_C_pos_loop:wN #1\__fp_sep: #2
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_pow_C_pack:w
@@ -19849,7 +20071,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_pow_C_overflow:w \int_value:w
\fi:
- \__fp_int_eval:w #1 - 1 \exp_after:wN ;
+ \__fp_int_eval:w #1 - 1 \exp_after:wN \__fp_sep:
\fi:
}
\cs_new:Npn \__fp_pow_C_pack:w
@@ -19858,20 +20080,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN 5
\c__fp_one_fixed_tl
}
-\cs_new:Npn \__fp_pow_neg:www \s__fp \__fp_chk:w #1#2; #3; #4;
+\cs_new:Npn \__fp_pow_neg:www
+ \s__fp \__fp_chk:w #1#2\__fp_sep: #3\__fp_sep: #4\__fp_sep:
{
- \if_case:w \__fp_pow_neg_case:w #4 ;
+ \if_case:w \__fp_pow_neg_case:w #4 \__fp_sep:
\exp_after:wN \__fp_pow_neg_aux:wNN
\or:
\if_int_compare:w \__fp_int_eval:w #1 / 2 = \c_one_int
- \__fp_invalid_operation_o:Nww ^ #3; #4;
+ \__fp_invalid_operation_o:Nww ^ #3\__fp_sep: #4\__fp_sep:
\exp:w \exp_end_continue_f:w
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_use_none_until_s:w
\fi:
\fi:
\__fp_exp_after_o:w
- \s__fp \__fp_chk:w #1#2;
+ \s__fp \__fp_chk:w #1#2\__fp_sep:
}
\cs_new:Npn \__fp_pow_neg_aux:wNN #1 \s__fp \__fp_chk:w #2#3
{
@@ -19881,7 +20104,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #2
\int_value:w \__fp_int_eval:w 2 - #3 \__fp_int_eval_end:
}
-\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3;
+\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
\if_case:w #1 \exp_stop_f:
-1
@@ -19901,7 +20124,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#2} {#3} {#4} {#5}
\fi:
}
-\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 ;
+\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 \__fp_sep:
{
\if_meaning:w 0 #1
\if_int_odd:w #3 \exp_stop_f:
@@ -19914,7 +20137,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\int_const:Nn \c__fp_fact_max_arg_int { 3248 }
-\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -19930,13 +20153,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_case_use:nw { \__fp_invalid_operation_o:fw { fact } }
\fi:
\__fp_fact_pos_o:w
- \s__fp \__fp_chk:w #2 #3 #4 ;
+ \s__fp \__fp_chk:w #2 #3 #4 \__fp_sep:
}
-\cs_new:Npn \__fp_fact_pos_o:w #1;
+\cs_new:Npn \__fp_fact_pos_o:w #1\__fp_sep:
{
- \__fp_small_int:wTF #1;
+ \__fp_small_int:wTF #1\__fp_sep:
{ \__fp_fact_int_o:n }
- { \__fp_invalid_operation_o:fw { fact } #1; }
+ { \__fp_invalid_operation_o:fw { fact } #1\__fp_sep: }
}
\cs_new:Npn \__fp_fact_int_o:n #1
{
@@ -19950,9 +20173,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
\int_value:w \__fp_int_eval:w
- \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } ;
+ \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } \__fp_sep:
}
-\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 ;
+\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 \__fp_sep:
{
\if_int_compare:w #1 < 12 \exp_stop_f:
\__fp_fact_small_o:w #1
@@ -19960,14 +20183,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ep_mul:wwwwn
\exp_after:wN 4 \exp_after:wN ,
\exp_after:wN { \int_value:w \__fp_int_eval:w #1 * (#1 - 1) }
- { } { } { } { } { } ;
- #2 ;
+ { } { } { } { } { } \__fp_sep:
+ #2 \__fp_sep:
{
\exp_after:wN \__fp_fact_loop_o:w
\int_value:w \__fp_int_eval:w #1 - 2 .
}
}
-\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 ; #3 ; #4
+\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 \__fp_sep: #3 \__fp_sep: #4
{
\fi:
\exp_after:wN \__fp_ep_mul:wwwwn
@@ -19979,8 +20202,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
1 \or: 1 \or: 2 \or: 6 \or: 24 \or: 120 \or: 720 \or: 5040
\or: 40320 \or: 362880 \or: 3628800 \or: 39916800
\fi:
- } { } { } { } { } { } ;
- #3 ;
+ } { } { } { } { } { } \__fp_sep:
+ #3 \__fp_sep:
\__fp_ep_to_float_o:wwN 0
}
%% File: l3fp-trig.dtx
@@ -20011,7 +20234,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_parse_function:NNN \__fp_atan_o:Nw \use_i:nn }
\cs_new:Npn \__fp_parse_word_atand:N
{ \__fp_parse_function:NNN \__fp_atan_o:Nw \use_ii:nn }
-\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20024,9 +20247,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { sin } { sind } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -20039,9 +20262,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { cos } { cosd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_cot_zero_o:Nfw #3 { #1 { csc } { cscd } }
@@ -20054,9 +20277,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { csc } { cscd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -20069,9 +20292,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { sec } { secd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20084,9 +20307,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { tan } { tand } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_cot_zero_o:Nfw #3 { #1 { cot } { cotd } }
@@ -20099,7 +20322,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { cot } { cotd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
\cs_new:Npn \__fp_cot_zero_o:Nfw #1#2#3 \fi:
{
@@ -20109,7 +20332,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:NNf \__fp_division_by_zero_o:Nnw \c_minus_inf_fp }
{#2}
}
-\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8;
+\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8\__fp_sep:
{
\exp_after:wN #2
\exp_after:wN #3
@@ -20121,44 +20344,44 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
#1 \__fp_trig_small:ww \__fp_trigd_small:ww
\fi:
- #7,#8{0000}{0000};
+ #7,#8{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_trig_small:ww #1,#2;
- { \__fp_ep_to_fixed:wwn #1,#2; . #1,#2; }
-\cs_new:Npn \__fp_trigd_small:ww #1,#2;
+\cs_new:Npn \__fp_trig_small:ww #1,#2\__fp_sep:
+ { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: . #1,#2\__fp_sep: }
+\cs_new:Npn \__fp_trigd_small:ww #1,#2\__fp_sep:
{
\__fp_ep_mul_raw:wwwwN
- -1,{1745}{3292}{5199}{4329}{5769}{2369}; #1,#2;
+ -1,{1745}{3292}{5199}{4329}{5769}{2369}\__fp_sep: #1,#2\__fp_sep:
\__fp_trig_small:ww
}
-\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7;
+\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7\__fp_sep:
{
\exp_after:wN \__fp_pack_eight:wNNNNNNNN
\exp_after:wN \__fp_pack_eight:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_trigd_large_auxi:nnnnwNNNN
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w
\prg_replicate:nn { \int_max:nn { 22 - #1 } { 0 } } { 0 }
#2#3#4#5#6#7 0000 0000 0000 !
}
-\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5; #6#7#8#9
+\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5\__fp_sep: #6#7#8#9
{
\exp_after:wN \__fp_trigd_large_auxii:wNw
\int_value:w \__fp_int_eval:w #1 + #2
- (#1 + #2 - 4) / 9 * 9 \__fp_int_eval_end:
- #3;
- #4; #5{#6#7#8#9};
+ #3\__fp_sep:
+ #4\__fp_sep: #5{#6#7#8#9}\__fp_sep:
}
-\cs_new:Npn \__fp_trigd_large_auxii:wNw #1; #2#3;
+\cs_new:Npn \__fp_trigd_large_auxii:wNw #1\__fp_sep: #2#3\__fp_sep:
{
+ (#1#2 - 4) / 9 * 2
\exp_after:wN \__fp_trigd_large_auxiii:www
\int_value:w \__fp_int_eval:w #1#2
- - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 ;
+ - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 \__fp_sep:
}
-\cs_new:Npn \__fp_trigd_large_auxiii:www #1; #2; #3!
+\cs_new:Npn \__fp_trigd_large_auxiii:www #1\__fp_sep: #2\__fp_sep: #3!
{
\if_int_compare:w #1 < 4500 \exp_stop_f:
\exp_after:wN \__fp_use_i_until_s:nw
@@ -20166,8 +20389,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
+ 1
\fi:
- \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000};
- {#1}#2{0000}{0000};
+ \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ {#1}#2{0000}{0000}\__fp_sep:
{ \__fp_trigd_small:ww 2, }
}
\intarray_const_from_clist:Nn \c__fp_trig_intarray
@@ -20384,12 +20607,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
159592267, 181172796, 144388537, 196763139, 127431422, 179531145,
100064922, 112650013, 132686230, 121550837,
}
-\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6;
+\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_trig_large_auxi:w
\int_value:w \__fp_int_eval:w (#1 - 4) / 8 \exp_after:wN ,
- \int_value:w #1 , ;
- {#2}{#3}{#4}{#5} ;
+ \int_value:w #1 , \__fp_sep:
+ {#2}{#3}{#4}{#5} \__fp_sep:
}
\cs_new:Npn \__fp_trig_large_auxi:w #1, #2,
{
@@ -20434,10 +20657,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
- \__fp_trig_large_auxv:www ;
+ \__fp_trig_large_auxv:www \__fp_sep:
}
\cs_new:Npn \__fp_trig_large_auxiii:w 1 { \exp_stop_f: }
-\cs_new:Npn \__fp_trig_large_auxv:www #1; #2; #3;
+\cs_new:Npn \__fp_trig_large_auxv:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_use_i_until_s:nw
\exp_after:wN \__fp_trig_large_auxvii:w
@@ -20446,24 +20669,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_trig_large_auxvi:wnnnnnnnn }
+ \c__fp_trailing_shift_int - \c__fp_middle_shift_int
\__fp_use_i_until_s:nw
- ; #3 #1 ; ;
+ \__fp_sep: #3 #1 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1; #2#3#4#5#6#7#8#9
+\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9
{
\exp_after:wN \__fp_trig_large_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_middle_shift_int
+ #2*#9 + #3*#8 + #4*#7 + #5*#6
- #1; {#2}{#3}{#4}{#5} {#7}{#8}{#9}
+ #1\__fp_sep: {#2}{#3}{#4}{#5} {#7}{#8}{#9}
}
-\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6;
- { + #1#2#3#4#5 ; #6 }
+\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: #6 }
\cs_new:Npn \__fp_trig_large_auxvii:w #1#2#3
{
\exp_after:wN \__fp_trig_large_auxviii:ww
- \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 ;
+ \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 \__fp_sep:
#1#2#3
}
-\cs_new:Npn \__fp_trig_large_auxviii:ww #1;
+\cs_new:Npn \__fp_trig_large_auxviii:ww #1\__fp_sep:
{
+ #1
\if_int_odd:w #1 \exp_stop_f:
@@ -20482,25 +20705,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_replicate:nn { 13 }
{ \__fp_trig_large_auxx:wNNNNN }
+ \c__fp_trailing_shift_int - \c__fp_middle_shift_int
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1; #2 #3#4#5#6
+\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1\__fp_sep: #2 #3#4#5#6
{
\exp_after:wN \__fp_trig_large_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_middle_shift_int
#2 8 * #3#4#5#6
- #1; #2
+ #1\__fp_sep: #2
}
-\cs_new:Npn \__fp_trig_large_auxxi:w #1;
+\cs_new:Npn \__fp_trig_large_auxxi:w #1\__fp_sep:
{
\exp_after:wN \__fp_ep_mul_raw:wwwwN
- \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 ; ; !
- 0,{7853}{9816}{3397}{4483}{0961}{5661};
+ \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 \__fp_sep: \__fp_sep: !
+ 0,{7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep:
\__fp_trig_small:ww
}
-\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4;
+\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4\__fp_sep:
{
- \__fp_fixed_mul:wwn #4; #4;
+ \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_sin_series_aux_o:NNnwww
\exp_after:wN #1
@@ -20513,7 +20736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
-\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4; #5,#6;
+\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4\__fp_sep: #5,#6\__fp_sep:
{
\if_int_odd:w \__fp_int_eval:w #3 / 2 \__fp_int_eval_end:
\exp_after:wN \use_i:nn
@@ -20521,29 +20744,46 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \use_ii:nn
\fi:
{ % 1/18!
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070};
- #4;{0000}{0000}{0000}{0477}{9477}{3324};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0011}{4707}{4559}{7730};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{2087}{6756}{9878}{6810};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0027}{5573}{1922}{3985}{8907};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{2480}{1587}{3015}{8730}{1587};
- \__fp_fixed_mul_sub_back:wwwn #4;{0013}{8888}{8888}{8888}{8888}{8889};
- \__fp_fixed_mul_sub_back:wwwn #4;{0416}{6666}{6666}{6666}{6666}{6667};
- \__fp_fixed_mul_sub_back:wwwn #4;{5000}{0000}{0000}{0000}{0000}{0000};
- \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000};
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070}\__fp_sep:
+ #4\__fp_sep:
+ {0000}{0000}{0000}{0477}{9477}{3324}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{0011}{4707}{4559}{7730}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{2087}{6756}{9878}{6810}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0027}{5573}{1922}{3985}{8907}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{2480}{1587}{3015}{8730}{1587}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0013}{8888}{8888}{8888}{8888}{8889}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0416}{6666}{6666}{6666}{6666}{6667}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {5000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
{ \__fp_fixed_continue:wn 0, }
}
{ % 1/17!
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254};
- #4;{0000}{0000}{0000}{7647}{1637}{3182};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0160}{5904}{3836}{8216};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0002}{5052}{1083}{8544}{1719};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0275}{5731}{9223}{9858}{9065};
- \__fp_fixed_mul_sub_back:wwwn #4;{0001}{9841}{2698}{4126}{9841}{2698};
- \__fp_fixed_mul_sub_back:wwwn #4;{0083}{3333}{3333}{3333}{3333}{3333};
- \__fp_fixed_mul_sub_back:wwwn #4;{1666}{6666}{6666}{6666}{6666}{6667};
- \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000};
- { \__fp_ep_mul:wwwwn 0, } #5,#6;
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254}\__fp_sep:
+ #4\__fp_sep:
+ {0000}{0000}{0000}{7647}{1637}{3182}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{0160}{5904}{3836}{8216}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0002}{5052}{1083}{8544}{1719}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0275}{5731}{9223}{9858}{9065}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0001}{9841}{2698}{4126}{9841}{2698}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0083}{3333}{3333}{3333}{3333}{3333}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {1666}{6666}{6666}{6666}{6666}{6667}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ { \__fp_ep_mul:wwwwn 0, } #5,#6\__fp_sep:
}
{
\exp_after:wN \__fp_sanitize:Nw
@@ -20552,9 +20792,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
#2
}
-\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4;
+\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4\__fp_sep:
{
- \__fp_fixed_mul:wwn #4; #4;
+ \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_tan_series_aux_o:Nnwww
\int_value:w
@@ -20565,22 +20805,32 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
-\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3; #4,#5;
- {
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059};
- #3; {0000}{0159}{6080}{0274}{5257}{6472};
- \__fp_fixed_mul_sub_back:wwwn #3; {0002}{4571}{2320}{0157}{2558}{8481};
- \__fp_fixed_mul_sub_back:wwwn #3; {0115}{5830}{7533}{5397}{3168}{2147};
- \__fp_fixed_mul_sub_back:wwwn #3; {1929}{8245}{6140}{3508}{7719}{2982};
- \__fp_fixed_mul_sub_back:wwwn #3;{10000}{0000}{0000}{0000}{0000}{0000};
- { \__fp_ep_mul:wwwwn 0, } #4,#5;
+\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3\__fp_sep: #4,#5\__fp_sep:
+ {
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059}\__fp_sep:
+ #3\__fp_sep:
+ {0000}{0159}{6080}{0274}{5257}{6472}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0002}{4571}{2320}{0157}{2558}{8481}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0115}{5830}{7533}{5397}{3168}{2147}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {1929}{8245}{6140}{3508}{7719}{2982}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ { \__fp_ep_mul:wwwwn 0, } #4,#5\__fp_sep:
{
- \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706};
- #3;{0000}{2343}{7175}{1399}{6151}{7670};
- \__fp_fixed_mul_sub_back:wwwn #3;{0019}{2638}{4588}{9232}{8861}{3691};
- \__fp_fixed_mul_sub_back:wwwn #3;{0536}{6357}{0691}{4344}{6852}{4252};
- \__fp_fixed_mul_sub_back:wwwn #3;{5263}{1578}{9473}{6842}{1052}{6315};
- \__fp_fixed_mul_sub_back:wwwn#3;{10000}{0000}{0000}{0000}{0000}{0000};
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706}\__fp_sep:
+ #3\__fp_sep:
+ {0000}{2343}{7175}{1399}{6151}{7670}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0019}{2638}{4588}{9232}{8861}{3691}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0536}{6357}{0691}{4344}{6852}{4252}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {5263}{1578}{9473}{6842}{1052}{6315}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#3\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
{
\reverse_if:N \if_int_odd:w
\__fp_int_eval:w (#2 - 1) / 2 \__fp_int_eval_end:
@@ -20610,7 +20860,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npe \__fp_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
\cs_new:Npn \__fp_atanii_o:Nww
- #1 \s__fp \__fp_chk:w #2#3#4; \s__fp \__fp_chk:w #5 #6 @
+ #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: \s__fp \__fp_chk:w #5 #6 @
{
\if_meaning:w 3 #2 \__fp_case_return_i_o:ww \fi:
\if_meaning:w 3 #5 \__fp_case_return_ii_o:ww \fi:
@@ -20626,29 +20876,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 0 }
\fi:
\__fp_atan_normal_o:NNnwNnw #1
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
\s__fp \__fp_chk:w #5 #6
}
-\cs_new:Npn \__fp_acotii_o:Nww #1#2; #3;
- { \__fp_atanii_o:Nww #1#3; #2; }
-\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6;
+\cs_new:Npn \__fp_acotii_o:Nww #1#2\__fp_sep: #3\__fp_sep:
+ { \__fp_atanii_o:Nww #1#3\__fp_sep: #2\__fp_sep: }
+\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_o:NwwwwwN
\exp_after:wN #2
\int_value:w \__fp_int_eval:w
- \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN ;
+ \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN \__fp_sep:
\c__fp_one_fixed_tl
- {0000}{0000}{0000}{0000}{0000}{0000};
- 0,{0000}{0000}{0000}{0000}{0000}{0000}; #1
+ {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ 0,{0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1
}
\cs_new_protected:Npn \__fp_atan_normal_o:NNnwNnw
- #1 \s__fp \__fp_chk:w 1#2#3#4; \s__fp \__fp_chk:w 1#5#6#7;
+ #1 \s__fp \__fp_chk:w 1#2#3#4\__fp_sep: \s__fp \__fp_chk:w 1#5#6#7\__fp_sep:
{
\__fp_atan_test_o:NwwNwwN
- #2 #3, #4{0000}{0000};
- #5 #6, #7{0000}{0000}; #1
+ #2 #3, #4{0000}{0000}\__fp_sep:
+ #5 #6, #7{0000}{0000}\__fp_sep: #1
}
-\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3; #4#5,#6;
+\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3\__fp_sep: #4#5,#6\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_o:NwwwwwN
\exp_after:wN #1
@@ -20657,13 +20907,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
7 - \__fp_int_eval:w
\fi:
\if_int_compare:w
- \__fp_ep_compare:wwww #2,#3; #5,#6; > \c_zero_int
+ \__fp_ep_compare:wwww #2,#3\__fp_sep: #5,#6\__fp_sep: > \c_zero_int
3 -
\exp_after:wN \__fp_reverse_args:Nww
\fi:
- \__fp_atan_div:wnwwnw #2,#3; #5,#6;
+ \__fp_atan_div:wnwwnw #2,#3\__fp_sep: #5,#6\__fp_sep:
}
-\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3; #4,#5#6;
+\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3\__fp_sep: #4,#5#6\__fp_sep:
{
\if_int_compare:w
\__fp_int_eval:w 41421 * #5 < #2 000
@@ -20673,49 +20923,50 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_atan_near:wwwn
\fi:
0
- \__fp_ep_div:wwwwn #1,{#2}#3; #4,{#5}#6;
+ \__fp_ep_div:wwwwn #1,{#2}#3\__fp_sep: #4,{#5}#6\__fp_sep:
\__fp_atan_auxi:ww
}
\cs_new:Npn \__fp_atan_near:wwwn
- 0 \__fp_ep_div:wwwwn #1,#2; #3,
+ 0 \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3,
{
1
- \__fp_ep_to_fixed:wwn #1 - #3, #2;
+ \__fp_ep_to_fixed:wwn #1 - #3, #2\__fp_sep:
\__fp_atan_near_aux:wwn
}
-\cs_new:Npn \__fp_atan_near_aux:wwn #1; #2;
+\cs_new:Npn \__fp_atan_near_aux:wwn #1\__fp_sep: #2\__fp_sep:
{
- \__fp_fixed_add:wwn #1; #2;
- { \__fp_fixed_sub:wwn #2; #1; { \__fp_ep_div:wwwwn 0, } 0, }
+ \__fp_fixed_add:wwn #1\__fp_sep: #2\__fp_sep:
+ { \__fp_fixed_sub:wwn #2\__fp_sep: #1\__fp_sep: { \__fp_ep_div:wwwwn 0, } 0, }
}
-\cs_new:Npn \__fp_atan_auxi:ww #1,#2;
- { \__fp_ep_to_fixed:wwn #1,#2; \__fp_atan_auxii:w #1,#2; }
-\cs_new:Npn \__fp_atan_auxii:w #1;
+\cs_new:Npn \__fp_atan_auxi:ww #1,#2\__fp_sep:
+ { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: \__fp_atan_auxii:w #1,#2\__fp_sep: }
+\cs_new:Npn \__fp_atan_auxii:w #1\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; #1;
+ \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep:
{
- \__fp_atan_Taylor_loop:www 39 ;
- {0000}{0000}{0000}{0000}{0000}{0000} ;
+ \__fp_atan_Taylor_loop:www 39 \__fp_sep:
+ {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
}
- ! #1;
+ ! #1\__fp_sep:
}
-\cs_new:Npn \__fp_atan_Taylor_loop:www #1; #2; #3;
+\cs_new:Npn \__fp_atan_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = - \c_one_int
\__fp_atan_Taylor_break:w
\fi:
- \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1;
- \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2; #3;
+ \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep:
+ \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_atan_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 2 ;
+ \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep:
}
- #3;
+ #3\__fp_sep:
}
\cs_new:Npn \__fp_atan_Taylor_break:w
- \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2; #3 !
- { \fi: ; #2 ; }
-\cs_new:Npn \__fp_atan_combine_o:NwwwwwN #1 #2; #3; #4; #5,#6; #7
+ \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3 !
+ { \fi: \__fp_sep: #2 \__fp_sep: }
+\cs_new:Npn \__fp_atan_combine_o:NwwwwwN
+ #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5,#6\__fp_sep: #7
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -20725,22 +20976,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \use_ii:nn
\fi:
- { #5 \__fp_fixed_mul:wwn #3; #6; }
+ { #5 \__fp_fixed_mul:wwn #3\__fp_sep: #6\__fp_sep: }
{
- \__fp_fixed_mul:wwn #3; #4;
+ \__fp_fixed_mul:wwn #3\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_aux:ww
- \int_value:w \__fp_int_eval:w #2 / 2 ; #2;
+ \int_value:w \__fp_int_eval:w #2 / 2 \__fp_sep: #2\__fp_sep:
}
}
{ #7 \__fp_fixed_to_float_o:wN \__fp_fixed_to_float_rad_o:wN }
#1
}
-\cs_new:Npn \__fp_atan_combine_aux:ww #1; #2;
+\cs_new:Npn \__fp_atan_combine_aux:ww #1\__fp_sep: #2\__fp_sep:
{
\__fp_fixed_mul_short:wwn
- {7853}{9816}{3397}{4483}{0961}{5661};
- {#1}{0000}{0000};
+ {7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep:
+ {#1}{0000}{0000}\__fp_sep:
{
\if_int_odd:w #2 \exp_stop_f:
\exp_after:wN \__fp_fixed_sub:wwn
@@ -20749,7 +21000,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
}
-\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20762,9 +21013,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 }
@@ -20780,10 +21031,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
\cs_new:Npn \__fp_asin_normal_o:NfwNnnnnw
- #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9;
+ #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9\__fp_sep:
{
\if_int_compare:w #5 < \c_one_int
\exp_after:wN \__fp_use_none_until_s:w
@@ -20793,30 +21044,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_use_i:ww
\__fp_invalid_operation_o:fw {#2}
- \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9};
+ \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9}\__fp_sep:
\__fp_asin_auxi_o:NnNww
- #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000};
+ #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5;
+\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5\__fp_sep:
{
- \__fp_ep_to_fixed:wwn #4,#5;
+ \__fp_ep_to_fixed:wwn #4,#5\__fp_sep:
\__fp_asin_isqrt:wn
- \__fp_ep_mul:wwwwn #4,#5;
+ \__fp_ep_mul:wwwwn #4,#5\__fp_sep:
\__fp_ep_to_ep:wwN
\__fp_fixed_continue:wn
{ #2 \__fp_atan_test_o:NwwNwwN #3 }
- 0 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1
+ 0 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1
}
-\cs_new:Npn \__fp_asin_isqrt:wn #1;
+\cs_new:Npn \__fp_asin_isqrt:wn #1\__fp_sep:
{
- \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1;
+ \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1\__fp_sep:
{
- \__fp_fixed_add_one:wN #1;
+ \__fp_fixed_add_one:wN #1\__fp_sep:
\__fp_fixed_continue:wn { \__fp_ep_mul:wwwwn 0, } 0,
}
\__fp_ep_isqrt:wwn
}
-\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w \if_meaning:w 2 #2 #3 \fi: #2 \exp_stop_f:
\__fp_case_use:nw
@@ -20827,9 +21078,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_same_o:w
\else: \__fp_case_return_o:Nw \c_minus_zero_fp
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_use:nw
@@ -20843,24 +21094,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6;
+\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6\__fp_sep:
{
\int_compare:nNnTF {#5} < 1
{
\__fp_invalid_operation_o:fw {#2}
- \s__fp \__fp_chk:w 1#4{#5}#6;
+ \s__fp \__fp_chk:w 1#4{#5}#6\__fp_sep:
}
{
\__fp_ep_div:wwwwn
- 1,{1000}{0000}{0000}{0000}{0000}{0000};
- #5,#6{0000}{0000};
+ 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ #5,#6{0000}{0000}\__fp_sep:
{ \__fp_asin_auxi_o:NnNww #1 {#3} #4 }
}
}
%% File: l3fp-convert.dtx
-\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\int_case:nnF { \__fp_array_count:n {#2} }
{
@@ -20869,26 +21120,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{
\__fp_tuple_convert_loop:nNw { } #1
- #2 { ? \__fp_tuple_convert_end:w } ;
+ #2 { ? \__fp_tuple_convert_end:w } \__fp_sep:
@ { \use_none:nn }
}
}
-\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4; #5 @ #6
+\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4\__fp_sep: #5 @ #6
{
\use_none:n #3
- \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 ; } #2 #5
+ \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 \__fp_sep: } #2 #5
@ { #6 , ~ #1 }
}
\cs_new:Npn \__fp_tuple_convert_end:w #1 @ #2
{ \exp_after:wN ( \exp:w \exp_end_continue_f:w #2 ) }
-\cs_new:Npn \__fp_trim_zeros:w #1 ;
+\cs_new:Npn \__fp_trim_zeros:w #1 \__fp_sep:
{
- \__fp_trim_zeros_loop:w #1
- ; \__fp_trim_zeros_loop:w 0; \__fp_trim_zeros_dot:w .; \s__fp_stop
+ \__fp_trim_zeros_loop:w #1 \__fp_sep:
+ \__fp_trim_zeros_loop:w 0\__fp_sep:
+ \__fp_trim_zeros_dot:w .\__fp_sep:
+ \s__fp_stop
}
-\cs_new:Npn \__fp_trim_zeros_loop:w #1 0; #2 { #2 #1 ; #2 }
-\cs_new:Npn \__fp_trim_zeros_dot:w #1 .; { \__fp_trim_zeros_end:w #1 ; }
-\cs_new:Npn \__fp_trim_zeros_end:w #1 ; #2 \s__fp_stop { #1 }
+\cs_new:Npn \__fp_trim_zeros_loop:w #1 0\__fp_sep: #2 { #2 #1 \__fp_sep: #2 }
+\cs_new:Npn \__fp_trim_zeros_dot:w #1 .\__fp_sep:
+ { \__fp_trim_zeros_end:w #1 \__fp_sep: }
+\cs_new:Npn \__fp_trim_zeros_end:w #1 \__fp_sep: #2 \s__fp_stop { #1 }
\cs_new:Npn \fp_to_scientific:N #1
{ \exp_after:wN \__fp_to_scientific_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_scientific:N { c }
@@ -20903,9 +21157,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__fp_to_scientific:w \__fp_to_scientific_recover:w
#1
}
-\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_scientific:w
@@ -20934,14 +21188,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new:Npn \__fp_to_scientific_normal:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\exp_after:wN \__fp_to_scientific_normal:wNw
\exp_after:wN e
\int_value:w \__fp_int_eval:w #2 - 1
- ; #3 #4 #5 #6 ;
+ \__fp_sep: #3 #4 #5 #6 \__fp_sep:
}
-\cs_new:Npn \__fp_to_scientific_normal:wNw #1 ; #2#3;
+\cs_new:Npn \__fp_to_scientific_normal:wNw #1 \__fp_sep: #2#3\__fp_sep:
{ #2.#3 #1 }
\cs_new:Npn \fp_to_decimal:N #1
{ \exp_after:wN \__fp_to_decimal_dispatch:w #1 }
@@ -20957,9 +21211,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__fp_to_decimal:w \__fp_to_decimal_recover:w
#1
}
-\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_decimal:w
@@ -20988,7 +21242,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new:Npn \__fp_to_decimal_normal:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\int_compare:nNnTF {#2} > 0
{
@@ -21000,7 +21254,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_to_decimal_huge:wnnnn
- \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } ;
+ \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } \__fp_sep:
}
{#3} {#4} {#5} {#6}
}
@@ -21009,19 +21263,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN 0
\exp_after:wN .
\exp:w \exp_end_continue_f:w \prg_replicate:nn { - #2 } { 0 }
- #3#4#5#6 ;
+ #3#4#5#6 \__fp_sep:
}
}
-\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4;
+\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4\__fp_sep:
{
\exp_after:wN \__fp_trim_zeros:w \int_value:w
\if_int_compare:w #2 > \c_zero_int
#2
\fi:
\exp_stop_f:
- #3.#4 ;
+ #3.#4 \__fp_sep:
}
-\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1; #2#3#4#5 { #2#3#4#5 #1 }
+\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1\__fp_sep: #2#3#4#5 { #2#3#4#5 #1 }
\cs_new:Npn \fp_to_tl:N #1 { \exp_after:wN \__fp_to_tl_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_tl:N { c }
\cs_new:Npn \fp_to_tl:n
@@ -21031,9 +21285,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_to_tl_dispatch:w #1
{ \__fp_change_func_type:NNN #1 \__fp_to_tl:w \__fp_to_tl_recover:w #1 }
-\cs_new:Npn \__fp_to_tl_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_tl_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_tl:w
@@ -21057,15 +21311,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w 1 0 {#1}
}
\cs_new:Npn \__fp_to_tl_scientific:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\exp_after:wN \__fp_to_tl_scientific:wNw
\exp_after:wN e
\int_value:w \__fp_int_eval:w #2 - 1
- ; #3 #4 #5 #6 ;
+ \__fp_sep: #3 #4 #5 #6 \__fp_sep:
}
-\cs_new:Npn \__fp_to_tl_scientific:wNw #1 ; #2#3;
- { \__fp_trim_zeros:w #2.#3 ; #1 }
+\cs_new:Npn \__fp_to_tl_scientific:wNw #1 \__fp_sep: #2#3\__fp_sep:
+ { \__fp_trim_zeros:w #2.#3 \__fp_sep: #1 }
\cs_new:Npn \fp_to_dim:N #1
{ \exp_after:wN \__fp_to_dim_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_dim:N { c }
@@ -21074,14 +21328,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_to_dim_dispatch:w
\exp:w \exp_end_continue_f:w \__fp_parse:n
}
-\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 ;
+\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_to_dim:w \__fp_to_dim_recover:w
- #1 #2 ;
+ #1 #2 \__fp_sep:
}
\cs_new:Npn \__fp_to_dim_recover:w #1
{ \__fp_invalid_operation:nnw { 0pt } { fp_to_dim } }
-\cs_new:Npn \__fp_to_dim:w #1 ; { \__fp_to_decimal:w #1 ; pt }
+\cs_new:Npn \__fp_to_dim:w #1 \__fp_sep: { \__fp_to_decimal:w #1 \__fp_sep: pt }
\cs_new:Npn \fp_to_int:N #1 { \exp_after:wN \__fp_to_int_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_int:N { c }
\cs_new:Npn \fp_to_int:n
@@ -21089,24 +21343,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_to_int_dispatch:w
\exp:w \exp_end_continue_f:w \__fp_parse:n
}
-\cs_new:Npn \__fp_to_int_dispatch:w #1#2 ;
+\cs_new:Npn \__fp_to_int_dispatch:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_to_int:w \__fp_to_int_recover:w
- #1 #2 ;
+ #1 #2 \__fp_sep:
}
\cs_new:Npn \__fp_to_int_recover:w #1
{ \__fp_invalid_operation:nnw { 0 } { fp_to_int } }
-\cs_new:Npn \__fp_to_int:w #1;
+\cs_new:Npn \__fp_to_int:w #1\__fp_sep:
{
\exp_after:wN \__fp_to_decimal:w \exp:w \exp_end_continue_f:w
- \__fp_round:Nwn \__fp_round_to_nearest:NNN #1; { 0 }
+ \__fp_round:Nwn \__fp_round_to_nearest:NNN #1\__fp_sep: { 0 }
}
\cs_new:Npn \dim_to_fp:n #1
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0
\exp_after:wN ,
- \int_value:w \tex_glueexpr:D #1 ;
+ \int_value:w \tex_glueexpr:D #1 \__fp_sep:
}
\cs_new:Npn \__fp_from_dim_test:ww #1, #2
{
@@ -21122,18 +21376,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\cs_new:Npn \__fp_from_dim:wNw #1,#2#3;
+\cs_new:Npn \__fp_from_dim:wNw #1,#2#3\__fp_sep:
{
- \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn ;
- #3 000 0000 00 {10}987654321; #2 {#1}
+ \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn \__fp_sep:
+ #3 000 0000 00 {10}987654321\__fp_sep: #2 {#1}
}
-\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1; #2#3#4#5#6#7#8#9
- { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} ; }
-\cs_new:Npn \__fp_from_dim:wnnnnwNn #1; #2#3#4#5#6; #7#8
+\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9
+ { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} \__fp_sep: }
+\cs_new:Npn \__fp_from_dim:wnnnnwNn #1\__fp_sep: #2#3#4#5#6\__fp_sep: #7#8
{
\__fp_mul_npos_o:Nww #7
- \s__fp \__fp_chk:w 1 #7 {#5} #1 ;
- \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} ;
+ \s__fp \__fp_chk:w 1 #7 {#5} #1 \__fp_sep:
+ \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} \__fp_sep:
\prg_do_nothing:
}
\cs_new_eq:NN \fp_use:N \fp_to_decimal:N
@@ -21153,16 +21407,16 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_last_unbraced:Ne \use_ii:nn
{
- \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } ;
+ \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } \__fp_sep:
\prg_break_point:
}
}
}
-\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2;
+\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2\__fp_sep:
{
\use_none:n #1
, ~
- \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 ; }
+ \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 \__fp_sep: }
\__fp_array_to_clist_loop:Nw
}
%% File: l3fp-random.dtx
@@ -21177,7 +21431,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ \tex_uniformdeviate:D #1 + 8192 ) / 16384
}
\cs_new:Npn \__fp_rand_myriads:n #1
- { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: ; }
+ { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: \__fp_sep: }
\cs_new:Npn \__fp_rand_myriads_loop:w #1 X
{
#1
@@ -21186,14 +21440,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_randint:n { 10000 }
\__fp_rand_myriads_loop:w
}
-\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 ; { ; {#1} }
+\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 \__fp_sep: { \__fp_sep: {#1} }
\cs_new:Npn \__fp_rand_o:Nw ? #1 @
{
\tl_if_empty:nTF {#1}
{
\exp_after:wN \__fp_rand_o:w
\exp:w \exp_end_continue_f:w
- \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } ; 0
+ \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } \__fp_sep: 0
}
{
\msg_expandable_error:nnnnn
@@ -21201,7 +21455,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \c_nan_fp
}
}
-\cs_new:Npn \__fp_rand_o:w ;
+\cs_new:Npn \__fp_rand_o:w \__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
@@ -21215,41 +21469,41 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_randint_default:w \__fp_randint_o:w }
}
\cs_new:Npn \__fp_randint_default:w #1 { \exp_after:wN #1 \c_one_fp }
-\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3;
+\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
- \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3;
+ \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
\if_meaning:w 1 #1
\if_int_compare:w
- \__fp_use_i_until_s:nw #3 ; > \c__fp_prec_int
+ \__fp_use_i_until_s:nw #3 \__fp_sep: > \c__fp_prec_int
\c_one_int
\fi:
\fi:
}
{ \c_one_int }
}
-\cs_new:Npn \__fp_randint_o:w #1; #2; @
+\cs_new:Npn \__fp_randint_o:w #1\__fp_sep: #2\__fp_sep: @
{
\if_case:w
- \__fp_randint_badarg:w #1;
- \__fp_randint_badarg:w #2;
- \if:w 1 \__fp_compare_back:ww #2; #1; \c_one_int \fi:
+ \__fp_randint_badarg:w #1\__fp_sep:
+ \__fp_randint_badarg:w #2\__fp_sep:
+ \if:w 1 \__fp_compare_back:ww #2\__fp_sep: #1\__fp_sep: \c_one_int \fi:
\c_zero_int
- \__fp_randint_auxi_o:ww #1; #2;
+ \__fp_randint_auxi_o:ww #1\__fp_sep: #2\__fp_sep:
\or:
\__fp_invalid_operation_tl_o:ff
- { randint } { \__fp_array_to_clist:n { #1; #2; } }
+ { randint } { \__fp_array_to_clist:n { #1\__fp_sep: #2\__fp_sep: } }
\exp:w
\fi:
\exp_after:wN \exp_end:
}
-\cs_new:Npn \__fp_randint_auxi_o:ww #1 ; #2 ; #3 \exp_end:
+\cs_new:Npn \__fp_randint_auxi_o:ww #1 \__fp_sep: #2 \__fp_sep: #3 \exp_end:
{
\fi:
- \__fp_randint_auxii:wn #2 ;
- { \__fp_randint_auxii:wn #1 ; \__fp_randint_auxiii_o:ww }
+ \__fp_randint_auxii:wn #2 \__fp_sep:
+ { \__fp_randint_auxii:wn #1 \__fp_sep: \__fp_randint_auxiii_o:ww }
}
-\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 ;
+\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 \__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \use_i:nn
@@ -21260,7 +21514,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_ep_to_fixed:wwn
\int_value:w \__fp_int_eval:w
- #3 - \c__fp_prec_int , #4 {0000} {0000} ;
+ #3 - \c__fp_prec_int , #4 {0000} {0000} \__fp_sep:
{
\if_meaning:w 0 #2
\exp_after:wN \use_i:nnnn
@@ -21271,22 +21525,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_fixed_continue:wn
}
}
-\cs_new:Npn \__fp_randint_auxiii_o:ww #1 ; #2 ;
+\cs_new:Npn \__fp_randint_auxiii_o:ww #1 \__fp_sep: #2 \__fp_sep:
{
- \__fp_fixed_add:wwn #2 ;
- {0000} {0000} {0000} {0001} {0000} {0000} ;
- \__fp_fixed_sub:wwn #1 ;
+ \__fp_fixed_add:wwn #2 \__fp_sep:
+ {0000} {0000} {0000} {0001} {0000} {0000} \__fp_sep:
+ \__fp_fixed_sub:wwn #1 \__fp_sep:
{
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_fixed_mul_add:wwwn
- \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } ;
+ \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } \__fp_sep:
}
- #1 ;
+ #1 \__fp_sep:
\__fp_randint_auxiv_o:ww
- #2 ;
- \__fp_randint_auxv_o:w #1 ; @
+ #2 \__fp_sep:
+ \__fp_randint_auxv_o:w #1 \__fp_sep: @
}
-\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 ; #6#7#8#9
+\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 \__fp_sep: #6#7#8#9
{
\if_int_compare:w
\if_int_compare:w #1#2 > #6#7 \exp_stop_f: 1 \else:
@@ -21296,7 +21550,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_randint_auxv_o:w {#1}{#2}{#3}{#4}#5
}
-\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 ; #6 @
+\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 \__fp_sep: #6 @
{
\exp_after:wN \__fp_sanitize:Nw
\int_value:w
@@ -21308,7 +21562,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_reverse_args:Nww
\fi:
\exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl
- {#1} {#2} {#3} {#4} {0000} {0000} ;
+ {#1} {#2} {#3} {#4} {0000} {0000} \__fp_sep:
{
\exp_after:wN \exp_stop_f:
\int_value:w \__fp_int_eval:w \c__fp_prec_int
@@ -21322,16 +21576,16 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_eval:n
{
\exp_after:wN \__fp_randint:ww
- \int_value:w \int_eval:n {#1} \exp_after:wN ;
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#1} \exp_after:wN \__fp_sep:
+ \int_value:w \int_eval:n {#2} \__fp_sep:
}
}
-\cs_new:Npn \__fp_randint:ww #1; #2;
+\cs_new:Npn \__fp_randint:ww #1\__fp_sep: #2\__fp_sep:
{
\if_int_compare:w #1 > #2 \exp_stop_f:
\msg_expandable_error:nnnn
{ kernel } { randint-backward-range } {#1} {#2}
- \__fp_randint:ww #2; #1;
+ \__fp_randint:ww #2\__fp_sep: #1\__fp_sep:
\else:
\if_int_compare:w \__fp_int_eval:w #2
\if_int_compare:w #1 > \c_zero_int
@@ -21355,46 +21609,49 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_randint_wide_aux:w
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
- \tex_uniformdeviate:D 268435456 ;
+ \tex_uniformdeviate:D 268435456 \__fp_sep:
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
- \tex_uniformdeviate:D 268435456 ;
+ \tex_uniformdeviate:D 268435456 \__fp_sep:
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
\int_value:w \__fp_int_eval:w 131072 +
\exp_after:wN \__fp_randint_split_o:Nw
\int_value:w
- \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } ;
+ \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } \__fp_sep:
.
}
-\cs_new:Npn \__fp_randint_split_o:Nw #1#2 ;
+\cs_new:Npn \__fp_randint_split_o:Nw #1#2 \__fp_sep:
{
\if_meaning:w 0 #1
- 0 \exp_after:wN ; \int_value:w 0
+ 0 \exp_after:wN \__fp_sep: \int_value:w 0
\else:
\exp_after:wN \__fp_randint_split_aux:w
- \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 ;
+ \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 \__fp_sep:
+ #1#2
\fi:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_randint_split_aux:w #1 ;
+\cs_new:Npn \__fp_randint_split_aux:w #1 \__fp_sep:
{
- #1 \exp_after:wN ;
+ #1 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w - #1 * 16384
}
-\cs_new:Npn \__fp_randint_wide_aux:w #1;#2; #3;#4; #5;#6;#7; .
+\cs_new:Npn \__fp_randint_wide_aux:w
+ #1\__fp_sep:#2\__fp_sep: #3\__fp_sep:#4\__fp_sep:
+ #5\__fp_sep:#6\__fp_sep:#7\__fp_sep: .
{
\exp_after:wN \__fp_randint_wide_auxii:w
\int_value:w \__fp_int_eval:w #5 * #3 + #6 * #1 +
(#5 * #4 + #6 * #3 + #7 * #1 +
(#5 * #2 + #7 * #3 +
(16384 * #6 + #7) * (16384 * #4 + #2) / 268435456) / 16384
- ) / 16384 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 ;
- #1 ; #5 ;
+ ) / 16384 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 \__fp_sep:
+ #1 \__fp_sep: #5 \__fp_sep:
}
-\cs_new:Npn \__fp_randint_wide_auxii:w #1; #2; #3; #4;
+\cs_new:Npn \__fp_randint_wide_auxii:w
+ #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4\__fp_sep:
{
\if_int_odd:w 0
\if_int_compare:w #1 = #2 \else: \exp_stop_f: \fi:
@@ -21421,7 +21678,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_int_compare:w #1 < \c_one_int
\msg_expandable_error:nnnn
{ kernel } { randint-backward-range } { 1 } {#1}
- \__fp_randint:ww #1; 1;
+ \__fp_randint:ww #1\__fp_sep: 1\__fp_sep:
\else:
\if_int_compare:w #1 > \c__kernel_randint_max_int
\__kernel_randint:nn { 1 } {#1}
@@ -21469,7 +21726,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_last_unbraced:Nf \__fp_types_binary_auxi:Nww
{ \__fp_types_cs_to_op:N #1 }
}
-\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3; #4#5; @
+\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3\__fp_sep: #4#5\__fp_sep: @
{
\exp_after:wN \__fp_types_binary_auxii:NNww
\cs:w
@@ -21479,7 +21736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_type_from_scan:N #4
_o:ww
\cs_end:
- #1 #2#3; #4#5;
+ #1 #2#3\__fp_sep: #4#5\__fp_sep:
}
\cs_new:Npn \__fp_types_binary_auxii:NNww #1#2
{
@@ -21490,12 +21747,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
%% File l3fp-symbolic.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
\fp_new:N \l__fp_symbolic_fp
\scan_new:N \s__fp_symbolic
-\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3;
+\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3\__fp_sep:
{
\msg_error:nne { fp } { misused-fp }
{
\__fp_to_tl_dispatch:w
- \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2};
+ \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2}\__fp_sep:
}
}
\cs_new:Npn \__fp_if_has_symbolic:nTF #1
@@ -21508,7 +21765,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_if_has_symbolic_aux:w
#1 \s__fp_symbolic #2 \s__fp_mark #3#4 \s__fp_stop { #3 }
\cs_new:Npn \__fp_exp_after_symbolic_f:nw
- #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4;
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4\__fp_sep:
{
\exp_after:wN \__fp_exp_after_symbolic_aux:w
\exp:w
@@ -21520,13 +21777,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_array_f:w #3 \s__fp_expr_stop
\exp_after:wN
}
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w #1
}
-\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2;
+\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2\__fp_sep:
{
\__fp_if_has_symbolic:nTF {#2}
- { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} ; }
+ { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} \__fp_sep: }
{ #1 #2 @ \prg_do_nothing: }
}
\cs_new:Npn \__fp_exp_after_symbolic_loop:N #1
@@ -21536,11 +21793,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w
\__fp_exp_after_symbolic_loop:N
}
-\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2; #3;
+\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2\__fp_sep: #3\__fp_sep:
{
\__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_types_binary:Nww #1 , { #2; #3; } ;
+ \__fp_types_binary:Nww #1 , { #2\__fp_sep: #3\__fp_sep: } \__fp_sep:
}
\cs_set_protected:Npn \__fp_tmp:w #1#2
{
@@ -21556,11 +21813,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\tl_map_inline:nn { + - * / ^ & | }
{ \exp_args:Nc \__fp_tmp:w { __fp_#1_o:ww } {#1} }
-\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3; @
+\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3\__fp_sep: @
{
\__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_types_unary:NNw #1#2 , { #3; } ;
+ \__fp_types_unary:NNw #1#2 , { #3\__fp_sep: } \__fp_sep:
}
\tl_map_inline:nn
{
@@ -21586,11 +21843,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_tmp:w { decimal } { 0 } \__fp_to_decimal_dispatch:w
\__fp_tmp:w { int } { 0 } \__fp_to_int_dispatch:w
\__fp_tmp:w { scientific } { nan } \__fp_to_scientific_dispatch:w
-\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2; #3#4#5
+\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2\__fp_sep: #3#4#5
{
\str_if_eq:nnTF {#1} { \s__fp_symbolic }
- { \__fp_invalid_operation:nnw {#3} {#4} #1#2; }
- { #5 #1#2; }
+ { \__fp_invalid_operation:nnw {#3} {#4} #1#2\__fp_sep: }
+ { #5 #1#2\__fp_sep: }
}
\cs_new:Npn \__fp_symbolic_cs_arg_to_fn:NN #1
{
@@ -21611,7 +21868,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_new:Npn \__fp_symbolic_to_tl:w
- \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4;
+ \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4\__fp_sep:
{
\str_case:nnTF {#1}
{
@@ -21630,13 +21887,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
( \__fp_to_tl_dispatch:w #3 )
}
}
-\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2; #3; @
+\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2\__fp_sep: #3\__fp_sep: @
{
\use:e
{
- ( \__fp_to_tl_dispatch:w #2; )
+ ( \__fp_to_tl_dispatch:w #2\__fp_sep: )
\__fp_types_cs_to_op:N #1
- ( \__fp_to_tl_dispatch:w #3; )
+ ( \__fp_to_tl_dispatch:w #3\__fp_sep: )
}
}
\cs_new:Npn \__fp_symbolic_function_to_tl:Nw #1, #2@
@@ -21684,7 +21941,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\token_if_eq_meaning:NNTF #2 \prg_do_nothing:
{
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_variable_o:w #1 , { } ;
+ \__fp_variable_o:w #1 , { } \__fp_sep:
}
{
\exp_after:wN \s__fp_symbolic
@@ -21694,7 +21951,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_symbolic_loop:N #1
{ , \exp:w \use_none:nn }
\exp_after:wN \exp_end:
- \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep:
#2
}
}
@@ -21705,7 +21962,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_exp_after_symbolic_f:nw { \__fp_parse_infix:NN }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_variable_o:w #2 , { } ;
+ \__fp_variable_o:w #2 , { } \__fp_sep:
}
\exp_args:NNc \__fp_variable_set_parsing_aux:NNn #1
{ __fp_parse_word_#2:N } {#2}
@@ -21870,7 +22127,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_array_f:w #2 \s__fp_expr_stop
\exp_after:wN
}
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
}
\int_new:N \l__fp_function_arg_int
@@ -21902,7 +22159,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:N \__fp_symbolic_chk:w
\exp_not:N \__fp_function_arg_o:w
\int_use:N \l__fp_function_arg_int
- ########1 , { } ;
+ ########1 , { } \__fp_sep:
}
}
\cs_set:Npn \__fp_function_arg_o:w ##1 @
@@ -21914,7 +22171,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_symbolic_loop:N ##1
{ , \tex_romannumeral:D \use_none:nn }
\exp_after:wN \c_zero_int
- \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep:
}
\fp_set:Nn \l__fp_symbolic_fp {#4}
\use:e
@@ -21951,9 +22208,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2
}
\cs_new:Npn \__fp_function_arg_few:w #1 @ { \exp_after:wN \c_nan_fp }
-\cs_new:Npn \__fp_function_arg_get:w #1#2#3; #4 @
+\cs_new:Npn \__fp_function_arg_get:w #1#2#3\__fp_sep: #4 @
{
- \__fp_exp_after_array_f:w #3; \s__fp_expr_stop
+ \__fp_exp_after_array_f:w #3\__fp_sep: \s__fp_expr_stop
\exp_after:wN \exp_stop_f:
}
\cs_new_protected:Npn \fp_clear_function:n #1
@@ -22028,25 +22285,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_array_gset:NNNNww
\exp_after:wN #1
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w \__fp_parse:n {#3}
}
\cs_generate_variant:Nn \fparray_gset:Nnn { c }
-\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
+\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 \__fp_sep: #6 \__fp_sep:
{
\__fp_array_bounds:NNnTF \msg_error:nneee #4 {#5}
{
\exp_after:wN \__fp_change_func_type:NNN
- \__fp_use_i_until_s:nw #6 ;
+ \__fp_use_i_until_s:nw #6 \__fp_sep:
\__fp_array_gset:w
\__fp_array_gset_recover:Nw
- #6 ; {#5} #1 #2 #3
+ #6 \__fp_sep: {#5} #1 #2 #3
}
{ }
}
-\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 ;
+\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
\exp_after:wN #1 \c_nan_fp
}
\cs_new_protected:Npn \__fp_array_gset:w \s__fp \__fp_chk:w #1#2
@@ -22060,7 +22317,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new_protected:Npn \__fp_array_gset_normal:w
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 ; #6#7#8#9
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 \__fp_sep: #6#7#8#9
{
\__kernel_intarray_gset:Nnn #7 {#6} {#2}
\__kernel_intarray_gset:Nnn #8 {#6}
@@ -22090,7 +22347,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_array_item:NwN
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \__fp_sep:
\__fp_to_decimal:w
}
\cs_generate_variant:Nn \fparray_item:Nn { c }
@@ -22098,11 +22355,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_array_item:NwN
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \__fp_sep:
\__fp_to_tl:w
}
\cs_generate_variant:Nn \fparray_item_to_tl:Nn { c }
-\cs_new:Npn \__fp_array_item:NwN #1#2 ; #3
+\cs_new:Npn \__fp_array_item:NwN #1#2 \__fp_sep: #3
{
\__fp_array_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
{ \exp_after:wN \__fp_array_item:NNNnN #1 {#2} #3 }
@@ -22111,22 +22368,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_array_item:NNNnN #1#2#3#4
{
\exp_after:wN \__fp_array_item:N
- \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN ;
- \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN ;
- \int_value:w \__kernel_intarray_item:Nn #1 {#4} ;
+ \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN \__fp_sep:
+ \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN \__fp_sep:
+ \int_value:w \__kernel_intarray_item:Nn #1 {#4} \__fp_sep:
}
\cs_new:Npn \__fp_array_item:N #1
{
\if_meaning:w 0 #1 \exp_after:wN \__fp_array_item_special:w \fi:
\__fp_array_item:w #1
}
-\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 ; 1 #7 ;
+\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 \__fp_sep: 1 #7 \__fp_sep:
{
\exp_after:wN \__fp_array_item_normal:w
\int_value:w \if_meaning:w #1 1 0 \else: 2 \fi: \exp_stop_f:
- #7 ; {#2#3#4#5} {#6} ;
+ #7 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep:
}
-\cs_new:Npn \__fp_array_item_special:w #1 ; #2 ; #3 ; #4
+\cs_new:Npn \__fp_array_item_special:w #1 \__fp_sep: #2 \__fp_sep: #3 \__fp_sep: #4
{
\exp_after:wN #4
\exp:w \exp_end_continue_f:w
@@ -22138,8 +22395,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: \exp_after:wN \c_minus_inf_fp
\fi:
}
-\cs_new:Npn \__fp_array_item_normal:w #1 #2#3#4#5 #6 ; #7 ; #8 ; #9
- { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} ; }
+\cs_new:Npn \__fp_array_item_normal:w
+ #1 #2#3#4#5 #6 \__fp_sep: #7 \__fp_sep: #8 \__fp_sep: #9
+ { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} \__fp_sep: }
\prg_new_eq_conditional:NNn \fparray_if_exist:N \cs_if_exist:N
{ TF , T , F , p }
\prg_new_eq_conditional:NNn \fparray_if_exist:c \cs_if_exist:c
@@ -22287,6 +22545,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_generate_variant:Nn \bitset_to_arabic:N { c }
\cs_generate_variant:Nn \bitset_to_bin:N { c }
+\cs_new_eq:NN \bitset_use:N \tl_use:N
+\cs_generate_variant:Nn \bitset_use:N { c }
\cs_new:Npn \bitset_item:Nn #1#2
{
\prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2}
@@ -22669,8 +22929,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_begin:
\int_set:Nn \tex_endlinechar:D { 32 }
\char_set_catcode_invalid:n { 0 }
- \bool_lazy_or:nnTF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:TF
{ \int_step_function:nN { 31 } \char_set_catcode_invalid:n }
{ \int_step_function:nN { 31 } \char_set_catcode_active:n }
\int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n
@@ -22695,8 +22954,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\char_set_catcode_group_end:n { 125 } % right brace
\char_set_catcode_space:n { 126 } % tilde
\char_set_catcode_invalid:n { 127 } % ^^?
- \bool_lazy_or:nnF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:F
{ \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
\__cctab_gset:n { \c_code_cctab }
\group_end:
@@ -24475,9 +24733,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_args:Ne \tl_to_str:n
{ \str_map_function:nN {#1} \__str_convert_pdfname:n }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__str_convert_pdfname:n #1
{
@@ -24884,27 +25140,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__tl_analysis_map:NwNw #1
}
\cs_new_protected:Npn \tl_analysis_show:N
- { \__tl_analysis_show:NNN \msg_show:nneeee \tl_show:N }
+ { \__tl_analysis_show:NNnnN \msg_show:nneeee \tl_show:N {} {} }
\cs_new_protected:Npn \tl_analysis_log:N
- { \__tl_analysis_show:NNN \msg_log:nneeee \tl_log:N }
-\cs_new_protected:Npn \__tl_analysis_show:NNN #1#2#3
{
- \tl_if_exist:NTF #3
+ \__tl_analysis_show:NNnnN \msg_log:nneeee \tl_log:N
+ { \iow_newline: >~ . } { . }
+ }
+\cs_new_protected:Npn \__tl_analysis_show:NNnnN #1#2#3#4#5
+ {
+ \tl_if_exist:NTF #5
{
- \exp_args:No \__tl_analysis:n {#3}
+ \exp_args:No \__tl_analysis:n {#5}
#1 { tl } { show-analysis }
- { \token_to_str:N #3 } { \__tl_analysis_show: } { } { }
+ { \token_to_str:N #5 } { \__tl_analysis_show: } {#3} {#4}
}
{ #2 #3 }
}
\cs_new_protected:Npn \tl_analysis_show:n
- { \__tl_analysis_show:Nn \msg_show:nneeee }
+ { \__tl_analysis_show:Nnnn \msg_show:nneeee {} {} }
\cs_new_protected:Npn \tl_analysis_log:n
- { \__tl_analysis_show:Nn \msg_log:nneeee }
-\cs_new_protected:Npn \__tl_analysis_show:Nn #1#2
+ { \__tl_analysis_show:Nnnn \msg_log:nneeee { \iow_newline: >~ . } { . } }
+\cs_new_protected:Npn \__tl_analysis_show:Nnnn #1#2#3#4
{
- \__tl_analysis:n {#2}
- #1 { tl } { show-analysis } { } { \__tl_analysis_show: } { } { }
+ \__tl_analysis:n {#4}
+ #1 { tl } { show-analysis } { } { \__tl_analysis_show: } {#2} {#3}
}
\cs_new:Npn \__tl_analysis_show:
{
@@ -25237,8 +25496,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
The~token~list~ \tl_if_empty:nF {#1} { #1 ~ }
\tl_if_empty:nTF {#2}
- { is~empty }
- { contains~the~tokens: #2 }
+ { is~empty #3 }
+ { contains~the~tokens: #2 #4 }
}
%% File: l3regex.dtx
\cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D
@@ -30569,11 +30828,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_select:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\__color_finalise_current:
\__color_select:N \l__color_current_tl
}
+\cs_new_protected:Npn \__color_select_main:Nnn #1#2#3
+ {
+ \use:e
+ {
+ \exp_not:N \__color_select_main:Nw \exp_not:N #1
+ \exp_not:n {#2} / / \exp_not:N \s__color_mark
+ #3 / / \exp_not:N \s__color_stop
+ }
+ }
\cs_new_protected:Npn \__color_select_main:Nw
#1 #2 / #3 / #4 \s__color_mark #5 / #6 / #7 \s__color_stop
{
@@ -30620,10 +30887,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \color_math:nnn #1#2#3
{
\__color_math:nn {#3}
- {
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
- }
+ { \__color_select_main:Nnn \l__color_current_tl {#1} {#2} }
}
\cs_new_protected:Npn \__color_math:nn #1#2
{
@@ -30721,14 +30985,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_fill:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { fill }
}
\cs_new_protected:Npn \color_stroke:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke }
}
\cs_new_protected:Npn \__color_draw:nnn #1#2#3
@@ -30857,6 +31119,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_new:c { l__color_named_._prop }
\tl_new:c { l__color_named_._tl }
\tl_set:ce { l__color_named_._tl } { \__color_model:N \l__color_current_tl }
+\prop_put:cve { l__color_named_._prop } { l__color_named_._tl }
+ { \__color_values:N \l__color_current_tl }
\cs_new_protected:Npn \color_export:nnN #1#2#3
{
\group_begin:
@@ -30869,8 +31133,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_export:nnnN #1#2#3#4
{
- \__color_select_main:Nw #4
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn #4 {#1} {#2}
\__color_export:nN {#3} #4
}
\cs_new_protected:Npn \__color_export:nN #1#2
@@ -32263,7 +32526,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \vcoffin_gset_end: { }
\cs_new_protected:Npn \coffin_set_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_set_eq:NN #1 #2
\prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32275,7 +32538,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \coffin_gset_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_gset_eq:NN #1 #2
\prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32296,6 +32559,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \coffin_dp:c \box_dp:c
\cs_new_eq:NN \coffin_ht:N \box_ht:N
\cs_new_eq:NN \coffin_ht:c \box_ht:c
+\cs_new_eq:NN \coffin_ht_plus_dp:N \box_ht_plus_dp:N
+\cs_new_eq:NN \coffin_ht_plus_dp:c \box_ht_plus_dp:c
\cs_new_eq:NN \coffin_wd:N \box_wd:N
\cs_new_eq:NN \coffin_wd:c \box_wd:c
\cs_new_protected:Npn \__coffin_get_pole:NnN #1#2#3
@@ -33360,9 +33625,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { luatex } { }
%% File: l3unicode.dtx
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \codepoint_str_generate:n #1
{
@@ -33540,9 +33803,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:Ne \__codepoint_to_nfd:n { \int_eval:n {#1} } }
\cs_new:Npn \__codepoint_to_nfd:n #1
{ \__codepoint_to_nfd:nn {#1} { \char_value_catcode:n {#1} } }
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\cs_gset:Npn \__codepoint_to_nfd:n #1
{
@@ -33740,15 +34001,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_set:ce { l__codepoint_ #1 _block_tl }
{ \int_eval:n { \tl_use:c { l__codepoint_ #1 _block_tl } + 1 } }
}
- \prg_replicate:nn {#2}
+ \int_step_inline:nnn
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 }
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 }
{
- \tl_set:ce { l__codepoint_ #1 _pos_tl }
- { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 } }
\exp_args:Nc \__kernel_intarray_gset:Nnn
{ g__codepoint_ #1 _index_intarray }
- { \tl_use:c { l__codepoint_ #1 _pos_tl } }
+ {##1}
\l__codepoint_matched_block_tl
}
+ \tl_set:ce { l__codepoint_ #1 _pos_tl }
+ { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 } }
\clist_clear:c { l__codepoint_ #1 _block_clist }
}
\cs_set_protected:Npn \__codepoint_finalise_blocks:
@@ -34128,9 +34391,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \prg_return_false: }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} }
}
@@ -34168,9 +34429,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__text_codepoint_process:nNNNN #1#2#3#4#5
{ #1 {#2#3#4#5} }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\prg_new_conditional:Npnn
\__text_codepoint_compare:nNn #1#2#3 { TF , p }
@@ -35162,9 +35421,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_change_case_catcode:nn #1#2
{ \__text_char_catcode:N #1 }
@@ -36278,9 +36535,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
}
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
index 6f417c325c5..355f6dc1bbe 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `generic,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-07-20}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
index 512497e7a09..5e107c4ac95 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `2ekernel,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-07-20}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
index f436dc4daf3..8478874bd2b 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
@@ -11,7 +11,7 @@
-- l3intarray.dtx (with options: `package,lua')
-- l3pdf.dtx (with options: `package,lua')
--
--- Copyright (C) 1990-2024 The LaTeX Project
+-- Copyright (C) 1990-2025 The LaTeX Project
--
-- It may be distributed and/or modified under the conditions of
-- the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
index 10c4ecbc700..114fe98424d 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `package,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-07-20}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
index 000b6dcb41c..4dd189fdef2 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
@@ -6,7 +6,7 @@
%%
%% l3debug.dtx (with options: `package')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-07-20}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-01-18}{}{L3 Debugging support}
\scan_new:N \s__debug_stop
\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
\quark_new:N \q__debug_recursion_tail
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
index 4d4876f5607..14e4c01f6ac 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
@@ -6,7 +6,7 @@
%%
%% l3doc.dtx (with options: `class')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-07-20}{}
+\ProvidesExplClass{l3doc}{2025-01-18}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -91,8 +91,8 @@
\bool_new:N \l__codedoc_in_implementation_bool
\bool_new:N \g__codedoc_typeset_documentation_bool
\bool_new:N \g__codedoc_typeset_implementation_bool
-\bool_set_true:N \g__codedoc_typeset_documentation_bool
-\bool_set_true:N \g__codedoc_typeset_implementation_bool
+\bool_gset_true:N \g__codedoc_typeset_documentation_bool
+\bool_gset_true:N \g__codedoc_typeset_implementation_bool
\tl_new:N \g__codedoc_base_name_tl
\prop_new:N \l__codedoc_variants_prop
\clist_new:N \l__codedoc_function_label_clist
@@ -439,12 +439,22 @@
\raggedbottom
\bool_if:NT \g__codedoc_lmodern_bool
{
- \RequirePackage[T1]{fontenc}
- \RequirePackage{lmodern}
- \group_begin:
- \ttfamily
- \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
- \group_end:
+ \sys_if_engine_opentype:TF
+ {
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{TU}{lmtt}{m}{it}
+ {<-> \UnicodeFontFile{lmmonoslant10-regular}{}}{}
+ \group_end:
+ }
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{lmodern}
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
+ \group_end:
+ }
}
\RequirePackage{hypdoc}
\cs_gset:Npn \MakePrivateLetters
@@ -789,17 +799,20 @@
\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
\cs_new_protected:Npn \__codedoc_names_get_seq:nN #1#2
{
- \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
\bool_if:NTF \l__codedoc_names_verb_bool
{
\seq_clear:N #2
- \seq_put_right:NV #2 \l__codedoc_tmpa_tl
+ \seq_put_right:No #2 { \tl_to_str:n {#1} }
}
{
+ \tl_set:Nn \l__codedoc_tmpa_tl {#1}
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \iow_char:N \^^M \c_percent_str }
+ { \exp_not:N \obeyedline \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \exp_not:N \obeyedline }
+ \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:N \l__codedoc_tmpa_tl }
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \token_to_str:N \obeyedline \c_space_tl \c_percent_str }
+ { \iow_char:N \^^M \c_percent_str }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }
@@ -1023,7 +1036,7 @@
\cs_new_protected:Npn \__codedoc_function_typeset_stop:
{
\par
- \dim_set:Nn \prevdepth { \box_dp:N \l__codedoc_descr_coffin }
+ \dim_set:Nn \prevdepth { \coffin_dp:N \l__codedoc_descr_coffin }
\allowbreak
}
\cs_new_protected:Npn \__codedoc_function_init:
@@ -1059,7 +1072,7 @@
\dim_zero:N \l__codedoc_trial_width_dim
\hcoffin_set:Nn \l__codedoc_functions_coffin { \__codedoc_typeset_functions: }
\dim_set:Nn \l__codedoc_trial_width_dim
- { \box_wd:N \l__codedoc_functions_coffin }
+ { \coffin_wd:N \l__codedoc_functions_coffin }
\bool_set:Nn \l__codedoc_long_name_bool
{ \dim_compare_p:nNn \l__codedoc_trial_width_dim > \marginparwidth }
}
@@ -1087,7 +1100,7 @@
\coffin_join:NnnNnnnn
\l__codedoc_output_coffin {l} {b}
\l__codedoc_descr_coffin {l} {t}
- {0.75\marginparwidth + \marginparsep} {-\medskipamount}
+ {\marginparwidth + \marginparsep} {-\medskipamount}
\coffin_typeset:Nnnnn \l__codedoc_output_coffin
{\l__codedoc_descr_coffin-l} {\l__codedoc_descr_coffin-t}
{0pt} {0pt}
@@ -1136,7 +1149,6 @@
{ \__codedoc_typeset_variant_list:nN {#1} #2 }
\\
}
-\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { e }
\cs_new_protected:Npn \__codedoc_function_index:n #1
{
\seq_gput_right:Nn \g_doc_functions_seq {#1}
@@ -1234,7 +1246,7 @@
{
\textwidth
\bool_if:NT \l__codedoc_long_name_bool
- { + 0.75 \marginparwidth - \l__codedoc_trial_width_dim }
+ { + \marginparwidth - \l__codedoc_trial_width_dim }
}
\hbox_gset:Nw \g__codedoc_syntax_box
\small \ttfamily
@@ -1707,7 +1719,7 @@
\AddToHook{env/variable/begin}{\def\footnote{\__codedoc_fn_footnote:nn{variable}}}
\newenvironment{TemplateInterfaceDescription}[1]
{
- \subsection{The~object~type~`#1'}
+ \subsection{The~template~type~`#1'}
\begingroup
\@beginparpenalty\@M
\description
@@ -1723,7 +1735,7 @@
}
\newenvironment{TemplateDescription}[2]
{
- \subsection{The~template~`#2'~(object~type~#1)}
+ \subsection{The~template~`#2'~(template~type~#1)}
\subsubsection*{Attributes:}
\begingroup
\@beginparpenalty\@M
@@ -1789,7 +1801,7 @@
{
\clist_map_inline:nn {#1}
{
- \clist_put_right:Nn \g_docinput_clist {##1}
+ \clist_gput_right:Nn \g_docinput_clist {##1}
\__codedoc_input:n {##1}
}
}
@@ -1883,7 +1895,7 @@
{ MMMMV - \filesep \int_use:N \c@CodelineNo }
}
}
-\tl_gclear:N \filesep
+\tl_clear_new:N \filesep
\cs_new_protected:Npn \__codedoc_index_page_hc:nn #1#2
{
\protected@write \@indexfile {}
@@ -2186,7 +2198,6 @@
{#2}
\l__codedoc_index_internal_bool
}
-\cs_generate_variant:Nn \__codedoc_special_index:nn { o }
\tl_new:N \l__codedoc_index_escaped_macro_tl
\tl_new:N \l__codedoc_index_escaped_key_tl
\cs_new_protected:Npn \__codedoc_special_index_module:nnnnN #1#2#3#4#5
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
index eda3985bd07..ab0a23bae62 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
@@ -6,7 +6,7 @@
%%
%% l3docstrip.dtx (with options: `program')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
index 485fa39a1df..334eb11de1c 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88591')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
index a7af4567560..e5efe83983e 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885910')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
index ec28015dd4c..4b1e383afdb 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885911')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
index b28db7deda2..9fdc01d2ab0 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885913')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
index a154a1c0cb5..35816cbc87c 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885914')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
index ca071e99247..f976fc6ab26 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885915')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
index 44d4a1ae608..273c55d245a 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885916')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
index d54a4820c7d..897c07532db 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88592')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
index d195b703b44..712722dcee3 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88593')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
index 2249de98bcc..9fe91bc8bb9 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88594')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
index e54409a6e1d..8d70b8a14b5 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88595')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
index e7c6e888cc0..c047db5f307 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88596')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
index 292b3600ee5..653f60578e1 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88597')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
index eef8f134bb1..d82350194bd 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88598')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
index cb640b641a3..677706e16b3 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88599')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
index ee69798ec39..d0fb0b78fa5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
@@ -33,7 +33,7 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
\def\ltlabbibversion{0.81b}
\ProvidesFile{bib-latex-lab-testphase.ltx}
[\ltlabbibdate\space v\ltlabbibversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
index 937f08d1e1c..41d2430e8e6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-11-25}
+\def\ltlabblockversion{0.8w}
\ProvidesFile{block-latex-lab-testphase.ltx}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
index 91ae548e191..765755ee106 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: documentmetadata-support.dtx
-\def\documentmetadatasupportversion{1.0h}
-\def\documentmetadatasupportdate{2024-03-26}
+\def\documentmetadatasupportversion{1.0j}
+\def\documentmetadatasupportdate{2024-09-13}
\RequirePackage{pdfmanagement-testphase}
@@ -44,12 +44,20 @@
{ \clist_new:N \g__pdfmanagement_firstaidoff_clist }
\tl_if_exist:NF \g__pdfmanagement_testphase_tl
{ \tl_new:N \g__pdfmanagement_testphase_tl }
+\cs_new_protected:Npn \@kernel@before@DocumentMetadata
+ {
+ \ifx\Umathcode\@undefined
+ \fontencoding{T1}
+ \renewcommand\encodingdefault{T1}
+ \fi
+ }
\cs_set_protected:Npn \DocumentMetadata #1
{
\cs_if_eq:NNTF \documentclass \@twoclasseserror
{ \msg_error:nn { meta } { after-class } }
{
+ \@kernel@before@DocumentMetadata
\bool_gset_true:N \g__pdfmanagement_active_bool
\keys_set_groups:nnn { document / metadata} {init}{ #1 }
%if no backend has been loaded force it now:
@@ -163,7 +171,7 @@
}
,_pdfstandard / unknown .code:n =
{
- \msg_warning:nnn{pdf}{unknown-standard}{#1}
+ \msg_error:nnn{pdf}{unknown-standard}{#1}
}
,testphase .multichoice:
,testphase / tagpdf .code:n =
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
index 7003ae1856d..6103a8fd9d6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
-
+\def\ltlabfirstaiddate{2024-11-23}
+\def\ltlabfirstaidversion{0.85i}
\ProvidesFile{firstaid-latex-lab-testphase.ltx}
[\ltlabfirstaiddate\space v\ltlabfirstaidversion\space
latex-lab wrapper firstaid]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
index 59fdaa63d95..9dff3eac3ec 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-11-21}
+\def\ltlabfloatversion{0.81g}
\ProvidesFile{float-latex-lab-testphase.ltx}
[\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
index 3cc259063d4..30d6cd9efd0 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesFile{graphic-latex-lab-testphase.ltx}
[\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
index cab7e10f301..0ca17cffdce 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
@@ -34,7 +34,7 @@
%%
%% File: latex-lab-amsmath.dtx
\ProvidesFile{latex-lab-amsmath.ltx}
- [2024-02-12 v0.1b amsmath adaptions]
+ [2024-09-18 v0.1c amsmath adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\AddToHook{package/amsmath/after}
@@ -45,7 +45,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip-\belowdisplayskip
\vbox{
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim\linewidth=\columnwidth
\else \parshape\@ne \@totalleftmargin \linewidth
@@ -84,7 +84,7 @@
\def\text@#1
{{
\int_gincr:N\g__math_mathchoice_int
- \tag_stop:
+ \tag_suspend:n{\text@}
\mathchoice
{
\__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
index 954efe086a5..3fb53a3934a 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
%%
%% Copyright (c) 1995-2011 Robin Fairbairns
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
index 2277a40c6f8..85a3b2b32a7 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
\ProvidesFile{latex-lab-footnotes.ltx}
[\ltlabfootnotedate\space v\ltlabfootnoteversion\space
@@ -57,7 +57,7 @@
\bool_new:N \l__fnote_autodetect_bool
\bool_set_true:N \l__fnote_autodetect_bool
\tl_new:N \l__fnote_currentstruct_tl
-\tl_set:Nn \l__fnote_currentstruct_tl {1}
+\tl_set:Nn \l__fnote_currentstruct_tl {2}
\cs_generate_variant:Nn \hook_gput_code:nnn{nne}
\cs_generate_variant:Nn \tag_struct_use:n {e}
\cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 {
@@ -157,6 +157,17 @@
\cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish:
\NewSocket{tagsupport/fnmark}{1}
\cs_set_eq:NN \@footnotemark \fnote_footnotemark:
+\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str }
+ {
+ \NewSocket{tagsupport/para/restore}{0}
+ \NewSocketPlug{tagsupport/para/restore}{default}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {text-unit}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_false:N\l__tag_para_flattened_bool
+ }
+ \AssignSocketPlug{tagsupport/para/restore}{default}
+ }
\cs_new_protected:Npn \fnote_footnotetext:n #1 {
\__fnote_debug_footnotetext:
\hook_use:n {fntext/before}
@@ -172,6 +183,7 @@
\floatingpenalty \@MM
\hsize\columnwidth
\@parboxrestore
+ \UseTaggingSocket{para/restore}
\parindent 1em % typical default used in \@makefntext moved up here
\def\@currentcounter{footnote}
\protected@edef \@currentlabel { \p@footnote \@thefnmark }
@@ -454,10 +466,7 @@
\cs_new_protected:Npn \__fnote_gput_ref:nn #1 #2 %#1 the structure number receiving the ref #2
{
- \tag_if_active:T
- {
- \tag_struct_gput:nne {#1}{ref}{\tag_struct_object_ref:e { #2 }}
- }
+ \tag_struct_gput:nnn {#1}{ref_num}{#2}
}
\cs_new_protected:Npn \fnote_gput_refs:nn #1 #2 % pair of numbers
{
@@ -465,8 +474,6 @@
\__fnote_gput_ref:nn {#2}{#1}
}
\cs_generate_variant:Nn \fnote_gput_refs:nn {ee}
-\tl_new:N \l__fnote_dflt_struct_tl
-\tl_set:Nn \l__fnote_dflt_struct_tl {1}
\NewSocketPlug{tagsupport/fntext/begin}{FENote}
{
\tag_mc_end_push:
@@ -475,10 +482,13 @@
\tag_struct_begin:n { tag=footnote }
}
{
- \tag_struct_begin:n { tag=footnote,parent=\l__fnote_dflt_struct_tl }
+ \tag_struct_begin:n
+ {
+ tag=footnote,
+ parent=\int_max:nn{2}{\tag_get:n{current_Sect}+0}
+ }
}
\tl_set:Ne \l__fnote_currentstruct_tl { \tag_get:n{struct_num} }
- \tag_struct_begin:n { tag=footnotelabel }\tag_struct_end:
\bool_if:NTF \l__fnote_autodetect_bool
{
\fnote_mark_gpop_all:ooN { \@thefnmark }{ \l_fnote_type_tl } \l__fnote_currentrefs_seq
@@ -505,7 +515,7 @@
%\seq_show:N\l__fnote_currentrefs_seq
\seq_map_inline:Nn\l__fnote_currentrefs_seq {\MakeLinkTarget*{footnote*.##1}}
\MakeLinkTarget*{footnote*.\l__fnote_currentstruct_tl}
- \tag_struct_begin:n { tag=NonStruct,parent=\l__fnote_currentstruct_tl +1 }
+ \tag_struct_begin:n { tag=footnotelabel,parent=\l__fnote_currentstruct_tl,firstkid }
\tag_mc_begin:n { tag=Lbl }
#1
\tag_mc_end:
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
index 1282f9d899c..762391f091f 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
@@ -34,39 +34,13 @@
%%
%%
%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
\ProvidesPackage{latex-lab-kernel-changes}
[\ltlabkerneldate\space v\ltlabkernelversion\space
General kernel and class changes]
\def\hyper@nopatch@counter{}
-\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
- \setcounter{#1}\z@
- \global\expandafter\let\csname cl@#1\endcsname\@empty
- \@addtoreset{#1}{@ckpt}%
- \global\expandafter\let\csname p@#1\endcsname\@empty
- \expandafter\gdef\csname theH#1\endcsname{\the\value{#1}}%new
- \expandafter
- \gdef\csname the#1\expandafter\endcsname\expandafter
- {\expandafter\@arabic\csname c@#1\endcsname}}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
- \expandafter\gdef\csname theH#1\endcsname{\csname theH#2\endcsname.\the\value{#1}}%
-}
-\gdef\theHenumi{\the\value{enumi}}
-\gdef\theHenumii{\the\value{enumii}}
-\gdef\theHenumiii{\the\value{enumiii}}
-\gdef\theHenumiv{\the\value{enumiv}}
-\gdef\theHequation{\the\value{equation}}
-\gdef\theHfootnote{\the\value{footnote}}
-\gdef\theHmpfootnote{\the\value{mpfootnote}}
-\def\@currentHref{}
-\def\refstepcounter#1{\stepcounter{#1}%
- \edef\@currentcounter{#1}%
- \xdef\@currentHref {#1.\csname theH#1\endcsname}%
- \protected@edef\@currentlabel
- {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
-}
-\let\@kernel@refstepcounter\refstepcounter
+
\def\toclevel@document{-10}
\def\toclevel@part{-1}
\def\toclevel@chapter{0}
@@ -78,20 +52,23 @@
\def\toclevel@figure{1}
\def\toclevel@table{1}
\ExplSyntaxOn
-\AddToHookWithArguments{cmd/MakeLinkTarget/after}
- {
- \tag_if_active:T
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_str }
+ {
+ \AddToHookWithArguments{cmd/MakeLinkTarget/after}
+ {
+ \tag_if_active:T
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
}
\ExplSyntaxOff
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ifdefined\directlua
\ifnum\outputmode > 0
\pdfvariable gentounicode =1
@@ -104,23 +81,26 @@
\input{glyphtounicode-cmex}
\fi
\ExplSyntaxOn
-\int_new:N\g__kernel_target_int
-\RenewDocumentCommand\MakeLinkTarget{sO{}m}
- {%
- \ifvmode
- \special{}%
- \else
- \@savsf\spacefactor
- \smash{}%
- \spacefactor\@savsf
- \fi
- \IfBooleanTF {#1}
- {
- \tl_gset:Ne \@currentHref {#3}
- }
- {
- \int_gincr:N\g__kernel_target_int
- \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
+ {
+ \int_new:N\g__kernel_target_int
+ \RenewDocumentCommand\MakeLinkTarget{sO{}m}
+ {%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
index 343a184d379..e76fcff474e 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-math.dtx
-\def\ltlabmathdate{2024-04-16}
-\def\ltlabmathversion{0.5j}
+\def\ltlabmathdate{2024-11-26}
+\def\ltlabmathversion{0.6j}
\ProvidesFile{latex-lab-math.ltx}
[\ltlabmathdate\space
v\ltlabmathversion\space
@@ -48,6 +48,7 @@
\tl_new:N \g__math_grabbed_math_tl
\tl_new:N \l__math_tmpa_tl
\skip_new:N \l__math_tmpa_skip
+\str_new:N \l__math_tmpa_str
\tl_new:N \l__math_content_alt_tl
\tl_new:N \l__math_content_actual_tl
\tl_new:N \l__math_content_AF_source_tl
@@ -74,14 +75,16 @@
\bool_new:N\g__tag_math_mathml_AF_bool
\bool_new:N\l__tag_math_mathml_pane_bool
\bool_new:N\l__tag_math_alt_bool
+\tl_new:N\g__tag_math_luamml_tl
+\tl_gset:Nn\g__tag_math_luamml_tl {0}
\int_new:N\g__math_mathml_total_int
\int_new:N\g__math_mathml_int
\int_new:N\g__math_math_total_int
\int_new:N\g__math_mathml_AF_found_int
\int_new:N\g__math_mathml_AF_attached_int
\clist_new:N\l__tag_math_mathml_files_clist
-\clist_put_right:Ne\l__tag_math_mathml_files_clist {\c_sys_jobname_str-mathml}
-
+\clist_put_right:Ne\l__tag_math_mathml_files_clist
+ {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml}
\cs_new_protected:Npn \__math_AF_mml:nnnn #1 #2 #3 #4
{
\int_gincr:N \g__math_mathml_total_int
@@ -108,28 +111,305 @@
\endgroup
\__math_AF_mml:nnnn{#1}{#2}{#3}{#4}
}
+\tl_const:Nn \c__math_mathml_write_init_tl
+ {
+ <!DOCTYPE~html>
+ \iow_newline:
+ <html>
+ \iow_newline:
+ }
+\tl_new:N \l__math_mathml_write_before_tl
+\tl_const:Nn \c__math_mathml_write_after_tl
+ {
+ \iow_newline:
+ </div>
+ \iow_newline:
+ }
+\tl_const:Nn \c__math_mathml_write_final_tl
+ {
+ </html>
+ }
-\socket_new:nn {tagsupport/math/mathml/write}{0}
-\socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
- {
+\socket_new:nn {tagsupport/math/mathml/write/prepare}{0}
+\socket_new_plug:nnn{tagsupport/math/mathml/write/prepare}{On}
+ {
\str_set:NV\l__math_tmpa_str\l__math_content_AF_source_tl
\str_replace_all:Nnn\l__math_tmpa_str{&}{&amp;}
\str_replace_all:Nnn\l__math_tmpa_str{<}{&lt;}
+ \tl_set:Nn \l__math_mathml_write_before_tl
+ {
+ <div>
+ \iow_newline:
+ <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
+ \iow_newline:
+ <p>\l__math_tmpa_str</p>
+ \iow_newline:
+ <p>\l__math_content_hash_tl </p>
+ \iow_newline:
+ }
+ }
+\cs_new_protected:Npn\__math_provide_luamml_commands:
+ {
+ \providecommand\luamml_flag_structelem:{}
+ \cs_if_free:NT \luamml_structelem:
+ {
+ \cs_set_eq:NN\luamml_structelem:\luamml_flag_structelem:
+ }
+ \providecommand\luamml_flag_process:{}
+ \cs_if_free:NT \luamml_process:
+ {
+ \cs_set_eq:NN\luamml_process:\luamml_flag_process:
+ }
+ \providecommand\luamml_flag_ignore:{}
+ \cs_if_free:NT \luamml_ignore:
+ {
+ \cs_set_eq:NN\luamml_ignore:\luamml_flag_ignore:
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \__math_correct_luamml_array_patches:
+ {
+ \AddToHook{package/array/after}
+ {
+ \cs_set:Npn \endarray
+ {
+ \tbl_crcr:n{endarray}
+ \__luamml_array_save_array:
+ \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \egroup
+ \mode_if_math:T { \__luamml_array_finalize_array: }
+ \@arrayright
+ \gdef \@preamble {}
+ }
+ \cs_set:Npn \@classz
+ {
+ \@classx
+ \@tempcnta \count@
+ \prepnext@tok
+ \@addtopreamble {
+ \ifcase \@chnum
+ \hfil
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 0~
+ }
+ \do@row@strut
+ \hfil
+ \or
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 1~
+ }
+ \do@row@strut
+ \hfil
+ \or
+ \hfil
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 2~
+ }
+ \do@row@strut
+ \or
+ \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \ar@align@mcell
+ \do@row@strut
+ \or
+ \vtop \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \do@row@strut
+ \or
+ \vbox \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \do@row@strut
+ \fi
+ }
+ \prepnext@tok
+ }
+ }
+ }
+ \AddToHook{begindocument/before}
+ {
+ \str_case:on \g__math_luamml_load_tl
+ {
+ { 1 } {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
+ {
+ \__math_luamml_activate_write:
+ }
+ }
+ {-1 } {
+ \AddToHook{begindocument/end}
+ {
+ \msg_note:nnnn { tag }
+ { luamml-status }{ disabled }{ not~create }
+ }
+ }
+ { 0 }
+ {
+ \@ifpackageloaded { unicode-math }
+ {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
+ {
+ \__math_luamml_activate_write:
+ }
+ }
+ { \msg_warning:nn { tag }{ unicode-math-missing } }
+ }
+ }
+ \__math_provide_luamml_commands:
+ }
+ }
+ {
+ \__math_provide_luamml_commands:
+ }
+\msg_new:nnn { tag }{ luamml-status }
+ {
+ luamml~has~been~#1~and~will~#2~an~MathML~file.
+ }
+
+\msg_new:nnn { tag }{ unicode-math-missing }
+ {
+ The~package~unicode-math~is~missing\\
+ luamml~will~not~create~an~MathML~file.\\
+ To~avoid~this~warning~load~unicode-math~\\
+ or~disable~luamml~with~\\
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=false}}\\
+ or~force~luamml~with~\\
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=true}}
+ }
+\cs_new_protected:Npn \__math_luamml_activate_write:
+ {
+ \bool_if:NT \g__math_luamml_write_bool
+ {
+ \bool_gset_true:N\g__tag_math_mathml_AF_bool
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
+ \AssignSocketPlug{tagsupport/math/substruct/end}{single}
+ \int_set:Nn \l__luamml_pretty_int { 7 }
+ \RegisterFamilyMapping\symsymbols{oms}
+ \RegisterFamilyMapping\symletters{oml}
+ \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
+ \iow_new:N \g__math_luamml_iow
+ \iow_open:Nn \g__math_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
+ \iow_now:Ne \g__math_luamml_iow { \c__math_mathml_write_init_tl }
+ \cs_new:Npn \__math_luamml_output_hook:n ##1
+ {
+ \tl_if_empty:NF \l__math_mathml_write_before_tl
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ {
+ \l__math_mathml_write_before_tl
+ ##1
+ \c__math_mathml_write_after_tl
+ }
+ }
+ }
+ \__luamml_register_output_hook:N \__math_luamml_output_hook:n
+ \AddToHook{enddocument/afterlastpage}
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ { \c__math_mathml_write_final_tl }
+ \iow_close:N \g__math_luamml_iow
+ }
+ \msg_note:nnnn { tag }
+ { luamml-status }{ enabled }{ create }
+ }
+ }
+\tl_new:N \g__math_luamml_load_tl
+\tl_gset:Nn \g__math_luamml_load_tl {0}
+\bool_new:N \g__math_luamml_write_bool
+\bool_gset_true:N \g__math_luamml_write_bool
+\cs_new:Npn\__math_luamml_structelem:{}
+\cs_new:Npn\__math_luamml_ignore:{}
+\msg_new:nnn { tag }{ PDF-2.0-recommended }
+ {
+ The~key~#1~will~not~work~properly~with~PDF~#2.\\
+ Switching~to~PDF~2.0~is~recommended.
+ }
+\keys_define:nn { __tag / setup }
+ {
+ math/mathml/luamml/load .choice: ,
+ math/mathml/luamml/load/true .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{1}},
+ math/mathml/luamml/load/false .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{-1}},
+ math/mathml/luamml/load .default:n = true,
+ math/mathml/luamml/load .usage:n=preamble,
+ math/mathml/structelem .choice:,
+ math/mathml/structelem/true .code:n =
+ {
+ \pdf_version_compare:NnT < {2.0}
+ {
+ \msg_warning:nnne { tag }{ PDF-2.0-recommended }
+ { math/mathml/structelem }{ \pdf_version: }
+ }
+ \cs_set:Npn\__math_luamml_structelem:{\luamml_structelem:}
+ \cs_set:Npn\__math_luamml_ignore:{\luamml_ignore:}
+ },
+ math/mathml/structelem/false .code:n =
+ {
+ \cs_set_eq:NN\__math_luamml_structelem:\prg_do_nothing:
+ \cs_set_eq:NN\__math_luamml_ignore:\prg_do_nothing:
+ },
+ math/mathml/structelem .default:n = true,
+ math/mathml/ignore .code:n = {\luamml_ignore:},
+ math/mathml/luamml/write .choice:,
+ math/mathml/luamml/write/true .code:n =
+ {
+ \tl_gset:Nn \g__math_luamml_load_tl{1}
+ \bool_gset_true:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write/false .code:n =
+ {
+ \bool_gset_false:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write .default:n = true,
+ math/mathml/luamml/write .usage:n=preamble,
+ math/mathml/luamml .bool_gset:N = \g__math_luamml_write_bool,
+ math/mathml/luamml .usage:n=preamble
+ }
+\socket_new:nn {tagsupport/math/mathml/write}{0}
+\socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
+ {
\iow_now:Ne \g__math_writedummy_iow
{
- \iow_newline:
- <div>
- \iow_newline:
- <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
- \iow_newline:
- <p>\l__math_tmpa_str</p>
- \iow_newline:
- <p>\l__math_content_hash_tl </p>
- \iow_newline:
+ \l__math_mathml_write_before_tl
<math></math>
- \iow_newline:
- </div>
- \iow_newline:
+ \c__math_mathml_write_after_tl
}
}
@@ -147,14 +427,14 @@
}
\iow_now:Ne \g__math_writedummy_iow
{
- <!DOCTYPE~html>
- \iow_newline:
- <html>
+ \c__math_mathml_write_init_tl
}
+ \AssignSocketPlug {tagsupport/math/mathml/write/prepare}{On}
\AssignSocketPlug {tagsupport/math/mathml/write}{On}
\AddToHook{enddocument/afterlastpage}
{
- \iow_now:Nn \g__math_writedummy_iow {</html>}
+ \iow_now:Ne \g__math_writedummy_iow
+ { \c__math_mathml_write_final_tl }
\iow_close:N \g__math_writedummy_iow
}
}
@@ -188,8 +468,8 @@
\bool_if:NT\g__tag_math_mathml_AF_bool
{
\typeout{Info:~Activating~mathml~support}
- \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
- \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
\AssignSocketPlug{tagsupport/math/substruct/begin}{single}
\AssignSocketPlug{tagsupport/math/substruct/end}{single}
\AddToHook{enddocument/info}
@@ -220,13 +500,13 @@
\int_set:Nn \l__math_mathstyle_int {#2}
\property_record:nn {#1} { mathstyle }
\int_compare:nNnTF { \property_ref:nn {#1}{ mathstyle} } = { #2 }
- { \tag_start: }{ \tag_stop: }
+ { \tag_resume:n{\mathchoice} }{ \tag_suspend:n{\mathchoice} }
}
\cs_generate_variant:Nn \__math_tag_if_mathstyle:nn {en}
\keys_define:nn { __tag / setup }
{
math/mathml/sources .clist_set:N = \l__tag_math_mathml_files_clist,
- math/alt/use .bool_set:N = \l__tag_math_alt_bool,
+ math/alt/use .bool_set:N = \l__tag_math_alt_bool,
viewer/pane/mathml .bool_set:N = \l__tag_math_mathml_pane_bool,
viewer/pane/mathml .initial:n = true,
viewer/pane/mathsource .bool_set:N = \l__tag_math_texsource_pane_bool,
@@ -235,9 +515,26 @@
math/tex/AF .bool_set:N = \l__tag_math_texsource_AF_bool,
math/tex/AF .initial:n = true
}
+\AddToHook{begindocument/end}
+ {
+ \str_if_eq:eeT
+ {1}
+ {
+ \exp_last_unbraced:Ne\use_i:nn
+ {\GetDocumentProperties{document/pdfstandard-UA}}
+ \c_empty_tl\c_empty_tl
+ }
+ {
+ \bool_if:NF \l__tag_math_alt_bool
+ {
+ \typeout{PDF/UA-1~detected.~Enabling~alt~text~on~Formula}
+ }
+ \bool_set_true:N\l__tag_math_alt_bool
+ }
+ }
\socket_new:nn {tagsupport/math/inline/begin}{0}
\socket_new:nn {tagsupport/math/inline/end}{0}
-\socket_new:nn {tagsupport/math/inline/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/inline/formula/begin}{2} %
\socket_new:nn {tagsupport/math/inline/formula/end}{0}
\socket_new_plug:nnn
{tagsupport/math/inline/begin}
@@ -250,13 +547,14 @@
\socket_new_plug:nnn
{tagsupport/math/inline/formula/begin}
{default}
- {
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
+ { \tagpdfparaOff
+ \__math_luamml_structelem:
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
% inner formula if multiple parts (not really implemented yet)
- \socket_use:n{tagsupport/math/substruct/begin}
- #1
- \socket_use:n{tagsupport/math/end}
+ \tag_socket_use:n{math/substruct/begin}
+ #2
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/inline/formula/end}
@@ -267,7 +565,7 @@
}
\socket_new:nn {tagsupport/math/display/begin}{0}
\socket_new:nn {tagsupport/math/display/end}{0}
-\socket_new:nn {tagsupport/math/display/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/display/formula/begin}{2} %
\socket_new:nn {tagsupport/math/display/formula/end}{0}
\socket_new_plug:nnn
@@ -284,11 +582,13 @@
{tagsupport/math/display/formula/begin}
{default}
{
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
- \socket_use:n{tagsupport/math/substruct/begin}
- #1
- \socket_use:n{tagsupport/math/end}
+ \tagpdfparaOff
+ \__math_luamml_structelem:
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
+ \tag_socket_use:n{math/substruct/begin}
+ #2
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/display/formula/end}
@@ -367,9 +667,19 @@
\bool_if:NTF\l__tag_math_texsource_AF_bool
{ \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
{ \tl_clear:N \l__math_content_AF_source_tmpa_tl }
+ \tl_if_eq:NnTF\g__math_grabbed_env_tl {math}
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{inline}
+ }
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{display}
+ }
+ \bool_if:NF\l__tag_math_alt_bool
+ { \tl_set:Nn \l__math_content_alt_tl{} }
\tag_struct_begin:n
{
tag=Formula,
+ attribute-class=\l__math_attribute_class_tl,
texsource = \l__math_content_AF_source_tmpa_tl,
title-o = \g__math_grabbed_env_tl,
actualtext = \l__math_content_actual_tl,
@@ -388,7 +698,7 @@
\tl_new:N\l__math_grabbed_math_tl
\socket_new_plug:nnn
{tagsupport/math/struct/begin}
- {test-mathml}
+ {mathml-AF}
{
\int_gincr:N\g__math_math_total_int
\tl_set:Ne\l__math_content_hash_tl
@@ -404,20 +714,24 @@
\bool_if:NF\l__tag_math_alt_bool
{ \tl_set:Nn \l__math_content_alt_tl{} }
\tl_if_exist:cTF { g__math_mathml_ \l__math_content_hash_tl _tl }
- {
- \int_gincr:N\g__math_mathml_AF_found_int
- \bool_if:NTF \l__tag_math_mathml_AF_bool
- {
- \int_gincr:N\g__math_mathml_AF_attached_int
- \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
- }
- {
- \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
- }
- }
- {
- \typeout{WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
- }
+ {
+ \int_gincr:N\g__math_mathml_AF_found_int
+ \bool_if:NTF \l__tag_math_mathml_AF_bool
+ {
+ \int_gincr:N\g__math_mathml_AF_attached_int
+ \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ {
+ \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ }
+ {
+ \bool_if:NT \l__tag_math_mathml_AF_bool
+ {
+ \typeout {WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
+ }
+ }
+ \socket_use:n {tagsupport/math/mathml/write/prepare}
\socket_use:n {tagsupport/math/mathml/write} % write hash if request
\bool_if:NTF\l__tag_math_texsource_AF_bool
{ \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
@@ -438,7 +752,7 @@
}
\socket_new_plug:nnn
{tagsupport/math/struct/end}
- {test-mathml}
+ {mathml-AF}
{
\tag_struct_end:
}
@@ -473,30 +787,14 @@
{single}
{ \tag_mc_end:}
\socket_new:nn {tagsupport/math/end}{0}
-
-\cs_new_protected:Npn \__tag_math_disable:
- {
- \socket_assign_plug:nn {tagsupport/math/inline/begin}{noop}
- \socket_assign_plug:nn {tagsupport/math/inline/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{identity}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/begin}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{identity}
- \socket_assign_plug:nn {tagsupport/math/display/formula/end}{noop}
- }
-\cs_new_protected:Npn \__tag_math_enable:
- {
- \socket_assign_plug:nn {tagsupport/math/inline/begin}{MC}
- \socket_assign_plug:nn {tagsupport/math/inline/end}{MC}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{default}
- \socket_assign_plug:nn {tagsupport/math/display/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/display/end}{default}
- \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/display/formula/end}{default}
- }
-\AtBeginDocument{\tag_if_active:T{\__tag_math_enable: }}
+\socket_assign_plug:nn {tagsupport/math/inline/begin}{MC}
+\socket_assign_plug:nn {tagsupport/math/inline/end}{MC}
+\socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/inline/formula/end}{default}
+\socket_assign_plug:nn {tagsupport/math/display/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/display/end}{default}
+\socket_assign_plug:nn {tagsupport/math/display/formula/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/display/formula/end}{default}
\cs_new_protected:Npn \__math_process:nn #1#2
{
\legacy_if:nF { measuring@ }
@@ -516,46 +814,52 @@
\cs_new_protected:Npn \__math_process_auxii:nn #1#2 { }
\cs_new_protected:Npn \math_processor:n #1
{ \cs_set_protected:Npn \__math_process_auxii:nn ##1##2 {#1} }
-\cs_new_protected:Npn \__math_grab_dollar:w % $
- #1 $
+\cs_new_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_delim:w }
+\cs_new_protected:Npn \__math_grab_dollar:n #1
{
- \tl_if_blank:nF {#1}
- {
- \__math_process:nn { math } {#1} % $
- \bool_lazy_or:nnTF
- {\legacy_if_p:n { measuring@ }}
- { \l__math_fakemath_bool }
- { #1 $ }
+ \__math_process:nn { math } {#1}
+ \bool_lazy_any:nTF
+ {
+ {\legacy_if_p:n { measuring@ }}
+ { \l__math_fakemath_bool }
+ { \tl_if_blank_p:n {#1} }
+ }
+ {
+ \__math_luamml_ignore:
+ #1 $ % $
+ }
{
\tag_socket_use:n {math/inline/begin} %end P-MC
- \tag_socket_use:nn {math/inline/formula/begin}{#1}
- $
+ \tag_socket_use:nnn {math/inline/formula/begin}{}{#1}
+ $ % $
\tag_socket_use:n {math/inline/formula/end}
\tag_socket_use:n {math/inline/end} % restart P-MC
}
- }
}
+\cs_new_protected:Npn \__math_grab_dollar_delim:w #1 $ % $
+ { \__math_grab_dollar:n {#1} }
\cs_new_protected:Npn \__math_grab_dollardollar:w % $$
#1 $$
{
\tl_if_blank:nF {#1}
{
\__math_process:nn { equation* } {#1}
- \socket_use:n {tagsupport/math/display/begin}
- \socket_use:nn{tagsupport/math/display/formula/begin}{#1}
- $$
+ \tag_socket_use:n {math/display/begin}
+ \tag_socket_use:nn{math/display/formula/begin}{}{#1}
}
+ $$
}
\cs_new_protected:Npn \__math_tag_dollardollar_display_end:
{
% \typeout{== tag dollarldollar display end}
% \ShowTagging{struct-stack}
\para_raw_end:
- \tagpdfparaOn
\l__math_tmpa_skip \lastskip
- \socket_use:n{tagsupport/math/display/formula/end}
+ \tag_socket_use:n{math/display/formula/end}
+ \nobreak
+ \skip_vertical:n { -\l__math_tmpa_skip } % remove the negative belowdisplayskip
\penalty \postdisplaypenalty
- \skip_vertical:n { -\l__math_tmpa_skip * 2 }
+ \skip_vertical:n { -\l__math_tmpa_skip } % insert the correct skip
\@doendpe % this has no \end{...} to take care of it
}
@@ -573,6 +877,82 @@
{
\begin { equation* } #1 \end { equation* }
}
+\tl_new:N \l__math_grabbed_tl
+\int_new:N \l__math_grab_env_int
+\cs_new_protected:Npn \__math_grab_dollar_loop:
+ {
+ \group_begin:
+ \tl_clear:N \l__math_grabbed_tl
+ \__math_grab_loop:
+ }
+\cs_new_protected:Npn \__math_grab_loop:
+ {
+ \peek_remove_spaces:n
+ {
+ \peek_meaning:NTF \c_group_begin_token
+ { \__math_grab_loop_group:n }
+ { \__math_grab_loop_token:N }
+ }
+ }
+\cs_new_protected:Npn \__math_grab_loop_group:n #1
+ { \__math_grab_loop_store:n { {#1} } }
+\cs_new_protected:Npn \__math_grab_loop_store:n #1
+ {
+ \tl_put_right:Nn \l__math_grabbed_tl {#1}
+ \__math_grab_loop:
+ }
+\cs_new_protected:Npn \__math_grab_loop_token:N #1
+ {
+ \cs_if_exist_use:cF
+ { __math_grab_loop_ \token_to_str:N #1 : }
+ { \__math_grab_loop_store:n {#1} }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N $ : }
+ { \__math_grab_loop_end: }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \\ : }
+ {
+ \int_compare:nNnTF \l__math_grab_env_int = 0
+ { \__math_grab_loop_newline: }
+ { \__math_grab_loop_store:n { \\ } }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \begin : }
+ {
+ \int_incr:N \l__math_grab_env_int
+ \__math_grab_loop_store:n { \begin }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \end : }
+ {
+ \int_compare:nNnTF \l__math_grab_env_int = 0
+ {
+ \__math_grab_loop_newline:
+ \end
+ }
+ {
+ \int_decr:N \l__math_grab_env_int
+ \__math_grab_loop_store:n { \end }
+ }
+ }
+\tl_map_inline:nn { \ignorespaces \unskip \textonly@unskip }
+ {
+ \cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N #1 : }
+ { \__math_grab_loop: }
+ }
+\cs_new_protected:Npn \__math_grab_loop_newline:
+ {
+ \if_false: { \fi:
+ \cs_set_protected:Npn \cr
+ {
+ \__math_grab_loop:
+ \tex_cr:D
+ }
+ \if_false: } \fi:
+ \\
+ }
+\cs_new_protected:Npn \__math_grab_loop_end:
+ {
+ \exp_args:NNV \group_end:
+ \__math_grab_dollar:n \l__math_grabbed_tl
+ }
\tl_new:N \l__math_env_name_tl
\keys_define:nn { __math }
{
@@ -686,14 +1066,13 @@
{
\__tag_tool_close_P:
}
- \socket_use:nn{tagsupport/math/display/formula/begin}{}
- \tagpdfparaOff
+ \tag_socket_use:nn{math/display/formula/begin}{}{}
}
\cs_new:Npn \@kernel@math@registered@end {
\para_raw_end:
\tagpdfparaOn
- \socket_use:n{tagsupport/math/display/formula/end}
+ \tag_socket_use:n{tagsupport/math/display/formula/end}
\@endpetrue
}
@@ -781,6 +1160,7 @@
\bool_set_false:N \l__math_collected_bool
\col@sep\tabcolsep \let\d@llarbegin\begingroup
\let\d@llarend\endgroup
+ \cs_set_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_loop: }
\@tabarray}
}
\cs_new_eq:NN \__math_m@th: \m@th
@@ -870,7 +1250,7 @@
\iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi
\ignorespacesafterend
}
-\def\measuring@true{\let\ifmeasuring@\iftrue\tag_stop:}
+\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}}
\math_register_halign_env:nn {align}{}
\math_register_halign_env:nn {align*}{}
\math_register_halign_env:nn {alignat}{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
index 43663b8f9ef..ec0624be4d6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
@@ -33,8 +33,10 @@
%%
%%
%% File: latex-lab-mathtools.dtx
+\def\ltlabmathtoolsdate{2024-09-18}
+\def\ltlabmathtoolsversion{0.80a}
\ProvidesFile{latex-lab-mathtools.ltx}
- [2023-01-05 v0.1a mathtools adaptions]
+ [2024-07-13 v0.1a mathtools adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\tl_new:N\l__math_mathtools_init_tl
@@ -65,7 +67,7 @@
\vskip\normallineskiplimit % CCS
\vskip\l_MT_above_intertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim
\ifdim\@totalleftmargin=\z@
@@ -93,7 +95,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip\abovedisplayshortskip
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
@@ -122,7 +124,7 @@
\vskip\normallineskiplimit
\vskip\l_MT_above_shortintertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
index 4cfa0b055c8..49f0207bc39 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
@@ -33,7 +33,7 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
\def\ltlabbibversion{0.81b}
\ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion}
{Code related to the tagging of bibliography and cite command}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
index a4d646636fc..e3b4f050f3e 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
@@ -33,15 +33,13 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-11-25}
+\def\ltlabblockversion{0.8w}
\ProvidesPackage {latex-lab-testphase-block}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
\RequirePackage{latex-lab-kernel-changes}
\ExplSyntaxOn
-\tl_new:N \l__block_item_align_tl
-\tl_new:N\l__block_legacy_env_params_tl
\def\@doendpe{\@endpetrue
\def\par
{
@@ -58,8 +56,6 @@
}
}
\cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing:
-\def\@endpetrue {\global\let\if@endpe\iftrue}
-\def\@endpefalse{\global\let\if@endpe\iffalse}
\NewTemplateType{blockenv}{1}
\NewTemplateType{block}{1}
\NewTemplateType{para}{1}
@@ -84,20 +80,22 @@
}
\DeclareTemplateInterface{block}{display}{1}
{
- heading : tokenlist = , %??
+ heading : tokenlist = , % ??
beginsep : skip = \topsep ,
begin-par-skip : skip = \partopsep ,
par-skip : skip = \parsep ,
- end-skip : skip = \KeyValue{beginsep} , % conflict with name below
+ end-skip : skip = \KeyValue{beginsep} , % conflict with name below
end-par-skip : skip = \KeyValue{begin-par-skip} ,
+ item-skip : skip = \itemsep ,
beginpenalty : integer = \UseName{@beginparpenalty} ,
endpenalty : integer = \UseName{@endparpenalty} ,
leftmargin : length = \leftmargin ,
rightmargin : length = \rightmargin ,
- parindent : length = \listparindent ,
+ parindent : length = 0pt ,
}
\DeclareTemplateInterface{para}{std}{1}
{
+ para-class : tokenlist = justify ,
indent-width : length = \parindent ,
start-skip : skip = 0pt ,
left-skip : skip = 0pt ,
@@ -106,7 +104,6 @@
fixed-word-spaces : boolean = false ,
final-hyphen-demerits : integer = 5000 ,
cr-cmd : tokenlist = \@normalcr ,
- para-class : tokenlist = justify ,
}
\DeclareTemplateInterface{list}{std}{1} % optional
{
@@ -164,226 +161,6 @@
\cs_new_protected:Npn \DebugBlocksOn { \block_debug_on: }
\cs_new_protected:Npn \DebugBlocksOff { \block_debug_off: }
\DebugBlocksOff
-\NewDocumentEnvironment{displayblock}{ !O{} }
- { \UseInstance{blockenv}{displayblock} {#1} }
- { \endblockenv }
-\NewDocumentEnvironment{displayblockflattened}{ !O{} }
- { \UseInstance{blockenv}{displayblockflattened} {#1} }
- { \endblockenv }
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{center} { !O{} }
- { \UseInstance{blockenv}{center}{#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{flushright} { !O{} }
- { \UseInstance{blockenv}{flushright}{#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{flushleft} { !O{} }
- { \UseInstance{blockenv}{flushleft}{#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{quote}{ !O{} }
- { \UseInstance{blockenv}{quote} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{quotation}{ !O{} }
- { \UseInstance{blockenv}{quotation} {#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{verbatim}{ !O{} }
- { \UseInstance{blockenv}{verbatim} {#1}
- \@setupverbinvisiblespace\frenchspacing\@vobeyspaces
- \@xverbatim
- }
- { \endblockenv }
- \RenewDocumentEnvironment{verbatim*}{ !O{} }
- { \UseInstance{blockenv}{verbatim} {#1}
- \@setupverbvisiblespace\frenchspacing\@vobeyspaces
- \@sxverbatim
- }
- { \endblockenv }
-}
-\def\legacyverbatimsetup{%
- \language\l@nohyphenation
- \@tempswafalse
- \def\par{%
- \if@tempswa
- \leavevmode \null {\@@par}\penalty\interlinepenalty
- \else
- \@tempswatrue
- \ifhmode{\@@par}\penalty\interlinepenalty\fi
- \fi}%
- \let\do\@makeother \dospecials
- \obeylines \verbatim@font \@noligs
- \everypar \expandafter{\the\everypar \unpenalty}%
- \tl_set:Nn \l__tag_para_main_tag_tl {codeline}
- \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code}
-}
-\newcommand\@setupverbinvisiblespace{}
-\tag_if_active:T {
- \bool_if:NF\g__tag_mode_lua_bool
- {
- \renewcommand\@setupverbinvisiblespace{\def\@xobeysp{\nobreakspace\pdffakespace}}
- }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{itemize}{!O{}}
- { \UseInstance{blockenv}{itemize} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{enumerate}{!O{}}
- { \UseInstance{blockenv}{enumerate} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{description}{!O{}}
- { \UseInstance{blockenv}{description} {#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{verse}{ !O{} }
- {
- \let\\\@centercr
- \UseInstance{blockenv}{list}
- {
- item-indent=-1.5em,
- parindent=-1.5em,
- item-skip=0pt,
- rightmargin=\leftmargin,
- leftmargin=\leftmargin+1.5em,
- #1
- }
- \item\relax
- }
- { \endblockenv }
- }
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{list}{O{} m m }
- {
- \tl_set:Nn \@itemlabel {#2}
- \tl_set:Nn \l__block_legacy_env_params_tl {#3}
- \UseInstance{blockenv}{list} {#1}
- }
- { \endblockenv }
-}
-\tl_new:N \l__block_env_params_tl
-\cs_new:Npn \legacylistsetupcode {
- \dim_zero:N \listparindent
- \dim_zero:N \rightmargin
- \dim_zero:N \itemindent
- \tl_set:Nn \@listctr {}
- \legacy_if_set_false:n { @nmbrlist } % needed if lists are nested
- \let\makelabel\@mklab % TODO: customize
- \l__block_legacy_env_params_tl
- \legacy_if:nTF { @nmbrlist }
- { \tl_set:Nn \l__tag_L_attr_class_tl {enumerate} } % numbered list
- { \tl_if_empty:NTF \@itemlabel
- { \tl_set:Nn \l__tag_L_attr_class_tl {list} } % no label
- { \tl_set:Nn \l__tag_L_attr_class_tl {itemize} } % unnumbered, unordered
- }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{trivlist}{ !O{} }
- { \list[#1]{}
- {
- \dim_zero:N \leftmargin
- \dim_zero:N \labelwidth
- \cs_set_eq:NN \makelabel \use:n
- }
- }
- { \endblockenv }
-}
-\RenewDocumentCommand \newtheorem { m O{#1} m o }
-{
- \expandafter\@ifdefinable\csname #1\endcsname
- {
- \str_if_eq:nnTF{#1}{#2}
- {
- \@definecounter {#2}
- \IfNoValueTF {#4}
- { % @ynthm
- \tl_gset:ce { the #2 }
- {
- \@thmcounter{#2}
- }
- }
- { % @xnthm
- \@newctr{#1}[#4]
- \tl_gset:ce { the #2 }
- {
- \expandafter\noexpand\csname the#4\endcsname
- \@thmcountersep
- \@thmcounter{#2}
- }
- }
- }
- { % @othm
- \@ifundefined{c@#2}
- { \@nocounterr{#2} }
- {
- \tl_gset:cn { the #1 }
- { \UseName { the #2 } }
- }
- }
- \global\@namedef{#1} { \@thm{#2}{#3} }
- \global\@namedef{end#1}{ \@endtheorem }
- }
-}
-\tl_new:N \l__block_thm_current_counter_tl
-\def\@thm#1#2{%
- \@kernel@refstepcounter{#1}
- \tl_set:Nn \l__block_thm_current_counter_tl{#1}
- \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
-\def\hyper@nopatch@thm{}
-\def\@begintheorem#1#2{
- \UseInstance{blockenv}{theorem}{}
- \tagpdfparaOff
- \mode_leave_vertical:
- \MakeLinkTarget{\l__block_thm_current_counter_tl}
- \tag_struct_begin:n{tag=Caption}
- \group_begin:
- \bfseries
- \tag_mc_begin:n {}
- #1\
- \tag_mc_end:
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n {}
- #2
- \tag_mc_end:
- \tag_struct_end:
- \group_end:
- \tag_struct_end:
- \tagpdfparaOn
- \__block_start_para_structure_unconditionally:n { \PARALABEL }
- \itshape
- \hskip\labelsep
- \ignorespaces
-}
-\def\@opargbegintheorem#1#2#3{
- \UseInstance{blockenv}{theorem}{}
- \tagpdfparaOff
- \mode_leave_vertical:
- \MakeLinkTarget{\l__block_thm_current_counter_tl}
- \tag_struct_begin:n{tag=Caption}
- \group_begin:
- \bfseries
- \tag_mc_begin:n {}
- #1\
- \tag_mc_end:
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n {}
- #2
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n {}
- \ (#3)
- \tag_mc_end:
- \group_end:
- \tag_struct_end:
- \tagpdfparaOn
- \__block_start_para_structure_unconditionally:n { \PARALABEL }
- \itshape
- \hskip\labelsep
- \ignorespaces
-}
-\def\@endtheorem{\endblockenv}
\cs_new:Npn \g_block_nesting_depth_int { \@listdepth } % a fake int
% for now
\DeclareTemplateCode{blockenv}{display}{1}
@@ -396,25 +173,25 @@
setup-code = \l__block_setup_code_tl ,
block-instance = \l__block_block_instance_tl ,
para-instance = \l__block_para_instance_tl ,
+ para-flattened = \l__tag_para_flattened_bool ,
inner-level-counter = \l__block_inner_level_counter_tl ,
max-inner-levels = \l__block_max_inner_levels_tl ,
inner-instance-type = \l__block_inner_instance_type_tl ,
inner-instance = \l__block_inner_instance_tl ,
- para-flattened = \l__tag_para_flattened_bool ,
final-code = \l__block_final_code_tl ,
}
{
\__block_debug_typeout:n{\l__block_env_name_tl -env-start}
\tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} }
% \begin{macrocode}
- \int_compare:nNnTF \l__block_flattened_level_int > 0
+ \int_compare:nNnTF \l__tag_block_flattened_level_int > 0
{
- \int_incr:N \l__block_flattened_level_int
+ \int_incr:N \l__tag_block_flattened_level_int
}
{
\bool_if:NT \l__tag_para_flattened_bool
{
- \int_incr:N \l__block_flattened_level_int
+ \int_incr:N \l__tag_block_flattened_level_int
}
}
\tl_if_empty:NF \l__block_inner_level_counter_tl
@@ -431,10 +208,15 @@
{ \@toodeep }
{
\int_gincr:N \g_block_nesting_depth_int
- \use:c { @list \int_to_roman:n { \g_block_nesting_depth_int } }
+ \use:c { @list \int_to_roman:n
+ { \g_block_nesting_depth_int } }
}
}
- \tag_if_active:T { \use:c { __block_recipe_ \l__block_tagging_recipe_tl : } }
+ \tag_if_active:T
+ { \use:c { __block_recipe_ \l__block_tagging_recipe_tl : } }
+ \tl_clear:N \@itemlabel
+ \tl_clear:N \@listctr
+ \legacy_if_set_false:n { @nmbrlist }
\l__block_setup_code_tl
\__block_debug_typeout:n{use~ instance:~
\l__block_block_instance_tl - \int_use:N \g_block_nesting_depth_int }
@@ -444,7 +226,8 @@
{#1}
\tl_if_empty:NF \l__block_para_instance_tl
{
- \__block_debug_typeout:n{use~ para~ instance:~ \l__block_para_instance_tl }
+ \__block_debug_typeout:n{ use~ para~ instance:~
+ \l__block_para_instance_tl }
\UseInstance{para}{ \l__block_para_instance_tl } {}
}
\tl_if_empty:NF \l__block_inner_instance_tl
@@ -455,14 +238,17 @@
\UseInstance{ \l__block_inner_instance_type_tl }
{ \l__block_inner_instance_tl
\tl_if_empty:NF \l__block_inner_level_counter_tl
- { - \int_use:N \l__block_inner_level_counter_tl } % not clean
- % use "o"?
+ % not clean use "o"?
+ { - \int_use:N \l__block_inner_level_counter_tl }
}
{#1}
}
\l__block_final_code_tl
}
-\int_new:N \l__block_flattened_level_int
+\int_if_exist:NF \l__tag_block_flattened_level_int
+ {
+ \int_new:N \l__tag_block_flattened_level_int
+ }
\newcounter{maxblocklevels}
\setcounter{maxblocklevels}{6}
\cs_new:Npn \endblockenv {
@@ -474,15 +260,12 @@
\mode_leave_vertical:
\legacy_if_gset_false:n { @inlabel }
}
- \legacy_if:nT { @newlist }
- {
- \@noitemerr
- \legacy_if_gset_false:n { @newlist }
- }
+ \__block_if_list:T { \legacy_if:nT { @newlist } { \@noitemerr } }
\mode_if_horizontal:TF
{ \__block_skip_remove_last: \__block_skip_remove_last: \par }
{ \@inmatherr{\end{\@currenvir}} }
\__kernel_displayblock_end:
+ \__block_if_list:T { \legacy_if_gset_false:n { @newlist } }
\legacy_if:nF { @noparlist }
{
\__block_skip_set_to_last:N \l_tmpa_skip
@@ -496,14 +279,16 @@
}
\socket_use:n {tagsupport/block-endpe}
}
+\cs_new:Npn \__block_if_list:T
+ { \tl_if_eq:NnT \l__block_block_instance_tl {list} }
\cs_new:Npn \__kernel_displayblock_end: {
\__block_debug_typeout:n{\detokenize{__kernel_displayblock_end:}}
}
\socket_new:nn {tagsupport/block-endpe}{0}
\socket_new_plug:nnn{tagsupport/block-endpe}{on}
- { \legacy_if_gset_true:n { @endpe } }
+ { \@endpetrue }
\socket_new_plug:nnn{tagsupport/block-endpe}{off}
- { \legacy_if_gset_false:n { @endpe } }
+ { \@endpefalse }
\socket_assign_plug:nn{tagsupport/block-endpe}{on}
\DeclareTemplateCode{para}{std}{1}
{
@@ -529,16 +314,18 @@
par-skip = \parsep ,
end-skip = \l__block_botsep_skip ,
end-par-skip = \l__block_parbotsep_skip ,
+ item-skip = \itemsep ,
beginpenalty = \@beginparpenalty ,
endpenalty = \@endparpenalty ,
rightmargin = \rightmargin ,
leftmargin = \leftmargin ,
- parindent = \listparindent ,
+ parindent = \l__block_parindent_dim ,
}
{
\tl_if_empty:nF {#1} { \SetTemplateKeys{block}{display}{#1} }
\tl_if_blank:oF \l__block_heading_tl
- { \mode_leave_vertical: \textbf{\l__block_heading_tl} } % TODO customize
+ { \mode_leave_vertical:
+ \textbf{\l__block_heading_tl} } % TODO customize
\legacy_if:nT { @noskipsec } { \mode_leave_vertical: }
\skip_set:Nn \l__block_topsepadd_skip { \topsep }
\mode_if_vertical:TF
@@ -581,7 +368,7 @@
}
\skip_set_eq:NN \@outerparskip \parskip
\skip_set_eq:NN \parskip \parsep
- \dim_set_eq:NN \parindent \listparindent
+ \dim_set_eq:NN \parindent \l__block_parindent_dim
\dim_add:Nn \linewidth { - \rightmargin - \leftmargin }
\dim_add:Nn \@totalleftmargin { \leftmargin }
\tex_parshape:D 1 ~ \@totalleftmargin \linewidth
@@ -599,7 +386,8 @@
{
\__block_skip_set_to_last:N \l__block_tmpa_skip
\skip_vertical:n { - \l__block_tmpa_skip }
- \skip_vertical:n { \l__block_tmpa_skip + \@outerparskip - \parskip }
+ \skip_vertical:n { \l__block_tmpa_skip +
+ \@outerparskip - \parskip }
}
}
{
@@ -619,16 +407,20 @@
,listparindent .skip_set:N = \listparindent
}
\cs_new:Npn \__kernel_displayblock_begin: {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_begin:}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_begin:}}
}
\cs_new:Npn \__kernel_displayblock_beginpar_hmode:w {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_beginpar_hmode:w}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_beginpar_hmode:w}}
}
\cs_new:Npn \__kernel_displayblock_beginpar_vmode: {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_beginpar_vmode:}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_beginpar_vmode:}}
}
\tl_new:N \@itemlabel % should have a top-level definition
\tl_new:N \@listctr % should have a top-level definition
+\cs_new_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn
\DeclareTemplateCode{list}{std}{1}
{
counter = \l__block_counter_tl,
@@ -645,18 +437,23 @@
}
{
\__block_debug_typeout:n{template:list:std}
- \tl_if_empty:nF {#1} { \SetTemplateKeys{list}{std}{#1} }
+ \tl_if_empty:nTF {#1}
+ { \cs_set_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn }
+ {
+ \SetTemplateKeys{list}{std}{#1}
+ \cs_set:Npe \__block_evaluate_saved_user_keys:nn ##1##2
+ { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } }
+ }
\tl_if_empty:NTF \l__block_counter_tl
{
- \tl_if_blank:oF \@listctr
- {
+ \legacy_if:nT { @nmbrlist }
+ {
\bool_if:NF \l__block_resume_bool
{
\int_gset:cn{ c@ \@listctr }
{ \l__block_counter_start_int - 1 }
}
- }
- { \@nmbrlistfalse }
+ }
}
{
\@nmbrlisttrue
@@ -672,6 +469,7 @@
\tl_set_eq:NN \@itemlabel \l__block_item_label_tl
}
\legacy_if_gset_true:n { @newlist }
+ \cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_first:
\__block_debug_typeout:n{template:list:std~end}
}
\keys_define:nn { template/list/std }
@@ -708,14 +506,18 @@
{
\__block_debug_typeout:n{template:item:std}
\tl_set_eq:NN \l__block_label_given_tl \c_novalue_tl
+ \__block_evaluate_saved_user_keys:nn {item}{std}
\tl_if_empty:nF{#1}{ \SetTemplateKeys{item}{std}{#1} }
\tl_if_novalue:oTF \l__block_label_given_tl
{
\tl_if_blank:oF \@listctr { \@kernel@refstepcounter \@listctr }
- \bool_if:NTF \l__block_item_compatibility_bool % not sure that conditional
- % makes sense
- { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}\@itemlabel } } % TODO ?
- { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}\__block_counter_label:n { \@listctr } } }
+ \bool_if:NTF \l__block_item_compatibility_bool % not sure that
+ % conditional
+ % makes sense
+ { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}%
+ \@itemlabel } } % TODO ?
+ { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}%
+ \__block_counter_label:n { \@listctr } } }
}
{
\__block_debug_typeout:n{item~ with~ optional}
@@ -723,7 +525,8 @@
\bool_if:nT
{
\l__block_label_boxed_bool
- && \dim_compare_p:n { \box_wd:N \l__block_one_label_box <= \linewidth } % TODO: is \linewidth correct?
+ && \dim_compare_p:n
+ { \box_wd:N \l__block_one_label_box <= \linewidth }
}
{
\dim_compare:nNnT
@@ -752,11 +555,13 @@
{ \bool_if:NT \l__block_long_label_bool { \nobreak \hfil \break } }
% version of \newline inside an hbox that will be unpacked
}
- % \skip_set_eq:NN \parsep \l__block_item_parsep_skip TODO??? FMi
- % what's that?
- \dim_set_eq:NN \parindent \listparindent
+ % TODO??? FMi what's that?
+ % \skip_set_eq:NN \parsep \l__block_item_parsep_skip
+ \dim_compare:nNnF \listparindent = {0pt}
+ { \dim_set_eq:NN \parindent \listparindent }
\cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_std:
}
+\tl_new:N \l__block_item_align_tl
\box_new:N \l__block_one_label_box
\box_new:N \g__block_labels_box
\bool_new:N \l__block_long_label_bool
@@ -779,8 +584,8 @@
\cs_new_eq:NN \__kernel_list_label_begin: \prg_do_nothing:
\cs_new_eq:NN \__kernel_list_label_end: \prg_do_nothing:
\cs_new_eq:NN \__block_item_everypar: \prg_do_nothing:
-\AddToHook{para/begin}[lists]{\__block_item_everypar:}
-\DeclareHookRule{para/begin}{lists}{after}{tagpdf}
+\AddToHook{para/begin}[items]{\__block_item_everypar:}
+\DeclareHookRule{para/begin}{items}{after}{tagpdf}
\cs_new_protected:Npn \__block_item_everypar_std: {
\__block_debug_typeout:n{item~ everypar \on@line }
\legacy_if_set_false:n { @minipage }
@@ -804,6 +609,9 @@
\cs_set_eq:NN \__block_item_everypar: \prg_do_nothing:
}
}
+\cs_new:Npn \__block_item_everypar_first: {
+ \legacy_if:nT { @newlist } { \@noitemerr }
+}
\cs_new_eq:NN \__kernel_list_label_after: \prg_do_nothing:
\skip_new:N \l__block_tmpa_skip
\skip_new:N \l__block_topsepadd_skip
@@ -819,8 +627,11 @@
}
{
\legacy_if:nTF { @newlist }
- { \__kernel_list_item_begin: }
- { \__block_inter_item: }
+ {
+ \__kernel_list_item_begin:
+ \legacy_if_gset_false:n { @newlist }
+ }
+ { \__block_inter_item: }
\tl_if_novalue:nTF {#1} % avoids reparsing label={}
{ \__block_item_instance:n { } }
{ \__block_item_instance:n {#1} }
@@ -841,6 +652,270 @@
}
\cs_new_eq:NN \__kernel_list_item_begin: \prg_do_nothing:
\cs_new_eq:NN \__kernel_list_item_end: \prg_do_nothing:
+\tag_if_active:TF {
+ \cs_set:Npn \__block_beginpar_vmode: {
+ \__block_debug_typeout:n
+ { @endpe = \legacy_if:nTF { @endpe }{true}{false}
+ \on@line }
+ \legacy_if:nTF { @endpe }
+ {
+ \legacy_if_gset_false:n { @endpe }
+ }
+ {
+ \int_compare:nNnT \l__tag_block_flattened_level_int < 2
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ }
+ }
+ \cs_set:Npn \__block_beginpar_hmode:N #1
+ {
+ \tag_mc_end:
+ \__tag_gincr_para_end_int:
+ \__block_debug_typeout:n{increment~ /P \on@line }
+ \bool_if:NT \l__tag_para_show_bool
+ { \tag_mc_begin:n{artifact}
+ \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int}
+ \tag_mc_end:
+ }
+ \tag_struct_end:
+ \tagpdfparaOff \par \tagpdfparaOn
+ }
+\cs_set:Npn \__kernel_displayblock_doendpe: {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \legacy_if:nT { @endpe }
+ {
+ \__block_debug_typeout:n
+ { flattened= \bool_if:NTF
+ \l__tag_para_flattened_bool
+ {true}{false}
+ \on@line }
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__block_debug_typeout:n{Structure-end~
+ \l__tag_para_main_tag_tl\space
+ after~ displayblock \on@line }
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end: %text-unit
+ }
+ }
+ }
+}
+\RemoveFromHook{para/begin}[tagpdf]
+\AddToHook{para/begin}[tagpdf]{
+ \bool_if:NT \l__tag_para_bool {
+ \legacy_if:nF { @inlabel }
+ {
+ \__block_start_para_structure:n { \PARALABEL }
+ }
+ }
+}
+\cs_new_protected:Npn \__block_start_para_structure:n #1 {
+ \__block_debug_typeout:n
+ { @endpe = \legacy_if:nTF { @endpe }{true}{false}
+ \on@line }
+ \legacy_if:nF { @endpe }
+ {
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ }
+ \__tag_gincr_para_begin_int:
+ \__block_debug_typeout:n{increment~ P \on@line }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_tag_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
+ }
+ \__tag_check_para_begin_show:nn {green}{#1}
+ \tag_mc_begin:n {}
+}
+\cs_new_protected:Npn \__block_start_para_structure_unconditionally:n #1 {
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ \__tag_gincr_para_begin_int:
+ \__block_debug_typeout:n{increment~ P \on@line }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_tag_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
+ }
+ \__tag_check_para_begin_show:nn {green}{#1}
+ \tag_mc_begin:n {}
+}
+\RemoveFromHook{para/end}[tagpdf]
+\AddToHook{para/end}
+ {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \__tag_gincr_para_end_int:
+ \__block_debug_typeout:n{increment~ /P \on@line }
+ \tag_mc_end:
+ \__tag_check_para_end_show:nn {red}{}
+ \tag_struct_end:
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end:
+ }
+ }
+ }
+\def\PARALABEL{NP-}
+\cs_set_protected:Npn \para_end: {
+ \scan_stop:
+ \mode_if_horizontal:TF {
+ \mode_if_inner:F {
+ \tex_unskip:D
+ \hook_use:n{para/end}
+ \@kernel@after@para@end
+ \mode_if_horizontal:TF {
+ \if_int_compare:w 11 = \tex_lastnodetype:D
+ \tex_hskip:D \c_zero_dim
+ \fi:
+ \tex_par:D
+ \hook_use:n{para/after}
+ \@kernel@after@para@after
+ }
+ { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} }
+ }
+ }
+ {
+ \__kernel_endpe_vmode: % should do nothing if no tagging
+ \tex_par:D
+ }
+}
+\cs_set_eq:NN \par \para_end:
+\cs_set_eq:NN \__blockpar \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+\DeclareRobustCommand*\begin[1]{%
+ \UseHook{env/#1/before}%
+ \@ifundefined{#1}%
+ {\def\reserved@a{\@latex@error{Environment~#1~undefined}\@eha}}%
+ {\def\reserved@a{\def\@currenvir{#1}%
+ \edef\@currenvline{\on@line}%
+ \@execute@begin@hook{#1}%
+ \csname #1\endcsname}}%
+ \@ignorefalse
+ \begingroup
+ \__kernel_endpe_vmode:
+ \reserved@a}
+\cs_new:Npn \__kernel_endpe_vmode: {
+ \if@endpe \ifvmode
+ \bool_if:NT \l__tag_para_bool
+{
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end:
+ }
+ \@endpefalse
+}
+ \fi \fi
+}
+\cs_set:Npn \__kernel_list_label_after: {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \__block_start_para_structure_unconditionally:n { LI- }
+ }
+}
+\cs_new:Npn \__block_inner_begin: {
+ \tagstructbegin{tag=\l__block_tag_inner_tag_tl}
+}
+\cs_new:Npn \__block_inner_end: {
+ \__block_debug_typeout:n{block-end \on@line}
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \__block_debug_typeout:n{close~ /text-unit \on@line}
+ \tagstructend
+ }
+ \tagstructend % end inner structure
+}
+\tl_new:N \l__tag_L_tag_tl
+\tl_set:Nn \l__tag_L_tag_tl {L}
+
+\tl_new:N\l__tag_L_attr_class_tl
+\tl_set:Nn \l__tag_L_attr_class_tl {list}
+\tag_if_active:T
+{
+ \tagpdfsetup
+ {
+ role/new-attribute = {itemize}
+ {/O /List /ListNumbering/Unordered},
+ role/new-attribute = {enumerate}
+ {/O /List /ListNumbering/Ordered},
+ role/new-attribute = {description}
+ {/O /List /ListNumbering/Description},
+ % default if unknown
+ role/new-attribute = {list}{/O /List /ListNumbering/Unordered},
+ }
+}
+\def\LItag{LI}
+\cs_set:Npn \__block_list_begin: {
+ \tagstructbegin
+ {
+ tag=\l__tag_L_tag_tl
+ ,attribute-class=\l__tag_L_attr_class_tl
+ }
+}
+\cs_set:Npn \__block_list_item_begin: { \tagstructbegin{tag=\LItag} }
+\cs_set:Npn \__kernel_list_label_begin: {
+ \tagstructbegin{tag=Lbl}
+ \tagmcbegin{tag=Lbl}
+}
+\cs_set:Npn \__kernel_list_label_end: {
+ \tagmcend % end mc-Lbl or artifact
+ \tagstructend % end Lbl
+ \tagstructbegin{tag=\LBody}
+}
+\def\LBody{LBody}
+\cs_set:Npn \__block_list_item_end: {
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \tagstructend % text-unit
+ }
+ \tagstructend \tagstructend % end LBody, LI
+}
+\cs_set:Npn \__block_list_end: {
+ \legacy_if:nF { @newlist }
+ {
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \tagstructend % text-unit
+ \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
+ }
+ \tagstructend\tagstructend % end LBody, LI
+ }
+ \tagstructend % end L
+}
+}
+{
+ \cs_new:Npn \__block_start_para_structure_unconditionally:n #1 {}
+}
\cs_new:Npn \__block_recipe_basic: {
\cs_set_eq:NN \__kernel_displayblock_beginpar_hmode:w
\__block_beginpar_hmode:N
@@ -894,18 +969,233 @@
{ \tl_set:Nn \l__tag_L_attr_class_tl {} }
{ \tl_set_eq:NN \l__tag_L_attr_class_tl \l__block_tag_class_tl }
}
-
+\NewDocumentEnvironment{displayblock}{ !O{} }
+ { \UseInstance{blockenv}{displayblock} {#1} }
+ { \endblockenv }
+\NewDocumentEnvironment{displayblockflattened}{ !O{} }
+ { \UseInstance{blockenv}{displayblockflattened} {#1} }
+ { \endblockenv }
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{center} { !O{} }
+ { \UseInstance{blockenv}{center}{#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{flushright} { !O{} }
+ { \UseInstance{blockenv}{flushright}{#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{flushleft} { !O{} }
+ { \UseInstance{blockenv}{flushleft}{#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{quote}{ !O{} }
+ { \UseInstance{blockenv}{quote} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{quotation}{ !O{} }
+ { \UseInstance{blockenv}{quotation} {#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{verbatim}{ !O{} }
+ { \UseInstance{blockenv}{verbatim} {#1}
+ \@setupverbinvisiblespace\frenchspacing\@vobeyspaces
+ \@xverbatim
+ }
+ { \endblockenv }
+ \RenewDocumentEnvironment{verbatim*}{ !O{} }
+ { \UseInstance{blockenv}{verbatim} {#1}
+ \@setupverbvisiblespace\frenchspacing\@vobeyspaces
+ \@sxverbatim
+ }
+ { \endblockenv }
+}
+\def\legacyverbatimsetup{%
+ \language\l@nohyphenation
+ \@tempswafalse
+ \def\par{%
+ \if@tempswa
+ \leavevmode \null {\@@par}\penalty\interlinepenalty
+ \else
+ \@tempswatrue
+ \ifhmode{\@@par}\penalty\interlinepenalty\fi
+ \fi}%
+ \let\do\@makeother \dospecials
+ \obeylines \verbatim@font \@noligs
+ \everypar \expandafter{\the\everypar \unpenalty}%
+ \tl_set:Nn \l__tag_para_main_tag_tl {codeline}
+ \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code}
+}
+\newcommand\@setupverbinvisiblespace{}
+\tag_if_active:T {
+ \bool_if:NF\g__tag_mode_lua_bool
+ {
+ \renewcommand\@setupverbinvisiblespace
+ {\def\@xobeysp{\nobreakspace\pdffakespace}}
+ }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{itemize}{!O{}}
+ { \UseInstance{blockenv}{itemize} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{enumerate}{!O{}}
+ { \UseInstance{blockenv}{enumerate} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{description}{!O{}}
+ { \UseInstance{blockenv}{description} {#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{verse}{ !O{} }
+ {
+ \let\\\@centercr
+ \UseInstance{blockenv}{list}
+ {
+ item-indent=-1.5em,
+ parindent=-1.5em,
+ item-skip=0pt,
+ rightmargin=\leftmargin,
+ leftmargin=\leftmargin+1.5em,
+ #1
+ }
+ \item\relax
+ }
+ { \endblockenv }
+ }
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{list}{O{} m m }
+ {
+ \tl_set:Nn \l__block_legacy_env_params_tl
+ {
+ \tl_set:Nn \@itemlabel {#2}
+ #3
+ }
+ \UseInstance{blockenv}{list} {#1}
+ }
+ { \endblockenv }
+}
+\cs_new:Npn \legacylistsetupcode {
+ \dim_zero:N \listparindent
+ \dim_zero:N \rightmargin
+ \dim_zero:N \itemindent
+ \let\makelabel\@mklab % TODO: customize
+ \l__block_legacy_env_params_tl
+ \legacy_if:nTF { @nmbrlist }
+ { \tl_set:Nn \l__tag_L_attr_class_tl {enumerate} } % numbered list
+ { \tl_if_empty:NTF \@itemlabel
+ { \tl_set:Nn \l__tag_L_attr_class_tl {list} } % no label
+ { \tl_set:Nn \l__tag_L_attr_class_tl {itemize} } % unnumbered,
+ % unordered
+ }
+}
+\tl_new:N\l__block_legacy_env_params_tl
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{trivlist}{ !O{} }
+ { \list[#1]{}
+ {
+ \dim_zero:N \leftmargin
+ \dim_zero:N \labelwidth
+ \cs_set_eq:NN \makelabel \use:n
+ }
+ }
+ { \endblockenv }
+}
+\RenewDocumentCommand \newtheorem { m O{#1} m o }
+{
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {
+ \str_if_eq:nnTF{#1}{#2}
+ {
+ \@definecounter {#2}
+ \IfNoValueTF {#4}
+ { % @ynthm
+ \tl_gset:ce { the #2 }
+ {
+ \@thmcounter{#2}
+ }
+ }
+ { % @xnthm
+ \@newctr{#1}[#4]
+ \tl_gset:ce { the #2 }
+ {
+ \expandafter\noexpand\csname the#4\endcsname
+ \@thmcountersep
+ \@thmcounter{#2}
+ }
+ }
+ }
+ { % @othm
+ \@ifundefined{c@#2}
+ { \@nocounterr{#2} }
+ {
+ \tl_gset:cn { the #1 }
+ { \UseName { the #2 } }
+ }
+ }
+ \global\@namedef{#1} { \@thm{#2}{#3} }
+ \global\@namedef{end#1}{ \@endtheorem }
+ }
+}
+\tl_new:N \l__block_thm_current_counter_tl
+\def\@thm#1#2{%
+ \@kernel@refstepcounter{#1}
+ \tl_set:Nn \l__block_thm_current_counter_tl{#1}
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+\def\hyper@nopatch@thm{}
+\def\@begintheorem#1#2{
+ \UseInstance{blockenv}{theorem}{}
+ \tagpdfparaOff
+ \noindent
+ \MakeLinkTarget{\l__block_thm_current_counter_tl}
+ \tag_struct_begin:n{tag=Caption}
+ \group_begin:
+ \bfseries
+ \tag_mc_begin:n {}
+ #1\
+ \tag_mc_end:
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n {}
+ #2
+ \tag_mc_end:
+ \tag_struct_end:
+ \group_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \__block_start_para_structure_unconditionally:n { \PARALABEL }
+ \itshape
+ \hskip\labelsep
+ \ignorespaces
+}
+\def\@opargbegintheorem#1#2#3{
+ \UseInstance{blockenv}{theorem}{}
+ \tagpdfparaOff
+ \noindent
+ \MakeLinkTarget{\l__block_thm_current_counter_tl}
+ \tag_struct_begin:n{tag=Caption}
+ \group_begin:
+ \bfseries
+ \tag_mc_begin:n {}
+ #1\
+ \tag_mc_end:
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n {}
+ #2
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin:n {}
+ \ (#3)
+ \tag_mc_end:
+ \group_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \__block_start_para_structure_unconditionally:n { \PARALABEL }
+ \itshape
+ \hskip\labelsep
+ \ignorespaces
+}
+\def\@endtheorem{\endblockenv}
\DeclareInstance{blockenv}{displayblock}{display}
{
env-name = displayblock,
- tag-name = ,
- tag-class = ,
- tagging-recipe = standard,
- inner-level-counter = ,
level-increase = false,
- setup-code = ,
- block-instance = displayblock ,
- inner-instance = ,
}
\DeclareInstance{blockenv}{displayblockflattened}{display}
{
@@ -962,7 +1252,7 @@
para-instance = raggedleft ,
inner-instance = ,
}
- %
+
\DeclareInstance{blockenv}{quotation}{display}
{
env-name = quotation,
@@ -987,7 +1277,6 @@
block-instance = quoteblock ,
inner-instance = ,
}
-
\DeclareInstance{blockenv}{theorem}{display}
{
env-name = theorem-like,
@@ -997,7 +1286,7 @@
inner-level-counter = ,
level-increase = false,
setup-code = ,
- block-instance = displayblock ,
+ block-instance = theoremblock ,
}
\DeclareInstance{blockenv}{verbatim}{display}
{
@@ -1011,6 +1300,7 @@
block-instance = verbatimblock ,
inner-instance = ,
final-code = \legacyverbatimsetup ,
+ para-instance = justify
}
\DeclareInstance{blockenv}{itemize}{display}
{
@@ -1067,7 +1357,6 @@
\DeclareInstance{block}{displayblock-0}{display}
{
leftmargin = 0pt ,
- parindent = 0pt ,
}
\DeclareInstanceCopy{block}{displayblock-1}{displayblock-0}
\DeclareInstanceCopy{block}{displayblock-2}{displayblock-0}
@@ -1078,7 +1367,6 @@
\DeclareInstance{block}{verbatimblock-0}{display}
{
leftmargin = 0pt ,
- parindent = 0pt ,
par-skip = 0pt ,
}
\DeclareInstanceCopy{block}{verbatimblock-1}{verbatimblock-0}
@@ -1101,6 +1389,12 @@
\DeclareInstanceCopy{block}{quotationblock-4}{quotationblock-1}
\DeclareInstanceCopy{block}{quotationblock-5}{quotationblock-1}
\DeclareInstanceCopy{block}{quotationblock-6}{quotationblock-1}
+\DeclareInstance{block}{theoremblock-0}{display}
+ {
+ leftmargin = 0pt ,
+ parindent = \parindent ,
+ par-skip = \parskip ,
+ }
\DeclareInstance{block}{list-1}{display}{
}
\DeclareInstance{block}{list-2}{display}{}
@@ -1126,9 +1420,7 @@
}
\DeclareInstance{list}{description}{std} { item-instance = description }
\DeclareInstance{item}{basic}{std}
- {
- label-align = right ,
- }
+ { label-align = right }
\DeclareInstance{item}{description}{std}
{
label-format = \normalfont\bfseries #1 ,
@@ -1146,309 +1438,42 @@
}
\DeclareInstance{para}{center}{std}
{
+ para-class = center ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \@flushglue ,
right-skip = \@flushglue ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = center ,
}
\DeclareInstance{para}{raggedright}{std}
{
+ para-class = raggedright ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \z@skip ,
right-skip = \@flushglue ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = raggedright ,
}
\DeclareInstance{para}{raggedleft}{std}
{
+ para-class = raggedleft ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \@flushglue ,
right-skip = \z@skip ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = raggedleft ,
}
\DeclareInstance{para}{justify}{std}
{
- start-skip = 0pt ,
- left-skip = \z@skip ,
- right-skip = \z@skip ,
- end-skip = \@flushglue ,
- final-hyphen-demerits = 5000 ,
- cr-cmd = \@normalcr ,
- para-class = justify ,
}
\DeclareRobustCommand\centering {\UseInstance{para}{center}{}}
\DeclareRobustCommand\raggedleft {\UseInstance{para}{raggedleft}{}}
\DeclareRobustCommand\raggedright{\UseInstance{para}{raggedright}{}}
\DeclareRobustCommand\justifying {\UseInstance{para}{justify}{}}
-
\justifying
-\tag_if_active:TF {
- \cs_set:Npn \__block_beginpar_vmode: {
- \__block_debug_typeout:n
- { @endpe = \legacy_if:nTF { @endpe }{true}{false}
- \on@line }
- \legacy_if:nTF { @endpe }
- {
- \legacy_if_gset_false:n { @endpe }
- }
- {
- \int_compare:nNnT \l__block_flattened_level_int < 2
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- }
- }
- \cs_set:Npn \__block_beginpar_hmode:N #1
- {
- \tag_mc_end:
- \__tag_gincr_para_end_int:
- \__block_debug_typeout:n{increment~ /P \on@line }
- \bool_if:NT \l__tag_para_show_bool
- { \tag_mc_begin:n{artifact}
- \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int}
- \tag_mc_end:
- }
- \tag_struct_end:
- \tagpdfparaOff \par \tagpdfparaOn
- }
-\cs_set:Npn \__kernel_displayblock_doendpe: {
- \bool_if:NT \l__tag_para_bool
- {
- \legacy_if:nT { @endpe }
- {
- \__block_debug_typeout:n
- { flattened= \bool_if:NTF
- \l__tag_para_flattened_bool {true}{false}
- \on@line }
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__block_debug_typeout:n{Structure-end~
- \l__tag_para_main_tag_tl\space after~ displayblock \on@line }
- \__tag_gincr_para_main_end_int:
- \tag_struct_end: %text-unit
- }
- }
- }
-}
-\RemoveFromHook{para/begin}[tagpdf]
-\AddToHook{para/begin}[tagpdf]{
- \bool_if:NT \l__tag_para_bool {
- \legacy_if:nF { @inlabel }
- {
- \__block_start_para_structure:n { \PARALABEL }
- }
- }
-}
-\cs_new_protected:Npn \__block_start_para_structure:n #1 {
- \__block_debug_typeout:n
- { @endpe = \legacy_if:nTF { @endpe }{true}{false}
- \on@line }
- \legacy_if:nF { @endpe }
- {
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- }
- \__tag_gincr_para_begin_int:
- \__block_debug_typeout:n{increment~ P \on@line }
- \tag_struct_begin:n
- {
- tag=\l__tag_para_tag_tl
- ,attribute-class=\l__tag_para_attr_class_tl
- }
- \__tag_check_para_begin_show:nn {green}{#1}
- \tag_mc_begin:n {}
-}
-\cs_new_protected:Npn \__block_start_para_structure_unconditionally:n #1 {
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- \__tag_gincr_para_begin_int:
- \__block_debug_typeout:n{increment~ P \on@line }
- \tag_struct_begin:n
- {
- tag=\l__tag_para_tag_tl
- ,attribute-class=\l__tag_para_attr_class_tl
- }
- \__tag_check_para_begin_show:nn {green}{#1}
- \tag_mc_begin:n {}
-}
-\RemoveFromHook{para/end}[tagpdf]
-\AddToHook{para/end}
- {
- \bool_if:NT \l__tag_para_bool
- {
- \__tag_gincr_para_end_int:
- \__block_debug_typeout:n{increment~ /P \on@line }
- \tag_mc_end:
- \__tag_check_para_end_show:nn {red}{}
- \tag_struct_end:
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_end_int:
- \tag_struct_end:
- }
- }
- }
-\def\PARALABEL{NP-}
-\cs_set_protected:Npn \para_end: {
- \scan_stop:
- \mode_if_horizontal:TF {
- \mode_if_inner:F {
- \tex_unskip:D
- \hook_use:n{para/end}
- \@kernel@after@para@end
- \mode_if_horizontal:TF {
- \if_int_compare:w 11 = \tex_lastnodetype:D
- \tex_hskip:D \c_zero_dim
- \fi:
- \tex_par:D
- \hook_use:n{para/after}
- \@kernel@after@para@after
- }
- { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} }
- }
- }
- {
- \__kernel_endpe_vmode: % should do nothing if no tagging
- \tex_par:D
- }
-}
-\cs_set_eq:NN \par \para_end:
-\cs_set_eq:NN \__blockpar \para_end:
-\cs_set_eq:NN \endgraf \para_end:
-\DeclareRobustCommand*\begin[1]{%
- \UseHook{env/#1/before}%
- \@ifundefined{#1}%
- {\def\reserved@a{\@latex@error{Environment~#1~undefined}\@eha}}%
- {\def\reserved@a{\def\@currenvir{#1}%
- \edef\@currenvline{\on@line}%
- \@execute@begin@hook{#1}%
- \csname #1\endcsname}}%
- \@ignorefalse
- \begingroup
- \__kernel_endpe_vmode:
- \reserved@a}
-\cs_new:Npn \__kernel_endpe_vmode: {
- \if@endpe \ifvmode
- \bool_if:NT \l__tag_para_bool
-{
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_end_int:
- \tag_struct_end:
- }
- \@endpefalse
-}
- \fi \fi
-}
-\cs_set:Npn \__kernel_list_label_after: {
- \bool_if:NT \l__tag_para_bool
- {
- \__block_start_para_structure_unconditionally:n { LI- }
- }
-}
-\cs_new:Npn \__block_inner_begin: {
- \tagstructbegin{tag=\l__block_tag_inner_tag_tl}
-}
-\cs_new:Npn \__block_inner_end: {
- \__block_debug_typeout:n{block-end \on@line}
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \__block_debug_typeout:n{close~ /text-unit \on@line}
- \tagstructend
- }
- \tagstructend % end inner structure
-}
-\tl_new:N \l__tag_L_tag_tl
-\tl_set:Nn \l__tag_L_tag_tl {L}
-
-\tl_new:N\l__tag_L_attr_class_tl
-\tl_set:Nn \l__tag_L_attr_class_tl {list}
-\tag_if_active:T
-{
- \tagpdfsetup
- {
- role/new-attribute = {itemize}{/O /List /ListNumbering/Unordered},
- role/new-attribute = {enumerate}{/O /List /ListNumbering/Ordered},
- role/new-attribute = {description}{/O /List /ListNumbering/Description},
- % default if unknown
- role/new-attribute = {list}{/O /List /ListNumbering/Unordered},
- }
-}
-\def\LItag{LI}
-\cs_set:Npn \__block_list_begin: {
- \tagstructbegin
- {
- tag=\l__tag_L_tag_tl
- ,attribute-class=\l__tag_L_attr_class_tl
- }
-}
-\cs_set:Npn \__block_list_item_begin: { \tagstructbegin{tag=\LItag} }
-\cs_set:Npn \__kernel_list_label_begin: {
- \tagstructbegin{tag=Lbl}
- \tagmcbegin{tag=Lbl}
-}
-\cs_set:Npn \__kernel_list_label_end: {
- \tagmcend % end mc-Lbl or artifact
- \tagstructend % end Lbl
- \tagstructbegin{tag=\LBody}
-}
-\def\LBody{LBody}
-\cs_set:Npn \__block_list_item_end: {
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \tagstructend % text-unit
- }
- \tagstructend \tagstructend % end LBody, LI
-}
-\cs_set:Npn \__block_list_end: {
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \tagstructend % text-unit
- \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
- }
- \tagstructend\tagstructend % end LBody, LI
- \tagstructend % end L
-}
-}
-{
- \cs_new:Npn \__block_start_para_structure_unconditionally:n #1 {}
-}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
index 552dfee1832..465eaf84795 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
-
+\def\ltlabfirstaiddate{2024-11-23}
+\def\ltlabfirstaidversion{0.85i}
\ProvidesPackage {latex-lab-testphase-firstaid} [%
\ltlabfirstaiddate\space v\ltlabfirstaiddate\space
Temporary patches to external packages needed for the tagging project]
@@ -51,12 +50,117 @@
} }
\exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3}
}
-\ExplSyntaxOff
\AddToHook{class/amsart/after}
{\def\@author{\authors}}
\AddToHook{class/amsbook/after}
{\def\@author{\authors}}
+\AddToHook{class/amsproc/after}
+ {\def\@author{\authors}}
+\AddToHook{class/amsart/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsbook/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsproc/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{package/amsthm/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\cs_new_protected:Npn \__tag_firstaid_amsthm:
+ {
+ \def\@endtheorem{\endblockenv}
+ \RenewDocumentCommand\@thm{mmmO{}}{%
+ \ifhmode\unskip\unskip\par\fi
+ \normalfont
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ ##1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \tl_set:Nn \l__block_thm_current_counter_tl{##2}
+ \tl_if_empty:nTF{##2}
+ {
+ \@begintheorem{##3}{}[##4]
+ }
+ {
+ \@kernel@refstepcounter{##2}
+ \@begintheorem{##3}{\csname the##2\endcsname}[##4]
+ }
+ }
+ \def\@begintheorem##1##2[##3]{%
+ \UseInstance{blockenv}{theorem}{beginsep=\thm@preskip}
+ \skip_set:Nn\l__block_topsepadd_skip { \thm@postskip }
+ \tagpdfparaOff
+ \group_begin:
+ \normalfont
+ \the\thm@headfont \thm@indent
+ \tl_if_empty:NTF \l__block_thm_current_counter_tl
+ {\MakeLinkTarget[theorem]{}}
+ {\MakeLinkTarget{\l__block_thm_current_counter_tl}}
+ \@ifempty{##1}
+ {\let\thmname\@gobble}
+ {\def\thmname####1{\tag_mc_begin:n {}####1\tag_mc_end:}}%
+ \@ifempty{##2}
+ {\let\thmnumber\@gobble}
+ {\def\thmnumber####1
+ {\tag_struct_begin:n{tag=Lbl}\tag_mc_begin:n {}
+ ####1
+ \tag_mc_end:\tag_struct_end:}}%
+ \@ifempty{##3}
+ {\let\thmnote\@gobble}
+ {\def\thmnote####1{\tag_mc_begin:n{}####1\tag_mc_end:}}%
+ \tag_struct_begin:n{tag=Caption}
+ \thm@swap\swappedhead\thmhead{##1}{##2}{##3}%
+ \tag_mc_begin:n{}\the\thm@headpunct\tag_mc_end:
+ \tag_struct_end:
+ \thmheadnl % possibly a newline.
+ \hskip\thm@headsep
+ \group_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin}
+ \ignorespaces}
+ \def\thmhead@plain##1##2##3{%
+ \thmname{##1}
+ \thmnumber{
+ \@ifnotempty{##1}{~}\@upn{##2}
+ }%
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\thmhead\thmhead@plain
+ \def\swappedhead##1##2##3{%
+ \thmnumber{##2}
+ \thmname{\@ifnotempty{##2}{\nobreakspace}##1}
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\swappedhead@plain=\swappedhead
+ \renewcommand{\openbox}{\leavevmode
+ \hbox to.77778em{\pdf_bdc:nn{Span}{/ActualText<FEFF220E>}%
+ \pdffakespace\hfil\vrule
+ \vbox to.675em{\hrule width.6em\vfil\hrule}%
+ \vrule\hfil\pdf_emc:}}
+ \renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \UseInstance{blockenv}{theorem}{beginsep=6\p@\@plus6\p@}
+ \normalfont
+ \tagpdfparaOff
+ \AddToHookNext{para/begin}
+ {\tag_struct_begin:n{tag=Caption}
+ \tag_mc_begin:n{}%
+ \textit{##1\@addpunct{.}}%
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin}
+ \pdffakespace\hspace{\labelsep}}
+ \ignorespaces
+ }{%
+ \popQED\endblockenv\par
+ }
+ }
+\ExplSyntaxOff
\AddToHook{package/verse/after}[latex-lab-firstaid]{%
\FirstAidNeededT{verse}{sty}{2014/05/10 v2.4b verse typesetting}%
{%
@@ -85,41 +189,6 @@
}%
}%
}
-\AddToHook{file/blindtext.sty/after}[latex-lab-firstaid]{%
- \FirstAidNeededT{blindtext}{sty}{\blindfiledate\space\blindfileversion\space%
- blindtext-Package}%
- {%
- \renewcommand{\blind@items}{%
- \setcounter{blind@listcount}{1}%
- \loop
- \ifblind@optional
- \ifblind@long
- \item[\blindtext@countitem] \blindtext@text
- \else
- \item[\blindtext@count] \blindtext@item
- \fi
- \else % \blind@optionalfalse
- \ifblind@long
- \item \blindtext@text
- \else
- \item \blindtext@countitem
- \fi
- \fi % \ifblind@optional
- {%
- \loop
- \ifnum\value{blindlistlevel}>\value{blindlist@level}%
- \stepcounter{blind@levelcount}%
- \blind@list[\value{blindlist}]\relax
- \addtocounter{blind@levelcount}{-1}%
- \setcounter{blind@listcount}{1}%
- \repeat
- \expandafter}\if@endpe\@doendpe\fi % <----------changed
- \ifnum\value{blind@listcount}<\value{blindlist}%
- \stepcounter{blind@listcount}%
- \repeat
- }
- }%
- }
\AddToHook{package/cleveref/after}
{
\let\@makefntext\cref@old@makefntext
@@ -128,11 +197,6 @@
\protected@edef\cref@currentlabel{%
[footnote][\arabic{footnote}][\cref@result]%
\p@footnote\@thefnmark}}
- \RenewDocumentCommand\refstepcounter{om}{%
- \IfNoValueTF{#1}%
- {\refstepcounter@noarg{#2}}%
- {\refstepcounter@optarg[#1]{#2}}%
- }%
}
\ExplSyntaxOn
\AddToHook{package/booktabs/after}
@@ -159,6 +223,102 @@
\cr}
}
\ExplSyntaxOff
+
+\ExplSyntaxOn
+\AddToHook{package/fancyvrb/after}
+{
+ \def\FV@LeaveVMode{%
+ \if@noskipsec
+ \leavevmode
+ \else
+ \if@FV@ResetMargins\if@inlabel\leavevmode\fi\fi
+ \fi
+ \ifvmode
+ \@noparlisttrue
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n{tag=\l__tag_para_main_tag_tl}
+ \else
+ \bool_set_true:N\l__tag_para_flattened_bool
+ \@noparlistfalse
+ \unskip\par
+ \fi
+ }
+ \def\FV@List#1{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@LeaveVMode
+ \if@inlabel\else\setbox\@labels=\box\voidb@x\fi
+ \FV@ListNesting{#1}%
+ \FV@ListParameterHook
+ \FV@ListVSpace
+ \FV@SetLineWidth
+ \FV@InterLinePenalty
+ \let\FV@ProcessLine\FV@ListProcessLine@i
+ \FV@CatCodes
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit
+ \cs_if_exist:NT \FV@BeginListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@BeginListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=verbatim}
+ }
+ \def\FV@EndList{%
+ \FV@ListProcessLastLine
+ \tag_struct_end:
+ \cs_if_exist:NT \FV@EndListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@EndListFrame
+ \tag_mc_end:
+ }
+ \@endparenv
+ \endgroup
+ \@endpetrue
+ }
+ \def\FV@ListProcessLine#1{%
+ \hbox to \hsize{%
+ \kern\leftmargin
+ \hbox to \linewidth{%
+ \cs_if_exist:NT \FV@LeftListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@LeftListNumber
+ \tag_mc_end:
+ \tag_struct_end:
+ }
+ \cs_if_exist:NT \FV@LeftListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@LeftListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=codeline}
+ \tag_mc_begin:n{}%
+ \FancyVerbFormatLine{#1}%
+ \tag_mc_end:
+ \tag_struct_end:\hss
+ \cs_if_exist:NT \FV@RightListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@RightListFrame
+ \tag_mc_end:
+ }
+ \cs_if_exist:NT \FV@RightListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@RightListNumber
+ \tag_mc_begin:n{}
+ \tag_struct_end:
+ }
+ }
+ \hss}}
+ }
+\ExplSyntaxOff
\endinput
%%
%% End of file `latex-lab-testphase-firstaid.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
index a944c944b20..71d5e771574 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-11-21}
+\def\ltlabfloatversion{0.81g}
\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
{Code related to the tagging of floats}
\prop_new:N \g__tag_float_sect_prop
@@ -42,8 +42,14 @@
\seq_gput_right:Nn \g__tag_float_types_seq {figure}
\seq_gput_right:Nn \g__tag_float_types_seq {table}
\tl_new:N\@current@float@struct
+\int_new:N\g__tag_float_int
\bool_new:N \g__tag_float_sect_bool
\bool_gset_true:N \g__tag_float_sect_bool
+\cs_new_protected:Npn \__tag_float_init:
+ {
+ \int_gincr:N \g__tag_float_int
+ \tl_set:Ne \@current@float@struct { \int_use:N \g__tag_float_int}
+ }
\cs_new_protected:Npn\__tag_float_init_collect:
{
\bool_if:NT\g__tag_float_sect_bool
@@ -91,12 +97,39 @@
{
split-float .code:n =
{
- \__tag_float_end:
- \__tag_float_begin:
- \MakeLinkTarget*{floatstructure.\int_use:N\c@g__tag_struct_abs_int}
+ \UseTaggingSocket{float/end}
+ \__tag_float_init:
+ \UseTaggingSocket{float/begin}
+ \MakeLinkTarget*{floatstructure.\@current@float@struct}
}
}
-
+\str_if_exist:cF { l__socket_tagsupport/float/begin_plug_str }
+ {
+ \NewSocket{tagsupport/float/hmode/begin}{0}
+ \NewSocket{tagsupport/float/hmode/end}{0}
+ \NewSocket{tagsupport/float/begin}{0}
+ \NewSocket{tagsupport/float/end}{0}
+ }
+\NewSocketPlug {tagsupport/float/hmode/begin}{default}
+ {
+ \__tag_float_stop_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/begin}{default}
+\NewSocketPlug{tagsupport/float/hmode/end}{default}
+ {
+ \__tag_float_start_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/end}{default}
+\NewSocketPlug{tagsupport/float/begin}{default}
+ {
+ \__tag_float_begin:
+ }
+\AssignSocketPlug{tagsupport/float/begin}{default}
+\NewSocketPlug{tagsupport/float/end}{default}
+ {
+ \__tag_float_end:
+ }
+\AssignSocketPlug{tagsupport/float/end}{default}
\cs_new_protected:Npn \__tag_float_stop_par:
{
\tag_mc_end:
@@ -113,7 +146,6 @@
}
\tag_mc_begin:n{tag=P}
}
-
\cs_new_protected:Npn \__tag_float_begin:
{%
\bool_if:NTF\g__tag_float_sect_bool
@@ -147,7 +179,7 @@
\fi
\ifhmode
\@bsphack
- \@nameuse{__tag_float_stop_par:}% <---end P
+ \UseTaggingSocket{float/hmode/begin}%
\@floatpenalty -\@Mii
\else
\@floatpenalty-\@Miii
@@ -190,7 +222,8 @@
}%
\@fltovf
\fi
- \@nameuse{__tag_float_begin:}%
+ \csname __tag_float_init:\endcsname
+ \UseTaggingSocket{float/begin}%
\global \setbox\@currbox
\color@vbox
\normalcolor
@@ -198,11 +231,11 @@
\hsize\columnwidth
\@parboxrestore
\@floatboxreset
- \MakeLinkTarget*{floatstructure.\number\value{g__tag_struct_abs_int}}%
+ \MakeLinkTarget*{\@captype.struct.\@current@float@struct}%
}%
\def\end@float{%
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\@cons\@currlist\@currbox
@@ -214,14 +247,14 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
}
\def\end@dblfloat{%
\if@twocolumn
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\global\dp\@currbox1sp %
@@ -234,7 +267,7 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
\else
@@ -243,7 +276,55 @@
}%
\ExplSyntaxOn
\def\hyper@nopatch@caption{}
-\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel
+\str_if_exist:cF { l__socket_tagsupport/caption/begin_plug_str }
+ {
+ \NewSocket{tagsupport/caption/begin}{1}
+ \NewSocket{tagsupport/caption/end}{0}
+ \NewSocket{tagsupport/caption/label/begin}{0}
+ \NewSocket{tagsupport/caption/label/end}{0}
+ }
+\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str }
+ {
+ \NewSocket{tagsupport/para/begin}{0}
+ \NewSocket{tagsupport/para/end}{0}
+ }
+\NewSocket{caption/label}{1}
+\NewSocketPlug{caption/label}{kernel}
+ {
+ #1:~
+ }
+\AssignSocketPlug{caption/label}{kernel}
+\NewSocketPlug {tagsupport/caption/begin}{default}
+ {
+ \tl_if_empty:eTF {#1}
+ {
+ \tag_struct_begin:n{tag=Caption,firstkid}
+ }
+ {
+ \tag_struct_begin:n{tag=Caption,parent=#1,firstkid}
+ }
+ \bool_set_true:N \l__tag_para_flattened_bool
+ }
+\AssignSocketPlug{tagsupport/caption/begin}{default}
+\NewSocketPlug {tagsupport/caption/end}{default}
+ {
+ \tag_struct_end:
+ }
+\AssignSocketPlug{tagsupport/caption/end}{default}
+\NewSocketPlug {tagsupport/caption/label/begin}{default}
+ {
+ \tagpdfparaOff
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ }
+\AssignSocketPlug{tagsupport/caption/label/begin}{default}
+\NewSocketPlug {tagsupport/caption/label/end}{default}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ }
+\AssignSocketPlug{tagsupport/caption/label/end}{default}
\def\caption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\caption\c_space_tl outside~float}\@ehd
@@ -255,52 +336,39 @@
}
{
\@kernel@refstepcounter\@captype
- \xdef\@currentHref{floatstructure.\@current@float@struct}%
+ \xdef\@currentHref{\@captype.struct.\@current@float@struct}%
}
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
}
-\providecommand\theHg__tag_struct_abs_int{\int_use:N\c@g__tag_struct_abs_int}
-
\AddToHook{begindocument}
{
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
- \tag_stop:n{caption}
+ \SuspendTagging{\@makecaption}
\sbox\@tempboxa{#1:~#2}%
- \tag_start:n{caption}
- \tagtool{para=false}
- \tl_if_empty:NT \@current@float@struct
- { \tl_set:Ne \@current@float@struct {\tag_get:n{struct_num}} }
- \tag_struct_begin:n{tag=Caption,parent=\@current@float@struct}
- \tag_if_active:T
- {
- \seq_gpop_right:cN {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- \seq_gput_left:cV {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- }
+ \ResumeTagging{\@makecaption}
+ \UseTaggingSocket{caption/begin}{\@current@float@struct}
\ifdim \wd\@tempboxa >\hsize
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
- #2\par
- \tag_mc_end:
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
+ #2
+ \par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
#2
- \tag_mc_end:\hfil}%
+ \UseTaggingSocket{para/end}
+ \hfil}%
\fi
- \tag_struct_end: %caption
+ \UseTaggingSocket{caption/end}
\vskip\belowcaptionskip}
}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
index 2ea6e529d73..942f2deeddf 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
{Code related to the tagging of graphics}
\RequirePackage{l3opacity}
@@ -222,7 +222,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{Gin}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -257,7 +257,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{picture}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -657,7 +657,7 @@
\@defaultunitsset\@tempdimc{#1}\unitlength
\Gin@tag@struct@begin
\setbox\@picbox\hb@xt@\@tempdimc\bgroup
- \tag_stop: %do not tag inside the picture box
+ \tag_suspend:n{\@picture} %do not tag inside the picture box
\@defaultunitsset\@tempdimc{#3}\unitlength
\hskip -\@tempdimc
\@defaultunitsset\@tempdimc{#4}\unitlength
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
index e40ab0ca2a8..0f8001ce861 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
@@ -34,19 +34,35 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion}
{Changes related to the tagging of the margin notes}
\int_new:N \g__kernel_marginpar_int
\socket_new:nn {tagsupport/marginpar/begin}{0}
\socket_new:nn {tagsupport/marginpar/end}{0}
+\cs_new_protected:Npn\__tag_get_marginpar_parent_aux:nn #1 #2
+ {
+ \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l__tag_tmpa_seq {#2}}
+ }
+\cs_new_protected:Npn \__tag_get_marginpar_parent:N #1
+ {
+ \seq_clear:N\l__tag_tmpa_seq
+ \seq_map_pairwise_function:NNN
+ \g__tag_struct_tag_stack_seq
+ \g__tag_struct_stack_seq
+ \__tag_get_marginpar_parent_aux:nn
+ \seq_put_right:Nn\l__tag_tmpa_seq {2}
+ \seq_get_left:NN \l__tag_tmpa_seq #1
+ }
+\cs_generate_variant:Nn \tag_struct_begin:n {e}
\socket_new_plug:nnn {tagsupport/marginpar/begin}{default}
{
\if_mode_horizontal:
\tag_mc_end:
- \tag_struct_begin:n{tag=Aside,parent=\g__tag_para_main_struct_tl}%
+ \__tag_get_marginpar_parent:N \l__tag_tmpa_tl
+ \tag_struct_begin:e{tag=Aside,parent=\l__tag_tmpa_tl}%
\else:
\tag_struct_begin:n{tag=Aside}%
\fi:
@@ -77,9 +93,9 @@
\long\def\@ympar#1{%
\@savemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
- \tag_stop:
+ \tag_suspend:n{\@ympar}
\@xympar
- \tag_start:}
+ \tag_resume:n{\@ympar}}
\long\def\@xmpar[#1]#2{%
\int_gincr:N\g__kernel_marginpar_int
\property_if_recorded:eTF { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }
@@ -88,21 +104,21 @@
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}
}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@currbox{#2}%
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
{
\@savemarbox\@currbox{#2}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@marbox{#1
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}}
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@xympar
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
index 3b35a7beb38..a82944e5d10 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesExplPackage {latex-lab-testphase-minipage}
{\ltlabminipagedate} {\ltlabminipageversion}
{Code related to the tagging of minipages and parboxes}
@@ -54,12 +54,13 @@
\@pboxswfalse
\setlength\@tempdima{#4}%
\def\@mpargs{{#1}{#2}[#3]{#4}}%
- \socket_use:n{tagsupport/minipage/before}% new
+ \UseTaggingSocket{minipage/before}% new
\setbox\@tempboxa\vbox\bgroup
\color@begingroup
\hsize\@tempdima
\textwidth\hsize \columnwidth\hsize
\@parboxrestore
+ \UseTaggingSocket{para/restore}
\def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
\socket_assign_plug:nn{fntext/process}{mp}%
\let\@listdepth\@mplistdepth \@mplistdepth\z@
@@ -77,18 +78,20 @@
\@minipagefalse %% added 24 May 89
\color@endgroup
\egroup
- \tag_stop:n{minipage}
+ \tag_suspend:n{minipage}
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
- \tag_start:n{minipage}
- \socket_use:n{tagsupport/minipage/after} %new end ...
+ \tag_resume:n{minipage}
+ \UseTaggingSocket{minipage/after} %new end ...
}
\long\def\@iiiparbox#1#2[#3]#4#5{%
\@kernel@init@parbox
\leavevmode
\@pboxswfalse
\setlength\@tempdima{#4}%
- \socket_use:n{tagsupport/parbox/before}
- \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+ \UseTaggingSocket{parbox/before}
+ \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore
+ \UseTaggingSocket{para/restore}
+ #5\@@par}%
\ifx\relax#2\else
\setlength\@tempdimb{#2}%
\edef\@parboxto{to\the\@tempdimb}%
@@ -102,23 +105,36 @@
\csname bm@#3\endcsname}%
\if@pboxsw \m@th$\fi
\@end@tempboxa%
- \socket_use:n{tagsupport/parbox/after}
+ \UseTaggingSocket{parbox/after}
}
\tl_new:N \l__ltboxes_tag_tl
\tl_set:Nn \l__ltboxes_tag_tl {Div}
\socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt}
{
- \tag_mc_end_push:\tag_struct_end:
+ \tag_mc_end_push:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
}
\socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt}
- {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+ {
+ \tag_struct_end:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+ \tag_mc_begin_pop:n{}
+ }
\socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt}
- {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
+ {
+ \tag_mc_end_push:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
+ \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
+ }
\socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt}
- {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+ {
+ \tag_struct_end:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+ \tag_mc_begin_pop:n{}
+ }
\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt}
\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt}
\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
index 38bc8993446..1a46498b353 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
-\def\ltlabneworIdate{2023-07-20}
-\def\ltlabneworIversion{0.85a}
+\def\ltlabneworIdate{2024-11-12}
+\def\ltlabneworIversion{0.85b}
\ProvidesPackage{latex-lab-testphase-new-or-1}
[\ltlabneworIdate\space v\ltlabneworIversion\space
Temporary output patches for tagging and better link support]
@@ -43,7 +43,7 @@
\providecommand\@kernel@before@foot{}
\providecommand\@kernel@after@head{}
\providecommand\@kernel@after@foot{}
-\providecommand\@mult@ptagging@hook{}% multicol
+\providecommand\@mult@ptagging@hook{}% should be replaced with a socket, eventually
\patchcmd\@outputpage
{\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox}
@@ -84,16 +84,6 @@
\fi
\global \maxdepth \@maxdepth}
}
-\AddToHook{package/multicol/after}
- {% multicol needs later loading
- \patchcmd\page@sofar
- {\global\dimen\tw@\dp\z@}%
- {%
- \global\dimen\tw@\dp\z@
- \@mult@ptagging@hook
- }%
- {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}%
-}
\ExplSyntaxOn
\def\@kernel@before@head{\pdfannot_link_off:}
\def\@kernel@before@foot{\pdfannot_link_off:}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
index 6fee3cc5a94..b0c5a1c2fd4 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
@@ -33,16 +33,19 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
{Code related to the tagging of sectioning commands}
\RequirePackage{latex-lab-kernel-changes}
\seq_new:N \g__tag_sec_stack_seq
-\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}}
+\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}{2}}
+\cs_new:Npn \__tag_get_data_current_Sect:
+ {
+ \exp_last_unbraced:Ne\use_iii:nnn{\seq_item:Nn\g__tag_sec_stack_seq{1}}
+ }
\bool_new:N \l__tag_sec_Sect_bool
\bool_set_true:N\l__tag_sec_Sect_bool
-
\cs_new_protected:Npn\__tag_sec_begin:nn #1 #2 %#1 level #2 keyval
{
\tag_struct_begin:n
@@ -50,7 +53,8 @@
tag= {\int_compare:nNnTF {#1}={-1}{Part}{Sect}}
,#2
}
- \seq_gpush:Ne \g__tag_sec_stack_seq {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}}
+ \seq_gpush:Ne \g__tag_sec_stack_seq
+ {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}{\g__tag_struct_stack_current_tl}}
}
\msg_new:nnn { tag } {wrong-sect-nesting}
{
@@ -61,12 +65,12 @@
\cs_new_protected:Npn\__tag_sec_end:n #1 % #1 level
{
\seq_get:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
- \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nn\l__tag_tmpa_tl+1}
+ \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nnn\l__tag_tmpa_tl+1}
{
\seq_get:NN\g__tag_struct_tag_stack_seq \l__tag_tmpb_tl
\exp_args:Nee
\tl_if_eq:nnTF
- {\exp_last_unbraced:NV\use_i:nn\l__tag_tmpa_tl}
+ {\exp_last_unbraced:NV\use_i:nnn\l__tag_tmpa_tl}
{\exp_last_unbraced:NV\use_i:nn\l__tag_tmpb_tl}
{
\seq_gpop:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
@@ -75,7 +79,7 @@
}
{
\msg_warning:nnee {tag}{wrong-sect-nesting}
- { \exp_last_unbraced:NV\use_i:nn \l__tag_tmpa_tl }
+ { \exp_last_unbraced:NV\use_i:nnn \l__tag_tmpa_tl }
{ \exp_last_unbraced:NV\use_i:nn \l__tag_tmpb_tl }
}
}
@@ -187,7 +191,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n {sec-stop-part}
}
}
@@ -219,7 +223,7 @@
\IfBooleanTF
{#1}
{ \@schapter {#3} }
- { \@chapter [#2]{#3} }
+ { \@chapter [{#2}]{#3} }
\tag_tool:n {sec-stop-chapter}
}
\RenewDocumentCommand\part{ s O{#3} m }
@@ -257,7 +261,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n{sec-stop-part}
}
}
@@ -303,9 +307,9 @@
{\tagmcbegin{tag=Lbl}}
{#1}
}
- \tag_stop:n{hangfrom}
+ \tag_suspend:n{hangfrom}
\hangindent \wd\@tempboxa\noindent
- \tag_start:n{hangfrom}
+ \tag_resume:n{hangfrom}
\tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{}}
\cs_new_protected:Npn \@kernel@tag@svsec
{
@@ -329,7 +333,7 @@
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
- \tagtool{para-flattened=true} % or \bool_set_true\l__tag_para_flattened_bool
+ \tagtool{para-flattened=true} % or \bool_set_true\l_@@_para_flattened_bool
#6{%
\ifnum #2>\c@secnumdepth
\@hangfrom {\hskip #3\relax\@svsec}%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
index 4af648e77c4..91a750b20a5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
{Code related to the tagging of tables}
\RequirePackage{array}
@@ -50,47 +50,97 @@
\tl_set:Nn \l__tbl_cellattribute_tl {}
\tl_new:N \l__tbl_rowattribute_tl
\tl_set:Nn \l__tbl_rowattribute_tl {}
+\prop_new:N\g__tbl_untagged_cells_prop
+\prop_new:N\l__tbl_saved_untagged_cells_prop
\clist_new:N \l__tbl_tmpa_clist
\tl_new:N \l__tbl_tmpa_tl
+\str_new:N \l__tbl_tmpa_str
+\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str }
+ {
+ \NewSocket{tagsupport/tbl/init/celldata}{0}
+ \NewSocket{tagsupport/tbl/restore/celldata}{0}
+ }
+\NewSocketPlug{tagsupport/tbl/init/celldata}{default}
+ {
+ \prop_set_eq:NN\l__tbl_saved_untagged_cells_prop \g__tbl_untagged_cells_prop
+ \prop_gclear:N \g__tbl_untagged_cells_prop
+ }
+\AssignSocketPlug{tagsupport/tbl/init/celldata}{default}
+
+\NewSocketPlug{tagsupport/tbl/restore/celldata}{default}
+ {
+ \prop_gset_eq:NN\g__tbl_untagged_cells_prop \l__tbl_saved_untagged_cells_prop
+ }
+\AssignSocketPlug{tagsupport/tbl/restore/celldata}{default}
\NewSocketPlug{tagsupport/tbl/cell/begin}{TD}
{
\__tbl_show_curr_cell_data:
- \tag_struct_begin:n
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
{
- tag =\l__tbl_celltag_tl,
- attribute-class =\l__tbl_cellattribute_tl
- }
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
- \int_step_inline:nn { \g__tbl_span_tl - 1 }
- {
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tl_set:Ne \l__tbl_tmpa_tl {\int_eval:n { \g__tbl_col_int - 1 - \g__tbl_table_cols_tl }}
+ \clist_if_in:NoT \l__tbl_header_columns_clist { \l__tbl_tmpa_tl }
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tag_struct_begin:n
+ {
+ tag =\l__tbl_celltag_tl,
+ attribute-class ={\l__tbl_cellattribute_tl}
+ }
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+ \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tag_mc_begin:n{}
}
- \tag_mc_begin:n{}
}
\NewSocketPlug{tagsupport/tbl/cell/end}{TD}
{
- \tag_mc_end:
- \tag_struct_end:
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ }
}
\NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
{
\__tbl_show_curr_cell_data:
- \tag_struct_begin:n
- {
- tag =\l__tbl_pcelltag_tl,
- attribute-class =\l__tbl_cellattribute_tl
- }
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
- \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
{
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
- }
- \tagpdfparaOn
- \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tag_struct_begin:n
+ {
+ tag =\l__tbl_pcelltag_tl,
+ attribute-class ={\l__tbl_cellattribute_tl}
+ }
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+ \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tagpdfparaOn
+ \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ }
}
\NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
{
- \tag_struct_end:
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+ {
+ \tag_struct_end:
+ \legacy_if:nT {@endpe}{\par}
+ \mode_if_vertical:T{ \tagpdfparaOff }
+ }
}
\NewSocketPlug{tagsupport/tbl/row/begin}{TR}
{
@@ -116,7 +166,7 @@
{
\__tbl_trace:n
{==>~
- stucture~stored~for~row~\int_use:N\g__tbl_row_int :~
+ structure~stored~for~row~\int_use:N\g__tbl_row_int :~
\seq_use:Nn \g__tbl_struct_cur_seq {,}
}
}
@@ -124,13 +174,23 @@
\tag_struct_end:
}
}
+\int_if_exist:NF \l__tag_block_flattened_level_int
+ {
+ \int_new:N \l__tag_block_flattened_level_int
+ }
+\NewSocketPlug{tagsupport/para/restore}{Table}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_true:N \l__tag_para_bool
+ \bool_set_false:N \l__tag_para_flattened_bool
+ \int_zero:N \l__tag_block_flattened_level_int
+ }
\NewSocketPlug{tagsupport/tbl/init}{Table}
{
- \tag_if_active:T
- {
- \bool_set_false:N \l__tag_para_bool
- \__tbl_init_struct_data:
- }
+ \bool_set_false:N \l__tag_para_bool
+ \AssignSocketPlug{tagsupport/para/restore}{Table}
+ \__tbl_init_struct_data:
}
\NewSocketPlug{tagsupport/tbl/finalize}{Table}
{
@@ -190,7 +250,7 @@
\prop_if_exist:cT
{ g__tag_struct_ \l__tbl_tmpa_tl _prop }
{
- \exp_args:No \__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+ \__tag_struct_prop_gput:onn { \l__tbl_tmpa_tl } {S}{/Artifact}
}
}
}
@@ -261,7 +321,7 @@
\prop_if_exist:cT
{ g__tag_struct_ \l__tbl_tmpa_tl _prop }
{
- \exp_args:No\__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+ \__tag_struct_prop_gput:onn {\l__tbl_tmpa_tl} {S}{/Artifact}
}
}
}
@@ -320,14 +380,21 @@
{/O /Table /ColSpan~\int_eval:n{#1}}
}
\tl_set:Ne \l__tbl_cellattribute_tl
- {colspan-\int_eval:n{#1}}
+ {\l__tbl_cellattribute_tl,colspan-\int_eval:n{#1}}
}
}
-\tag_if_active:T
- { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
-
+\str_if_exist:cF { l__socket_tagsupport/tbl/leaders/end_plug_str }
+ {
+ \NewSocket{tagsupport/tbl/leaders/begin}{0}
+ \NewSocket{tagsupport/tbl/leaders/end}{0}
+ }
+\NewSocketPlug{tagsupport/tbl/leaders/begin}{code}
+ { \tag_mc_begin:n{artifact} }
+\NewSocketPlug{tagsupport/tbl/leaders/end}{code}
+ { \tag_mc_end: }
\AddToHook{cmd/array/before}{\__tag_tbl_disable:}
+
\cs_new_protected:Npn \__tag_tbl_disable:
{
\AssignSocketPlug{tagsupport/tbl/cell/begin}{noop}
@@ -347,6 +414,8 @@
\AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop}
\AssignSocketPlug{tagsupport/tbl/vmode/end}{noop}
\AssignSocketPlug{tagsupport/tbl/colspan}{noop}
+ \AssignSocketPlug{tagsupport/tbl/leaders/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/leaders/end}{noop}
}
\cs_new_protected:Npn \__tag_tbl_enable:
@@ -368,6 +437,8 @@
\AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table}
\AssignSocketPlug{tagsupport/tbl/vmode/end}{Table}
\AssignSocketPlug{tagsupport/tbl/colspan}{code}
+ \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code}
+ \AssignSocketPlug{tagsupport/tbl/leaders/end}{code}
}
\keys_define:nn { __tag / setup }
@@ -385,6 +456,7 @@
\tl_set:Nn\l__tbl_celltag_tl {text}
\tl_set:Nn\l__tbl_tabletag_tl {Div}
\clist_clear:N \l__tbl_header_rows_clist
+ \clist_clear:N \l__tbl_header_columns_clist
},
table/tagging .default:n = true,
table/tagging .initial:n = true
@@ -416,6 +488,7 @@
}
\clist_new:N \l__tbl_header_rows_clist
+\clist_new:N \l__tbl_header_columns_clist
\cs_new_protected:Npn \__tbl_set_header_rows:
{
\clist_map_inline:Nn \l__tbl_header_rows_clist
@@ -433,7 +506,19 @@
{ g__tag_struct_####1_prop }
{ C }
\l__tbl_tmpa_tl
- {\__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_tl]} }
+ {
+ \str_set:Ne \l__tbl_tmpa_str {\l__tbl_tmpa_tl}
+ \str_remove_once:Nn \l__tbl_tmpa_str {[}
+ \str_remove_once:Nn \l__tbl_tmpa_str {]}
+ \str_if_in:NnTF\l__tbl_tmpa_str{/TH-row}
+ {
+ \str_replace_once:Nnn \l__tbl_tmpa_str {/TH-row}{/TH-both}
+ \__tag_struct_prop_gput:nne{ ####1 }{C}{[\l__tbl_tmpa_str]}
+ }
+ {
+ \__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_str]}
+ }
+ }
{\__tag_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}}
}
}
@@ -442,8 +527,68 @@
\keys_define:nn { __tag / setup }
{
table/header-rows .clist_set:N = \l__tbl_header_rows_clist,
+ table/header-columns .clist_set:N = \l__tbl_header_columns_clist,
table-header-rows .meta:n = {table/header-rows={#1}}
}
+\cs_if_exist:NT \__tag_struct_prop_gput:nnn
+ {
+ \cs_generate_variant:Nn \__tag_struct_prop_gput:nnn {one}
+ }
+\cs_new_protected:Npn \__tbl_multirow:n #1
+ {
+ \prop_get:NeNF \g__tag_attr_entries_prop
+ {rowspan-\int_eval:n{#1}}
+ \l__tbl_tmpa_tl
+ {
+ \__tag_attr_new_entry:ee
+ {rowspan-\int_eval:n{#1}}
+ {/O /Table /RowSpan~\int_eval:n{#1}}
+ }
+ \seq_gput_left:Ne\g__tag_attr_class_used_seq
+ {\pdf_name_from_unicode_e:n{rowspan-\int_eval:n{#1}}}
+ \seq_get_right:NN\g__tbl_struct_cur_seq \l__tbl_tmpb_tl
+ \tl_set:Ne \l__tbl_tmpb_tl { \int_abs:n{\l__tbl_tmpb_tl} }
+ \prop_get:cnNTF
+ { g__tag_struct_\l__tbl_tmpb_tl _prop }
+ { C }
+ \l__tbl_tmpa_tl
+ {
+ \tl_remove_once:Nn \l__tbl_tmpa_tl {[}
+ \tl_remove_once:Nn \l__tbl_tmpa_tl {]}
+ \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+ {C}
+ {[/rowspan-\int_eval:n{#1}~\l__tbl_tmpa_tl]}
+ }
+ {
+ \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+ {C}
+ {[/rowspan-\int_eval:n{#1}]}
+ }
+ \__tbl_gset_untagged_row_cells:nn {#1-1}{\g__tbl_span_tl}
+ }
+\keys_define:nn{ __tag / setup }
+ { table/multirow .code:n = {\__tbl_multirow:n {#1} }
+ ,table/multirow .default:n = 1
+ }
+\cs_new_protected:Npn \__tbl_gset_untagged_row_cells:nn #1 #2 % #1 number of rows, #2 number of columns
+ {
+ \int_step_inline:nn {#1}
+ {
+ \int_step_inline:nn {#2}
+ {
+ \prop_gput:Nee \g__tbl_untagged_cells_prop
+ { \int_eval:n {\g__tbl_row_int + ##1},\int_eval:n{\g__tbl_col_int + ####1 -1 } }{}
+ }
+ }
+ }
+\prg_new_protected_conditional:Npnn\__tbl_if_tag_cell:nn #1 #2 %#1 row, #2 col
+ { T,TF }
+ {
+ \prop_get:NeNTF \g__tbl_untagged_cells_prop
+ {\int_eval:n{#1},\int_eval:n{#2}}\l__tbl_tmpa_tl
+ { \prg_return_false:}
+ { \prg_return_true: }
+ }
\cs_new_protected:Npn \__tbl_show_curr_cell_data: {
\__tbl_trace:n { ==>~ current~cell~data:~
\int_use:N \g__tbl_row_int ,
@@ -451,10 +596,6 @@
\g__tbl_span_tl
}
}
-\NewSocket{tbl/celldata/missingcount}{1}
-\NewSocketPlug{tbl/celldata/missingcount}{code}{\tbl_count_missing_cells:n{#1}}
-\AssignSocketPlug{tbl/celldata/missingcount}{code}
-
\cs_new:Npn \__tbl_add_missing_cells:
{
\int_compare:nNnT \g__tbl_missing_cells_int > 0
@@ -464,6 +605,7 @@
additional~cell(s)~into~previous~row:}
\int_step_inline:nn { \g__tbl_missing_cells_int }
{
+ \int_gincr:N\g__tbl_col_int
\UseTaggingSocket{tbl/cell/begin}
\UseTaggingSocket{tbl/cell/end}
}
@@ -505,9 +647,9 @@
}
\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
\reset@font
- \tag_stop:n{caption}
+ \tag_suspend:n{caption}
\sbox\@tempboxa{#1{#2:~}#3}%
- \tag_start:n{caption}
+ \tag_resume:n{caption}
\ifdim\wd\@tempboxa>\hsize
#1{#2:~}#3%
\else
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
index 749ab3aa08a..2eea229b6d5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion}
{Code related to the tagging of various small text commands}
@@ -45,11 +45,11 @@
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,actualtext=LaTeX}
\tag_mc_begin:n{}
- \tag_stop:n{LaTeX}
+ \tag_suspend:n{LaTeX}
}
\AddToHook{cmd/LaTeX/after}
{
- \tag_start:n{LaTeX}
+ \tag_resume:n{LaTeX}
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin_pop:n{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
index e4cb035ba10..558041fccc4 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
@@ -36,35 +36,41 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion}
{ Code related to the tagging of toc-like lists}
%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
\RequirePackage{latex-lab-kernel-changes}
-\def\@contentsline@cfgpoint@before#1#2#3#4{}
-\def\@contentsline@cfgpoint@after#1#2#3#4{}
+\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/contentsline/before}{1}
+ \NewSocket{tagsupport/toc/contentsline/after}{1}
+ }
\def\contentsline#1#2#3#4%
{%
- \@contentsline@cfgpoint@before{#1}{#2}{#3}{#4}%
+ \UseTaggingSocket{toc/contentsline/before}{{#1}{#2}{#3}{#4}}%
\gdef\@contentsline@destination{#4}%
\csname l@#1\endcsname{#2}{#3}%
- \@contentsline@cfgpoint@after{#1}{#2}{#3}{#4}%
+ \UseTaggingSocket{toc/contentsline/after}{{#1}{#2}{#3}{#4}}%
}
\def\addcontentsline#1#2#3{% #1=toc extension, #2= heading type, tag
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent
}}
-\def\@starttoc@cfgpoint@before#1{}
-\def\@starttoc@cfgpoint@after#1{}
+\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/starttoc/before}{1}
+ \NewSocket{tagsupport/toc/starttoc/after}{1}
+ }
\def\@starttoc#1{%
\begingroup
\makeatletter
- \@starttoc@cfgpoint@before{#1}%
+ \UseTaggingSocket{toc/starttoc/before}{#1}%
\@input{\jobname.#1}%
- \@starttoc@cfgpoint@after{#1}%
+ \UseTaggingSocket{toc/starttoc/after}{#1}%
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
@@ -74,8 +80,11 @@
\NewMirroredHookPairWithArguments{contentsline/number/before}{contentsline/number/after}{1}%
\NewMirroredHookPairWithArguments{contentsline/text/before}{contentsline/text/after}{4}%
\NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}%
-\def\@dottedtocline@cfgpoint@leaders#1{#1}
-
+\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/leaders/before}{0}
+ \NewSocket{tagsupport/toc/leaders/after}{0}
+ }
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
@@ -89,10 +98,11 @@
\csname contentsline@text@#1@format\endcsname{#4}%
\UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline@destination}%
\nobreak
- \@dottedtocline@cfgpoint@leaders{%
+ \UseTaggingSocket{toc/leaders/before}\SuspendTagging{toc/leaders}%
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
- mu$}\hfill}%
+ mu$}\hfill
+ \ResumeTagging{toc/leaders}\UseTaggingSocket{toc/leaders/after}%
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor
\UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline@destination}%
@@ -276,45 +286,26 @@
\fi}
}
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\tl_new:N \l__tag_toc_tmpa_tl
-\AddToHook{cmd/refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\AddToHook{cmd/H@refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\msg_new:nnn { tag } {struct-dest-unknown}
- {
- Destination~#1~has~no~related~structure.\\
- /Ref~for~structure~#2~not~updated
- }
-
-\cs_new_protected:Npn \g__tag_struct_ref_by_dest:
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
{
- \prop_map_inline:Nn\g__tag_struct_ref_by_dest_prop
- {
- \prop_get:NnNTF \g__tag_struct_dest_num_prop {##2} \l__tag_tmpa_tl
- {
- \__tag_struct_gput_data_ref:ee
- { ##1 }
- { \tag_struct_object_ref:e{ \l__tag_tmpa_tl }}
- }
- {
- \msg_warning:nnnn {tag}{struct-dest-unknown}{##2}{ ##1}
- }
- }
- }
-\hook_gput_code:nnn {tagpdf/finish/before}{tagpdf/struct/Ref}{\g__tag_struct_ref_by_dest:}
+ \AddToHook{cmd/refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ \AddToHook{cmd/H@refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
\int_new:N \g__tag_toc_level_int
\seq_new:N \g__tag_toc_stack_seq
@@ -325,10 +316,11 @@
\int_gset:Nn \g__tag_toc_level_int {-100}
\tag_struct_begin:n{tag=TOC,title=#1}
}
-\cs_set_protected:Npn\@starttoc@cfgpoint@before#1
- {
- \__tag_toc_starttoc_init:n{#1}
- }
+\NewSocketPlug{tagsupport/toc/starttoc/before}{default}
+ {
+ \__tag_toc_starttoc_init:n{#1}
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/before}{default}
\cs_new_protected:Npn \__tag_toc_starttoc_finalize:
{
\int_step_inline:nn
@@ -337,11 +329,11 @@
\tag_struct_end:
\seq_gclear:N \g__tag_toc_stack_seq
}
-\cs_set_protected:Npn\@starttoc@cfgpoint@after#1
- {
- \__tag_toc_starttoc_finalize:
- }
-
+\NewSocketPlug{tagsupport/toc/starttoc/after}{default}
+ {
+ \__tag_toc_starttoc_finalize:
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/after}{default}
\cs_new_protected:Npn \__tag_toc_end:n #1
{
\seq_get:NNT\g__tag_toc_stack_seq \l__tag_toc_tmpa_tl
@@ -361,7 +353,8 @@
}
}
\cs_generate_variant:Nn \__tag_toc_end:n {e}
-\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnn #1 #2 #3 %#1 level, #2 content, #3 destination
+\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnnn #1 #2 #3 #4
+ %#1 level, #2 content, #3 page number (unused) #4 destination
{
\tag_if_active:T
{
@@ -383,21 +376,22 @@
\int_gset:Nn \g__tag_toc_level_int { \use:c{toclevel@#1} }
\group_begin:
\text_declare_expand_equivalent:Nn \numberline \use_none:n
- \exp_args:Ne \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
- \prop_gput:Nee \g__tag_struct_ref_by_dest_prop
- { \tag_get:n {struct_num} }{#3}
+ \exp_args:Ne
+ \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
+ \tag_struct_gput:nnn { \tag_get:n {struct_num} }{ref_dest}{#4}
\seq_gpush:Ne \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
\group_end:
}
}
}
-\cs_set_protected:Npn\@contentsline@cfgpoint@before#1#2#3#4
+\NewSocketPlug{tagsupport/toc/contentsline/before}{default}
{
- \__tag_toc_contentsline_begin:nnn {#1}{#2}{#4}
+ \__tag_toc_contentsline_begin:nnnn #1
}
+\AssignSocketPlug{tagsupport/toc/contentsline/before}{default}
\msg_new:nnn {tag}{toc-no-TOCI}{Missing~TOCI~structure~on~toc~stack}
-\cs_new_protected:Npn \__tag_toc_contentsline_end:n #1 %#1 level name
+\cs_new_protected:Npn \__tag_toc_contentsline_end:nnnn #1 #2 #3 #4
{
\int_compare:nNnF { \use:c{toclevel@#1} } > {\use:c{c@tocdepth}}
{
@@ -413,10 +407,11 @@
}
}
}
-\cs_set_protected:Npn \@contentsline@cfgpoint@after #1#2#3#4
- {
- \__tag_toc_contentsline_end:n {#1}
- }
+\NewSocketPlug{tagsupport/toc/contentsline/after}{default}
+ {
+ \__tag_toc_contentsline_end:nnnn #1
+ }
+\AssignSocketPlug{tagsupport/toc/contentsline/after}{default}
\AddToHook{contentsline/text/before}[tagpdf]{%
\tag_struct_begin:n{tag=Reference}%
\tag_mc_begin:n{tag=Reference}}
@@ -435,9 +430,12 @@
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin:n{tag=Reference}}
-\def\@dottedtocline@cfgpoint@leaders#1{%
- \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:}
-
+\NewSocketPlug{tagsupport/toc/leaders/before}{artifact}
+ {\tag_mc_begin:n{artifact}\nobreak}
+\NewSocketPlug{tagsupport/toc/leaders/after}{artifact}
+ {\nobreak\tag_mc_end:}
+\AssignSocketPlug{tagsupport/toc/leaders/before}{artifact}
+\AssignSocketPlug{tagsupport/toc/leaders/after}{artifact}
%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtochyperdate{2023-07-20}
\def\ltlabtochyperversion{0.85a}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
index a74a5f65ef3..0c55110f9d5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesFile{marginpar-latex-lab-testphase.ltx}
[\ltlabmarginpardate\space v\ltlabmarginparversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
index 0cf1da13360..b11a23987c1 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesFile{minipage-latex-lab-testphase.ltx}
[\ltlabminipagedate\space v\ltlabminipageversion
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
index 915a065c5e5..b4e311b2e2a 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
-\def\ltlabneworIdate{2023-07-20}
-\def\ltlabneworIversion{0.85a}
+\def\ltlabneworIdate{2024-11-12}
+\def\ltlabneworIversion{0.85b}
\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
[\ltlabneworIdate\space v\ltlabneworIversion\space
latex-lab wrapper new-or-1]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
index 5cd6edae269..fa037aca3bf 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesFile{sec-latex-lab-testphase.ltx}
[\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
index b01da95717e..eee19904436 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{table-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
\RequirePackage{latex-lab-testphase-table}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
index 67a80c992ab..093b38ef924 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{tabular-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
index 2615850378c..290c185f0d2 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesFile{text-latex-lab-testphase.ltx}
[\ltlabtextdate\space v\ltlabtextversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
index 8b2c05d329c..8985e57bc7b 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesFile{toc-latex-lab-testphase.ltx}
[\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc]
diff --git a/Master/texmf-dist/tex/latex-dev/tools/.tex b/Master/texmf-dist/tex/latex-dev/tools/.tex
index ff0d77e6fc4..a6b7144e01d 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/.tex
@@ -1,5 +1,5 @@
%%
-%% This is file `.tex',
+%% This is file `rename-to-empty-base.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
@@ -38,4 +38,4 @@
\message{File ignored}
\endinput
%%
-%% End of file `.tex'.
+%% End of file `rename-to-empty-base.tex'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty
index 5010b2f1b43..a190c9f7714 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/array.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty
@@ -47,7 +47,7 @@
\NeedsTeXFormat{LaTeX2e}[2024/06/01]
\ProvidesPackage{array}
- [2024/05/23 v2.6c Tabular extension package (FMi)]
+ [2024/10/17 v2.6g Tabular extension package (FMi)]
%%
\ExplSyntaxOn
@@ -96,15 +96,16 @@
\def\save@decl{\toks\count@ \expandafter{\@nextchar}}
\def\insert@column{%
\UseTaggingSocket{tbl/cell/begin}%
- \the@toks \the \@tempcnta
- \ignorespaces \@sharp \textonly@unskip
+ \@protected@firstofone { \the@toks \the \@tempcnta \ignorespaces }
+ \@sharp \textonly@unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/cell/end}%
}
\protected\def\textonly@unskip{\ifhmode\unskip\fi}
+\protected\long\def\@protected@firstofone#1{#1}
\def\insert@pcolumn{%
\UseTaggingSocket{tbl/pcell/begin}%
- \the@toks \the \@tempcnta
+ \the@toks \the \@tempcnta \relax
\ignorespaces \@sharp \unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/pcell/end}%
@@ -286,6 +287,7 @@
\let\@arrayacol=\relax \let\@tabacol=\relax
\let\@tabularcr=\relax \let\@@endpbox=\relax
\let\@argtabularcr=\relax \let\@xtabularcr=\relax
+\ExplSyntaxOff
\def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
\PackageError{array}{%
\ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
@@ -294,7 +296,6 @@
>\@tempd token ignored\or %3
<\@tempd changed to !{..}\or %4
Only one column-spec. allowed.\fi}\@ehc} %5
-\ExplSyntaxOff % this is really oldstyle using \@tfor :=
\def\newcolumntype#1{%
\edef\NC@char{\string#1}%
\@ifundefined{NC@find@\NC@char}%
@@ -432,6 +433,23 @@
<{\d@llarend\end{lrbox}%
\let\hss\hfil
\makebox[#2][#1]{\unhbox\ar@cellbox}}}
+\ExplSyntaxOn
+\def\@cline#1-#2\@nil{
+ \omit
+ \@multicnt#1
+ \advance\@multispan\m@ne
+ \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
+ \@multicnt#2
+ \advance\@multicnt-#1
+ \advance\@multispan\@ne
+ \UseTaggingSocket{tbl/leaders/begin}
+ \leaders\hrule\@height\arrayrulewidth\hfill
+ \UseTaggingSocket{tbl/leaders/end}
+ \tbl_gdecr_row_count:
+ \cr
+ \noalign{\vskip-\arrayrulewidth}
+}
+\ExplSyntaxOff
\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/calc.sty b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
index 42526027853..dfb61a5b942 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/calc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
@@ -47,7 +47,7 @@
%% the normal LaTeX bug report address.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{calc}
- [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)]
+ [2024/11/03 v4.3a Infix arithmetic (KKT,FJ)]
\def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2%
\calc@open(#4!%
\global\calc@A\calc@B\endgroup#3\calc@B}
@@ -277,7 +277,8 @@
{`#1' invalid at this point}%
{I expected to see one of: + - * / )}}
\def\@settodim#1#2#3{%
- \setbox\@tempboxa\hbox{{#3}}%
+ \setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}%
\dimen@ii=\z@
\@tf@r\reserved@a #1\do{%
\advance\dimen@ii\reserved@a\@tempboxa}%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
index aa19b28096a..0bc422eb465 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
@@ -43,7 +43,7 @@
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2024-04-26 v4.20 Multi-page Table package (DPC)]
+ [2024-10-27 v4.22 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -65,6 +65,7 @@
\newcount\LTchunksize \LTchunksize=200
\let\c@LTchunksize\LTchunksize
\newdimen\LTcapwidth \LTcapwidth=4in
+\providecommand\LTcaptype{table}
\newbox\LT@head
\newbox\LT@firsthead
\newbox\LT@foot
@@ -73,6 +74,7 @@
\newcount\LT@cols
\newcount\LT@rows
\newcounter{LT@tables}
+\providecommand\theHLT@tables{\theLT@tables}
\newcounter{LT@chunks}[LT@tables]
\ifx\c@table\undefined
\newcounter{table}
@@ -105,8 +107,14 @@
\ExplSyntaxOn
\def\LT@array[#1]#2{%
\UseTaggingSocket{tbl/init}
- \@kernel@refstepcounter{table}\stepcounter{LT@tables}
- \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+ \tl_if_empty:eTF { \LTcaptype }
+ {
+ \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables}
+ }
+ {
+ \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables}
+ \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}}
+ }
\tbl_gzero_row_count:
\UseTaggingSocket{tbl/longtable/init}
\if l#1%
@@ -220,7 +228,13 @@
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
- \MakeLinkTarget{table}
+ \tl_if_empty:eTF{\LTcaptype}
+ {
+ \MakeLinkTarget{LT@tables}
+ }
+ {
+ \MakeLinkTarget{\LTcaptype}
+ }
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
\UseTaggingSocket{tbl/longtable/head}
\output{\LT@output}}
@@ -245,14 +259,20 @@
\ifx\LT@save@row\LT@@save@row
\else
\LT@warn{Column~ widths~ have~ changed\MessageBreak
- in~ table~ \thetable}%
+ in~
+ \tl_if_empty:eTF{\LTcaptype}
+ {longtable~ \theLT@tables}
+ {\LTcaptype\c_space_tl\use:c{the\LTcaptype}}
+ }
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
\ifvoid\LT@foot\else
\global\advance\vsize\ht\LT@foot
\global\advance\@colroom\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \ifdim\pagegoal<\maxdimen
+ \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \fi
\fi
\endgroup
\global\@mparbottom\z@
@@ -431,17 +451,22 @@
\tbl_gdecr_row_count:
\penalty\@M}
\@gtempa}
-\ExplSyntaxOff
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
-\def\LT@c@ption#1[#2]#3{%
- \LT@makecaption#1\fnum@table{#3}%
- \def\@tempa{#2}%
- \ifx\@tempa\@empty\else
- {\let\\\space
- \addcontentsline{\ext@table}{table}{\protect\numberline{\thetable}{#2}}}%
- \fi}
+\def\LT@c@ption#1[#2]#3{
+ \tl_if_empty:eTF{\LTcaptype}
+ {\LT@makecaption\@gobble{}{#3}}
+ {\LT@makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3}
+ \def\@tempa{#2}
+ \ifx\@tempa\@empty\else
+ {\let\\\space
+ \addcontentsline
+ {\@nameuse{ext@\LTcaptype}}
+ {\LTcaptype}
+ {\protect\numberline{\@nameuse{the\LTcaptype}}{#2}}}
+ \fi}}
+\ExplSyntaxOff
\def\LT@capti@n{%
\@ifstar
{\egroup\LT@c@ption\@gobble[]}%
@@ -506,6 +531,13 @@
{
\crcr
\noalign{
+ \int_step_inline:nn
+ { \LT@rows }
+ {
+ \seq_gput_left:ce
+ {g__tbl_\cs_to_str:N #1 _rows_seq }
+ { \int_eval:n {\g__tbl_row_int - ##1 } }
+ }
\tbl_gdecr_row_count: % undo the increment
\int_gset:Nn \LT@rows { \LTchunksize }
}
diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty
new file mode 100644
index 00000000000..ebe9ea853a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty
@@ -0,0 +1,1144 @@
+%%
+%% This is file `multicol.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% multicol.dtx (with options: `package,badness,check,marktrace,nobalance')
+%%
+%% This is a generated file.
+%%
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs/
+%% (but please observe conditions on bug reports sent to that address!)
+%%
+%% Copyright (C) 1993-2024
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%%
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%% Package `multicol' to use with LaTeX2e
+%% Copyright 1989-2023 Frank Mittelbach
+%%
+%% In addition to the terms of LPPL any distributed version
+%% (unchanged or modified) of multicol has to keep the statement
+%% about the moral obligation for using multicol. In case of major
+%% changes where this would not be appropriate the author of the
+%% changed version should contact the copyright holder.
+%%
+%%
+%% Moral obligation for using multicol:
+%% ------------------------------------
+%%
+%% Users of multicol who wish to include or use multicol or a modified
+%% version in a proprietary and commercially market product are asked
+%% under certain conditions (see below) for the payment of a license
+%% fee. The size of this fee is to be determined, in each instance,
+%% by the commercial user, depending on his/her judgment of the value of
+%% multicol for his/her product.
+%%
+%%
+%% The conditions for this are as follows:
+%%
+%% The producer of a proprietary and commercially market product
+%% that involves typesetting using multicol is asked to determine
+%% the value of a license fee for using multicol if
+%%
+%% - the product is a document and the producer has decided to
+%% include multicol to typeset (parts of) the document or has
+%% directed the author of the document to include multicol (for
+%% example, by providing a class file to be used by the author)
+%%
+%% - the product is a LaTeX class or package that includes multicol
+%%
+%%
+%% There is no moral obligation in case
+%%
+%% - the product is a document but producer has not directed
+%% the author to include multicol (in that case the moral obligation
+%% lies with the author of the document)
+%%
+%% - the product does not involve typesetting, e.g., consists, for
+%% example, of distributing multicol and its documentation.
+%%
+%% - the product is not proprietary, i.e., is made available as free
+%% software itself (which doesn't prohibit its commercial marketing)
+%%
+%% - multicol is used for non-commercial purposes
+%%
+%%
+%% Determining a license fee might result in a license fee of zero
+%% (i.e., no payment) in case a producer has determined that the use
+%% of multicol has no enhancing effect on the product. This is a
+%% plausible scenario, i.e., in the above two cases the producer is
+%% only asked to evaluate the value of multicol for the product
+%% not for the payment of a license fee per se (which might or might
+%% not follow from this evaluation).
+%%
+%% The license fee, if any, can be payed either to the LaTeX fund
+%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
+%% the program who can be contacted at
+%%
+%% Frank.Mittelbach@latex-project.org
+%%
+
+\DeclareRelease{}{1994-06-01}{multicol-2017-04-11.sty}
+\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
+\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty}
+\DeclareCurrentRelease{}{2021-11-15}
+
+\ProvidesPackage{multicol}
+ [2024/05/23 v1.9h multicolumn formatting (FMi)]
+\DeclareOption{twocolumn}
+ {\PackageWarning{multicol}{May not work
+ with the twocolumn option}}
+\newcount\c@tracingmulticols
+\DeclareOption{errorshow}
+ {\c@tracingmulticols\z@}
+\DeclareOption{infoshow}
+ {\c@tracingmulticols\@ne}
+\DeclareOption{balancingshow}
+ {\c@tracingmulticols\tw@}
+\DeclareOption{markshow}
+ {\c@tracingmulticols\thr@@}
+\DeclareOption{debugshow}
+ {\c@tracingmulticols5\relax}
+\let\mc@gridwarn\maxdimen
+\DeclareOption{grid}
+ {\def\mc@gridwarn{\@maxdepth}}
+\DeclareOption{colaction}{%
+ \def\mc@col@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status
+ {\ifmc@firstcol 1\else 2\fi}}%
+ \mc@firstcolfalse}%
+ \def\mc@lastcol@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status{3}}}%
+}
+\let\mc@col@status@write\relax
+\let\mc@lastcol@status@write\relax
+\ProcessOptions
+\def\multicols#1{\col@number#1\relax
+ \ifnum\col@number<\tw@
+ \PackageWarning{multicol}%
+ {Using `\number\col@number'
+ columns doesn't seem a good idea.^^J
+ I therefore use two columns instead}%
+ \col@number\tw@ \fi
+ \ifnum\col@number>20
+ \PackageError{multicol}%
+ {Too many columns}%
+ {Current implementation doesn't
+ support more than 20 columns.%
+ \MessageBreak
+ I therefore use 20 columns instead}%
+ \col@number20 \fi
+ \ifx\@footnotetext\mult@footnotetext
+ \else
+ \let\orig@footnotetext\@footnotetext
+ \let\@footnotetext\mult@footnotetext
+ \fi
+ \@ifnextchar[\mult@cols{\mult@cols[]}}
+\long\def\mult@footnotetext#1{\begingroup
+ \columnwidth\textwidth
+ \orig@footnotetext{#1}\endgroup}
+\def\mult@cols[#1]{\@ifnextchar[%
+ {\mult@@cols{#1}}%
+ {\mult@@cols{#1}[\premulticols]}}
+\def\mult@@cols#1[#2]{%
+ \par
+ \ifinner \@boxedmulticolstrue
+ \else
+ \ifnum \doublecol@number>\z@
+ \@boxedmulticolstrue
+ \fi
+ \fi
+ \mult@info\z@
+ {Starting environment with
+ \the\col@number\space columns%
+ \if@boxedmulticols\MessageBreak
+ (boxed mode)\fi
+ }%
+ \enough@room{#2}%
+ #1\par\addvspace\multicolsep
+ \ifdim \prevdepth = -\@m\p@
+ \else
+ \@tempcnta\prevdepth
+ \@tempcntb\baselineskip
+ \divide\@tempcnta\@tempcntb
+ \advance\@tempcnta\@ne
+ \dimen@\prevdepth
+ \advance\dimen@ -\@tempcnta\baselineskip
+ \advance\dimen@ \topskip
+ \kern-\dimen@
+ \fi
+ \begingroup
+ \prepare@multicols
+ \if@boxedmulticols
+ \setbox\mult@box\vbox\bgroup
+ \color@setgroup
+ \fi
+ \ignorespaces}
+\newif\if@boxedmulticols
+\@boxedmulticolsfalse
+\newbox\mult@box
+\def\enough@room#1{%
+ \if@boxedmulticols\else
+ \par
+ \bgroup\@nobreakfalse\addpenalty\z@\egroup
+ \page@free \pagegoal
+ \advance \page@free -\pagetotal
+ \@tempskipa#1\relax
+ \mult@info\z@
+ {Current page:\MessageBreak
+ height=%
+ \the\pagegoal: used \the\pagetotal
+ \space -> free=\the\page@free
+ \MessageBreak
+ needed \the\@tempskipa
+ \space(for #1)}%
+ \ifdim \page@free <#1\newpage \fi
+ \fi}
+\def\prepare@multicols{%
+ \multicol@leftmargin\@totalleftmargin
+ \@totalleftmargin\z@
+ \parshape\z@
+ \doublecol@number\col@number
+ \multiply\doublecol@number\tw@
+ \advance\doublecol@number\mult@rightbox
+ \if@boxedmulticols
+ \let\l@kept@firstmark\kept@firstmark
+ \let\l@kept@botmark\kept@botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \else
+ \nointerlineskip {\topskip\z@\null}%
+ \output{%
+ \global\setbox\partial@page\vbox
+ {%
+ \ifvoid\partial@page\else
+ \PackageError{multicol}%
+ {Error saving partial page}%
+ {The part of the page before
+ the multicols environment was
+ nearly full with^^Jthe result
+ that starting the environment
+ will produce an overfull
+ page. Some^^Jtext may be lost!
+ Please increase \premulticols
+ either generally or for this%
+ ^^Jenvironment by specifying a
+ suitable value in the second
+ optional argument to^^Jthe
+ multicols environment.}
+ \unvbox\partial@page
+ \box\last@line
+ \fi
+ \unvbox\@cclv
+ \global\setbox\last@line\lastbox
+ }%
+ \prep@keptmarks
+ \global\let\kept@topmark\firstmark
+ }\eject
+ \advance\@colroom-\ht\partial@page
+ \set@mult@vsize\relax
+ \output{\multi@column@out}%
+ \init@mult@footins
+ \reinsert@footnotes
+ \def\clearpage{%
+ \ifx\@deferlist\@empty\else
+ \PackageError{multicol}%
+ {Deferred floats not cleared}%
+ {A \string\clearpage\space inside
+ multicols acts like
+ \string\newpage\space and doesn't
+ clear floats.\MessageBreak
+ Move it before the multicols
+ environment if you need it.}%
+ \fi
+ \newpage}%
+ \fi
+ \vbadness\@Mi \hbadness5000
+ \tolerance\multicoltolerance
+ \pretolerance\multicolpretolerance
+ \setemergencystretch\col@number\hsize
+ \set@floatcmds
+ \advance\baselineskip\multicolbaselineskip
+ \hsize\linewidth \advance\hsize\columnsep
+ \advance\hsize-\col@number\columnsep
+ \divide\hsize\col@number
+ \full@width\linewidth
+ \linewidth\hsize
+ \columnwidth\hsize
+}
+\def\init@mult@footins{%
+ \multiply\count\footins\col@number
+ \multiply\skip \footins\col@number
+}
+\def\set@mult@vsize#1{%
+ \vsize\@colroom
+ \@tempdima\baselineskip
+ \advance\@tempdima-\topskip
+ \advance\vsize\@tempdima
+ \vsize\col@number\vsize
+ \advance\vsize-\@tempdima
+ \advance\vsize\col@number\baselineskip
+ #1\advance\vsize
+ \c@collectmore\baselineskip}
+\newdimen\multicol@leftmargin
+\mathchardef\@Mvi=10006 % 10005 is
+ % \columnbreak
+\def\endmulticols{\par
+ \if@boxedmulticols
+ \remove@discardable@items
+ \color@endgroup\egroup
+ \balance@columns
+ \return@nonemptymark{first}%
+ \kept@firstmark
+ \return@nonemptymark{bot}%
+ \kept@botmark
+ \global\setbox\mc@boxedresult\vbox{%
+ \page@sofar
+ \global\let\kept@firstmark
+ \l@kept@firstmark
+ \global\let\kept@botmark
+ \l@kept@botmark
+ }%
+ \mult@info\tw@
+ {Restore kept marks to\MessageBreak
+ first: \meaning\kept@firstmark
+ \MessageBreak bot\space\space:
+ \meaning\kept@botmark }%
+ \else
+ \ifdim\pagegoal=\maxdimen
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \unvbox\colbreak@box\fi
+ \fi
+ \penalty\z@
+ \penalty-\@Mvi
+ \ifvbox\partial@page
+ \unvbox\partial@page\fi
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {Make kept marks empty}%
+ \fi
+ \@checkend{multicols}%
+ \endgroup
+ \global\c@unbalance\z@
+ \if@boxedmulticols
+ \unvbox\mc@boxedresult
+ \mc@col@status@write
+ \else
+ \reinsert@footnotes
+ \ifdim \pagegoal=\maxdimen
+ \global\vsize\@colroom
+ \else
+ \enough@room\postmulticols
+ \fi
+ \fi
+ \addvspace\multicolsep
+ \prevdepth\z@
+ \mult@info\z@
+ {Ending environment
+ \if@boxedmulticols
+ \space(boxed mode)\fi
+ }}
+\newcount\c@unbalance
+\newcount\c@collectmore
+\newcount\doublecol@number
+\newcount\multicoltolerance
+\newcount\multicolpretolerance
+\newdimen\full@width
+\newdimen\page@free
+\newdimen\premulticols
+\newdimen\postmulticols
+\newskip\multicolsep
+\newskip\multicolbaselineskip
+\newbox\partial@page
+\newbox\last@line
+\newbox\mc@boxedresult
+\c@unbalance = 0
+\c@collectmore = 0
+\multicoltolerance = 9999
+\multicolpretolerance = -1
+\premulticols = 50pt
+\postmulticols= 20pt
+\multicolsep = 12pt plus 4pt minus 3pt
+\multicolbaselineskip=0pt
+\def\process@cols#1#2{\count@#1\relax
+ \loop
+ #2%
+ \advance\count@\tw@
+ \ifnum\count@<\doublecol@number
+ \repeat}
+\def\page@sofar{%
+ \process@cols\mult@rightbox
+ {\ifvoid\count@
+ \setbox\count@\hbox to\hsize{}%
+ \else
+ \wd\count@\hsize
+ \fi}%
+ \count@\col@number \advance\count@\m@ne
+ \mult@info\z@
+ {Column spec: \the\full@width\space = indent
+ + columns + sep =\MessageBreak
+ \the\multicol@leftmargin\space
+ + \the\col@number\space
+ x \the\hsize\space
+ + \the\count@\space
+ x \the\columnsep
+ }%
+\ifvmode\else\errmessage{Multicol Error}\fi
+ \nointerlineskip
+ \setbox\z@\hbox{\multicolmindepthstring}\global\dimen\tw@\dp\z@
+ \moveright\multicol@leftmargin
+ \hbox to\full@width{%
+ \mc@align@columns
+ \rlap{\phantom \multicolmindepthstring}%
+ }%
+ \prevdepth\z@
+ \kern-\dimen\tw@
+ \ifdim\dimen\tw@ > \mc@gridwarn
+ \PackageWarning{multicol}%
+ {Very deep columns!\MessageBreak
+ Grid alignment might be broken}%
+ \fi
+}
+\def\multicolmindepthstring{p}
+\def\columnseprulecolor{\normalcolor}
+\def\reinsert@footnotes{\ifvoid\footins\else
+ \insert\footins{}\fi}
+\def\vfilmaxdepth{\vskip \z@ \@plus .0001fil
+ \@minus \@maxdepth}
+\def\multi@column@out{%
+ \ifnum\outputpenalty <-\@M
+ \speci@ls \else
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \setbox\@cclv\vbox{%
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \unvbox\@cclv}%
+ \fi
+ \splittopskip\topskip
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \dimen@\@colroom
+ \divide\skip\footins\col@number
+ \ifvoid\footins \else
+ \leave@mult@footins
+ \fi
+ \ifvbox \@kludgeins
+ \advance \dimen@ -\ht\@kludgeins
+ \ifdim \wd\@kludgeins>\z@
+ \shr@nkingtrue
+ \fi
+ \fi
+ \process@cols\mult@firstbox{%
+ \setbox\count@
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@
+ \ifshr@nking
+ \vfilmaxdepth\fi}%
+ }%
+ \setbox\mult@rightbox
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\mult@rightbox\vbox to\dimen@
+ {\unvbox\mult@rightbox
+ \ifshr@nking\vfilmaxdepth\fi}%
+ \ifvoid\@cclv \else
+ \unvbox\@cclv
+ \ifnum\outputpenalty=\@M
+ \else
+ \penalty\outputpenalty
+ \fi
+ \ifvoid\footins\else
+ \PackageWarning{multicol}%
+ {I moved some lines to
+ the next page.\MessageBreak
+ Footnotes on page
+ \thepage\space might be wrong}%
+ \fi
+ \ifnum \c@tracingmulticols>\thr@@
+ \hrule\allowbreak \fi
+ \fi
+ \ifx\@empty\kept@firstmark
+ \let\firstmark\kept@topmark
+ \let\botmark\kept@topmark
+ \else
+ \let\firstmark\kept@firstmark
+ \let\botmark\kept@botmark
+ \fi
+ \let\topmark\kept@topmark
+ \mult@info\tw@
+ {Use kept top mark:\MessageBreak
+ \meaning\kept@topmark
+ \MessageBreak
+ Use kept first mark:\MessageBreak
+ \meaning\kept@firstmark
+ \MessageBreak
+ Use kept bot mark:\MessageBreak
+ \meaning\kept@botmark
+ \MessageBreak
+ Produce first mark:\MessageBreak
+ \meaning\firstmark
+ \MessageBreak
+ Produce bot mark:\MessageBreak
+ \meaning\botmark
+ \@gobbletwo}%
+ \boxmaxdepth\maxdimen
+ \setbox\@cclv\vbox{\unvbox\partial@page
+ \page@sofar}%
+ \@makecol\@outputpage
+ \global\let\kept@topmark\botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {(Re)Init top mark:\MessageBreak
+ \meaning\kept@topmark
+ \@gobbletwo}%
+ \global\@colroom\@colht
+ \global \@mparbottom \z@
+ \global \@textfloatsheight \z@
+ \process@deferreds
+ \@whilesw\if@fcolmade\fi{\@outputpage
+ \global\@colroom\@colht
+ \process@deferreds}%
+ \mult@info\@ne
+ {Colroom:\MessageBreak
+ \the\@colht\space
+ after float space removed
+ = \the\@colroom \@gobble}%
+ \set@mult@vsize \global
+ \fi}
+\def\leave@mult@footins{%
+ \advance\dimen@-\skip\footins
+ \advance\dimen@-\ht\footins
+}
+\def\speci@ls{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum \outputpenalty<-\@MM
+ \PackageError{multicol}{Document end
+ inside multicols environment}\@ehd
+ \@specialoutput
+ \else
+ \ifnum\outputpenalty = -\@Mv
+ \mult@info\@ne{Forced column
+ break seen}%
+ \global\advance\vsize-\pagetotal
+ \global\setbox\colbreak@box
+ \vbox{%
+ \ifvoid\colbreak@box
+ \else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \fi
+ \boxmaxdepth\@maxdepth
+ \setbox\@cclv\vbox{%
+ \unvbox\@cclv
+ \remove@discardable@items}%
+ \dimen@\dp\@cclv
+ \unvbox\@cclv
+ \kern-\dimen@
+ }%
+ \reinsert@footnotes
+ \else
+ \ifnum\outputpenalty = -\@Mvi
+ \mult@info\@ne{End penalty of
+ multicols seen}%
+ \outputpenalty\@M % pretend we had
+ % a natural
+ % forced break
+ \balance@columns@out
+ \else
+ \PackageWarningNoLine{multicol}%
+ {Floats and marginpars not
+ allowed inside `multicols'
+ environment!}%
+ \unvbox\@cclv\reinsert@footnotes
+ \xdef\@freelist{\@freelist
+ \@currlist}%
+ \gdef\@currlist{}%
+ \fi
+ \fi
+ \fi
+ \else \@doclearpage \fi
+}
+\def\process@deferreds{%
+ \@floatplacement
+ \@tryfcolumn\@deferlist
+ \if@fcolmade\else
+ \begingroup
+ \let\@tempb\@deferlist
+ \gdef\@deferlist{}%
+ \let\@elt\@scolelt
+ \@tempb \endgroup
+ \fi}
+\newif\ifshr@nking
+\def\raggedcolumns{%
+ \@bsphack\shr@nkingtrue\@esphack}
+\def\flushcolumns{%
+ \@bsphack\shr@nkingfalse\@esphack}
+\def\balance@columns@out{%
+ \setbox\mult@box\vbox{%
+ \ifvoid\colbreak@box\else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \mult@info\@ne{Re-adding
+ forced break(s) in balancing}%
+ \fi
+ \unvbox\@cclv
+ \remove@discardable@items
+ }%
+ \balance@columns
+ \iftoo@bad
+ \mult@info\@ne
+ {Balancing failed ...
+ cut a normal page}%
+ \setbox\@cclv\vbox
+ {\vskip\topskip
+ \vskip-\splittopskip
+ \unvbox\mult@box
+ \penalty-\@Mvi
+ }%
+ \multi@column@out
+ \else
+ \global\vsize\@colroom
+ \global\advance\vsize\ht\partial@page
+ \ifvbox\@kludgeins
+ \insert\@kludgeins
+ {\unvbox\@kludgeins}\fi
+ \unvbox\partial@page
+ \return@nonemptymark{first}%
+ \kept@firstmark
+ \return@nonemptymark{bot}\kept@botmark
+ \page@sofar
+ \penalty\z@
+ \fi
+}
+\def\balance@columns{%
+ \get@keptmarks\mult@box
+ \setbox\mult@box\vbox{%
+ \penalty-\@M
+ \unvbox\mult@box
+ }%
+ \@tempdima\topskip
+ \splittopskip\@tempdima
+ \@plus\multicolundershoot
+ \@minus\multicolovershoot
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \setbox\@tempboxa\vsplit\mult@box to\z@
+ \@tempdima\ht\mult@box
+ \advance\@tempdima\dp\mult@box
+ \divide\@tempdima\col@number
+ \count@\@tempdima
+ \divide\count@\baselineskip
+ \dimen@\count@\baselineskip
+ \advance\dimen@\topskip
+ \ifdim \dimen@ >\@tempdima
+ \advance\dimen@-\baselineskip
+ \fi
+ \@tempdima\dimexpr
+ \topskip +\c@minrows\baselineskip
+ -\baselineskip\relax
+ \ifnum\dimen@<\@tempdima
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\@tempdima \space
+ (corrected for minrows)}%
+ \dimen@\@tempdima
+ \fi
+ \advance\dimen@\c@unbalance\baselineskip
+ \mult@info\@ne
+ {Balance columns\on@line:
+ \ifnum\c@unbalance=\z@\else
+ (off balance=\number\c@unbalance)\fi
+ \@gobbletwo}%
+ \ifnum\dimen@<\topskip
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\topskip \space (corrected)}%
+ \dimen@\topskip
+ \fi
+ \vbadness\@M
+ \vfuzz \maxdimen
+ \last@try-\p@
+ \loop
+ {\process@cols\mult@grightbox
+ {\global\setbox\count@
+ \box\voidb@x}}%
+ \global\setbox\mult@grightbox
+ \copy\mult@box
+ \too@badfalse
+ \forcedbreak@leftoverfalse
+ {\process@cols\mult@gfirstbox{%
+ \global\setbox\count@
+ \vsplit\mult@grightbox to\dimen@
+ \global\setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@}%
+ \ifnum\c@tracingmulticols>\@ne
+ \@tempcnta\count@
+ \advance\@tempcnta-\mult@grightbox
+ \divide\@tempcnta \tw@
+ \message{^^JColumn
+ \number\@tempcnta\space
+ badness: \the\badness\space}%
+ \fi
+ \ifnum\badness>\c@columnbadness
+ \ifnum\c@tracingmulticols>\@ne
+ \message{too bad
+ (>\the\c@columnbadness)}%
+ \fi
+ \too@badtrue
+ \fi
+ }}%
+ \global\setbox\mult@grightbox
+ \vbox{\unvbox\mult@grightbox}%
+ \setbox\mult@nat@firstbox
+ \vbox{\unvcopy\mult@gfirstbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{^^JFirst column
+ = \the\dimen@\space
+ (\the\ht\mult@nat@firstbox)}\fi
+ \ifnum\c@tracingmulticols>\@ne
+ \message{<> last column =
+ \the\ht\mult@grightbox^^J}%
+ \fi
+ \ifdim\ht\mult@grightbox >\dimen@
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: last
+ column too large!}%
+ \fi
+ \else
+ \setbox\@tempboxa
+ \copy\mult@grightbox
+ \setbox\z@\vsplit\@tempboxa to\maxdimen
+ \ifvoid\@tempboxa
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{Final badness:
+ \the\badness}%
+ \fi
+ \ifnum\badness>\c@finalcolumnbadness
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox\vfil}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{ setting natural
+ (> \the\c@finalcolumnbadness)}%
+ \fi
+ \fi
+ \else
+ \@tempdima\@colroom
+ \advance\@tempdima \maxbalancingoverflow
+ \ifdim \dimen@ < \@tempdima
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: unprocessed
+ forced break(s) in last column!}%
+ \fi
+ \else
+ \forcedbreak@leftovertrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Failed: columns too large
+ with unprocessed forced break(s)!}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifdim\ht\mult@nat@firstbox<\dimen@
+ \ifdim\ht\mult@nat@firstbox>\last@try
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Retry: using natural
+ height of first column!}%
+ \fi
+ \dimen@\ht\mult@nat@firstbox
+ \last@try\dimen@
+ \advance\dimen@-\p@
+ \fi
+ \fi
+ \iftoo@bad
+ \advance\dimen@\p@
+ \repeat
+ \ifforcedbreak@leftover
+ \too@badtrue
+ \else
+ \if@boxedmulticols\else
+ \ifdim\dimen@>\@colroom
+ \dimen@\@colroom
+ \fi
+ \fi
+ \process@cols\mult@rightbox
+ {\@tempcnta\count@
+ \advance\@tempcnta\@ne
+ \vfuzz\z@
+ \setbox\count@\vbox to\dimen@
+ {%
+ \vskip \z@
+ \@plus-\multicolundershoot
+ \@minus-\multicolovershoot
+ \unvbox\@tempcnta
+ \ifshr@nking\vfilmaxdepth\fi
+ }%
+ \ifnum\badness>\@M
+ \vfuzz\maxdimen % no overfull warning
+ \setbox\@tempboxa \vbox to\dimen@
+ {\vskip-\maxbalancingoverflow
+ \unvcopy\count@}%
+ \ifnum\badness>\@M
+ \mult@info\@ne
+ {Balanced column more than
+ \the\maxbalancingoverflow\space
+ too large}%
+ \too@badtrue
+ \else
+ \mult@info\@ne
+ {Balanced column
+ too large, but less than
+ \the\maxbalancingoverflow}%
+ \fi
+ \fi
+ }%
+ \fi
+}
+\newdimen\maxbalancingoverflow
+\maxbalancingoverflow=12pt
+
+\ifnum\numexpr
+ \count20-\count14-1<40
+ % this is = 2 * 20
+ \count14=\@cclv
+\fi
+\newbox\mult@rightbox
+\newbox\mult@grightbox
+\newbox\mult@firstbox
+\newbox\mult@gfirstbox
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\let\@tempa\relax
+\@ifundefined{emergencystretch}
+ {\newdimen\emergencystretch}{}
+\def\setemergencystretch#1#2{%
+ \emergencystretch 4pt
+ \multiply\emergencystretch#1}
+
+\def\set@floatcmds{%
+ \let\@dblfloat\@dbflt
+ \def\end@dblfloat{\@endfloatbox
+ \@largefloatcheck
+ \outer@nobreak
+ \ifnum\@floatpenalty<\z@
+ \@cons\@deferlist\@currbox
+ \fi
+ \ifnum\@floatpenalty=-\@Mii
+ \@Esphack
+ \fi}}
+\def\kept@topmark{{}{}}
+\let\kept@firstmark\@empty
+\let\kept@botmark\@empty
+\def\return@nonemptymark#1#2{%
+ \ifx#2\@empty
+ \else
+ \mult@info\tw@
+ {Returned #1 mark:\MessageBreak
+ \meaning#2}%
+ \toks@\expandafter{#2}%
+ \mark{\the\toks@}%
+ \nobreak
+ \fi}
+\def\get@keptmarks#1{%
+ \begingroup
+ \vbadness\@M
+ \setbox#1\copy#1%
+ \mc@get@all@box@marks #1%
+ \set@keptmarks
+ \endgroup
+}
+\def\mc@get@all@box@marks #1{%
+ \setbox\@tempboxa\vsplit#1to\maxdimen
+ \ifvoid#1\else
+ \setbox#1\vbox{\unvbox\@tempboxa \unvbox#1}%
+ \mc@get@all@box@marks #1%
+ \fi
+}
+\def\set@keptmarks{%
+ \ifx\kept@firstmark\@empty
+ \expandafter\gdef\expandafter
+ \kept@firstmark
+ \expandafter{\splitfirstmark}%
+ \ifx\kept@firstmark\@empty\else
+ \mult@info\tw@
+ {Set kept first mark:\MessageBreak
+ \meaning\kept@firstmark%
+ \@gobbletwo}%
+ \fi
+ \fi
+ \expandafter\def\expandafter\@tempa
+ \expandafter{\splitbotmark}%
+ \ifx\@tempa\@empty\else
+ \global\let\kept@botmark\@tempa
+ \mult@info\tw@
+ {Set kept bot mark:\MessageBreak
+ \meaning\kept@botmark%
+ \@gobbletwo}%
+ \fi}%
+\def\prep@keptmarks{%
+ \if@boxedmulticols \else
+ \get@keptmarks\partial@page
+ \fi}
+\skip0=0pt
+\edef\the@zero@skip{\the\skip0}
+\def\remove@discardable@items{%
+ \unpenalty
+ \edef\@tempa{\the\lastskip}%
+ \unskip
+ \ifx\@tempa\the@zero@skip
+ \edef\@tempb{\the\lastskip}%
+ \ifx\@tempb\the@zero@skip
+ \else
+ \unskip
+ \ifnum \lastpenalty=\@M
+ \vskip\@tempb\vskip\@tempa\relax
+ \else
+ \remove@discardable@items
+ \fi
+ \fi
+ \else
+ \remove@discardable@items
+ \fi
+}
+\newif\iftoo@bad
+\def\too@badtrue{\global\let\iftoo@bad\iftrue}
+\def\too@badfalse{\global\let\iftoo@bad\iffalse}
+\newif\ifforcedbreak@leftover
+\newcount\c@minrows
+\c@minrows=1
+\newcount\c@columnbadness
+\c@columnbadness=10000
+\newcount\c@finalcolumnbadness
+\c@finalcolumnbadness=9999
+
+\newdimen\last@try
+
+\newdimen\multicolovershoot
+\newdimen\multicolundershoot
+\multicolovershoot=0pt
+\multicolundershoot=2pt
+\newbox\mult@nat@firstbox
+\def\mult@info#1#2{%
+ \ifnum\c@tracingmulticols>#1%
+ \GenericWarning
+ {(multicol)\@spaces\@spaces}%
+ {Package multicol: #2}%
+ \fi
+}
+ \@namedef{multicols*}{%
+ \ifinner
+ \PackageWarning{multicol}%
+ {multicols* inside a box does
+ not make sense.\MessageBreak
+ Going to balance anyway}%
+ \else
+ \def\balance@columns@out
+ {\multi@column@out \penalty-\@Mvi }%
+ \fi
+ \begin{multicols}
+}
+\@namedef{endmulticols*}{%
+ \par
+ \ifdim\lastskip>\z@ \vskip-\lastskip \fi
+ \ifdim \prevdepth>\z@
+ \vskip-\ifdim\prevdepth>\boxmaxdepth
+ \boxmaxdepth
+ \else \prevdepth \fi
+ \fi
+ \ifshr@nking\else
+ \vfil
+ \fi
+ \end{multicols}}
+\mathchardef\@Mv=10005
+\newcommand\columnbreak[1][4]{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\columnbreak outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \edef\mc@break@pen
+{-\ifcase#1\@m\or 3333\or 6666\or 9999\else\@Mv\fi\relax}%
+ \ifvmode
+ \penalty \mc@break@pen
+ \else
+ \@bsphack
+ \vadjust{\penalty \mc@break@pen}%
+ \@esphack
+ \fi
+ \fi}
+\newcommand\newcolumn{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\newcolumn outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \ifvmode
+ \nobreak\vfill\kern\z@\penalty -\@Mv\relax
+ \else
+ \@bsphack
+ \vadjust{\nobreak\vfill\kern\z@\penalty -\@Mv\relax}%
+ \@esphack
+ \fi
+ \fi}
+\newbox\colbreak@box
+\def\LR@column@boxes{%
+ \process@cols\mult@firstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \mc@col@status@write
+ \box\count@
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss}%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+}
+
+\def\RL@column@boxes{%
+ \process@cols\mult@firstbox{%
+ \hskip\hsize
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss
+ }%
+ \hskip\hsize
+ \process@cols\mult@firstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \hskip-\hsize
+ \mc@col@status@write
+ \box\count@
+ \hskip-\hsize
+ \hskip-\columnsep
+ }%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \hskip-\hsize
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+ \hskip-\hsize
+ \hskip\full@width
+ }
+\newcommand\RLmulticolcolumns
+ {\let\mc@align@columns
+ \RL@column@boxes}
+\newcommand\LRmulticolcolumns
+ {\let\mc@align@columns
+ \LR@column@boxes}
+\LRmulticolcolumns
+\newcount\mc@col@check@num
+
+\newcommand\docolaction{%
+ \ifx\mc@col@status@write\relax
+ \PackageError{multicol}%
+ {Option 'colaction' not selected}%
+ {\string\docolaction\space
+ requires the use of the 'colaction'
+ option on the package}%
+ \fi
+ \global\advance\mc@col@check@num\@ne
+ \edef\mc@col@type{\expandafter\ifx
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname\relax
+ 0\else
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname
+ \fi}%
+ \@ifstar
+ {\@docolactionstartrue \@docolaction}%
+ {\@docolactionstarfalse\@docolaction}%
+}
+\newcommand\@docolaction[4][1]{%
+ \edef\@docolactioncheck{\write\@auxout
+ {\string\mc@set@col@status
+ {mc@col-\the\mc@col@check@num}%
+ {\mc@col@type}}}%
+ \if@docolactionstar \@docolactioncheck \fi
+ \ifcase \mc@col@type\relax
+ \ifcase #1\or #2\or#3\or#4\fi
+ \or
+ #2% % 1 First col
+ \or
+ #3% % 2 any middle col
+ \or
+ #4% % 3 last col
+ \else
+ \ERRORwrongdefaultgiven
+ \fi
+ \if@docolactionstar \else \@docolactioncheck \fi
+}
+\newif\if@docolactionstar
+\def\mc@col@status#1{%
+ \gdef\mc@curr@col@status{#1}}
+\def\mc@set@col@status#1#2{%
+ \global\expandafter\let\csname #1\endcsname
+ \mc@curr@col@status}
+\AtEndDocument{\def\mc@set@col@status#1#2{%
+ \ifnum #2=\mc@curr@col@status\else
+ \@tempswatrue
+ \fi}%
+}
+\newif\ifmc@firstcol
+\mc@firstcoltrue
+\endinput
+%%
+%% End of file `multicol.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
index ebe9ea853a8..3cc9d82e039 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
@@ -35,7 +35,7 @@
%% given in the file `manifest.txt'.
%%
%% Package `multicol' to use with LaTeX2e
-%% Copyright 1989-2023 Frank Mittelbach
+%% Copyright 1989-2024 Frank Mittelbach
%%
%% In addition to the terms of LPPL any distributed version
%% (unchanged or modified) of multicol has to keep the statement
@@ -92,7 +92,7 @@
%% not for the payment of a license fee per se (which might or might
%% not follow from this evaluation).
%%
-%% The license fee, if any, can be payed either to the LaTeX fund
+%% The license fee, if any, can be paid either to the LaTeX fund
%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
%% the program who can be contacted at
%%
@@ -102,10 +102,12 @@
\DeclareRelease{}{1994-06-01}{multicol-2017-04-11.sty}
\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty}
+\DeclareRelease{v1.9}{2021-11-15}{multicol-2024-05-23.sty}
\DeclareCurrentRelease{}{2021-11-15}
\ProvidesPackage{multicol}
- [2024/05/23 v1.9h multicolumn formatting (FMi)]
+ [2024/11/21 v2.0a multicolumn formatting (FMi)]
+
\DeclareOption{twocolumn}
{\PackageWarning{multicol}{May not work
with the twocolumn option}}
@@ -117,9 +119,13 @@
\DeclareOption{balancingshow}
{\c@tracingmulticols\tw@}
\DeclareOption{markshow}
- {\c@tracingmulticols\thr@@}
+ {\c@tracingmulticols\thr@@
+ \DebugMarksOn
+ }
\DeclareOption{debugshow}
- {\c@tracingmulticols5\relax}
+ {\c@tracingmulticols5\relax
+ \DebugMarksOn
+ }
\let\mc@gridwarn\maxdimen
\DeclareOption{grid}
{\def\mc@gridwarn{\@maxdepth}}
@@ -224,11 +230,8 @@
\doublecol@number\col@number
\multiply\doublecol@number\tw@
\advance\doublecol@number\mult@rightbox
+ \mc@prepare@mark@regions
\if@boxedmulticols
- \let\l@kept@firstmark\kept@firstmark
- \let\l@kept@botmark\kept@botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
\else
\nointerlineskip {\topskip\z@\null}%
\output{%
@@ -255,9 +258,7 @@
\unvbox\@cclv
\global\setbox\last@line\lastbox
}%
- \prep@keptmarks
- \global\let\kept@topmark\firstmark
- }\eject
+ }\eject
\advance\@colroom-\ht\partial@page
\set@mult@vsize\relax
\output{\multi@column@out}%
@@ -311,22 +312,12 @@
\remove@discardable@items
\color@endgroup\egroup
\balance@columns
- \return@nonemptymark{first}%
- \kept@firstmark
- \return@nonemptymark{bot}%
- \kept@botmark
\global\setbox\mc@boxedresult\vbox{%
+ \mc@handle@marks@and@reinserts
+ {in multicol (boxed mode)}%
\page@sofar
- \global\let\kept@firstmark
- \l@kept@firstmark
- \global\let\kept@botmark
- \l@kept@botmark
+ \mc@reinsert@marks
}%
- \mult@info\tw@
- {Restore kept marks to\MessageBreak
- first: \meaning\kept@firstmark
- \MessageBreak bot\space\space:
- \meaning\kept@botmark }%
\else
\ifdim\pagegoal=\maxdimen
\ifvoid\colbreak@box\else
@@ -338,11 +329,7 @@
\penalty-\@Mvi
\ifvbox\partial@page
\unvbox\partial@page\fi
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {Make kept marks empty}%
- \fi
+ \fi
\@checkend{multicols}%
\endgroup
\global\c@unbalance\z@
@@ -412,6 +399,7 @@
\ifvmode\else\errmessage{Multicol Error}\fi
\nointerlineskip
\setbox\z@\hbox{\multicolmindepthstring}\global\dimen\tw@\dp\z@
+ \UseTaggingSocket{page@sofar}%
\moveright\multicol@leftmargin
\hbox to\full@width{%
\mc@align@columns
@@ -459,16 +447,14 @@
\process@cols\mult@firstbox{%
\setbox\count@
\vsplit\@cclv to\dimen@
- \set@keptmarks
- \setbox\count@
- \vbox to\dimen@
- {\unvbox\count@
- \ifshr@nking
- \vfilmaxdepth\fi}%
- }%
+ \setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@
+ \ifshr@nking
+ \vfilmaxdepth\fi}%
+ }%
\setbox\mult@rightbox
\vsplit\@cclv to\dimen@
- \set@keptmarks
\setbox\mult@rightbox\vbox to\dimen@
{\unvbox\mult@rightbox
\ifshr@nking\vfilmaxdepth\fi}%
@@ -488,41 +474,15 @@
\ifnum \c@tracingmulticols>\thr@@
\hrule\allowbreak \fi
\fi
- \ifx\@empty\kept@firstmark
- \let\firstmark\kept@topmark
- \let\botmark\kept@topmark
- \else
- \let\firstmark\kept@firstmark
- \let\botmark\kept@botmark
- \fi
- \let\topmark\kept@topmark
- \mult@info\tw@
- {Use kept top mark:\MessageBreak
- \meaning\kept@topmark
- \MessageBreak
- Use kept first mark:\MessageBreak
- \meaning\kept@firstmark
- \MessageBreak
- Use kept bot mark:\MessageBreak
- \meaning\kept@botmark
- \MessageBreak
- Produce first mark:\MessageBreak
- \meaning\firstmark
- \MessageBreak
- Produce bot mark:\MessageBreak
- \meaning\botmark
- \@gobbletwo}%
\boxmaxdepth\maxdimen
- \setbox\@cclv\vbox{\unvbox\partial@page
- \page@sofar}%
+ \setbox\@cclv\vbox
+ {%
+ \mc@handle@col@andpage@marks
+ {in multicol OR (full page)}%
+ \unvbox\partial@page
+ \page@sofar
+ }%
\@makecol\@outputpage
- \global\let\kept@topmark\botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {(Re)Init top mark:\MessageBreak
- \meaning\kept@topmark
- \@gobbletwo}%
\global\@colroom\@colht
\global \@mparbottom \z@
\global \@textfloatsheight \z@
@@ -635,15 +595,15 @@
\insert\@kludgeins
{\unvbox\@kludgeins}\fi
\unvbox\partial@page
- \return@nonemptymark{first}%
- \kept@firstmark
- \return@nonemptymark{bot}\kept@botmark
+ % \begin{macrocode}
+ \mc@handle@marks@and@reinserts
+ {in multicol OR (balancing)}%
\page@sofar
+ \mc@reinsert@marks
\penalty\z@
\fi
}
\def\balance@columns{%
- \get@keptmarks\mult@box
\setbox\mult@box\vbox{%
\penalty-\@M
\unvbox\mult@box
@@ -875,6 +835,7 @@
\def\set@floatcmds{%
\let\@dblfloat\@dbflt
\def\end@dblfloat{\@endfloatbox
+ \UseTaggingSocket{float/end}%
\@largefloatcheck
\outer@nobreak
\ifnum\@floatpenalty<\z@
@@ -882,60 +843,8 @@
\fi
\ifnum\@floatpenalty=-\@Mii
\@Esphack
+ \UseTaggingSocket{float/hmode/end}%
\fi}}
-\def\kept@topmark{{}{}}
-\let\kept@firstmark\@empty
-\let\kept@botmark\@empty
-\def\return@nonemptymark#1#2{%
- \ifx#2\@empty
- \else
- \mult@info\tw@
- {Returned #1 mark:\MessageBreak
- \meaning#2}%
- \toks@\expandafter{#2}%
- \mark{\the\toks@}%
- \nobreak
- \fi}
-\def\get@keptmarks#1{%
- \begingroup
- \vbadness\@M
- \setbox#1\copy#1%
- \mc@get@all@box@marks #1%
- \set@keptmarks
- \endgroup
-}
-\def\mc@get@all@box@marks #1{%
- \setbox\@tempboxa\vsplit#1to\maxdimen
- \ifvoid#1\else
- \setbox#1\vbox{\unvbox\@tempboxa \unvbox#1}%
- \mc@get@all@box@marks #1%
- \fi
-}
-\def\set@keptmarks{%
- \ifx\kept@firstmark\@empty
- \expandafter\gdef\expandafter
- \kept@firstmark
- \expandafter{\splitfirstmark}%
- \ifx\kept@firstmark\@empty\else
- \mult@info\tw@
- {Set kept first mark:\MessageBreak
- \meaning\kept@firstmark%
- \@gobbletwo}%
- \fi
- \fi
- \expandafter\def\expandafter\@tempa
- \expandafter{\splitbotmark}%
- \ifx\@tempa\@empty\else
- \global\let\kept@botmark\@tempa
- \mult@info\tw@
- {Set kept bot mark:\MessageBreak
- \meaning\kept@botmark%
- \@gobbletwo}%
- \fi}%
-\def\prep@keptmarks{%
- \if@boxedmulticols \else
- \get@keptmarks\partial@page
- \fi}
\skip0=0pt
\edef\the@zero@skip{\the\skip0}
\def\remove@discardable@items{%
@@ -1139,6 +1048,102 @@
}
\newif\ifmc@firstcol
\mc@firstcoltrue
+\ExplSyntaxOn
+\int_new:N \g__mc_curr_col_int
+\cs_new:Npn \__mc_debug_marks:n #1 { \__mark_debug:n {#1} }
+\cs_new_protected:Npn \__mc_update_mcol_structures: {
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ update~ mcol~ structures~ (multicol)} }
+ \int_step_inline:nnn {\col@number + 1} { \g__mc_curr_col_int }
+ { \mark_set_structure_to_err:n { mcol - ##1 } }
+ \int_gset:Nn \g__mc_curr_col_int {1}
+ \process@cols\mult@firstbox
+ {
+ \mark_update_structure_from_material:nn
+ {column}
+ {\unvcopy\count@}
+ \mark_copy_structure:nn
+ {mcol - \int_use:N\g__mc_curr_col_int }
+ {column}
+ \int_gincr:N \g__mc_curr_col_int
+ }
+ \mark_update_structure_from_material:nn
+ {column}
+ {\unvcopy\mult@rightbox}
+ \mark_copy_structure:nn
+ { mcol - \int_use:N\g__mc_curr_col_int }
+ {column}
+ \mark_copy_structure:nn{first-column}{mcol-1}
+ \mark_copy_structure:nn{last-column} {column}
+}
+
+\cs_new_protected:Npn \__mc_update_page_structures: {
+ \__mc_debug_marks:n
+ {
+ \typeout{Marks:~ update~ page~ structure~ (multicol)}
+ }
+ \mark_update_structure_from_material:nn
+ {page}
+ {
+ \unvcopy\partial@page
+ \process@cols \mult@firstbox { \unvcopy\count@ }
+ \unvcopy\mult@rightbox
+ }
+}
+
+\cs_new_protected:Npn \__mc_prepare_mark_reinserts: {
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ prepare~ for~ reinserting~ marks~ (multicol)} }
+ \mark_get_marks_for_reinsertion:nNN
+ {
+ \process@cols \mult@firstbox { \unvcopy\count@ }
+ \unvcopy\mult@rightbox
+ }
+ \l__mc_first_marks_tl
+ \l__mc_last_marks_tl
+}
+\tl_new:N \l__mc_first_marks_tl
+\tl_new:N \l__mc_last_marks_tl
+\cs_new_protected:Npn \mc@reinsert@marks{
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ --~ reinsert~ marks~ (multicol)} }
+ \l__mc_first_marks_tl \l__mc_last_marks_tl
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ --~ finished~ reinserting~ marks~ (multicol)} }
+}
+\cs_new_protected:Npn \mc@prepare@mark@regions {
+ \legacy_if:nT { @boxedmulticols }
+ { \mark_copy_structure:nn{saved-column}{column} }
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ empty~ mcol~ regions~ (multicol)} }
+ \mark_clear_structure:n {column}
+}
+\cs_new_protected:Npn \mc@handle@marks@and@reinserts #1 {
+ \__mc_update_mcol_structures:
+ \__mc_debug_marks:n { \__mark_status:nn {#1} {\the\col@number} }
+ \__mc_prepare_mark_reinserts:
+ \legacy_if:nT { @boxedmulticols }
+ { \mark_copy_structure:nn {column}{saved-column} }
+}
+
+\cs_new_protected:Npn \mc@handle@col@andpage@marks #1 {
+ \__mc_update_mcol_structures:
+ \__mc_update_page_structures:
+ \__mc_debug_marks:n { \__mark_status:nn {#1} {\the\col@number} }
+}
+\cs_set:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_set:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
+\NewSocket{tagsupport/page@sofar}{0}
+\NewSocketPlug {tagsupport/page@sofar}{default}
+ {
+ \process@cols\mult@firstbox
+ { \tag_mc_add_missing_to_stream:Nn \count@ {multicol} }
+ \tag_mc_add_missing_to_stream:Nn \mult@rightbox {multicol}
+ }
+\sys_if_engine_luatex:TF
+ { \AssignSocketPlug{tagsupport/page@sofar}{noop} }
+ { \AssignSocketPlug{tagsupport/page@sofar}{default} }
+\ExplSyntaxOff
\endinput
%%
%% End of file `multicol.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thb.sty b/Master/texmf-dist/tex/latex-dev/tools/thb.sty
index 7d78943b773..c7c01d6d8f8 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thc.sty b/Master/texmf-dist/tex/latex-dev/tools/thc.sty
index 7819ee2f44f..77b0c88c478 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thc.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
index d05f9459ae2..e02fb365d80 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
index 565fe7344b0..474a44eacca 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thm.sty b/Master/texmf-dist/tex/latex-dev/tools/thm.sty
index 26474e89142..18837285335 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thm.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thm.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
index eb8cdc7e396..d5f9b089190 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/thp.sty b/Master/texmf-dist/tex/latex-dev/tools/thp.sty
index 1fc19ff5a99..16f97840d6a 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thp.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/thp.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.