texlive[75056] Master/texmf-dist: l3kernel-dev (29apr25)
commits+karl at tug.org
commits+karl at tug.org
Tue Apr 29 21:46:22 CEST 2025
Revision: 75056
https://tug.org/svn/texlive?view=revision&revision=75056
Author: karl
Date: 2025-04-29 21:46:22 +0200 (Tue, 29 Apr 2025)
Log Message:
-----------
l3kernel-dev (29apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/README.md
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/expl3.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.tex
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3doc.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3docstrip.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news01.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news02.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news03.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news04.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news05.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news06.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news07.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news08.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news09.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news10.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news11.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news12.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3prefixes.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.tex
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.tex
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.tex
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.pdf
trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.tex
trunk/Master/texmf-dist/source/latex-dev/l3kernel/expl3.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3basics.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3benchmark.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bitset.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bootstrap.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3box.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3cctab.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3clist.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3coffins.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3color.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3debug.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3deprecation.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3doc.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3docstrip.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3expan.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3file.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3flag.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-assign.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-aux.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-basics.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-convert.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-expo.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-extended.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-functions.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-logic.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-parse.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-random.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-round.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-symbolic.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-traps.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-trig.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-types.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fparray.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3graphics.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3int.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3intarray.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3kernel-functions.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3keys.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3legacy.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3luatex.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3msg.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3names.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3opacity.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3pdf.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prg.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prop.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3quark.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3regex.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3seq.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3skip.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sort.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str-convert.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sys.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-case.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-map.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-purify.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-analysis.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-build.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3token.dtx
trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3unicode.dtx
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/CHANGELOG.md 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/CHANGELOG.md 2025-04-29 19:46:22 UTC (rev 75056)
@@ -7,6 +7,11 @@
## [Unreleased]
+## [2025-04-29]
+
+### Fixed
+- Support for LuaMetaTeX in generic mode (issue \#1702)
+
## [2025-04-14]
### Added
@@ -1886,7 +1891,8 @@
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2025-04-14...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2025-04-29...HEAD
+[2025-04-29]: https://github.com/latex3/latex3/compare/2025-04-14...2025-04-29
[2025-04-14]: https://github.com/latex3/latex3/compare/2025-03-26...2025-04-14
[2025-03-26]: https://github.com/latex3/latex3/compare/2025-03-10...2025-03-26
[2025-03-10]: https://github.com/latex3/latex3/compare/2025-01-18...2025-03-10
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/README.md 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/README.md 2025-04-29 19:46:22 UTC (rev 75056)
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2025-04-14
+Release 2025-04-29
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/expl3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/interface3.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -58,7 +58,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-04-14}
+\date{Released 2025-04-29}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news01.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news02.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news03.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news04.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news05.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news06.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news07.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news08.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news09.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news10.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news11.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3news12.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3prefixes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3styleguide.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-04-14}
+\date{Released 2025-04-29}
\begin{document}
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3syntax-changes.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-04-14}
+\date{Released 2025-04-29}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/l3term-glossary.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-04-14}
+\date{Released 2025-04-29}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/doc/latex-dev/l3kernel/source3.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -57,7 +57,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-04-14}
+\date{Released 2025-04-29}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/expl3.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/expl3.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -22,7 +22,7 @@
%
% for those people who are interested.
%
-\def\ExplFileDate{2025-04-14}%
+\def\ExplFileDate{2025-04-29}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3basics.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3basics.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3benchmark.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3benchmark.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bitset.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bitset.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bootstrap.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3bootstrap.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3box.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3box.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3cctab.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3cctab.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3clist.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3clist.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3coffins.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3coffins.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3color.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3color.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3debug.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3debug.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -69,7 +69,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2025-04-14}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-04-29}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
@@ -1410,8 +1410,8 @@
\skip_use:N \tex_glueexpr:D
\__kernel_chk_expr:nNnN
{##1} \tex_glueexpr:D { } \skip_if_finite:n
- ; \prg_return_false:
- #1 ; \prg_return_true: \s_@@_stop
+ \@@_sep: \prg_return_false:
+ #1 \@@_sep: \prg_return_true: \s_@@_stop
}
}
\exp_args:No \@@_tmp:w { \tl_to_str:n { fil } }
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3deprecation.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3deprecation.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3doc.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3doc.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -71,7 +71,7 @@
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2025-04-14}{}
+\ProvidesExplClass{l3doc}{2025-04-29}{}
{L3 Experimental documentation class}
%</class>
% \fi
@@ -84,7 +84,7 @@
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
% \maketitle
% \tableofcontents
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3docstrip.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3docstrip.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3expan.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3expan.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -445,17 +445,18 @@
% {
% \exp_args:Nnc,
% \exp_args:Nno,
+% \exp_args:Nnf,
% \exp_args:NnV,
% \exp_args:Nnv,
% \exp_args:Nne,
-% \exp_args:Nnf,
+% \exp_args:Nce,
% \exp_args:Noc,
% \exp_args:Noo,
% \exp_args:Nof,
-% \exp_args:NVo,
% \exp_args:Nfo,
% \exp_args:Nff,
-% \exp_args:Nee,
+% \exp_args:NVo,
+% \exp_args:Nee
% }
% \begin{syntax}
% \cs{exp_args:Noo} \meta{token} \Arg{tokens_1} \Arg{tokens_2}
@@ -509,22 +510,50 @@
%
% \begin{function}[EXP]
% {
-% \exp_args:NNcf,
% \exp_args:NNno,
% \exp_args:NNnV,
+% \exp_args:NNnv,
+% \exp_args:NNne,
+% \exp_args:NNcc,
+% \exp_args:NNcf,
% \exp_args:NNoo,
% \exp_args:NNVV,
+% \exp_args:NNVv,
+% \exp_args:NNVe,
+% \exp_args:NNvV,
+% \exp_args:NNvv,
+% \exp_args:NNve,
+% \exp_args:NNeV,
+% \exp_args:NNev,
+% \exp_args:NNee,
+% \exp_args:NnNV,
+% \exp_args:Nnnc,
+% \exp_args:Nnno,
+% \exp_args:Nnnf,
+% \exp_args:NnnV,
+% \exp_args:Nnnv,
+% \exp_args:Nnne,
+% \exp_args:Nnff,
+% \exp_args:Nnee,
+% \exp_args:Ncnc,
% \exp_args:Ncno,
% \exp_args:NcnV,
+% \exp_args:Ncnv,
+% \exp_args:Ncne,
% \exp_args:Ncoo,
% \exp_args:NcVV,
-% \exp_args:Nnnc,
-% \exp_args:Nnno,
-% \exp_args:Nnnf,
-% \exp_args:Nnff,
+% \exp_args:NcVv,
+% \exp_args:NcVe,
+% \exp_args:NcvV,
+% \exp_args:Ncvv,
+% \exp_args:Ncve,
+% \exp_args:NceV,
+% \exp_args:Ncev,
+% \exp_args:Ncee,
% \exp_args:Nooo,
% \exp_args:Noof,
% \exp_args:Nffo,
+% \exp_args:NVNV,
% \exp_args:Neee
% }
% \begin{syntax}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3file.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3file.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -2252,6 +2252,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_wrap_chunk:nw, \@@_wrap_next:nw}
% The \texttt{chunk} and \texttt{next} auxiliaries are defined
% indirectly to obtain the expansions of \cs{c_catcode_other_space_tl}
@@ -2280,9 +2286,9 @@
{
\@@_wrap_line:nw
{ \l_@@_indent_tl }
- ##1 - \l_@@_indent_int ;
+ ##1 - \l_@@_indent_int \@@_sep:
}
- { \@@_wrap_line:nw { } ##1 ; }
+ { \@@_wrap_line:nw { } ##1 \@@_sep: }
##2 #1
\@@_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \s_@@_stop
}
@@ -2304,7 +2310,7 @@
% \@@_wrap_line_end:nw,
% \@@_wrap_end_chunk:w
% }
-% This is followed by \Arg{string} \meta{int expr} |;|. It stores the
+% This is followed by \Arg{string} \meta{int expr} \cs{@@_sep:}. It stores the
% \meta{string} and up to \meta{int expr} characters from the current
% chunk into \cs{l_@@_line_part_tl}. Characters are grabbed 8~at a
% time and left in \cs{l_@@_line_part_tl} by the \texttt{line_loop}
@@ -2336,7 +2342,7 @@
\exp_after:wN \@@_wrap_line_loop:w
\int_value:w \int_eval:w
}
-\cs_new:Npn \@@_wrap_line_loop:w #1 ; #2#3#4#5#6#7#8#9
+\cs_new:Npn \@@_wrap_line_loop:w #1 \@@_sep: #2#3#4#5#6#7#8#9
{
\if_int_compare:w #1 < 8 \exp_stop_f:
\@@_wrap_line_aux:Nw #1
@@ -2343,9 +2349,9 @@
\fi:
#2 #3 #4 #5 #6 #7 #8 #9
\exp_after:wN \@@_wrap_line_loop:w
- \int_value:w \int_eval:w #1 - 8 ;
+ \int_value:w \int_eval:w #1 - 8 \@@_sep:
}
-\cs_new:Npn \@@_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 ;
+\cs_new:Npn \@@_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 \@@_sep:
{
#2
\exp_after:wN \@@_wrap_line_end:NnnnnnnnN
@@ -2368,7 +2374,7 @@
\cs_new:Npn \@@_wrap_line_end:NnnnnnnnN #1#2#3#4#5#6#7#8#9
{
#2 #3 #4 #5 #6 #7 #8
- \use_none:nnnnn \int_eval:w 8 - ; #9
+ \use_none:nnnnn \int_eval:w 8 - \@@_sep: #9
\token_if_eq_charcode:NNTF \c_space_token #9
{ \@@_wrap_line_end:nw { } }
{ \if_false: { \fi: } \@@_wrap_break:w #9 }
@@ -2380,7 +2386,7 @@
\@@_wrap_next_line:w
}
\cs_new:Npn \@@_wrap_end_chunk:w
- #1 \int_eval:w #2 - #3 ; #4#5 \s_@@_stop
+ #1 \int_eval:w #2 - #3 \@@_sep: #4#5 \s_@@_stop
{
\if_false: { \fi: }
\exp_args:Nf \@@_wrap_next:nw { \int_eval:n { #2 - #4 } }
@@ -2470,7 +2476,7 @@
{
\@@_wrap_line:nw
{ \l_@@_indent_tl }
- \l_@@_line_target_int - \l_@@_indent_int ;
+ \l_@@_line_target_int - \l_@@_indent_int \@@_sep:
#1 #2 \s_@@_stop
}
}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3flag.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3flag.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -192,6 +192,12 @@
%
% \TestFiles{m3flag001}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Protected flag commands}
%
% The height $h$ of a flag (which is initially zero) is stored by
@@ -227,11 +233,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \flag_clear:N #1
{
- \@@_clear:wN 0 ; #1
+ \@@_clear:wN 0 \@@_sep: #1
\prg_break_point:
}
\cs_generate_variant:Nn \flag_clear:N { c }
-\cs_new_protected:Npn \@@_clear:wN #1 ; #2
+\cs_new_protected:Npn \@@_clear:wN #1 \@@_sep: #2
{
\if_cs_exist:w #2 #1 \cs_end: \else:
\prg_break:n
@@ -238,7 +244,7 @@
\fi:
\cs_set_eq:cN { #2 #1 } \tex_undefined:D
\exp_after:wN \@@_clear:wN
- \int_value:w \int_eval:w \c_one_int + #1 ; #2
+ \int_value:w \int_eval:w \c_one_int + #1 \@@_sep: #2
}
% \end{macrocode}
% \end{macro}
@@ -303,16 +309,16 @@
% Extract the value of the flag by going through all of the
% control sequences starting from |0|.
% \begin{macrocode}
-\cs_new:Npn \flag_height:N #1 { \@@_height_loop:wN 0; #1 }
-\cs_new:Npn \@@_height_loop:wN #1 ; #2
+\cs_new:Npn \flag_height:N #1 { \@@_height_loop:wN 0 \@@_sep: #1 }
+\cs_new:Npn \@@_height_loop:wN #1 \@@_sep: #2
{
\if_cs_exist:w #2 #1 \cs_end: \else:
\exp_after:wN \@@_height_end:wN
\fi:
\exp_after:wN \@@_height_loop:wN
- \int_value:w \int_eval:w \c_one_int + #1 ; #2
+ \int_value:w \int_eval:w \c_one_int + #1 \@@_sep: #2
}
-\cs_new:Npn \@@_height_end:wN #1 + #2 ; #3 {#2}
+\cs_new:Npn \@@_height_end:wN #1 + #2 \@@_sep: #3 {#2}
\cs_generate_variant:Nn \flag_height:N { c }
% \end{macrocode}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-assign.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-assign.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
% \maketitle
%
% \begin{documentation}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-aux.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-aux.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -80,17 +80,8 @@
% \end{macro}
%
% \begin{macro}{\@@_sep:}
-% We need a way to stop the expansion in \cs{@@_int_eval:w} and similar with a
-% token that isn't absorbed so that it works as a marker for right-delimited
-% arguments. Additionally the used token should be impossible to form a valid
-% expression for these expression primitives (the otherwise often used
-% |;| is turned into a binary operator in some engines for instance). And
-% since this is about right-delimiting I think it's funny to use
-% \cs{tex_right:D}. An unexpandable primitive is used because it is guaranteed
-% to never be a valid token in such an expression and survives all kinds of
-% expansion (just like |;| would).
% \begin{macrocode}
-\cs_new_eq:NN \@@_sep: \tex_right:D
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
% \end{macrocode}
% \end{macro}
%
@@ -177,7 +168,7 @@
%
% Calculations are done in base $10000$, i.e. one myriad.
%
-% \subsection{Using arguments and semicolons}
+% \subsection{Using arguments and \cs{@@_sep:}s}
%
% \begin{macro}[EXP]{\@@_use_none_stop_f:n}
% This function removes an argument (typically a digit) and replaces
@@ -189,7 +180,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_use_s:n, \@@_use_s:nn}
-% Those functions place a semicolon after one or two arguments
+% Those functions place a \cs{@@_sep:} after one or two arguments
% (typically digits).
% \begin{macrocode}
\cs_new:Npn \@@_use_s:n #1 { #1\@@_sep: }
@@ -200,7 +191,7 @@
% \begin{macro}[EXP]
% {\@@_use_none_until_s:w, \@@_use_i_until_s:nw, \@@_use_ii_until_s:nnw}
% Those functions select specific arguments among a set of arguments
-% delimited by a semicolon.
+% delimited by a \cs{@@_sep:}.
% \begin{macrocode}
\cs_new:Npn \@@_use_none_until_s:w #1\@@_sep: { }
\cs_new:Npn \@@_use_i_until_s:nw #1#2\@@_sep: {#1}
@@ -209,7 +200,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_reverse_args:Nww}
-% Many internal functions take arguments delimited by semicolons, and
+% Many internal functions take arguments delimited by \cs{@@_sep:}s, and
% it is occasionally useful to swap two such arguments.
% \begin{macrocode}
\cs_new:Npn \@@_reverse_args:Nww #1 #2\@@_sep: #3\@@_sep:
@@ -218,7 +209,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_rrot:www}
-% Rotate three arguments delimited by semicolons. This is the inverse
+% Rotate three arguments delimited by \cs{@@_sep:}s. This is the inverse
% (or the square) of the Forth primitive |ROT|, hence the name.
% \begin{macrocode}
\cs_new:Npn \@@_rrot:www #1\@@_sep: #2\@@_sep: #3\@@_sep:
@@ -227,7 +218,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_use_i:ww, \@@_use_i:www}
-% Many internal functions take arguments delimited by semicolons, and
+% Many internal functions take arguments delimited by \cs{@@_sep:}s, and
% it is occasionally useful to remove one or two such arguments.
% \begin{macrocode}
\cs_new:Npn \@@_use_i:ww #1\@@_sep: #2\@@_sep: { #1\@@_sep: }
@@ -554,7 +545,7 @@
% \begin{macro}[EXP]{\@@_tuple_count:w, \@@_array_count:n}
% \begin{macro}[EXP]{\@@_tuple_count_loop:Nw}
% Count the number of items in a tuple of floating points by counting
-% semicolons. The technique is very similar to \cs{tl_count:n}, but
+% \cs{@@_sep:}s. The technique is very similar to \cs{tl_count:n}, but
% with the loop built-in. Checking for the end of the loop is done
% with the |\use_none:n #1| construction.
% \begin{macrocode}
@@ -768,7 +759,7 @@
% expect as long as the numbers to multiply are not too big; it
% also works to some extent with negative results. The \texttt{pack}
% function puts the last $4$ of those $9$ digits into a brace group,
-% moves the semi-colon delimiter, and inserts a |+|, which combines the
+% moves the \cs{@@_sep:} delimiter, and inserts a |+|, which combines the
% carry with the previous computation. The shifts nicely combine into
% $5\,0000\,0000 / 10^{4} + 4\,9995\,0000 = 5\,0000\,0000$. As long as
% the operands are in some range, the result of this second computation
@@ -854,9 +845,9 @@
% \begin{syntax}
% \cs{@@_pack_twice_four:wNNNNNNNN} \meta{tokens} \cs{@@_sep:} \meta{$\geq 8$ digits}
% \end{syntax}
-% Grabs two sets of $4$ digits and places them before the semi-colon
+% Grabs two sets of $4$ digits and places them before the \cs{@@_sep:}
% delimiter. Putting several copies of this function before a
-% semicolon packs more digits since each takes the digits
+% \cs{@@_sep:} packs more digits since each takes the digits
% packed by the others in its first argument.
% \begin{macrocode}
\cs_new:Npn \@@_pack_twice_four:wNNNNNNNN #1\@@_sep: #2#3#4#5 #6#7#8#9
@@ -868,9 +859,9 @@
% \begin{syntax}
% \cs{@@_pack_eight:wNNNNNNNN} \meta{tokens} \cs{@@_sep:} \meta{$\geq 8$ digits}
% \end{syntax}
-% Grabs one set of $8$ digits and places them before the semi-colon
+% Grabs one set of $8$ digits and places them before the \cs{@@_sep:}
% delimiter as a single group. Putting several copies of this
-% function before a semicolon packs more digits since each
+% function before a \cs{@@_sep:} packs more digits since each
% takes the digits packed by the others in its first argument.
% \begin{macrocode}
\cs_new:Npn \@@_pack_eight:wNNNNNNNN #1\@@_sep: #2#3#4#5 #6#7#8#9
@@ -1065,7 +1056,7 @@
% as an alternation of unbraced and braced blocks of $4$ digits,
% such that the first $5$ groups of token consist in $4$ single digits,
% and one brace group (in some order), and the next $5$ have the same
-% structure. This is followed by some digits and a semicolon.
+% structure. This is followed by some digits and a \cs{@@_sep:}.
% \begin{macrocode}
\cs_new:Npn \@@_decimate_pack:nnnnnnnnnnw #1#2#3#4#5
{ \@@_decimate_pack:nnnnnnw { #1#2#3#4#5 } }
@@ -1123,8 +1114,8 @@
% This function ends a \TeX{} conditional, removes junk and a floating
% point, and places its first argument in the input stream. A quirk
% is that we don't define this function requiring a floating point to
-% follow, simply anything ending in a semicolon. This, in turn, means
-% that the \meta{junk} may not contain semicolons.
+% follow, simply anything ending in a \cs{@@_sep:}. This, in turn, means
+% that the \meta{junk} may not contain \cs{@@_sep:}s.
% \begin{macrocode}
\cs_new:Npn \@@_case_return:nw #1#2 \fi: #3 \@@_sep: { \fi: #1 }
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-basics.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-basics.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -592,7 +592,7 @@
% too close a call to know yet, namely if $1 \meta{Y'_1} \meta{Y'_2} =
% \meta{X_1} \meta{X_2} \meta{X_3} \meta{X_4} 0$, then call the
% \texttt{quite_far} auxiliary. We use the odd combination of space
-% and semi-colon delimiters to allow the \texttt{not_far} auxiliary to
+% and \cs{@@_sep:} delimiters to allow the \texttt{not_far} auxiliary to
% grab each piece individually, the \texttt{very_far} auxiliary to use
% \cs{@@_pack_eight:wNNNNNNNN}, and the \texttt{quite_far} to ignore
% the significands easily (using the \cs{@@_sep:} delimiter).
@@ -843,7 +843,7 @@
% \Arg{X_1} \Arg{X_2} \Arg{X_3} \Arg{X_4} \meta{sign}
% \Arg{Y_1} \Arg{Y_2} \Arg{Y_3} \Arg{Y_4}
% \end{quote}
-% Note the three semicolons at the end of the definition. One is for
+% Note the three \cs{@@_sep:}s at the end of the definition. One is for
% the last \cs{@@_mul_significand_drop:NNNNNw}; one is for
% \cs{@@_round_digit:Nw} later on; and one, preceded by
% \cs{exp_after:wN}, which is correctly expanded (within an
@@ -1013,7 +1013,7 @@
% \cs{@@_div_significand_i_o:wnnw}, namely an integer \meta{y} obtained
% by adding $1$ to the first $5$ digits of $Z$ (explanation given soon
% below), then the four \Arg{A_{i}}, then the four \Arg{Z_{i}}, a
-% semi-colon, and the \meta{final sign}, used for rounding at the end.
+% \cs{@@_sep:}, and the \meta{final sign}, used for rounding at the end.
% \begin{macrocode}
\cs_new:Npn \@@_div_npos_o:Nww
#1 \s_@@ \@@_chk:w 1 #2 #3 #4 \@@_sep:
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-convert.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-convert.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-expo.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-expo.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -386,7 +386,7 @@
% in $[1,10]$, and \meta{exponent} is
% the exponent. Also, the expansion is done backwards. Then
% \cs{@@_div_significand_pack:NNN} puts things in the
-% correct order to add the $Q_{i}$ together and put semicolons
+% correct order to add the $Q_{i}$ together and put \cs{@@_sep:}s
% between each piece. Once those have been expanded, we get
% \begin{syntax}
% \cs{@@_ln_div_after:Nw} \meta{fixed-tl} \meta{1d} \cs{@@_sep:} \meta{4d} \cs{@@_sep:}
@@ -714,7 +714,7 @@
% 10^{-1})$. We compute $10$ terms of the Taylor series. The
% first argument is irrelevant (rounding digit used by some other
% functions). The next three arguments, at least $16$ digits,
-% delimited by a semicolon, form a fixed point number, so we pack it
+% delimited by a \cs{@@_sep:}, form a fixed point number, so we pack it
% in blocks of $4$ digits.
% \begin{macrocode}
\cs_new:Npn \@@_exp_Taylor:Nnnwn #1#2#3 #4\@@_sep: #5 #6
@@ -834,7 +834,7 @@
% The first two arguments are irrelevant (a rounding digit, and a
% brace group with $8$ zeros). The third argument is the integer part
% of our number, then we have the decimal part delimited by a
-% semicolon, and finally the exponent, in the range $[0,5]$. Remove
+% \cs{@@_sep:}, and finally the exponent, in the range $[0,5]$. Remove
% leading zeros from the integer part: putting |#4| in there too
% ensures that an integer part of $0$ is also removed. Then read
% digits one by one, looking up $\exp(\meta{digit}\cdot
@@ -932,7 +932,7 @@
% \cs{@@_pow_normal_o:ww} followed by the two \texttt{fp} $a$ and $b$.
% For $a=+0$ or $+\inf$, call \cs{@@_pow_zero_or_inf:ww} instead, to
% return either $+0$ or $+\infty$ as appropriate.
-% \item If $a$ is a \texttt{nan}, then skip to the next semicolon
+% \item If $a$ is a \texttt{nan}, then skip to the next \cs{@@_sep:}
% (which happens to be conveniently the end of $b$) and return
% \texttt{nan}.
% \item Finally, if $a$ is negative, compute $|a|^b$
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-extended.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-extended.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -93,7 +93,7 @@
% ~~\meta{operand_2} \cs{@@_sep:} \Arg{continuation}
% \end{syntax}
% They perform the \meta{calculation} on the two \meta{operands}, then
-% feed the result ($6$ brace groups followed by a semicolon) to the
+% feed the result ($6$ brace groups followed by a \cs{@@_sep:}) to the
% \meta{continuation}, responsible for the next step of the calculation.
% Some functions only accept an \texttt{N}-type \meta{continuation}.
% This allows constructions such as
@@ -264,7 +264,7 @@
% last $9999$, giving the integer closest to $10000 + a_{6}/n$.
%
% Each \texttt{pack} auxiliary receives $5$ digits followed by a
-% semicolon. The first digit is added as a carry to the integer
+% \cs{@@_sep:}. The first digit is added as a carry to the integer
% expression above, and the $4$ other digits are braced. Each call to
% the \texttt{pack} auxiliary thus produces one brace group. The last
% brace group is produced by the \texttt{after} auxiliary, which
@@ -624,7 +624,7 @@
% In this section we manipulate floating point numbers with roughly $24$
% significant figures (\enquote{extended-precision} numbers, in short,
% \enquote{ep}), which take the form of an integer exponent, followed by a
-% comma, then six groups of digits, ending with a semicolon. The first
+% comma, then six groups of digits, ending with a \cs{@@_sep:}. The first
% group of digit may be any non-negative integer, while other groups of
% digits have $4$~digits. In other words, an extended-precision number
% is an exponent ending in a comma, then a fixed point number. The
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-functions.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-functions.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-logic.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-logic.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-parse.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-parse.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -199,7 +199,7 @@
% second \cs{exp_after:wN} to expand, and to trigger the construction
% \cs{exp:w}, which expands |\operand:w|, defined to read
% what follows and make a number out of it, then leave \cs{exp_end:}, the
-% number, and a semicolon in the input stream. Once |\operand:w| is
+% number, and a \cs{@@_sep:} in the input stream. Once |\operand:w| is
% done expanding, we obtain essentially
% \begin{syntax}
% \cs{exp_after:wN} |\add:ww| \cs{int_value:w} 12345 \cs{@@_sep:}
@@ -637,12 +637,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_parse_return_semicolon:w}
+% \begin{macro}[EXP]{\@@_parse_return_sep:w}
% This very odd function swaps its position with the following
% \cs{fi:} and removes \cs{@@_parse_expand:w} normally responsible for
% expansion. That turns out to be useful.
% \begin{macrocode}
-\cs_new:Npn \@@_parse_return_semicolon:w
+\cs_new:Npn \@@_parse_return_sep:w
#1 \fi: \@@_parse_expand:w { \fi: \@@_sep: #1 }
% \end{macrocode}
% \end{macro}
@@ -682,7 +682,7 @@
\if_int_compare:w 9 < 1 \token_to_str:N ##1 \exp_stop_f:
\token_to_str:N ##1 \exp_after:wN #2 \exp:w
\else:
- \@@_parse_return_semicolon:w #3 ##1
+ \@@_parse_return_sep:w #3 ##1
\fi:
\@@_parse_expand:w
}
@@ -1050,7 +1050,7 @@
\exp:w \exp_after:wN \@@_parse_letters:N
\exp:w
\else:
- \@@_parse_return_semicolon:w #1
+ \@@_parse_return_sep:w #1
\fi:
\@@_parse_expand:w
}
@@ -1464,7 +1464,7 @@
\exp:w
\fi:
\else:
- \@@_parse_return_semicolon:w 0 #1
+ \@@_parse_return_sep:w 0 #1
\fi:
\@@_parse_expand:w
}
@@ -1475,7 +1475,7 @@
\exp_after:wN \@@_parse_round_up:N
\exp:w
\else:
- \@@_parse_return_semicolon:w 1 #1
+ \@@_parse_return_sep:w 1 #1
\fi:
\@@_parse_expand:w
}
@@ -1648,7 +1648,7 @@
% This function should be called within an \cs{int_value:w}
% expansion (or within an integer expression). It leaves digits of the
% exponent behind it in the input stream, and terminates the expansion
-% with a semicolon. If there is no~|e| (or~|E|), leave an exponent of~$0$. If
+% with a \cs{@@_sep:}. If there is no~|e| (or~|E|), leave an exponent of~$0$. If
% there is an~|e| or~|E|, expand the next token to run some tests on it. The
% first rough test is that if the character code of~|#1| is greater
% than that of~|9| (largest code valid for an exponent, less than any
@@ -1662,7 +1662,7 @@
\exp_after:wN #1
\exp:w
\else:
- 0 \@@_parse_return_semicolon:w #1
+ 0 \@@_parse_return_sep:w #1
\fi:
\@@_parse_expand:w
}
@@ -1707,7 +1707,7 @@
\exp:w
\else:
\@@_parse_exponent_keep:NTF #1
- { \@@_parse_return_semicolon:w #1 }
+ { \@@_parse_return_sep:w #1 }
{
\exp_after:wN \@@_sep:
\exp:w
@@ -1720,7 +1720,7 @@
%
% \begin{macro}[rEXP]{\@@_parse_exponent_digits:N}
% Read digits one by one, and leave them behind in the input stream.
-% When finding a non-digit, stop, and insert a semicolon. Note that
+% When finding a non-digit, stop, and insert a \cs{@@_sep:}. Note that
% we do not check for overflow of the exponent, hence there can be a
% \TeX{} error. It is mostly harmless, except when parsing
% |0e9876543210|, which should be a valid representation of $0$, but
@@ -1733,7 +1733,7 @@
\exp_after:wN \@@_parse_exponent_digits:N
\exp:w
\else:
- \@@_parse_return_semicolon:w #1
+ \@@_parse_return_sep:w #1
\fi:
\@@_parse_expand:w
}
@@ -2876,8 +2876,6 @@
{ #1~got~no~argument;~used~nan. }
\msg_new:nnn { fp } { multi-arg }
{ #1~got~more~than~one~argument;~used~nan. }
-\msg_new:nnn { fp } { num-args }
- { #1~expects~between~#2~and~#3~arguments. }
\msg_new:nnn { fp } { bad-args }
{ Arguments~in~#1#2~are~invalid. }
\msg_new:nnn { fp } { infty-pi }
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-random.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-random.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -304,8 +304,8 @@
\@@_rand_myriads:n { XXXX } { 0000 } { 0000 } \@@_sep: 0
}
{
- \msg_expandable_error:nnnnn
- { fp } { num-args } { rand() } { 0 } { 0 }
+ \@@_error_num_args:ffff { rand } { 0 } { 0 }
+ { \@@_array_count:n {#1} }
\exp_after:wN \c_nan_fp
}
}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-round.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-round.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -269,7 +269,7 @@
% \begin{syntax}
% \cs{@@_round_s:NNNw} \meta{final sign} \meta{digit} \meta{more digits} \cs{@@_sep:}
% \end{syntax}
-% Similar to \cs{@@_round:NNN}, but with an extra semicolon, this
+% Similar to \cs{@@_round:NNN}, but with an extra \cs{@@_sep:}, this
% function expands to |0\exp_stop_f:|\cs{@@_sep:} if rounding
% $\meta{final sign}\meta{digit}.\meta{more digits}$ to an integer
% truncates, and to |1\exp_stop_f:|\cs{@@_sep:} otherwise.
@@ -305,7 +305,7 @@
% or \cs{@@_int_eval:w} expansion; it may add an extra
% \cs{@@_int_eval:w}, which means that the integer or integer
% expression should not be ended with a synonym of \tn{relax}, but
-% with a semi-colon for instance.
+% with a \cs{@@_sep:} for instance.
% \begin{macrocode}
\cs_new:Npn \@@_round_digit:Nw #1 #2\@@_sep:
{
@@ -411,10 +411,10 @@
\cs_new:Npn \@@_round_no_arg_o:Nw #1
{
\cs_if_eq:NNTF #1 \@@_round_to_nearest:NNN
- { \@@_error:nnnn { num-args } { round () } { 1 } { 3 } }
+ { \@@_error_num_args:nnnn { round } { 1 } { 3 } { 0 } }
{
- \@@_error:nffn { num-args }
- { \@@_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \@@_error_num_args:ffff
+ { \@@_round_name_from_cs:N #1 } { 1 } { 2 } { 0 }
}
\exp_after:wN \c_nan_fp
}
@@ -445,13 +445,15 @@
#2 \@@_sep: #3 \@@_sep:
}
{
- \@@_error:nnnn { num-args } { round () } { 1 } { 3 }
+ \@@_error_num_args:ffff { round } { 1 } { 3 }
+ { \int_eval:n { 3 + \@@_array_count:n {#7} } }
\exp_after:wN \c_nan_fp
}
}
{
- \@@_error:nffn { num-args }
- { \@@_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \@@_error_num_args:ffff
+ { \@@_round_name_from_cs:N #1 } { 1 } { 2 }
+ { \int_eval:n { 3 + \@@_array_count:n {#7} } }
\exp_after:wN \c_nan_fp
}
}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-symbolic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-symbolic.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-symbolic.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -77,8 +77,8 @@
% \cs{@@_symbolic_chk:w} \meta{operation} |,| \Arg{operands} \meta{junk}
% \cs{@@_sep:} where the \meta{operation} is a list of \texttt{N}-type tokens,
% the \meta{operands} is an array of floating point objects, and the
-% \meta{junk} is to be discarded. If the outermost operator (last to be
-% evaluated) is unary, the expression has the form
+% \meta{junk} (typically empty) is to be discarded. If the outermost operator
+% (last to be evaluated) is unary, the expression has the form
% \begin{quote}
% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
% \cs{@@_types_unary:NNw} |\__fp_|\meta{op}|_o:w| \meta{token} |,| \\
@@ -96,6 +96,13 @@
% \end{quote}
% where the \meta{op} is an operation (|+|, |&|, \ldots{}), and
% |\__fp_|\meta{op}|_o:ww| receives the \meta{operands} as arguments.
+% If the expression is a user-defined function applied to some arguments
+% it is stored as
+% \begin{quote}
+% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
+% \cs{@@_function_o:w} \cs[no-index]{@@_\meta{identifier}_o:w} |,| \\
+% |{| \meta{operands} |}| \meta{junk} \cs{@@_sep:}
+% \end{quote}
% If the expression consists of a single variable, it is stored as
% \begin{quote}
% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
@@ -267,7 +274,7 @@
{ @@ _#2_symbolic_o:ww }
{ @@_symbolic_#2_symbolic_o:ww }
}
-\tl_map_inline:nn { + - * / ^ & | }
+\tl_map_inline:nn { + - * / ^ & | } % |
{ \exp_args:Nc \@@_tmp:w { @@_#1_o:ww } {#1} }
% \end{macrocode}
% \end{macro}
@@ -334,7 +341,7 @@
% }
% \begin{macro}[EXP]{\@@_symbolic_convert:wnnN}
% Symbolic expressions cannot be converted to decimal, integer, or
-% scientific notation unless they can be reduced to
+% scientific notation unless they can be evaluated all the way.
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:w #1#2#3
{
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-traps.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-traps.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
% \maketitle
%
% \begin{documentation}
@@ -351,6 +351,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP]{\@@_error_num_args:nnnn, \@@_error_num_args:ffff}
+% \begin{macrocode}
+\cs_new:Npn \@@_error_num_args:nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF {#2} = {#3}
+ { \msg_expandable_error:nnnnn { fp } { num-args-eq } {#1} {#2} {#4} }
+ { \msg_expandable_error:nnnnnn { fp } { num-args } {#1} {#2} {#3} {#4} }
+ }
+\cs_generate_variant:Nn \@@_error_num_args:nnnn { ffff }
+\msg_new:nnn { fp } { num-args-eq }
+ { #1()~needs~#2~arguments,~got~#3. }
+\msg_new:nnn { fp } { num-args }
+ { #1()~needs~#2~to~#3~arguments,~got~#4. }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Messages}
%
% Some messages.
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-trig.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-trig.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -832,8 +832,8 @@
% }
% First come the first $64$~digits of the fractional part of
% $10^{\text{\texttt{\#1}}-16}/(2\pi)$, arranged in $16$~blocks
-% of~$4$, and ending with a semicolon. Then a few more digits of the
-% same fractional part, ending with a semicolon, then $4$~blocks of
+% of~$4$, and ending with a \cs{@@_sep:}. Then a few more digits of the
+% same fractional part, ending with a \cs{@@_sep:}, then $4$~blocks of
% $4$~digits holding the significand of the original argument.
% Multiply the $16$-digit significand with the $64$-digit fractional
% part: the \texttt{auxvi} auxiliary receives the significand
@@ -845,7 +845,7 @@
% the last \texttt{middle} shift by the appropriate \texttt{trailing}
% shift, then discard the significand and remaining $3$~blocks from
% the fractional part, as there are not enough digits to compute any
-% more step in the ladder. The last semicolon closes the ladder, and
+% more step in the ladder. The last \cs{@@_sep:} closes the ladder, and
% we return control to the \texttt{auxvii} auxiliary.
% \begin{macrocode}
\cs_new:Npn \@@_trig_large_auxv:www #1\@@_sep: #2\@@_sep: #3\@@_sep:
@@ -883,7 +883,7 @@
% \@@_trig_large_auxxi:w
% }
% The \texttt{auxvii} auxiliary is followed by $52$~digits and a
-% semicolon. We find the octant as the integer part of $8$~times what
+% \cs{@@_sep:}. We find the octant as the integer part of $8$~times what
% follows, or equivalently as the integer part of $|#1#2#3|/125$, and
% add it to the surrounding integer expression for the octant. We
% then compute $8$~times the $52$-digit number, with a minus sign if
@@ -949,7 +949,7 @@
% Here we receive a conversion function \cs{@@_ep_to_float_o:wwN} or
% \cs{@@_ep_inv_to_float_o:wwN}, a \meta{sign} ($0$ or~$2$), a
% (non-negative) \meta{octant} delimited by a dot, a \meta{fixed
-% point} number delimited by a semicolon, and an extended-precision
+% point} number delimited by a \cs{@@_sep:}, and an extended-precision
% number. The auxiliary receives:
% \begin{itemize}
% \item the conversion function~|#1|;
@@ -1300,7 +1300,7 @@
% \begin{macro}[EXP]{\@@_atan_normal_o:NNnwNnw}
% Here we simply reorder the floating point data into a pair of signed
% extended-precision numbers, that is, a sign, an exponent ending with
-% a comma, and a six-block mantissa ending with a semi-colon. This
+% a comma, and a six-block mantissa ending with a \cs{@@_sep:}. This
% extended precision is required by other inverse trigonometric
% functions, to compute things like $\operatorname{atan}(x,\sqrt{1-x^2})$ without
% intermediate rounding errors.
@@ -1422,7 +1422,7 @@
% $\frac{1}{2k-1}$, then subtract from it $z^2$ times |#2|. The loop
% stops when $k=0$: then |#2| is $(\operatorname{atan} z)/z$, and there is a need to
% clean up all the unnecessary data, end the integer expression
-% computing the octant with a semicolon, and leave the result~|#2|
+% computing the octant with a \cs{@@_sep:}, and leave the result~|#2|
% afterwards.
% \begin{macrocode}
\cs_new:Npn \@@_atan_Taylor_loop:www #1\@@_sep: #2\@@_sep: #3\@@_sep:
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-types.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-types.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp-types.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fp.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fparray.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3fparray.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3graphics.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3graphics.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3int.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3int.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1183,9 +1183,8 @@
% \end{macro}
%
% \begin{macro}{\@@_sep:}
-% See comments in \texttt{l3fp-aux.dtx} for this idea.
% \begin{macrocode}
-\cs_new_eq:NN \@@_sep: \tex_right:D
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
% \end{macrocode}
% \end{macro}
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3intarray.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3intarray.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -203,6 +203,12 @@
{ Size~of~array~may~not~be~negative:~#1 }
% \end{macrocode}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{variable}{\l_@@_loop_int}
% A loop index.
% \begin{macrocode}
@@ -730,11 +736,11 @@
{
\exp_after:wN \@@_gset:Nww
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
- \int_value:w \int_eval:n {#3} ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \@@_sep:
+ \int_value:w \int_eval:n {#3} \@@_sep:
}
\cs_generate_variant:Nn \intarray_gset:Nnn { c }
- \cs_new_protected:Npn \@@_gset:Nww #1#2 ; #3 ;
+ \cs_new_protected:Npn \@@_gset:Nww #1#2 \@@_sep: #3 \@@_sep:
{
\@@_bounds:NNnTF \msg_error:nneee #1 {#2}
{
@@ -802,10 +808,10 @@
{
\exp_after:wN \@@_item:Nw
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \@@_sep:
}
\cs_generate_variant:Nn \intarray_item:Nn { c }
- \cs_new:Npn \@@_item:Nw #1#2 ;
+ \cs_new:Npn \@@_item:Nw #1#2 \@@_sep:
{
\@@_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
{ \__kernel_intarray_item:Nn #1 {#2} }
@@ -866,10 +872,10 @@
\int_compare:nNnF { \intarray_count:N #1 } = \c_zero_int
{
\exp_last_unbraced:Nf \use_none:n
- { \@@_to_clist:w 1 ; #1 {#2} \prg_break_point: }
+ { \@@_to_clist:w 1 \@@_sep: #1 {#2} \prg_break_point: }
}
}
- \cs_new:Npn \@@_to_clist:w #1 ; #2#3
+ \cs_new:Npn \@@_to_clist:w #1 \@@_sep: #2#3
{
\if_int_compare:w #1 > \@@_count:w #2
\prg_break:n
@@ -876,7 +882,7 @@
\fi:
#3 \__kernel_intarray_item:Nn #2 {#1}
\exp_after:wN \@@_to_clist:w
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 {#3}
+ \int_value:w \int_eval:w #1 + \c_one_int \@@_sep: #2 {#3}
}
% \end{macrocode}
% \end{macro}
@@ -889,12 +895,12 @@
\exp_last_unbraced:Nf \use_none:n
{
\exp_after:wN \@@_range_to_clist:ww
- \int_value:w \int_eval:w #2 \exp_after:wN ;
- \int_value:w \int_eval:w #3 ;
+ \int_value:w \int_eval:w #2 \exp_after:wN \@@_sep:
+ \int_value:w \int_eval:w #3 \@@_sep:
#1 \prg_break_point:
}
}
- \cs_new:Npn \@@_range_to_clist:ww #1 ; #2 ; #3
+ \cs_new:Npn \@@_range_to_clist:ww #1 \@@_sep: #2 \@@_sep: #3
{
\if_int_compare:w #1 > #2 \exp_stop_f:
\prg_break:n
@@ -901,7 +907,7 @@
\fi:
, \__kernel_intarray_item:Nn #3 {#1}
\exp_after:wN \@@_range_to_clist:ww
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 ; #3
+ \int_value:w \int_eval:w #1 + \c_one_int \@@_sep: #2 \@@_sep: #3
}
% \end{macrocode}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3kernel-functions.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3kernel-functions.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -286,6 +286,20 @@
% than once.
% \end{function}
%
+% \begin{function}[EXP]{\__kernel_int_sep:}
+% \begin{syntax}
+% \cs{__kernel_int_sep:}
+% \end{syntax}
+% Provides a way to stop the expansion in \cs{tex_numexpr:D} with a
+% token that is not absorbed so that it works as a marker for right-delimited
+% arguments. Additionally the used token should be impossible to form a valid
+% expression for these expression primitives (the otherwise previously-used
+% |;| is turned into a binary operator in some engines for instance).
+% An unexpandable primitive is used because it is guaranteed
+% to never be a valid token in such an expression and survives all kinds of
+% expansion (just like~|;| would in \eTeX{}).
+% \end{function}
+%
% \begin{function}[added = 2018-03-31]{\__kernel_intarray_gset:Nnn}
% \begin{syntax}
% \cs{__kernel_intarray_gset:Nnn} \meta{intarray~var} \Arg{index} \Arg{value}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3keys.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3keys.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3legacy.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3legacy.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3luatex.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3luatex.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -374,7 +374,7 @@
local token_create_safe
do
local is_defined = token.is_defined
- local set_char = token.set_char
+ local set_char = token.set_char or tex.chardef
local runtoks = tex.runtoks
local let_token = token_create'let'
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3msg.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3msg.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3names.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3names.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3opacity.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3opacity.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3pdf.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3pdf.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prg.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prg.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prop.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3prop.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3quark.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3quark.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3regex.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3regex.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1113,6 +1113,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_standard_escapechar:}
% Make the \tn{escapechar} into the standard backslash.
% \begin{macrocode}
@@ -1823,7 +1829,7 @@
\exp_after:wN \@@_escape_x_end:w
\int_value:w "0 \@@_escape_x_test:N
}
-\cs_new:Npn \@@_escape_x_end:w #1 ;
+\cs_new:Npn \@@_escape_x_end:w #1 \@@_sep:
{
\int_compare:nNnTF {#1} > \c_max_char_int
{
@@ -1849,7 +1855,7 @@
\cs_new:Npn \@@_escape_x_test:N #1
{
\if_meaning:w \scan_stop: #1
- \exp_after:wN \use_i:nnn \exp_after:wN ;
+ \exp_after:wN \use_i:nnn \exp_after:wN \@@_sep:
\fi:
\use:n
{
@@ -1868,7 +1874,7 @@
\else:
\@@_hexadecimal_use:NTF #1
{ \exp_after:wN \@@_escape_x:N }
- { ; \exp_after:wN \@@_escape_loop:N \exp_after:wN #1 }
+ { \@@_sep: \exp_after:wN \@@_escape_loop:N \exp_after:wN #1 }
\fi:
}
% \end{macrocode}
@@ -1880,13 +1886,13 @@
\cs_new:Npn \@@_escape_x:N #1
{
\if_meaning:w \scan_stop: #1
- \exp_after:wN \use_i:nnn \exp_after:wN ;
+ \exp_after:wN \use_i:nnn \exp_after:wN \@@_sep:
\fi:
\use:n
{
\@@_hexadecimal_use:NTF #1
- { ; \@@_escape_loop:N }
- { ; \@@_escape_loop:N #1 }
+ { \@@_sep: \@@_escape_loop:N }
+ { \@@_sep: \@@_escape_loop:N #1 }
}
}
% \end{macrocode}
@@ -1903,7 +1909,7 @@
\exp_after:wN \use_ii:nnn
\fi:
\use_ii:nn
- { ; \@@_escape_x_loop_error:n { } {#1} }
+ { \@@_sep: \@@_escape_x_loop_error:n { } {#1} }
{
\@@_hexadecimal_use:NTF #1
{ \@@_escape_x_loop:N }
@@ -1911,7 +1917,7 @@
\token_if_eq_charcode:NNTF \c_space_token #1
{ \@@_escape_x_loop:N }
{
- ;
+ \@@_sep:
\exp_after:wN
\token_if_eq_charcode:NNTF \c_right_brace_str #1
{ \@@_escape_loop:N }
@@ -3016,7 +3022,7 @@
\@@_if_within_catcode:TF
{
\exp_after:wN \@@_compile_class_catcode:w
- \int_use:N \l_@@_catcodes_int ;
+ \int_use:N \l_@@_catcodes_int \@@_sep:
}
{ \@@_compile_class_normal:w }
}
@@ -3049,7 +3055,7 @@
% as appropriate, each with the current catcodes bitmap |#1| as an
% argument, and reset the catcodes.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_compile_class_catcode:w #1;
+\cs_new_protected:Npn \@@_compile_class_catcode:w #1 \@@_sep:
{
\if_int_compare:w \l_@@_mode_int = \c_@@_catcode_mode_int
\tl_build_put_right:Nn \l_@@_build_tl
@@ -5402,7 +5408,7 @@
% and category from the query. Then unpack the array of active
% threads, and clear it by resetting its length
% (\texttt{max_thread}). This results in a sequence of
-% \cs{@@_use_state_and_submatches:w} \meta{state}|,|\meta{submatch-clist}|;| and
+% \cs{@@_use_state_and_submatches:w} \meta{state}|,|\meta{submatch-clist}\cs{@@_sep:} and
% we consider those states one by one in order. As soon as a thread
% succeeds, exit the step, and, if there are threads to consider at the
% next position, and we have not reached the end of the string,
@@ -5446,7 +5452,7 @@
\g_@@_thread_info_intarray
{ \c_one_int + #1 * (\l_@@_capturing_group_int * 2 + \c_one_int) }
{ (\c_one_int + #1) * (\l_@@_capturing_group_int * 2 + \c_one_int) }
- ;
+ \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -5480,7 +5486,7 @@
% \texttt{curr_state} and \texttt{curr_submatches} and use the
% state if it has not yet been encountered at this step.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_use_state_and_submatches:w #1 , #2 ;
+\cs_new_protected:Npn \@@_use_state_and_submatches:w #1 , #2 \@@_sep:
{
\int_set:Nn \l_@@_curr_state_int {#1}
\if_int_compare:w
@@ -5619,9 +5625,9 @@
\cs_new_protected:Npn \@@_action_submatch:nN #1#2
{
\exp_after:wN \@@_action_submatch_aux:w
- \l_@@_curr_submatches_tl ; {#1} #2
+ \l_@@_curr_submatches_tl \@@_sep: {#1} #2
}
-\cs_new_protected:Npn \@@_action_submatch_aux:w #1 ; #2#3
+\cs_new_protected:Npn \@@_action_submatch_aux:w #1 \@@_sep: #2#3
{
\tl_set:Ne \l_@@_curr_submatches_tl
{
@@ -5778,11 +5784,11 @@
\cs_new:Npn \@@_query_range:nn #1#2
{
\exp_after:wN \@@_query_range_loop: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 \@@_sep:
+ \int_value:w \@@_int_eval:w #2 \@@_sep:
\prg_break_point:
}
-\cs_new:Npn \@@_query_range_loop:ww #1 ; #2 ;
+\cs_new:Npn \@@_query_range_loop:ww #1 \@@_sep: #2 \@@_sep:
{
\if_int_compare:w #1 < #2 \exp_stop_f:
\else:
@@ -5790,7 +5796,7 @@
\fi:
\@@_toks_use:w #1 \exp_stop_f:
\exp_after:wN \@@_query_range_loop:ww
- \int_value:w \@@_int_eval:w #1 + \c_one_int ; #2 ;
+ \int_value:w \@@_int_eval:w #1 + \c_one_int \@@_sep: #2 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -7048,9 +7054,9 @@
{
\@@_tmp:w { }
\exp_after:wN \@@_extract_seq_aux:ww
- \int_value:w \@@_submatch_balance:n {#1} ; #1;
+ \int_value:w \@@_submatch_balance:n {#1} \@@_sep: #1 \@@_sep:
}
-\cs_new:Npn \@@_extract_seq_aux:ww #1; #2;
+\cs_new:Npn \@@_extract_seq_aux:ww #1 \@@_sep: #2 \@@_sep:
{
\if_int_compare:w #1 < \c_zero_int
\prg_replicate:nn {-#1}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3seq.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3seq.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -2491,6 +2491,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}
% {
% \seq_map_indexed_function:NN, \seq_map_indexed_inline:Nn,
@@ -2520,17 +2526,17 @@
\exp_after:wN #2
\int_value:w 1
\exp_after:wN \use_i:nn
- \exp_after:wN ;
+ \exp_after:wN \@@_sep:
#1
\prg_break: \@@_item:n { } \prg_break_point:
}
-\cs_new:Npn \@@_map_indexed:Nw #1#2 ; #3 \@@_item:n #4
+\cs_new:Npn \@@_map_indexed:Nw #1#2 \@@_sep: #3 \@@_item:n #4
{
#3
#1 {#2} {#4}
\exp_after:wN \@@_map_indexed:Nw
\exp_after:wN #1
- \int_value:w \int_eval:w 1 + #2 ;
+ \int_value:w \int_eval:w 1 + #2 \@@_sep:
}
% \end{macrocode}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3skip.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3skip.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1330,6 +1330,12 @@
%
% \subsection{Utilities for dimension calculations}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]{\dim_abs:n}
% \begin{macro}[EXP]{\@@_abs:N}
% \UnitTested
@@ -1351,8 +1357,8 @@
\cs_new:Npn \dim_max:nn #1#2
{
\dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
- \dim_use:N \@@_eval:w #1 \exp_after:wN ;
- \dim_use:N \@@_eval:w #2 ;
+ \dim_use:N \@@_eval:w #1 \exp_after:wN \@@_sep:
+ \dim_use:N \@@_eval:w #2 \@@_sep:
>
\@@_eval_end:
}
@@ -1359,12 +1365,12 @@
\cs_new:Npn \dim_min:nn #1#2
{
\dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
- \dim_use:N \@@_eval:w #1 \exp_after:wN ;
- \dim_use:N \@@_eval:w #2 ;
+ \dim_use:N \@@_eval:w #1 \exp_after:wN \@@_sep:
+ \dim_use:N \@@_eval:w #2 \@@_sep:
<
\@@_eval_end:
}
-\cs_new:Npn \@@_maxmin:wwN #1 ; #2 ; #3
+\cs_new:Npn \@@_maxmin:wwN #1 \@@_sep: #2 \@@_sep: #3
{
\if_dim:w #1 #3 #2 ~
#1
@@ -1614,11 +1620,11 @@
\cs_new:Npn \dim_step_function:nnnN #1#2#3
{
\exp_after:wN \@@_step:wwwN
- \tex_the:D \@@_eval:w #1 \exp_after:wN ;
- \tex_the:D \@@_eval:w #2 \exp_after:wN ;
- \tex_the:D \@@_eval:w #3 ;
+ \tex_the:D \@@_eval:w #1 \exp_after:wN \@@_sep:
+ \tex_the:D \@@_eval:w #2 \exp_after:wN \@@_sep:
+ \tex_the:D \@@_eval:w #3 \@@_sep:
}
-\cs_new:Npn \@@_step:wwwN #1; #2; #3; #4
+\cs_new:Npn \@@_step:wwwN #1 \@@_sep: #2 \@@_sep: #3 \@@_sep: #4
{
\dim_compare:nNnTF {#2} > \c_zero_dim
{ \@@_step:NnnnN > }
@@ -1707,10 +1713,10 @@
\cs_new:Npn \dim_sign:n #1
{
\int_value:w \exp_after:wN \@@_sign:Nw
- \dim_use:N \@@_eval:w #1 \@@_eval_end: ;
+ \dim_use:N \@@_eval:w #1 \@@_eval_end: \@@_sep:
\exp_stop_f:
}
-\cs_new:Npn \@@_sign:Nw #1#2 ;
+\cs_new:Npn \@@_sign:Nw #1#2 \@@_sep:
{
\if_dim:w #1#2 > \c_zero_dim
1
@@ -1840,7 +1846,7 @@
\cs_new:cpn { dim_to_decimal_in_ #1 :n } ##1
{
\exp_after:wN \@@_to_decimal_aux:w
- \int_value:w \@@_eval:w ##1 \@@_eval_end: ; #2 ;
+ \int_value:w \@@_eval:w ##1 \@@_eval_end: \@@_sep: #2 \@@_sep:
}
}
% \end{macrocode}
@@ -1861,8 +1867,8 @@
\group_end:
% \end{macrocode}
% The tokens after \cs{@@_to_decimal_aux:w} shall have the following form:
-% |<number>;<half of delta inverse>;|, where |<number>| represents the
-% input dimension in |sp| unit.
+% |<number>|\cs{@@_sep:}|<half of delta inverse>|\cs{@@_sep:}, where
+% |<number>| represents the input dimension in |sp| unit.
% If |<number>| is positive, then |#1| is its leading digit and |#2|
% (possibly empty) is all the remaining digits;
% If |<number>| is zero, then |#1| is~|0|$_{12}$ and |#2| is empty;
@@ -1871,7 +1877,7 @@
% In all three cases, |#1#2| is the original |<number>|. We can use |#1|
% to decide whether to use the |-1| formula or the |+1| formula.
% \begin{macrocode}
-\cs_new:Npn \@@_to_decimal_aux:w #1#2 ; #3 ;
+\cs_new:Npn \@@_to_decimal_aux:w #1#2 \@@_sep: #3 \@@_sep:
{
\dim_to_decimal:n
{
@@ -1902,27 +1908,27 @@
\cs_new:Npn \dim_to_decimal_in_unit:nn #1#2
{
\exp_after:wN \@@_chk_unit:w
- \int_value:w \@@_eval:w #2 \@@_eval_end: ; {#1}
+ \int_value:w \@@_eval:w #2 \@@_eval_end: \@@_sep: {#1}
}
% \end{macrocode}
% \end{macro}
% \begin{macro}[EXP]{\@@_chk_unit:w}
% The tokens after \cs{@@_chk_unit:w} shall have the following form:
-% |<number2>;{<dimexpr1>}|, where |<number2>| represents |<dimexpr2>| in
-% |sp| unit.
+% |<number2>|\cs{@@_sep:}|{<dimexpr1>}|, where |<number2>| represents
+% |<dimexpr2>| in |sp| unit.
% If |#1| is~|0|$_{12}$, the \enquote{unit} |<dimexpr2>| must also be zero.
% So we throw out a \enquote{division by zero} error message at this point.
% Otherwise, if |#1| is~|-|$_{12}$, we shall negate both |<dimexpr1>| and
% |<dimexpr2>| for later procedures.
% \begin{macrocode}
-\cs_new:Npn \@@_chk_unit:w #1#2;#3
+\cs_new:Npn \@@_chk_unit:w #1#2 \@@_sep: #3
{
\token_if_eq_charcode:NNTF #1 0
{ \msg_expandable_error:nn { dim } { zero-unit } }
{
\exp_after:wN \@@_branch_unit:w
- \int_value:w \if:w #1 - - \fi: \@@_eval:w #3 \exp_after:wN ;
- \int_value:w \if:w #1 - - \fi: #1#2 ;
+ \int_value:w \if:w #1 - - \fi: \@@_eval:w #3 \exp_after:wN \@@_sep:
+ \int_value:w \if:w #1 - - \fi: #1#2 \@@_sep:
}
}
% \end{macrocode}
@@ -1929,7 +1935,8 @@
% \end{macro}
% \begin{macro}[EXP]{\@@_branch_unit:w}
% The tokens after \cs{@@_branch_unit:w} shall have the following form:
-% |<number1>;<number2>;|, where |<number1>| represents |<dimexpr1>| in
+% |<number1>|\cs{@@_sep:}|<number2>|\cs{@@_sep:}, where |<number1>|
+% represents |<dimexpr1>| in
% |sp| unit (whose sign is taken care of) and |<number2>| represents the
% absolute value of |<dimexpr2>| in |sp| unit (which is strictly positive).
%
@@ -1977,14 +1984,14 @@
% represents the \enquote{integer} part, while $0\le R'\le65536$ represents the
% \enquote{fractional} part. (Can $R'=65536$ really happen? Didn't investigate.)
% \begin{macrocode}
-\cs_new:Npn \@@_branch_unit:w #1;#2;
+\cs_new:Npn \@@_branch_unit:w #1 \@@_sep: #2 \@@_sep:
{
\int_compare:nNnTF {#2} > { 65536 }
- { \@@_to_decimal_aux:w #1 ; 32768 / #2 ; }
+ { \@@_to_decimal_aux:w #1 \@@_sep: 32768 / #2 \@@_sep: }
{
\int_compare:nNnTF {#2} = { 65536 }
{ \dim_to_decimal:n { #1sp } }
- { \@@_get_quotient:w #1 ; #2 ; }
+ { \@@_get_quotient:w #1 \@@_sep: #2 \@@_sep: }
}
}
% \end{macrocode}
@@ -2005,9 +2012,9 @@
%
% After \cs{@@_get_quotient:w} has done its job, either we have the
% decimal~|0|, or we have \cs{@@_get_remainder:w} followed by
-% $q$|;|$\lvert X\rvert$|;|$n$|;<sign of X>;|.
+% $q$\cs{@@_sep:}$\lvert X\rvert$\cs{@@_sep:}$n$\cs{@@_sep:}|<sign of X>|\cs{@@_sep:}.
% \begin{macrocode}
-\cs_new:Npn \@@_get_quotient:w #1#2;#3;
+\cs_new:Npn \@@_get_quotient:w #1#2 \@@_sep: #3 \@@_sep:
{
\token_if_eq_charcode:NNTF #1 0
{ 0 }
@@ -2015,13 +2022,13 @@
\token_if_eq_charcode:NNTF #1 -
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_get_remainder:w
- \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } ;
- #2 ; #3 ; - ;
+ \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } \@@_sep:
+ #2 \@@_sep: #3 \@@_sep: - \@@_sep:
}
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_get_remainder:w
- \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } ;
- #1#2 ; #3 ; ;
+ \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } \@@_sep:
+ #1#2 \@@_sep: #3 \@@_sep: \@@_sep:
}
}
}
@@ -2031,13 +2038,13 @@
% \cs{@@_get_remainder:w} does not need to read the sign.
% After finding the remainder~$r$, the number~$\lvert X\rvert$ is no longer
% needed. We should then have \cs{@@_convert_remainder:w} followed by
-% $r$|;|$n$|;|$q$|;<sign of X>;|.
+% $r$\cs{@@_sep:}$n$\cs{@@_sep:}$q$\cs{@@_sep:}|<sign of X>|\cs{@@_sep:}.
% \begin{macrocode}
-\cs_new:Npn \@@_get_remainder:w #1;#2;#3;
+\cs_new:Npn \@@_get_remainder:w #1 \@@_sep: #2 \@@_sep: #3 \@@_sep:
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_convert_remainder:w
- \int_eval:n { #2 - #1 * #3 } ;
- #3 ; #1 ;
+ \int_eval:n { #2 - #1 * #3 } \@@_sep:
+ #3 \@@_sep: #1 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -2044,13 +2051,13 @@
% \begin{macro}[EXP]{\@@_convert_remainder:w}
% This is trivial. We compute $R'=\lfloor65536r/n+\frac{1}{2}\rfloor$,
% then leave \cs{@@_test_candidate:w} followed by
-% $R'$|;|$r$|;|$n$|;|$q$|;<sign of X>;|.
+% $R'$\cs{@@_sep:}$r$\cs{@@_sep:}$n$\cs{@@_sep:}$q$\cs{@@_sep:}|<sign of X>|\cs{@@_sep:}.
% \begin{macrocode}
-\cs_new:Npn \@@_convert_remainder:w #1;#2;
+\cs_new:Npn \@@_convert_remainder:w #1 \@@_sep: #2 \@@_sep:
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_test_candidate:w
- \int_eval:n { #1 * 65536 / #2 } ;
- #1 ; #2 ;
+ \int_eval:n { #1 * 65536 / #2 } \@@_sep:
+ #1 \@@_sep: #2 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -2062,15 +2069,15 @@
% If the result is true, then we've found~$R'$;
% otherwise we add one to~$R'$.
% After this step, $r$ and~$n$ are no longer needed. We should then have
-% \cs{@@_parse_decimal:w} followed by $R'$|;|$q$|;<sign of X>;|.
+% \cs{@@_parse_decimal:w} followed by $R'$\cs{@@_sep:}$q$\cs{@@_sep:}|<sign of X>|\cs{@@_sep:}.
% \begin{macrocode}
-\cs_new:Npn \@@_test_candidate:w #1;#2;#3;
+\cs_new:Npn \@@_test_candidate:w #1 \@@_sep: #2 \@@_sep: #3 \@@_sep:
{
\dim_compare:nNnTF { #2sp } =
{ \dim_to_decimal:n { #1sp } \@@_eval:w #3sp \@@_eval_end: }
- { \@@_parse_decimal:w #1 ; }
+ { \@@_parse_decimal:w #1 \@@_sep: }
{
- \@@_parse_decimal:w \int_eval:n { #1 + 1 } ;
+ \@@_parse_decimal:w \int_eval:n { #1 + 1 } \@@_sep:
}
}
% \end{macrocode}
@@ -2080,15 +2087,15 @@
% result if necessary. These are all done expandably.
% If $0<R'/65536<1$, the integer summation is naturally terminated at the
% decimal point. If $R'/65536=0$ (or~$1$?), the summation is terminated
-% at the semicolon. The auxiliary function \cs{@@_parse_decimal_aux:w}
+% at the \cs{@@_sep:}. The auxiliary function \cs{@@_parse_decimal_aux:w}
% takes care of both cases.
% \begin{macrocode}
-\cs_new:Npn \@@_parse_decimal:w #1;#2;#3;
+\cs_new:Npn \@@_parse_decimal:w #1 \@@_sep: #2 \@@_sep: #3 \@@_sep:
{
\exp_after:wN \@@_parse_decimal_aux:w
- \int_value:w #3 \int_eval:w #2 + \dim_to_decimal:n { #1sp } ;
+ \int_value:w #3 \int_eval:w #2 + \dim_to_decimal:n { #1sp } \@@_sep:
}
-\cs_new:Npn \@@_parse_decimal_aux:w #1 ; {#1}
+\cs_new:Npn \@@_parse_decimal_aux:w #1 \@@_sep: {#1}
% \end{macrocode}
% \end{macro}
%
@@ -2289,6 +2296,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP,pTF]{\skip_if_finite:n}
% \begin{macro}[EXP]{\@@_if_finite:wwNw}
% With \eTeX{}, we have an easy access to the order of infinities of
@@ -2304,10 +2317,10 @@
\prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF }
{
\exp_after:wN \@@_if_finite:wwNw
- \skip_use:N \tex_glueexpr:D ##1 ; \prg_return_false:
- #1 ; \prg_return_true: \s_@@_stop
+ \skip_use:N \tex_glueexpr:D ##1 \@@_sep: \prg_return_false:
+ #1 \@@_sep: \prg_return_true: \s_@@_stop
}
- \cs_new:Npn \@@_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \s_@@_stop {##3}
+ \cs_new:Npn \@@_if_finite:wwNw ##1 #1 ##2 \@@_sep: ##3 ##4 \s_@@_stop {##3}
}
\exp_args:No \@@_tmp:w { \tl_to_str:n { fil } }
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sort.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sort.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -119,6 +119,12 @@
%<@@=sort>
% \end{macrocode}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Variables}
%
% \begin{variable}{\g_@@_internal_seq, \g_@@_internal_tl}
@@ -377,18 +383,18 @@
\group_begin:
\@@_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
\__kernel_tl_gset:Nx \g_@@_internal_tl
- { \@@_tl_toks:w \l_@@_min_int ; }
+ { \@@_tl_toks:w \l_@@_min_int \@@_sep: }
\group_end:
#1 #2 \g_@@_internal_tl
\tl_gclear:N \g_@@_internal_tl
\prg_break_point:
}
-\cs_new:Npn \@@_tl_toks:w #1 ;
+\cs_new:Npn \@@_tl_toks:w #1 \@@_sep:
{
\if_int_compare:w #1 < \l_@@_top_int
{ \tex_the:D \tex_toks:D #1 }
\exp_after:wN \@@_tl_toks:w
- \int_value:w \int_eval:n { #1 + 1 } \exp_after:wN ;
+ \int_value:w \int_eval:n { #1 + 1 } \exp_after:wN \@@_sep:
\fi:
}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str-convert.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str-convert.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1793,7 +1793,7 @@
{ \@@_convert_gmap_internal:N \@@_encode_utf_viii_char:n }
\cs_new:Npn \@@_encode_utf_viii_char:n #1
{
- \@@_encode_utf_viii_loop:wwnnw #1 ; - 1 + 0 * ;
+ \@@_encode_utf_viii_loop:wwnnw #1 \@@_sep: - 1 + 0 * \@@_sep:
{ 128 } { 0 }
{ 32 } { 192 }
{ 16 } { 224 }
@@ -1800,7 +1800,8 @@
{ 8 } { 240 }
\s_@@_stop
}
-\cs_new:Npn \@@_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \s_@@_stop
+\cs_new:Npn \@@_encode_utf_viii_loop:wwnnw
+ #1 \@@_sep: #2 \@@_sep: #3#4 #5 \s_@@_stop
{
\if_int_compare:w #1 < #3 \exp_stop_f:
\@@_output_byte:n { #1 + #4 }
@@ -1807,7 +1808,7 @@
\exp_after:wN \@@_use_none_delimit_by_s_stop:w
\fi:
\exp_after:wN \@@_encode_utf_viii_loop:wwnnw
- \int_value:w \int_div_truncate:nn {#1} {64} ; #1 ;
+ \int_value:w \int_div_truncate:nn {#1} {64} \@@_sep: #1 \@@_sep:
#5 \s_@@_stop
\@@_output_byte:n { #2 - 64 * ( #1 - 2 ) }
}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3str.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1555,6 +1555,12 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]
% {\str_item:Nn, \str_item:cn, \str_item:nn, \str_item_ignore_spaces:nn}
% \begin{macro}[EXP]{\@@_item:nn, \@@_item:w}
@@ -1590,11 +1596,11 @@
\cs_new:Npn \@@_item:nn #1#2
{
\exp_after:wN \@@_item:w
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
- \int_value:w \@@_count:n {#1} ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \@@_sep:
+ \int_value:w \@@_count:n {#1} \@@_sep:
#1 \s_@@_stop
}
-\cs_new:Npn \@@_item:w #1; #2;
+\cs_new:Npn \@@_item:w #1 \@@_sep: #2 \@@_sep:
{
\int_compare:nNnTF {#1} < 0
{
@@ -1603,7 +1609,7 @@
{
\exp_after:wN \@@_use_i_delimit_by_s_stop:nw
\exp:w \exp_after:wN \@@_skip_exp_end:w
- \int_value:w \int_eval:n { #1 + #2 } ;
+ \int_value:w \int_eval:n { #1 + #2 } \@@_sep:
}
}
{
@@ -1611,7 +1617,7 @@
{ \@@_use_none_delimit_by_s_stop:w }
{
\exp_after:wN \@@_use_i_delimit_by_s_stop:nw
- \exp:w \@@_skip_exp_end:w #1 ; { }
+ \exp:w \@@_skip_exp_end:w #1 \@@_sep: { }
}
}
}
@@ -1636,7 +1642,7 @@
% stop the initial expansion with \cs{exp_end:} (see places where
% \cs{@@_skip_exp_end:w} is called).
% \begin{macrocode}
-\cs_new:Npn \@@_skip_exp_end:w #1;
+\cs_new:Npn \@@_skip_exp_end:w #1 \@@_sep:
{
\if_int_compare:w #1 > 8 \exp_stop_f:
\exp_after:wN \@@_skip_loop:wNNNNNNNN
@@ -1644,14 +1650,14 @@
\exp_after:wN \@@_skip_end:w
\int_value:w \int_eval:w
\fi:
- #1 ;
+ #1 \@@_sep:
}
-\cs_new:Npn \@@_skip_loop:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
+\cs_new:Npn \@@_skip_loop:wNNNNNNNN #1 \@@_sep: #2#3#4#5#6#7#8#9
{
\exp_after:wN \@@_skip_exp_end:w
- \int_value:w \int_eval:n { #1 - 8 } ;
+ \int_value:w \int_eval:n { #1 - 8 } \@@_sep:
}
-\cs_new:Npn \@@_skip_end:w #1 ;
+\cs_new:Npn \@@_skip_end:w #1 \@@_sep:
{
\exp_after:wN \@@_skip_end:NNNNNNNN
\if_case:w #1 \exp_stop_f: \or: \or: \or: \or: \or: \or: \or: \or:
@@ -1689,12 +1695,12 @@
\cs_new:Npn \@@_range:nnn #1#2#3
{
\exp_after:wN \@@_range:w
- \int_value:w \@@_count:n {#1} \exp_after:wN ;
- \int_value:w \int_eval:n { (#2) - 1 } \exp_after:wN ;
- \int_value:w \int_eval:n {#3} ;
+ \int_value:w \@@_count:n {#1} \exp_after:wN \@@_sep:
+ \int_value:w \int_eval:n { (#2) - 1 } \exp_after:wN \@@_sep:
+ \int_value:w \int_eval:n {#3} \@@_sep:
#1 \s_@@_stop
}
-\cs_new:Npn \@@_range:w #1; #2; #3;
+\cs_new:Npn \@@_range:w #1 \@@_sep: #2 \@@_sep: #3 \@@_sep:
{
\exp_args:Nf \@@_range:nnw
{ \@@_range_normalize:nn {#2} {#1} }
@@ -1703,8 +1709,8 @@
\cs_new:Npn \@@_range:nnw #1#2
{
\exp_after:wN \@@_collect_delimit_by_q_stop:w
- \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ;
- \exp:w \@@_skip_exp_end:w #1 ;
+ \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN \@@_sep:
+ \exp:w \@@_skip_exp_end:w #1 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -1755,9 +1761,9 @@
% leaving this in the input stream closes the conditional properly
% and the \cs{or:} disappear.
% \begin{macrocode}
-\cs_new:Npn \@@_collect_delimit_by_q_stop:w #1;
- { \@@_collect_loop:wn #1 ; { } }
-\cs_new:Npn \@@_collect_loop:wn #1 ;
+\cs_new:Npn \@@_collect_delimit_by_q_stop:w #1 \@@_sep:
+ { \@@_collect_loop:wn #1 \@@_sep: { } }
+\cs_new:Npn \@@_collect_loop:wn #1 \@@_sep:
{
\if_int_compare:w #1 > 7 \exp_stop_f:
\exp_after:wN \@@_collect_loop:wnNNNNNNN
@@ -1764,15 +1770,15 @@
\else:
\exp_after:wN \@@_collect_end:wn
\fi:
- #1 ;
+ #1 \@@_sep:
}
-\cs_new:Npn \@@_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9
+\cs_new:Npn \@@_collect_loop:wnNNNNNNN #1 \@@_sep: #2 #3#4#5#6#7#8#9
{
\exp_after:wN \@@_collect_loop:wn
- \int_value:w \int_eval:n { #1 - 7 } ;
+ \int_value:w \int_eval:n { #1 - 7 } \@@_sep:
{ #2 #3#4#5#6#7#8#9 }
}
-\cs_new:Npn \@@_collect_end:wn #1 ;
+\cs_new:Npn \@@_collect_end:wn #1 \@@_sep:
{
\exp_after:wN \@@_collect_end:nnnnnnnnw
\if_case:w \if_int_compare:w #1 > \c_zero_int
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sys.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3sys.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-case.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-case.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-map.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-map.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-purify.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text-purify.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3text.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -496,6 +496,12 @@
%
% \subsection{Utilities}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]
% {
% \@@_token_to_explicit:N ,
@@ -601,10 +607,10 @@
\if_catcode:w A #1 11 \else:
\if_catcode:w + #1 12 \else:
4 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- \exp_after:wN ;
+ \exp_after:wN \@@_sep:
\token_to_meaning:N #1 \s_@@_stop
}
-\cs_new:Npn \@@_token_to_explicit_auxi:w #1 ; #2 \s_@@_stop
+\cs_new:Npn \@@_token_to_explicit_auxi:w #1 \@@_sep: #2 \s_@@_stop
{
\char_generate:nn
{
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-analysis.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-analysis.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -292,7 +292,9 @@
% Extracting the character code from the meaning of
% \cs{l_@@_analysis_token}. This has no error checking, and should
% only be assumed to work for begin-group and end-group character
-% tokens. It produces a number in the form |`|\meta{char}.
+% tokens. It produces a number in the form |`|\meta{char}. LuaMeta\TeX{}
+% uses a different format for \tn{meaning}, so there is a little work to
+% do: we extract the Unicode value this contains.
% \begin{macrocode}
\cs_new:Npn \@@_analysis_extract_charcode:
{
@@ -300,6 +302,12 @@
\token_to_meaning:N \l_@@_analysis_token
}
\cs_new:Npn \@@_analysis_extract_charcode_aux:w #1 ~ #2 ~ { ` }
+\bool_lazy_and:nnT
+ { \cs_if_exist_p:N \tex_luatexversion:D }
+ { \int_compare_p:nNn { \int_div_truncate:nn { \tex_luatexversion:D } { 100 } } > 1 }
+ {
+ \cs_gset:Npn \@@_analysis_extract_charcode_aux:w #1 + #2 ~ ' #3 ' {"#2}
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -310,16 +318,17 @@
% Counts the number of spaces in the string representation of its
% second argument, as well as the number of characters following the
% last space in that representation, and feeds the two numbers as
-% semicolon-delimited arguments to the first argument. When this
+% \cs{@@_sep:}-delimited arguments to the first argument. When this
% function is used, the escape character is printable and non-space.
% \begin{macrocode}
-\cs_new:Npn \@@_analysis_cs_space_count:NN #1 #2
+\cs_new:Npe \@@_analysis_cs_space_count:NN #1 #2
{
- \exp_after:wN #1
- \int_value:w \int_eval:w 0
- \exp_after:wN \@@_analysis_cs_space_count:w
- \token_to_str:N #2
- \fi: \@@_analysis_cs_space_count_end:w ; ~ !
+ \exp_not:N \exp_after:wN #1
+ \exp_not:N \int_value:w \exp_not:N \int_eval:w 0
+ \exp_not:N \exp_after:wN \exp_not:N \@@_analysis_cs_space_count:w
+ \exp_not:N \token_to_str:N #2
+ \exp_not:N \fi: \exp_not:N \@@_analysis_cs_space_count_end:w
+ \exp_not:N \@@_sep: \c_space_tl !
}
\cs_new:Npn \@@_analysis_cs_space_count:w #1 ~
{
@@ -327,8 +336,11 @@
+ 1
\@@_analysis_cs_space_count:w
}
-\cs_new:Npn \@@_analysis_cs_space_count_end:w ; #1 \fi: #2 !
- { \exp_after:wN ; \int_value:w \str_count_ignore_spaces:n {#1} ; }
+\cs_new:Npn \@@_analysis_cs_space_count_end:w \@@_sep: #1 \fi: #2 !
+ {
+ \exp_after:wN \@@_sep: \int_value:w
+ \str_count_ignore_spaces:n {#1} \@@_sep:
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -773,7 +785,7 @@
{ \@@_analysis_cs_space_count:NN \@@_analysis_a_cs:ww #1 }
\@@_analysis_a_loop:w
}
-\cs_new_protected:Npn \@@_analysis_a_cs:ww #1; #2;
+\cs_new_protected:Npn \@@_analysis_a_cs:ww #1 \@@_sep: #2 \@@_sep:
{
\if_int_compare:w #1 > \c_zero_int
\tex_skip:D \l_@@_analysis_index_int
@@ -805,14 +817,14 @@
{
\__kernel_tl_gset:Nx \g_@@_analysis_result_tl
{
- \@@_analysis_b_loop:w 0; #1
+ \@@_analysis_b_loop:w 0 \@@_sep: #1
\prg_break_point:
}
}
-\cs_new:Npn \@@_analysis_b_loop:w #1;
+\cs_new:Npn \@@_analysis_b_loop:w #1 \@@_sep:
{
\exp_after:wN \@@_analysis_b_normals:ww
- \int_value:w \tex_skip:D #1 ; #1 ;
+ \int_value:w \tex_skip:D #1 \@@_sep: #1 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -832,14 +844,14 @@
% a macro parameter character or could be \cs{s_@@}
% (which must be hidden behind braces in the result).
% \begin{macrocode}
-\cs_new:Npn \@@_analysis_b_normals:ww #1;
+\cs_new:Npn \@@_analysis_b_normals:ww #1 \@@_sep:
{
\if_int_compare:w #1 = \c_zero_int
\@@_analysis_b_special:w
\fi:
- \@@_analysis_b_normal:wwN #1;
+ \@@_analysis_b_normal:wwN #1 \@@_sep:
}
-\cs_new:Npn \@@_analysis_b_normal:wwN #1; #2; #3
+\cs_new:Npn \@@_analysis_b_normal:wwN #1 \@@_sep: #2 \@@_sep: #3
{
\exp_not:n { \exp_not:n { #3 } } \s_@@
\if_charcode:w
@@ -851,7 +863,7 @@
\else:
\exp_after:wN \@@_analysis_b_cs:Nww
\fi:
- #3 #1; #2;
+ #3 #1 \@@_sep: #2 \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -910,7 +922,8 @@
0 -1 \s_@@
\@@_analysis_cs_space_count:NN \@@_analysis_b_cs_test:ww #1
}
-\cs_new:Npn \@@_analysis_b_cs_test:ww #1 ; #2 ; #3 ; #4 ;
+\cs_new:Npn \@@_analysis_b_cs_test:ww
+ #1 \@@_sep: #2 \@@_sep: #3 \@@_sep: #4 \@@_sep:
{
\exp_after:wN \@@_analysis_b_normals:ww
\int_value:w \int_eval:w
@@ -920,8 +933,8 @@
\tex_skip:D \int_eval:n { #4 + #1 } \exp_stop_f:
\fi:
- #2
- \exp_after:wN ;
- \int_value:w \int_eval:n { #4 + #1 } ;
+ \exp_after:wN \@@_sep:
+ \int_value:w \int_eval:n { #4 + #1 } \@@_sep:
}
% \end{macrocode}
% \end{macro}
@@ -942,7 +955,7 @@
\group_begin:
\char_set_catcode_other:N A
\cs_new:Npn \@@_analysis_b_special:w
- \fi: \@@_analysis_b_normal:wwN 0 ; #1 ;
+ \fi: \@@_analysis_b_normal:wwN 0 \@@_sep: #1 \@@_sep:
{
\fi:
\if_int_compare:w #1 = \l_@@_analysis_index_int
@@ -960,19 +973,23 @@
\else:
\exp_after:wN \@@_analysis_b_special_space:w \int_value:w
\fi:
- \int_eval:n { 1 + #1 } \exp_after:wN ;
+ \int_eval:n { 1 + #1 } \exp_after:wN \@@_sep:
\token_to_str:N
}
\group_end:
-\cs_new:Npn \@@_analysis_b_special_char:wN #1 ; #2
+\cs_new:Npn \@@_analysis_b_special_char:wN #1 \@@_sep: #2
{
\int_value:w `#2 \s_@@
- \@@_analysis_b_loop:w #1 ;
+ \@@_analysis_b_loop:w #1 \@@_sep:
}
-\cs_new:Npn \@@_analysis_b_special_space:w #1 ; ~
+\use:e
{
+ \cs_new:Npn \exp_not:N \@@_analysis_b_special_space:w
+ #1 \exp_not:N \@@_sep: \c_space_tl
+ }
+ {
32 \s_@@
- \@@_analysis_b_loop:w #1 ;
+ \@@_analysis_b_loop:w #1 \@@_sep:
}
% \end{macrocode}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-build.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-build.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl-build.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3tl.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -3797,6 +3797,20 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\__kernel_int_sep:}
+% See comments in the kernel functions file: has to be set up here as this
+% is the first module where it is needed.
+% \begin{macrocode}
+\cs_new_eq:NN \__kernel_int_sep: \tex_right:D
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\tl_range:Nnn, \tl_range:cnn, \tl_range:nnn}
% \begin{macro}
% {
@@ -3818,7 +3832,7 @@
% extra brace group avoids an off-by-one shift). For the braced
% version \cs{@@_range_braced:w} sets up
% \cs{@@_range_collect_braced:w} which stores items one by one in an
-% argument after the semicolon. Depending on the first token of the tail,
+% argument after the \cs{@@_sep:}. Depending on the first token of the tail,
% either just move it (if it is a space) or also decrement the number of
% items left to find. Eventually, the result is a brace group followed by
% the rest of the token list, and \cs{tl_head:f} cleans up and gives the
@@ -3853,19 +3867,19 @@
\exp_after:wN { \exp_after:wN }
\fi:
\exp_after:wN #3
- \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ;
- \exp_after:wN { \exp:w \@@_range_skip:w #1 ; { } #4 }
+ \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN \@@_sep:
+ \exp_after:wN { \exp:w \@@_range_skip:w #1 \@@_sep: { } #4 }
}
-\cs_new:Npn \@@_range_skip:w #1 ; #2
+\cs_new:Npn \@@_range_skip:w #1 \@@_sep: #2
{
\if_int_compare:w #1 > \c_zero_int
\exp_after:wN \@@_range_skip:w
- \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ;
+ \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN \@@_sep:
\else:
\exp_after:wN \exp_end:
\fi:
}
-\cs_new:Npn \@@_range:w #1 ; #2
+\cs_new:Npn \@@_range:w #1 \@@_sep: #2
{
\exp_args:Nf \@@_range_collect:nn
{ \@@_range_skip_spaces:n {#2} } {#1}
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3token.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3token.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
@@ -1512,6 +1512,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_sep:}
+% \begin{macrocode}
+\cs_new_eq:NN \@@_sep: \__kernel_int_sep:
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]{\char_generate:nn}
% \begin{macro}[EXP]{\@@_generate_aux:nn}
% \begin{macro}[EXP]{\@@_generate_aux:nnw, \@@_generate_auxii:nnw}
@@ -1526,8 +1532,8 @@
\cs_new:Npn \char_generate:nn #1#2
{
\exp:w \exp_after:wN \@@_generate_aux:w
- \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 \@@_sep:
+ \int_value:w \int_eval:n {#2} \@@_sep:
}
% \end{macrocode}
% Before doing any actual conversion, first some special case filtering.
@@ -1536,7 +1542,7 @@
% done with macro emulation either, so is treated separately. That
% done, hand off to the engine-dependent part.
% \begin{macrocode}
-\cs_new:Npn \@@_generate_aux:w #1 ; #2 ;
+\cs_new:Npn \@@_generate_aux:w #1 \@@_sep: #2 \@@_sep:
{
\if_int_odd:w 0
\if_int_compare:w #2 < 1 \exp_stop_f: 1 \fi:
Modified: trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3unicode.dtx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/source/latex-dev/l3kernel/l3unicode.dtx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-04-14}
+% \date{Released 2025-04-29}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -78,7 +78,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-04-14}%
+\def\ExplFileDate{2025-04-29}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -4561,6 +4561,8 @@
}
\cs_new:Npn \tl_rand_item:N { \exp_args:No \tl_rand_item:n }
\cs_generate_variant:Nn \tl_rand_item:N { c }
+\cs_new_eq:NN \__kernel_int_sep: \tex_right:D
+\cs_new_eq:NN \__tl_sep: \__kernel_int_sep:
\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn }
\cs_generate_variant:Nn \tl_range:Nnn { c }
\cs_new:Npn \tl_range:nnn { \__tl_range:Nnnn \__tl_range:w }
@@ -4590,19 +4592,19 @@
\exp_after:wN { \exp_after:wN }
\fi:
\exp_after:wN #3
- \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ;
- \exp_after:wN { \exp:w \__tl_range_skip:w #1 ; { } #4 }
+ \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN \__tl_sep:
+ \exp_after:wN { \exp:w \__tl_range_skip:w #1 \__tl_sep: { } #4 }
}
-\cs_new:Npn \__tl_range_skip:w #1 ; #2
+\cs_new:Npn \__tl_range_skip:w #1 \__tl_sep: #2
{
\if_int_compare:w #1 > \c_zero_int
\exp_after:wN \__tl_range_skip:w
- \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ;
+ \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN \__tl_sep:
\else:
\exp_after:wN \exp_end:
\fi:
}
-\cs_new:Npn \__tl_range:w #1 ; #2
+\cs_new:Npn \__tl_range:w #1 \__tl_sep: #2
{
\exp_args:Nf \__tl_range_collect:nn
{ \__tl_range_skip_spaces:n {#2} } {#1}
@@ -5195,6 +5197,7 @@
}
\cs_new:Npn \__str_to_other_fast_end:w #1 * A #2 \s__str_stop {#1}
}
+\cs_new_eq:NN \__str_sep: \__kernel_int_sep:
\cs_new:Npn \str_item:Nn { \exp_args:No \str_item:nn }
\cs_generate_variant:Nn \str_item:Nn { c }
\cs_new:Npn \str_item:nn #1#2
@@ -5210,11 +5213,11 @@
\cs_new:Npn \__str_item:nn #1#2
{
\exp_after:wN \__str_item:w
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
- \int_value:w \__str_count:n {#1} ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \__str_sep:
+ \int_value:w \__str_count:n {#1} \__str_sep:
#1 \s__str_stop
}
-\cs_new:Npn \__str_item:w #1; #2;
+\cs_new:Npn \__str_item:w #1 \__str_sep: #2 \__str_sep:
{
\int_compare:nNnTF {#1} < 0
{
@@ -5223,7 +5226,7 @@
{
\exp_after:wN \__str_use_i_delimit_by_s_stop:nw
\exp:w \exp_after:wN \__str_skip_exp_end:w
- \int_value:w \int_eval:n { #1 + #2 } ;
+ \int_value:w \int_eval:n { #1 + #2 } \__str_sep:
}
}
{
@@ -5231,11 +5234,11 @@
{ \__str_use_none_delimit_by_s_stop:w }
{
\exp_after:wN \__str_use_i_delimit_by_s_stop:nw
- \exp:w \__str_skip_exp_end:w #1 ; { }
+ \exp:w \__str_skip_exp_end:w #1 \__str_sep: { }
}
}
}
-\cs_new:Npn \__str_skip_exp_end:w #1;
+\cs_new:Npn \__str_skip_exp_end:w #1 \__str_sep:
{
\if_int_compare:w #1 > 8 \exp_stop_f:
\exp_after:wN \__str_skip_loop:wNNNNNNNN
@@ -5243,14 +5246,14 @@
\exp_after:wN \__str_skip_end:w
\int_value:w \int_eval:w
\fi:
- #1 ;
+ #1 \__str_sep:
}
-\cs_new:Npn \__str_skip_loop:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
+\cs_new:Npn \__str_skip_loop:wNNNNNNNN #1 \__str_sep: #2#3#4#5#6#7#8#9
{
\exp_after:wN \__str_skip_exp_end:w
- \int_value:w \int_eval:n { #1 - 8 } ;
+ \int_value:w \int_eval:n { #1 - 8 } \__str_sep:
}
-\cs_new:Npn \__str_skip_end:w #1 ;
+\cs_new:Npn \__str_skip_end:w #1 \__str_sep:
{
\exp_after:wN \__str_skip_end:NNNNNNNN
\if_case:w #1 \exp_stop_f: \or: \or: \or: \or: \or: \or: \or: \or:
@@ -5271,12 +5274,12 @@
\cs_new:Npn \__str_range:nnn #1#2#3
{
\exp_after:wN \__str_range:w
- \int_value:w \__str_count:n {#1} \exp_after:wN ;
- \int_value:w \int_eval:n { (#2) - 1 } \exp_after:wN ;
- \int_value:w \int_eval:n {#3} ;
+ \int_value:w \__str_count:n {#1} \exp_after:wN \__str_sep:
+ \int_value:w \int_eval:n { (#2) - 1 } \exp_after:wN \__str_sep:
+ \int_value:w \int_eval:n {#3} \__str_sep:
#1 \s__str_stop
}
-\cs_new:Npn \__str_range:w #1; #2; #3;
+\cs_new:Npn \__str_range:w #1 \__str_sep: #2 \__str_sep: #3 \__str_sep:
{
\exp_args:Nf \__str_range:nnw
{ \__str_range_normalize:nn {#2} {#1} }
@@ -5285,8 +5288,8 @@
\cs_new:Npn \__str_range:nnw #1#2
{
\exp_after:wN \__str_collect_delimit_by_q_stop:w
- \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ;
- \exp:w \__str_skip_exp_end:w #1 ;
+ \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN \__str_sep:
+ \exp:w \__str_skip_exp_end:w #1 \__str_sep:
}
\cs_new:Npn \__str_range_normalize:nn #1#2
{
@@ -5307,9 +5310,9 @@
\fi:
}
}
-\cs_new:Npn \__str_collect_delimit_by_q_stop:w #1;
- { \__str_collect_loop:wn #1 ; { } }
-\cs_new:Npn \__str_collect_loop:wn #1 ;
+\cs_new:Npn \__str_collect_delimit_by_q_stop:w #1 \__str_sep:
+ { \__str_collect_loop:wn #1 \__str_sep: { } }
+\cs_new:Npn \__str_collect_loop:wn #1 \__str_sep:
{
\if_int_compare:w #1 > 7 \exp_stop_f:
\exp_after:wN \__str_collect_loop:wnNNNNNNN
@@ -5316,15 +5319,15 @@
\else:
\exp_after:wN \__str_collect_end:wn
\fi:
- #1 ;
+ #1 \__str_sep:
}
-\cs_new:Npn \__str_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9
+\cs_new:Npn \__str_collect_loop:wnNNNNNNN #1 \__str_sep: #2 #3#4#5#6#7#8#9
{
\exp_after:wN \__str_collect_loop:wn
- \int_value:w \int_eval:n { #1 - 7 } ;
+ \int_value:w \int_eval:n { #1 - 7 } \__str_sep:
{ #2 #3#4#5#6#7#8#9 }
}
-\cs_new:Npn \__str_collect_end:wn #1 ;
+\cs_new:Npn \__str_collect_end:wn #1 \__str_sep:
{
\exp_after:wN \__str_collect_end:nnnnnnnnw
\if_case:w \if_int_compare:w #1 > \c_zero_int
@@ -6229,6 +6232,7 @@
}
\cs_generate_variant:Nn \seq_map_variable:NNn { Nc }
\cs_generate_variant:Nn \seq_map_variable:NNn { c , cc }
+\cs_new_eq:NN \__seq_sep: \__kernel_int_sep:
\cs_new:Npn \seq_map_indexed_function:NN #1#2
{
\__seq_map_indexed:NN #1#2
@@ -6250,17 +6254,17 @@
\exp_after:wN #2
\int_value:w 1
\exp_after:wN \use_i:nn
- \exp_after:wN ;
+ \exp_after:wN \__seq_sep:
#1
\prg_break: \__seq_item:n { } \prg_break_point:
}
-\cs_new:Npn \__seq_map_indexed:Nw #1#2 ; #3 \__seq_item:n #4
+\cs_new:Npn \__seq_map_indexed:Nw #1#2 \__seq_sep: #3 \__seq_item:n #4
{
#3
#1 {#2} {#4}
\exp_after:wN \__seq_map_indexed:Nw
\exp_after:wN #1
- \int_value:w \int_eval:w 1 + #2 ;
+ \int_value:w \int_eval:w 1 + #2 \__seq_sep:
}
\cs_new:Npn \seq_map_pairwise_function:NNN #1#2#3
{ \exp_after:wN \__seq_map_pairwise_function:wNN #2 \s__seq_stop #1 #3 }
@@ -6429,7 +6433,7 @@
\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_eq:NN \__int_sep: \__kernel_int_sep:
\cs_new:Npn \int_sign:n #1
{
\int_value:w \exp_after:wN \__int_sign:Nw
@@ -7278,6 +7282,7 @@
\int_new:N \l__seq_internal_a_int
\int_new:N \l__seq_internal_b_int
%% File: l3flag.dtx
+\cs_new_eq:NN \__flag_sep: \__kernel_int_sep:
\cs_new_protected:Npn \flag_new:N #1
{ \cs_new_protected:Npe #1 { \cs_to_str:N #1 } }
\cs_generate_variant:Nn \flag_new:N { c }
@@ -7285,11 +7290,11 @@
\flag_new:N \l_tmpb_flag
\cs_new_protected:Npn \flag_clear:N #1
{
- \__flag_clear:wN 0 ; #1
+ \__flag_clear:wN 0 \__flag_sep: #1
\prg_break_point:
}
\cs_generate_variant:Nn \flag_clear:N { c }
-\cs_new_protected:Npn \__flag_clear:wN #1 ; #2
+\cs_new_protected:Npn \__flag_clear:wN #1 \__flag_sep: #2
{
\if_cs_exist:w #2 #1 \cs_end: \else:
\prg_break:n
@@ -7296,7 +7301,7 @@
\fi:
\cs_set_eq:cN { #2 #1 } \tex_undefined:D
\exp_after:wN \__flag_clear:wN
- \int_value:w \int_eval:w \c_one_int + #1 ; #2
+ \int_value:w \int_eval:w \c_one_int + #1 \__flag_sep: #2
}
\cs_new_protected:Npn \flag_clear_new:N #1
{ \flag_if_exist:NTF #1 { \flag_clear:N } { \flag_new:N } #1 }
@@ -7324,16 +7329,16 @@
}
\prg_generate_conditional_variant:Nnn \flag_if_raised:N
{ c } { p , T , F , TF }
-\cs_new:Npn \flag_height:N #1 { \__flag_height_loop:wN 0; #1 }
-\cs_new:Npn \__flag_height_loop:wN #1 ; #2
+\cs_new:Npn \flag_height:N #1 { \__flag_height_loop:wN 0 \__flag_sep: #1 }
+\cs_new:Npn \__flag_height_loop:wN #1 \__flag_sep: #2
{
\if_cs_exist:w #2 #1 \cs_end: \else:
\exp_after:wN \__flag_height_end:wN
\fi:
\exp_after:wN \__flag_height_loop:wN
- \int_value:w \int_eval:w \c_one_int + #1 ; #2
+ \int_value:w \int_eval:w \c_one_int + #1 \__flag_sep: #2
}
-\cs_new:Npn \__flag_height_end:wN #1 + #2 ; #3 {#2}
+\cs_new:Npn \__flag_height_end:wN #1 + #2 \__flag_sep: #3 {#2}
\cs_generate_variant:Nn \flag_height:N { c }
\cs_new:Npn \flag_raise:N #1
{ \exp_after:wN \use_none:n \cs:w #1 \flag_height:N #1 \cs_end: }
@@ -9055,13 +9060,14 @@
\cs_generate_variant:Nn \char_set_active_eq:nN { nc }
\cs_generate_variant:Nn \char_gset_active_eq:nN { nc }
\cs_new_eq:NN \__char_int_to_roman:w \tex_romannumeral:D
+\cs_new_eq:NN \__char_sep: \__kernel_int_sep:
\cs_new:Npn \char_generate:nn #1#2
{
\exp:w \exp_after:wN \__char_generate_aux:w
- \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 \__char_sep:
+ \int_value:w \int_eval:n {#2} \__char_sep:
}
-\cs_new:Npn \__char_generate_aux:w #1 ; #2 ;
+\cs_new:Npn \__char_generate_aux:w #1 \__char_sep: #2 \__char_sep:
{
\if_int_odd:w 0
\if_int_compare:w #2 < 1 \exp_stop_f: 1 \fi:
@@ -12047,6 +12053,7 @@
\tl_clear:N \l__iow_indent_tl
\__iow_wrap_chunk:nw { \l_iow_line_count_int }
}
+\cs_new_eq:NN \__iow_sep: \__kernel_int_sep:
\cs_set_protected:Npn \__iow_tmp:w #1#2
{
\cs_new_protected:Npn \__iow_wrap_chunk:nw ##1##2 #2
@@ -12061,9 +12068,9 @@
{
\__iow_wrap_line:nw
{ \l__iow_indent_tl }
- ##1 - \l__iow_indent_int ;
+ ##1 - \l__iow_indent_int \__iow_sep:
}
- { \__iow_wrap_line:nw { } ##1 ; }
+ { \__iow_wrap_line:nw { } ##1 \__iow_sep: }
##2 #1
\__iow_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \s__iow_stop
}
@@ -12079,7 +12086,7 @@
\exp_after:wN \__iow_wrap_line_loop:w
\int_value:w \int_eval:w
}
-\cs_new:Npn \__iow_wrap_line_loop:w #1 ; #2#3#4#5#6#7#8#9
+\cs_new:Npn \__iow_wrap_line_loop:w #1 \__iow_sep: #2#3#4#5#6#7#8#9
{
\if_int_compare:w #1 < 8 \exp_stop_f:
\__iow_wrap_line_aux:Nw #1
@@ -12086,9 +12093,9 @@
\fi:
#2 #3 #4 #5 #6 #7 #8 #9
\exp_after:wN \__iow_wrap_line_loop:w
- \int_value:w \int_eval:w #1 - 8 ;
+ \int_value:w \int_eval:w #1 - 8 \__iow_sep:
}
-\cs_new:Npn \__iow_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 ;
+\cs_new:Npn \__iow_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 \__iow_sep:
{
#2
\exp_after:wN \__iow_wrap_line_end:NnnnnnnnN
@@ -12111,7 +12118,7 @@
\cs_new:Npn \__iow_wrap_line_end:NnnnnnnnN #1#2#3#4#5#6#7#8#9
{
#2 #3 #4 #5 #6 #7 #8
- \use_none:nnnnn \int_eval:w 8 - ; #9
+ \use_none:nnnnn \int_eval:w 8 - \__iow_sep: #9
\token_if_eq_charcode:NNTF \c_space_token #9
{ \__iow_wrap_line_end:nw { } }
{ \if_false: { \fi: } \__iow_wrap_break:w #9 }
@@ -12123,7 +12130,7 @@
\__iow_wrap_next_line:w
}
\cs_new:Npn \__iow_wrap_end_chunk:w
- #1 \int_eval:w #2 - #3 ; #4#5 \s__iow_stop
+ #1 \int_eval:w #2 - #3 \__iow_sep: #4#5 \s__iow_stop
{
\if_false: { \fi: }
\exp_args:Nf \__iow_wrap_next:nw { \int_eval:n { #2 - #4 } }
@@ -12173,7 +12180,7 @@
{
\__iow_wrap_line:nw
{ \l__iow_indent_tl }
- \l__iow_line_target_int - \l__iow_indent_int ;
+ \l__iow_line_target_int - \l__iow_indent_int \__iow_sep:
#1 #2 \s__iow_stop
}
}
@@ -13132,6 +13139,7 @@
}
\cs_generate_variant:Nn \dim_sub:Nn { c }
\cs_generate_variant:Nn \dim_gsub:Nn { c }
+\cs_new_eq:NN \__dim_sep: \__kernel_int_sep:
\cs_new:Npn \dim_abs:n #1
{
\exp_after:wN \__dim_abs:N
@@ -13142,8 +13150,8 @@
\cs_new:Npn \dim_max:nn #1#2
{
\dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN
- \dim_use:N \__dim_eval:w #1 \exp_after:wN ;
- \dim_use:N \__dim_eval:w #2 ;
+ \dim_use:N \__dim_eval:w #1 \exp_after:wN \__dim_sep:
+ \dim_use:N \__dim_eval:w #2 \__dim_sep:
>
\__dim_eval_end:
}
@@ -13150,12 +13158,12 @@
\cs_new:Npn \dim_min:nn #1#2
{
\dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN
- \dim_use:N \__dim_eval:w #1 \exp_after:wN ;
- \dim_use:N \__dim_eval:w #2 ;
+ \dim_use:N \__dim_eval:w #1 \exp_after:wN \__dim_sep:
+ \dim_use:N \__dim_eval:w #2 \__dim_sep:
<
\__dim_eval_end:
}
-\cs_new:Npn \__dim_maxmin:wwN #1 ; #2 ; #3
+\cs_new:Npn \__dim_maxmin:wwN #1 \__dim_sep: #2 \__dim_sep: #3
{
\if_dim:w #1 #3 #2 ~
#1
@@ -13301,11 +13309,11 @@
\cs_new:Npn \dim_step_function:nnnN #1#2#3
{
\exp_after:wN \__dim_step:wwwN
- \tex_the:D \__dim_eval:w #1 \exp_after:wN ;
- \tex_the:D \__dim_eval:w #2 \exp_after:wN ;
- \tex_the:D \__dim_eval:w #3 ;
+ \tex_the:D \__dim_eval:w #1 \exp_after:wN \__dim_sep:
+ \tex_the:D \__dim_eval:w #2 \exp_after:wN \__dim_sep:
+ \tex_the:D \__dim_eval:w #3 \__dim_sep:
}
-\cs_new:Npn \__dim_step:wwwN #1; #2; #3; #4
+\cs_new:Npn \__dim_step:wwwN #1 \__dim_sep: #2 \__dim_sep: #3 \__dim_sep: #4
{
\dim_compare:nNnTF {#2} > \c_zero_dim
{ \__dim_step:NnnnN > }
@@ -13358,10 +13366,10 @@
\cs_new:Npn \dim_sign:n #1
{
\int_value:w \exp_after:wN \__dim_sign:Nw
- \dim_use:N \__dim_eval:w #1 \__dim_eval_end: ;
+ \dim_use:N \__dim_eval:w #1 \__dim_eval_end: \__dim_sep:
\exp_stop_f:
}
-\cs_new:Npn \__dim_sign:Nw #1#2 ;
+\cs_new:Npn \__dim_sign:Nw #1#2 \__dim_sep:
{
\if_dim:w #1#2 > \c_zero_dim
1
@@ -13398,7 +13406,7 @@
\cs_new:cpn { dim_to_decimal_in_ #1 :n } ##1
{
\exp_after:wN \__dim_to_decimal_aux:w
- \int_value:w \__dim_eval:w ##1 \__dim_eval_end: ; #2 ;
+ \int_value:w \__dim_eval:w ##1 \__dim_eval_end: \__dim_sep: #2 \__dim_sep:
}
}
\__dim_tmp:w { in } { 50 / 7227 } % delta = 7227/100
@@ -13409,7 +13417,7 @@
\__dim_tmp:w { dd } { 1157 / 2476 } % delta = 1238/1157
\__dim_tmp:w { cc } { 1157 / 29712 } % delta = 14856/1157
\group_end:
-\cs_new:Npn \__dim_to_decimal_aux:w #1#2 ; #3 ;
+\cs_new:Npn \__dim_to_decimal_aux:w #1#2 \__dim_sep: #3 \__dim_sep:
{
\dim_to_decimal:n
{
@@ -13421,29 +13429,29 @@
\cs_new:Npn \dim_to_decimal_in_unit:nn #1#2
{
\exp_after:wN \__dim_chk_unit:w
- \int_value:w \__dim_eval:w #2 \__dim_eval_end: ; {#1}
+ \int_value:w \__dim_eval:w #2 \__dim_eval_end: \__dim_sep: {#1}
}
-\cs_new:Npn \__dim_chk_unit:w #1#2;#3
+\cs_new:Npn \__dim_chk_unit:w #1#2 \__dim_sep: #3
{
\token_if_eq_charcode:NNTF #1 0
{ \msg_expandable_error:nn { dim } { zero-unit } }
{
\exp_after:wN \__dim_branch_unit:w
- \int_value:w \if:w #1 - - \fi: \__dim_eval:w #3 \exp_after:wN ;
- \int_value:w \if:w #1 - - \fi: #1#2 ;
+ \int_value:w \if:w #1 - - \fi: \__dim_eval:w #3 \exp_after:wN \__dim_sep:
+ \int_value:w \if:w #1 - - \fi: #1#2 \__dim_sep:
}
}
-\cs_new:Npn \__dim_branch_unit:w #1;#2;
+\cs_new:Npn \__dim_branch_unit:w #1 \__dim_sep: #2 \__dim_sep:
{
\int_compare:nNnTF {#2} > { 65536 }
- { \__dim_to_decimal_aux:w #1 ; 32768 / #2 ; }
+ { \__dim_to_decimal_aux:w #1 \__dim_sep: 32768 / #2 \__dim_sep: }
{
\int_compare:nNnTF {#2} = { 65536 }
{ \dim_to_decimal:n { #1sp } }
- { \__dim_get_quotient:w #1 ; #2 ; }
+ { \__dim_get_quotient:w #1 \__dim_sep: #2 \__dim_sep: }
}
}
-\cs_new:Npn \__dim_get_quotient:w #1#2;#3;
+\cs_new:Npn \__dim_get_quotient:w #1#2 \__dim_sep: #3 \__dim_sep:
{
\token_if_eq_charcode:NNTF #1 0
{ 0 }
@@ -13451,43 +13459,43 @@
\token_if_eq_charcode:NNTF #1 -
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } ;
- #2 ; #3 ; - ;
+ \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } \__dim_sep:
+ #2 \__dim_sep: #3 \__dim_sep: - \__dim_sep:
}
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } ;
- #1#2 ; #3 ; ;
+ \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } \__dim_sep:
+ #1#2 \__dim_sep: #3 \__dim_sep: \__dim_sep:
}
}
}
-\cs_new:Npn \__dim_get_remainder:w #1;#2;#3;
+\cs_new:Npn \__dim_get_remainder:w #1 \__dim_sep: #2 \__dim_sep: #3 \__dim_sep:
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_convert_remainder:w
- \int_eval:n { #2 - #1 * #3 } ;
- #3 ; #1 ;
+ \int_eval:n { #2 - #1 * #3 } \__dim_sep:
+ #3 \__dim_sep: #1 \__dim_sep:
}
-\cs_new:Npn \__dim_convert_remainder:w #1;#2;
+\cs_new:Npn \__dim_convert_remainder:w #1 \__dim_sep: #2 \__dim_sep:
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_test_candidate:w
- \int_eval:n { #1 * 65536 / #2 } ;
- #1 ; #2 ;
+ \int_eval:n { #1 * 65536 / #2 } \__dim_sep:
+ #1 \__dim_sep: #2 \__dim_sep:
}
-\cs_new:Npn \__dim_test_candidate:w #1;#2;#3;
+\cs_new:Npn \__dim_test_candidate:w #1 \__dim_sep: #2 \__dim_sep: #3 \__dim_sep:
{
\dim_compare:nNnTF { #2sp } =
{ \dim_to_decimal:n { #1sp } \__dim_eval:w #3sp \__dim_eval_end: }
- { \__dim_parse_decimal:w #1 ; }
+ { \__dim_parse_decimal:w #1 \__dim_sep: }
{
- \__dim_parse_decimal:w \int_eval:n { #1 + 1 } ;
+ \__dim_parse_decimal:w \int_eval:n { #1 + 1 } \__dim_sep:
}
}
-\cs_new:Npn \__dim_parse_decimal:w #1;#2;#3;
+\cs_new:Npn \__dim_parse_decimal:w #1 \__dim_sep: #2 \__dim_sep: #3 \__dim_sep:
{
\exp_after:wN \__dim_parse_decimal_aux:w
- \int_value:w #3 \int_eval:w #2 + \dim_to_decimal:n { #1sp } ;
+ \int_value:w #3 \int_eval:w #2 + \dim_to_decimal:n { #1sp } \__dim_sep:
}
-\cs_new:Npn \__dim_parse_decimal_aux:w #1 ; {#1}
+\cs_new:Npn \__dim_parse_decimal_aux:w #1 \__dim_sep: {#1}
\cs_new_eq:NN \dim_show:N \__kernel_register_show:N
\cs_generate_variant:Nn \dim_show:N { c }
\cs_new_protected:Npn \dim_show:n
@@ -13557,15 +13565,16 @@
{ \prg_return_true: }
{ \prg_return_false: }
}
+\cs_new_eq:NN \__skip_sep: \__kernel_int_sep:
\cs_set_protected:Npn \__skip_tmp:w #1
{
\prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF }
{
\exp_after:wN \__skip_if_finite:wwNw
- \skip_use:N \tex_glueexpr:D ##1 ; \prg_return_false:
- #1 ; \prg_return_true: \s__skip_stop
+ \skip_use:N \tex_glueexpr:D ##1 \__skip_sep: \prg_return_false:
+ #1 \__skip_sep: \prg_return_true: \s__skip_stop
}
- \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \s__skip_stop {##3}
+ \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 \__skip_sep: ##3 ##4 \s__skip_stop {##3}
}
\exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } }
\cs_new:Npn \skip_eval:n #1
@@ -15163,6 +15172,7 @@
%% File: l3intarray.dtx
\msg_new:nnn { kernel } { negative-array-size }
{ Size~of~array~may~not~be~negative:~#1 }
+\cs_new_eq:NN \__intarray_sep: \__kernel_int_sep:
\int_new:N \l__intarray_loop_int
\cs_if_exist:NTF \__intarray_gset_count:Nw
{
@@ -15291,11 +15301,11 @@
{
\exp_after:wN \__intarray_gset:Nww
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
- \int_value:w \int_eval:n {#3} ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \__intarray_sep:
+ \int_value:w \int_eval:n {#3} \__intarray_sep:
}
\cs_generate_variant:Nn \intarray_gset:Nnn { c }
- \cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
+ \cs_new_protected:Npn \__intarray_gset:Nww #1#2 \__intarray_sep: #3 \__intarray_sep:
{
\__intarray_bounds:NNnTF \msg_error:nneee #1 {#2}
{
@@ -15343,10 +15353,10 @@
{
\exp_after:wN \__intarray_item:Nw
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \__intarray_sep:
}
\cs_generate_variant:Nn \intarray_item:Nn { c }
- \cs_new:Npn \__intarray_item:Nw #1#2 ;
+ \cs_new:Npn \__intarray_item:Nw #1#2 \__intarray_sep:
{
\__intarray_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
{ \__kernel_intarray_item:Nn #1 {#2} }
@@ -15375,10 +15385,10 @@
\int_compare:nNnF { \intarray_count:N #1 } = \c_zero_int
{
\exp_last_unbraced:Nf \use_none:n
- { \__intarray_to_clist:w 1 ; #1 {#2} \prg_break_point: }
+ { \__intarray_to_clist:w 1 \__intarray_sep: #1 {#2} \prg_break_point: }
}
}
- \cs_new:Npn \__intarray_to_clist:w #1 ; #2#3
+ \cs_new:Npn \__intarray_to_clist:w #1 \__intarray_sep: #2#3
{
\if_int_compare:w #1 > \__intarray_count:w #2
\prg_break:n
@@ -15385,7 +15395,7 @@
\fi:
#3 \__kernel_intarray_item:Nn #2 {#1}
\exp_after:wN \__intarray_to_clist:w
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 {#3}
+ \int_value:w \int_eval:w #1 + \c_one_int \__intarray_sep: #2 {#3}
}
\cs_new:Npn \__kernel_intarray_range_to_clist:Nnn #1#2#3
{
@@ -15392,12 +15402,12 @@
\exp_last_unbraced:Nf \use_none:n
{
\exp_after:wN \__intarray_range_to_clist:ww
- \int_value:w \int_eval:w #2 \exp_after:wN ;
- \int_value:w \int_eval:w #3 ;
+ \int_value:w \int_eval:w #2 \exp_after:wN \__intarray_sep:
+ \int_value:w \int_eval:w #3 \__intarray_sep:
#1 \prg_break_point:
}
}
- \cs_new:Npn \__intarray_range_to_clist:ww #1 ; #2 ; #3
+ \cs_new:Npn \__intarray_range_to_clist:ww #1 \__intarray_sep: #2 \__intarray_sep: #3
{
\if_int_compare:w #1 > #2 \exp_stop_f:
\prg_break:n
@@ -15404,7 +15414,7 @@
\fi:
, \__kernel_intarray_item:Nn #3 {#1}
\exp_after:wN \__intarray_range_to_clist:ww
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 ; #3
+ \int_value:w \int_eval:w #1 + \c_one_int \__intarray_sep: #2 \__intarray_sep: #3
}
\cs_new_protected:Npn \__kernel_intarray_gset_range_from_clist:Nnn #1#2#3
{
@@ -15445,7 +15455,7 @@
\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_eq:NN \__fp_sep: \__kernel_int_sep:
\cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: }
\cs_new:Npn \__fp_use_s:n #1 { #1\__fp_sep: }
\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2\__fp_sep: }
@@ -15976,6 +15986,17 @@
\cs_new:Npn \__fp_error:nnnn
{ \msg_expandable_error:nnnnn { fp } }
\cs_generate_variant:Nn \__fp_error:nnnn { nnf, nff , nfff }
+\cs_new:Npn \__fp_error_num_args:nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF {#2} = {#3}
+ { \msg_expandable_error:nnnnn { fp } { num-args-eq } {#1} {#2} {#4} }
+ { \msg_expandable_error:nnnnnn { fp } { num-args } {#1} {#2} {#3} {#4} }
+ }
+\cs_generate_variant:Nn \__fp_error_num_args:nnnn { ffff }
+\msg_new:nnn { fp } { num-args-eq }
+ { #1()~needs~#2~arguments,~got~#3. }
+\msg_new:nnn { fp } { num-args }
+ { #1()~needs~#2~to~#3~arguments,~got~#4. }
\msg_new:nnnn { fp } { unknown-fpu-exception }
{
The~FPU~exception~'#1'~is~not~known:~
@@ -16169,10 +16190,10 @@
\cs_new:Npn \__fp_round_no_arg_o:Nw #1
{
\cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN
- { \__fp_error:nnnn { num-args } { round () } { 1 } { 3 } }
+ { \__fp_error_num_args:nnnn { round } { 1 } { 3 } { 0 } }
{
- \__fp_error:nffn { num-args }
- { \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \__fp_error_num_args:ffff
+ { \__fp_round_name_from_cs:N #1 } { 1 } { 2 } { 0 }
}
\exp_after:wN \c_nan_fp
}
@@ -16193,13 +16214,15 @@
#2 \__fp_sep: #3 \__fp_sep:
}
{
- \__fp_error:nnnn { num-args } { round () } { 1 } { 3 }
+ \__fp_error_num_args:ffff { round } { 1 } { 3 }
+ { \int_eval:n { 3 + \__fp_array_count:n {#7} } }
\exp_after:wN \c_nan_fp
}
}
{
- \__fp_error:nffn { num-args }
- { \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \__fp_error_num_args:ffff
+ { \__fp_round_name_from_cs:N #1 } { 1 } { 2 }
+ { \int_eval:n { 3 + \__fp_array_count:n {#7} } }
\exp_after:wN \c_nan_fp
}
}
@@ -16320,7 +16343,7 @@
\int_const:Nn \c__fp_prec_tuple_int { 1 }
\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
+\cs_new:Npn \__fp_parse_return_sep:w
#1 \fi: \__fp_parse_expand:w { \fi: \__fp_sep: #1 }
\cs_set_protected:Npn \__fp_tmp:w #1 #2 #3
{
@@ -16329,7 +16352,7 @@
\if_int_compare:w 9 < 1 \token_to_str:N ##1 \exp_stop_f:
\token_to_str:N ##1 \exp_after:wN #2 \exp:w
\else:
- \__fp_parse_return_semicolon:w #3 ##1
+ \__fp_parse_return_sep:w #3 ##1
\fi:
\__fp_parse_expand:w
}
@@ -16560,7 +16583,7 @@
\exp:w \exp_after:wN \__fp_parse_letters:N
\exp:w
\else:
- \__fp_parse_return_semicolon:w #1
+ \__fp_parse_return_sep:w #1
\fi:
\__fp_parse_expand:w
}
@@ -16768,7 +16791,7 @@
\exp:w
\fi:
\else:
- \__fp_parse_return_semicolon:w 0 #1
+ \__fp_parse_return_sep:w 0 #1
\fi:
\__fp_parse_expand:w
}
@@ -16779,7 +16802,7 @@
\exp_after:wN \__fp_parse_round_up:N
\exp:w
\else:
- \__fp_parse_return_semicolon:w 1 #1
+ \__fp_parse_return_sep:w 1 #1
\fi:
\__fp_parse_expand:w
}
@@ -16862,7 +16885,7 @@
\exp_after:wN #1
\exp:w
\else:
- 0 \__fp_parse_return_semicolon:w #1
+ 0 \__fp_parse_return_sep:w #1
\fi:
\__fp_parse_expand:w
}
@@ -16894,7 +16917,7 @@
\exp:w
\else:
\__fp_parse_exponent_keep:NTF #1
- { \__fp_parse_return_semicolon:w #1 }
+ { \__fp_parse_return_sep:w #1 }
{
\exp_after:wN \__fp_sep:
\exp:w
@@ -16909,7 +16932,7 @@
\exp_after:wN \__fp_parse_exponent_digits:N
\exp:w
\else:
- \__fp_parse_return_semicolon:w #1
+ \__fp_parse_return_sep:w #1
\fi:
\__fp_parse_expand:w
}
@@ -17648,8 +17671,6 @@
{ #1~got~no~argument;~used~nan. }
\msg_new:nnn { fp } { multi-arg }
{ #1~got~more~than~one~argument;~used~nan. }
-\msg_new:nnn { fp } { num-args }
- { #1~expects~between~#2~and~#3~arguments. }
\msg_new:nnn { fp } { bad-args }
{ Arguments~in~#1#2~are~invalid. }
\msg_new:nnn { fp } { infty-pi }
@@ -21520,8 +21541,8 @@
\__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } \__fp_sep: 0
}
{
- \msg_expandable_error:nnnnn
- { fp } { num-args } { rand() } { 0 } { 0 }
+ \__fp_error_num_args:ffff { rand } { 0 } { 0 }
+ { \__fp_array_count:n {#1} }
\exp_after:wN \c_nan_fp
}
}
@@ -21881,7 +21902,7 @@
{ __fp _#2_symbolic_o:ww }
{ __fp_symbolic_#2_symbolic_o:ww }
}
-\tl_map_inline:nn { + - * / ^ & | }
+\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\__fp_sep: @
{
@@ -23098,6 +23119,7 @@
\prop_gput:Nnn \g_msg_module_name_prop { cctab } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { cctab } { }
%% File l3sort.dtx
+\cs_new_eq:NN \__sort_sep: \__kernel_int_sep:
\seq_new:N \g__sort_internal_seq
\tl_new:N \g__sort_internal_tl
\int_new:N \l__sort_length_int
@@ -23212,18 +23234,18 @@
\group_begin:
\__sort_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
\__kernel_tl_gset:Nx \g__sort_internal_tl
- { \__sort_tl_toks:w \l__sort_min_int ; }
+ { \__sort_tl_toks:w \l__sort_min_int \__sort_sep: }
\group_end:
#1 #2 \g__sort_internal_tl
\tl_gclear:N \g__sort_internal_tl
\prg_break_point:
}
-\cs_new:Npn \__sort_tl_toks:w #1 ;
+\cs_new:Npn \__sort_tl_toks:w #1 \__sort_sep:
{
\if_int_compare:w #1 < \l__sort_top_int
{ \tex_the:D \tex_toks:D #1 }
\exp_after:wN \__sort_tl_toks:w
- \int_value:w \int_eval:n { #1 + 1 } \exp_after:wN ;
+ \int_value:w \int_eval:n { #1 + 1 } \exp_after:wN \__sort_sep:
\fi:
}
\cs_new_protected:Npn \seq_sort:Nn
@@ -24333,7 +24355,7 @@
{ \__str_convert_gmap_internal:N \__str_encode_utf_viii_char:n }
\cs_new:Npn \__str_encode_utf_viii_char:n #1
{
- \__str_encode_utf_viii_loop:wwnnw #1 ; - 1 + 0 * ;
+ \__str_encode_utf_viii_loop:wwnnw #1 \__str_sep: - 1 + 0 * \__str_sep:
{ 128 } { 0 }
{ 32 } { 192 }
{ 16 } { 224 }
@@ -24340,7 +24362,8 @@
{ 8 } { 240 }
\s__str_stop
}
-\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \s__str_stop
+\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw
+ #1 \__str_sep: #2 \__str_sep: #3#4 #5 \s__str_stop
{
\if_int_compare:w #1 < #3 \exp_stop_f:
\__str_output_byte:n { #1 + #4 }
@@ -24347,7 +24370,7 @@
\exp_after:wN \__str_use_none_delimit_by_s_stop:w
\fi:
\exp_after:wN \__str_encode_utf_viii_loop:wwnnw
- \int_value:w \int_div_truncate:nn {#1} {64} ; #1 ;
+ \int_value:w \int_div_truncate:nn {#1} {64} \__str_sep: #1 \__str_sep:
#5 \s__str_stop
\__str_output_byte:n { #2 - 64 * ( #1 - 2 ) }
}
@@ -24876,14 +24899,21 @@
\token_to_meaning:N \l__tl_analysis_token
}
\cs_new:Npn \__tl_analysis_extract_charcode_aux:w #1 ~ #2 ~ { ` }
-\cs_new:Npn \__tl_analysis_cs_space_count:NN #1 #2
+\bool_lazy_and:nnT
+ { \cs_if_exist_p:N \tex_luatexversion:D }
+ { \int_compare_p:nNn { \int_div_truncate:nn { \tex_luatexversion:D } { 100 } } > 1 }
{
- \exp_after:wN #1
- \int_value:w \int_eval:w 0
- \exp_after:wN \__tl_analysis_cs_space_count:w
- \token_to_str:N #2
- \fi: \__tl_analysis_cs_space_count_end:w ; ~ !
+ \cs_gset:Npn \__tl_analysis_extract_charcode_aux:w #1 + #2 ~ ' #3 ' {"#2}
}
+\cs_new:Npe \__tl_analysis_cs_space_count:NN #1 #2
+ {
+ \exp_not:N \exp_after:wN #1
+ \exp_not:N \int_value:w \exp_not:N \int_eval:w 0
+ \exp_not:N \exp_after:wN \exp_not:N \__tl_analysis_cs_space_count:w
+ \exp_not:N \token_to_str:N #2
+ \exp_not:N \fi: \exp_not:N \__tl_analysis_cs_space_count_end:w
+ \exp_not:N \__tl_sep: \c_space_tl !
+ }
\cs_new:Npn \__tl_analysis_cs_space_count:w #1 ~
{
\if_false: #1 #1 \fi:
@@ -24890,8 +24920,11 @@
+ 1
\__tl_analysis_cs_space_count:w
}
-\cs_new:Npn \__tl_analysis_cs_space_count_end:w ; #1 \fi: #2 !
- { \exp_after:wN ; \int_value:w \str_count_ignore_spaces:n {#1} ; }
+\cs_new:Npn \__tl_analysis_cs_space_count_end:w \__tl_sep: #1 \fi: #2 !
+ {
+ \exp_after:wN \__tl_sep: \int_value:w
+ \str_count_ignore_spaces:n {#1} \__tl_sep:
+ }
\cs_new_protected:Npn \__tl_analysis:n #1
{
\group_begin:
@@ -25072,7 +25105,7 @@
{ \__tl_analysis_cs_space_count:NN \__tl_analysis_a_cs:ww #1 }
\__tl_analysis_a_loop:w
}
-\cs_new_protected:Npn \__tl_analysis_a_cs:ww #1; #2;
+\cs_new_protected:Npn \__tl_analysis_a_cs:ww #1 \__tl_sep: #2 \__tl_sep:
{
\if_int_compare:w #1 > \c_zero_int
\tex_skip:D \l__tl_analysis_index_int
@@ -25087,23 +25120,23 @@
{
\__kernel_tl_gset:Nx \g__tl_analysis_result_tl
{
- \__tl_analysis_b_loop:w 0; #1
+ \__tl_analysis_b_loop:w 0 \__tl_sep: #1
\prg_break_point:
}
}
-\cs_new:Npn \__tl_analysis_b_loop:w #1;
+\cs_new:Npn \__tl_analysis_b_loop:w #1 \__tl_sep:
{
\exp_after:wN \__tl_analysis_b_normals:ww
- \int_value:w \tex_skip:D #1 ; #1 ;
+ \int_value:w \tex_skip:D #1 \__tl_sep: #1 \__tl_sep:
}
-\cs_new:Npn \__tl_analysis_b_normals:ww #1;
+\cs_new:Npn \__tl_analysis_b_normals:ww #1 \__tl_sep:
{
\if_int_compare:w #1 = \c_zero_int
\__tl_analysis_b_special:w
\fi:
- \__tl_analysis_b_normal:wwN #1;
+ \__tl_analysis_b_normal:wwN #1 \__tl_sep:
}
-\cs_new:Npn \__tl_analysis_b_normal:wwN #1; #2; #3
+\cs_new:Npn \__tl_analysis_b_normal:wwN #1 \__tl_sep: #2 \__tl_sep: #3
{
\exp_not:n { \exp_not:n { #3 } } \s__tl
\if_charcode:w
@@ -25115,7 +25148,7 @@
\else:
\exp_after:wN \__tl_analysis_b_cs:Nww
\fi:
- #3 #1; #2;
+ #3 #1 \__tl_sep: #2 \__tl_sep:
}
\cs_new:Npe \__tl_analysis_b_char:Nn #1#2
{
@@ -25150,7 +25183,8 @@
0 -1 \s__tl
\__tl_analysis_cs_space_count:NN \__tl_analysis_b_cs_test:ww #1
}
-\cs_new:Npn \__tl_analysis_b_cs_test:ww #1 ; #2 ; #3 ; #4 ;
+\cs_new:Npn \__tl_analysis_b_cs_test:ww
+ #1 \__tl_sep: #2 \__tl_sep: #3 \__tl_sep: #4 \__tl_sep:
{
\exp_after:wN \__tl_analysis_b_normals:ww
\int_value:w \int_eval:w
@@ -25160,13 +25194,13 @@
\tex_skip:D \int_eval:n { #4 + #1 } \exp_stop_f:
\fi:
- #2
- \exp_after:wN ;
- \int_value:w \int_eval:n { #4 + #1 } ;
+ \exp_after:wN \__tl_sep:
+ \int_value:w \int_eval:n { #4 + #1 } \__tl_sep:
}
\group_begin:
\char_set_catcode_other:N A
\cs_new:Npn \__tl_analysis_b_special:w
- \fi: \__tl_analysis_b_normal:wwN 0 ; #1 ;
+ \fi: \__tl_analysis_b_normal:wwN 0 \__tl_sep: #1 \__tl_sep:
{
\fi:
\if_int_compare:w #1 = \l__tl_analysis_index_int
@@ -25184,19 +25218,23 @@
\else:
\exp_after:wN \__tl_analysis_b_special_space:w \int_value:w
\fi:
- \int_eval:n { 1 + #1 } \exp_after:wN ;
+ \int_eval:n { 1 + #1 } \exp_after:wN \__tl_sep:
\token_to_str:N
}
\group_end:
-\cs_new:Npn \__tl_analysis_b_special_char:wN #1 ; #2
+\cs_new:Npn \__tl_analysis_b_special_char:wN #1 \__tl_sep: #2
{
\int_value:w `#2 \s__tl
- \__tl_analysis_b_loop:w #1 ;
+ \__tl_analysis_b_loop:w #1 \__tl_sep:
}
-\cs_new:Npn \__tl_analysis_b_special_space:w #1 ; ~
+\use:e
{
+ \cs_new:Npn \exp_not:N \__tl_analysis_b_special_space:w
+ #1 \exp_not:N \__tl_sep: \c_space_tl
+ }
+ {
32 \s__tl
- \__tl_analysis_b_loop:w #1 ;
+ \__tl_analysis_b_loop:w #1 \__tl_sep:
}
\cs_new_protected:Npn \tl_analysis_map_inline:Nn #1
{ \exp_args:No \tl_analysis_map_inline:nn #1 }
@@ -25782,6 +25820,7 @@
}
%% File: l3regex.dtx
\cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D
+\cs_new_eq:NN \__regex_sep: \__kernel_int_sep:
\cs_new_protected:Npn \__regex_standard_escapechar:
{ \int_set:Nn \tex_escapechar:D { `\\ } }
\cs_new:Npn \__regex_toks_use:w { \tex_the:D \tex_toks:D }
@@ -26131,7 +26170,7 @@
\exp_after:wN \__regex_escape_x_end:w
\int_value:w "0 \__regex_escape_x_test:N
}
-\cs_new:Npn \__regex_escape_x_end:w #1 ;
+\cs_new:Npn \__regex_escape_x_end:w #1 \__regex_sep:
{
\int_compare:nNnTF {#1} > \c_max_char_int
{
@@ -26146,7 +26185,7 @@
\cs_new:Npn \__regex_escape_x_test:N #1
{
\if_meaning:w \scan_stop: #1
- \exp_after:wN \use_i:nnn \exp_after:wN ;
+ \exp_after:wN \use_i:nnn \exp_after:wN \__regex_sep:
\fi:
\use:n
{
@@ -26165,19 +26204,19 @@
\else:
\__regex_hexadecimal_use:NTF #1
{ \exp_after:wN \__regex_escape_x:N }
- { ; \exp_after:wN \__regex_escape_loop:N \exp_after:wN #1 }
+ { \__regex_sep: \exp_after:wN \__regex_escape_loop:N \exp_after:wN #1 }
\fi:
}
\cs_new:Npn \__regex_escape_x:N #1
{
\if_meaning:w \scan_stop: #1
- \exp_after:wN \use_i:nnn \exp_after:wN ;
+ \exp_after:wN \use_i:nnn \exp_after:wN \__regex_sep:
\fi:
\use:n
{
\__regex_hexadecimal_use:NTF #1
- { ; \__regex_escape_loop:N }
- { ; \__regex_escape_loop:N #1 }
+ { \__regex_sep: \__regex_escape_loop:N }
+ { \__regex_sep: \__regex_escape_loop:N #1 }
}
}
\cs_new:Npn \__regex_escape_x_loop:N #1
@@ -26186,7 +26225,7 @@
\exp_after:wN \use_ii:nnn
\fi:
\use_ii:nn
- { ; \__regex_escape_x_loop_error:n { } {#1} }
+ { \__regex_sep: \__regex_escape_x_loop_error:n { } {#1} }
{
\__regex_hexadecimal_use:NTF #1
{ \__regex_escape_x_loop:N }
@@ -26194,7 +26233,7 @@
\token_if_eq_charcode:NNTF \c_space_token #1
{ \__regex_escape_x_loop:N }
{
- ;
+ \__regex_sep:
\exp_after:wN
\token_if_eq_charcode:NNTF \c_right_brace_str #1
{ \__regex_escape_loop:N }
@@ -26795,7 +26834,7 @@
\__regex_if_within_catcode:TF
{
\exp_after:wN \__regex_compile_class_catcode:w
- \int_use:N \l__regex_catcodes_int ;
+ \int_use:N \l__regex_catcodes_int \__regex_sep:
}
{ \__regex_compile_class_normal:w }
}
@@ -26806,7 +26845,7 @@
{ \__regex_class:NnnnN \c_true_bool }
{ \__regex_class:NnnnN \c_false_bool }
}
-\cs_new_protected:Npn \__regex_compile_class_catcode:w #1;
+\cs_new_protected:Npn \__regex_compile_class_catcode:w #1 \__regex_sep:
{
\if_int_compare:w \l__regex_mode_int = \c__regex_catcode_mode_int
\tl_build_put_right:Nn \l__regex_build_tl
@@ -28212,7 +28251,7 @@
\g__regex_thread_info_intarray
{ \c_one_int + #1 * (\l__regex_capturing_group_int * 2 + \c_one_int) }
{ (\c_one_int + #1) * (\l__regex_capturing_group_int * 2 + \c_one_int) }
- ;
+ \__regex_sep:
}
\cs_new_protected:Npn \__regex_use_state:
{
@@ -28223,7 +28262,7 @@
\l__regex_curr_state_int
{ \__regex_int_eval:w \l__regex_step_int + \c_one_int \scan_stop: }
}
-\cs_new_protected:Npn \__regex_use_state_and_submatches:w #1 , #2 ;
+\cs_new_protected:Npn \__regex_use_state_and_submatches:w #1 , #2 \__regex_sep:
{
\int_set:Nn \l__regex_curr_state_int {#1}
\if_int_compare:w
@@ -28296,9 +28335,9 @@
\cs_new_protected:Npn \__regex_action_submatch:nN #1#2
{
\exp_after:wN \__regex_action_submatch_aux:w
- \l__regex_curr_submatches_tl ; {#1} #2
+ \l__regex_curr_submatches_tl \__regex_sep: {#1} #2
}
-\cs_new_protected:Npn \__regex_action_submatch_aux:w #1 ; #2#3
+\cs_new_protected:Npn \__regex_action_submatch_aux:w #1 \__regex_sep: #2#3
{
\tl_set:Ne \l__regex_curr_submatches_tl
{
@@ -28346,11 +28385,11 @@
\cs_new:Npn \__regex_query_range:nn #1#2
{
\exp_after:wN \__regex_query_range_loop:ww
- \int_value:w \__regex_int_eval:w #1 \exp_after:wN ;
- \int_value:w \__regex_int_eval:w #2 ;
+ \int_value:w \__regex_int_eval:w #1 \exp_after:wN \__regex_sep:
+ \int_value:w \__regex_int_eval:w #2 \__regex_sep:
\prg_break_point:
}
-\cs_new:Npn \__regex_query_range_loop:ww #1 ; #2 ;
+\cs_new:Npn \__regex_query_range_loop:ww #1 \__regex_sep: #2 \__regex_sep:
{
\if_int_compare:w #1 < #2 \exp_stop_f:
\else:
@@ -28358,7 +28397,7 @@
\fi:
\__regex_toks_use:w #1 \exp_stop_f:
\exp_after:wN \__regex_query_range_loop:ww
- \int_value:w \__regex_int_eval:w #1 + \c_one_int ; #2 ;
+ \int_value:w \__regex_int_eval:w #1 + \c_one_int \__regex_sep: #2 \__regex_sep:
}
\cs_new:Npn \__regex_query_submatch:n #1
{
@@ -29069,9 +29108,9 @@
{
\__regex_tmp:w { }
\exp_after:wN \__regex_extract_seq_aux:ww
- \int_value:w \__regex_submatch_balance:n {#1} ; #1;
+ \int_value:w \__regex_submatch_balance:n {#1} \__regex_sep: #1 \__regex_sep:
}
-\cs_new:Npn \__regex_extract_seq_aux:ww #1; #2;
+\cs_new:Npn \__regex_extract_seq_aux:ww #1 \__regex_sep: #2 \__regex_sep:
{
\if_int_compare:w #1 < \c_zero_int
\prg_replicate:nn {-#1}
@@ -35016,6 +35055,7 @@
{ \__text_use_i_delimit_by_s_recursion_stop:nw }
{ \use_none:n }
}
+\cs_new_eq:NN \__text_sep: \__kernel_int_sep:
\group_begin:
\char_set_catcode_active:n { 0 }
\cs_new:Npn \__text_token_to_explicit:N #1
@@ -35088,10 +35128,10 @@
\if_catcode:w A #1 11 \else:
\if_catcode:w + #1 12 \else:
4 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- \exp_after:wN ;
+ \exp_after:wN \__text_sep:
\token_to_meaning:N #1 \s__text_stop
}
-\cs_new:Npn \__text_token_to_explicit_auxi:w #1 ; #2 \s__text_stop
+\cs_new:Npn \__text_token_to_explicit_auxi:w #1 \__text_sep: #2 \s__text_stop
{
\char_generate:nn
{
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex 2025-04-29 19:46:22 UTC (rev 75056)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-04-14}%
+\def\ExplFileDate{2025-04-29}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx 2025-04-29 19:46:22 UTC (rev 75056)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-04-14}%
+\def\ExplFileDate{2025-04-29}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua 2025-04-29 19:46:22 UTC (rev 75056)
@@ -65,7 +65,7 @@
local token_create_safe
do
local is_defined = token.is_defined
- local set_char = token.set_char
+ local set_char = token.set_char or tex.chardef
local runtoks = tex.runtoks
local let_token = token_create'let'
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty 2025-04-29 19:46:22 UTC (rev 75056)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-04-14}%
+\def\ExplFileDate{2025-04-29}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def 2025-04-29 19:46:22 UTC (rev 75056)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2025-04-14}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-04-29}{}{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
@@ -1007,8 +1007,8 @@
\skip_use:N \tex_glueexpr:D
\__kernel_chk_expr:nNnN
{##1} \tex_glueexpr:D { } \skip_if_finite:n
- ; \prg_return_false:
- #1 ; \prg_return_true: \s__skip_stop
+ \__skip_sep: \prg_return_false:
+ #1 \__skip_sep: \prg_return_true: \s__skip_stop
}
}
\exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } }
Modified: trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls 2025-04-29 19:46:03 UTC (rev 75055)
+++ trunk/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls 2025-04-29 19:46:22 UTC (rev 75056)
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2025-04-14}{}
+\ProvidesExplClass{l3doc}{2025-04-29}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
More information about the tex-live-commits
mailing list.