From 4efc770b4440003e74a4c1c868ad55c64a32ef05 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 6 Jun 2023 20:06:24 +0000 Subject: l3kernel (6jun23) git-svn-id: svn://tug.org/texlive/trunk@67294 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md | 22 +- Master/texmf-dist/doc/latex/l3kernel/README.md | 2 +- Master/texmf-dist/doc/latex/l3kernel/expl3.pdf | Bin 623197 -> 623094 bytes .../texmf-dist/doc/latex/l3kernel/interface3.pdf | Bin 1717276 -> 1722452 bytes .../texmf-dist/doc/latex/l3kernel/interface3.tex | 2 +- Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf | Bin 558160 -> 558448 bytes .../texmf-dist/doc/latex/l3kernel/l3docstrip.pdf | Bin 151946 -> 152256 bytes Master/texmf-dist/doc/latex/l3kernel/l3news.pdf | Bin 395876 -> 395887 bytes Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf | Bin 122710 -> 122712 bytes Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf | Bin 150674 -> 150674 bytes Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf | Bin 148706 -> 148700 bytes Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf | Bin 114586 -> 114586 bytes Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf | Bin 112485 -> 112483 bytes Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf | Bin 151569 -> 151568 bytes Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf | Bin 128316 -> 128313 bytes Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf | Bin 163456 -> 163457 bytes Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf | Bin 250136 -> 250136 bytes Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf | Bin 150283 -> 150283 bytes Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf | Bin 170076 -> 170073 bytes Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf | Bin 204992 -> 204998 bytes .../texmf-dist/doc/latex/l3kernel/l3obsolete.txt | 8 + .../texmf-dist/doc/latex/l3kernel/l3prefixes.pdf | Bin 81696 -> 81695 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.pdf | Bin 296462 -> 296797 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.tex | 2 +- .../doc/latex/l3kernel/l3syntax-changes.pdf | Bin 243101 -> 243431 bytes .../doc/latex/l3kernel/l3syntax-changes.tex | 2 +- .../doc/latex/l3kernel/l3term-glossary.pdf | Bin 218265 -> 218589 bytes .../doc/latex/l3kernel/l3term-glossary.tex | 2 +- Master/texmf-dist/doc/latex/l3kernel/source3.pdf | Bin 7237559 -> 7352030 bytes Master/texmf-dist/doc/latex/l3kernel/source3.tex | 2 +- .../texmf-dist/doc/latex/l3kernel/source3body.tex | 3 +- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 43 ++-- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 36 ++-- .../source/latex/l3kernel/l3bootstrap.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3cctab.dtx | 49 ++++- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 34 +++- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3color.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3debug.dtx | 19 +- .../source/latex/l3kernel/l3deprecation.dtx | 18 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 4 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 25 ++- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 116 ++++++++++- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 8 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 5 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 6 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 21 +- .../texmf-dist/source/latex/l3kernel/l3legacy.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 18 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 16 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 26 +-- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 58 +++--- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 65 +++--- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- .../source/latex/l3kernel/l3str-convert.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 2 +- .../source/latex/l3kernel/l3text-case.dtx | 2 +- .../source/latex/l3kernel/l3text-map.dtx | 2 +- .../source/latex/l3kernel/l3text-purify.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3text.dtx | 2 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 183 +++++------------ .../texmf-dist/source/latex/l3kernel/l3token.dtx | 9 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 2 +- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 222 ++++++++++++--------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.ltx | 27 ++- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 27 ++- Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 2 +- 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_:n`, for `` 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf 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 Binary files a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf 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> % -\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} % % \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 { bp } +% \dim_compare:nNnTF +% { bp } = +% { \dim_to_decimal_in_bp:n { 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_:n { } +% \dim_compare:nNnTF +% { } = +% { \dim_to_decimal_in_:n { } } % \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};{}|, where || represents || in % |sp| unit. % If |#1| is~|0|$_{12}$, the \enquote{unit} || 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 || and % || 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 -- cgit v1.2.3