diff options
author | Karl Berry <karl@freefriends.org> | 2023-05-16 20:22:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-05-16 20:22:00 +0000 |
commit | 8e9d8b027e86eefeb1788f42ec5fc0a8c76548ba (patch) | |
tree | 23fc8c8906eff72625be83d276d39e516ecb1f41 /Master | |
parent | e66174d7e5c8c2f71571c928e0d6c5a8b037a904 (diff) |
l3kernel (16may23)
git-svn-id: svn://tug.org/texlive/trunk@67134 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
91 files changed, 211 insertions, 1671 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index e973577cffd..9b2db54278e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2023-05-15] + +### Changed +- Require `\expanded` and 'pdfTeX extension' primitives, + and thus TeX distributions from mid-2019 onward + +### Fixed +- Treatment of trailing `/` in `\input@path` + ## [2023-05-11] ### Added @@ -1398,7 +1407,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-11...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-15...HEAD +[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 [2023-05-05]: https://github.com/latex3/latex3/compare/2023-04-20...2023-05-05 [2023-04-20]: https://github.com/latex3/latex3/compare/2023-04-19...2023-04-20 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index 14a42feda52..44bb66a2f77 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-11 +Release 2023-05-15 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex 0a40032cefc..ae93ec68500 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex f1d727899c2..84f53f8947f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 5d53fcc74bb..7dea564c3f5 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-11} +\date{Released 2023-05-15} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf Binary files differindex e4f681f1311..a83c0c03df8 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 194e4f8e35b..1f63b514794 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf Binary files differindex 636a6e0ec52..71a9e6840e9 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf Binary files differindex 3f72f1e5b3b..6a994a24c16 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf Binary files differindex ae10be53a63..5e76c8d5aac 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf Binary files differindex ff4daf4033f..9c38abc8c84 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf Binary files differindex 57731785c31..1b410c1ef8e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf Binary files differindex 1c516007297..c3fb4f022bc 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf Binary files differindex c170a56ff63..951757da636 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf Binary files differindex 3fa83fddadf..fee9bbf2dff 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf Binary files differindex c3a95d78de3..a858a42c431 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf Binary files differindex c4902677afb..c043e68add3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf Binary files differindex 3f1f303dc52..02e724712d1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf Binary files differindex 623bb991d24..a521a6ca252 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf Binary files differindex ad090e333be..166cdf0386d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv index 00e59e10de9..410b927d899 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv @@ -39,8 +39,10 @@ classics,classics,Eduardo C. Lourenço de Lima,,,,2013-03-16,2013-03-16, clist,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, cmd,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03, code,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2021-04-23,2021-04-23, +codedesc,codedescribe,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15, codedoc,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,Somewhat experimental: may change codehigh,codehigh,Jianrui Lyu,https://github.com/lvjr/codehigh,https://github.com/lvjr/codehigh.git,https://github.com/lvjr/codehigh/issues,2022-04-02,2022-04-02, +codelist,codelisting,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15, codepoint,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, coffin,"l3kernel,xcoffins",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, colon,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, @@ -208,6 +210,7 @@ reverse,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,htt right,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14, rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13, +sanuml,sanitize-umlaut,Thomas F. Sturm,https://github.com/T-F-S/sanitize-umlaut,https://github.com/T-F-S/sanitize-umlaut.git,https://github.com/T-F-S/sanitize-umlaut/issues,2022-07-19,2022-07-19, scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23, scontents,scontents,Pablo GonzĂ¡lez,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05, @@ -221,6 +224,7 @@ skel,skeldoc,Magnus Lie Hetland,https://github.com/mlhetland/skeldoc.sty,https:/ skip,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13, space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15, statistics,statistics,Julien Rivaud,https://gitlab.com/frnchfrgg-latex/statistics,https://gitlab.com/frnchfrgg-latex/statistics.git,https://gitlab.com/frnchfrgg-latex/statistics/issues,2018-06-25,2018-06-25, stm,lt3-stm,CV Radhakrishnan,http://www.cvr.cc/,,,2014-02-26,2014-02-26, stop,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf Binary files differindex d3204c1c377..b065870c917 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex bf81491af3b..76b087f8463 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 093b2e6e83e..5c839204366 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-11} +\date{Released 2023-05-15} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex d5534b9fa48..6f8bc1166dc 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index e8b8b4911a0..8218429e71f 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-11} +\date{Released 2023-05-15} \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 Binary files differindex 96e6dba07f8..11c4fbb8f74 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index 4ef72973f7b..9fae8221bbc 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-11} +\date{Released 2023-05-15} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 68f89b6013a..84fa054d5f3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index ba7f8d430fb..e12bd2b98d8 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-11} +\date{Released 2023-05-15} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 3b86288ffa0..cdd27753ee8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2023-05-11}% +\def\ExplFileDate{2023-05-15}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-05-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 2440b8ea32a..fa09cc4806a 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1631,12 +1631,8 @@ % \end{macrocode} % % \begin{macro}[EXP]{\use:e} -% In non-\LuaTeX engines older than 2019, \cs{expanded} is emulated. % \begin{macrocode} \cs_set:Npn \use:e #1 { \tex_expanded:D {#1} } -\tex_ifdefined:D \tex_expanded:D \tex_else:D - \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} } -\tex_fi:D % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 7c5e8f5e660..03749f402a1 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -133,35 +133,6 @@ %<@@=kernel> % \end{macrocode} % -% \subsection{\LuaTeX{}-specific code} -% -% Depending on the versions available, the \LaTeX{} format may not have -% the raw |\Umath| primitive names available. We fix that globally: -% it should cause no issues. Older \LuaTeX{} versions do not have -% a pre-built table of the primitive names here so sort one out -% ourselves. These end up globally-defined but at that is true with -% a newer format anyway and as they all start |\U| this should be -% reasonably safe. -% \begin{macrocode} -\begingroup - \expandafter\ifx\csname directlua\endcsname\relax - \else - \directlua{% - local i - local t = { } - for _,i in pairs(tex.extraprimitives("luatex")) do - if string.match(i,"^U") then - if not string.match(i,"^Uchar$") then %$ - table.insert(t,i) - end - end - end - tex.enableprimitives("", t) - }% - \fi -\endgroup -% \end{macrocode} -% % \subsection{The \tn{pdfstrcmp} primitive in \XeTeX{}} % % Only \pdfTeX{} has a primitive called \tn{pdfstrcmp}. The \XeTeX{} @@ -222,39 +193,40 @@ % % \subsection{Engine requirements} % -% The code currently requires \eTeX{} and functionality equivalent to -% \tn{pdfstrcmp}, and also driver and Unicode character support. This is -% available in a reasonably-wide range of engines. -% +% The code currently requires \eTeX{}, the set of \enquote{\pdfTeX{} +% extensions} \emph{including} \tn{expanded}, and for Unicode engines the +% ability to generate arbitrary character tokens by expansion. That is covered +% by all supported engines since \TeX{} Live 2019, which we therefore use +% as a baseline for engine and \LaTeX{} format support. % For \LuaTeX, we require at least Lua 5.3 and the |token.set_lua| function. -% This is available at least since \LuaTeX{} 1.10. +% This is available at least since \LuaTeX{} 1.10, which again is the one +% in \TeX{} Live 2019. (u)p\TeX{} only gained \tn{ifincsname} for \TeX{} +% Live 2020, but at present that primitive is unused in \pkg{expl3} so for +% the present it's not tested. If and when that changes, we will need to +% revisit the code here. % \begin{macrocode} \begingroup \def\next{\endgroup}% \def\ShortText{Required primitives not found}% \def\LongText% {% - The L3 programming layer requires the e-TeX primitives and additional - \LineBreak functionality as described in the README file. + The L3 programming layer requires the e-TeX primitives and the + \LineBreak 'pdfTeX extensions' as described in the README file. \LineBreak These are available in the engines\LineBreak - - pdfTeX v1.40.0\LineBreak - - XeTeX v0.99992\LineBreak + - pdfTeX v1.40.20\LineBreak + - XeTeX v0.999991\LineBreak - LuaTeX v1.10\LineBreak - - e-(u)pTeX mid-2012\LineBreak + - e-(u)pTeX v3.8.2\LineBreak - Prote (2021)\LineBreak or later.\LineBreak \LineBreak }% \ifnum0% - \expandafter\ifx\csname expanded\endcsname\relax - \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi + \expandafter\ifx\csname luatexversion\endcsname\relax + \expandafter\ifx\csname expanded\endcsname\relax\else 1\fi \else - \expandafter\ifx\csname luatexversion\endcsname\relax - 1% - \else - \ifnum\luatexversion<110 \else 1\fi - \fi + \ifnum\luatexversion<110 \else 1\fi \fi =0 % \newlinechar`\^^J % @@ -282,44 +254,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \next % \end{macrocode} % -% \subsection{Extending allocators} -% -% The ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has -% been around since 1997 in the \pkg{etex} package. -% Loading this support is delayed until here as we are now sure that the -% \eTeX{} extensions and \tn{pdfstrcmp} or equivalent are available. Thus -% there is no danger of an \enquote{uncontrolled} error if the engine -% requirements are not met. -% -% For \LaTeXe{} we need to make sure that the extended pool is being used: -% \pkg{expl3} uses a lot of registers. For formats from 2015 onward there is -% nothing to do as this is automatic. For older formats, the \pkg{etex} -% package needs to be loaded to do the job. In that case, some inserts are -% reserved also as these have to be from the standard pool. Note that -% \tn{reserveinserts} is \tn{outer} and so is accessed here by csname. In -% earlier versions, loading \pkg{etex} was done directly and so -% \tn{reserveinserts} appeared in the code: this then required a \tn{relax} -% after \tn{RequirePackage} to prevent an error with \enquote{unsafe} -% definitions as seen for example with \pkg{capoptions}. The optional loading -% here is done using a group and \tn{ifx} test as we are not quite in the -% position to have a single name for \tn{pdfstrcmp} just yet. -% \begin{macrocode} -\begingroup - \def\@tempa{LaTeX2e}% - \def\next{}% - \ifx\fmtname\@tempa - \expandafter\ifx\csname extrafloats\endcsname\relax - \def\next - {% - \RequirePackage{etex}% - \csname reserveinserts\endcsname{32}% - }% - \fi - \fi -\expandafter\endgroup -\next -% \end{macrocode} -% % \subsection{The \LaTeX3 code environment} % % The code environment is now set up. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 33b46834dbf..63cd2ac51a5 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 4bbdc84bbb8..3f25a76e882 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index 18dbc692382..7d6c2ec300f 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index ff4f9f7197b..5abf32d8f0f 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 66f601180dd..759672403c2 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index e931d0b8712..047467075cd 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index c0475ede4ed..79039b47737 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-05-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index c1fe0db03a0..f9c788a097d 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 6056a215d04..039ee830a8f 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-11} +% \date{Released 2023-05-15} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index e58953c8bb2..deff694c402 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 8e6e06deeb1..28ac1c8123f 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1043,18 +1043,10 @@ % \end{macro} % % \begin{macro}[EXP]{\::e} -% With the \tn{expanded} primitive available, just expand. Otherwise -% defer to \cs{exp_args:Ne} implemented later. +% With the \tn{expanded} primitive available, just expand. % \begin{macrocode} -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \::e #1 \::: #2#3 - { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } } - } - { - \cs_new:Npn \::e #1 \::: #2#3 - { \exp_args:Ne \@@_arg_next:nnn {#3} {#1} {#2} } - } +\cs_new:Npn \::e #1 \::: #2#3 + { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } } % \end{macrocode} % \end{macro} % @@ -1242,21 +1234,10 @@ % \end{macro} % % \begin{macro}[EXP]{\exp_args:Ne} -% When the \tn{expanded} primitive is available, use it. Otherwise -% use \cs{@@_e:nn}, defined later, to fully expand tokens. +% When the \tn{expanded} primitive is available, use it. % \begin{macrocode} -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_args:Ne #1#2 - { \exp_after:wN #1 \tex_expanded:D { {#2} } } - } - { - \cs_new:Npn \exp_args:Ne #1#2 - { - \exp_after:wN #1 \exp_after:wN - { \exp:w \@@_e:nn {#2} { } } - } - } +\cs_new:Npn \exp_args:Ne #1#2 + { \exp_after:wN #1 \tex_expanded:D { {#2} } } % \end{macrocode} % \end{macro} % @@ -1300,16 +1281,12 @@ \exp_after:wN #2 \exp_after:wN { \exp:w \@@_eval_register:c {#3} } } -\cs_if_exist:NTF \tex_expanded:D +\cs_new:Npn \exp_args:NNe #1#2#3 { - \cs_new:Npn \exp_args:NNe #1#2#3 - { - \exp_after:wN #1 - \exp_after:wN #2 - \tex_expanded:D { {#3} } - } + \exp_after:wN #1 + \exp_after:wN #2 + \tex_expanded:D { {#3} } } - { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } } \cs_new:Npn \exp_args:NNf #1#2#3 { \exp_after:wN #1 @@ -1428,15 +1405,8 @@ \exp_after:wN \@@_arg_last_unbraced:nn \exp_after:wN { \exp:w \@@_eval_register:c {#2} } {#1} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \::e_unbraced \::: #1#2 - { \tex_expanded:D { \exp_not:n {#1} #2 } } - } - { - \cs_new:Npn \::e_unbraced \::: #1#2 - { \exp:w \@@_e:nn {#2} {#1} } - } +\cs_new:Npn \::e_unbraced \::: #1#2 + { \tex_expanded:D { \exp_not:n {#1} #2 } } \cs_new:Npn \::f_unbraced \::: #1#2 { \exp_after:wN \@@_arg_last_unbraced:nn @@ -1487,12 +1457,8 @@ { \exp_after:wN #1 \exp:w \@@_eval_register:N #2 } \cs_new:Npn \exp_last_unbraced:Nv #1#2 { \exp_after:wN #1 \exp:w \@@_eval_register:c {#2} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_last_unbraced:Ne #1#2 - { \exp_after:wN #1 \tex_expanded:D {#2} } - } - { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } } +\cs_new:Npn \exp_last_unbraced:Ne #1#2 + { \exp_after:wN #1 \tex_expanded:D {#2} } \cs_new:Npn \exp_last_unbraced:Nf #1#2 { \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 } \cs_new:Npn \exp_last_unbraced:NNo #1#2#3 @@ -1591,15 +1557,8 @@ % \begin{macrocode} \cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: } \cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_not:e #1 - { \__kernel_exp_not:w \tex_expanded:D { {#1} } } - } - { - \cs_new:Npn \exp_not:e - { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: } - } +\cs_new:Npn \exp_not:e #1 + { \__kernel_exp_not:w \tex_expanded:D { {#1} } } \cs_new:Npn \exp_not:f #1 { \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } } \cs_new:Npn \exp_not:V #1 @@ -1685,475 +1644,6 @@ % \end{macro} % \end{macro} % -% -% \subsection{Emulating \texttt{e}-type expansion} -% -% When the \tn{expanded} primitive is available it is used to implement -% \texttt{e}-type expansion; otherwise we emulate it. -% -% \begin{macrocode} -\cs_if_exist:NF \tex_expanded:D - { -% \end{macrocode} -% -% \begin{macro}[EXP]{\@@_e:nn, \@@_e_end:nn} -% Repeatedly expand tokens, keeping track of fully-expanded tokens in -% the second argument to \cs{@@_e:nn}; this function eventually -% calls \cs{@@_e_end:nn} to leave \cs{exp_end:} in the input -% stream, followed by the result of the expansion. There are many -% special cases: spaces, brace groups, \tn{noexpand}, \tn{unexpanded}, -% \tn{the}, \tn{primitive}. -% While we use brace tricks \cs{if_false:} |{| \cs{fi:}, the expansion -% of this function is always triggered by \cs{exp:w} so brace balance -% is eventually restored after that is hit with a single step of -% expansion. Otherwise we could not nest \texttt{e}-type expansions -% within each other. -% \begin{macrocode} - \cs_new:Npn \@@_e:nn #1 - { - \if_false: { \fi: - \tl_if_head_is_N_type:nTF {#1} - { \@@_e:N } - { - \tl_if_head_is_group:nTF {#1} - { \@@_e_group:n } - { - \tl_if_empty:nTF {#1} - { \exp_after:wN \@@_e_end:nn } - { \exp_after:wN \@@_e_space:nn } - \exp_after:wN { \if_false: } \fi: - } - } - #1 - } - } - \cs_new:Npn \@@_e_end:nn #1#2 { \exp_end: #2 } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_space:nn} -% For an explicit space character, remove it by \texttt{f}-expansion -% and put it in the (future) output. -% \begin{macrocode} - \cs_new:Npn \@@_e_space:nn #1#2 - { \exp_args:Nf \@@_e:nn {#1} { #2 ~ } } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_group:n, \@@_e_put:nn, \@@_e_put:nnn} -% For a group, expand its contents, wrap it in two pairs of braces, -% and call \cs{@@_e_put:nn}. This function places the first item (the -% double-brace wrapped result) into the output. Importantly, -% \cs{tl_head:n} works even if the input contains quarks. -% \begin{macrocode} - \cs_new:Npn \@@_e_group:n #1 - { - \exp_after:wN \@@_e_put:nn - \exp_after:wN { \exp_after:wN { \exp_after:wN { - \exp:w \if_false: } \fi: \@@_e:nn {#1} { } } } - } - \cs_new:Npn \@@_e_put:nn #1 - { - \exp_args:NNo \exp_args:No \@@_e_put:nnn - { \tl_head:n {#1} } {#1} - } - \cs_new:Npn \@@_e_put:nnn #1#2#3 - { \exp_args:No \@@_e:nn { \use_none:n #2 } { #3 #1 } } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP] -% {\@@_e:N, \@@_e:Nnn, \@@_e_protected:Nnn, \@@_e_expandable:Nnn} -% For an \texttt{N}-type token, call \cs{@@_e:Nnn} with arguments the -% \meta{first token}, the remaining tokens to expand and what's -% already been expanded. If the \meta{first token} is non-expandable, -% including \tn{protected} (\tn{long} or not) macros, it is put in the -% result by \cs{@@_e_protected:Nnn}. The four special primitives -% \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive} are -% detected; otherwise the token is expanded by -% \cs{@@_e_expandable:Nnn}. -% \begin{macrocode} - \cs_new:Npn \@@_e:N #1 - { - \exp_after:wN \@@_e:Nnn - \exp_after:wN #1 - \exp_after:wN { \if_false: } \fi: - } - \cs_new:Npn \@@_e:Nnn #1 - { - \if_case:w - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi: - \token_if_protected_macro:NT #1 { 1 ~ } - \token_if_protected_long_macro:NT #1 { 1 ~ } - \if_meaning:w \exp_not:n #1 2 ~ \fi: - \if_meaning:w \exp_not:N #1 3 ~ \fi: - \if_meaning:w \tex_the:D #1 4 ~ \fi: - \if_meaning:w \tex_primitive:D #1 5 ~ \fi: - 0 ~ - \exp_after:wN \@@_e_expandable:Nnn - \or: \exp_after:wN \@@_e_protected:Nnn - \or: \exp_after:wN \@@_e_unexpanded:Nnn - \or: \exp_after:wN \@@_e_noexpand:Nnn - \or: \exp_after:wN \@@_e_the:Nnn - \or: \exp_after:wN \@@_e_primitive:Nnn - \fi: - #1 - } - \cs_new:Npn \@@_e_protected:Nnn #1#2#3 - { \@@_e:nn {#2} { #3 #1 } } - \cs_new:Npn \@@_e_expandable:Nnn #1#2 - { \exp_args:No \@@_e:nn { #1 #2 } } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP] -% { -% \@@_e_primitive:Nnn, -% \@@_e_primitive_aux:NNw, -% \@@_e_primitive_aux:NNnn, -% \@@_e_primitive_other:NNnn, -% \@@_e_primitive_other_aux:nNNnn -% } -% We don't try hard to make sensible error recovery since the error -% recovery of \cs{tex_primitive:D} when followed by something else -% than a primitive depends on the engine. The only valid case is when -% what follows is \texttt{N}-type. Then distinguish special -% primitives \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive} -% from other primitives. In the \enquote{other} case, the only -% reasonable way to check if the primitive that follows -% \cs{tex_primitive:D} is expandable is to expand and compare the -% before-expansion and after-expansion results. If they coincide then -% probably the primitive is non-expandable and should be put in the -% output together with \cs{tex_primitive:D} (one can cook up contrived -% counter-examples where the true \tn{expanded} would have an infinite -% loop), and otherwise one should continue expanding. -% \begin{macrocode} - \cs_new:Npn \@@_e_primitive:Nnn #1#2 - { - \if_false: { \fi: - \tl_if_head_is_N_type:nTF {#2} - { \@@_e_primitive_aux:NNw #1 } - { - \msg_expandable_error:nnn { kernel } { e-type } - { Missing~primitive~name } - \@@_e_primitive_aux:NNw #1 \c_empty_tl - } - #2 - } - } - \cs_new:Npn \@@_e_primitive_aux:NNw #1#2 - { - \exp_after:wN \@@_e_primitive_aux:NNnn - \exp_after:wN #1 - \exp_after:wN #2 - \exp_after:wN { \if_false: } \fi: - } - \cs_new:Npn \@@_e_primitive_aux:NNnn #1#2 - { - \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 } - { - { unexpanded } { \@@_e_unexpanded:Nnn \exp_not:n } - { noexpand } { \@@_e_noexpand:Nnn \exp_not:N } - { the } { \@@_e_the:Nnn \tex_the:D } - { - \sys_if_engine_xetex:T { pdf } - \sys_if_engine_luatex:T { pdf } - primitive - } { \@@_e_primitive:Nnn #1 } - } - { \@@_e_primitive_other:NNnn #1 #2 } - } - \cs_new:Npn \@@_e_primitive_other:NNnn #1#2#3 - { - \exp_args:No \@@_e_primitive_other_aux:nNNnn - { #1 #2 #3 } - #1 #2 {#3} - } - \cs_new:Npn \@@_e_primitive_other_aux:nNNnn #1#2#3#4#5 - { - \str_if_eq:nnTF {#1} { #2 #3 #4 } - { \@@_e:nn {#4} { #5 #2 #3 } } - { \@@_e:nn {#1} {#5} } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_noexpand:Nnn} -% The \tn{noexpand} primitive has no effect when followed by a token -% that is not \texttt{N}-type; otherwise \cs{@@_e_put:nn} can grab the -% next token and put it in the result unchanged. -% \begin{macrocode} - \cs_new:Npn \@@_e_noexpand:Nnn #1#2 - { - \tl_if_head_is_N_type:nTF {#2} - { \@@_e_put:nn } { \@@_e:nn } {#2} - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP] -% { -% \@@_e_unexpanded:Nnn, \@@_e_unexpanded:nn, -% \@@_e_unexpanded:nN, \@@_e_unexpanded:N -% } -% The \tn{unexpanded} primitive expands and ignores any space, -% \cs{scan_stop:}, or token affected by \cs{exp_not:N}, then expects a -% brace group. Since we only support brace-balanced token lists it is -% impossible to support the case where the argument of \tn{unexpanded} -% starts with an implicit brace. Even though we want to expand and -% ignore spaces we cannot blindly \texttt{f}-expand because tokens -% affected by \cs{exp_not:N} should discarded without being expanded -% further. -% -% As usual distinguish four cases: brace group (the normal case, where -% we just put the item in the result), space (just \texttt{f}-expand -% to remove the space), empty (an error), or \texttt{N}-type -% \meta{token}. In the last case call \cs{@@_e_unexpanded:nN} -% triggered by an \texttt{f}-expansion. Having a non-expandable -% \meta{token} after \tn{unexpanded} is an error (we recover by -% passing |{}| to \tn{unexpanded}; this is different from \TeX{} -% because the error recovery of \tn{unexpanded} changes the balance of -% braces), unless that \meta{token} is \cs{scan_stop:} or a space -% (recall that we don't implement the case of an implicit begin-group -% token). An expandable \meta{token} is instead expanded, unless it -% is \tn{noexpand}. The latter primitive can be followed by an expandable -% \texttt{N}-type token (removed), by a non-expandable one (kept -% and later causing an error), by a space (removed by -% \texttt{f}-expansion), or by a brace group or nothing (later causing -% an error). -% \begin{macrocode} - \cs_new:Npn \@@_e_unexpanded:Nnn #1 { \@@_e_unexpanded:nn } - \cs_new:Npn \@@_e_unexpanded:nn #1 - { - \tl_if_head_is_N_type:nTF {#1} - { - \exp_args:Nf \@@_e_unexpanded:nn - { \@@_e_unexpanded:nN {#1} #1 } - } - { - \tl_if_head_is_group:nTF {#1} - { \@@_e_put:nn } - { - \tl_if_empty:nTF {#1} - { - \msg_expandable_error:nnn - { kernel } { e-type } - { \unexpanded missing~brace } - \@@_e_end:nn - } - { \exp_args:Nf \@@_e_unexpanded:nn } - } - {#1} - } - } - \cs_new:Npn \@@_e_unexpanded:nN #1#2 - { - \exp_after:wN \if_meaning:w \exp_not:N #2 #2 - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - \token_if_eq_catcode:NNTF #2 \c_space_token - { \exp_stop_f: } - { - \token_if_eq_meaning:NNTF #2 \scan_stop: - { \exp_stop_f: } - { - \msg_expandable_error:nnn - { kernel } { e-type } - { \unexpanded missing~brace } - { } - } - } - } - { - \token_if_eq_meaning:NNTF #2 \exp_not:N - { - \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 } - { \@@_e_unexpanded:N } - } - { \exp_after:wN \exp_stop_f: #2 } - } - } - \cs_new:Npn \@@_e_unexpanded:N #1 - { - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else: - \exp_after:wN \use_i:nn - \fi: - \exp_stop_f: #1 - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_the:Nnn, \@@_e_the:N, \@@_e_the_toks_reg:N} -% Finally implement \tn{the}. Followed by anything other than an -% \texttt{N}-type \meta{token} this causes an error (we just let -% \TeX{} make one), otherwise we test the \meta{token}. If the -% \meta{token} is expandable, expand it. Otherwise it could be any -% kind of register, or things like \tn{numexpr}, so there is no way to -% deal with all cases. Thankfully, only \tn{toks} data needs to be -% protected from expansion since everything else gives a string of -% characters. If the \meta{token} is \tn{toks} we find a number and -% unpack using the |the_toks| functions. If it is a token register we -% unpack it in a brace group and call \cs{@@_e_put:nn} to move it to -% the result. Otherwise we unpack and continue expanding (useless but -% safe) since it is basically impossible to have a handle on where the -% result of \tn{the} ends. -% \begin{macrocode} - \cs_new:Npn \@@_e_the:Nnn #1#2 - { - \tl_if_head_is_N_type:nTF {#2} - { \if_false: { \fi: \@@_e_the:N #2 } } - { \exp_args:No \@@_e:nn { \tex_the:D #2 } } - } - \cs_new:Npn \@@_e_the:N #1 - { - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - \if_meaning:w \tex_toks:D #1 - \exp_after:wN \@@_e_the_toks:wnn \int_value:w - \exp_after:wN \@@_e_the_toks:n - \exp_after:wN { \int_value:w \if_false: } \fi: - \else: - \@@_e_if_toks_register:NTF #1 - { \exp_after:wN \@@_e_the_toks_reg:N } - { - \exp_after:wN \@@_e:nn \exp_after:wN { - \tex_the:D \if_false: } \fi: - } - \exp_after:wN #1 - \fi: - } - { - \exp_after:wN \@@_e_the:Nnn \exp_after:wN ? - \exp_after:wN { \exp:w \if_false: } \fi: - \exp_after:wN \exp_end: #1 - } - } - \cs_new:Npn \@@_e_the_toks_reg:N #1 - { - \exp_after:wN \@@_e_put:nn \exp_after:wN { - \exp_after:wN { - \tex_the:D \if_false: } \fi: #1 } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_the_toks:wnn, \@@_e_the_toks:n, \@@_e_the_toks:N} -% The calling function has applied \cs{int_value:w} so we collect -% digits with \cs{@@_e_the_toks:n} (which gets the token list as an -% argument) and \cs{@@_e_the_toks:N} (which gets the first token in -% case it is \texttt{N}-type). The digits are themselves collected -% into an \cs{int_value:w} argument to \cs{@@_e_the_toks:wnn}. Then -% that function unpacks the \tn{toks}\meta{number} into the result. -% We include |?| because \cs{@@_e_put:nnn} removes one item from its -% second argument. Note that our approach is rather crude: in cases -% like |\the\toks12~34| the first \cs{int_value:w} removes the space -% and we will incorrectly unpack the |\the\toks1234|. -% \begin{macrocode} - \cs_new:Npn \@@_e_the_toks:wnn #1; #2 - { - \exp_args:No \@@_e_put:nnn - { \tex_the:D \tex_toks:D #1 } { ? #2 } - } - \cs_new:Npn \@@_e_the_toks:n #1 - { - \tl_if_head_is_N_type:nTF {#1} - { \exp_after:wN \@@_e_the_toks:N \if_false: { \fi: #1 } } - { ; {#1} } - } - \cs_new:Npn \@@_e_the_toks:N #1 - { - \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f: - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - #1 - \exp_after:wN \@@_e_the_toks:n - \exp_after:wN { \if_false: } \fi: - } - { - \exp_after:wN ; - \exp_after:wN { \if_false: } \fi: #1 - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_e_if_toks_register:NTF} -% \begin{macro}[EXP] -% { -% \@@_e_the_XeTeXinterchartoks:, -% \@@_e_the_errhelp:, -% \@@_e_the_everycr:, -% \@@_e_the_everydisplay:, -% \@@_e_the_everyeof:, -% \@@_e_the_everyhbox:, -% \@@_e_the_everyjob:, -% \@@_e_the_everymath:, -% \@@_e_the_everypar:, -% \@@_e_the_everyvbox:, -% \@@_e_the_output:, -% \@@_e_the_pdfpageattr:, -% \@@_e_the_pdfpageresources:, -% \@@_e_the_pdfpagesattr:, -% \@@_e_the_pdfpkmode: -% } -% We need to detect both \tn{toks} registers like \tn{toks@} in -% \LaTeXe{} and parameters such as \tn{everypar}, as the result of -% unpacking the register should not expand further. Registers are -% found by \cs{token_if_toks_register:NTF} by inspecting the meaning. -% The list of parameters is finite so we just use a -% \cs{cs_if_exist:cTF} test to look up in a table. We abuse -% \cs{cs_to_str:N}'s ability to remove a leading escape character -% whatever it is. -% \begin{macrocode} - \prg_new_conditional:Npnn \@@_e_if_toks_register:N #1 { TF } - { - \token_if_toks_register:NTF #1 { \prg_return_true: } - { - \cs_if_exist:cTF - { - @@_e_the_ - \exp_after:wN \cs_to_str:N - \token_to_meaning:N #1 - : - } { \prg_return_true: } { \prg_return_false: } - } - } - \cs_new_eq:NN \@@_e_the_XeTeXinterchartoks: ? - \cs_new_eq:NN \@@_e_the_errhelp: ? - \cs_new_eq:NN \@@_e_the_everycr: ? - \cs_new_eq:NN \@@_e_the_everydisplay: ? - \cs_new_eq:NN \@@_e_the_everyeof: ? - \cs_new_eq:NN \@@_e_the_everyhbox: ? - \cs_new_eq:NN \@@_e_the_everyjob: ? - \cs_new_eq:NN \@@_e_the_everymath: ? - \cs_new_eq:NN \@@_e_the_everypar: ? - \cs_new_eq:NN \@@_e_the_everyvbox: ? - \cs_new_eq:NN \@@_e_the_output: ? - \cs_new_eq:NN \@@_e_the_pdfpageattr: ? - \cs_new_eq:NN \@@_e_the_pdfpageresources: ? - \cs_new_eq:NN \@@_e_the_pdfpagesattr: ? - \cs_new_eq:NN \@@_e_the_pdfpkmode: ? -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% We are done emulating \texttt{e}-type argument expansion when -% \tn{expanded} is unavailable. -% \begin{macrocode} - } -% \end{macrocode} -% -% % \subsection{Defining function variants} % % \begin{macrocode} @@ -2638,22 +2128,8 @@ } \cs_new_protected:Npn \@@_generate_internal_test_aux:w ##1 #1 ##2 \s_@@_mark ##3 ##4 \s_@@_stop {##3} - \cs_if_exist:NTF \tex_expanded:D - { - \cs_new_eq:NN \@@_generate_internal_test:Nw - \@@_generate_internal_test_aux:w - } - { - \cs_new_protected:Npn \@@_generate_internal_test:Nw ##1 - { - \if_meaning:w \tex_expanded:D ##1 - \exp_after:wN \@@_generate_internal_test_aux:w - \exp_after:wN #1 - \else: - \exp_after:wN \@@_generate_internal_test_aux:w - \fi: - } - } + \cs_new_eq:NN \@@_generate_internal_test:Nw + \@@_generate_internal_test_aux:w } \exp_args:No \@@_tmp:w { \token_to_str:N p } \cs_new_protected:Npn \@@_generate_internal_one_go:NNn #1#2#3 diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index c5e7fc1df7f..4be6f56f803 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -2817,7 +2817,7 @@ % % \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:Nnn} +% \begin{macro}[EXP]{\@@_full_name_aux:Nnnn} % \begin{macro}[EXP]{\@@_full_name_aux:nN} % \begin{macro}[EXP]{\@@_full_name_aux:nnN} % \begin{macro}[EXP]{\@@_name_cleanup:w} @@ -2887,11 +2887,11 @@ \tl_if_blank:nTF {#2} { \seq_map_tokens:Nn \l_file_search_path_seq - { \@@_full_name_aux:Nnn \seq_map_break:n {#1} } + { \@@_full_name_aux:Nnnn \seq_map_break:n {#1} { / } } \cs_if_exist:NT \input@path { \tl_map_tokens:Nn \input@path - { \@@_full_name_aux:Nnn \tl_map_break:n {#1} } + { \@@_full_name_aux:Nnnn \tl_map_break:n {#1} { } } } \@@_name_end: } @@ -2901,8 +2901,8 @@ % 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:Nnn #1#2#3 - { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 } +\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: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 @@ -2958,24 +2958,6 @@ } } % \end{macrocode} -% Deal with the fact that the primitive might not be available. -% \begin{macrocode} -\cs_if_exist:NF \tex_filesize:D - { - \cs_gset:Npn \file_full_name:n #1 - { - \msg_expandable_error:nnn - { kernel } { primitive-not-available } - { \(pdf)filesize } - } - } -\msg_new:nnnn { kernel } { primitive-not-available } - { Primitive~\token_to_str:N #1 not~available } - { - The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~ - the~#1~primitive. - } -% \end{macrocode} % \end{macro} % \end{macro} % \end{macro} @@ -3014,68 +2996,12 @@ \cs_generate_variant:Nn \file_get_full_name:nNF { V } \cs_generate_variant:Nn \file_get_full_name:nNTF { V } % \end{macrocode} -% If \cs{tex_filesize:D} is not available, the -% way to test if a file exists is to try to open it: if it does -% not exist then \TeX{} reports end-of-file. A search is made -% looking at each potential path in turn (starting from the current -% directory). The first location is of course treated as the correct -% one: this is done by jumping to \cs{prg_break_point:}. If nothing -% is found, |#2| is returned empty. A special case when there is no -% extension is that once the first location is found we test the -% existence of the file with |.tex| extension in that directory, and -% if it exists we include the |.tex| extension in the result. -% \begin{macrocode} -\cs_if_exist:NF \tex_filesize:D - { - \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF } - { - \__kernel_tl_set:Nx \l_@@_base_name_tl - { \__kernel_file_name_sanitize:n {#1} } - \@@_get_full_name_search:nN { } \use:n - \seq_map_inline:Nn \l_file_search_path_seq - { \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n } - \cs_if_exist:NT \input@path - { - \tl_map_inline:Nn \input@path - { \@@_get_full_name_search:nN { ##1 } \tl_map_break:n } - } - \tl_set:Nn \l_@@_full_name_tl { \q_no_value } - \prg_break_point: - \quark_if_no_value:NTF \l_@@_full_name_tl - { - \ior_close:N \g_@@_internal_ior - \prg_return_false: - } - { - \file_parse_full_name:VNNN \l_@@_full_name_tl - \l_@@_dir_str \l_@@_name_str \l_@@_ext_str - \str_if_empty:NT \l_@@_ext_str - { - \__kernel_ior_open:No \g_@@_internal_ior - { \l_@@_full_name_tl .tex } - \ior_if_eof:NF \g_@@_internal_ior - { \tl_put_right:Nn \l_@@_full_name_tl { .tex } } - } - \ior_close:N \g_@@_internal_ior - \tl_set_eq:NN #2 \l_@@_full_name_tl - \prg_return_true: - } - } - } -\cs_new_protected:Npn \@@_get_full_name_search:nN #1#2 - { - \__kernel_tl_set:Nx \l_@@_full_name_tl - { \tl_to_str:n {#1} \l_@@_base_name_tl } - \__kernel_ior_open:No \g_@@_internal_ior \l_@@_full_name_tl - \ior_if_eof:NF \g_@@_internal_ior { #2 { \prg_break: } } - } -% \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% % \begin{variable}{\g_@@_internal_ior} -% A reserved stream to test for file existence (if required), and for -% opening a shell. +% A reserved stream to test for opening a shell. % \begin{macrocode} \ior_new:N \g_@@_internal_ior % \end{macrocode} @@ -3226,30 +3152,6 @@ { \prg_return_true: } } % \end{macrocode} -% Where the primitive is not available, issue an error: this is a little -% more conservative than absolutely needed, but does work. -% \begin{macrocode} -\cs_if_exist:NF \tex_filesize:D - { - \cs_set_protected:Npn \@@_get_details:nnN #1#2#3 - { - \tl_clear:N #3 - \msg_error:nnx - { kernel } { primitive-not-available } - { - \token_to_str:N \(pdf)file - \str_case:nn {#2} - { - { hex_dump } { dump } - { mdfive_hash } { mdfivesum } - { timestamp } { moddate } - { size } { size } - } - } - \prg_return_false: - } - } -% \end{macrocode} % \end{macro} % \end{macro} % @@ -3328,17 +3230,6 @@ } } \cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D -\cs_if_exist:NF \@@_timestamp:n - { - \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3 - { p , T , F , TF } - { - \msg_expandable_error:nnn - { kernel } { primitive-not-available } - { \(pdf)filemoddate } - \prg_return_false: - } - } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 581b7a72270..80981884fb5 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 1fcd33b8d93..af1b0b98be5 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-11} +% \date{Released 2023-05-15} % \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 b18b39218d7..e5c3a0f5a2e 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 635ebbcdde5..17e21937137 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 6eb83223abf..fcc2b130e55 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 99824f74a88..43f1e9e0be3 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index ca1372da430..91ff16141e5 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index ca76fecb2cb..ee89eacb406 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index d3969b735c0..082dbaf8bad 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 76c797e2eb2..c4c718c72ac 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 3ece03051c4..98584be2f6a 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 7c2b5cf9577..06630644e0a 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-11} +% \date{Released 2023-05-15} % \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 991a56ec7a1..24ac6a91151 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 1d14dba2b62..88c323e415b 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 7311ad53584..5836d5bee73 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index ca095b03595..f7d065d8742 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 3cc0e52578c..b671f5e4eda 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 2bd0c676f02..3542167a7ad 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 60645c83638..64a301d906b 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1113,26 +1113,14 @@ % The use of \cs{s_@@_mark} here prevents loss of braces from the key % argument. % \begin{macrocode} - \cs_if_exist:NTF \tex_expanded:D + \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 { - \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 + \__kernel_exp_not:w \tex_expanded:D { - \__kernel_exp_not:w \tex_expanded:D - { - { - \@@_loop_active:nnw {##1} {##2} - \s_@@_mark ##3 #1 \s_@@_tail #1 - } - } - } - } - { - \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 - { - \group_align_safe_begin: - \@@_loop_active:nnw {##1} {##2} - \s_@@_mark ##3 #1 \s_@@_tail #1 - \group_align_safe_end: + { + \@@_loop_active:nnw {##1} {##2} + \s_@@_mark ##3 #1 \s_@@_tail #1 + } } } \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn @@ -1415,9 +1403,7 @@ \@@_loop_other:nnw {##2} } } - \cs_if_exist:NTF \tex_expanded:D - { \@@_tmp:w { } { } } - { \@@_tmp:w \group_align_safe_end: \group_align_safe_begin: } + \@@_tmp:w { } { } \group_end: % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index 0b228b43338..aa144fdb29b 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index e73b5cbe7c7..048fd472b89 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index bb739840dc6..c256def1160 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -2077,11 +2077,6 @@ { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. } \msg_new:nnn { kernel } { zero-step } { Zero~step~size~for~function~#1. } -\cs_if_exist:NF \tex_expanded:D - { - \msg_new:nnn { kernel } { e-type } - { #1 ~ in~e-type~argument } - } % \end{macrocode} % % Messages used by the \enquote{\texttt{show}} functions. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 1470671ec6c..09ec8a83ba8 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1333,72 +1333,6 @@ \tex_fi:D \tex_fi:D % \end{macrocode} -% That is also true for the \LuaTeX{} primitives under \LaTeXe{} -% (depending on the format-building date). There are a few primitives -% that get the right names anyway so are missing here! -% \begin{macrocode} -\tex_ifdefined:D \luatexsuppressfontnotfounderror - \tex_let:D \tex_alignmark:D \luatexalignmark - \tex_let:D \tex_aligntab:D \luatexaligntab - \tex_let:D \tex_attribute:D \luatexattribute - \tex_let:D \tex_attributedef:D \luatexattributedef - \tex_let:D \tex_catcodetable:D \luatexcatcodetable - \tex_let:D \tex_clearmarks:D \luatexclearmarks - \tex_let:D \tex_crampeddisplaystyle:D \luatexcrampeddisplaystyle - \tex_let:D \tex_crampedscriptscriptstyle:D - \luatexcrampedscriptscriptstyle - \tex_let:D \tex_crampedscriptstyle:D \luatexcrampedscriptstyle - \tex_let:D \tex_crampedtextstyle:D \luatexcrampedtextstyle - \tex_let:D \tex_fontid:D \luatexfontid - \tex_let:D \tex_formatname:D \luatexformatname - \tex_let:D \tex_gleaders:D \luatexgleaders - \tex_let:D \tex_initcatcodetable:D \luatexinitcatcodetable - \tex_let:D \tex_latelua:D \luatexlatelua - \tex_let:D \tex_luaescapestring:D \luatexluaescapestring - \tex_let:D \tex_luafunction:D \luatexluafunction - \tex_let:D \tex_mathstyle:D \luatexmathstyle - \tex_let:D \tex_nokerns:D \luatexnokerns - \tex_let:D \tex_noligs:D \luatexnoligs - \tex_let:D \tex_outputbox:D \luatexoutputbox - \tex_let:D \tex_pageleftoffset:D \luatexpageleftoffset - \tex_let:D \tex_pagetopoffset:D \luatexpagetopoffset - \tex_let:D \tex_postexhyphenchar:D \luatexpostexhyphenchar - \tex_let:D \tex_posthyphenchar:D \luatexposthyphenchar - \tex_let:D \tex_preexhyphenchar:D \luatexpreexhyphenchar - \tex_let:D \tex_prehyphenchar:D \luatexprehyphenchar - \tex_let:D \tex_savecatcodetable:D \luatexsavecatcodetable - \tex_let:D \tex_scantextokens:D \luatexscantextokens - \tex_let:D \tex_suppressifcsnameerror:D - \luatexsuppressifcsnameerror - \tex_let:D \tex_suppresslongerror:D \luatexsuppresslongerror - \tex_let:D \tex_suppressmathparerror:D - \luatexsuppressmathparerror - \tex_let:D \tex_suppressoutererror:D \luatexsuppressoutererror - \tex_let:D \tex_Uchar:D \luatexUchar - \tex_let:D \tex_suppressfontnotfounderror:D - \luatexsuppressfontnotfounderror -% \end{macrocode} -% Which also covers those slightly odd ones. -% \begin{macrocode} - \tex_let:D \tex_bodydir:D \luatexbodydir - \tex_let:D \tex_boxdir:D \luatexboxdir - \tex_let:D \tex_leftghost:D \luatexleftghost - \tex_let:D \tex_localbrokenpenalty:D \luatexlocalbrokenpenalty - \tex_let:D \tex_localinterlinepenalty:D - \luatexlocalinterlinepenalty - \tex_let:D \tex_localleftbox:D \luatexlocalleftbox - \tex_let:D \tex_localrightbox:D \luatexlocalrightbox - \tex_let:D \tex_mathdir:D \luatexmathdir - \tex_let:D \tex_pagebottomoffset:D \luatexpagebottomoffset - \tex_let:D \tex_pagedir:D \luatexpagedir - \tex_let:D \tex_pageheight:D \luatexpageheight - \tex_let:D \tex_pagerightoffset:D \luatexpagerightoffset - \tex_let:D \tex_pagewidth:D \luatexpagewidth - \tex_let:D \tex_pardir:D \luatexpardir - \tex_let:D \tex_rightghost:D \luatexrightghost - \tex_let:D \tex_textdir:D \luatextextdir -\tex_fi:D -% \end{macrocode} % Only \pdfTeX{} and \LuaTeX{} define \tn{pdfmapfile} and \tn{pdfmapline}: % Tidy up the fact that some format-building processes leave % a couple of questionable decisions about that! @@ -1440,16 +1374,6 @@ \tex_fi:D \tex_endgroup:D % \end{macrocode} -% Up to v0.80, \LuaTeX{} defines the \pdfTeX{} version data: rather -% confusing. Removing them means that \cs{tex_pdftexversion:D} is -% a marker for \pdfTeX{} alone: useful in engine-dependent code later. -% \begin{macrocode} -\tex_ifdefined:D \tex_luatexversion:D - \tex_let:D \tex_pdftexbanner:D \tex_undefined:D - \tex_let:D \tex_pdftexrevision:D \tex_undefined:D - \tex_let:D \tex_pdftexversion:D \tex_undefined:D -\tex_fi:D -% \end{macrocode} % \pkg{cslatex} moves a couple of primitives which we recover here; as there % is no other marker, we can only work by looking for the names. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx index f3e7834b6e7..0a76fc54e0b 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 83b2904740f..c1d42e10bee 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 297fcd877fd..341b46bdff5 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1087,66 +1087,31 @@ % have to make sure that the behaviour is as good as possible. Using a space % before the opening brace we get the correct brace stripping behaviour for % most of the key--value parsers available in \LaTeX. -% If \cs{tex_expanded:D} is available this function makes use of it, so there -% are two different implementations here. They both start with -% \cs{__kernel_exp_not:w} to start the expansion context to expand in two -% steps. If the \meta{property list} is empty they just leave an empty set of -% braces in the input stream for \cs{__kernel_exp_not:w}. -% \begin{macrocode} -\cs_if_exist:NTF \tex_expanded:D - { -% \end{macrocode} -% The variant using \cs{tex_expanded:D} can just iterate over the +% Iterate over the % \meta{property list} and remove the leading comma afterwards. Only the value % has to be protected in \cs{__kernel_exp_not:w} as the property name is % always a string. After the loop the leading comma is removed by % \cs{use_none:n} and afterwards \cs{__kernel_exp_not:w} eventually finds the % opening brace of its argument. % \begin{macrocode} - \cs_new:Npn \prop_to_keyval:N #1 - { - \__kernel_exp_not:w - \prop_if_empty:NTF #1 - { {} } - { - \exp_after:wN \exp_after:wN \exp_after:wN +\cs_new:Npn \prop_to_keyval:N #1 + { + \__kernel_exp_not:w + \prop_if_empty:NTF #1 + { {} } + { + \exp_after:wN \exp_after:wN \exp_after:wN + { + \tex_expanded:D { - \tex_expanded:D - { - \__kernel_exp_not:w { \use_none:n } - \prop_map_function:NN #1 \@@_to_keyval:nn - } + \__kernel_exp_not:w { \use_none:n } + \prop_map_function:NN #1 \@@_to_keyval:nn } - } - } - \cs_new:Npn \@@_to_keyval:nn #1#2 - { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } } - } -% \end{macrocode} -% The other variant will iterate over the \meta{property list} and has to -% output the result in a group after the marker -% \cs{@@_to_keyval_exp_after:wN}. As a result this is considerably slower than -% the \cs{tex_expanded:D} using variant as it has to read the entire contents -% of the \meta{property list} for each item. Since the marker is just -% \cs{exp_after:wN} with another name, after the loop the leading comma is -% gobbled by \cs{use_none:n}, leaving the result as the argument to -% \cs{__kernel_exp_not:w}. -% \begin{macrocode} - { - \cs_new:Npn \prop_to_keyval:N #1 - { - \__kernel_exp_not:w - \prop_if_empty:NTF #1 - { {} } - { - \prop_map_function:NN #1 \@@_to_keyval:nnw - \@@_to_keyval_exp_after:wN { \use_none:n } - } - } - \cs_new_eq:NN \@@_to_keyval_exp_after:wN \exp_after:wN - \cs_new:Npn \@@_to_keyval:nnw #1#2#3 \@@_to_keyval_exp_after:wN #4 - { #3 \@@_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } } + } + } } +\cs_new:Npn \@@_to_keyval:nn #1#2 + { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } } % \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 fda47356efc..67a431db2f3 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 46629fc8d63..629acfbf44a 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index d5d0a521460..601083909e5 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 808807483ac..8b2af6bb354 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 72db7d8c42d..5f2b7335bc6 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index f71d2cb47e7..5608305e283 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index e199e98b94c..bb7c1e9f23b 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 6f64b5ea4c3..e7280bb33c9 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index 0dc9db24ed8..b0aa1ceba96 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx index 958ac7370e6..d46ab15e389 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index 799d676b13f..e6c967ca0f0 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index 11fe78a2025..5190bd4d8e4 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 127aaaab2a9..2e84945989e 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 6f0eb9f39e1..958273893be 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -2882,49 +2882,18 @@ % empty result. The result is returned within the \tn{unexpanded} primitive. % The approach here is to use \cs{if_false:} to allow us to use |}| as % the closing delimiter: this is the only safe choice, as any other token -% would not be able to parse it's own code. If the \tn{expanded} primitive -% is available it is used to get a fast and safe code variant in which we -% don't have to ensure that the left-most token is an internal to not break -% in an |f|-type expansion. If \tn{expanded} isn't available, using a marker, -% we can see if what we are grabbing is exactly the marker, or there is -% anything else to deal with. If there is, there is a loop. If not, tidy up -% and leave the item in the output stream. More detail in +% would not be able to parse it's own code. More detail in % \url{http://tex.stackexchange.com/a/70168}. % \begin{macrocode} -\cs_if_exist:NTF \tex_expanded:D +\cs_new:Npn \tl_head:n #1 { - \cs_new:Npn \tl_head:n #1 - { - \__kernel_exp_not:w \tex_expanded:D - { { \if_false: { \fi: \@@_head_aux:n #1 { } } } } - } - \cs_new:Npn \@@_head_aux:n #1 - { - \__kernel_exp_not:w {#1} - \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi: - } + \__kernel_exp_not:w \tex_expanded:D + { { \if_false: { \fi: \@@_head_aux:n #1 { } } } } } +\cs_new:Npn \@@_head_aux:n #1 { - \cs_new:Npn \tl_head:n #1 - { - \__kernel_exp_not:w - \if_false: { \fi: \@@_head_auxi:nw #1 { } \s_@@_stop } - } - \cs_new:Npn \@@_head_auxi:nw #1#2 \s_@@_stop - { - \exp_after:wN \@@_head_auxii:n \exp_after:wN { - \if_false: } \fi: {#1} - } - \exp_args:Nno \use:n - { \cs_new:Npn \@@_head_auxii:n #1 } - { - \@@_if_empty_if:o { \use_none:n #1 } - \exp_after:wN \use_ii:nnn - \fi: - \use_ii:nn - {#1} - { \if_false: { \fi: \@@_head_auxi:nw #1 } } - } + \__kernel_exp_not:w {#1} + \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi: } \cs_generate_variant:Nn \tl_head:n { V , v , f } \cs_new:Npn \tl_head:w #1#2 \q_stop {#1} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 77e94d5b25f..7b5467246f4 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-11} +% \date{Released 2023-05-15} % % \maketitle % @@ -1584,20 +1584,6 @@ \exp_after:wN \exp_end: \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f: } - \cs_if_exist:NF \tex_expanded:D - { - \cs_new_eq:NN \@@_generate_auxii:nnw \@@_generate_aux:nnw - \cs_gset:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \if_int_compare:w #2 = 13 \exp_stop_f: - \msg_expandable_error:nn { char } { active } - \else: - \@@_generate_auxii:nnw {#1} {#2} - \fi: - \exp_end: - } - } \else: % \end{macrocode} % For engines where \tn{Ucharcat} isn't available or emulated, we have diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index fc3a2ba5e07..899937914eb 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-11} +% \date{Released 2023-05-15} % % \maketitle % diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 2630452ff12..583482f5ba5 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-11}% +\def\ExplFileDate{2023-05-15}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -129,23 +129,6 @@ L3 programming layer (code)% }% %% File: l3bootstrap.dtx -\begingroup - \expandafter\ifx\csname directlua\endcsname\relax - \else - \directlua{% - local i - local t = { } - for _,i in pairs(tex.extraprimitives("luatex")) do - if string.match(i,"^U") then - if not string.match(i,"^Uchar$") then %$ - table.insert(t,i) - end - end - end - tex.enableprimitives("", t) - }% - \fi -\endgroup \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname pdfstrcmp\endcsname\relax \let\pdfstrcmp\strcmp @@ -183,27 +166,23 @@ \def\ShortText{Required primitives not found}% \def\LongText% {% - The L3 programming layer requires the e-TeX primitives and additional - \LineBreak functionality as described in the README file. + The L3 programming layer requires the e-TeX primitives and the + \LineBreak 'pdfTeX extensions' as described in the README file. \LineBreak These are available in the engines\LineBreak - - pdfTeX v1.40.0\LineBreak - - XeTeX v0.99992\LineBreak + - pdfTeX v1.40.20\LineBreak + - XeTeX v0.999991\LineBreak - LuaTeX v1.10\LineBreak - - e-(u)pTeX mid-2012\LineBreak + - e-(u)pTeX v3.8.2\LineBreak - Prote (2021)\LineBreak or later.\LineBreak \LineBreak }% \ifnum0% - \expandafter\ifx\csname expanded\endcsname\relax - \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi + \expandafter\ifx\csname luatexversion\endcsname\relax + \expandafter\ifx\csname expanded\endcsname\relax\else 1\fi \else - \expandafter\ifx\csname luatexversion\endcsname\relax - 1% - \else - \ifnum\luatexversion<110 \else 1\fi - \fi + \ifnum\luatexversion<110 \else 1\fi \fi =0 % \newlinechar`\^^J % @@ -229,20 +208,6 @@ Type H <return> for immediate help}\def~{\errmessage{% }% \fi \next -\begingroup - \def\@tempa{LaTeX2e}% - \def\next{}% - \ifx\fmtname\@tempa - \expandafter\ifx\csname extrafloats\endcsname\relax - \def\next - {% - \RequirePackage{etex}% - \csname reserveinserts\endcsname{32}% - }% - \fi - \fi -\expandafter\endgroup -\next \protected\edef\ExplSyntaxOff {% \protected\def\noexpand\ExplSyntaxOff{}% @@ -1389,64 +1354,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \tex_fi:D \tex_fi:D \tex_fi:D -\tex_ifdefined:D \luatexsuppressfontnotfounderror - \tex_let:D \tex_alignmark:D \luatexalignmark - \tex_let:D \tex_aligntab:D \luatexaligntab - \tex_let:D \tex_attribute:D \luatexattribute - \tex_let:D \tex_attributedef:D \luatexattributedef - \tex_let:D \tex_catcodetable:D \luatexcatcodetable - \tex_let:D \tex_clearmarks:D \luatexclearmarks - \tex_let:D \tex_crampeddisplaystyle:D \luatexcrampeddisplaystyle - \tex_let:D \tex_crampedscriptscriptstyle:D - \luatexcrampedscriptscriptstyle - \tex_let:D \tex_crampedscriptstyle:D \luatexcrampedscriptstyle - \tex_let:D \tex_crampedtextstyle:D \luatexcrampedtextstyle - \tex_let:D \tex_fontid:D \luatexfontid - \tex_let:D \tex_formatname:D \luatexformatname - \tex_let:D \tex_gleaders:D \luatexgleaders - \tex_let:D \tex_initcatcodetable:D \luatexinitcatcodetable - \tex_let:D \tex_latelua:D \luatexlatelua - \tex_let:D \tex_luaescapestring:D \luatexluaescapestring - \tex_let:D \tex_luafunction:D \luatexluafunction - \tex_let:D \tex_mathstyle:D \luatexmathstyle - \tex_let:D \tex_nokerns:D \luatexnokerns - \tex_let:D \tex_noligs:D \luatexnoligs - \tex_let:D \tex_outputbox:D \luatexoutputbox - \tex_let:D \tex_pageleftoffset:D \luatexpageleftoffset - \tex_let:D \tex_pagetopoffset:D \luatexpagetopoffset - \tex_let:D \tex_postexhyphenchar:D \luatexpostexhyphenchar - \tex_let:D \tex_posthyphenchar:D \luatexposthyphenchar - \tex_let:D \tex_preexhyphenchar:D \luatexpreexhyphenchar - \tex_let:D \tex_prehyphenchar:D \luatexprehyphenchar - \tex_let:D \tex_savecatcodetable:D \luatexsavecatcodetable - \tex_let:D \tex_scantextokens:D \luatexscantextokens - \tex_let:D \tex_suppressifcsnameerror:D - \luatexsuppressifcsnameerror - \tex_let:D \tex_suppresslongerror:D \luatexsuppresslongerror - \tex_let:D \tex_suppressmathparerror:D - \luatexsuppressmathparerror - \tex_let:D \tex_suppressoutererror:D \luatexsuppressoutererror - \tex_let:D \tex_Uchar:D \luatexUchar - \tex_let:D \tex_suppressfontnotfounderror:D - \luatexsuppressfontnotfounderror - \tex_let:D \tex_bodydir:D \luatexbodydir - \tex_let:D \tex_boxdir:D \luatexboxdir - \tex_let:D \tex_leftghost:D \luatexleftghost - \tex_let:D \tex_localbrokenpenalty:D \luatexlocalbrokenpenalty - \tex_let:D \tex_localinterlinepenalty:D - \luatexlocalinterlinepenalty - \tex_let:D \tex_localleftbox:D \luatexlocalleftbox - \tex_let:D \tex_localrightbox:D \luatexlocalrightbox - \tex_let:D \tex_mathdir:D \luatexmathdir - \tex_let:D \tex_pagebottomoffset:D \luatexpagebottomoffset - \tex_let:D \tex_pagedir:D \luatexpagedir - \tex_let:D \tex_pageheight:D \luatexpageheight - \tex_let:D \tex_pagerightoffset:D \luatexpagerightoffset - \tex_let:D \tex_pagewidth:D \luatexpagewidth - \tex_let:D \tex_pardir:D \luatexpardir - \tex_let:D \tex_rightghost:D \luatexrightghost - \tex_let:D \tex_textdir:D \luatextextdir -\tex_fi:D \tex_ifnum:D 0 \tex_ifdefined:D \tex_pdftexversion:D 1 \tex_fi:D \tex_ifdefined:D \tex_luatexversion:D 1 \tex_fi:D @@ -1480,11 +1387,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \tex_global:D \tex_let:D \tex_year:D \tex_undefined:D \tex_fi:D \tex_endgroup:D -\tex_ifdefined:D \tex_luatexversion:D - \tex_let:D \tex_pdftexbanner:D \tex_undefined:D - \tex_let:D \tex_pdftexrevision:D \tex_undefined:D - \tex_let:D \tex_pdftexversion:D \tex_undefined:D -\tex_fi:D \tex_ifdefined:D \orieveryjob \tex_let:D \tex_everyjob:D \orieveryjob \tex_fi:D @@ -1615,9 +1517,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \l__exp_internal_tl } \cs_set:Npn \use:e #1 { \tex_expanded:D {#1} } -\tex_ifdefined:D \tex_expanded:D \tex_else:D - \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} } -\tex_fi:D \cs_set:Npn \use:n #1 {#1} \cs_set:Npn \use:nn #1#2 {#1#2} \cs_set:Npn \use:nnn #1#2#3 {#1#2#3} @@ -2372,15 +2271,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__exp_arg_next:Nnn \cs:w #3 \cs_end: {#1} {#2} } \cs_new:Npn \::o #1 \::: #2#3 { \exp_after:wN \__exp_arg_next:nnn \exp_after:wN {#3} {#1} {#2} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \::e #1 \::: #2#3 - { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } } - } - { - \cs_new:Npn \::e #1 \::: #2#3 - { \exp_args:Ne \__exp_arg_next:nnn {#3} {#1} {#2} } - } +\cs_new:Npn \::e #1 \::: #2#3 + { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } } \cs_new:Npn \::f #1 \::: #2#3 { \exp_after:wN \__exp_arg_next:nnn @@ -2442,18 +2334,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN {#3} } \cs_new:Npn \exp_args:NNNo #1#2#3#4 { \exp_after:wN #1 \exp_after:wN#2 \exp_after:wN #3 \exp_after:wN {#4} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_args:Ne #1#2 - { \exp_after:wN #1 \tex_expanded:D { {#2} } } - } - { - \cs_new:Npn \exp_args:Ne #1#2 - { - \exp_after:wN #1 \exp_after:wN - { \exp:w \__exp_e:nn {#2} { } } - } - } +\cs_new:Npn \exp_args:Ne #1#2 + { \exp_after:wN #1 \tex_expanded:D { {#2} } } \cs_new:Npn \exp_args:Nf #1#2 { \exp_after:wN #1 \exp_after:wN { \exp:w \exp_end_continue_f:w #2 } } \cs_new:Npn \exp_args:Nv #1#2 @@ -2478,16 +2360,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #2 \exp_after:wN { \exp:w \__exp_eval_register:c {#3} } } -\cs_if_exist:NTF \tex_expanded:D +\cs_new:Npn \exp_args:NNe #1#2#3 { - \cs_new:Npn \exp_args:NNe #1#2#3 - { - \exp_after:wN #1 - \exp_after:wN #2 - \tex_expanded:D { {#3} } - } + \exp_after:wN #1 + \exp_after:wN #2 + \tex_expanded:D { {#3} } } - { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } } \cs_new:Npn \exp_args:NNf #1#2#3 { \exp_after:wN #1 @@ -2575,15 +2453,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__exp_arg_last_unbraced:nn \exp_after:wN { \exp:w \__exp_eval_register:c {#2} } {#1} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \::e_unbraced \::: #1#2 - { \tex_expanded:D { \exp_not:n {#1} #2 } } - } - { - \cs_new:Npn \::e_unbraced \::: #1#2 - { \exp:w \__exp_e:nn {#2} {#1} } - } +\cs_new:Npn \::e_unbraced \::: #1#2 + { \tex_expanded:D { \exp_not:n {#1} #2 } } \cs_new:Npn \::f_unbraced \::: #1#2 { \exp_after:wN \__exp_arg_last_unbraced:nn @@ -2599,12 +2470,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN #1 \exp:w \__exp_eval_register:N #2 } \cs_new:Npn \exp_last_unbraced:Nv #1#2 { \exp_after:wN #1 \exp:w \__exp_eval_register:c {#2} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_last_unbraced:Ne #1#2 - { \exp_after:wN #1 \tex_expanded:D {#2} } - } - { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } } +\cs_new:Npn \exp_last_unbraced:Ne #1#2 + { \exp_after:wN #1 \tex_expanded:D {#2} } \cs_new:Npn \exp_last_unbraced:Nf #1#2 { \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 } \cs_new:Npn \exp_last_unbraced:NNo #1#2#3 @@ -2667,15 +2534,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_eq:NN \__kernel_exp_not:w \tex_unexpanded:D \cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: } \cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} } -\cs_if_exist:NTF \tex_expanded:D - { - \cs_new:Npn \exp_not:e #1 - { \__kernel_exp_not:w \tex_expanded:D { {#1} } } - } - { - \cs_new:Npn \exp_not:e - { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: } - } +\cs_new:Npn \exp_not:e #1 + { \__kernel_exp_not:w \tex_expanded:D { {#1} } } \cs_new:Npn \exp_not:f #1 { \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } } \cs_new:Npn \exp_not:V #1 @@ -2698,282 +2558,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \cs_new:Npn \exp_end_continue_f:nw #1 { `^^@ #1 } \group_end: -\cs_if_exist:NF \tex_expanded:D - { - \cs_new:Npn \__exp_e:nn #1 - { - \if_false: { \fi: - \tl_if_head_is_N_type:nTF {#1} - { \__exp_e:N } - { - \tl_if_head_is_group:nTF {#1} - { \__exp_e_group:n } - { - \tl_if_empty:nTF {#1} - { \exp_after:wN \__exp_e_end:nn } - { \exp_after:wN \__exp_e_space:nn } - \exp_after:wN { \if_false: } \fi: - } - } - #1 - } - } - \cs_new:Npn \__exp_e_end:nn #1#2 { \exp_end: #2 } - \cs_new:Npn \__exp_e_space:nn #1#2 - { \exp_args:Nf \__exp_e:nn {#1} { #2 ~ } } - \cs_new:Npn \__exp_e_group:n #1 - { - \exp_after:wN \__exp_e_put:nn - \exp_after:wN { \exp_after:wN { \exp_after:wN { - \exp:w \if_false: } \fi: \__exp_e:nn {#1} { } } } - } - \cs_new:Npn \__exp_e_put:nn #1 - { - \exp_args:NNo \exp_args:No \__exp_e_put:nnn - { \tl_head:n {#1} } {#1} - } - \cs_new:Npn \__exp_e_put:nnn #1#2#3 - { \exp_args:No \__exp_e:nn { \use_none:n #2 } { #3 #1 } } - \cs_new:Npn \__exp_e:N #1 - { - \exp_after:wN \__exp_e:Nnn - \exp_after:wN #1 - \exp_after:wN { \if_false: } \fi: - } - \cs_new:Npn \__exp_e:Nnn #1 - { - \if_case:w - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi: - \token_if_protected_macro:NT #1 { 1 ~ } - \token_if_protected_long_macro:NT #1 { 1 ~ } - \if_meaning:w \exp_not:n #1 2 ~ \fi: - \if_meaning:w \exp_not:N #1 3 ~ \fi: - \if_meaning:w \tex_the:D #1 4 ~ \fi: - \if_meaning:w \tex_primitive:D #1 5 ~ \fi: - 0 ~ - \exp_after:wN \__exp_e_expandable:Nnn - \or: \exp_after:wN \__exp_e_protected:Nnn - \or: \exp_after:wN \__exp_e_unexpanded:Nnn - \or: \exp_after:wN \__exp_e_noexpand:Nnn - \or: \exp_after:wN \__exp_e_the:Nnn - \or: \exp_after:wN \__exp_e_primitive:Nnn - \fi: - #1 - } - \cs_new:Npn \__exp_e_protected:Nnn #1#2#3 - { \__exp_e:nn {#2} { #3 #1 } } - \cs_new:Npn \__exp_e_expandable:Nnn #1#2 - { \exp_args:No \__exp_e:nn { #1 #2 } } - \cs_new:Npn \__exp_e_primitive:Nnn #1#2 - { - \if_false: { \fi: - \tl_if_head_is_N_type:nTF {#2} - { \__exp_e_primitive_aux:NNw #1 } - { - \msg_expandable_error:nnn { kernel } { e-type } - { Missing~primitive~name } - \__exp_e_primitive_aux:NNw #1 \c_empty_tl - } - #2 - } - } - \cs_new:Npn \__exp_e_primitive_aux:NNw #1#2 - { - \exp_after:wN \__exp_e_primitive_aux:NNnn - \exp_after:wN #1 - \exp_after:wN #2 - \exp_after:wN { \if_false: } \fi: - } - \cs_new:Npn \__exp_e_primitive_aux:NNnn #1#2 - { - \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 } - { - { unexpanded } { \__exp_e_unexpanded:Nnn \exp_not:n } - { noexpand } { \__exp_e_noexpand:Nnn \exp_not:N } - { the } { \__exp_e_the:Nnn \tex_the:D } - { - \sys_if_engine_xetex:T { pdf } - \sys_if_engine_luatex:T { pdf } - primitive - } { \__exp_e_primitive:Nnn #1 } - } - { \__exp_e_primitive_other:NNnn #1 #2 } - } - \cs_new:Npn \__exp_e_primitive_other:NNnn #1#2#3 - { - \exp_args:No \__exp_e_primitive_other_aux:nNNnn - { #1 #2 #3 } - #1 #2 {#3} - } - \cs_new:Npn \__exp_e_primitive_other_aux:nNNnn #1#2#3#4#5 - { - \str_if_eq:nnTF {#1} { #2 #3 #4 } - { \__exp_e:nn {#4} { #5 #2 #3 } } - { \__exp_e:nn {#1} {#5} } - } - \cs_new:Npn \__exp_e_noexpand:Nnn #1#2 - { - \tl_if_head_is_N_type:nTF {#2} - { \__exp_e_put:nn } { \__exp_e:nn } {#2} - } - \cs_new:Npn \__exp_e_unexpanded:Nnn #1 { \__exp_e_unexpanded:nn } - \cs_new:Npn \__exp_e_unexpanded:nn #1 - { - \tl_if_head_is_N_type:nTF {#1} - { - \exp_args:Nf \__exp_e_unexpanded:nn - { \__exp_e_unexpanded:nN {#1} #1 } - } - { - \tl_if_head_is_group:nTF {#1} - { \__exp_e_put:nn } - { - \tl_if_empty:nTF {#1} - { - \msg_expandable_error:nnn - { kernel } { e-type } - { \unexpanded missing~brace } - \__exp_e_end:nn - } - { \exp_args:Nf \__exp_e_unexpanded:nn } - } - {#1} - } - } - \cs_new:Npn \__exp_e_unexpanded:nN #1#2 - { - \exp_after:wN \if_meaning:w \exp_not:N #2 #2 - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - \token_if_eq_catcode:NNTF #2 \c_space_token - { \exp_stop_f: } - { - \token_if_eq_meaning:NNTF #2 \scan_stop: - { \exp_stop_f: } - { - \msg_expandable_error:nnn - { kernel } { e-type } - { \unexpanded missing~brace } - { } - } - } - } - { - \token_if_eq_meaning:NNTF #2 \exp_not:N - { - \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 } - { \__exp_e_unexpanded:N } - } - { \exp_after:wN \exp_stop_f: #2 } - } - } - \cs_new:Npn \__exp_e_unexpanded:N #1 - { - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else: - \exp_after:wN \use_i:nn - \fi: - \exp_stop_f: #1 - } - \cs_new:Npn \__exp_e_the:Nnn #1#2 - { - \tl_if_head_is_N_type:nTF {#2} - { \if_false: { \fi: \__exp_e_the:N #2 } } - { \exp_args:No \__exp_e:nn { \tex_the:D #2 } } - } - \cs_new:Npn \__exp_e_the:N #1 - { - \exp_after:wN \if_meaning:w \exp_not:N #1 #1 - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - \if_meaning:w \tex_toks:D #1 - \exp_after:wN \__exp_e_the_toks:wnn \int_value:w - \exp_after:wN \__exp_e_the_toks:n - \exp_after:wN { \int_value:w \if_false: } \fi: - \else: - \__exp_e_if_toks_register:NTF #1 - { \exp_after:wN \__exp_e_the_toks_reg:N } - { - \exp_after:wN \__exp_e:nn \exp_after:wN { - \tex_the:D \if_false: } \fi: - } - \exp_after:wN #1 - \fi: - } - { - \exp_after:wN \__exp_e_the:Nnn \exp_after:wN ? - \exp_after:wN { \exp:w \if_false: } \fi: - \exp_after:wN \exp_end: #1 - } - } - \cs_new:Npn \__exp_e_the_toks_reg:N #1 - { - \exp_after:wN \__exp_e_put:nn \exp_after:wN { - \exp_after:wN { - \tex_the:D \if_false: } \fi: #1 } - } - \cs_new:Npn \__exp_e_the_toks:wnn #1; #2 - { - \exp_args:No \__exp_e_put:nnn - { \tex_the:D \tex_toks:D #1 } { ? #2 } - } - \cs_new:Npn \__exp_e_the_toks:n #1 - { - \tl_if_head_is_N_type:nTF {#1} - { \exp_after:wN \__exp_e_the_toks:N \if_false: { \fi: #1 } } - { ; {#1} } - } - \cs_new:Npn \__exp_e_the_toks:N #1 - { - \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f: - \exp_after:wN \use_i:nn - \else: - \exp_after:wN \use_ii:nn - \fi: - { - #1 - \exp_after:wN \__exp_e_the_toks:n - \exp_after:wN { \if_false: } \fi: - } - { - \exp_after:wN ; - \exp_after:wN { \if_false: } \fi: #1 - } - } - \prg_new_conditional:Npnn \__exp_e_if_toks_register:N #1 { TF } - { - \token_if_toks_register:NTF #1 { \prg_return_true: } - { - \cs_if_exist:cTF - { - __exp_e_the_ - \exp_after:wN \cs_to_str:N - \token_to_meaning:N #1 - : - } { \prg_return_true: } { \prg_return_false: } - } - } - \cs_new_eq:NN \__exp_e_the_XeTeXinterchartoks: ? - \cs_new_eq:NN \__exp_e_the_errhelp: ? - \cs_new_eq:NN \__exp_e_the_everycr: ? - \cs_new_eq:NN \__exp_e_the_everydisplay: ? - \cs_new_eq:NN \__exp_e_the_everyeof: ? - \cs_new_eq:NN \__exp_e_the_everyhbox: ? - \cs_new_eq:NN \__exp_e_the_everyjob: ? - \cs_new_eq:NN \__exp_e_the_everymath: ? - \cs_new_eq:NN \__exp_e_the_everypar: ? - \cs_new_eq:NN \__exp_e_the_everyvbox: ? - \cs_new_eq:NN \__exp_e_the_output: ? - \cs_new_eq:NN \__exp_e_the_pdfpageattr: ? - \cs_new_eq:NN \__exp_e_the_pdfpageresources: ? - \cs_new_eq:NN \__exp_e_the_pdfpagesattr: ? - \cs_new_eq:NN \__exp_e_the_pdfpkmode: ? - } \cs_new_eq:NN \s__cs_mark \scan_stop: \cs_new_eq:NN \s__cs_stop \scan_stop: \cs_new:Npn \q__cs_recursion_stop { \q__cs_recursion_stop } @@ -3214,22 +2798,8 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new_protected:Npn \__cs_generate_internal_test_aux:w ##1 #1 ##2 \s__cs_mark ##3 ##4 \s__cs_stop {##3} - \cs_if_exist:NTF \tex_expanded:D - { - \cs_new_eq:NN \__cs_generate_internal_test:Nw - \__cs_generate_internal_test_aux:w - } - { - \cs_new_protected:Npn \__cs_generate_internal_test:Nw ##1 - { - \if_meaning:w \tex_expanded:D ##1 - \exp_after:wN \__cs_generate_internal_test_aux:w - \exp_after:wN #1 - \else: - \exp_after:wN \__cs_generate_internal_test_aux:w - \fi: - } - } + \cs_new_eq:NN \__cs_generate_internal_test:Nw + \__cs_generate_internal_test_aux:w } \exp_args:No \__cs_tmp:w { \token_to_str:N p } \cs_new_protected:Npn \__cs_generate_internal_one_go:NNn #1#2#3 @@ -4415,40 +3985,15 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__tl_trim_mark: {} } \__tl_tmp:w { ~ } -\cs_if_exist:NTF \tex_expanded:D +\cs_new:Npn \tl_head:n #1 { - \cs_new:Npn \tl_head:n #1 - { - \__kernel_exp_not:w \tex_expanded:D - { { \if_false: { \fi: \__tl_head_aux:n #1 { } } } } - } - \cs_new:Npn \__tl_head_aux:n #1 - { - \__kernel_exp_not:w {#1} - \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi: - } + \__kernel_exp_not:w \tex_expanded:D + { { \if_false: { \fi: \__tl_head_aux:n #1 { } } } } } +\cs_new:Npn \__tl_head_aux:n #1 { - \cs_new:Npn \tl_head:n #1 - { - \__kernel_exp_not:w - \if_false: { \fi: \__tl_head_auxi:nw #1 { } \s__tl_stop } - } - \cs_new:Npn \__tl_head_auxi:nw #1#2 \s__tl_stop - { - \exp_after:wN \__tl_head_auxii:n \exp_after:wN { - \if_false: } \fi: {#1} - } - \exp_args:Nno \use:n - { \cs_new:Npn \__tl_head_auxii:n #1 } - { - \__tl_if_empty_if:o { \use_none:n #1 } - \exp_after:wN \use_ii:nnn - \fi: - \use_ii:nn - {#1} - { \if_false: { \fi: \__tl_head_auxi:nw #1 } } - } + \__kernel_exp_not:w {#1} + \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi: } \cs_generate_variant:Nn \tl_head:n { V , v , f } \cs_new:Npn \tl_head:w #1#2 \q_stop {#1} @@ -8927,20 +8472,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \exp_end: \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f: } - \cs_if_exist:NF \tex_expanded:D - { - \cs_new_eq:NN \__char_generate_auxii:nnw \__char_generate_aux:nnw - \cs_gset:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \if_int_compare:w #2 = 13 \exp_stop_f: - \msg_expandable_error:nn { char } { active } - \else: - \__char_generate_auxii:nnw {#1} {#2} - \fi: - \exp_end: - } - } \else: \char_set_catcode_active:n { 0 } \tl_set:Nn \l__char_tmp_tl { \exp_not:N ^^@ \exp_not:N \or: } @@ -9803,42 +9334,24 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__prop_count:nn #1#2 { + 1 } \cs_generate_variant:Nn \prop_count:N { c } -\cs_if_exist:NTF \tex_expanded:D +\cs_new:Npn \prop_to_keyval:N #1 { - \cs_new:Npn \prop_to_keyval:N #1 - { - \__kernel_exp_not:w - \prop_if_empty:NTF #1 - { {} } - { - \exp_after:wN \exp_after:wN \exp_after:wN + \__kernel_exp_not:w + \prop_if_empty:NTF #1 + { {} } + { + \exp_after:wN \exp_after:wN \exp_after:wN + { + \tex_expanded:D { - \tex_expanded:D - { - \__kernel_exp_not:w { \use_none:n } - \prop_map_function:NN #1 \__prop_to_keyval:nn - } + \__kernel_exp_not:w { \use_none:n } + \prop_map_function:NN #1 \__prop_to_keyval:nn } - } - } - \cs_new:Npn \__prop_to_keyval:nn #1#2 - { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } } - } - { - \cs_new:Npn \prop_to_keyval:N #1 - { - \__kernel_exp_not:w - \prop_if_empty:NTF #1 - { {} } - { - \prop_map_function:NN #1 \__prop_to_keyval:nnw - \__prop_to_keyval_exp_after:wN { \use_none:n } - } - } - \cs_new_eq:NN \__prop_to_keyval_exp_after:wN \exp_after:wN - \cs_new:Npn \__prop_to_keyval:nnw #1#2#3 \__prop_to_keyval_exp_after:wN #4 - { #3 \__prop_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } } + } + } } +\cs_new:Npn \__prop_to_keyval:nn #1#2 + { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } } \prg_new_protected_conditional:Npnn \prop_pop:NnN #1#2#3 { T , F , TF } { \__prop_split:NnTF #1 {#2} @@ -10870,11 +10383,6 @@ Type H <return> for immediate help}\def~{\errmessage{% { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. } \msg_new:nnn { kernel } { zero-step } { Zero~step~size~for~function~#1. } -\cs_if_exist:NF \tex_expanded:D - { - \msg_new:nnn { kernel } { e-type } - { #1 ~ in~e-type~argument } - } \msg_new:nnn { clist } { show } { The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ } @@ -11880,18 +11388,18 @@ Type H <return> for immediate help}\def~{\errmessage{% \tl_if_blank:nTF {#2} { \seq_map_tokens:Nn \l_file_search_path_seq - { \__file_full_name_aux:Nnn \seq_map_break:n {#1} } + { \__file_full_name_aux:Nnnn \seq_map_break:n {#1} { / } } \cs_if_exist:NT \input@path { \tl_map_tokens:Nn \input@path - { \__file_full_name_aux:Nnn \tl_map_break:n {#1} } + { \__file_full_name_aux:Nnnn \tl_map_break:n {#1} { } } } \__file_name_end: } { \__file_ext_check:nn {#1} {#2} } } -\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3 - { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 } +\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: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 @@ -11941,21 +11449,6 @@ Type H <return> for immediate help}\def~{\errmessage{% {#3} } } -\cs_if_exist:NF \tex_filesize:D - { - \cs_gset:Npn \file_full_name:n #1 - { - \msg_expandable_error:nnn - { kernel } { primitive-not-available } - { \(pdf)filesize } - } - } -\msg_new:nnnn { kernel } { primitive-not-available } - { Primitive~\token_to_str:N #1 not~available } - { - The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~ - the~#1~primitive. - } \cs_new_protected:Npn \file_get_full_name:nN #1#2 { \file_get_full_name:nNF {#1} #2 @@ -11973,50 +11466,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_generate_variant:Nn \file_get_full_name:nNT { V } \cs_generate_variant:Nn \file_get_full_name:nNF { V } \cs_generate_variant:Nn \file_get_full_name:nNTF { V } -\cs_if_exist:NF \tex_filesize:D - { - \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF } - { - \__kernel_tl_set:Nx \l__file_base_name_tl - { \__kernel_file_name_sanitize:n {#1} } - \__file_get_full_name_search:nN { } \use:n - \seq_map_inline:Nn \l_file_search_path_seq - { \__file_get_full_name_search:nN { ##1 / } \seq_map_break:n } - \cs_if_exist:NT \input@path - { - \tl_map_inline:Nn \input@path - { \__file_get_full_name_search:nN { ##1 } \tl_map_break:n } - } - \tl_set:Nn \l__file_full_name_tl { \q_no_value } - \prg_break_point: - \quark_if_no_value:NTF \l__file_full_name_tl - { - \ior_close:N \g__file_internal_ior - \prg_return_false: - } - { - \file_parse_full_name:VNNN \l__file_full_name_tl - \l__file_dir_str \l__file_name_str \l__file_ext_str - \str_if_empty:NT \l__file_ext_str - { - \__kernel_ior_open:No \g__file_internal_ior - { \l__file_full_name_tl .tex } - \ior_if_eof:NF \g__file_internal_ior - { \tl_put_right:Nn \l__file_full_name_tl { .tex } } - } - \ior_close:N \g__file_internal_ior - \tl_set_eq:NN #2 \l__file_full_name_tl - \prg_return_true: - } - } - } -\cs_new_protected:Npn \__file_get_full_name_search:nN #1#2 - { - \__kernel_tl_set:Nx \l__file_full_name_tl - { \tl_to_str:n {#1} \l__file_base_name_tl } - \__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl - \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } } - } \ior_new:N \g__file_internal_ior \cs_new:Npn \file_size:n #1 { \__file_details:nn {#1} { size } } @@ -12125,26 +11574,6 @@ Type H <return> for immediate help}\def~{\errmessage{% { \prg_return_false: } { \prg_return_true: } } -\cs_if_exist:NF \tex_filesize:D - { - \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 - { - \tl_clear:N #3 - \msg_error:nnx - { kernel } { primitive-not-available } - { - \token_to_str:N \(pdf)file - \str_case:nn {#2} - { - { hex_dump } { dump } - { mdfive_hash } { mdfivesum } - { timestamp } { moddate } - { size } { size } - } - } - \prg_return_false: - } - } \cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4 { \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4 @@ -12201,17 +11630,6 @@ Type H <return> for immediate help}\def~{\errmessage{% } } \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D -\cs_if_exist:NF \__file_timestamp:n - { - \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3 - { p , T , F , TF } - { - \msg_expandable_error:nnn - { kernel } { primitive-not-available } - { \(pdf)filemoddate } - \prg_return_false: - } - } \prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF } { \file_get_full_name:nNTF {#1} \l__file_full_name_tl @@ -13053,26 +12471,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \group_begin: \cs_set_protected:Npn \__keyval_tmp:w #1#2 { - \cs_if_exist:NTF \tex_expanded:D + \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 { - \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 + \__kernel_exp_not:w \tex_expanded:D { - \__kernel_exp_not:w \tex_expanded:D - { - { - \__keyval_loop_active:nnw {##1} {##2} - \s__keyval_mark ##3 #1 \s__keyval_tail #1 - } - } - } - } - { - \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 - { - \group_align_safe_begin: - \__keyval_loop_active:nnw {##1} {##2} - \s__keyval_mark ##3 #1 \s__keyval_tail #1 - \group_align_safe_end: + { + \__keyval_loop_active:nnw {##1} {##2} + \s__keyval_mark ##3 #1 \s__keyval_tail #1 + } } } \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn @@ -13211,9 +12617,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__keyval_loop_other:nnw {##2} } } - \cs_if_exist:NTF \tex_expanded:D - { \__keyval_tmp:w { } { } } - { \__keyval_tmp:w \group_align_safe_end: \group_align_safe_begin: } + \__keyval_tmp:w { } { } \group_end: \cs_new:Npn \__keyval_if_empty:w #1 \s__keyval_mark \s__keyval_stop { } \cs_new:Npn \__keyval_if_blank:w \s__keyval_mark #1 { \__keyval_if_empty:w \s__keyval_mark } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 0dd38b9eb57..8cfb6fcccf3 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-11}% +\def\ExplFileDate{2023-05-15}% \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 e9b7a23e101..0d0af2b2616 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-11}% +\def\ExplFileDate{2023-05-15}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 7df6fceb5e4..ea9ae8078db 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-11}% +\def\ExplFileDate{2023-05-15}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% |