summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-06-06 20:06:24 +0000
committerKarl Berry <karl@freefriends.org>2023-06-06 20:06:24 +0000
commit4efc770b4440003e74a4c1c868ad55c64a32ef05 (patch)
tree5e07c532363aa9720b217c8c02c29a06aa832e6b
parent94617bbdb2210de3606ba82fafd652ca48e16b93 (diff)
l3kernel (6jun23)
git-svn-id: svn://tug.org/texlive/trunk@67294 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md22
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin623197 -> 623094 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1717276 -> 1722452 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3doc.pdfbin558160 -> 558448 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin151946 -> 152256 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news.pdfbin395876 -> 395887 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news01.pdfbin122710 -> 122712 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news02.pdfbin150674 -> 150674 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news03.pdfbin148706 -> 148700 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news04.pdfbin114586 -> 114586 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news05.pdfbin112485 -> 112483 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news06.pdfbin151569 -> 151568 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news07.pdfbin128316 -> 128313 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news08.pdfbin163456 -> 163457 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news09.pdfbin250136 -> 250136 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news10.pdfbin150283 -> 150283 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news11.pdfbin170076 -> 170073 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news12.pdfbin204992 -> 204998 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt8
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdfbin81696 -> 81695 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin296462 -> 296797 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin243101 -> 243431 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin218265 -> 218589 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin7237559 -> 7352030 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3body.tex3
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx43
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx36
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx49
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx34
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx19
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx25
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx116
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx5
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx21
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx26
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx58
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx65
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx183
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx9
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex222
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx27
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty27
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls2
93 files changed, 670 insertions, 488 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index d418810401c..2ad6244fbd3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,6 +7,24 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-06-05]
+
+### Added
+- `\cctab_gsave_current:N`, `\g_tmpa_cctab` and `\g_tmpb_cctab` (issue \#1089)
+- `\prg_gset_eq_conditional:NNn` (issue \#1212)
+- `\iow_shell_open:Nn` (issue \#1122)
+
+## Deprecated
+- `\tl_case:Nn(TF)`
+- `expl3` package option `enable-debug` (no longer required)
+
+### Fixed
+- Set `\l_keys_value_tl` in `.initial:n` (issue \#1013)
+- Support for boolean values in `expl3` package options
+ `check-declarations` and `log-functions` (issue \#978)
+- Allow for optional `/` at end of `\input@path` entries
+ (see latex3/latex2e\#1076)
+
## [2023-05-22]
### Added
@@ -15,6 +33,7 @@ this project uses date-based 'snapshot' version identifiers.
- `\coffin_(g)reset_poles:N`
- `\dim_to_decimal_in_<unit>:n`, for `<unit>` types
`cc`, `cm`, `dd`, `in`, `mm` and `pc`
+- `\file_input_raw:n`
- `\int_if_zero:n(TF)`
- `\str_mdfive_hash:n`
@@ -1432,7 +1451,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-22...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-05...HEAD
+[2023-06-05]: https://github.com/latex3/latex3/compare/2023-05-22...2023-06-05
[2023-05-22]: https://github.com/latex3/latex3/compare/2023-05-15...2023-05-22
[2023-05-15]: https://github.com/latex3/latex3/compare/2023-05-11...2023-05-15
[2023-05-11]: https://github.com/latex3/latex3/compare/2023-05-05...2023-05-11
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index dd571168c53..e340b712e07 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/README.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-05-22
+Release 2023-06-05
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index 9d6d1226eca..abe1806c378 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index e5733b848b0..4c97703ecea 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
index f20b8d2d998..48deef820b2 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -62,7 +62,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-22}
+\date{Released 2023-06-05}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
index c87a4561565..4de407b4bf0 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 63e4c7157bf..cd86234a1be 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
index 28d77fd1d60..9c485f66f18 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
index 011b51961d4..50bb4103ffa 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
index 0175fd31b2e..a0c6f3f6e4c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
index ad2cd7dd33d..2ebae6016e5 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
index d283d35e092..a61d3e009f0 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
index d1e73ffb4b5..b750ca4d87c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
index fe6fb8ad497..5e01a63e751 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
index 8e6967b08aa..6e0298e5a2e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
index d32b9bff997..35b0094b1d3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
index 2e54f340e3c..dcf4d4ed808 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
index 4039ae74b83..aff50d892be 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
index 308e42b7ea3..7d4d2e520ef 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
index 086869b52c6..86ef749e1ec 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
index 0be4e4d5ee9..3efe2a8694b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
@@ -53,6 +53,14 @@ Function Date deprecated
\seq_indexed_map_inline:Nn 2020-06-18
\seq_indexed_map_function:NN 2020-06-18
\sys_load_deprecation: 2021-01-11
+\tl_case:cn 2023-05-23
+\tl_case:cnF 2023-05-23
+\tl_case:cnT 2023-05-23
+\tl_case:cnTF 2023-05-23
+\tl_case:Nn 2023-05-23
+\tl_case:NnF 2023-05-23
+\tl_case:NnT 2023-05-23
+\tl_case:NnTF 2023-05-23
\tl_lower_case:n 2020-01-03
\tl_lower_case:nn 2020-01-03
\tl_mixed_case:n 2020-01-03
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
index 9476774444e..bde496ca75c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 1a83be2d017..07265313965 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
index 4c1a0087c69..8840a0aca60 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-22}
+\date{Released 2023-06-05}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index aad08104ace..3fef1f71e03 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
index 847089ac7a7..7dc2f1b9bfb 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-22}
+\date{Released 2023-06-05}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
index 238b5bb93e0..abcc44bc3a3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
index c70b1353737..5fe65ecce40 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-22}
+\date{Released 2023-06-05}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index ffe5d5de9bf..5657c614fb7 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
index 5d7b26ceff0..5e66150ee13 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-05-22}
+\date{Released 2023-06-05}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
index c9b0f3448da..a56e37e8281 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
@@ -2,7 +2,7 @@
File: source3body.tex
-Copyright (C) 1990-2012,2014-2021 The LaTeX Project
+Copyright (C) 1990-2012,2014-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
@@ -607,6 +607,7 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
\ExplSyntaxOn
\clist_gput_right:Nn \g_docinput_clist { l3deprecation.dtx }
+\clist_gput_right:Nn \g_docinput_clist { l3debug.dtx }
\ExplSyntaxOff
\endinput
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 622593cf8f6..9066920e355 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -643,15 +643,15 @@
% as the argument, be it an integer, a length-type register, a token
% list variable or similar. The value is passed to the function as a
% braced token list. Can be applied to variables which have a
-% \cs{\meta{var}_use:N} function (other than floating points and
-% boxes), and which therefore deliver a single \enquote{value}.
+% \cs{\meta{var}_use:N} function (other than boxes),
+% and which therefore deliver a single \enquote{value}.
% \item[v] Value of a register, constructed from a character string
% used as a command name.\\
% This is a combination of |c| and |V| which first constructs a
% control sequence from the argument and then passes the value of
% the resulting register to the function. Can be applied to
% variables which have a \cs{\meta{var}_use:N} function (other than
-% floating points and boxes), and which therefore deliver a single
+% boxes), and which therefore deliver a single
% \enquote{value}.
% \item[x] Fully-expanded token or braced token list.\\
% This means that the argument is expanded as in the replacement
@@ -914,14 +914,6 @@
% required by the bootstrap code). See also \cs{debug_on:n}
% \texttt{\{log-functions\}} in \pkg{l3candidates} for finer control.
%
-% \DescribeOption{enable-debug}
-% To allow more localized checking and logging than provided by
-% \texttt{check-declarations} and \texttt{log-functions}, \pkg{expl3}
-% provides a few \cs[no-index]{debug_\ldots{}} functions (described
-% elsewhere) that turn on the corresponding checks within a group.
-% These functions can only be used if \pkg{expl3} is loaded with the
-% \texttt{enable-debug} option.
-%
% \DescribeOption{backend}
% Selects the backend to be used for color, graphics and related operations that
% are backend-dependent. Options available are
@@ -1392,19 +1384,28 @@
backend .choices:nn =
{ dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
{ \sys_load_backend:n {#1} } ,
- check-declarations .code:n =
+ check-declarations .choice: ,
+ check-declarations / true .code:n =
+ { \debug_on:n { check-declarations } } ,
+ check-declarations / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { check-declarations }
+ \__kernel_if_debug:TF
+ { \debug_off:n { check-declarations } }
+ { }
} ,
+ check-declarations .default:n = true ,
driver .meta:n = { backend = #1 } ,
- enable-debug .code:n =
- \sys_load_debug: ,
- log-functions .code:n =
+ enable-debug .code:n = {} , % A stub
+ log-functions .choice: ,
+ log-functions / true .code:n =
+ { \debug_on:n { log-functions } } ,
+ log-functions / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { log-functions }
+ \__kernel_if_debug:TF
+ { \debug_off:n { log-functions } }
+ { }
} ,
+ log-functions .default:n = true ,
suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 291e93bf7b0..da72c5cba95 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -601,6 +601,7 @@
% \begin{function}[updated = 2012-01-14]
% {
% \cs_generate_from_arg_count:NNnn,
+% \cs_generate_from_arg_count:NNno,
% \cs_generate_from_arg_count:cNnn,
% \cs_generate_from_arg_count:Ncnn
% }
@@ -870,7 +871,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2019-02-27]{\cs_replacement_spec:N}
+% \begin{function}[EXP, added = 2019-02-27]{\cs_replacement_spec:N, \cs_replacement_spec:c}
% \begin{syntax}
% \cs{cs_replacement_spec:N} \meta{token}
% \end{syntax}
@@ -1148,11 +1149,6 @@
% conditionals described above.
% \end{description}
%
-% \begin{variable}{\c_true_bool, \c_false_bool}
-% Constants that represent |true| and |false|, respectively. Used to
-% implement predicates.
-% \end{variable}
-%
% \subsection{Tests on control sequences}
%
% \begin{function}[EXP,pTF]{\cs_if_eq:NN}
@@ -1291,7 +1287,7 @@
%
% \section{Debugging support}
%
-% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n}
+% \begin{function}[added = 2017-07-16, updated = 2023-05-23]{\debug_on:n, \debug_off:n}
% \begin{syntax}
% \cs{debug_on:n} |{| \meta{comma-separated list} |}|
% \cs{debug_off:n} |{| \meta{comma-separated list} |}|
@@ -1313,8 +1309,7 @@
% Providing these as switches rather than options allows testing code
% even if it relies on other packages: load all other packages, call
% \cs{debug_on:n}, and load the code that one is interested in
-% testing. These functions can only be used in \LaTeXe{} package mode
-% loaded with \texttt{enable-debug} or another option implying it.
+% testing.
% \end{function}
%
% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:}
@@ -1803,13 +1798,13 @@
% \begin{macrocode}
\cs_set_protected:Npn \debug_on:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_on:n {#1} } }
+ \sys_load_debug:
+ \debug_on:n {#1}
}
\cs_set_protected:Npn \debug_off:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_off:n {#1} } }
+ \sys_load_debug:
+ \debug_off:n {#1}
}
% \end{macrocode}
% \end{macro}
@@ -2161,7 +2156,12 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\prg_set_eq_conditional:NNn, \prg_new_eq_conditional:NNn}
+% \begin{macro}
+% {
+% \prg_set_eq_conditional:NNn ,
+% \prg_gset_eq_conditional:NNn,
+% \prg_new_eq_conditional:NNn
+% }
% \begin{macro}{\@@_set_eq_conditional:NNNn}
% The setting-equal functions. Split both functions and feed
% \Arg{name_1} \Arg{signature_1} \meta{boolean_1}
@@ -2172,6 +2172,8 @@
% \begin{macrocode}
\cs_set_protected:Npn \prg_set_eq_conditional:NNn
{ \@@_set_eq_conditional:NNNn \cs_set_eq:cc }
+\cs_set_protected:Npn \prg_gset_eq_conditional:NNn
+ { \@@_set_eq_conditional:NNNn \cs_gset_eq:cc }
\cs_set_protected:Npn \prg_new_eq_conditional:NNn
{ \@@_set_eq_conditional:NNNn \cs_new_eq:cc }
\cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4
@@ -3343,8 +3345,8 @@
% The approach here is different to that used by \LaTeXe{} or plain \TeX{},
% which unbox a void box to force horizontal mode. That inserts the
% \tn{everypar} tokens \emph{before} the re-inserted unboxing tokens. The
-% approach here uses either the \tn{quitvmode} primitive or the equivalent
-% protected macro. In vertical mode, the \tn{indent} primitive is inserted:
+% approach here uses a protected macro, equivalent to the \tn{quitvmode}
+% primitive. In vertical mode, the \tn{indent} primitive is inserted:
% this will switch to horizontal mode and insert \tn{everypar} tokens and
% nothing else. Unlike the \LaTeXe{} version, the availability of \eTeX{}
% means using a mode test can be done at for example the start of an
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 8f69c22be38..152ace24f6c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 3dc1a966de2..093a1b23cd6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 03639af043d..fb60287e470 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
index 2cbe46be182..f4e8088e3d8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -52,7 +52,9 @@
% A category code table enables rapid switching of all category codes in
% one operation. For \LuaTeX{}, this is possible over the entire Unicode
% range. For other engines, only the $8$-bit range ($0$--$255$) is covered by
-% such tables.
+% such tables. The implementation of category code tables in \pkg{expl3}
+% also saves and restores the \TeX{} \tn{endlinechar} primitive value, meaning
+% they could be used for example to implement \cs{ExplSyntaxOn}.
%
% \section{Creating and initialising category code tables}
%
@@ -87,6 +89,15 @@
% can include a call to \cs{cctab_select:N}.
% \end{function}
%
+% \begin{function}[added = 2023-05-26]
+% {\cctab_gsave_current:N,\cctab_gsave_current:c}
+% \begin{syntax}
+% \cs{cctab_gsave_current:N} \meta{category code table}
+% \end{syntax}
+% Saves the current prevailing category codes in the
+% \meta{category code table}.
+% \end{function}
+%
% \section{Using category code tables}
%
% \begin{function}[updated = 2020-07-02]{\cctab_begin:N,\cctab_begin:c}
@@ -141,19 +152,20 @@
% category code table.
% \end{function}
%
-% \section{Constant category code tables}
+% \section{Constant and scratch category code tables}
%
% \begin{variable}[updated = 2020-07-10]{\c_code_cctab}
% Category code table for the \pkg{expl3} code environment; this does
% \emph{not} include \texttt{@}, which is retained as an \enquote{other}
-% character.
+% character. Sets the \tn{endlinechar} value to $32$ (a space).
% \end{variable}
%
% \begin{variable}[updated = 2020-07-08]{\c_document_cctab}
% Category code table for a standard \LaTeX{} document, as set by the \LaTeX{}
% kernel. In particular, the upper-half of the $8$-bit range will be set to
% \enquote{active} with \pdfTeX{} \emph{only}. No \pkg{babel} shorthands
-% will be activated.
+% will be activated. Sets the \tn{endlinechar} value to $13$ (normal
+% line ending).
% \end{variable}
%
% \begin{variable}[updated = 2020-07-02]{\c_initex_cctab}
@@ -162,13 +174,17 @@
%
% \begin{variable}[updated = 2020-07-02]{\c_other_cctab}
% Category code table where all characters have category code $12$
-% (other).
+% (other). Sets the \tn{endlinechar} value to $-1$.
% \end{variable}
%
% \begin{variable}[updated = 2020-07-02]{\c_str_cctab}
% Category code table where all characters have category code $12$
% (other) with the exception of spaces, which have category code
-% $10$ (space).
+% $10$ (space). Sets the \tn{endlinechar} value to $-1$.
+% \end{variable}
+%
+% \begin{variable}[added = 2023-05-26]{\g_tmpa_cctab, \g_tmpb_cctab}
+% Scratch category code tables.
% \end{variable}
%
% \end{documentation}
@@ -363,6 +379,18 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\cctab_gsave_current:N, \cctab_gsave_current:c}
+% Very simple.
+% \begin{macrocode}
+\cs_new_protected:Npn \cctab_gsave_current:N #1
+ {
+ \@@_chk_if_valid:NT #1
+ { \@@_gset:n {#1} }
+ }
+\cs_generate_variant:Nn \cctab_gsave_current:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Using category code tables}
%
% \begin{variable}{\g_@@_internal_cctab}
@@ -864,6 +892,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\g_tmpa_cctab, \g_tmpb_cctab}
+% \begin{macrocode}
+\cctab_new:N \g_tmpa_cctab
+\cctab_new:N \g_tmpb_cctab
+% \end{macrocode}
+% \end{variable}
+%
% \subsection{Messages}
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index f25ff979114..4d712152b5e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -241,12 +241,16 @@
% \begin{function}[updated = 2011-09-05]
% {
% \clist_put_left:Nn, \clist_put_left:NV,
+% \clist_put_left:Nv,
% \clist_put_left:No, \clist_put_left:Nx,
% \clist_put_left:cn, \clist_put_left:cV,
+% \clist_put_left:cv,
% \clist_put_left:co, \clist_put_left:cx,
% \clist_gput_left:Nn, \clist_gput_left:NV,
+% \clist_gput_left:Nv,
% \clist_gput_left:No, \clist_gput_left:Nx,
% \clist_gput_left:cn, \clist_gput_left:cV,
+% \clist_gput_left:cv,
% \clist_gput_left:co, \clist_gput_left:cx
% }
% \begin{syntax}
@@ -264,12 +268,16 @@
% \begin{function}[updated = 2011-09-05]
% {
% \clist_put_right:Nn, \clist_put_right:NV,
+% \clist_put_right:Nv,
% \clist_put_right:No, \clist_put_right:Nx,
% \clist_put_right:cn, \clist_put_right:cV,
+% \clist_put_right:cv,
% \clist_put_right:co, \clist_put_right:cx,
% \clist_gput_right:Nn, \clist_gput_right:NV,
+% \clist_gput_right:Nv,
% \clist_gput_right:No, \clist_gput_right:Nx,
% \clist_gput_right:cn, \clist_gput_right:cV,
+% \clist_gput_right:cv,
% \clist_gput_right:co, \clist_gput_right:cx
% }
% \begin{syntax}
@@ -1158,16 +1166,20 @@
% \begin{macro}
% {
% \clist_put_left:Nn, \clist_put_left:NV,
+% \clist_put_left:Nv,
% \clist_put_left:No, \clist_put_left:Nx,
% \clist_put_left:cn, \clist_put_left:cV,
+% \clist_put_left:cv,
% \clist_put_left:co, \clist_put_left:cx
% }
% \UnitTested
% \begin{macro}
% {
% \clist_gput_left:Nn, \clist_gput_left:NV,
+% \clist_gput_left:Nv,
% \clist_gput_left:No, \clist_gput_left:Nx,
% \clist_gput_left:cn, \clist_gput_left:cV,
+% \clist_gput_left:cv,
% \clist_gput_left:co, \clist_gput_left:cx
% }
% \UnitTested
@@ -1185,10 +1197,10 @@
#2 \l_@@_internal_clist {#4}
#1 #3 \l_@@_internal_clist #3
}
-\cs_generate_variant:Nn \clist_put_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1197,16 +1209,20 @@
% \begin{macro}
% {
% \clist_put_right:Nn, \clist_put_right:NV,
+% \clist_put_right:Nv,
% \clist_put_right:No, \clist_put_right:Nx,
% \clist_put_right:cn, \clist_put_right:cV,
+% \clist_put_right:cv,
% \clist_put_right:co, \clist_put_right:cx
% }
% \UnitTested
% \begin{macro}
% {
% \clist_gput_right:Nn, \clist_gput_right:NV,
+% \clist_gput_right:Nv,
% \clist_gput_right:No, \clist_gput_right:Nx,
% \clist_gput_right:cn, \clist_gput_right:cV,
+% \clist_gput_right:cv,
% \clist_gput_right:co, \clist_gput_right:cx
% }
% \UnitTested
@@ -1221,10 +1237,10 @@
#2 \l_@@_internal_clist {#4}
#1 #3 #3 \l_@@_internal_clist
}
-\cs_generate_variant:Nn \clist_put_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index f44299c55da..39fdb7700e4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
index c03bd0c4bbd..fd20fd79038 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
index b6d6099031e..fe3e669c560 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
@@ -43,12 +43,18 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
% \begin{documentation}
%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3debug} implementation}
+%
% \begin{function}{\__kernel_chk_var_local:N, \__kernel_chk_var_global:N}
% \begin{syntax}
% \cs{__kernel_chk_var_local:N} \meta{var}
@@ -112,12 +118,6 @@
% This function is only created if debugging is enabled.
% \end{function}
%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3debug} implementation}
-%
% \begin{macrocode}
%<*package>
% \end{macrocode}
@@ -602,7 +602,8 @@
\cs_new:Npn \@@_arg_return:N #1
{ \exp_after:wN #1 \exp:w \exp_end_continue_f:w }
% \end{macrocode}
-% \end{variable}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{
% \__kernel_patch:nnn,
@@ -1471,7 +1472,7 @@
\\
LaTeX~will~create~the~variable~and~continue.
}
-% \end{macrocode}
+% \end{macrocode}
%
% \begin{macro}{\__kernel_if_debug:TF}
% Flip the switch for deprecated code.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 05264251e4b..806c62670e7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -583,6 +583,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[noTF]{\tl_case:Nn, \tl_case:cn}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
+\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
+\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF }
+\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF }
+\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
+\cs_generate_variant:Nn \tl_case:Nn { c }
+\prg_generate_conditional_variant:Nnn \tl_case:Nn
+ { c } { T , F , TF }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3token} functions}
%
% \begin{macro}[EXP]{\char_to_utfviii_bytes:n}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index 1c789c12109..58778973a49 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
% \maketitle
% \tableofcontents
%
@@ -3374,7 +3374,7 @@ and all files in that bundle must be distributed together.
\seq_set_map:NNn \l_@@_tmpa_seq
\g_@@_nested_names_seq
{ \@@_macro_end_wrap_item:n {##1} }
- End~ definition~ for~
+ End~ of~ definition~ for~
\int_compare:nTF { \seq_count:N \l_@@_tmpa_seq <= 3 }
{
\seq_use:Nnnn \l_@@_tmpa_seq
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 715bceeb302..3d4536d5a43 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 9288a5271cf..8e52b526595 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -134,7 +134,8 @@
% comma-separated list of \meta{variant argument specifiers} is
% then used to define variants of the
% \meta{original argument specifier} if these are not already
-% defined. For each \meta{variant} given, a function is created
+% defined; entries which correspond to existing functions are silently
+% ingored. For each \meta{variant} given, a function is created
% that expands its arguments as detailed and passes them
% to the \meta{parent control sequence}. So for example
% \begin{verbatim}
@@ -150,7 +151,7 @@
% generates the functions |\foo:NV| and |\foo:cV| in the same
% way. The \cs{cs_generate_variant:Nn} function should only be applied if
% the \meta{parent control sequence} is already defined. (This is only
-% enforced if debugging support is enabled.)
+% enforced if debugging support \texttt{check-declarations} is enabled.)
% If the \meta{parent
% control sequence} is protected or if the \meta{variant} involves any
% |x|~argument, then the \meta{variant control sequence} is also
@@ -158,7 +159,9 @@
% \cs[no-index]{exp_args:N\meta{variant}} function needed to carry out the
% expansion. There is no need to re-apply \cs{cs_generate_variant:Nn} after
% changing the definition of the parent function: the variant will always
-% use the current definition of the parent.
+% use the current definition of the parent. Providing variants repeatedly is
+% safe as \cs{cs_generate_variant:Nn} will only create new definitions if
+% there is not already one available.
%
% Only |n|~and |N| arguments can be changed to other types. The only
% allowed changes are
@@ -1729,7 +1732,7 @@
%
% The other case where variants should be protected is when the parent
% function is a protected macro: then |protected| appears in the
-% meaning before the fist occurrence of |macro|. The |ww| auxiliary
+% meaning before the first occurrence of |macro|. The |ww| auxiliary
% removes everything in the meaning string after the first |ma|. We
% use |ma| rather than the full |macro| because the meaning of the
% \tn{firstmark} primitive (and four others) can contain an arbitrary
@@ -2387,6 +2390,18 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Held-over variant generation}
+%
+% \begin{macro}{\cs_generate_from_arg_count:NNno}
+% \begin{macro}{\cs_replacement_spec:c}
+% A couple of variants that are from early functions.
+% \begin{macrocode}
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNno }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index c4e5f0b1ce9..5e2d8ba74d5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -157,6 +157,23 @@
% \cs{sys_get_shell:nnNTF}.
% \end{function}
%
+% \begin{function}[added = 2023-05-25]{\iow_shell_open:Nn}
+% \begin{syntax}
+% \cs{iow_shell_open:Nn} \meta{stream} \Arg{shell~command}
+% \end{syntax}
+% Opens the \emph{pseudo}-file created by the output of the
+% \meta{shell command} for writing using \meta{stream} as the
+% control sequence for access. If the \meta{stream} was already
+% open it is closed before the new operation begins. The
+% \meta{stream} is available for access immediately and will remain
+% allocated to \meta{shell command} until a \cs{iow_close:N} instruction
+% is given or the \TeX{} run ends.
+% If piped system calls are disabled an error is raised.
+%
+% For details of handling of the \meta{shell command}, see
+% \cs{sys_get_shell:nnNTF}.
+% \end{function}
+%
% \begin{function}[updated = 2012-07-31]
% {\ior_close:N, \ior_close:c, \iow_close:N, \iow_close:c}
% \begin{syntax}
@@ -917,6 +934,21 @@
% function. An error is raised if the file is not found.
% \end{function}
%
+% \begin{function}[added = 2023-05-18, EXP]{\file_input_raw:n}
+% \begin{syntax}
+% \cs{file_input_raw:n} \Arg{file name}
+% \end{syntax}
+% Searches for \meta{file name} in the path as detailed for
+% \cs{file_if_exist:nTF}, and if found reads in the file as
+% additional \TeX{} source. No data concerning the file is
+% tracked. If the file is not found, no action is taken.
+% \begin{texnote}
+% This function is intended only for contexts where files must
+% be read purely by expansion, for example at the start of a
+% table cell in an \tn{halign}.
+% \end{texnote}
+% \end{function}
+%
% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF}
% \begin{syntax}
% \cs{file_if_exist_input:n} \Arg{file name}
@@ -1169,7 +1201,7 @@
{
\sys_if_shell:TF
{ \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
- { \msg_error:nn { ior } { pipe-failed } }
+ { \msg_error:nn { kernel } { pipe-failed } }
}
\cs_new_protected:Npn \@@_shell_open:nN #1#2
{
@@ -1180,7 +1212,7 @@
}
{ \__kernel_ior_open:Nn #2 { |#1 } }
}
-\msg_new:nnnn { ior } { pipe-failed }
+\msg_new:nnnn { kernel } { pipe-failed }
{ Cannot~run~piped~system~commands. }
{
LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
@@ -1634,6 +1666,29 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\iow_shell_open:Nn}
+% \begin{macro}{\@@_shell_open:nN}
+% Very similar to the \texttt{ior} version
+% \begin{macrocode}
+\cs_new_protected:Npn \iow_shell_open:Nn #1#2
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \msg_error:nn { kernel } { pipe-failed } }
+ }
+\cs_new_protected:Npn \@@_shell_open:nN #1#2
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ }
+ { \__kernel_iow_open:Nn #2 { |#1 } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\iow_close:N, \iow_close:c}
% Closing a stream is not quite the reverse of opening one. First,
% the close operation is easier than the open one, and second as the
@@ -2818,7 +2873,9 @@
%
% \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n, \@@_full_name_aux:n}
% \begin{macro}[EXP]{\@@_full_name_auxi:nn, \@@_full_name_auxii:nn}
-% \begin{macro}[EXP]{\@@_full_name_aux:Nnnn}
+% \begin{macro}[EXP]{\@@_full_name_aux:Nnn}
+% \begin{macro}[EXP]{\@@_full_name_slash:n}
+% \begin{macro}[EXP]{\@@_full_name_slash:w}
% \begin{macro}[EXP]{\@@_full_name_aux:nN}
% \begin{macro}[EXP]{\@@_full_name_aux:nnN}
% \begin{macro}[EXP]{\@@_name_cleanup:w}
@@ -2888,11 +2945,11 @@
\tl_if_blank:nTF {#2}
{
\seq_map_tokens:Nn \l_file_search_path_seq
- { \@@_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
+ { \@@_full_name_aux:Nnn \seq_map_break:n {#1} }
\cs_if_exist:NT \input@path
{
\tl_map_tokens:Nn \input@path
- { \@@_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
+ { \@@_full_name_aux:Nnn \tl_map_break:n {#1} }
}
\@@_name_end:
}
@@ -2902,8 +2959,25 @@
% Two pars to the auxiliary here so we can avoid doing quoting
% twice in the event we find the right file.
% \begin{macrocode}
-\cs_new:Npn \@@_full_name_aux:Nnnn #1#2#3#4
- { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
+\cs_new:Npn \@@_full_name_aux:Nnn #1#2#3
+ {
+ \exp_args:Ne \@@_full_name_aux:nN
+ {
+ \exp_args:Ne \@@_full_name_slash:n
+ { \tl_to_str:n {#3} } #2
+ }
+ #1
+ }
+\cs_new:Npn \@@_full_name_slash:n #1
+ {
+ \@@_full_name_slash:nw {#1} #1 \q_nil / \q_nil / \q_nil \q_stop
+ }
+\cs_new:Npn \@@_full_name_slash:nw #1#2 / \q_nil / #3 \q_stop
+ {
+ \quark_if_nil:nTF {#3}
+ { #1 / }
+ { #2 / }
+ }
\cs_new:Npn \@@_full_name_aux:nN #1
{ \exp_args:Nne \@@_full_name_aux:nnN {#1} { \@@_full_name_aux:n {#1} } }
\cs_new:Npn \@@_full_name_aux:nnN #1 #2 #3
@@ -2971,6 +3045,8 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\file_get_full_name:nN, \file_get_full_name:VN}
% \begin{macro}[TF]{\file_get_full_name:nN, \file_get_full_name:VN}
@@ -3355,6 +3431,30 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\file_input_raw:n, \@@_input_raw:nn}
+% No error checking, no tracking.
+% \begin{macrocode}
+\cs_new:Npn \file_input_raw:n #1
+ { \exp_args:Ne \@@_input_raw:nn { \file_full_name:n {#1} } {#1} }
+\cs_new:Npx \@@_input_raw:nn #1#2
+ {
+ \exp_not:N \tl_if_blank:nTF {#1}
+ {
+ \exp_not:N \exp_args:Nnne \exp_not:N \msg_expandable_error:nnn
+ { kernel } { file-not-found }
+ { \exp_not:N \__kernel_file_name_sanitize:n {#2} }
+ }
+ {
+ \exp_not:N \tex_input:D
+ \sys_if_engine_luatex:TF
+ { {#1} }
+ { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: }
+ }
+ }
+\exp_args_generate:n { nne }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name_apply:nN}
% The main parsing macro \cs{file_parse_full_name_apply:nN} passes the
% file name |#1| through \cs{__kernel_file_name_sanitize:n} so that we
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index d34922db45b..9640a6d2db6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 1021bfb8307..ae30092b63f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index c138c06d2ab..025a0af647a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index d041b95689e..875027466d0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index ee86a451c82..6651d7931c6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 312d0a33cac..42a6ebbbf1b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index f11d8f5f2c8..6e57dbc01b9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -172,10 +172,10 @@
% \subsection{Multiplying a fixed point number by a short one}
%
% \begin{macro}[EXP]{\@@_fixed_mul_short:wwn}
-% \begin{syntax}
+% \begin{syntax}\parskip=0pt\obeylines
% \cs{@@_fixed_mul_short:wwn}
-% \ \ \Arg{a_1} \Arg{a_2} \Arg{a_3} \Arg{a_4} \Arg{a_5} \Arg{a_6} |;|
-% \ \ \Arg{b_0} \Arg{b_1} \Arg{b_2} |;| \Arg{continuation}
+% | |\Arg{a_1} \Arg{a_2} \Arg{a_3} \Arg{a_4} \Arg{a_5} \Arg{a_6} |;|
+% | |\Arg{b_0} \Arg{b_1} \Arg{b_2} |;| \Arg{continuation}
% \end{syntax}
% Computes the product $c=ab$ of $a=\sum_i \meta{a_i} 10^{-4i}$ and
% $b=\sum_i \meta{b_i} 10^{-4i}$, rounds it to the closest multiple of
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 1796aa16b56..4f58336b126 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 93bbc4a799d..84ca08a5459 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 54979b87014..0bb4a9209a0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 14e327ab17b..1ceeb011efc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 23857d73e65..d8c7b6aef56 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index a30c683e6cb..6cd98b62d9b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 29f1ed453e6..3c7144eb284 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 33b17da6ada..afc55ae4af8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index bf3c413b286..a5bf5279a2a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -189,7 +189,8 @@
% explict integers, and this may terminate the expression: for
% instance, \cs{int_eval:w} \verb*|1 + 1 9| (with explicit space
% tokens inserted using |~| in a code setting) expands to \texttt{29}
-% since the digit~\texttt{9} is not part of the expression.
+% since the digit~\texttt{9} is not part of the expression. Expansion
+% details, etc., are as given for \cs{int_eval:n}.
% \end{function}
%
% \begin{function}[EXP, added = 2018-11-03]{\int_sign:n}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 3978f7f53a0..1eeec96a3d4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index f97ddf0a3fb..471c3c52dca 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -93,9 +93,9 @@
% \end{function}
%
% \begin{function}{\__kernel_chk_tl_type:NnnT}
-% \begin{syntax}
+% \begin{syntax}\parskip=0pt\obeylines
% \cs{__kernel_chk_tl_type:NnnT} \meta{control sequence} \Arg{specific type} \\
-% \ \ \Arg{reconstruction} \Arg{true code}
+% | |\Arg{reconstruction} \Arg{true code}
% \end{syntax}
% Helper to test that the \meta{control sequence} is a variable of the
% given \meta{specific type} of token list. Produces suitable error
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 84d5bc1d968..d8cec60f8fc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -286,6 +286,12 @@
% forbidden. Thus a required value cannot be supplied by a default
% value, and giving a default value for a key which cannot take a value
% does not trigger an error.
+%
+% When no value is given for a key as part of \cs{keys_set:nn}, the
+% \texttt{.default:n} value provides the value before key properties are
+% considered. The only exception is when the \texttt{.value_required:n}
+% property is active: a required value cannot be supplied by the default,
+% and must be explicitly given as part of \cs{keys_set:nn}.
% \end{function}
%
% \begin{function}[updated = 2020-01-17]
@@ -717,7 +723,7 @@
% \section{Setting keys}
%
% \begin{function}[updated = 2017-11-14]
-% {\keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no}
+% {\keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx}
% \begin{syntax}
% \cs{keys_set:nn} \Arg{module} \Arg{keyval list}
% \end{syntax}
@@ -731,8 +737,8 @@
% {\l_keys_key_str, \l_keys_path_str, \l_keys_value_tl}
% For each key processed, information of the full \emph{path} of the
% key, the \emph{name} of the key and the \emph{value} of the key is
-% available within three token list variables. These may be used within
-% the code of the key.
+% available within two string and one token list variables.
+% These may be used within the code of the key.
%
% The \emph{value} is everything after the \texttt{=}, which may be
% empty if no value was given. This is stored in \cs{l_keys_value_tl}, and
@@ -2079,7 +2085,8 @@
\l_keys_path_str \s_@@_stop
\l_keys_key_tl \l_keys_key_str
\tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
- \@@_execute:nn \l_keys_path_str {#1}
+ \tl_set:Nn \l_keys_value_tl {#1}
+ \@@_execute:no \l_keys_path_str \l_keys_value_tl
}
}
}
@@ -2716,7 +2723,7 @@
%
% \begin{macro}
% {
-% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no,
+% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx,
% \@@_set:nn
% }
% \begin{macro}{\@@_set:nnn}
@@ -2742,7 +2749,7 @@
{ \exp_not:o \l_@@_relative_tl }
}
}
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
\cs_new_protected:Npn \@@_set:nn #1#2
{ \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} }
\cs_new_protected:Npn \@@_set:nnn #1#2#3
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 867d369f12d..5e199990a48 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 5849266ddbd..2735f6efa26 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 41812fd5f74..88bf2d8b554 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -2056,22 +2056,6 @@
}
% \end{macrocode}
%
-% Some errors are only needed in package mode if debugging is enabled by
-% one of the options \texttt{enable-debug}, \texttt{check-declarations},
-% \texttt{log-functions}, or on the contrary if debugging is turned off.
-% In format mode the error is somewhat different.
-% \begin{macrocode}
-\msg_new:nnnn { debug } { enable-debug }
- { To~use~'#1'~set~the~'enable-debug'~option. }
- {
- The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
- some~internal~functions~in~expl3~have~been~appropriately~
- defined.~This~only~happens~if~one~of~the~options~
- 'enable-debug',~'check-declarations'~or~'log-functions'~was~
- given~as~an~option:~see~the~main~expl3~documentation.
- }
-% \end{macrocode}
-%
% Some errors only appear in expandable settings,
% hence don't need a \enquote{more-text} argument.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 97f4b0431d1..9158270a84b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
index 38896f7d87e..c223938d2a6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 7374a8d8b9f..27a383899b1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -171,7 +171,12 @@
% state. There must be a return statement for each branch; failing to do
% so will result in erroneous output if that branch is executed.
%
-% \begin{function}{\prg_new_eq_conditional:NNn, \prg_set_eq_conditional:NNn}
+% \begin{function}[updated = 2023-05-26]
+% {
+% \prg_new_eq_conditional:NNn,
+% \prg_set_eq_conditional:NNn,
+% \prg_gset_eq_conditional:NNn
+% }
% \begin{syntax}
% \cs{prg_new_eq_conditional:NNn} \cs[no-index]{\meta{name_1}:\meta{arg spec_1}} \cs[no-index]{\meta{name_2}:\meta{arg spec_2}} \Arg{conditions}
% \end{syntax}
@@ -375,7 +380,12 @@
% check that the \meta{boolean} really is a boolean variable.
% \end{function}
%
-% \subsection{Scratch booleans}
+% \subsection{Constant and scratch booleans}
+%
+% \begin{variable}{\c_true_bool, \c_false_bool}
+% Constants that represent |true| and |false|, respectively. Used to
+% implement predicates.
+% \end{variable}
%
% \begin{variable}{\l_tmpa_bool, \l_tmpb_bool}
% A scratch boolean for local assignment. It is never used by
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 259009a181e..d254e432808 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -165,16 +165,16 @@
%
% \begin{function}[updated = 2012-07-09]
% {
-% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nnx,
+% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
% \prop_put:Non, \prop_put:Noo, \prop_put:Nxx,
-% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cnx,
+% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
% \prop_put:con, \prop_put:coo, \prop_put:cxx,
-% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nnx,
+% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx,
% \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx,
-% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cnx,
+% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
% \prop_gput:con, \prop_gput:coo, \prop_gput:cxx
% }
@@ -1152,19 +1152,19 @@
%
% \begin{macro}[tested = m3prop002]
% {
-% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nnx,
+% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
% \prop_put:Non, \prop_put:Noo, \prop_put:Nxx,
-% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cnx,
+% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
% \prop_put:con, \prop_put:coo, \prop_put:cxx
% }
% \begin{macro}[tested = m3prop002]
% {
-% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nnx,
+% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
% \prop_gput:NVn, \prop_gput:NVV, \prop_hput:NVx, \prop_hput:Nvx,
% \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx,
-% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cnx,
+% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
% \prop_gput:con, \prop_gput:coo, \prop_gput:cxx
% }
@@ -1196,13 +1196,13 @@
{ #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_put:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index d2f02ae06de..bc18bd95a90 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 9110d54b855..a87896011a8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 3044da987cd..25b316dfcdf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -931,9 +931,9 @@
%
% Adding an \meta{item} to a set \meta{seq~var} can be done by appending
% it to the \meta{seq~var} if it is not already in the \meta{seq~var}:
-% \begin{quote}\ttfamily
-% \cs{seq_if_in:NnF} \meta{seq~var} \Arg{item} \\
-% \ \ \{ \cs{seq_put_right:Nn} \meta{seq~var} \Arg{item} \}
+% \begin{quote}\ttfamily\parskip=0pt\obeylines
+% \cs{seq_if_in:NnF} \meta{seq~var} \Arg{item}
+% | |\{ \cs{seq_put_right:Nn} \meta{seq~var} \Arg{item} \}
% \end{quote}
% Removing an \meta{item} from a set \meta{seq~var} can be done using
% \cs{seq_remove_all:Nn},
@@ -944,13 +944,13 @@
% The intersection of two sets \meta{seq~var_1} and \meta{seq~var_2} can
% be stored into \meta{seq~var_3} by collecting items of
% \meta{seq~var_1} which are in \meta{seq~var_2}.
-% \begin{quote}\ttfamily
-% \cs{seq_clear:N} \meta{seq~var_3} \\
-% \cs{seq_map_inline:Nn} \meta{seq~var_1} \\
-% \ \ \{ \\
-% \ \ \ \ \cs{seq_if_in:NnT} \meta{seq~var_2} \{\#1\} \\
-% \ \ \ \ \ \ \{ \cs{seq_put_right:Nn} \meta{seq~var_3} \{\#1\} \} \\
-% \ \ \}
+% \begin{quote}\ttfamily\parskip=0pt\obeylines
+% \cs{seq_clear:N} \meta{seq~var_3}
+% \cs{seq_map_inline:Nn} \meta{seq~var_1}
+% | |\{
+% | |\cs{seq_if_in:NnT} \meta{seq~var_2} \{\#1\}
+% | |\{ \cs{seq_put_right:Nn} \meta{seq~var_3} \{\#1\} \}
+% | |\}
% \end{quote}
% The code as written here only works if \meta{seq~var_3} is different
% from the other two sequence variables. To cover all cases, items
@@ -966,13 +966,13 @@
% \cs{seq_remove_duplicates:N} \meta{seq~var_3}
% \end{quote}
% or by adding items to (a copy of) \meta{seq~var_1} one by one
-% \begin{quote}\ttfamily
-% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_1} \\
-% \cs{seq_map_inline:Nn} \meta{seq~var_2} \\
-% \ \ \{ \\
-% \ \ \ \ \cs{seq_if_in:NnF} \meta{seq~var_3} \{\#1\} \\
-% \ \ \ \ \ \ \{ \cs{seq_put_right:Nn} \meta{seq~var_3} \{\#1\} \} \\
-% \ \ \}
+% \begin{quote}\ttfamily\parskip=0pt\obeylines
+% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_1}
+% \cs{seq_map_inline:Nn} \meta{seq~var_2}
+% | |\{
+% | |\cs{seq_if_in:NnF} \meta{seq~var_3} \{\#1\}
+% | |\{ \cs{seq_put_right:Nn} \meta{seq~var_3} \{\#1\} \}
+% | |\}
% \end{quote}
% The second approach is faster than the first when the \meta{seq~var_2}
% is short compared to \meta{seq~var_1}.
@@ -980,10 +980,10 @@
% The difference of two sets \meta{seq~var_1} and \meta{seq~var_2} can
% be stored into \meta{seq~var_3} by removing items of the
% \meta{seq~var_2} from (a copy of) the \meta{seq~var_1} one by one.
-% \begin{quote}\ttfamily
-% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_1} \\
-% \cs{seq_map_inline:Nn} \meta{seq~var_2} \\
-% \ \ \{ \cs{seq_remove_all:Nn} \meta{seq~var_3} \{\#1\} \}
+% \begin{quote}\ttfamily\parskip=0pt\obeylines
+% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_1}
+% \cs{seq_map_inline:Nn} \meta{seq~var_2}
+% | |\{ \cs{seq_remove_all:Nn} \meta{seq~var_3} \{\#1\} \}
% \end{quote}
%
% The symmetric difference of two sets \meta{seq~var_1} and
@@ -992,13 +992,13 @@
% the result as |\l__|\meta{pkg}|_internal_seq|, then the difference
% between \meta{seq~var_2} and \meta{seq~var_1}, and finally
% concatenating the two differences to get the symmetric differences.
-% \begin{quote}\ttfamily
-% \cs{seq_set_eq:NN} |\l__|\meta{pkg}|_internal_seq| \meta{seq~var_1} \\
-% \cs{seq_map_inline:Nn} \meta{seq~var_2} \\
-% \ \ \{ \cs{seq_remove_all:Nn} |\l__|\meta{pkg}|_internal_seq| \{\#1\} \} \\
-% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_2} \\
-% \cs{seq_map_inline:Nn} \meta{seq~var_1} \\
-% \ \ \{ \cs{seq_remove_all:Nn} \meta{seq~var_3} \{\#1\} \} \\
+% \begin{quote}\ttfamily\parskip=0pt\obeylines
+% \cs{seq_set_eq:NN} |\l__|\meta{pkg}|_internal_seq| \meta{seq~var_1}
+% \cs{seq_map_inline:Nn} \meta{seq~var_2}
+% | |\{ \cs{seq_remove_all:Nn} |\l__|\meta{pkg}|_internal_seq| \{\#1\} \}
+% \cs{seq_set_eq:NN} \meta{seq~var_3} \meta{seq~var_2}
+% \cs{seq_map_inline:Nn} \meta{seq~var_1}
+% | |\{ \cs{seq_remove_all:Nn} \meta{seq~var_3} \{\#1\} \}
% \cs{seq_concat:NNN} \meta{seq~var_3} \meta{seq~var_3} |\l__|\meta{pkg}|_internal_seq|
% \end{quote}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index bf174f74dd2..23d32a1b871 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -491,7 +491,7 @@
% \end{syntax}
% Evaluates the \meta{dim expr}, and leaves the result,
% expressed in points (\texttt{pt}) in the input stream, with \emph{no
-% units}. The result is rounded by \TeX{} to four or five decimal
+% units}. The result is rounded by \TeX{} to at most five decimal
% places. If the decimal part of the result is zero, it is omitted,
% together with the decimal marker.
%
@@ -510,7 +510,7 @@
% \end{syntax}
% Evaluates the \meta{dim expr}, and leaves the result,
% expressed in big points (\texttt{bp}) in the input stream, with \emph{no
-% units}. The result is rounded by \TeX{} to four or five decimal
+% units}. The result is rounded by \TeX{} to at most five decimal
% places. If the decimal part of the result is zero, it is omitted,
% together with the decimal marker.
%
@@ -521,11 +521,14 @@
% leaves |0.99628| in the input stream, \emph{i.e.}~the magnitude of
% one (\TeX{}) point when converted to big points.
% \begin{texnote}
-% The implementation of this functions is re-entrant: the result of
+% The implementation of this function is re-entrant: the result of
% \begin{verbatim}
-% \dim_to_decimal_in_bp:n { <n>bp }
+% \dim_compare:nNnTF
+% { <x>bp } =
+% { \dim_to_decimal_in_bp:n { <x>bp } bp }
% \end{verbatim}
-% will be the value \meta{n}.
+% will be logically \texttt{true}. The decimal representations may
+% differ provided they produce the same \TeX{} dimension.
% \end{texnote}
% \end{function}
%
@@ -550,28 +553,33 @@
% The maximum \TeX{} allowable dimension value (available as
% \tn{maxdimen} in plain \TeX{} and \LaTeX{} and \cs{c_max_dim} in
% \pkg{expl3}) can only be expressed exactly in the units
-% \texttt{pt}, \texttt{bp} and \texttt{sp}. Expressed in different units,
-% the maximum allowable input value to five decimal places is\\
+% \texttt{pt}, \texttt{bp} and \texttt{sp}. The maximum allowable
+% input values to five decimal places are\\
% \begin{center}
% \begin{tabular}{@{}>{$}r<{$}@{\,}l@{}}
% 1276.00215 & cc \\
% 575.83174 & cm \\
-% 226.70540 & in \\
% 15312.02584 & dd \\
+% 226.70540 & in \\
% 5758.31742 & mm \\
% 1365.33333 & pc \\
% \end{tabular}
% \end{center}
+% (Note that these are not all equal, but rather any larger value will overflow
+% due to the way \TeX{} converts to \texttt{sp}.)
% Values given to five decimal places larger that these will result in \TeX{}
% errors; the behavior if additional decimal places are given depends on the
% \TeX{} internals and thus larger values are \emph{not} supported by
% \pkg{expl3}.
% \begin{texnote}
-% The implementation of this functions is re-entrant: the result of
+% The implementation of these functions is re-entrant: the result of
% \begin{verbatim}
-% \dim_to_decimal_in_<unit>:n { <n><unit> }
+% \dim_compare:nNnTF
+% { <x><unit> } =
+% { \dim_to_decimal_in_<unit>:n { <x><unit> } <unit> }
% \end{verbatim}
-% will be the value \meta{n}.
+% will be logically \texttt{true}. The decimal representations may
+% differ provided they produce the same \TeX{} dimension.
% \end{texnote}
% \end{function}
%
@@ -584,7 +592,7 @@
% units}. The result is necessarily an integer.
% \end{function}
%
-% \begin{function}[added = 2014-07-15, EXP]
+% \begin{function}[added = 2014-07-15, updated = 2023-05-20, EXP]
% {\dim_to_decimal_in_unit:nn}
% \begin{syntax}
% \cs{dim_to_decimal_in_unit:nn} \Arg{dim expr_1} \Arg{dim expr_2}
@@ -603,11 +611,11 @@
% leaves |0.35278| in the input stream, \emph{i.e.}~the magnitude of
% one big point when expressed in millimetres. The conversions do
% \emph{not} guarantee that \TeX{} would yield identical results
-% for the direct input in an equality test, hence
+% for the direct input in an equality test, thus for instance
% \begin{verbatim}
% \dim_compare:nNnTF
-% { \dim_to_decimal_in_unit:nn { 1bp } { 1mm } mm }
-% { 1bp }
+% { 1bp } =
+% { \dim_to_decimal_in_unit:nn { 1bp } { 1mm } mm }
% \end{verbatim}
% will take the \texttt{false} branch.
% \end{function}
@@ -1754,7 +1762,7 @@
% The code to do this is contributed by Ruixi Zhang.
%
% \begin{macro}[EXP]{\dim_to_decimal_in_sp:n}
-% The one eeasy case: the only requirement here is that we avoid an
+% The one easy case: the only requirement here is that we avoid an
% overflow.
% \begin{macrocode}
\cs_new:Npn \dim_to_decimal_in_sp:n #1
@@ -1798,7 +1806,7 @@
% (1)~$\hbox{midpoint}+\frac{1}{2}>N$ and
% (2)~$\hbox{midpoint}+\frac{1}{2}<N+1$. In other words,
% $N=\lfloor\hbox{midpoint}+\frac{1}{2}\rfloor$. As long as we can
-% rewrite the midpoint as the result of a ``scaling operation'' of \eTeX,
+% rewrite the midpoint as the result of a \enquote{scaling operation} of \eTeX,
% the $\lfloor\ldots+\frac{1}{2}\rfloor$ part will follow naturally.
% Indeed we can: $\hbox{midpoint}=(2X+1)\times(\frac{1}{2}\delta^{-1})$.
%
@@ -1825,7 +1833,9 @@
% Conversions to other units are now coded.
% Consult the pdf\/\TeX{} source for each conversion factor~$\delta$.
% Each factor $\frac{1}{2}\delta^{-1}$ is hand-coded
-% for accuracy (and speed).
+% for accuracy (and speed). As the units \texttt{nc} and \texttt{nd}
+% are not supported by \XeTeX{} or (u)p\TeX{}, they are not included
+% here.
% \begin{macrocode}
\@@_tmp:w { in } { 50 / 7227 } % delta = 7227/100
\@@_tmp:w { pc } { 1 / 24 } % delta = 12/1
@@ -1887,7 +1897,7 @@
% |<number2>;{<dimexpr1>}|, where |<number2>| represents |<dimexpr2>| in
% |sp| unit.
% If |#1| is~|0|$_{12}$, the \enquote{unit} |<dimexpr2>| must also be zero.
-% So we throw out a ``division by zero'' error message at this point.
+% So we throw out a \enquote{division by zero} error message at this point.
% Otherwise, if |#1| is~|-|$_{12}$, we shall negate both |<dimexpr1>| and
% |<dimexpr2>| for later procedures.
% \begin{macrocode}
@@ -1950,8 +1960,8 @@
% output $q+R'/65536$ in decimal.
%
% Note: $q=\lfloor X/n\rfloor=\lfloor\frac{2X-n}{2n}+\frac{1}{2}\rfloor$
-% represents the ``integer'' part, while $0\le R'\le65536$ represents the
-% ``fractional'' part. (Can $R'=65536$ really happen? Didn't investigate.)
+% represents the \enquote{integer} part, while $0\le R'\le65536$ represents the
+% \enquote{fractional} part. (Can $R'=65536$ really happen? Didn't investigate.)
% \begin{macrocode}
\cs_new:Npn \@@_branch_unit:w #1;#2;
{
@@ -1991,12 +2001,12 @@
\token_if_eq_charcode:NNTF #1 -
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_get_remainder:w
- \int_eval:w ( 2 * #2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } ;
#2 ; #3 ; - ;
}
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_get_remainder:w
- \int_eval:w ( 2 * #1#2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } ;
#1#2 ; #3 ; ;
}
}
@@ -2012,7 +2022,7 @@
\cs_new:Npn \@@_get_remainder:w #1;#2;#3;
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_convert_remainder:w
- \int_eval:w #2 - #1 * #3 ;
+ \int_eval:n { #2 - #1 * #3 } ;
#3 ; #1 ;
}
% \end{macrocode}
@@ -2025,7 +2035,7 @@
\cs_new:Npn \@@_convert_remainder:w #1;#2;
{
\exp_after:wN \exp_after:wN \exp_after:wN \@@_test_candidate:w
- \int_eval:w #1 * 65536 / #2 ;
+ \int_eval:n { #1 * 65536 / #2 } ;
#1 ; #2 ;
}
% \end{macrocode}
@@ -2046,8 +2056,7 @@
{ \dim_to_decimal:n { #1sp } \@@_eval:w #3sp \@@_eval_end: }
{ \@@_parse_decimal:w #1 ; }
{
- \exp_after:wN \@@_parse_decimal:w
- \int_eval:w #1 + 1 ;
+ \@@_parse_decimal:w \int_eval:n { #1 + 1 } ;
}
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index e73b6b39abb..bab6a36448e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
index 2f2c4f36c7f..ed4e866d736 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 3322a2289d0..473e55f6d04 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 2180d4085b4..6b7aab34889 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
index 37172a6eb03..a69a695f493 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
index 223b7785179..a2f9e5fae77 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
index a851e247a21..d3e8e099fb5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
index fcd1331b7db..bcdfa869f27 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 8ae8a5d41eb..7519981f52e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 1e113ee3b4c..67154547b7f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -161,12 +161,12 @@
%
% \begin{function}
% {
-% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Nf, \tl_set:Nx,
-% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:cf, \tl_set:cx,
+% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, \tl_set:Nx,
+% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, \tl_set:cx,
% \tl_gset:Nn, \tl_gset:NV, \tl_gset:Nv,
-% \tl_gset:No, \tl_gset:Nf, \tl_gset:Nx,
+% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, \tl_gset:Nx,
% \tl_gset:cn, \tl_gset:cV, \tl_gset:cv,
-% \tl_gset:co, \tl_gset:cf, \tl_gset:cx
+% \tl_gset:co, \tl_gset:ce, \tl_gset:cf, \tl_gset:cx
% }
% \begin{syntax}
% \cs{tl_set:Nn} \meta{tl~var} \Arg{tokens}
@@ -350,30 +350,6 @@
% Token groups (|{|\ldots|}|) are not single tokens.
% \end{function}
%
-% \begin{function}[added = 2013-07-24, EXP, noTF]{\tl_case:Nn, \tl_case:cn}
-% \begin{syntax}
-% \cs{tl_case:NnTF} \meta{test token list variable} \\
-% ~~"{" \\
-% ~~~~\meta{token list variable case_1} \Arg{code case_1} \\
-% ~~~~\meta{token list variable case_2} \Arg{code case_2} \\
-% ~~~~\ldots \\
-% ~~~~\meta{token list variable case_n} \Arg{code case_n} \\
-% ~~"}" \\
-% ~~\Arg{true code}
-% ~~\Arg{false code}
-% \end{syntax}
-% This function compares the \meta{test token list variable} in turn
-% with each of the \meta{token list variable cases}. If the two
-% are equal (as described for \cs{tl_if_eq:NNTF})
-% then the associated \meta{code} is left in the input
-% stream and other cases are discarded. If any of the
-% cases are matched, the \meta{true code} is also inserted into the
-% input stream (after the code for the appropriate case), while if none
-% match then the \meta{false code} is inserted. The function
-% \cs{tl_case:Nn}, which does nothing if there is no match, is also
-% available.
-% \end{function}
-%
% \subsection{Testing the first token}
%
% \begin{function}[updated = 2012-07-09, EXP, pTF]
@@ -462,7 +438,7 @@
%
% \subsection{Using token lists}
%
-% \begin{function}[EXP]{\tl_to_str:n, \tl_to_str:V, \tl_to_str:v}
+% \begin{function}[EXP]{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v}
% \begin{syntax}
% \cs{tl_to_str:n} \Arg{token list}
% \end{syntax}
@@ -670,7 +646,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2015-08-07]{\tl_show:n}
+% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:x}
% \begin{syntax}
% \cs{tl_show:n} \Arg{token list}
% \end{syntax}
@@ -689,7 +665,7 @@
% \cs{tl_show:N} which displays the result in the terminal.
% \end{function}
%
-% \begin{function}[added = 2014-08-22, updated = 2015-08-07]{\tl_log:n}
+% \begin{function}[added = 2014-08-22, updated = 2015-08-07]{\tl_log:n, \tl_log:x}
% \begin{syntax}
% \cs{tl_log:n} \Arg{token list}
% \end{syntax}
@@ -1097,8 +1073,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_replace_once:Nnn, \tl_replace_once:cnn,
-% \tl_greplace_once:Nnn, \tl_greplace_once:cnn
+% \tl_replace_once:Nnn, \tl_replace_once:Nxx,
+% \tl_replace_once:cnn, \tl_replace_once:cxx,
+% \tl_greplace_once:Nnn, \tl_greplace_once:Nxx
+% \tl_greplace_once:cnn, \tl_greplace_once:cxx
% }
% \begin{syntax}
% \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1112,8 +1090,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_replace_all:Nnn, \tl_replace_all:cnn,
-% \tl_greplace_all:Nnn, \tl_greplace_all:cnn
+% \tl_replace_all:Nnn, \tl_replace_all:Nxx,
+% \tl_replace_all:cnn, \tl_replace_all:cxx
+% \tl_greplace_all:Nnn, \tl_greplace_all:Nxx,
+% \tl_greplace_all:cnn, \tl_greplace_all:cxx
% }
% \begin{syntax}
% \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1131,8 +1111,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_remove_once:Nn, \tl_remove_once:cn,
-% \tl_gremove_once:Nn, \tl_gremove_once:cn
+% \tl_remove_once:Nn, \tl_remove_once:Nx,
+% \tl_remove_once:cn, \tl_remove_once:cx,
+% \tl_gremove_once:Nn, \tl_gremove_once:Nx
+% \tl_gremove_once:cn, \tl_gremove_once:cx
% }
% \begin{syntax}
% \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens}
@@ -1145,8 +1127,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_remove_all:Nn, \tl_remove_all:cn,
-% \tl_gremove_all:Nn, \tl_gremove_all:cn
+% \tl_remove_all:Nn, \tl_remove_all:Nx,
+% \tl_remove_all:cn, \tl_remove_all:cx,
+% \tl_gremove_all:Nn, \tl_gremove_all:Nx
+% \tl_gremove_all:cn, \tl_gremove_all:cx
% }
% \begin{syntax}
% \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens}
@@ -1211,7 +1195,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2015-08-11]{\tl_rescan:nn}
+% \begin{function}[updated = 2015-08-11]{\tl_rescan:nn, \tl_rescan:nV}
% \begin{syntax}
% \cs{tl_rescan:nn} \Arg{setup} \Arg{tokens}
% \end{syntax}
@@ -1463,15 +1447,15 @@
%
% \begin{macro}
% {
-% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Nf, \tl_set:Nx,
-% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:cf, \tl_set:cx
+% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, \tl_set:Nx,
+% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, \tl_set:cx
% }
% \begin{macro}
% {
% \tl_gset:Nn, \tl_gset:NV, \tl_gset:Nv,
-% \tl_gset:No, \tl_gset:Nf, \tl_gset:Nx,
+% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, \tl_gset:Nx,
% \tl_gset:cn, \tl_gset:cV, \tl_gset:cv,
-% \tl_gset:co, \tl_gset:cf, \tl_gset:cx
+% \tl_gset:co, \tl_gset:ce, \tl_gset:cf, \tl_gset:cx
% }
% By using \cs{exp_not:n} token list variables can contain |#| tokens,
% which makes the token list registers provided by \TeX{}
@@ -1490,12 +1474,12 @@
{ \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_gset:Nx #1#2
{ \__kernel_tl_gset:Nx #1 {#2} }
-\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_set:Nx { c }
\cs_generate_variant:Nn \tl_set:No { c }
-\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_gset:Nx { c }
\cs_generate_variant:Nn \tl_gset:No { c }
% \end{macrocode}
@@ -1677,7 +1661,7 @@
% \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
% \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
% }
-% \begin{macro}{\tl_rescan:nn}
+% \begin{macro}{\tl_rescan:nn, \tl_rescan:nV}
% \begin{macro}{\@@_rescan_aux:}
% \begin{macro}{\@@_set_rescan:NNnn, \@@_set_rescan_multi:nNN}
% \begin{macro}[EXP]{\@@_rescan:NNw}
@@ -1740,6 +1724,7 @@
\exp_after:wN \@@_rescan_aux:
\l_@@_internal_a_tl
}
+\cs_generate_variant:Nn \tl_rescan:nn { nV }
\exp_args:NNo \cs_new_protected:Npn \@@_rescan_aux:
{ \tl_clear:N \l_@@_internal_a_tl }
\cs_new_protected:Npn \tl_set_rescan:Nnn
@@ -1917,10 +1902,10 @@
{ \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx }
\cs_new_protected:Npn \tl_greplace_all:Nnn
{ \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_replace_all:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn { c }
+\cs_generate_variant:Nn \tl_replace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nxx , c , cxx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2113,8 +2098,8 @@
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
{ \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { c }
+\cs_generate_variant:Nn \tl_remove_once:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2127,8 +2112,8 @@
{ \tl_replace_all:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_all:Nn #1#2
{ \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { c }
+\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2234,14 +2219,7 @@
% Returns \cs{c_true_bool} if and only if the two token list variables are
% equal.
% \begin{macrocode}
-\prg_new_conditional:Npnn \tl_if_eq:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
+\prg_new_eq_conditional:NNn \tl_if_eq:NN \cs_if_eq:NN { p , T , F , TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:NN
{ Nc , c , cc } { p , TF , T , F }
% \end{macrocode}
@@ -2437,69 +2415,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP, noTF]{\tl_case:Nn, \tl_case:cn}
-% \begin{macro}[EXP]{\@@_case:nnTF}
-% \begin{macro}[EXP]{\@@_case:Nw}
-% \begin{macro}[EXP]{\@@_case_end:nw}
-% The aim here is to allow the case statement to be evaluated
-% using a known number of expansion steps (two), and without
-% needing to use an explicit \enquote{end of recursion} marker.
-% That is achieved by using the test input as the final case,
-% as this is always true. The trick is then to tidy up
-% the output such that the appropriate case code plus either
-% the \texttt{true} or \texttt{false} branch code is inserted.
-% \begin{macrocode}
-\cs_new:Npn \tl_case:Nn #1#2
- {
- \exp:w
- \@@_case:NnTF #1 {#2} { } { }
- }
-\cs_new:Npn \tl_case:NnT #1#2#3
- {
- \exp:w
- \@@_case:NnTF #1 {#2} {#3} { }
- }
-\cs_new:Npn \tl_case:NnF #1#2#3
- {
- \exp:w
- \@@_case:NnTF #1 {#2} { } {#3}
- }
-\cs_new:Npn \tl_case:NnTF #1#2
- {
- \exp:w
- \@@_case:NnTF #1 {#2}
- }
-\cs_new:Npn \@@_case:NnTF #1#2#3#4
- { \@@_case:Nw #1 #2 #1 { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop }
-\cs_new:Npn \@@_case:Nw #1#2#3
- {
- \tl_if_eq:NNTF #1 #2
- { \@@_case_end:nw {#3} }
- { \@@_case:Nw #1 }
- }
-\cs_generate_variant:Nn \tl_case:Nn { c }
-\prg_generate_conditional_variant:Nnn \tl_case:Nn
- { c } { T , F , TF }
-% \end{macrocode}
-% To tidy up the recursion, there are two outcomes. If there was a hit to
-% one of the cases searched for, then |#1| is the code to insert,
-% |#2| is the \emph{next} case to check on and |#3| is all of
-% the rest of the cases code. That means that |#4| is the \texttt{true}
-% branch code, and |#5| tidies up the spare \cs{s_@@_mark} and the
-% \texttt{false} branch. On the other hand, if none of the cases matched
-% then we arrive here using the \enquote{termination} case of comparing
-% the search with itself. That means that |#1| is empty, |#2| is
-% the first \cs{s_@@_mark} and so |#4| is the \texttt{false} code (the
-% \texttt{true} code is mopped up by |#3|).
-% \begin{macrocode}
-\cs_new:Npn \@@_case_end:nw #1#2#3 \s_@@_mark #4#5 \s_@@_stop
- { \exp_end: #1 #4 }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
% \subsection{Mapping over token lists}
%
% \begin{macro}
@@ -2642,10 +2557,10 @@
%
% \subsection{Using token lists}
%
-% \begin{macro}{\tl_to_str:n, \tl_to_str:V, \tl_to_str:v}
+% \begin{macro}{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v}
% Another name for a primitive: defined in \pkg{l3basics}.
% \begin{macrocode}
-\cs_generate_variant:Nn \tl_to_str:n { V , v }
+\cs_generate_variant:Nn \tl_to_str:n { o , V , v }
% \end{macrocode}
% \end{macro}
%
@@ -3578,7 +3493,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tl_show:n, \@@_show:n}
+% \begin{macro}{\tl_show:n, \tl_show:x, \@@_show:n}
% \begin{macro}[EXP]{\@@_show:w}
% Many |show| functions are based on \cs{tl_show:n}.
% The argument of \cs{tl_show:n} is line-wrapped using
@@ -3598,6 +3513,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \tl_show:n #1
{ \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \@@_show:n }
+\cs_generate_variant:Nn \tl_show:n { x }
\cs_new_protected:Npn \@@_show:n #1
{
\tl_set:Nf \l_@@_internal_a_tl { \@@_show:w #1 \s_@@_stop }
@@ -3615,12 +3531,13 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\tl_log:n}
+% \begin{macro}{\tl_log:n, \tl_log:x}
% Logging is much easier, simply line-wrap. The |>~| and trailing
% period is there to match the output of \cs{tl_show:n}.
% \begin{macrocode}
\cs_new_protected:Npn \tl_log:n #1
{ \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
+\cs_generate_variant:Nn \tl_log:n { x }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index d8eeca44abb..818018d10ef 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
@@ -2071,11 +2071,8 @@
% \begin{macro}[pTF]{\token_if_eq_meaning:NN}
% Check if the tokens |#1| and |#2| have same meaning.
% \begin{macrocode}
-\prg_new_conditional:Npnn \token_if_eq_meaning:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true: \else: \prg_return_false: \fi:
- }
+\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
+ { p , T , F , TF }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index f667a37efd2..48b121f20a1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-22}
+% \date{Released 2023-06-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index f1de71696e7..cc7f3c32b25 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -71,7 +71,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -1586,13 +1586,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
\cs_set_protected:Npn \debug_on:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_on:n {#1} } }
+ \sys_load_debug:
+ \debug_on:n {#1}
}
\cs_set_protected:Npn \debug_off:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_off:n {#1} } }
+ \sys_load_debug:
+ \debug_off:n {#1}
}
\cs_set_protected:Npn \debug_suspend: { }
\cs_set_protected:Npn \debug_resume: { }
@@ -1755,6 +1755,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_set:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
\cs_set_protected:Npn \prg_set_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_set_eq:cc }
+\cs_set_protected:Npn \prg_gset_eq_conditional:NNn
+ { \__prg_set_eq_conditional:NNNn \cs_gset_eq:cc }
\cs_set_protected:Npn \prg_new_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_new_eq:cc }
\cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4
@@ -3003,6 +3005,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__cs_tmp:w { ccx }
\__cs_tmp:w { cnx }
\__cs_tmp:w { oox }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNno }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
%% File: l3quark.dtx
\cs_new_protected:Npn \quark_new:N #1
{
@@ -3376,12 +3380,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_gset:Nx #1#2
{ \__kernel_tl_gset:Nx #1 {#2} }
-\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_set:Nx { c }
\cs_generate_variant:Nn \tl_set:No { c }
-\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_gset:Nx { c }
\cs_generate_variant:Nn \tl_gset:No { c }
\cs_new_protected:Npn \tl_put_left:Nn #1#2
@@ -3488,6 +3492,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__tl_rescan_aux:
\l__tl_internal_a_tl
}
+\cs_generate_variant:Nn \tl_rescan:nn { nV }
\exp_args:NNo \cs_new_protected:Npn \__tl_rescan_aux:
{ \tl_clear:N \l__tl_internal_a_tl }
\cs_new_protected:Npn \tl_set_rescan:Nnn
@@ -3588,10 +3593,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_set:Nx }
\cs_new_protected:Npn \tl_greplace_all:Nnn
{ \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_replace_all:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn { c }
+\cs_generate_variant:Nn \tl_replace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nxx , c , cxx }
\cs_new_protected:Npn \__tl_replace:NnNNNnn #1#2#3#4#5#6#7
{
\tl_if_empty:nTF {#6}
@@ -3652,14 +3657,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
{ \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { c }
+\cs_generate_variant:Nn \tl_remove_once:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx }
\cs_new_protected:Npn \tl_remove_all:Nn #1#2
{ \tl_replace_all:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_all:Nn #1#2
{ \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { c }
+\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx }
\prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF }
{
\if_meaning:w #1 \c_empty_tl
@@ -3704,14 +3709,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prg_generate_conditional_variant:Nnn \tl_if_blank:n
{ e , V , o } { p , T , F , TF }
-\prg_new_conditional:Npnn \tl_if_eq:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
+\prg_new_eq_conditional:NNn \tl_if_eq:NN \cs_if_eq:NN { p , T , F , TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:NN
{ Nc , c , cc } { p , TF , T , F }
\tl_new:N \l__tl_internal_a_tl
@@ -3801,39 +3799,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
-\cs_new:Npn \tl_case:Nn #1#2
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} { } { }
- }
-\cs_new:Npn \tl_case:NnT #1#2#3
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} {#3} { }
- }
-\cs_new:Npn \tl_case:NnF #1#2#3
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} { } {#3}
- }
-\cs_new:Npn \tl_case:NnTF #1#2
- {
- \exp:w
- \__tl_case:NnTF #1 {#2}
- }
-\cs_new:Npn \__tl_case:NnTF #1#2#3#4
- { \__tl_case:Nw #1 #2 #1 { } \s__tl_mark {#3} \s__tl_mark {#4} \s__tl_stop }
-\cs_new:Npn \__tl_case:Nw #1#2#3
- {
- \tl_if_eq:NNTF #1 #2
- { \__tl_case_end:nw {#3} }
- { \__tl_case:Nw #1 }
- }
-\cs_generate_variant:Nn \tl_case:Nn { c }
-\prg_generate_conditional_variant:Nnn \tl_case:Nn
- { c } { T , F , TF }
-\cs_new:Npn \__tl_case_end:nw #1#2#3 \s__tl_mark #4#5 \s__tl_stop
- { \exp_end: #1 #4 }
\cs_new:Npn \tl_map_function:nN #1#2
{
\__tl_map_function:Nnnnnnnnn #2 #1
@@ -3909,7 +3874,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \prg_map_break:Nn \tl_map_break: { } }
\cs_new:Npn \tl_map_break:n
{ \prg_map_break:Nn \tl_map_break: }
-\cs_generate_variant:Nn \tl_to_str:n { V , v }
+\cs_generate_variant:Nn \tl_to_str:n { o , V , v }
\cs_new:Npn \tl_to_str:N #1 { \__kernel_tl_to_str:w \exp_after:wN {#1} }
\cs_generate_variant:Nn \tl_to_str:N { c }
\cs_new:Npn \tl_use:N #1
@@ -4402,6 +4367,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \tl_show:n #1
{ \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \__tl_show:n }
+\cs_generate_variant:Nn \tl_show:n { x }
\cs_new_protected:Npn \__tl_show:n #1
{
\tl_set:Nf \l__tl_internal_a_tl { \__tl_show:w #1 \s__tl_stop }
@@ -4417,6 +4383,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__tl_show:w #1 > #2 . \s__tl_stop {#2}
\cs_new_protected:Npn \tl_log:n #1
{ \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
+\cs_generate_variant:Nn \tl_log:n { x }
\cs_new_protected:Npn \__kernel_chk_tl_type:NnnT #1#2#3#4
{
\__kernel_chk_defined:NT #1
@@ -7803,10 +7770,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \l__clist_internal_clist {#4}
#1 #3 \l__clist_internal_clist #3
}
-\cs_generate_variant:Nn \clist_put_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \clist_put_right:Nn
{ \__clist_put_right:NNNn \clist_concat:NNN \clist_set:Nn }
\cs_new_protected:Npn \clist_gput_right:Nn
@@ -7816,10 +7783,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \l__clist_internal_clist {#4}
#1 #3 #3 \l__clist_internal_clist
}
-\cs_generate_variant:Nn \clist_put_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \clist_get:NN #1#2
{
\if_meaning:w #1 \c_empty_clist
@@ -8777,11 +8744,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_catcode:w \exp_not:N #1 \c_catcode_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
-\prg_new_conditional:Npnn \token_if_eq_meaning:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true: \else: \prg_return_false: \fi:
- }
+\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
+ { p , T , F , TF }
\prg_new_conditional:Npnn \token_if_eq_catcode:NN #1#2 { p , T , F , TF }
{
\if_catcode:w \exp_not:N #1 \exp_not:N #2
@@ -9433,13 +9397,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_put:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_new_protected:Npn \prop_put_if_new:Nnn
{ \__prop_put_if_new:NNnn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \prop_gput_if_new:Nnn
@@ -10405,15 +10369,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
should~be~a~clist~variable,~but~it~includes~empty~or~blank~items~
without~braces.
}
-\msg_new:nnnn { debug } { enable-debug }
- { To~use~'#1'~set~the~'enable-debug'~option. }
- {
- The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
- some~internal~functions~in~expl3~have~been~appropriately~
- defined.~This~only~happens~if~one~of~the~options~
- 'enable-debug',~'check-declarations'~or~'log-functions'~was~
- given~as~an~option:~see~the~main~expl3~documentation.
- }
\msg_new:nnn { kernel } { bad-exp-end-f }
{ Misused~\exp_end_continue_f:w or~:nw }
\msg_new:nnn { kernel } { bad-variable }
@@ -10601,7 +10556,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\sys_if_shell:TF
{ \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
- { \msg_error:nn { ior } { pipe-failed } }
+ { \msg_error:nn { kernel } { pipe-failed } }
}
\cs_new_protected:Npn \__ior_shell_open:nN #1#2
{
@@ -10612,7 +10567,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \__kernel_ior_open:Nn #2 { |#1 } }
}
-\msg_new:nnnn { ior } { pipe-failed }
+\msg_new:nnnn { kernel } { pipe-failed }
{ Cannot~run~piped~system~commands. }
{
LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
@@ -10840,6 +10795,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__kernel_file_name_quote:n {#2} \scan_stop:
}
\cs_generate_variant:Nn \__iow_open_stream:Nn { NV }
+\cs_new_protected:Npn \iow_shell_open:Nn #1#2
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \__iow_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \msg_error:nn { kernel } { pipe-failed } }
+ }
+\cs_new_protected:Npn \__iow_shell_open:nN #1#2
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ }
+ { \__kernel_iow_open:Nn #2 { |#1 } }
+ }
\cs_new_protected:Npn \iow_close:N #1
{
\int_compare:nT { \c_log_iow < #1 < \c_term_iow }
@@ -11435,18 +11405,35 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_if_blank:nTF {#2}
{
\seq_map_tokens:Nn \l_file_search_path_seq
- { \__file_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
+ { \__file_full_name_aux:Nnn \seq_map_break:n {#1} }
\cs_if_exist:NT \input@path
{
\tl_map_tokens:Nn \input@path
- { \__file_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
+ { \__file_full_name_aux:Nnn \tl_map_break:n {#1} }
}
\__file_name_end:
}
{ \__file_ext_check:nn {#1} {#2} }
}
-\cs_new:Npn \__file_full_name_aux:Nnnn #1#2#3#4
- { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
+\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
+ {
+ \exp_args:Ne \__file_full_name_aux:nN
+ {
+ \exp_args:Ne \__file_full_name_slash:n
+ { \tl_to_str:n {#3} } #2
+ }
+ #1
+ }
+\cs_new:Npn \__file_full_name_slash:n #1
+ {
+ \__file_full_name_slash:nw {#1} #1 \q_nil / \q_nil / \q_nil \q_stop
+ }
+\cs_new:Npn \__file_full_name_slash:nw #1#2 / \q_nil / #3 \q_stop
+ {
+ \quark_if_nil:nTF {#3}
+ { #1 / }
+ { #2 / }
+ }
\cs_new:Npn \__file_full_name_aux:nN #1
{ \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_full_name_aux:n {#1} } }
\cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
@@ -11746,6 +11733,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\str_gset:Nn \g_file_curr_name_str {#2}
\str_gset:Nn \g_file_curr_ext_str {#3}
}
+\cs_new:Npn \file_input_raw:n #1
+ { \exp_args:Ne \__file_input_raw:nn { \file_full_name:n {#1} } {#1} }
+\cs_new:Npx \__file_input_raw:nn #1#2
+ {
+ \exp_not:N \tl_if_blank:nTF {#1}
+ {
+ \exp_not:N \exp_args:Nnne \exp_not:N \msg_expandable_error:nnn
+ { kernel } { file-not-found }
+ { \exp_not:N \__kernel_file_name_sanitize:n {#2} }
+ }
+ {
+ \exp_not:N \tex_input:D
+ \sys_if_engine_luatex:TF
+ { {#1} }
+ { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: }
+ }
+ }
+\exp_args_generate:n { nne }
\cs_new:Npn \file_parse_full_name:n #1
{
\file_parse_full_name_apply:nN {#1}
@@ -12384,12 +12389,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\token_if_eq_charcode:NNTF #1 -
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:w ( 2 * #2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } ;
#2 ; #3 ; - ;
}
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:w ( 2 * #1#2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } ;
#1#2 ; #3 ; ;
}
}
@@ -12397,13 +12402,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__dim_get_remainder:w #1;#2;#3;
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_convert_remainder:w
- \int_eval:w #2 - #1 * #3 ;
+ \int_eval:n { #2 - #1 * #3 } ;
#3 ; #1 ;
}
\cs_new:Npn \__dim_convert_remainder:w #1;#2;
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_test_candidate:w
- \int_eval:w #1 * 65536 / #2 ;
+ \int_eval:n { #1 * 65536 / #2 } ;
#1 ; #2 ;
}
\cs_new:Npn \__dim_test_candidate:w #1;#2;#3;
@@ -12412,8 +12417,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \dim_to_decimal:n { #1sp } \__dim_eval:w #3sp \__dim_eval_end: }
{ \__dim_parse_decimal:w #1 ; }
{
- \exp_after:wN \__dim_parse_decimal:w
- \int_eval:w #1 + 1 ;
+ \__dim_parse_decimal:w \int_eval:n { #1 + 1 } ;
}
}
\cs_new:Npn \__dim_parse_decimal:w #1;#2;#3;
@@ -13081,7 +13085,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\l_keys_path_str \s__keys_stop
\l_keys_key_tl \l_keys_key_str
\tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
- \__keys_execute:nn \l_keys_path_str {#1}
+ \tl_set:Nn \l_keys_value_tl {#1}
+ \__keys_execute:no \l_keys_path_str \l_keys_value_tl
}
}
}
@@ -13456,7 +13461,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_not:o \l__keys_relative_tl }
}
}
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
\cs_new_protected:Npn \__keys_set:nn #1#2
{ \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
\cs_new_protected:Npn \__keys_set:nnn #1#2#3
@@ -20690,6 +20695,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_generate_variant:Nn \cctab_gset:Nn { c }
+\cs_new_protected:Npn \cctab_gsave_current:N #1
+ {
+ \__cctab_chk_if_valid:NT #1
+ { \__cctab_gset:n {#1} }
+ }
+\cs_generate_variant:Nn \cctab_gsave_current:N { c }
\sys_if_engine_luatex:T
{
\__cctab_new:N \g__cctab_internal_cctab
@@ -20949,6 +20960,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\char_set_catcode_active:n { 126 }
}
}
+\cctab_new:N \g_tmpa_cctab
+\cctab_new:N \g_tmpb_cctab
\msg_new:nnnn { cctab } { stack-full }
{ The~category~code~table~stack~is~exhausted. }
{
@@ -35642,6 +35655,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:nn }
\cs_gset:Npn \tl_mixed_case:nn #1#2
{ \text_titlecase:nn {#1} {#2} }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
+\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
+\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF }
+\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF }
+\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
+\cs_generate_variant:Nn \tl_case:Nn { c }
+\prg_generate_conditional_variant:Nnn \tl_case:Nn
+ { c } { T , F , TF }
\__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 }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index e70248e7ee6..80c60e571c3 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 6db890f6e90..8b7ed14e8f7 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
@@ -90,19 +90,28 @@
backend .choices:nn =
{ dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
{ \sys_load_backend:n {#1} } ,
- check-declarations .code:n =
+ check-declarations .choice: ,
+ check-declarations / true .code:n =
+ { \debug_on:n { check-declarations } } ,
+ check-declarations / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { check-declarations }
+ \__kernel_if_debug:TF
+ { \debug_off:n { check-declarations } }
+ { }
} ,
+ check-declarations .default:n = true ,
driver .meta:n = { backend = #1 } ,
- enable-debug .code:n =
- \sys_load_debug: ,
- log-functions .code:n =
+ enable-debug .code:n = {} , % A stub
+ log-functions .choice: ,
+ log-functions / true .code:n =
+ { \debug_on:n { log-functions } } ,
+ log-functions / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { log-functions }
+ \__kernel_if_debug:TF
+ { \debug_off:n { log-functions } }
+ { }
} ,
+ log-functions .default:n = true ,
suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index d89673f8b43..41c154b892d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
@@ -107,19 +107,28 @@
backend .choices:nn =
{ dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
{ \sys_load_backend:n {#1} } ,
- check-declarations .code:n =
+ check-declarations .choice: ,
+ check-declarations / true .code:n =
+ { \debug_on:n { check-declarations } } ,
+ check-declarations / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { check-declarations }
+ \__kernel_if_debug:TF
+ { \debug_off:n { check-declarations } }
+ { }
} ,
+ check-declarations .default:n = true ,
driver .meta:n = { backend = #1 } ,
- enable-debug .code:n =
- \sys_load_debug: ,
- log-functions .code:n =
+ enable-debug .code:n = {} , % A stub
+ log-functions .choice: ,
+ log-functions / true .code:n =
+ { \debug_on:n { log-functions } } ,
+ log-functions / false .code:n =
{
- \sys_load_debug:
- \debug_on:n { log-functions }
+ \__kernel_if_debug:TF
+ { \debug_off:n { log-functions } }
+ { }
} ,
+ log-functions .default:n = true ,
suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index 6fa637596d2..f35d1f13003 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -1607,7 +1607,7 @@
\seq_set_map:NNn \l__codedoc_tmpa_seq
\g__codedoc_nested_names_seq
{ \__codedoc_macro_end_wrap_item:n {##1} }
- End~ definition~ for~
+ End~ of~ definition~ for~
\int_compare:nTF { \seq_count:N \l__codedoc_tmpa_seq <= 3 }
{
\seq_use:Nnnn \l__codedoc_tmpa_seq