texlive[68721] Master: latex3 (1nov23)
commits+karl at tug.org
commits+karl at tug.org
Wed Nov 1 21:15:10 CET 2023
Revision: 68721
https://tug.org/svn/texlive?view=revision&revision=68721
Author: karl
Date: 2023-11-01 21:15:10 +0100 (Wed, 01 Nov 2023)
Log Message:
-----------
latex3 (1nov23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv
trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
trunk/Master/tlpkg/bin/c2lx
Added Paths:
-----------
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2023-11-01 20:15:10 UTC (rev 68721)
@@ -7,6 +7,11 @@
## [Unreleased]
+## [2023-11-01]
+
+### Changed
+- Track `expl3` core changes
+
## [2023-10-10]
### Changed
@@ -281,7 +286,8 @@
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-01...HEAD
+[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-10...2023-11-01
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-05-11...2023-10-10
[2023-05-11]: https://github.com/latex3/latex3/compare/2023-04-19...2023-05-11
[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2023-11-01 20:15:10 UTC (rev 68721)
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2023-10-10
+Release 2023-11-01
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2023-11-01 20:15:10 UTC (rev 68721)
@@ -7,6 +7,29 @@
## [Unreleased]
+## [2023-11-01]
+
+### Added
+- `\seq_(g)set_map_e:NNn`
+- Documentation for `\ExplLoaderFileDate` in `expl3.pdf`
+
+### Changed
+- Documentation improvements
+- Refine action of `\text_titlecase_first:n(n)` to be focussed strictly on
+ first (relevant) codepoint in the input
+- Standardize "This is the (e)TeX primitive ..." in `texnote` in documentation
+- Move `\tl_build_(g)begin:N`, `\tl_build_(g)end:N`, `\tl_build_(g)put_left:Nn`
+ and `\tl_build_(g)right:Nn` to stable status
+
+### Deprecated
+- `\seq_(g)set_map_x:NNn` in favor of `e`-type naming
+
+### Fixed
+- `\fp_clear_variable:n` should act locally (issue \#1298)
+- `\fp_clear_function:n` should act locally and correctly
+- Support for `\fp_show:N` showing symbolic expressions (issue \#1301)
+- Undefined `\str_case:en(TF)` (excluding `\str_case:en`)
+
## [2023-10-23]
### Added
@@ -18,11 +41,12 @@
`\fp_new_function:n`, `\fp_set_function:nnn` and `\fp_clear_function:n`
### Changed
-- Refine action of `\text_titlecase_first:n(n)` to be focussed strictly on
- first (relevant) codepoint in the input
+- Clarify action of `\text_titlecase_first:n(n)`
+- Detect letters for titlecasing based on Unicode general category
### Deprecated
- `\text_titlecase:n(n)` as ambiguous: replaced by `\text_titlecase_all:n(n)`
+- `\tl_build_(g)clear:N` in favour of `\tl_build_(g)begin:N`
### Fixed
- Support arbitrary BCP-47 locales for case-changing overrides (issue \#1239)
@@ -1558,7 +1582,8 @@
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-23...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-01...HEAD
+[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-01
[2023-10-23]: https://github.com/latex3/latex3/compare/2023-10-10...2023-10-23
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
[2023-08-29]: https://github.com/latex3/latex3/compare/2023-08-11...2023-08-29
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2023-11-01 20:15:10 UTC (rev 68721)
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-10-23
+Release 2023-11-01
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -64,7 +64,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt 2023-11-01 20:15:10 UTC (rev 68721)
@@ -55,9 +55,13 @@
\str_upper_case:n 2020-01-03
\seq_indexed_map_inline:Nn 2020-06-18
\seq_indexed_map_function:NN 2020-06-18
+\seq_gset_map_x:NNn 2023-10-26
+\seq_set_map_x:NNn 2023-10-26
\sys_load_deprecation: 2021-01-11
\text_titlecase:n 2023-07-08
\text_titlecase:nn 2023-07-08
+\tl_build_clear:N 2023-10-18
+\tl_build_gclear:N 2023-10-18
\tl_case:cn 2023-05-23
\tl_case:cnF 2023-05-23
\tl_case:cnT 2023-05-23
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv 2023-11-01 20:15:10 UTC (rev 68721)
@@ -243,6 +243,7 @@
sys,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-09-07,2015-09-08,
tag,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2019-06-02,2019-06-02,
tasks,tasks,Clemens Niederberger,https://github.com/cgnieder/tasks/,https://github.com/cgnieder/tasks.git,https://github.com/cgnieder/cgnieder/tasks/issues,2013-03-16,2020-04-14,
+tbl,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-23,2023-10-23,
tblr,tabularray,Jianrui Lyu,https://github.com/lvjr/tabularray,https://github.com/lvjr/tabularray.git,https://github.com/lvjr/tabularray/issues,2022-04-02,2022-04-02,
tcobox,tcolorbox,Thomas F. Sturm,https://github.com/T-F-S/tcolorbox,https://github.com/T-F-S/tcolorbox.git,https://github.com/T-F-S/tcolorbox/issues,2020-02-19,2020-02-19,
template,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03,
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\begin{document}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -57,7 +57,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -551,6 +551,7 @@
\part{Data types}
\DocInput{l3tl.dtx}
+\DocInput{l3tl-build.dtx}
\DocInput{l3str.dtx}
\DocInput{l3str-convert.dtx}
\DocInput{l3quark.dtx}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -2,7 +2,7 @@
%
%% File: l3benchmark.dtx
%
-% Copyright (C) 2011,2012,2014-2023 The LaTeX Project
+% Copyright (C) 2011-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
+\ProvidesExplPackage{l3benchmark}{2023-11-01}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-10-10}{}
+\ProvidesExplPackage{l3bitset}{2023-11-01}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -999,19 +999,11 @@
\dim_set_eq:NN \l_@@_softpath_lastx_dim \g_@@_softpath_lastx_dim
\dim_set_eq:NN \l_@@_softpath_lasty_dim \g_@@_softpath_lasty_dim
\@@_path_reset_limits:
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_main_tl
- \bool_set_eq:NN
- \l_@@_softpath_corners_bool
- \g_@@_softpath_corners_bool
- \@@_softpath_clear:
+ \@@_softpath_save:
}
\cs_new_protected:Npn \draw_path_scope_end:
{
- \@@_softpath_clear:
- \bool_gset_eq:NN
- \g_@@_softpath_corners_bool
- \l_@@_softpath_corners_bool
- \@@_softpath_add:o \l_@@_softpath_main_tl
+ \@@_softpath_restore:
\dim_gset_eq:NN \g_@@_softpath_lastx_dim \l_@@_softpath_lastx_dim
\dim_gset_eq:NN \g_@@_softpath_lasty_dim \l_@@_softpath_lasty_dim
\dim_gset_eq:NN \g_@@_path_xmax_dim \l_@@_path_xmax_dim
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -82,10 +82,10 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_softpath_internal_tl}
-% The soft path itself.
+% \begin{variable}{\l_@@_softpath_tmp_tl}
+% Scratch space.
% \begin{macrocode}
-\tl_new:N \l_@@_softpath_internal_tl
+\tl_new:N \l_@@_softpath_tmp_tl
% \end{macrocode}
% \end{variable}
%
@@ -104,23 +104,51 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
-% {\@@_softpath_use:, \@@_softpath_clear:}
+% \begin{macro}{\@@_softpath_use:, \@@_softpath_clear:}
% Using and clearing is trivial.
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_use:
{
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl
- \l_@@_softpath_internal_tl
+ \tl_build_gend:N \g_@@_softpath_main_tl
+ \tl_set_eq:NN \l_@@_softpath_tmp_tl \g_@@_softpath_main_tl
+ \l_@@_softpath_tmp_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
+ \exp_args:NNV \tl_build_gput_right:Nn
+ \g_@@_softpath_main_tl \l_@@_softpath_tmp_tl
}
\cs_new_protected:Npn \@@_softpath_clear:
{
- \tl_build_gclear:N \g_@@_softpath_main_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
\bool_gset_false:N \g_@@_softpath_corners_bool
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_softpath_save:, \@@_softpath_restore:}
+% Abstracted ideas to keep variables inside this submodule.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_softpath_save:
+ {
+ \tl_build_gend:N \g_@@_softpath_main_tl
+ \tl_set_eq:NN
+ \l_@@_softpath_main_tl
+ \g_@@_softpath_main_tl
+ \bool_set_eq:NN
+ \l_@@_softpath_corners_bool
+ \g_@@_softpath_corners_bool
+ \@@_softpath_clear:
+ }
+\cs_new_protected:Npn \@@_softpath_restore:
+ {
+ \@@_softpath_clear:
+ \@@_softpath_add:o \l_@@_softpath_main_tl
+ \bool_gset_eq:NN
+ \g_@@_softpath_corners_bool
+ \l_@@_softpath_corners_bool
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{variable}{\g_@@_softpath_lastx_dim, \g_@@_softpath_lasty_dim}
% For tracking the end of the path (to close it).
% \begin{macrocode}
@@ -323,9 +351,9 @@
\fp_zero:N \l_@@_softpath_lasty_fp
\tl_clear:N \l_@@_softpath_first_tl
\tl_clear:N \l_@@_softpath_move_tl
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl
+ \tl_build_gend:N \g_@@_softpath_main_tl
\exp_after:wN \@@_softpath_round_loop:Nnn
- \l_@@_softpath_internal_tl
+ \g_@@_softpath_main_tl
\q_@@_recursion_tail ? ?
\q_@@_recursion_stop
\group_end:
@@ -587,7 +615,7 @@
\l_@@_softpath_move_tl
\tl_put_right:No \l_@@_softpath_main_tl
\l_@@_softpath_part_tl
- \tl_build_gclear:N \g_@@_softpath_main_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
\@@_softpath_add:o \l_@@_softpath_main_tl
}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1173,7 +1173,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-10-10}{}
+\ProvidesExplPackage{l3draw}{2023-11-01}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -184,7 +184,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-10-10}{}
+\ProvidesExplPackage{l3graphics}{2023-11-01}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -96,7 +96,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-10-10}{}
+\ProvidesExplPackage{l3opacity}{2023-11-01}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -123,7 +123,7 @@
%
% \begin{function}[EXP]{\fp_format:nn}
% \begin{syntax}
-% \cs{fp_format:nn} \Arg{fpexpr} \Arg{format specification}
+% \cs{fp_format:nn} \Arg{fp expr} \Arg{format specification}
% \end{syntax}
% Evaluates the \meta{floating point expression} and converts the
% result to a string according to the \meta{format specification}.
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-10-10}{}
+\ProvidesExplPackage{l3str-format}{2023-11-01}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
+\ProvidesExplPackage{l3sys-shell}{2023-11-01}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -2,7 +2,7 @@
%
%% File: xcoffins.dtx
%
-% Copyright (C) 2010-2012,2014,2016-2023 The LaTeX Project
+% Copyright (C) 2010-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-10-10}{}
+\ProvidesExplPackage{xcoffins}{2023-11-01}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-10-10}{}
+\ProvidesExplPackage{l3galley}{2023-11-01}{}
{L3 Experimental galley code}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-10-10}{}
+\ProvidesExplPackage{xgalley}{2023-11-01}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -958,6 +958,16 @@
% loadable: package loading is dependent on the \LaTeXe{} package-management
% mechanism.
%
+% \section{Getting the version of \pkg{expl3}}
+%
+% \begin{function}{\ExplLoaderFileDate}
+% Once the programming layer is loaded by one of the loaders, you can access
+% its version in the ISO date format \meta{year}-\meta{month}-\meta{day},
+% through \cs{ExplLoaderFileDate}.
+%
+% The current version of \pkg{expl3} is \ExplLoaderFileDate.
+% \end{function}
+%
% \section{Engine/primitive requirements}
%
% To use \pkg{expl3} and the higher level packages provided by the
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2023-11-01 20:15:10 UTC (rev 68721)
@@ -65,6 +65,7 @@
\from{l3expan.dtx} {package}
\from{l3quark.dtx} {package}
\from{l3tl.dtx} {package}
+ \from{l3tl-build.dtx} {package}
\from{l3str.dtx} {package}
\from{l3seq.dtx} {package}
\from{l3int.dtx} {package}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -106,6 +106,9 @@
% level may be closed by a \cs{group_end:} function or by a token
% with category code $2$ (close-group), namely a ^^A{
% |}| if standard category codes apply.
+% \begin{texnote}
+% This is the \TeX{} primitive \tn{aftergroup}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[added = 2021-05-11]{\group_show_list:, \group_log_list:}
@@ -116,7 +119,7 @@
% Display (to the terminal or log file) a list of the groups that are
% currently opened. This is intended for tracking down problems.
% \begin{texnote}
-% This is a wrapper around the \tn{showgroups} primitive.
+% This is a wrapper around the \eTeX{} primitive \tn{showgroups}.
% \end{texnote}
% \end{function}
%
@@ -130,8 +133,9 @@
% is therefore used as a shorthand for \enquote{replacement text}.
%
% Functions which are not \enquote{protected} are fully expanded
-% inside an \texttt{x} expansion. In contrast, \enquote{protected}
-% functions are not expanded within \texttt{x} expansions.
+% inside an \texttt{e}-type or \texttt{x}-type expansion.
+% In contrast, \enquote{protected} functions are not expanded within
+% \texttt{e} and \texttt{x} expansions.
%
% \subsection{Defining functions}
%
@@ -175,7 +179,7 @@
% Create a new function with the \texttt{protected} restriction,
% such as \cs{cs_set_protected:Npn}. The parameter may contain
% \cs{par} tokens but the function will not expand within an
-% \texttt{x}-type or \texttt{e}-type expansion.
+% \texttt{e}-type or \texttt{x}-type expansion.
% \end{description}
%
% Finally, the functions in
@@ -245,8 +249,8 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
% \emph{etc.}) will be replaced by those absorbed by the function.
-% The \meta{function} will not expand within an \texttt{x}-type or
-% or \texttt{e}-type
+% The \meta{function} will not expand within an \texttt{e}-type or
+% or \texttt{x}-type
% argument. The definition is global and an error results if the
% \meta{function} is already defined.
% \end{function}
@@ -265,7 +269,7 @@
% \emph{etc.}) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global
+% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global
% and an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -317,7 +321,7 @@
% \emph{etc.}) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level. The \meta{function} will
-% not expand within an \texttt{x}-type or \texttt{e}-type argument.
+% not expand within an \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -336,7 +340,7 @@
% cannot contain \cs{par} tokens. The assignment of a meaning
% to the \meta{function} is restricted to the current \TeX{} group
% level. The \meta{function} will not expand within an
-% \texttt{x}-type or \texttt{e}-type argument.
+% \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -389,7 +393,7 @@
% The assignment of a meaning to the \meta{function} is \emph{not}
% restricted to the current \TeX{} group level: the assignment is
% global. The \meta{function} will not expand within an
-% \texttt{x}-type or \texttt{e}-type argument.
+% \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -408,7 +412,7 @@
% cannot contain \cs{par} tokens. The assignment of a meaning to the
% \meta{function} is \emph{not} restricted to the current \TeX{}
% group level: the assignment is global. The \meta{function} will
-% not expand within an \texttt{x}-type or \texttt{e}-type argument.
+% not expand within an \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \subsection{Defining new functions using the signature}
@@ -459,8 +463,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument. The definition is global and
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument. The definition is global and
% an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -478,7 +482,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global and
+% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global and
% an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -529,8 +533,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument.
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
% \end{function}
@@ -549,7 +553,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument.
+% expand within an \texttt{e}-type or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
% \end{function}
@@ -599,8 +603,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument.
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is global.
% \end{function}
%
@@ -618,7 +622,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument.
+% expand within an \texttt{e}-type or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is global.
% \end{function}
%
@@ -712,7 +716,7 @@
% This function expands to the \emph{meaning} of the \meta{control sequence}
% control sequence. For a macro, this includes the \meta{replacement text}.
% \begin{texnote}
-% This is \TeX{}'s \tn{meaning} primitive.
+% This is the \TeX{} primitive \tn{meaning}.
% For tokens that are not control sequences, it is more logical to
% use \cs{token_to_meaning:N}.
% The \texttt{c} variant correctly reports undefined arguments.
@@ -825,7 +829,7 @@
% of category code $10$. The result does \emph{not} include
% the current escape token, contrarily to \cs{token_to_str:N}.
% Full expansion of this function requires exactly $2$ expansion
-% steps, and so an \texttt{x}-type or \texttt{e}-type expansion, or two
+% steps, and so an \texttt{e}-type or \texttt{x}-type expansion, or two
% \texttt{o}-type expansions are required to
% convert the \meta{control sequence} to a sequence of characters
% in the input stream. In most cases, an \texttt{f}-expansion
@@ -1207,7 +1211,7 @@
% Certain conditionals deal with specific data types like boxes and
% fonts and are described there. The ones described below are either
% the universal conditionals or deal with control sequences. We
-% prefix primitive conditionals with |\if_|.
+% prefix primitive conditionals with |\if_|, except for \cs{if:w}.
%
% \begin{function}[EXP]
% {\if_true:, \if_false:, \else:, \fi:, \reverse_if:N}
@@ -1222,8 +1226,10 @@
% conditional. The function "\or:" is documented in \pkg{l3int} and
% used in case switches.
% \begin{texnote}
-% These are equivalent to their corresponding \TeX\ primitive
-% conditionals; \cs{reverse_if:N} is \eTeX's \tn{unless}.
+% \cs{if_true:} and \cs{if_false:} are equivalent to their corresponding
+% \TeX{} primitive conditionals \tn{iftrue} and \tn{iffalse};
+% \cs{else:} and \cs{fi:} are the \TeX{} primitives \tn{else} and \tn{fi};
+% \cs{reverse_if:N} is the \eTeX{} primitive \tn{unless}.
% \end{texnote}
% \end{function}
%
@@ -1236,7 +1242,7 @@
% <arg_1> and <arg_2> could be functions, variables, tokens; in all cases the
% \emph{unexpanded} definitions are compared.
% \begin{texnote}
-% This is \TeX{}'s \tn{ifx}.
+% This is the \TeX{} primitive \tn{ifx}.
% \end{texnote}
% \end{function}
%
@@ -1251,6 +1257,10 @@
% tests if the category codes of the two tokens are the same whereas
% "\if:w" tests if the character codes are
% identical. "\if_charcode:w" is an alternative name for "\if:w".
+% \begin{texnote}
+% \cs{if:w} and \cs{if_charcode:w} are both the \TeX{} primitive \tn{if}.
+% \cs{if_catcode:w} is the \TeX{} primitive \tn{ifcat}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\if_cs_exist:N, \if_cs_exist:w}
@@ -1264,7 +1274,7 @@
% "\scan_stop:"! This can be useful when dealing with control
% sequences which cannot be entered as a single token.
% \begin{texnote}
-% These are \TeX{}'s \tn{ifdefined} and \tn{ifcsname}, respectively.
+% These are the \TeX{} primitives \tn{ifdefined} and \tn{ifcsname}.
% \end{texnote}
% \end{function}
%
@@ -1278,6 +1288,10 @@
% \end{syntax}
% Execute <true code> if currently in horizontal mode, otherwise
% execute <false code>. Similar for the other functions.
+% \begin{texnote}
+% These are the \TeX{} primitives \tn{ifhmode}, \tn{ifvmode}, \tn{ifmmode},
+% and~\tn{ifinner}.
+% \end{texnote}
% \end{function}
%
% \section{Starting a paragraph}
@@ -2414,9 +2428,6 @@
% returned with \meta{true} for when there is a colon in the function
% and \meta{false} if there is not.
%
-% We cannot use |:| directly as it has the wrong category code so
-% an |x|-type expansion is used to force the conversion.
-%
% First ensure that we actually get a properly evaluated string by
% expanding \cs{cs_to_str:N} twice. If the function contained a
% colon, the auxiliary takes as |#1| the function name, delimited by
@@ -3245,7 +3256,7 @@
% wrapping code as otherwise we would wrongly see the definitions that
% are in place there. To get correct escape characters, set the
% \tn{escapechar} in a group; this also localizes the assignment
-% performed by \texttt{x}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands
+% performed by \texttt{e}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands
% convert their argument to a control sequence within a group to avoid
% showing \tn{relax} for undefined control sequences.
% \begin{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -51,9 +51,16 @@
%
% \section{Using the \LaTeX3 modules}
%
-% The modules documented in \file{source3} are designed to be used on top of
-% \LaTeXe{} and are loaded all as one with the usual |\usepackage{expl3}| or
-% |\RequirePackage{expl3}| instructions.
+% The modules documented in ^^A
+% \ifinterface
+% this file (and \file{source3} for documented sources) ^^A
+% \else
+% \file{interface3} (and this file) ^^A
+% \fi
+% are designed to be used on top of \LaTeXe{} and are already pre-loaded
+% since \LaTeXe{} 2020-02-02.
+% To support older formats, the |\usepackage{expl3}| or |\RequirePackage{expl3}|
+% instructions are still available to load them all as one.
%
% As the modules use a coding syntax different from standard
% \LaTeXe{} it provides a few functions for setting it up.
@@ -80,7 +87,6 @@
% \begin{function}[updated = 2017-03-19, updated = 2023-08-03]
% {\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
% \begin{syntax}
-% |\RequirePackage{expl3}| \\
% \cs{ProvidesExplPackage} \Arg{package} \Arg{date} \Arg{version} \Arg{description}
% \end{syntax}
% These functions act broadly in the same way as the corresponding
@@ -99,7 +105,6 @@
%
% \begin{function}[updated = 2012-06-04]{\GetIdInfo}
% \begin{syntax}
-% |\RequirePackage{l3bootstrap}|
% \cs{GetIdInfo} |$Id:| \meta{SVN info field} |$| \Arg{description}
% \end{syntax}
% Extracts all information from a SVN field. Spaces are not
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -639,7 +639,7 @@
% variable does not exist or if it is invalid. This function may be applied to
% local or global boxes.
% \begin{texnote}
-% This is the \tn{box} primitive.
+% This is the \TeX{} primitive \tn{box}.
% \end{texnote}
% \end{function}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -103,49 +103,6 @@
%
% \section{Additions to \pkg{l3tl}}
%
-% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N}
-% \begin{syntax}
-% \cs{tl_build_begin:N} \meta{tl~var}
-% \end{syntax}
-% Clears the \meta{tl~var} and sets it up to support other
-% \cs[no-index]{tl_build_\ldots{}} functions, which allow accumulating
-% large numbers of tokens piece by piece much more efficiently than
-% standard \pkg{l3tl} functions. Until \cs{tl_build_end:N}
-% \meta{tl~var} is called, applying any function from \pkg{l3tl} other
-% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect
-% results. The |begin| and |gbegin| functions must be used for local
-% and global \meta{tl~var} respectively.
-% \end{function}
-%
-% \begin{function}[added = 2018-04-01]{\tl_build_clear:N, \tl_build_gclear:N}
-% \begin{syntax}
-% \cs{tl_build_clear:N} \meta{tl~var}
-% \end{syntax}
-% Clears the \meta{tl~var} and sets it up to support other
-% \cs[no-index]{tl_build_\ldots{}} functions. The |clear| and
-% |gclear| functions must be used for local and global \meta{tl~var}
-% respectively.
-% \end{function}
-%
-% \begin{function}[added = 2018-04-01]
-% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Ne,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
-% \tl_build_put_right:Nn, \tl_build_put_right:Ne,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
-% }
-% \begin{syntax}
-% \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
-% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens}
-% \end{syntax}
-% Adds \meta{tokens} to the left or right side of the current contents
-% of \meta{tl~var}. The \meta{tl~var} must have been set up with
-% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and
-% |gput| functions must be used for local and global \meta{tl~var}
-% respectively. The |right| functions are about twice faster than the
-% |left| functions.
-% \end{function}
-%
% \begin{function}[added = 2018-04-01]{\tl_build_get:NN}
% \begin{syntax}
% \cs{tl_build_get:NN} \meta{tl~var_1} \meta{tl~var_2}
@@ -157,20 +114,6 @@
% \cs{tl_set:Nn}.
% \end{function}
%
-% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N}
-% \begin{syntax}
-% \cs{tl_build_end:N} \meta{tl~var}
-% \end{syntax}
-% Gets the contents of \meta{tl~var} and stores that into the
-% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}.
-% The \meta{tl~var} must have
-% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}.
-% The |end| and |gend| functions must be used for local and global
-% \meta{tl~var} respectively. These functions completely remove the
-% setup code that enabled \meta{tl~var} to be used for other
-% \cs[no-index]{tl_build_\ldots{}} functions.
-% \end{function}
-%
% \end{documentation}
%
% \begin{implementation}
@@ -195,7 +138,7 @@
% and skipping out of that would break horribly.
% The \cs{@@_wrap_item:n} function inserts the relevant
% \cs{@@_item:n} without expansion in the input stream,
-% hence in the \texttt{x}-expanding assignment.
+% hence in the \texttt{e}-expanding assignment.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_filter:NNn
{ \@@_set_filter:NNNn \__kernel_tl_set:Ne }
@@ -219,214 +162,14 @@
%<@@=tl>
% \end{macrocode}
%
-% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N}
-% \meta{tl~var}, the \meta{tl~var} has the structure
-% \begin{quote}
-% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn}
-% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right}
-% \end{quote}
-% where \meta{right} is not braced. The \enquote{data} it represents is
-% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed
-% by \meta{right}. The \meta{next~tl} is a token list variable whose
-% name is that of \meta{tl~var} followed by~|'|. There are between $0$
-% and $4$ \cs{exp_end:} to keep track of when \meta{left} and
-% \meta{right} should be put into the \meta{next~tl}. The
-% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
-% and \cs{cs_gset_nopar:Npe} if it is global.
-%
-% \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
-% \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
-% First construct the \meta{next~tl}: using a prime here conflicts
-% with the usual \pkg{expl3} convention but we need a name that can be
-% derived from |#1| without any external data such as a counter.
-% Empty that \meta{next~tl} and setup the structure. The local and
-% global versions only differ by a single function
-% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
-% important because only that function is stored in the \meta{tl~var}
-% and \meta{next~tl} for subsequent assignments. In principle
-% \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
-% to empty |#1| and make sure it is defined, but logging the
-% definition does not seem useful so we just do |#3| |#1| |{}| to
-% clear it locally or globally as appropriate.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_begin:N #1
- { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
-\cs_new_protected:Npn \tl_build_gbegin:N #1
- { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
-\cs_new_protected:Npn \@@_build_begin:NN #1#2
- { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
-\cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
- {
- #3 #1 { }
- #3 #2
- {
- \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
- \exp_not:n { \@@_build_last:NNn #3 #1 { } }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N}
-% The |begin| and |gbegin| functions already clear enough to make the
-% token list variable effectively empty. Eventually the |begin| and
-% |gbegin| functions should check that |#1'| is empty or undefined,
-% while the |clear| and |gclear| functions ought to empty |#1'|,
-% |#1''| and so on, similar to \cs{tl_build_end:N}. This only affects
-% memory usage.
-% \begin{macrocode}
-\cs_new_eq:NN \tl_build_clear:N \tl_build_begin:N
-\cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-% {
-% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx,
-% \@@_build_last:NNn, \@@_build_put:nn, \@@_build_put:nw
-% }
-% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most
-% of the time this just removes one \cs{exp_end:}. When there are
-% none left, \cs{@@_build_last:NNn} is expanded instead. It resets
-% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and
-% the definition early. Then it makes sure the \meta{next~tl} (its
-% argument |#1|) is set-up and starts a new definition. Then
-% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left}
-% part of the original \meta{tl~var} as appropriate for the definition
-% of the \meta{next~tl} (the \meta{right} part is left in the right
-% place without ever becoming a macro argument). We use
-% \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
-% arguments that are likely very long token lists. We use
-% \cs[no-index]{cs_(g)set_nopar:Npe} rather than
-% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
-% because the assignments are interrupted by brace tricks, which
-% implies that the assignment does not simply set the token list to an
-% |x|-expansion of the second argument.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
- {
- \cs_set_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
- {
- \cs_gset_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \@@_build_last:NNn #1#2
- {
- \if_false: { { \fi:
- \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
- \@@_build_last:NNn #1 #2 { }
- }
- }
- \if_meaning:w \c_empty_tl #2
- \@@_build_begin:NN #1 #2
- \fi:
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \if_false: } } \fi:
- \exp_after:wN \@@_build_put:nn \exp_after:wN {#2}
- }
-\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 }
-\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5
- { #2 \@@_build_last:NNn #3 #4 { #1 #5 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx,
-% \@@_build_put_left:NNn
-% }
-% See \cs{tl_build_put_right:Nn} for all the machinery. We could
-% easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
-% add the \meta{right} material after the \Arg{left} in the
-% |x|-expanding assignment.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_put_left:Nn #1
- { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_left:Nn #1
- { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
- {
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \exp_after:wN \@@_build_put:nn
- \exp_after:wN {#2} {#3}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\tl_build_get:NN}
-% \begin{macro}{\@@_build_get:NNN, \@@_build_get:w, \@@_build_get_end:w}
-% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and
-% so on, all within an |x|-expanding assignment, and wrap as
-% appropriate in \cs{exp_not:n}. The various \meta{left} parts are
-% left in the assignment as we go, which enables us to expand the
-% \meta{next~tl} at the right place. The various \meta{right} parts
-% are eventually picked up in one last \cs{exp_not:n}, with a brace
-% trick to wrap all the \meta{right} parts together.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_get:NN
{ \@@_build_get:NNN \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \@@_build_get:NNN #1#2#3
- { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
-\cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
- {
- \exp_not:n {#4}
- \if_meaning:w \c_empty_tl #3
- \exp_after:wN \@@_build_get_end:w
- \fi:
- \exp_after:wN \@@_build_get:w #3
- }
-\cs_new:Npn \@@_build_get_end:w #1#2#3
- { \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\tl_build_end:N, \tl_build_gend:N, \@@_build_end_loop:NN}
-% Get the data then clear the \meta{next~tl} recursively until finding
-% an empty one. It is perhaps wasteful to repeatedly use
-% \cs{cs_to_str:N}. The local/global scope is checked by
-% \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_end:N #1
- {
- \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
- }
-\cs_new_protected:Npn \tl_build_gend:N #1
- {
- \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
- }
-\cs_new_protected:Npn \@@_build_end_loop:NN #1#2
- {
- \if_meaning:w \c_empty_tl #1
- \exp_after:wN \use_none:nnnnnn
- \fi:
- #2 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
%</package>
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -361,7 +361,7 @@
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the
% comma list does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -586,8 +586,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -611,8 +611,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -631,8 +631,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -737,8 +737,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -753,8 +753,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1523,7 +1523,7 @@
% \clist_reverse:N, \clist_reverse:c,
% \clist_greverse:N, \clist_greverse:c
% }
-% Use \cs{clist_reverse:n} in an \texttt{x}-expanding assignment. The
+% Use \cs{clist_reverse:n} in an \texttt{e}-expanding assignment. The
% extra work that \cs{clist_reverse:n} does to preserve braces and
% spaces would not be needed for the well-controlled case of
% \texttt{N}-type comma lists, but the slow-down is not too bad.
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -137,7 +137,7 @@
% In case we want a warning, the \meta{function} is defined to produce
% such a warning without grabbing any argument, then redefine itself
% to the standard definition that the \meta{function} should have,
-% with arguments, and call that definition. The \texttt{x}-type
+% with arguments, and call that definition. The \texttt{e}-type
% expansion and \cs{exp_not:n} avoid needing to double the~|#|, which
% we could not do anyways. We then deal with the code for
% \cs{debug_off:n} |{deprecation}|: presumably someone doing that does
@@ -536,6 +536,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
+\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn }
+\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3sys} functions}
%
% \begin{macrocode}
@@ -614,6 +623,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_begin:N }
+\cs_new_protected:Npn \tl_build_clear:N { \tl_build_begin:N }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_gbegin:N }
+\cs_new_protected:Npn \tl_build_gclear:N { \tl_build_gbegin:N }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3token} functions}
%
% \begin{macro}[EXP]{\char_to_utfviii_bytes:n}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -85,7 +85,7 @@
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
% \tableofcontents
%
@@ -1190,7 +1190,7 @@
% Get predicate from a function's base name. The code is not broken
% by functions with no signature. The |n|-type version can be used
% for keys and other non-control sequences. The output after
-% |x|-expansion is a string.
+% |e|-expansion is a string.
% \begin{macrocode}
\cs_new:Npn \@@_predicate_from_base:n #1
{
@@ -1930,9 +1930,9 @@
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{expstar}{}}%
\write \@auxout { \def \string \Codedoc at expstar { } }
\@@_typeset_exp:\ indicates~fully~expandable~functions,~which~
- can~be~used~within~an~\texttt{x}-type~argument~(in~plain~
- \TeX{}~terms,~inside~an~\cs{edef}),~as~well~as~within~an~
- \texttt{f}-type~argument.
+ can~be~used~within~an~\texttt{e}-type~argument~(inside~an~\tn{expanded}),~
+ \texttt{x}-type~argument~(in~plain~\TeX{}~terms,~inside~an~\tn{edef}),~
+ as~well~as~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainREXP } { }
{
@@ -1940,8 +1940,8 @@
\write \@auxout { \def \string \Codedoc at rexpstar { } }
\@@_typeset_rexp:\ indicates~
restricted~expandable~functions,~which~can~be~used~within~an~
- \texttt{x}-type~argument~but~cannot~be~fully~expanded~within~an~
- \texttt{f}-type~argument.
+ \texttt{x}-type~argument~or~an~\texttt{e}-type~argument,~
+ but~cannot~be~fully~expanded~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainTF } { }
{
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -229,7 +229,7 @@
% contrast to |e|, all macro parameter characters |#| must be doubled,
% and omitting this leads to low-level errors. In addition this type of
% expansion is not expandable, namely functions that have |x| in their
-% signature do not themselves expand when appearing inside |x| or |e|
+% signature do not themselves expand when appearing inside |e| or |x|
% expansion.
%
% The |f| type is so special that it deserves an example. It is
@@ -264,8 +264,7 @@
% \begin{quote}
% |\example:n { 3 , 7 }|
% \end{quote}
-% at the cost of being protected (for |x| type) or very much slower in
-% old engines (for |e| type).
+% at the cost of being protected for |x|-type.
% If you use |f| type expansion in conditional processing then
% you should stick to using |TF| type functions only as the expansion
% does not finish any |\if... \fi:| itself!
@@ -642,7 +641,7 @@
% appropriate argument specifier variant or the appropriate
% \cs[no-index]{exp_args:N\meta{variant}} function.
% \begin{texnote}
-% This is the \TeX{} primitive \tn{expandafter} renamed.
+% This is the \TeX{} primitive \tn{expandafter}.
% \end{texnote}
% \end{function}
%
@@ -659,10 +658,10 @@
% \cs{exp_not:N} \meta{token}
% \end{syntax}
% Prevents expansion of the \meta{token} in a context where it would
-% otherwise be expanded, for example an |x|-type argument or the first
-% token in an |o| or |e| or |f| argument.
+% otherwise be expanded, for example an |e|-type or |x|-type argument or
+% the first token in an |o|-type or |f|-type argument.
% \begin{texnote}
-% This is the \TeX{} \tn{noexpand} primitive. It only prevents
+% This is the \TeX{} primitive \tn{noexpand}. It only prevents
% expansion. At the beginning of an |f|-type argument, a space
% \meta{token} is removed even if it appears as \cs{exp_not:N}
% \cs{c_space_token}. In an |e|-expanding definition
@@ -686,16 +685,16 @@
% \begin{syntax}
% \cs{exp_not:n} \Arg{tokens}
% \end{syntax}
-% Prevents expansion of the \meta{tokens} in an |e| or |x|-type argument. In
-% all other cases the \meta{tokens} continue to be expanded, for
+% Prevents expansion of the \meta{tokens} in an |e|-type or |x|-type argument.
+% In all other cases the \meta{tokens} continue to be expanded, for
% example in the input stream or in other types of arguments such as
% \texttt{c}, \texttt{f}, \texttt{v}. The argument of \cs{exp_not:n}
% \emph{must} be surrounded by braces.
% \begin{texnote}
-% This is the \eTeX{} \tn{unexpanded} primitive. In an
-% |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
+% This is the \eTeX{} primitive \tn{unexpanded}. In an
+% |e|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
% is equivalent to |##1| rather than to~|#1|, namely it inserts the
-% two characters |#| and~|1|. In an |e|-type argument
+% two characters |#| and~|1|, and
% \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the
% character~|#|.
% \end{texnote}
@@ -706,7 +705,7 @@
% \cs{exp_not:o} \Arg{tokens}
% \end{syntax}
% Expands the \meta{tokens} once, then prevents any further expansion
-% in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}.
+% in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:V}
@@ -714,7 +713,7 @@
% \cs{exp_not:V} \meta{variable}
% \end{syntax}
% Recovers the content of the \meta{variable}, then prevents expansion
-% of this material in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}.
+% of this material in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:v}
@@ -725,7 +724,7 @@
% converts this into a control sequence which should be a \meta{variable}
% name.
% The content of the \meta{variable} is recovered, and further
-% expansion in |x|-type or \texttt{e}-type arguments is prevented using \cs{exp_not:n}.
+% expansion in |e|-type or |x|-type arguments is prevented using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:e}
@@ -734,7 +733,7 @@
% \end{syntax}
% Expands \meta{tokens} exhaustively, then protects the result of the
% expansion (including any tokens which were not expanded) from
-% further expansion in |e| or |x|-type arguments using \cs{exp_not:n}.
+% further expansion in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% This is very rarely useful but is provided for consistency.
% \end{function}
%
@@ -745,7 +744,7 @@
% Expands \meta{tokens} fully until the first unexpandable token is
% found (if it is a space it is removed). Expansion then stops, and
% the result of the expansion (including any tokens which were not
-% expanded) is protected from further expansion in |x|-type or \texttt{e}-type arguments
+% expanded) is protected from further expansion in |e|-type or |x|-type arguments
% using \cs{exp_not:n}.
% \end{function}
%
@@ -758,7 +757,7 @@
% and all of \meta{tokens} are expandable \cs{exp_stop_f:}
% terminates the expansion of tokens even if \meta{more tokens}
% are also expandable. The function itself is an implicit space
-% token. Inside an \texttt{x}-type or \texttt{e}-type expansion, it retains its
+% token. Inside an \texttt{e}-type or \texttt{x}-type expansion, it retains its
% form, but when typeset it produces the underlying space (\verb*| |).
% \end{function}
%
@@ -948,7 +947,7 @@
% In this section a general mechanism for defining functions that handle
% arguments is defined. These general expansion functions are
% expandable unless |x| is used. (Any version of |x| is going to have
-% to use one of the \LaTeX3 names for \cs{cs_set:Npe} at some
+% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some
% point, and so is never going to be expandable.)
%
% The definition of expansion functions with this technique happens
@@ -1062,7 +1061,7 @@
% Since the expansion of \cs{exp:w} \cs{exp_end_continue_f:w} is
% empty, we wind up with a fully expanded list, only \TeX{} has not
% tried to execute any of the non-expandable tokens. This is what
-% differentiates this function from the |x| argument type.
+% differentiates this function from the |e| and |x| argument type.
% \begin{macrocode}
\cs_new:Npn \::f #1 \::: #2#3
{
@@ -1818,7 +1817,7 @@
% trigger an error, because we do not have a means to replace
% |o|-expansion by |x|-expansion.
% More generally, we can only convert |N| to |c|, or convert |n|
-% to |V|, |v|, |o|, |f|, |x|.
+% to |V|, |v|, |o|, |e|, |f|, or |x|.
% \end{itemize}
% All this boils down to a few rules. Only |n| and |N|-type
% arguments can be replaced by \cs{cs_generate_variant:Nn}. Other
@@ -1828,7 +1827,7 @@
% part is ignored.
%
% We compare the base and variant signatures one character at a time
-% within |x|-expansion. The result is given to
+% within |e|-expansion. The result is given to
% \cs{@@_generate_variant:wwNN} (defined later) in the form
% \meta{processed variant signature} \cs{s_@@_mark} \meta{errors}
% \cs{s_@@_stop} \meta{base function} \meta{new function}. If all went
@@ -1889,7 +1888,7 @@
%
% The case where the two letters are different is only allowed if the
% base is |N| and the variant is |c|, or when the base is |n| and the
-% variant is |o|, |V|, |v|, |f| or |x|. Otherwise, call
+% variant is |V|, |v|, |o|, |e|, |f|, or |x|. Otherwise, call
% \cs{@@_generate_variant_loop_invalid:NNwNNnn} to remove the end of
% the loop, get arguments at the end of the loop, and place an
% appropriate error message as a second argument of
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -486,7 +486,7 @@
% \end{syntax}
% This function writes \meta{tokens} to the specified
% \meta{stream} when the current page is finalised (\emph{i.e.}~at
-% shipout). The \texttt{x}-type variants expand the \meta{tokens}
+% shipout). The \texttt{e}-type variants expand the \meta{tokens}
% at the point where the function is used but \emph{not} when the
% resulting tokens are written to the \meta{stream}
% (\emph{cf.}~\cs{iow_shipout_e:Nn}).
@@ -597,7 +597,7 @@
% output does \emph{not} expand further when written to a file.
%
% \begin{texnote}
-% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{x}-type expansion
+% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{e}-type expansion
% on the \meta{text} to expand it. This is done in such a way that
% \cs{exp_not:N} or \cs{exp_not:n} \emph{could} be used to prevent
% expansion of material. However, this is less conceptually clear than
@@ -687,9 +687,11 @@
% \emph{not} end in |/| other than the case that it is exactly equal
% to the root directory. The \meta{name} and \meta{ext} parts together
% make up the file name, thus the \meta{name} part may be thought of
-% as the \enquote{job name} for the current file. Note that \TeX{} does
-% not provide information on the \meta{ext} part for the main (top
-% level) file and that this file always has an empty \meta{dir} component.
+% as the \enquote{job name} for the current file.
+%
+% Note that \TeX{} does not provide information on the \meta{dir} and
+% \meta{ext} part for the main (top level) file and that this file
+% always has empty \meta{dir} and \meta{ext} components.
% Also, the \meta{name} here will be equal to \cs{c_sys_jobname_str},
% which may be different from the real file name (if set using
% |--jobname|, for example).
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
%
% \begin{documentation}
@@ -165,7 +165,6 @@
% \subsection{Showing values}
%
% \begin{macro}{\fp_show:N, \fp_show:c, \fp_log:N, \fp_log:c, \@@_show:NN}
-% \begin{macro}[EXP]{\@@_show_validate:w}
% This shows the result of computing its argument by
% passing the right data to \cs{tl_show:n} or \cs{tl_log:n}.
% \begin{macrocode}
@@ -176,22 +175,92 @@
\cs_new_protected:Npn \@@_show:NN #1#2
{
\__kernel_chk_tl_type:NnnT #2 { fp }
+ { \exp_args:No \@@_show_validate:n #2 }
+ { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_show_validate:n, \@@_show_validate_aux:n, \@@_show_validate:nn,
+% }
+% \begin{macro}[EXP]
+% {
+% \@@_show_validate:w,
+% \@@_tuple_show_validate:w,
+% \@@_symbolic_show_validate:w
+% }
+% To support symbolic expression, validation has to be done recursively.
+% Two |\@@_show_validate:nn| wrappers are used to distinguish between
+% initial and recursive calls, in which the former provides a demo of
+% possible forms a |fp| variable would have.
+% \begin{macrocode}
+\cs_new:Npn \@@_show_validate:n #1
+ {
+ \@@_show_validate:nn { #1 }
{
- \str_if_eq:eeTF { \tl_head:N #2 } { \s_@@_tuple } { \exp_not:o #2 }
+ \s_@@ \@@_chk:w ??? ;~ or \iow_newline:
+ \s_@@_tuple \_@@_tuple_chk:w ? ;~ or \iow_newline:
+ \s_@@_symbolic \@@_symbolic_chk:w ? , ? ;
+ }
+ }
+\cs_new:Npn \@@_show_validate_aux:n #1
+ {
+ \@@_show_validate:nn { #1 } { }
+ }
+\cs_new:Npn \@@_show_validate:nn #1#2
+ {
+ \tl_if_empty:nF { #1 }
+ {
+ \str_case:enF { \tl_head:n { #1 } }
{
- \exp_after:wN \@@_show_validate:w #2
- \s_@@ \@@_chk:w ??? ; \s_@@_stop
+ { \s_@@ }
+ {
+ \@@_show_validate:w #1 \s_@@
+ \@@_chk:w ??? ; \s_@@_stop
+ }
+ { \s_@@_tuple }
+ {
+ \@@_tuple_show_validate:w #1
+ \s_@@_tuple \_@@_tuple_chk:w ?? ; \s_@@_stop
+ }
+ { \s_@@_symbolic }
+ {
+ \@@_symbolic_show_validate:w #1
+ \s_@@_symbolic \@@_symbolic_chk:w ? , ?? ; \s_@@_stop
+ }
}
+ { #2 }
}
- { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
}
\cs_new:Npn \@@_show_validate:w
#1 \s_@@ \@@_chk:w #2#3#4#5 ; #6 \s_@@_stop
{
- \token_if_eq_meaning:NNTF #2 1
- { \s_@@ \@@_chk:w #2 #3 {#4} #5 ; }
- { \s_@@ \@@_chk:w #2 #3 #4 #5 ; }
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \token_if_eq_meaning:NNTF #2 1
+ { \s_@@ \@@_chk:w #2 #3 { #4 } #5 ; }
+ { \s_@@ \@@_chk:w #2 #3 #4 #5 ; }
+ \@@_show_validate_aux:n { #6 }
+ }
}
+\cs_new:Npn \@@_tuple_show_validate:w
+ #1 \s_@@_tuple \_@@_tuple_chk:w #2#3 ; #4 \s_@@_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ { \s_@@_tuple \@@_tuple_chk:w { \@@_show_validate_aux:n { #2 } } ; }
+ }
+\cs_new:Npn \@@_symbolic_show_validate:w
+ #1 \s_@@_symbolic \@@_symbolic_chk:w #2 , #3#4 ; #5 \s_@@_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \s_@@_symbolic \@@_symbolic_chk:w \exp_not:n { #2 } ,
+ { \@@_show_validate_aux:n { #3 } };
+ \@@_show_validate_aux:n { #5 }
+ }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -97,8 +97,8 @@
% When used directly without an accessor function, floating points
% should produce an error: this is the role of \cs{@@_chk:w}. We could
% make floating point variables be protected to prevent them from
-% expanding under \texttt{x}-expansion, but it seems more convenient to
-% treat them as a subcase of token list variables.
+% expanding under \texttt{e}/\texttt{x}-expansion, but it seems more
+% convenient to treat them as a subcase of token list variables.
%
% The (decimal part of the) IEEE-754-2008 standard requires the format
% to be able to represent special floating point numbers besides the
@@ -235,7 +235,8 @@
% where \cs{s_@@} is equal to the \TeX{} primitive \tn{relax}, and
% \cs{@@_chk:w} is protected. The rest of the floating point number
% is made of characters (or \tn{relax}). This ensures that nothing
-% expands under \texttt{f}-expansion, nor under \texttt{x}-expansion.
+% expands under \texttt{f}-expansion, nor under
+% \texttt{e}/\texttt{x}-expansion.
% However, when typeset, \cs{s_@@} does nothing, and \cs{@@_chk:w} is
% expanded. We define \cs{@@_chk:w} to produce an error.
% \begin{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -72,7 +72,7 @@
\cs_new_protected:Npn \@@_new_function:n #1
{
\@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { invalid-identifier } {#1} }
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
\cs_if_exist:cT { @@_parse_word_#1:N }
{
@@ -91,12 +91,12 @@
% \begin{macro}
% {\@@_function_set_parsing:Nn, \@@_function_set_parsing_aux:NNn}
% \begin{macrocode}
-\cs_new:Npn \@@_function_set_parsing:Nn #1#2
+\cs_new_protected:Npn \@@_function_set_parsing:Nn #1#2
{
\exp_args:NNc \@@_function_set_parsing_aux:NNn #1
{ @@_parse_word_#2:N } {#2}
}
-\cs_new:Npn \@@_function_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \@@_function_set_parsing_aux:NNn #1#2#3
{
\cs_set:Npe \@@_tmp:w
{
@@ -171,7 +171,7 @@
\cs_new_protected:Npn \@@_set_function:Nnnn #1#2#3#4
{
\@@_id_if_invalid:nTF {#2}
- { \msg_error:nnn { fp } { invalid-identifier } {#2} }
+ { \msg_error:nnn { fp } { id-invalid } {#2} }
{
\cs_if_exist:cF { @@_parse_word_#2:N }
{ \@@_function_set_parsing:Nn \cs_set_eq:NN {#2} }
@@ -180,8 +180,10 @@
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} }
{
\int_incr:N \l_@@_function_arg_int
- \exp_args:Ne \@@_clear_variable:n
- { _ \tex_romannumeral:D \l_@@_function_arg_int }
+ \exp_args:Ne \@@_clear_variable_aux:n
+ {
+ \c_underscore_str \tex_romannumeral:D \l_@@_function_arg_int
+ }
\fp_clear_variable:n {##1}
\cs_set_nopar:cpe { l_@@_variable_##1_fp }
{
@@ -264,8 +266,12 @@
{ \exp_args:No \@@_clear_function:n { \tl_to_str:n {#1} } }
\cs_new_protected:Npn \@@_clear_function:n #1
{
- \cs_undefine:c { @@_parse_word_ #1 :N }
- \@@_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ {
+ \cs_set_eq:cN { @@_#1_o:w } \tex_undefine:D
+ \@@_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
}
% \end{macrocode}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -157,8 +157,8 @@
% \begin{macro}[EXP]
% {\@@_if_has_symbolic:nTF, \@@_if_has_symbolic_aux:w}
% Tests if |#1| contains \cs{s_@@_symbolic} at top-level. This test
-% should be precise enough to determine if a given an array contains a
-% symbolic expression or only consists in floating points. Used in
+% should be precise enough to determine if a given array contains a
+% symbolic expression or only consists of floating points. Used in
% \cs{@@_exp_after_symbolic_f:nw}.
% \begin{macrocode}
\cs_new:Npn \@@_if_has_symbolic:nTF #1
@@ -255,9 +255,9 @@
% \@@_&_symbolic_o:ww,
% }
% \begin{macrocode}
-\cs_set:Npn \@@_tmp:w #1#2
+\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_nopar:cpn
+ \cs_new:cpn
{ @@_symbolic_#2_symbolic_o:ww }
{ \@@_symbolic_binary_o:Nww #1 }
\cs_new_eq:cc
@@ -277,7 +277,7 @@
%
% \subsection{Applying prefix functions to expressions}
%
-% \begin{macro}[aux, EXP]{\@@_symbolic_unary_o:NNw}
+% \begin{macro}[EXP]{\@@_symbolic_unary_o:NNw}
% Used when applying infix operators to expressions.
% \begin{macrocode}
\cs_new:Npn \@@_symbolic_unary_o:NNw #1#2#3; @
@@ -313,7 +313,7 @@
{not} {sec} {set_sign} {sin} {sqrt} {tan}
}
{
- \cs_new_nopar:cpe { @@_symbolic_#1_o:w }
+ \cs_new:cpe { @@_symbolic_#1_o:w }
{
\exp_not:N \@@_symbolic_unary_o:NNw
\exp_not:c { @@_#1_o:w }
@@ -336,7 +336,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:w #1#2#3
{
- \cs_new_nopar:cpn { @@_symbolic_to_#1:w }
+ \cs_new:cpn { @@_symbolic_to_#1:w }
{
\exp_after:wN \@@_symbolic_convert:wnnN
\exp:w \exp_end_continue_f:w
@@ -384,7 +384,8 @@
% \begin{macro}[rEXP]
% {
% \@@_symbolic_unary_to_tl:NNw,
-% \@@_symbolic_binary_to_tl:Nww
+% \@@_symbolic_binary_to_tl:Nww,
+% \@@_symbolic_function_to_tl:Nw
% }
% Converting a symbolic expression to a token list is possible.
% \begin{macrocode}
@@ -440,6 +441,7 @@
% loop through letters in |#1|: if it is not a letter, break the loop
% and return \texttt{true}. If the end of the loop is reached
% without finding any non-letter, return \texttt{false}.
+% Note |#1| must be a str (i.e., resulted from \cs{tl_to_str:n}).
% \begin{macrocode}
\prg_new_protected_conditional:Npnn
\@@_id_if_invalid:n #1 { T , F , TF }
@@ -447,10 +449,10 @@
\tl_if_empty:nTF {#1}
{ \prg_return_true: }
{
- \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ }
+ \tl_if_in:nnTF { #1 } { ~ }
{ \prg_return_true: }
{
- \exp_after:wN \@@_id_if_invalid_aux:N \tl_to_str:n {#1}
+ \@@_id_if_invalid_aux:N #1
{ ? \prg_break:n \prg_return_false: }
\prg_break_point:
}
@@ -511,9 +513,9 @@
% \begin{macro}
% {\@@_variable_set_parsing:Nn, \@@_variable_set_parsing_aux:NNn}
% \begin{macrocode}
-\cs_new:Npn \@@_variable_set_parsing:Nn #1#2
+\cs_new_protected:Npn \@@_variable_set_parsing:Nn #1#2
{
- \cs_set_nopar:Npn \@@_tmp:w
+ \cs_set:Npn \@@_tmp:w
{
\@@_exp_after_symbolic_f:nw { \@@_parse_infix:NN }
\s_@@_symbolic \@@_symbolic_chk:w
@@ -522,7 +524,7 @@
\exp_args:NNc \@@_variable_set_parsing_aux:NNn #1
{ @@_parse_word_#2:N } {#2}
}
-\cs_new:Npn \@@_variable_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \@@_variable_set_parsing_aux:NNn #1#2#3
{
\cs_if_eq:NNF #2 \@@_tmp:w
{
@@ -541,23 +543,32 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\fp_clear_variable:n}
-% \begin{macro}{\@@_clear_variable:n}
+% \begin{macro}
+% {
+% \fp_clear_variable:n,
+% \@@_clear_variable:n, \@@_clear_variable_aux:n
+% }
+% We need local undefining, so have to do it low-level.
+% \cs{@@_clear_variable_aux:n} is needed by \cs{@@_set_function:Nnnn}
+% to skip \cs{@@_id_if_invalid:nTF}.
% \begin{macrocode}
\cs_new_protected:Npn \fp_clear_variable:n #1
{
+ \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} }
+ }
+\cs_new_protected:Npn \@@_clear_variable:n #1
+ {
\@@_id_if_invalid:nTF {#1}
{ \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} } }
+ { \@@_clear_variable_aux:n {#1} }
}
-\cs_new_protected:Npn \@@_clear_variable:n #1
+\cs_new_protected:Npn \@@_clear_variable_aux:n #1
{
- \cs_undefine:c { l_@@_variable_#1_fp }
+ \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D
\@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\fp_new_variable:n}
% \begin{macro}{\@@_new_variable:n}
@@ -567,20 +578,22 @@
% \begin{macrocode}
\cs_new_protected:Npn \fp_new_variable:n #1
{
- \@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} } }
+ \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \@@_new_variable:n #1
{
- \cs_if_exist:cT { @@_parse_word_#1:N }
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nnn
- { fp } { id-already-defined } {#1}
- \cs_undefine:c { @@_parse_word_#1:N }
- \cs_undefine:c { l_@@_variable_#1_fp }
+ \cs_if_exist:cT { @@_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { @@_parse_word_#1:N }
+ \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D
+ }
+ \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
- \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
% \end{macrocode}
% \end{macro}
@@ -605,24 +618,26 @@
\flag_new:n { @@_symbolic }
\cs_new_protected:Npn \fp_set_variable:nn #1
{
- \@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} } }
+ \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \@@_set_variable:nn #1#2
{
- \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
- \fp_set:Nn \l_@@_symbolic_fp {#2}
- \cs_set_nopar:cpn { l_@@_variable_#1_fp }
- { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp }
- \flag_clear:n { @@_symbolic }
- \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp }
- \flag_if_raised:nT { @@_symbolic }
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nneee { fp } { id-loop }
- { \tl_to_str:n {#1} }
- { \tl_to_str:n {#2} }
- { \fp_to_tl:N \l_@@_symbolic_fp }
+ \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ \fp_set:Nn \l_@@_symbolic_fp {#2}
+ \cs_set_nopar:cpn { l_@@_variable_#1_fp }
+ { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp }
+ \flag_clear:n { @@_symbolic }
+ \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp }
+ \flag_if_raised:nT { @@_symbolic }
+ {
+ \msg_error:nneee { fp } { id-loop }
+ { #1 }
+ { \tl_to_str:n {#2} }
+ { \fp_to_tl:N \l_@@_symbolic_fp }
+ }
}
}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
%
% \begin{documentation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -768,7 +768,8 @@
% \end{syntax}
% Defines the \meta{identifier} to stand in any further expression for
% the result of evaluating the \meta{floating point expression}, with
-% the \meta{identifier} accepting the \meta{vars} (a comma list).
+% the \meta{identifier} accepting the \meta{vars} (a non-empty
+% comma-separated list).
% The result may contain other functions, which are
% then replaced by their results if they have any. For instance,
% \begin{quote}
@@ -1376,10 +1377,10 @@
% \end{syntax}
% Computes the arcsine, arccosine, arccosecant, or arcsecant of the
% \meta{fp expr} and returns the result in degrees, in the range
-% $[-90,90]$ for \texttt{asin} and \texttt{acsc} and $[0,180]$ for
-% \texttt{acos} and \texttt{asec}. For a result in radians, use
-% \texttt{asin}, \emph{etc.} If the argument of |asin| or |acos| lies
-% outside the range $[-1,1]$, or the argument of |acsc| or |asec|
+% $[-90,90]$ for \texttt{asind} and \texttt{acscd} and $[0,180]$ for
+% \texttt{acosd} and \texttt{asecd}. For a result in radians, use
+% \texttt{asin}, \emph{etc.} If the argument of |asind| or |acosd| lies
+% outside the range $[-1,1]$, or the argument of |acscd| or |asecd|
% inside the range $(-1,1)$, an \enquote{invalid operation} exception
% is raised. \enquote{Underflow} and \enquote{overflow} occur when
% appropriate.
@@ -1424,8 +1425,8 @@
% \cs{fp_eval:n} \{ |acotd(| \meta{fp expr} |)| \}
% \cs{fp_eval:n} \{ |acotd(| \meta{fp expr_1} , \meta{fp expr_2} |)| \}
% \end{syntax}
-% Those functions yield an angle in degrees: \texttt{atand} and
-% \texttt{acotd} are their analogs in radians. The one-argument
+% Those functions yield an angle in degrees: \texttt{atan} and
+% \texttt{acot} are their analogs in radians. The one-argument
% versions compute the arctangent or arccotangent of the
% \meta{fp expr}: arctangent takes values in the range $[-90,90]$, and
% arccotangent in the range $[0,180]$. The two-argument arctangent
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1035,7 +1035,7 @@
% |=|, |<| or |>| with category code $12$.
% The \cs{else:} branch is optional.
% \begin{texnote}
-% These are both names for the \TeX{} primitive \tn{ifnum}.
+% This is the \TeX{} primitive \tn{ifnum}.
% \end{texnote}
% \end{function}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -101,7 +101,7 @@
% given \meta{specific type} of token list. Produces suitable error
% messages if the \meta{control sequence} does not exist, or if it is
% not a token list variable at all, or if the \meta{control sequence}
-% differs from the result of |x|-expanding \meta{reconstruction}. If
+% differs from the result of |e|-expanding \meta{reconstruction}. If
% all of these tests succeed then the \meta{true code} is run.
% \end{function}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1023,12 +1023,12 @@
% all). Spaces are trimmed from the ends of the \meta{key} and \meta{value},
% then one \emph{outer} set of braces is removed from the \meta{key}
% and \meta{value} as part of the processing. If you need exactly the output
-% shown above, you'll need to either \texttt{x}-type or \texttt{e}-type expand
+% shown above, you'll need to either \texttt{e}-type or \texttt{x}-type expand
% the function.
% \begin{texnote}
% The result of each list element is returned within \cs{exp_not:n}, which
% means that the converted input stream does not expand further when
-% appearing in an \texttt{x}-type or \texttt{e}-type argument expansion.
+% appearing in an \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1068,7 +1068,7 @@
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
% converted input stream does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1805,7 +1805,7 @@
% }
% Searching for a property means finding the last |.| in the input,
% and storing the text before and after it. Everything is turned into
-% strings, so there is no problem using an \texttt{x}-type expansion. Since
+% strings, so there is no problem using an \texttt{e}-type expansion. Since
% \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this
% function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some
% speed.
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -244,13 +244,12 @@
% Wrapper around |require'|\meta{module}|'|.
% \begin{macrocode}
\str_new:N \l_@@_err_msg_str
-\cs_generate_variant:Nn \msg_error:nnnn { nnnV }
\cs_new_protected:Npn \lua_load_module:n #1
{
\bool_if:nF { \@@_load_module_p:n { #1 } }
{
\msg_error:nnnV
- { luatex } { module-not-found } { #1 } { \l_@@_err_msg_str }
+ { luatex } { module-not-found } { #1 } \l_@@_err_msg_str
}
}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -288,7 +288,7 @@
% message, extra arguments are ignored, or empty arguments added (of
% course the sense of the message may be impaired). The four arguments are
% converted to strings before being added to the message text: the
-% \texttt{x}-type variants should be used to expand material.
+% \texttt{e}-type variants should be used to expand material.
% Note that this expansion takes place with the standard definitions in
% effect, which means that shorthands such as |\~| or |\\| are
% \emph{not} available; instead one should use \cs{iow_char:N} |\~| and
@@ -961,7 +961,7 @@
% \begin{macro}{\@@_interrupt_text:n, \@@_interrupt_more_text:n}
% First setup \TeX{}'s \tn{errhelp} register with the extra help |#1|,
% then build a nice-looking error message with |#2|. Everything is
-% done using \texttt{x}-type expansion as the new line markers are
+% done using \texttt{e}-type expansion as the new line markers are
% different for the two type of text and need to be correctly set up.
% The auxiliary \cs{@@_interrupt_more_text:n} receives its argument
% as a line-wrapped string, which is thus unaffected by expansion.
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -335,8 +335,8 @@
% \cs{prop_get:NnN}.
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{value}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -358,7 +358,7 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded} primitive
% (\cs{exp_not:n}), which means that the key--value list does not expand
-% further when appearing in an \texttt{x}-type or \texttt{e}-type argument expansion.
+% further when appearing in an \texttt{e}-type or \texttt{x}-type argument expansion.
% It also needs exactly two steps of expansion.
% \end{texnote}
% \end{function}
@@ -1258,7 +1258,7 @@
% \meta{value} may contain arbitrary tokens, it is not safe to include
% them in the argument of \cs{@@_split:NnTF}. We thus start by
% storing in \cs{l_@@_internal_tl} tokens which (after
-% \texttt{x}-expansion) encode the key--value pair. This variable can
+% \texttt{e}-expansion) encode the key--value pair. This variable can
% safely be used in \cs{@@_split:NnTF}. If the \meta{key} was absent,
% append the new key--value to the list.
% Otherwise concatenate the extracts |##1|
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3quark} package\\ Quarks^^A
+% The \pkg{l3quark} package\\ Quarks and scan marks^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1090,7 +1090,7 @@
% When actually building the result,
% \begin{itemize}
% \item \tn{toks}\meta{position} holds \meta{tokens} which \texttt{o}-
-% and \texttt{x}-expand to the \meta{position}-th token in the query.
+% and \texttt{e}-expand to the \meta{position}-th token in the query.
% \item \cs{g_@@_balance_intarray} holds the balance of begin-group and
% end-group character tokens which appear before that point in the
% token list.
@@ -1160,12 +1160,12 @@
%
% \begin{macro}{\@@_toks_put_left:Ne}
% \begin{macro}{\@@_toks_put_right:Ne, \@@_toks_put_right:Nn}
-% During the building phase we wish to add \texttt{x}-expanded
+% During the building phase we wish to add \texttt{e}-expanded
% material to \tn{toks}, either to the left or to the right. The
% expansion is done \enquote{by hand} for optimization (these
% operations are used quite a lot). The \texttt{Nn} version of
% \cs{@@_toks_put_right:Ne} is provided because it is more
-% efficient than \texttt{x}-expanding with \cs{exp_not:n}.
+% efficient than \texttt{e}-expanding with \cs{exp_not:n}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_toks_put_left:Ne #1#2
{
@@ -1188,7 +1188,7 @@
% \begin{macro}[rEXP]{\@@_curr_cs_to_str:}
% Expands to the string representation of the token (known to be a
% control sequence) at the current position \cs{l_@@_curr_pos_int}.
-% It should only be used in \texttt{x}-expansion to avoid losing a
+% It should only be used in \texttt{e}/\texttt{x}-expansion to avoid losing a
% leading space.
% \begin{macrocode}
\cs_new:Npn \@@_curr_cs_to_str:
@@ -1705,7 +1705,7 @@
% a string, then read from left to right, interpreting backslashes as
% escaping the next character. Unescaped characters are fed to the
% function \meta{inline~1}, and escaped characters are fed to the function
-% \meta{inline~2} within an \texttt{x}-expansion context (typically those
+% \meta{inline~2} within an \texttt{e}-expansion context (typically those
% functions perform some tests on their argument to decide how to output
% them). The escape sequences |\a|, |\e|, |\f|, |\n|, |\r|, |\t| and
% |\x| are recognized, and those are replaced by the corresponding
@@ -1712,7 +1712,7 @@
% character, then fed to \meta{inline~3}. The result is then left in the
% input stream. Spaces are ignored unless escaped.
%
-% The conversion is done within an \texttt{x}-expanding assignment.
+% The conversion is done within an \texttt{e}-expanding assignment.
%
% \begin{macro}{\@@_escape_use:nnnn}
% The result is built in \cs{l_@@_internal_a_tl}, which is then left
@@ -2393,7 +2393,7 @@
% \begin{macro}{\@@_compile:w, \@@_compile_end:}
% Used when compiling a user regex or a regex for the |\c{...}| escape
% sequence within another regex. Start building a token list within a
-% group (with \texttt{x}-expansion at the outset), and set a few
+% group (with \texttt{e}-expansion at the outset), and set a few
% variables (group level, catcodes), then start the first branch. At
% the end, make sure there are no dangling classes nor groups, close
% the last branch: we are done building \cs{l_@@_internal_regex}.
@@ -3638,7 +3638,7 @@
%
% \begin{macro}[EXP]{\@@_compile_u_loop:NN}
% We collect the characters for the argument of |\u| within an
-% \texttt{x}-expanding assignment. In principle we could just wait to
+% \texttt{e}-expanding assignment. In principle we could just wait to
% encounter a right brace, but this is unsafe: if the right brace was
% missing, then we would reach the end-markers of the regex, and
% continue, leading to obscure fatal errors. Instead, we only allow
@@ -4220,7 +4220,7 @@
\cs_new_protected:Npn \@@_show_item_exact_cs:n #1
{
\seq_set_split:Nnn \l_@@_internal_seq { \scan_stop: } {#1}
- \seq_set_map_x:NNn \l_@@_internal_seq
+ \seq_set_map_e:NNn \l_@@_internal_seq
\l_@@_internal_seq { \iow_char:N\\##1 }
\@@_show_one:n
{ control~sequence~ \seq_use:Nn \l_@@_internal_seq { ~or~ } }
@@ -5363,7 +5363,7 @@
}
\cs_new_protected:Npn \@@_match_once_init_aux:
{
- \tl_build_clear:N \l_@@_matched_analysis_tl
+ \tl_build_begin:N \l_@@_matched_analysis_tl
\tl_clear:N \l_@@_curr_analysis_tl
}
% \end{macrocode}
@@ -5663,7 +5663,7 @@
\l_@@_fresh_thread_bool
\int_set_eq:NN \l_@@_success_pos_int \l_@@_curr_pos_int
\int_set_eq:NN \l_@@_last_char_success_int \l_@@_last_char_int
- \tl_build_clear:N \l_@@_matched_analysis_tl
+ \tl_build_begin:N \l_@@_matched_analysis_tl
\tl_set_eq:NN \l_@@_success_submatches_tl
\l_@@_curr_submatches_tl
\prg_break:
@@ -5748,7 +5748,7 @@
% \cs{exp_not:n} requires a braced argument. As far as I can tell, it
% is only needed if the user tries to include in the replacement text
% a control sequence set equal to a macro parameter character, such as
-% \cs{c_parameter_token}. Indeed, within an \texttt{x}-expanding
+% \cs{c_parameter_token}. Indeed, within an \texttt{e}/\texttt{x}-expanding
% assignment, \cs{exp_not:N}~|#| behaves as a single |#|, whereas
% \cs{exp_not:n}~|{#}| behaves as a doubled |##|.
% \begin{macrocode}
@@ -5774,7 +5774,7 @@
% exclusive. The function \cs{@@_query_range:nn} \Arg{min}
% \Arg{max} unpacks registers from the position \meta{min} to the
% position $\meta{max}-1$ included. Once this is expanded, a second
-% \texttt{x}-expansion results in the actual tokens from the
+% \texttt{e}-expansion results in the actual tokens from the
% query. That second expansion is only done by user functions at the
% very end of their operation, after checking (and correcting) the
% brace balance first.
@@ -6056,9 +6056,7 @@
% Unless the submatch appears inside a |\c{...}| or |\u{...}|
% construction, it must be taken into account in the brace balance.
% Later on, |##1| will be replaced by a pointer to the $0$-th submatch for a
-% given match. There is an \cs{exp_not:N} here as at the point-of-use
-% of \cs{g_@@_balance_tl} there is an \texttt{x}-type expansion which is needed
-% to get |##1| in correctly.
+% given match.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_put_submatch:n #1
{
@@ -6292,7 +6290,7 @@
%
% \begin{macro}{\@@_replacement_c_A:w}
% For an active character, expansion must be avoided, twice because we
-% later do two \texttt{x}-expansions, to unpack \tn{toks} for the
+% later do two \texttt{e}-expansions, to unpack \tn{toks} for the
% query, and to expand their contents to tokens of the query.
% \begin{macrocode}
\char_set_catcode_active:N \^^@
@@ -6305,7 +6303,7 @@
% An explicit begin-group token increases the balance, unless within a
% |\c{...}| or |\u{...}| construction. Add the desired begin-group
% character, using the standard \cs{if_false:} trick. We eventually
-% \texttt{x}-expand twice. The first time must yield a balanced token
+% \texttt{e}-expand twice. The first time must yield a balanced token
% list, and the second one gives the bare begin-group token. The
% \cs{exp_after:wN} is not strictly needed, but is more consistent
% with \pkg{l3tl-analysis}.
@@ -6326,7 +6324,7 @@
% This is not quite catcode-related: when the user requests a
% character with category \enquote{control sequence}, the
% one-character control symbol is returned. As for the active
-% character, we prepare for two \texttt{x}-expansions.
+% character, we prepare for two \texttt{e}-expansions.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_c_C:w #1#2
{
@@ -6347,7 +6345,7 @@
% \end{macro}
%
% \begin{macro}{\@@_replacement_c_E:w}
-% Similar to the begin-group case, the second \texttt{x}-expansion
+% Similar to the begin-group case, the second \texttt{e}-expansion
% produces the bare end-group token.
% \begin{macrocode}
\char_set_catcode_group_end:N \^^@
@@ -6391,7 +6389,7 @@
%
% \begin{macro}{\@@_replacement_c_P:w}
% For macro parameters, expansion is a tricky issue. We need to
-% prepare for two \texttt{x}-expansions and passing through various
+% prepare for two \texttt{e}-expansions and passing through various
% macro definitions. Note that we cannot replace one \cs{exp_not:n} by
% doubling the macro parameter characters because this would misbehave
% if a mischievous user asks for |\c{\cP\#}|, since that macro
@@ -7213,7 +7211,7 @@
% this match; we need to add the tokens from the end of the match to
% the end of the query. Finally, store the result in the user's
% variable after closing the group: this step involves an additional
-% \texttt{x}-expansion, and checks that braces are balanced in the
+% \texttt{e}-expansion, and checks that braces are balanced in the
% final result.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replace_once:nnN #1#2
@@ -7303,7 +7301,7 @@
% \@@_group_end_replace:N, \@@_group_end_replace_try:,
% \@@_group_end_replace_check:w, \@@_group_end_replace_check:n
% }
-% At this stage \cs{l_@@_internal_a_tl} (|x|-expands to the desired
+% At this stage \cs{l_@@_internal_a_tl} (|e|-expands to the desired
% result). Guess from \cs{l_@@_balance_int} the number of braces to
% add before or after the result then try expanding. The simplest
% case is when \cs{l_@@_internal_a_tl} together with the braces we
@@ -7476,7 +7474,7 @@
\@@_single_match:
#1
\@@_match_init:
- \tl_build_clear:N \l_@@_input_tl
+ \tl_build_begin:N \l_@@_input_tl
\@@_match_once_init:
\peek_analysis_map_inline:n
{
@@ -7499,7 +7497,7 @@
% match. For \cs{peek_regex_remove_once:nTF} we reinsert the tokens
% seen only if the match failed; otherwise we just reinsert the
% tokens~|#1|, with one expansion. To be more precise, |#1| consists
-% of tokens that \texttt{o}-expand and \texttt{x}-expand to the last
+% of tokens that \texttt{o}-expand and \texttt{e}-expand to the last
% token seen, for example it is \cs{exp_not:N} \meta{cs} for a control
% sequence. This means that just doing \cs{exp_after:wN}
% \cs{l_@@_peek_true_tl} |#1| would be unsafe because the expansion of
@@ -7661,12 +7659,12 @@
% \begin{macro}{\@@_peek_replacement_put:n}
% While building the replacement function
% \cs{@@_replacement_do_one_match:n}, we often want to put simple
-% material, given as |#1|, whose \texttt{x}-expansion
+% material, given as |#1|, whose \texttt{e}-expansion
% \texttt{o}-expands to a single token. Normally we can just add the
% token to \cs{l_@@_build_tl}, but for
% \cs{peek_regex_replace_once:nnTF} we eventually want to do some
% strange expansion that is basically using \cs{exp_after:wN} to jump
-% through numerous tokens (we cannot use \texttt{x}-expansion like for
+% through numerous tokens (we cannot use \texttt{e}-expansion like for
% \cs{regex_replace_once:nnNTF} because it is ok for the result to be
% unbalanced since we insert it in the input stream rather than
% storing it. When within a csname we don't do any such shenanigan
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -327,8 +327,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -342,8 +342,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -740,15 +740,15 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[added = 2020-07-16]
-% {\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
+% \begin{function}[added = 2020-07-16, updated = 2023-10-26]
+% {\seq_set_map_e:NNn, \seq_gset_map_e:NNn}
% \begin{syntax}
-% \cs{seq_set_map_x:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function}
+% \cs{seq_set_map_e:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function}
% \end{syntax}
% Applies \meta{inline function} to every \meta{item} stored
% within the \meta{seq~var_2}. The \meta{inline function} should
% consist of code which will receive the \meta{item} as |#1|.
-% The sequence resulting from \texttt{x}-expanding
+% The sequence resulting from \texttt{e}-expanding
% \meta{inline function} applied to each \meta{item}
% is assigned to \meta{seq~var_1}. As such, the code
% in \meta{inline function} should be expandable.
@@ -796,8 +796,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -821,8 +821,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1308,14 +1308,14 @@
% spaces the item is enclosed within braces. After
% \cs{tl_replace_all:Nnn}, the token list \cs{l_@@_internal_a_tl}
% is a repetition of the pattern
-% \cs{@@_set_split_auxi:w} \cs{prg_do_nothing:}
+% \cs{@@_set_split:Nw} \cs{prg_do_nothing:}
% \meta{item with spaces} \cs{@@_set_split_end:}.
-% Then, \texttt{x}-expansion causes \cs{@@_set_split_auxi:w}
+% Then, \texttt{e}-expansion causes \cs{@@_set_split:Nw}
% to trim spaces, and leaves its result as
-% \cs{@@_set_split_auxii:w} \meta{trimmed item}
+% \cs{@@_set_split:w} \meta{trimmed item}
% \cs{@@_set_split_end:}. This is then converted
% to the \pkg{l3seq} internal structure by another
-% \texttt{x}-expansion. In the first step, we insert
+% \texttt{e}-expansion. In the first step, we insert
% \cs{prg_do_nothing:} to avoid losing braces too early:
% that would cause space trimming to act within those
% lost braces. The second step is solely there to strip
@@ -1480,7 +1480,7 @@
%
% \begin{macro}{\@@_wrap_item:n}
% This function converts its argument to a proper sequence item
-% in an \texttt{x}-expansion context.
+% in an \texttt{e}-expansion context.
% \begin{macrocode}
\cs_new:Npn \@@_wrap_item:n #1 { \exp_not:n { \@@_item:n {#1} } }
% \end{macrocode}
@@ -1542,15 +1542,15 @@
% items one at a time to an intermediate sequence.
% The approach taken is therefore similar to
% that in \cs{@@_pop_right:NNN}, using a \enquote{flexible}
-% \texttt{x}-type expansion to do most of the work. As \cs{tl_if_eq:nnT}
+% \texttt{e}-type expansion to do most of the work. As \cs{tl_if_eq:nnT}
% is not expandable, a two-part strategy is needed. First, the
-% \texttt{x}-type expansion uses \cs{str_if_eq:nnT} to find potential
+% \texttt{e}-type expansion uses \cs{str_if_eq:nnT} to find potential
% matches. If one is found, the expansion is halted and the necessary
-% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{x}-type
+% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{e}-type
% is started again, including all of the items copied already. This
% happens repeatedly until the entire sequence has been scanned. The code
-% is set up to avoid needing and intermediate scratch list: the lead-off
-% \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
+% is set up to avoid needing an intermediate scratch list: the lead-off
+% \texttt{e}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
% \begin{macrocode}
\cs_new_protected:Npn \seq_remove_all:Nn
{ \@@_remove_all_aux:NNn \__kernel_tl_set:Ne }
@@ -1993,7 +1993,7 @@
% use some of the same ideas as getting from the right. What is needed is a
% \enquote{flexible length} way to set a token list variable. This is
% supplied by the |{ \if_false: } \fi:| \ldots
-% |\if_false: { \fi: }| construct. Using an \texttt{x}-type
+% |\if_false: { \fi: }| construct. Using an \texttt{e}-type
% expansion and a \enquote{non-expanding} definition for \cs{@@_item:n},
% the left-most $n - 1$ entries in a sequence of $n$ items are stored
% back in the sequence. That needs a loop of unknown length, hence using the
@@ -2280,7 +2280,7 @@
% }
% \UnitTested
% This is just a specialised version of the in-line mapping function,
-% using an \texttt{x}-type expansion for the code set up so that the
+% using an \texttt{e}-type expansion for the code set up so that the
% number of |#| tokens required is as expected.
% \begin{macrocode}
\cs_new_protected:Npn \seq_map_variable:NNn #1#2#3
@@ -2389,17 +2389,17 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
-% \begin{macro}{\@@_set_map_x:NNNn}
+% \begin{macro}{\seq_set_map_e:NNn, \seq_gset_map_e:NNn}
+% \begin{macro}{\@@_set_map_e:NNNn}
% Very similar to \cs{seq_set_filter:NNn}. We could actually
% merge the two within a single function, but it would have weird
% semantics.
% \begin{macrocode}
-\cs_new_protected:Npn \seq_set_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \seq_gset_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne }
-\cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4
+\cs_new_protected:Npn \seq_set_map_e:NNn
+ { \@@_set_map_e:NNNn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \seq_gset_map_e:NNn
+ { \@@_set_map_e:NNNn \__kernel_tl_gset:Ne }
+\cs_new_protected:Npn \@@_set_map_e:NNNn #1#2#3#4
{
\@@_push_item_def:n { \exp_not:N \@@_item:n {#4} }
#1 #2 { #3 }
@@ -2411,7 +2411,7 @@
%
% \begin{macro}{\seq_set_map:NNn, \seq_gset_map:NNn}
% \begin{macro}{\@@_set_map:NNNn}
-% Similar to \cs{seq_set_map_x:NNn}, but prevents expansion of the
+% Similar to \cs{seq_set_map_e:NNn}, but prevents expansion of the
% <inline function>.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_map:NNn
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -907,7 +907,7 @@
% Inserts a horizontal \meta{skip} into the current list.
% The argument can also be a \meta{dim}.
% \begin{texnote}
-% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip} renamed.
+% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip}.
% \end{texnote}
% \end{function}
%
@@ -920,7 +920,7 @@
% Inserts a vertical \meta{skip} into the current list.
% The argument can also be a \meta{dim}.
% \begin{texnote}
-% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip} renamed.
+% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip}.
% \end{texnote}
% \end{function}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -345,7 +345,7 @@
%
% \begin{variable}{str_byte, str_error}
% Conversions from one \meta{encoding}/\meta{escaping} pair to another
-% are done within \texttt{x}-expanding assignments. Errors are
+% are done within \texttt{e}-expanding assignments. Errors are
% signalled by raising the relevant flag.
% \begin{macrocode}
\flag_new:n { str_byte }
@@ -979,7 +979,7 @@
% non-Unicode-aware engines we use a fall-back character |?| rather
% than nothing when given a character code outside $[0,255]$. We
% detect the presence of bad characters using a flag and only produce
-% a single error after the \texttt{x}-expanding assignment.
+% a single error after the \texttt{e}-expanding assignment.
% \begin{macrocode}
\bool_lazy_any:nTF
{
@@ -2515,7 +2515,7 @@
% its second argument (expanded or not). It sets \cs{@@_tmp:w} to
% expand to the character code of either of its two arguments
% depending on endianness, then triggers the \texttt{_loop} auxiliary
-% inside an \texttt{x}-expanding assignment to \cs{g_@@_result_tl}.
+% inside an \texttt{e}-expanding assignment to \cs{g_@@_result_tl}.
%
% The \texttt{_loop} auxiliary first checks for the end-of-string
% marker \cs{s_@@_stop}, calling the \texttt{_end} auxiliary if
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1036,7 +1036,7 @@
% simplified version of the token list code because neither the
% delimiter nor the replacement can contain macro parameters or
% braces. The delimiter \cs{s_@@_mark} cannot appear in the string to
-% edit so it is used in all cases. Some |x|-expansion is unnecessary.
+% edit so it is used in all cases. Some |e|-expansion is unnecessary.
% There is no need to avoid losing braces nor to protect against
% expansion. The ending code is much simplified and does not need to
% hide in braces.
@@ -1266,7 +1266,7 @@
{ \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop }
\cs_generate_variant:Nn \str_case:nn { V , o , e , nV , nv }
\prg_generate_conditional_variant:Nnn \str_case:nn
- { V , o , nV , nv } { T , F , TF }
+ { V , o , e , nV , nv } { T , F , TF }
\cs_new_eq:NN \str_case:Nn \str_case:Vn
\cs_new_eq:NN \str_case:NnT \str_case:VnT
\cs_new_eq:NN \str_case:NnF \str_case:VnF
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -54,7 +54,7 @@
% \begin{variable}[added = 2015-09-19, updated = 2019-10-27]{\c_sys_jobname_str}
% Constant that gets the \enquote{job name} assigned when \TeX{} starts.
% \begin{texnote}
-% This copies the contents of the primitive \tn{jobname}. For technical
+% This is the \TeX{} primitive \tn{jobname}. For technical
% reasons, the string here is not of the same internal form as other,
% but may be manipulated using normal string functions.
% \end{texnote}
@@ -73,7 +73,8 @@
% The date and time at which the current job was started: these are
% all reported as integers.
% \begin{texnote}
-% Whilst the underlying primitives can be altered by the user, this
+% Whilst the underlying \TeX{} primitives \tn{time}, \tn{day}, \tn{month},
+% and~\tn{year} can be altered by the user, this
% interface to the time and date is intended to be the \enquote{real}
% values.
% \end{texnote}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -192,8 +192,12 @@
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnw}
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnN}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_codepoint_title_auxi:nnnn ,
+% \@@_change_case_codepoint_title_auxii:nnnn
+% }
% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnn}
-% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_codepoint:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_codepoint:nn}
% \begin{macro}[EXP]
@@ -695,40 +699,39 @@
\@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
% \end{macrocode}
-% For titlecasing, we need to fully expand the new character to see if it
-% is a letter (or active).
+% For titlecasing, we need to obtain the general category of the current
+% codepoint.
% \begin{macrocode}
\cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4
{
\bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \tl_if_single:nTF {#4}
+ \exp_args:Ne \@@_change_case_codepoint_title_auxi:nnnn
{
- \bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
- {
- \bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { ! \int_compare_p:nNn {`#4} < { "80 } }
- }
- { \@@_change_case_codepoint_title:nnn }
- { \@@_change_case_codepoint_title:nnnnn { title } {#1} }
+ \codepoint_to_category:n
+ { \@@_codepoint_from_chars:Nw #4 }
}
- { \@@_change_case_codepoint_title:nnn }
}
{ \@@_change_case_codepoint_title:nnn }
{#2} {#3} {#4}
}
+\cs_new:Npn \@@_change_case_codepoint_title_auxi:nnnn #1#2#3#4
+ {
+ \tl_if_head_eq_charcode:nNTF {#1} { L }
+ { \@@_change_case_codepoint_title:nnn }
+ { \@@_change_case_codepoint_title_auxii:nnnn { title } }
+ {#2} {#3} {#4}
+ }
\cs_new:Npn \@@_change_case_codepoint_title:nnn #1#2#3
- { \@@_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} }
-\cs_new:Npn \@@_change_case_codepoint_title:nnnnn #1#2#3#4#5
+ { \@@_change_case_codepoint_title_auxii:nnnn { end } {#1} {#2} {#3} }
+\cs_new:Npn \@@_change_case_codepoint_title_auxii:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { @@_change_case_title_ #4 :nnnnn }
+ \cs_if_exist_use:cF { @@_change_case_title_ #3 :nnnnn }
{
- \cs_if_exist_use:cF { @@_change_case_upper_ #4 :nnnnn }
+ \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnnn }
{ \@@_change_case_codepoint:nnnnn }
}
- {#1} {#2} {#3} {#4} {#5}
+ { title } {#1} {#2} {#3} {#4}
}
\cs_new:Npn \@@_change_case_codepoint:nnnnn #1#2#3#4#5
{
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -188,13 +188,12 @@
% \end{itemize}
%
% Determining whether non-letter characters at the start of text should count
-% as the uppercase element is controllable. When \cs{l_text_titlecase_check_letter_bool} is
-% \texttt{true}, characters which are not letters (category code~$11$) are
-% \enquote{skipped}: the first \emph{letter} is uppercased.
-% (With $8$-bit engines, this is extended to active characters which form
-% part of a multi-byte letter codepoint.) When
-% \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first
-% character is uppercased, irrespective of the category code of the character.
+% as the uppercase element is controllable. When
+% \cs{l_text_titlecase_check_letter_bool} is \texttt{true}, codepoints which are
+% not letters (Unicode general category \texttt{L}) are not changed, and only
+% the first \emph{letter} is uppercased.
+% When \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first
+% codepoint is uppercased, irrespective of the general code of the character.
%
% \begin{function}[added = 2022-07-04]
% {
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -61,7 +61,7 @@
% \meta{token}:
% \begin{itemize}
% \item \meta{tokens}, which both \texttt{o}-expand and
-% \texttt{x}-expand to the \meta{token}. The detailed form of
+% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of
% \meta{tokens} may change in later releases.
% \item \meta{char code}, a decimal representation of the character
% code of the \meta{token}, $-1$ if it is a control sequence.
@@ -132,7 +132,7 @@
% We thus need a way to encode any \meta{token} (even begin-group and
% end-group character tokens) in a way amenable to manipulating tokens
% individually. The best we can do is to find \meta{tokens} which both
-% \texttt{o}-expand and \texttt{x}-expand to the given
+% \texttt{o}-expand and \texttt{e}/\texttt{x}-expand to the given
% \meta{token}. Collecting more information about the category code and
% character code is also useful for regular expressions, since most
% regexes are catcode-agnostic. The internal format thus takes the form
@@ -140,7 +140,7 @@
% \begin{quote}
% \meta{tokens} \cs{s_@@} \meta{catcode} \meta{char code} \cs{s_@@}
% \end{quote}
-% The \meta{tokens} \texttt{o}- \emph{and} \texttt{x}-expand to the
+% The \meta{tokens} \texttt{o}- \emph{and} \texttt{e}/\texttt{x}-expand to the
% original token in the token list or to the cluster of tokens
% corresponding to one Unicode character in the given encoding (for
% \pkg{l3str-convert}). The \meta{catcode} is given as a single hexadecimal
@@ -155,7 +155,7 @@
% converting from a general token list to the internal format.
%
% The current rule for converting a \meta{token} to a balanced set of
-% \meta{tokens} which both \texttt{o}-expands and \texttt{x}-expands to
+% \meta{tokens} which both \texttt{o}-expands and \texttt{e}/\texttt{x}-expands to
% it is the following.
% \begin{itemize}
% \item A control sequence |\cs| becomes |\exp_not:n { \cs }|
@@ -189,7 +189,7 @@
% then need to control expansion much more carefully: compare
% \cs{int_value:w} |`#1| \cs{s_@@} with \cs{int_value:w} |`#1|
% \cs{exp_stop_f:} \cs{exp_not:N} \cs{q_mark} to extract a character
-% code followed by the delimiter in an \texttt{x}-expansion.
+% code followed by the delimiter in an \texttt{e}-expansion.
% \begin{macrocode}
\scan_new:N \s_@@
% \end{macrocode}
@@ -350,7 +350,7 @@
% (\texttt{N}-type) argument by \TeX{}. The plan is to have a two pass
% system. In the first pass, locate special tokens, and store them in
% various \tn{toks} registers. In the second pass, which is done within
-% an \texttt{x}-expanding assignment, normal tokens are taken in as
+% an \texttt{e}-expanding assignment, normal tokens are taken in as
% \texttt{N}-type arguments, and special tokens are retrieved from the
% \tn{toks} registers, and removed from the input stream by some means.
% The whole process takes linear time, because we avoid building the
@@ -830,7 +830,7 @@
% while a control sequence is always longer (we have set the escape
% character to a printable value). In both cases, we leave
% \cs{exp_not:n} \Arg{token} \cs{s_@@} in the input stream
-% (after \texttt{x}-expansion). Here, \cs{exp_not:n} is used
+% (after \texttt{e}-expansion). Here, \cs{exp_not:n} is used
% rather than \cs{exp_not:N} because |#3| could be
% a macro parameter character or could be \cs{s_@@}
% (which must be hidden behind braces in the result).
@@ -937,7 +937,7 @@
% Check now whether we reached the end (we shouldn't keep the trailing
% end-group character that marked the end of the token list in the
% first pass).
-% Unpack the \tn{toks} register: when \texttt{x}-expanding again,
+% Unpack the \tn{toks} register: when \texttt{e}/\texttt{x}-expanding again,
% we will get the special token.
% Then leave the category code in the input stream, followed by
% the character code, and call \cs{@@_analysis_b_loop:w} with the next index.
@@ -1069,7 +1069,7 @@
% \end{macro}
%
% \begin{macro}[rEXP]{\@@_analysis_show:, \@@_analysis_show_loop:wNw}
-% Here, |#1| \texttt{o}- and \texttt{x}-expands to the token;
+% Here, |#1| \texttt{o}- and \texttt{e}/\texttt{x}-expands to the token;
% |#2| is the category code (one uppercase hexadecimal digit),
% $0$ for control sequences;
% |#3| is the character code, which we ignore.
@@ -1390,7 +1390,7 @@
% characters to anything else than character code~$32$), then we apply
% \cs{@@_analysis_b_char:Nn}, which detects active characters by
% comparing them to \cs{tex_undefined:D}, and we must have undefined
-% the active space for this test to work ---we use an |x|-expanding
+% the active space for this test to work ---we use an |e|-expanding
% assignment to get the active space in the right place. Finally
% \cs{@@_peek_analysis_char:w} puts the arguments in the correct
% order, including \cs{exp_not:n} for macro parameter characters and
@@ -1549,7 +1549,7 @@
% character code. In the latter two cases we call
% \cs{char_generate:nn} with suitable arguments and put suitable
% \cs{if_false:} \cs{fi:} constructions to make the result balanced
-% and such that \texttt{o}-expanding or \texttt{x}-expanding gives
+% and such that \texttt{o}-expanding or \texttt{e}/\texttt{x}-expanding gives
% back a single (unbalanced) begin-group or end-group character.
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_explicit:n #1
Added: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -0,0 +1,329 @@
+% \iffalse meta-comment
+%
+%% File: l3tl-build.dtx
+%
+% Copyright (C) 2018-2023 The LaTeX Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team at latex-project.org}
+% {latex-team at latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2023-11-01}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{Constructing \meta{tl~var} by accumulation}
+%
+% When creating a \meta{tl~var} by accumulation of many tokens, the performance
+% available using a combination of \cs{tl_set:Nn} and \cs{tl_put_right:Nn} or
+% similar begins to become an issue. To address this, a set of functions are
+% available to \enquote{build} a \meta{tl~var}. The performance of this approach
+% is much more efficient than the standard \cs{tl_put_right:Nn}, but the
+% constructed token list cannot be accessed during construction other than
+% by methods provided in this section.
+%
+% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N}
+% \begin{syntax}
+% \cs{tl_build_begin:N} \meta{tl~var}
+% \end{syntax}
+% Clears the \meta{tl~var} and sets it up to support other
+% \cs[no-index]{tl_build_\ldots{}} functions. Until \cs{tl_build_end:N}
+% \meta{tl~var} is called, applying any function from \pkg{l3tl} other
+% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect
+% results. The |begin| and |gbegin| functions must be used for local
+% and global \meta{tl~var} respectively.
+% \end{function}
+%
+% \begin{function}[added = 2018-04-01]
+% {
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
+% }
+% \begin{syntax}
+% \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
+% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens}
+% \end{syntax}
+% Adds \meta{tokens} to the left or right side of the current contents
+% of \meta{tl~var}. The \meta{tl~var} must have been set up with
+% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and
+% |gput| functions must be used for local and global \meta{tl~var}
+% respectively. The |right| functions are about twice faster than the
+% |left| functions.
+% \end{function}
+%
+% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N}
+% \begin{syntax}
+% \cs{tl_build_end:N} \meta{tl~var}
+% \end{syntax}
+% Gets the contents of \meta{tl~var} and stores that into the
+% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}.
+% The \meta{tl~var} must have
+% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}.
+% The |end| and |gend| functions must be used for local and global
+% \meta{tl~var} respectively. These functions completely remove the
+% setup code that enabled \meta{tl~var} to be used for other
+% \cs[no-index]{tl_build_\ldots{}} functions. After the action of
+% |end|/|gend|, the \meta{tl~var} may be manipulated using standard
+% \texttt{tl} functions.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3tl-build} implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=tl>
+% \end{macrocode}
+%
+% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N}
+% \meta{tl~var}, the \meta{tl~var} has the structure
+% \begin{quote}
+% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn}
+% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right}
+% \end{quote}
+% where \meta{right} is not braced. The \enquote{data} it represents is
+% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed
+% by \meta{right}. The \meta{next~tl} is a token list variable whose
+% name is that of \meta{tl~var} followed by~|'|. There are between $0$
+% and $4$ \cs{exp_end:} to keep track of when \meta{left} and
+% \meta{right} should be put into the \meta{next~tl}. The
+% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
+% and \cs{cs_gset_nopar:Npe} if it is global.
+%
+% \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
+% \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
+% First construct the \meta{next~tl}: using a prime here conflicts
+% with the usual \pkg{expl3} convention but we need a name that can be
+% derived from |#1| without any external data such as a counter.
+% Empty that \meta{next~tl} and setup the structure. The local and
+% global versions only differ by a single function
+% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
+% important because only that function is stored in the \meta{tl~var}
+% and \meta{next~tl} for subsequent assignments. In principle
+% \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
+% to empty |#1| and make sure it is defined, but logging the
+% definition does not seem useful so we just do |#3| |#1| |{}| to
+% clear it locally or globally as appropriate.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_begin:N #1
+ { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
+\cs_new_protected:Npn \tl_build_gbegin:N #1
+ { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
+\cs_new_protected:Npn \@@_build_begin:NN #1#2
+ { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
+\cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
+ {
+ #3 #1 { }
+ #3 #2
+ {
+ \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
+ \exp_not:n { \@@_build_last:NNn #3 #1 { } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx
+% }
+% \begin{macro}{\@@_build_last:NNn}
+% \begin{macro}{\@@_build_put:nn}
+% \begin{macro}{\@@_build_put:nw}
+% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most
+% of the time this just removes one \cs{exp_end:}. When there are
+% none left, \cs{@@_build_last:NNn} is expanded instead. It resets
+% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and
+% the definition early. Then it makes sure the \meta{next~tl} (its
+% argument |#1|) is set-up and starts a new definition. Then
+% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left}
+% part of the original \meta{tl~var} as appropriate for the definition
+% of the \meta{next~tl} (the \meta{right} part is left in the right
+% place without ever becoming a macro argument). We use
+% \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
+% arguments that are likely very long token lists. We use
+% \cs[no-index]{cs_(g)set_nopar:Npe} rather than
+% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
+% because the assignments are interrupted by brace tricks, which
+% implies that the assignment does not simply set the token list to an
+% |e|-expansion of the second argument.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
+ {
+ \cs_set_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
+ {
+ \cs_gset_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \@@_build_last:NNn #1#2
+ {
+ \if_false: { { \fi:
+ \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
+ \@@_build_last:NNn #1 #2 { }
+ }
+ }
+ \if_meaning:w \c_empty_tl #2
+ \@@_build_begin:NN #1 #2
+ \fi:
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \if_false: } } \fi:
+ \exp_after:wN \@@_build_put:nn \exp_after:wN {#2}
+ }
+\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 }
+\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5
+ { #2 \@@_build_last:NNn #3 #4 { #1 #5 } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx
+% }
+% \begin{macro}{\@@_build_put_left:NNn}
+% See \cs{tl_build_put_right:Nn} for all the machinery. We could
+% easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
+% adding the \meta{right} material after the \Arg{left} in the
+% |e|-expanding assignment.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_put_left:Nn #1
+ { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_left:Nn #1
+ { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
+ {
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \exp_after:wN \@@_build_put:nn
+ \exp_after:wN {#2} {#3}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tl_build_end:N, \tl_build_gend:N}
+% \begin{macro}{\@@_build_end_loop:NN}
+% Get the data then clear the \meta{next~tl} recursively until finding
+% an empty one. It is perhaps wasteful to repeatedly use
+% \cs{cs_to_str:N}. The local/global scope is checked by
+% \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_end:N #1
+ {
+ \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
+ }
+\cs_new_protected:Npn \tl_build_gend:N #1
+ {
+ \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
+ }
+\cs_new_protected:Npn \@@_build_end_loop:NN #1#2
+ {
+ \if_meaning:w \c_empty_tl #1
+ \exp_after:wN \use_none:nnnnnn
+ \fi:
+ #2 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_build_get:NNN}
+% \begin{macro}{\@@_build_get:w, \@@_build_get_end:w}
+% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and
+% so on, all within an |e|-expanding assignment, and wrap as
+% appropriate in \cs{exp_not:n}. The various \meta{left} parts are
+% left in the assignment as we go, which enables us to expand the
+% \meta{next~tl} at the right place. The various \meta{right} parts
+% are eventually picked up in one last \cs{exp_not:n}, with a brace
+% trick to wrap all the \meta{right} parts together.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_build_get:NNN #1#2#3
+ { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
+\cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
+ {
+ \exp_not:n {#4}
+ \if_meaning:w \c_empty_tl #3
+ \exp_after:wN \@@_build_get_end:w
+ \fi:
+ \exp_after:wN \@@_build_get:w #3
+ }
+\cs_new:Npn \@@_build_get_end:w #1#2#3
+ { \__kernel_exp_not:w \exp_after:wN { \if_false: } \fi: }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
Property changes on: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -566,8 +566,8 @@
% See also \cs{tl_reverse:N}.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -603,8 +603,8 @@
% consider the slower function \cs{tl_reverse:n}.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -623,8 +623,8 @@
% stream.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -873,8 +873,8 @@
% \cs{tl_head:n} leaving nothing in the input stream.
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -918,8 +918,8 @@
% in \cs{tl_tail:n} leaving nothing in the input stream.
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
-% token list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% token list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -959,8 +959,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -976,8 +976,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1047,8 +1047,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1079,7 +1079,7 @@
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
% token list does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1255,7 +1255,7 @@
% single-line string, as if it appeared in the middle of a line
% read from a file.
%
-% Contrarily to the \tn{scantokens} primitive, \cs{tl_rescan:nn}
+% Contrarily to the \tn{scantokens} \eTeX{} primitive, \cs{tl_rescan:nn}
% tokenizes the whole string in the same category code regime rather
% than one token at a time, so that directives such as \tn{verb}
% that rely on changing category codes will not function properly.
@@ -2153,7 +2153,7 @@
% All of its work is done between
% \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} to avoid
% issues in alignments. It does the actual replacement within
-% |#3|~|#4|~|{...}|, an \texttt{x}-expanding \meta{assignment}~|#3| to
+% |#3|~|#4|~|{...}|, an \texttt{e}-expanding \meta{assignment}~|#3| to
% the \meta{tl~var}~|#4|. The auxiliary \cs{@@_replace_next:w} is
% called, followed by the \meta{token list}, some tokens including the
% \meta{delimiter}~|#1|, followed by the \meta{pattern}~|#5|.
@@ -2166,7 +2166,7 @@
% |##1| cannot contain the \meta{delimiter}~|#1| that we worked so
% hard to obtain, thus \cs{@@_replace_wrap:w} gets~|##1| as its own
% argument~|##1|, and protects it against
-% the \texttt{x}-expanding assignment. It also finds \cs{exp_not:n}
+% the \texttt{e}-expanding assignment. It also finds \cs{exp_not:n}
% as~|##2| and does nothing to it, thus letting through \cs{exp_not:n}
% \Arg{replacement} into the assignment. Note that
% \cs{@@_replace_next:w} and \cs{@@_replace_wrap:w} are always called
@@ -2858,7 +2858,7 @@
% \cs{@@_trim_mark:} expands to nothing in a single expansion. In the case
% at hand, we take \cs{__kernel_exp_not:w} \cs{exp_after:wN} as our
% continuation, so that space trimming behaves correctly within an
-% \texttt{x}-type expansion.
+% \texttt{e}-type or \texttt{x}-type expansion.
% \begin{macrocode}
\cs_new:Npn \tl_trim_spaces:n #1
{
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -456,7 +456,7 @@
% as |macro|s.
% \begin{texnote}
% This is the \TeX{} primitive \tn{meaning}.
-% The \meta{token} can thus be an explicit space tokens or an
+% The \meta{token} can thus be an explicit space token or an
% explicit begin-group or end-group character token (|{|~or~|}| when
% normal \TeX{} category codes apply) even though these are not
% valid \texttt{N}-type arguments.
@@ -473,7 +473,7 @@
% category code $12$ (the escape character is part of the
% \meta{token}). This function requires only a single expansion.
% \begin{texnote}
-% \cs{token_to_str:N} is the \TeX{} primitive \tn{string} renamed.
+% \cs{token_to_str:N} is the \TeX{} primitive \tn{string}.
% The \meta{token} can thus be an explicit space tokens or an
% explicit begin-group or end-group character token (|{|~or~|}| when
% normal \TeX{} category codes apply) even though these are not
@@ -752,7 +752,7 @@
% \cs{token_if_primitive:NTF} \meta{token} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{token} is an engine primitive. In \LuaTeX{}
-% this includes primitive-like commands defined using |{token.set_lua}|.
+% this includes primitive-like commands defined using |token.set_lua|.
% \end{function}
%
% \begin{function}[added = 2020-12-03, EXP, noTF]
@@ -968,7 +968,7 @@
% receives three arguments for each \meta{token} in the input stream:
% \begin{itemize}
% \item \meta{tokens}, which both \texttt{o}-expand and
-% \texttt{x}-expand to the \meta{token}. The detailed form of
+% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of
% \meta{tokens} may change in later releases.
% \item \meta{char code}, a decimal representation of the character
% code of the \meta{token}, $-1$ if it is a control sequence.
@@ -2328,7 +2328,7 @@
%
% Characters used as delimiters must have catcode~$12$
% and are obtained through \cs{tl_to_str:n}. This requires doing all
-% definitions within \texttt{x}-expansion. The temporary function
+% definitions within \texttt{e}-expansion. The temporary function
% \cs{@@_tmp:w} used to define each conditional receives three
% arguments: the name of the conditional, the auxiliary's delimiter
% (also used to name the auxiliary), and the string to which one
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -20,7 +20,7 @@
%%
%% File: l3benchmark.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
+\ProvidesExplPackage{l3benchmark}{2023-11-01}{}
{L3 Experimental benchmarking}
\fp_new:N \g_benchmark_duration_target_fp
\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3bitset.dtx
-\ProvidesExplPackage{l3bitset}{2023-10-10}{}
+\ProvidesExplPackage{l3bitset}{2023-11-01}{}
{L3 Experimental bitset support}
\cs_new_protected:Npn \bitset_new:N #1
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -28,7 +28,7 @@
%%
%% File: l3draw.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2023-10-10}{}
+\ProvidesExplPackage{l3draw}{2023-11-01}{}
{L3 Experimental core drawing support}
\scan_new:N \s__draw_mark
\scan_new:N \s__draw_stop
@@ -776,19 +776,11 @@
\dim_set_eq:NN \l__draw_softpath_lastx_dim \g__draw_softpath_lastx_dim
\dim_set_eq:NN \l__draw_softpath_lasty_dim \g__draw_softpath_lasty_dim
\__draw_path_reset_limits:
- \tl_build_get:NN \g__draw_softpath_main_tl \l__draw_softpath_main_tl
- \bool_set_eq:NN
- \l__draw_softpath_corners_bool
- \g__draw_softpath_corners_bool
- \__draw_softpath_clear:
+ \__draw_softpath_save:
}
\cs_new_protected:Npn \draw_path_scope_end:
{
- \__draw_softpath_clear:
- \bool_gset_eq:NN
- \g__draw_softpath_corners_bool
- \l__draw_softpath_corners_bool
- \__draw_softpath_add:o \l__draw_softpath_main_tl
+ \__draw_softpath_restore:
\dim_gset_eq:NN \g__draw_softpath_lastx_dim \l__draw_softpath_lastx_dim
\dim_gset_eq:NN \g__draw_softpath_lasty_dim \l__draw_softpath_lasty_dim
\dim_gset_eq:NN \g__draw_path_xmax_dim \l__draw_path_xmax_dim
@@ -1418,7 +1410,7 @@
}
%% File: l3draw-softpath.dtx
\tl_new:N \g__draw_softpath_main_tl
-\tl_new:N \l__draw_softpath_internal_tl
+\tl_new:N \l__draw_softpath_tmp_tl
\bool_new:N \g__draw_softpath_corners_bool
\cs_new_protected:Npn \__draw_softpath_add:n
{ \tl_build_gput_right:Nn \g__draw_softpath_main_tl }
@@ -1425,14 +1417,37 @@
\cs_generate_variant:Nn \__draw_softpath_add:n { o, e }
\cs_new_protected:Npn \__draw_softpath_use:
{
- \tl_build_get:NN \g__draw_softpath_main_tl \l__draw_softpath_internal_tl
- \l__draw_softpath_internal_tl
+ \tl_build_gend:N \g__draw_softpath_main_tl
+ \tl_set_eq:NN \l__draw_softpath_tmp_tl \g__draw_softpath_main_tl
+ \l__draw_softpath_tmp_tl
+ \tl_build_gbegin:N \g__draw_softpath_main_tl
+ \exp_args:NNV \tl_build_gput_right:Nn
+ \g__draw_softpath_main_tl \l__draw_softpath_tmp_tl
}
\cs_new_protected:Npn \__draw_softpath_clear:
{
- \tl_build_gclear:N \g__draw_softpath_main_tl
+ \tl_build_gbegin:N \g__draw_softpath_main_tl
\bool_gset_false:N \g__draw_softpath_corners_bool
}
+\cs_new_protected:Npn \__draw_softpath_save:
+ {
+ \tl_build_gend:N \g__draw_softpath_main_tl
+ \tl_set_eq:NN
+ \l__draw_softpath_main_tl
+ \g__draw_softpath_main_tl
+ \bool_set_eq:NN
+ \l__draw_softpath_corners_bool
+ \g__draw_softpath_corners_bool
+ \__draw_softpath_clear:
+ }
+\cs_new_protected:Npn \__draw_softpath_restore:
+ {
+ \__draw_softpath_clear:
+ \__draw_softpath_add:o \l__draw_softpath_main_tl
+ \bool_gset_eq:NN
+ \g__draw_softpath_corners_bool
+ \l__draw_softpath_corners_bool
+ }
\dim_new:N \g__draw_softpath_lastx_dim
\dim_new:N \g__draw_softpath_lasty_dim
\bool_new:N \g__draw_softpath_move_bool
@@ -1526,9 +1541,9 @@
\fp_zero:N \l__draw_softpath_lasty_fp
\tl_clear:N \l__draw_softpath_first_tl
\tl_clear:N \l__draw_softpath_move_tl
- \tl_build_get:NN \g__draw_softpath_main_tl \l__draw_softpath_internal_tl
+ \tl_build_gend:N \g__draw_softpath_main_tl
\exp_after:wN \__draw_softpath_round_loop:Nnn
- \l__draw_softpath_internal_tl
+ \g__draw_softpath_main_tl
\q__draw_recursion_tail ? ?
\q__draw_recursion_stop
\group_end:
@@ -1734,7 +1749,7 @@
\l__draw_softpath_move_tl
\tl_put_right:No \l__draw_softpath_main_tl
\l__draw_softpath_part_tl
- \tl_build_gclear:N \g__draw_softpath_main_tl
+ \tl_build_gbegin:N \g__draw_softpath_main_tl
\__draw_softpath_add:o \l__draw_softpath_main_tl
}
%% File: l3draw-state.dtx
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3graphics.dtx
-\ProvidesExplPackage{l3graphics}{2023-10-10}{}
+\ProvidesExplPackage{l3graphics}{2023-11-01}{}
{L3 Experimental graphics inclusion support}
\dim_new:N \l__graphics_internal_dim
\ior_new:N \l__graphics_internal_ior
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -20,7 +20,7 @@
%%
%% File: l3opacity.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2023-10-10}{}
+\ProvidesExplPackage{l3opacity}{2023-11-01}{}
{L3 Experimental opacity support}
\cs_new_protected:Npn \opacity_select:n #1
{ \__opacity_select:nN {#1} \__opacity_backend_select:n }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2023-10-10}{}
+\ProvidesExplPackage{l3str-format}{2023-11-01}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -20,7 +20,7 @@
%%
%% File: l3sys-shell.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
+\ProvidesExplPackage{l3sys-shell}{2023-11-01}{}
{L3 Experimental system shell functions}
\scan_new:N \s__sys_stop
\quark_new:N \q__sys_nil
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2023-10-10}{}
+\ProvidesExplPackage{xcoffins}{2023-11-01}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2023-10-10}{}
+\ProvidesExplPackage{l3galley}{2023-11-01}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2023-10-10}{}
+\ProvidesExplPackage{xgalley}{2023-11-01}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -11,6 +11,7 @@
%% l3expan.dtx (with options: `package')
%% l3quark.dtx (with options: `package')
%% l3tl.dtx (with options: `package')
+%% l3tl-build.dtx (with options: `package')
%% l3str.dtx (with options: `package')
%% l3seq.dtx (with options: `package')
%% l3int.dtx (with options: `package')
@@ -74,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -4559,6 +4560,101 @@
\tl_new:N \l_tmpa_tl
\tl_new:N \l_tmpb_tl
\cs_undefine:N \__tl_tmp:w
+%% File: l3tl-build.dtx
+\cs_new_protected:Npn \tl_build_begin:N #1
+ { \__tl_build_begin:NN \cs_set_nopar:Npe #1 }
+\cs_new_protected:Npn \tl_build_gbegin:N #1
+ { \__tl_build_begin:NN \cs_gset_nopar:Npe #1 }
+\cs_new_protected:Npn \__tl_build_begin:NN #1#2
+ { \exp_args:Nc \__tl_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
+\cs_new_protected:Npn \__tl_build_begin:NNN #1#2#3
+ {
+ #3 #1 { }
+ #3 #2
+ {
+ \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
+ \exp_not:n { \__tl_build_last:NNn #3 #1 { } }
+ }
+ }
+\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
+ {
+ \cs_set_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
+ {
+ \cs_gset_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \__tl_build_last:NNn #1#2
+ {
+ \if_false: { { \fi:
+ \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
+ \__tl_build_last:NNn #1 #2 { }
+ }
+ }
+ \if_meaning:w \c_empty_tl #2
+ \__tl_build_begin:NN #1 #2
+ \fi:
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \if_false: } } \fi:
+ \exp_after:wN \__tl_build_put:nn \exp_after:wN {#2}
+ }
+\cs_new_protected:Npn \__tl_build_put:nn #1#2 { \__tl_build_put:nw {#2} #1 }
+\cs_new_protected:Npn \__tl_build_put:nw #1#2 \__tl_build_last:NNn #3#4#5
+ { #2 \__tl_build_last:NNn #3 #4 { #1 #5 } }
+\cs_new_protected:Npn \tl_build_put_left:Nn #1
+ { \__tl_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_left:Nn #1
+ { \__tl_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \__tl_build_put_left:NNn #1#2#3
+ {
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \exp_after:wN \__tl_build_put:nn
+ \exp_after:wN {#2} {#3}
+ }
+ }
+ }
+\cs_new_protected:Npn \tl_build_end:N #1
+ {
+ \__tl_build_get:NNN \__kernel_tl_set:Ne #1 #1
+ \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
+ }
+\cs_new_protected:Npn \tl_build_gend:N #1
+ {
+ \__tl_build_get:NNN \__kernel_tl_gset:Ne #1 #1
+ \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
+ }
+\cs_new_protected:Npn \__tl_build_end_loop:NN #1#2
+ {
+ \if_meaning:w \c_empty_tl #1
+ \exp_after:wN \use_none:nnnnnn
+ \fi:
+ #2 #1
+ \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } #2
+ }
+\cs_new_protected:Npn \__tl_build_get:NNN #1#2#3
+ { #1 #3 { \if_false: { \fi: \exp_after:wN \__tl_build_get:w #2 } } }
+\cs_new:Npn \__tl_build_get:w #1 \__tl_build_last:NNn #2#3#4
+ {
+ \exp_not:n {#4}
+ \if_meaning:w \c_empty_tl #3
+ \exp_after:wN \__tl_build_get_end:w
+ \fi:
+ \exp_after:wN \__tl_build_get:w #3
+ }
+\cs_new:Npn \__tl_build_get_end:w #1#2#3
+ { \__kernel_exp_not:w \exp_after:wN { \if_false: } \fi: }
%% File: l3str.dtx
\scan_new:N \s__str_mark
\scan_new:N \s__str_stop
@@ -4752,7 +4848,7 @@
{ \__str_case:nw {#1} #2 {#1} { } \s__str_mark {#3} \s__str_mark {#4} \s__str_stop }
\cs_generate_variant:Nn \str_case:nn { V , o , e , nV , nv }
\prg_generate_conditional_variant:Nnn \str_case:nn
- { V , o , nV , nv } { T , F , TF }
+ { V , o , e , nV , nv } { T , F , TF }
\cs_new_eq:NN \str_case:Nn \str_case:Vn
\cs_new_eq:NN \str_case:NnT \str_case:VnT
\cs_new_eq:NN \str_case:NnF \str_case:VnF
@@ -5955,11 +6051,11 @@
\__seq_map_pairwise_function:Nnnwnn #1 #4 \s__seq_stop
}
\cs_generate_variant:Nn \seq_map_pairwise_function:NNN { Nc , c , cc }
-\cs_new_protected:Npn \seq_set_map_x:NNn
- { \__seq_set_map_x:NNNn \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \seq_gset_map_x:NNn
- { \__seq_set_map_x:NNNn \__kernel_tl_gset:Ne }
-\cs_new_protected:Npn \__seq_set_map_x:NNNn #1#2#3#4
+\cs_new_protected:Npn \seq_set_map_e:NNn
+ { \__seq_set_map_e:NNNn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \seq_gset_map_e:NNn
+ { \__seq_set_map_e:NNNn \__kernel_tl_gset:Ne }
+\cs_new_protected:Npn \__seq_set_map_e:NNNn #1#2#3#4
{
\__seq_push_item_def:n { \exp_not:N \__seq_item:n {#4} }
#1 #2 { #3 }
@@ -16819,22 +16915,74 @@
\cs_new_protected:Npn \__fp_show:NN #1#2
{
\__kernel_chk_tl_type:NnnT #2 { fp }
+ { \exp_args:No \__fp_show_validate:n #2 }
+ { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+ }
+\cs_new:Npn \__fp_show_validate:n #1
+ {
+ \__fp_show_validate:nn { #1 }
{
- \str_if_eq:eeTF { \tl_head:N #2 } { \s__fp_tuple } { \exp_not:o #2 }
+ \s__fp \__fp_chk:w ??? ;~ or \iow_newline:
+ \s__fp_tuple \__fp_tuple_chk:w ? ;~ or \iow_newline:
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ? ;
+ }
+ }
+\cs_new:Npn \__fp_show_validate_aux:n #1
+ {
+ \__fp_show_validate:nn { #1 } { }
+ }
+\cs_new:Npn \__fp_show_validate:nn #1#2
+ {
+ \tl_if_empty:nF { #1 }
+ {
+ \str_case:enF { \tl_head:n { #1 } }
{
- \exp_after:wN \__fp_show_validate:w #2
- \s__fp \__fp_chk:w ??? ; \s__fp_stop
+ { \s__fp }
+ {
+ \__fp_show_validate:w #1 \s__fp
+ \__fp_chk:w ??? ; \s__fp_stop
+ }
+ { \s__fp_tuple }
+ {
+ \__fp_tuple_show_validate:w #1
+ \s__fp_tuple \__fp_tuple_chk:w ?? ; \s__fp_stop
+ }
+ { \s__fp_symbolic }
+ {
+ \__fp_symbolic_show_validate:w #1
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? ; \s__fp_stop
+ }
}
+ { #2 }
}
- { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
}
\cs_new:Npn \__fp_show_validate:w
#1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop
{
- \token_if_eq_meaning:NNTF #2 1
- { \s__fp \__fp_chk:w #2 #3 {#4} #5 ; }
- { \s__fp \__fp_chk:w #2 #3 #4 #5 ; }
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \token_if_eq_meaning:NNTF #2 1
+ { \s__fp \__fp_chk:w #2 #3 { #4 } #5 ; }
+ { \s__fp \__fp_chk:w #2 #3 #4 #5 ; }
+ \__fp_show_validate_aux:n { #6 }
+ }
}
+\cs_new:Npn \__fp_tuple_show_validate:w
+ #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 ; #4 \s__fp_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ { \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } } ; }
+ }
+\cs_new:Npn \__fp_symbolic_show_validate:w
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 ; #5 \s__fp_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \s__fp_symbolic \__fp_symbolic_chk:w \exp_not:n { #2 } ,
+ { \__fp_show_validate_aux:n { #3 } };
+ \__fp_show_validate_aux:n { #5 }
+ }
+ }
\cs_new_protected:Npn \fp_show:n
{ \__kernel_msg_show_eval:Nn \fp_to_tl:n }
\cs_new_protected:Npn \fp_log:n
@@ -20838,9 +20986,9 @@
\s__fp_symbolic \__fp_symbolic_chk:w
\__fp_types_binary:Nww #1 , { #2; #3; } ;
}
-\cs_set:Npn \__fp_tmp:w #1#2
+\cs_set_protected:Npn \__fp_tmp:w #1#2
{
- \cs_new_nopar:cpn
+ \cs_new:cpn
{ __fp_symbolic_#2_symbolic_o:ww }
{ \__fp_symbolic_binary_o:Nww #1 }
\cs_new_eq:cc
@@ -20864,7 +21012,7 @@
{not} {sec} {set_sign} {sin} {sqrt} {tan}
}
{
- \cs_new_nopar:cpe { __fp_symbolic_#1_o:w }
+ \cs_new:cpe { __fp_symbolic_#1_o:w }
{
\exp_not:N \__fp_symbolic_unary_o:NNw
\exp_not:c { __fp_#1_o:w }
@@ -20872,7 +21020,7 @@
}
\cs_set_protected:Npn \__fp_tmp:w #1#2#3
{
- \cs_new_nopar:cpn { __fp_symbolic_to_#1:w }
+ \cs_new:cpn { __fp_symbolic_to_#1:w }
{
\exp_after:wN \__fp_symbolic_convert:wnnN
\exp:w \exp_end_continue_f:w
@@ -20949,10 +21097,10 @@
\tl_if_empty:nTF {#1}
{ \prg_return_true: }
{
- \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ }
+ \tl_if_in:nnTF { #1 } { ~ }
{ \prg_return_true: }
{
- \exp_after:wN \__fp_id_if_invalid_aux:N \tl_to_str:n {#1}
+ \__fp_id_if_invalid_aux:N #1
{ ? \prg_break:n \prg_return_false: }
\prg_break_point:
}
@@ -20995,9 +21143,9 @@
}
}
}
-\cs_new:Npn \__fp_variable_set_parsing:Nn #1#2
+\cs_new_protected:Npn \__fp_variable_set_parsing:Nn #1#2
{
- \cs_set_nopar:Npn \__fp_tmp:w
+ \cs_set:Npn \__fp_tmp:w
{
\__fp_exp_after_symbolic_f:nw { \__fp_parse_infix:NN }
\s__fp_symbolic \__fp_symbolic_chk:w
@@ -21006,7 +21154,7 @@
\exp_args:NNc \__fp_variable_set_parsing_aux:NNn #1
{ __fp_parse_word_#2:N } {#2}
}
-\cs_new:Npn \__fp_variable_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \__fp_variable_set_parsing_aux:NNn #1#2#3
{
\cs_if_eq:NNF #2 \__fp_tmp:w
{
@@ -21024,53 +21172,61 @@
}
\cs_new_protected:Npn \fp_clear_variable:n #1
{
+ \exp_args:No \__fp_clear_variable:n { \tl_to_str:n {#1} }
+ }
+\cs_new_protected:Npn \__fp_clear_variable:n #1
+ {
\__fp_id_if_invalid:nTF {#1}
{ \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \__fp_clear_variable:n { \tl_to_str:n {#1} } }
+ { \__fp_clear_variable_aux:n {#1} }
}
-\cs_new_protected:Npn \__fp_clear_variable:n #1
+\cs_new_protected:Npn \__fp_clear_variable_aux:n #1
{
- \cs_undefine:c { l__fp_variable_#1_fp }
+ \cs_set_eq:cN { l__fp_variable_#1_fp } \tex_undefined:D
\__fp_variable_set_parsing:Nn \cs_set_eq:NN {#1}
}
\cs_new_protected:Npn \fp_new_variable:n #1
{
- \__fp_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \__fp_new_variable:n { \tl_to_str:n {#1} } }
+ \exp_args:No \__fp_new_variable:n { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \__fp_new_variable:n #1
{
- \cs_if_exist:cT { __fp_parse_word_#1:N }
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nnn
- { fp } { id-already-defined } {#1}
- \cs_undefine:c { __fp_parse_word_#1:N }
- \cs_undefine:c { l__fp_variable_#1_fp }
+ \cs_if_exist:cT { __fp_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { __fp_parse_word_#1:N }
+ \cs_set_eq:cN { l__fp_variable_#1_fp } \tex_undefined:D
+ }
+ \__fp_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
- \__fp_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
\flag_new:n { __fp_symbolic }
\cs_new_protected:Npn \fp_set_variable:nn #1
{
- \__fp_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \__fp_set_variable:nn { \tl_to_str:n {#1} } }
+ \exp_args:No \__fp_set_variable:nn { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \__fp_set_variable:nn #1#2
{
- \__fp_variable_set_parsing:Nn \cs_set_eq:NN {#1}
- \fp_set:Nn \l__fp_symbolic_fp {#2}
- \cs_set_nopar:cpn { l__fp_variable_#1_fp }
- { \flag_ensure_raised:n { __fp_symbolic } \c_nan_fp }
- \flag_clear:n { __fp_symbolic }
- \fp_set:cn { l__fp_variable_#1_fp } { \l__fp_symbolic_fp }
- \flag_if_raised:nT { __fp_symbolic }
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nneee { fp } { id-loop }
- { \tl_to_str:n {#1} }
- { \tl_to_str:n {#2} }
- { \fp_to_tl:N \l__fp_symbolic_fp }
+ \__fp_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ \fp_set:Nn \l__fp_symbolic_fp {#2}
+ \cs_set_nopar:cpn { l__fp_variable_#1_fp }
+ { \flag_ensure_raised:n { __fp_symbolic } \c_nan_fp }
+ \flag_clear:n { __fp_symbolic }
+ \fp_set:cn { l__fp_variable_#1_fp } { \l__fp_symbolic_fp }
+ \flag_if_raised:nT { __fp_symbolic }
+ {
+ \msg_error:nneee { fp } { id-loop }
+ { #1 }
+ { \tl_to_str:n {#2} }
+ { \fp_to_tl:N \l__fp_symbolic_fp }
+ }
}
}
\msg_new:nnnn { fp } { id-invalid }
@@ -21104,7 +21260,7 @@
\cs_new_protected:Npn \__fp_new_function:n #1
{
\__fp_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { invalid-identifier } {#1} }
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
\cs_if_exist:cT { __fp_parse_word_#1:N }
{
@@ -21116,12 +21272,12 @@
\__fp_function_set_parsing:Nn \cs_gset_eq:NN {#1}
}
}
-\cs_new:Npn \__fp_function_set_parsing:Nn #1#2
+\cs_new_protected:Npn \__fp_function_set_parsing:Nn #1#2
{
\exp_args:NNc \__fp_function_set_parsing_aux:NNn #1
{ __fp_parse_word_#2:N } {#2}
}
-\cs_new:Npn \__fp_function_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \__fp_function_set_parsing_aux:NNn #1#2#3
{
\cs_set:Npe \__fp_tmp:w
{
@@ -21170,7 +21326,7 @@
\cs_new_protected:Npn \__fp_set_function:Nnnn #1#2#3#4
{
\__fp_id_if_invalid:nTF {#2}
- { \msg_error:nnn { fp } { invalid-identifier } {#2} }
+ { \msg_error:nnn { fp } { id-invalid } {#2} }
{
\cs_if_exist:cF { __fp_parse_word_#2:N }
{ \__fp_function_set_parsing:Nn \cs_set_eq:NN {#2} }
@@ -21179,8 +21335,10 @@
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} }
{
\int_incr:N \l__fp_function_arg_int
- \exp_args:Ne \__fp_clear_variable:n
- { _ \tex_romannumeral:D \l__fp_function_arg_int }
+ \exp_args:Ne \__fp_clear_variable_aux:n
+ {
+ \c_underscore_str \tex_romannumeral:D \l__fp_function_arg_int
+ }
\fp_clear_variable:n {##1}
\cs_set_nopar:cpe { l__fp_variable_##1_fp }
{
@@ -21246,8 +21404,12 @@
{ \exp_args:No \__fp_clear_function:n { \tl_to_str:n {#1} } }
\cs_new_protected:Npn \__fp_clear_function:n #1
{
- \cs_undefine:c { __fp_parse_word_ #1 :N }
- \__fp_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ {
+ \cs_set_eq:cN { __fp_#1_o:w } \tex_undefine:D
+ \__fp_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
}
%% File: l3fparray.dtx
\int_new:N \g__fp_array_int
@@ -26166,7 +26328,7 @@
\cs_new_protected:Npn \__regex_show_item_exact_cs:n #1
{
\seq_set_split:Nnn \l__regex_internal_seq { \scan_stop: } {#1}
- \seq_set_map_x:NNn \l__regex_internal_seq
+ \seq_set_map_e:NNn \l__regex_internal_seq
\l__regex_internal_seq { \iow_char:N\\##1 }
\__regex_show_one:n
{ control~sequence~ \seq_use:Nn \l__regex_internal_seq { ~or~ } }
@@ -26685,7 +26847,7 @@
}
\cs_new_protected:Npn \__regex_match_once_init_aux:
{
- \tl_build_clear:N \l__regex_matched_analysis_tl
+ \tl_build_begin:N \l__regex_matched_analysis_tl
\tl_clear:N \l__regex_curr_analysis_tl
}
\cs_new_protected:Npn \__regex_single_match:
@@ -26857,7 +27019,7 @@
\l__regex_fresh_thread_bool
\int_set_eq:NN \l__regex_success_pos_int \l__regex_curr_pos_int
\int_set_eq:NN \l__regex_last_char_success_int \l__regex_last_char_int
- \tl_build_clear:N \l__regex_matched_analysis_tl
+ \tl_build_begin:N \l__regex_matched_analysis_tl
\tl_set_eq:NN \l__regex_success_submatches_tl
\l__regex_curr_submatches_tl
\prg_break:
@@ -27860,7 +28022,7 @@
\__regex_single_match:
#1
\__regex_match_init:
- \tl_build_clear:N \l__regex_input_tl
+ \tl_build_begin:N \l__regex_input_tl
\__regex_match_once_init:
\peek_analysis_map_inline:n
{
@@ -32290,13 +32452,12 @@
\cs_new:Npn \lua_escape:e #1 { \__lua_escape:n {#1} }
\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } }
\str_new:N \l__lua_err_msg_str
-\cs_generate_variant:Nn \msg_error:nnnn { nnnV }
\cs_new_protected:Npn \lua_load_module:n #1
{
\bool_if:nF { \__lua_load_module_p:n { #1 } }
{
\msg_error:nnnV
- { luatex } { module-not-found } { #1 } { \l__lua_err_msg_str }
+ { luatex } { module-not-found } { #1 } \l__lua_err_msg_str
}
}
\sys_if_engine_luatex:F
@@ -34061,33 +34222,32 @@
{
\bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \tl_if_single:nTF {#4}
+ \exp_args:Ne \__text_change_case_codepoint_title_auxi:nnnn
{
- \bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
- {
- \bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { ! \int_compare_p:nNn {`#4} < { "80 } }
- }
- { \__text_change_case_codepoint_title:nnn }
- { \__text_change_case_codepoint_title:nnnnn { title } {#1} }
+ \codepoint_to_category:n
+ { \__text_codepoint_from_chars:Nw #4 }
}
- { \__text_change_case_codepoint_title:nnn }
}
{ \__text_change_case_codepoint_title:nnn }
{#2} {#3} {#4}
}
+\cs_new:Npn \__text_change_case_codepoint_title_auxi:nnnn #1#2#3#4
+ {
+ \tl_if_head_eq_charcode:nNTF {#1} { L }
+ { \__text_change_case_codepoint_title:nnn }
+ { \__text_change_case_codepoint_title_auxii:nnnn { title } }
+ {#2} {#3} {#4}
+ }
\cs_new:Npn \__text_change_case_codepoint_title:nnn #1#2#3
- { \__text_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} }
-\cs_new:Npn \__text_change_case_codepoint_title:nnnnn #1#2#3#4#5
+ { \__text_change_case_codepoint_title_auxii:nnnn { end } {#1} {#2} {#3} }
+\cs_new:Npn \__text_change_case_codepoint_title_auxii:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { __text_change_case_title_ #4 :nnnnn }
+ \cs_if_exist_use:cF { __text_change_case_title_ #3 :nnnnn }
{
- \cs_if_exist_use:cF { __text_change_case_upper_ #4 :nnnnn }
+ \cs_if_exist_use:cF { __text_change_case_upper_ #3 :nnnnn }
{ \__text_change_case_codepoint:nnnnn }
}
- {#1} {#2} {#3} {#4} {#5}
+ { title } {#1} {#2} {#3} {#4}
}
\cs_new:Npn \__text_change_case_codepoint:nnnnn #1#2#3#4#5
{
@@ -36200,104 +36360,8 @@
#1 #2 { #3 }
\__seq_pop_item_def:
}
-\cs_new_protected:Npn \tl_build_begin:N #1
- { \__tl_build_begin:NN \cs_set_nopar:Npe #1 }
-\cs_new_protected:Npn \tl_build_gbegin:N #1
- { \__tl_build_begin:NN \cs_gset_nopar:Npe #1 }
-\cs_new_protected:Npn \__tl_build_begin:NN #1#2
- { \exp_args:Nc \__tl_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
-\cs_new_protected:Npn \__tl_build_begin:NNN #1#2#3
- {
- #3 #1 { }
- #3 #2
- {
- \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
- \exp_not:n { \__tl_build_last:NNn #3 #1 { } }
- }
- }
-\cs_new_eq:NN \tl_build_clear:N \tl_build_begin:N
-\cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N
-\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
- {
- \cs_set_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
- {
- \cs_gset_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \__tl_build_last:NNn #1#2
- {
- \if_false: { { \fi:
- \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
- \__tl_build_last:NNn #1 #2 { }
- }
- }
- \if_meaning:w \c_empty_tl #2
- \__tl_build_begin:NN #1 #2
- \fi:
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \if_false: } } \fi:
- \exp_after:wN \__tl_build_put:nn \exp_after:wN {#2}
- }
-\cs_new_protected:Npn \__tl_build_put:nn #1#2 { \__tl_build_put:nw {#2} #1 }
-\cs_new_protected:Npn \__tl_build_put:nw #1#2 \__tl_build_last:NNn #3#4#5
- { #2 \__tl_build_last:NNn #3 #4 { #1 #5 } }
-\cs_new_protected:Npn \tl_build_put_left:Nn #1
- { \__tl_build_put_left:NNn \cs_set_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_left:Nn #1
- { \__tl_build_put_left:NNn \cs_gset_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \__tl_build_put_left:NNn #1#2#3
- {
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \exp_after:wN \__tl_build_put:nn
- \exp_after:wN {#2} {#3}
- }
- }
- }
\cs_new_protected:Npn \tl_build_get:NN
{ \__tl_build_get:NNN \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \__tl_build_get:NNN #1#2#3
- { #1 #3 { \if_false: { \fi: \exp_after:wN \__tl_build_get:w #2 } } }
-\cs_new:Npn \__tl_build_get:w #1 \__tl_build_last:NNn #2#3#4
- {
- \exp_not:n {#4}
- \if_meaning:w \c_empty_tl #3
- \exp_after:wN \__tl_build_get_end:w
- \fi:
- \exp_after:wN \__tl_build_get:w #3
- }
-\cs_new:Npn \__tl_build_get_end:w #1#2#3
- { \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: }
-\cs_new_protected:Npn \tl_build_end:N #1
- {
- \__tl_build_get:NNN \__kernel_tl_set:Ne #1 #1
- \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
- }
-\cs_new_protected:Npn \tl_build_gend:N #1
- {
- \__tl_build_get:NNN \__kernel_tl_gset:Ne #1 #1
- \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
- }
-\cs_new_protected:Npn \__tl_build_end_loop:NN #1#2
- {
- \if_meaning:w \c_empty_tl #1
- \exp_after:wN \use_none:nnnnnn
- \fi:
- #2 #1
- \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } #2
- }
%% File: l3legacy.dtx
\prg_new_conditional:Npnn \legacy_if:n #1 { p , T , F , TF }
{
@@ -36632,6 +36696,10 @@
\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_mapthread_function:NNN }
\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
+\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn }
+\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
\__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
\cs_gset_protected:Npn \sys_load_deprecation: { }
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
@@ -36669,6 +36737,10 @@
\cs_generate_variant:Nn \tl_case:Nn { c }
\prg_generate_conditional_variant:Nnn \tl_case:Nn
{ c } { T , F , TF }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_begin:N }
+\cs_new_protected:Npn \tl_build_clear:N { \tl_build_begin:N }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_gbegin:N }
+\cs_new_protected:Npn \tl_build_gclear:N { \tl_build_gbegin:N }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:n ] }
\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2023-11-01 20:15:10 UTC (rev 68721)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls 2023-11-01 20:15:10 UTC (rev 68721)
@@ -655,9 +655,9 @@
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{expstar}{}}%
\write \@auxout { \def \string \Codedoc at expstar { } }
\__codedoc_typeset_exp:\ indicates~fully~expandable~functions,~which~
- can~be~used~within~an~\texttt{x}-type~argument~(in~plain~
- \TeX{}~terms,~inside~an~\cs{edef}),~as~well~as~within~an~
- \texttt{f}-type~argument.
+ can~be~used~within~an~\texttt{e}-type~argument~(inside~an~\tn{expanded}),~
+ \texttt{x}-type~argument~(in~plain~\TeX{}~terms,~inside~an~\tn{edef}),~
+ as~well~as~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainREXP } { }
{
@@ -665,8 +665,8 @@
\write \@auxout { \def \string \Codedoc at rexpstar { } }
\__codedoc_typeset_rexp:\ indicates~
restricted~expandable~functions,~which~can~be~used~within~an~
- \texttt{x}-type~argument~but~cannot~be~fully~expanded~within~an~
- \texttt{f}-type~argument.
+ \texttt{x}-type~argument~or~an~\texttt{e}-type~argument,~
+ but~cannot~be~fully~expanded~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainTF } { }
{
Modified: trunk/Master/tlpkg/bin/c2lx
===================================================================
--- trunk/Master/tlpkg/bin/c2lx 2023-11-01 20:13:49 UTC (rev 68720)
+++ trunk/Master/tlpkg/bin/c2lx 2023-11-01 20:15:10 UTC (rev 68721)
@@ -26,7 +26,7 @@
pkgs="$pkgs latex-tools-dev latex-base-dev l3build"
elif test "x$1" = x3; then
shift; label=l3
- pkgs="l3kernel l3packages l3experimental l3build l3backend l3build"
+ pkgs="l3kernel l3packages l3experimental l3build l3backend"
elif test "x$1" = xdeng; then
shift; label=deng
pkgs="elegantbook elegantnote elegantpaper"
More information about the tex-live-commits
mailing list.