summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-05-16 20:22:00 +0000
committerKarl Berry <karl@freefriends.org>2023-05-16 20:22:00 +0000
commit8e9d8b027e86eefeb1788f42ec5fc0a8c76548ba (patch)
tree23fc8c8906eff72625be83d276d39e516ecb1f41 /Master/texmf-dist/source
parente66174d7e5c8c2f71571c928e0d6c5a8b037a904 (diff)
l3kernel (16may23)
git-svn-id: svn://tug.org/texlive/trunk@67134 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx104
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx562
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx125
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx30
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx78
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx69
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx47
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
57 files changed, 131 insertions, 1009 deletions
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
%