diff options
Diffstat (limited to 'macros/latex/contrib/l3kernel')
88 files changed, 2414 insertions, 1842 deletions
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index 43e0dce339..590abad03a 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,6 +7,32 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2023-10-10] + +### Added +- `\iow_shipout_e:Nn` +- Documentation for `\sys_if_timer_exist_p:` and `\sys_if_timer_exist:(TF)`. + They were supported since l3kernel 2021-05-25, along with `\sys_timer:`. +- l3doc.dtx: Support for footnotes in the function and variable environment +- Variants `\tl_if_single:c(TF)` and `\tl_if_single_p:c` (issue \#1272) +- Key properties `.str_(g)set_e:N` and `.tl_(g)set_e:N` + +### Changed +- Switch generally from `x`- to `e`-type variants +- Convert `\file_if_exist:n(TF)` to expandable status, + adding predicate version +- Standardise variants for `\prop_(g)pop:NnN(TF)` +- Standardise variants for `\prop_(g)put:Nnn` +- Standardise variants for `\prop_(g)put_if_new:Nnn` +- Standardise variants for `\prop_(g)remove:Nn` + +### Deprecated +- `\iow_shipout_x:Nn` in favor of `e`-type naming +- Key properties `.str_(g)set_x:N` and `.tl_(g)set_x:N` + +### Fixed +- Rare rounding error in divisions (issue \#1264) + ## [2023-08-29] ### Added @@ -1512,7 +1538,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-08-29...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD +[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10 [2023-08-29]: https://github.com/latex3/latex3/compare/2023-08-11...2023-08-29 [2023-08-11]: https://github.com/latex3/latex3/compare/2023-08-03...2023-08-11 [2023-08-03]: https://github.com/latex3/latex3/compare/2023-06-30...2023-08-03 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index 7afb055297..7b368819d5 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2023-08-29 +Release 2023-10-10 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index 9adee097c5..ea13fbeacf 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2023-08-29}% +\def\ExplFileDate{2023-10-10}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -311,8 +311,9 @@ % or private. % % To allow clear separation of these two cases, the following convention -% is used. Private functions should be defined with |__| added to the beginning -% of the module name. Thus +% is used. In private functions and variables, two |_| characters are +% added to the start of the module name. On the other hand, public +% interfaces to not have these two |_| character. Thus % \begin{verbatim} % \module_foo:nnn % \end{verbatim} @@ -323,8 +324,9 @@ % is private to the module, and should \emph{not} be used outside of that % module. % -% Similarly, private variables should use |__| to separate scope and -% module name, such that +% For variables, to avoid three |_| in a row, the separator for the variable +% scope and any leading |_| for a private interface in the module part are +% combined. Thus % \begin{verbatim} % \l_module_foo_tl % \end{verbatim} @@ -334,12 +336,12 @@ % \end{verbatim} % is private. % -% \subsubsection{Using \texttt{@@} and \pkg{l3docstrip} to mark private code} +% \subsubsection{Using \texttt{@@} and \pkg{DocStrip} to mark private code} % % The formal syntax for internal functions allows clear separation of public % and private code, but includes redundant information (every internal function % or variable includes \texttt{__\meta{module}}). To aid programmers, the -% \pkg{l3docstrip} program introduces the syntax +% \pkg{DocStrip} program introduces the syntax % \begin{quote} % \ttfamily % |%<@@=|\meta{module}|>| @@ -354,7 +356,7 @@ % \tl_new:N \l_@@_my_tl % % \end{macrocode} % \end{verbatim} -% is converted by \pkg{l3docstrip} to +% is converted by \pkg{DocStrip} to % \begin{verbatim} % \cs_new:Npn \__foo_function:n #1 % ... @@ -365,13 +367,6 @@ % distinguish variables from functions in the source when the |@@| % convention is used. % -% Please note that you have to use the \pkg{l3docstrip} and -% \textbf{not} the \pkg{docstrip} program in your \texttt{.ins} files -% to make this work---the original \LaTeXe{} \pkg{docstrip} doesn't -% understand the \texttt{@@} and will just copy it into your code -% unmodified! -% -% % \subsubsection{Variables: declaration} % % In well-formed \pkg{expl3} code, variables should always be declared before @@ -653,20 +648,10 @@ % variables which have a \cs{\meta{var}_use:N} function (other than % boxes), and which therefore deliver a single % \enquote{value}. -% \item[x] Fully-expanded token or braced token list.\\ -% This means that the argument is expanded as in the replacement -% text of an~\tn{edef}, and the expansion is passed to the function as -% a braced token list. Expansion takes place until only unexpandable -% tokens are left. |x|-type arguments cannot be nested. % \item[e] Fully-expanded token or braced token list.\\ -% This expansion is very similar to |x|-type but may be nested and does -% not require that |#| tokens are doubled. It uses \tn{expanded} primitive. -% \item[f] Expanding the first token recursively in a braced token -% list.\\ Almost the same as the |x| type except here the token list -% is expanded fully until the first unexpandable token is found and -% the rest is left unchanged. Note that if this function finds a -% space at the beginning of the argument it gobbles it and does not -% expand the next token. +% This means that the argument is expanded as in the replacement +% text of a~\tn{message}, and the expansion is passed to the function as +% a braced token list. % \item[o] One-level-expanded token or braced token list.\\ % This means that the argument is expanded one level, as by % \tn{expandafter}, and the expansion is passed to the function as a @@ -674,6 +659,19 @@ % token list then only the first token in that list is expanded. % In general, using \texttt{V} should be preferred to using % \texttt{o} for simple variable retrieval. +% \item[f] Expanding the first token recursively in a braced token +% list.\\ Almost the same as the |e| type except here the token list +% is expanded fully until the first unexpandable token is found and +% the rest is left unchanged. Note that if this function finds a +% space at the beginning of the argument it gobbles it and does not +% expand the next token. +% \item[x] Fully-expanded token or braced token list.\\ +% This expansion is very similar to |e|-type but is not nestable, +% can only be used to create non-expandable functions, and requires +% that |#| tokens are doubled in the argument. In almost all cases, +% |e|-type should be preferred: retained largely for historical +% reasons, and should where possible be replaced by the |e|-type +% equivalent. % \end{description} % % \subsection{Simpler means better} @@ -761,17 +759,17 @@ % % To illustrate this let us suppose you have a \enquote{base function} % |\demo_cmd:Nnn| that takes three normal arguments, and that you need -% to construct the variant |\demo_cmd:cnx|, for which the first argument +% to construct the variant |\demo_cmd:cne|, for which the first argument % is used to construct the \emph{name} of a command, whilst the third % argument must be fully expanded before being passed to % |\demo_cmd:Nnn|. % To produce the variant form from the base form, simply use this: % \begin{verbatim} -% \cs_generate_variant:Nn \demo_cmd:Nnn { cnx } +% \cs_generate_variant:Nn \demo_cmd:Nnn { cne } % \end{verbatim} % This defines the variant form so that you can then write, for example: % \begin{verbatim} -% \demo_cmd:cnx { abc } { pq } { \rst \xyz } +% \demo_cmd:cne { abc } { pq } { \rst \xyz } % \end{verbatim} % rather than \ldots\ well, something like this! % \begin{verbatim} @@ -793,13 +791,13 @@ % \end{verbatim} % % Another example: you may wish to declare a function -% |\demo_cmd_b:xcxcx|, a variant of an existing function +% |\demo_cmd_b:enene|, a variant of an existing function % |\demo_cmd_b:nnnnn|, that fully % expands arguments 1,~3 and~5, and produces commands to pass as % arguments 2 and~4 using~\tn{csname}. % The definition you need is simply % \begin{verbatim} -% \cs_generate_variant:Nn \demo_cmd_b:nnnnn { xcxcx } +% \cs_generate_variant:Nn \demo_cmd_b:nnnnn { enene } % \end{verbatim} % % This extension mechanism is written so that if the same new form of @@ -854,7 +852,7 @@ % \begin{itemize} % \item \pkg{expl3} is mainly focused on programming. This means that % some areas still require the use of \LaTeXe{} internal macros. -% For example, you may well need \tn{@ifpackageloaded}, as there +% For example, you may well need \tn{IfPackageLoadedTF}, as there % is currently no native \pkg{expl3} package loading module. % \item User level macros should be generated using the mechanism % available in the \pkg{xparse} package, which is part of the @@ -1541,12 +1539,12 @@ } \cs_gset_protected:Npn \@expl@push@filename@@@@ { - \exp_args:Nx \__kernel_file_input_push:n + \exp_args:Ne \__kernel_file_input_push:n { \tl_to_str:N \@currname . \tl_to_str:N \@currext } - \tl_put_left:Nx \l_@@_status_stack_tl + \tl_put_left:Ne \l_@@_status_stack_tl { \bool_if:NTF \l__kernel_expl_bool { 1 } @@ -1742,7 +1740,7 @@ \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4 { \group_end: - \iow_log:x { File:~##1~##2~v##3~##4 } + \iow_log:e { File:~##1~##2~v##3~##4 } } \tex_input:D #1 .def \scan_stop: } diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf Binary files differindex 33262bd828..af52bd35c0 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex 61d451cc9e..f8431c7347 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index 0198240396..79d4cec3e9 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -48,6 +48,8 @@ for those people who are interested. { \texttt{ \__codedoc_meta:n {#1} } } \ExplSyntaxOff +\newif\ifinterface +\interfacetrue \listfiles @@ -62,7 +64,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-08-29} +\date{Released 2023-10-10} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index 17cb2467bf..6b484105fe 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -200,7 +200,12 @@ % \subsection{Defining new functions using parameter text} % \label{sec:l3basics:defining-new-function-1} % -% \begin{function}{\cs_new:Npn, \cs_new:cpn, \cs_new:Npx, \cs_new:cpx} +% \begin{function} +% { +% \cs_new:Npn, \cs_new:cpn, +% \cs_new:Npe, \cs_new:cpe, +% \cs_new:Npx, \cs_new:cpx +% } % \begin{syntax} % \cs{cs_new:Npn} \meta{function} \meta{parameters} \Arg{code} % \end{syntax} @@ -214,6 +219,7 @@ % \begin{function} % { % \cs_new_nopar:Npn, \cs_new_nopar:cpn, +% \cs_new_nopar:Npe, \cs_new_nopar:cpe, % \cs_new_nopar:Npx, \cs_new_nopar:cpx % } % \begin{syntax} @@ -230,6 +236,7 @@ % \begin{function} % { % \cs_new_protected:Npn, \cs_new_protected:cpn, +% \cs_new_protected:Npe, \cs_new_protected:cpe, % \cs_new_protected:Npx, \cs_new_protected:cpx % } % \begin{syntax} @@ -247,6 +254,7 @@ % \begin{function} % { % \cs_new_protected_nopar:Npn, \cs_new_protected_nopar:cpn , +% \cs_new_protected_nopar:Npe, \cs_new_protected_nopar:cpe , % \cs_new_protected_nopar:Npx, \cs_new_protected_nopar:cpx % } % \begin{syntax} @@ -261,7 +269,12 @@ % and an error results if the \meta{function} is already defined. % \end{function} % -% \begin{function}{\cs_set:Npn, \cs_set:cpn, \cs_set:Npx, \cs_set:cpx} +% \begin{function} +% { +% \cs_set:Npn, \cs_set:cpn, +% \cs_set:Npe, \cs_set:cpe, +% \cs_set:Npx, \cs_set:cpx +% } % \begin{syntax} % \cs{cs_set:Npn} \meta{function} \meta{parameters} \Arg{code} % \end{syntax} @@ -275,6 +288,7 @@ % \begin{function} % { % \cs_set_nopar:Npn, \cs_set_nopar:cpn, +% \cs_set_nopar:Npe, \cs_set_nopar:cpe, % \cs_set_nopar:Npx, \cs_set_nopar:cpx % } % \begin{syntax} @@ -292,6 +306,7 @@ % \begin{function} % { % \cs_set_protected:Npn, \cs_set_protected:cpn, +% \cs_set_protected:Npe, \cs_set_protected:cpe, % \cs_set_protected:Npx, \cs_set_protected:cpx % } % \begin{syntax} @@ -308,6 +323,7 @@ % \begin{function} % { % \cs_set_protected_nopar:Npn, \cs_set_protected_nopar:cpn , +% \cs_set_protected_nopar:Npe, \cs_set_protected_nopar:cpe , % \cs_set_protected_nopar:Npx, \cs_set_protected_nopar:cpx , % } % \begin{syntax} @@ -323,7 +339,12 @@ % \texttt{x}-type or \texttt{e}-type argument. % \end{function} % -% \begin{function}{\cs_gset:Npn, \cs_gset:cpn, \cs_gset:Npx, \cs_gset:cpx} +% \begin{function} +% { +% \cs_gset:Npn, \cs_gset:cpn, +% \cs_gset:Npe, \cs_gset:cpe, +% \cs_gset:Npx, \cs_gset:cpx +% } % \begin{syntax} % \cs{cs_gset:Npn} \meta{function} \meta{parameters} \Arg{code} % \end{syntax} @@ -338,6 +359,7 @@ % \begin{function} % { % \cs_gset_nopar:Npn, \cs_gset_nopar:cpn, +% \cs_gset_nopar:Npe, \cs_gset_nopar:cpe, % \cs_gset_nopar:Npx, \cs_gset_nopar:cpx % } % \begin{syntax} @@ -355,6 +377,7 @@ % \begin{function} % { % \cs_gset_protected:Npn, \cs_gset_protected:cpn, +% \cs_gset_protected:Npe, \cs_gset_protected:cpe, % \cs_gset_protected:Npx, \cs_gset_protected:cpx % } % \begin{syntax} @@ -372,6 +395,7 @@ % \begin{function} % { % \cs_gset_protected_nopar:Npn, \cs_gset_protected_nopar:cpn, +% \cs_gset_protected_nopar:Npe, \cs_gset_protected_nopar:cpe, % \cs_gset_protected_nopar:Npx, \cs_gset_protected_nopar:cpx % } % \begin{syntax} @@ -393,7 +417,7 @@ % \begin{function} % { % \cs_new:Nn, \cs_new:cn, -% \cs_new:Nx, \cs_new:cx +% \cs_new:Ne, \cs_new:ce % } % \begin{syntax} % \cs{cs_new:Nn} \meta{function} \Arg{code} @@ -409,7 +433,7 @@ % \begin{function} % { % \cs_new_nopar:Nn, \cs_new_nopar:cn, -% \cs_new_nopar:Nx, \cs_new_nopar:cx +% \cs_new_nopar:Ne, \cs_new_nopar:ce % } % \begin{syntax} % \cs{cs_new_nopar:Nn} \meta{function} \Arg{code} @@ -426,7 +450,7 @@ % \begin{function} % { % \cs_new_protected:Nn, \cs_new_protected:cn, -% \cs_new_protected:Nx, \cs_new_protected:cx +% \cs_new_protected:Ne, \cs_new_protected:ce % } % \begin{syntax} % \cs{cs_new_protected:Nn} \meta{function} \Arg{code} @@ -443,7 +467,7 @@ % \begin{function} % { % \cs_new_protected_nopar:Nn, \cs_new_protected_nopar:cn, -% \cs_new_protected_nopar:Nx, \cs_new_protected_nopar:cx +% \cs_new_protected_nopar:Ne, \cs_new_protected_nopar:ce % } % \begin{syntax} % \cs{cs_new_protected_nopar:Nn} \meta{function} \Arg{code} @@ -461,7 +485,7 @@ % \begin{function} % { % \cs_set:Nn, \cs_set:cn, -% \cs_set:Nx, \cs_set:cx +% \cs_set:Ne, \cs_set:ce % } % \begin{syntax} % \cs{cs_set:Nn} \meta{function} \Arg{code} @@ -478,7 +502,7 @@ % \begin{function} % { % \cs_set_nopar:Nn, \cs_set_nopar:cn, -% \cs_set_nopar:Nx, \cs_set_nopar:cx +% \cs_set_nopar:Ne, \cs_set_nopar:ce % } % \begin{syntax} % \cs{cs_set_nopar:Nn} \meta{function} \Arg{code} @@ -496,7 +520,7 @@ % \begin{function} % { % \cs_set_protected:Nn, \cs_set_protected:cn, -% \cs_set_protected:Nx, \cs_set_protected:cx +% \cs_set_protected:Ne, \cs_set_protected:ce % } % \begin{syntax} % \cs{cs_set_protected:Nn} \meta{function} \Arg{code} @@ -514,7 +538,7 @@ % \begin{function} % { % \cs_set_protected_nopar:Nn, \cs_set_protected_nopar:cn, -% \cs_set_protected_nopar:Nx, \cs_set_protected_nopar:cx +% \cs_set_protected_nopar:Ne, \cs_set_protected_nopar:ce % } % \begin{syntax} % \cs{cs_set_protected_nopar:Nn} \meta{function} \Arg{code} @@ -533,7 +557,7 @@ % \begin{function} % { % \cs_gset:Nn, \cs_gset:cn, -% \cs_gset:Nx, \cs_gset:cx +% \cs_gset:Ne, \cs_gset:ce % } % \begin{syntax} % \cs{cs_gset:Nn} \meta{function} \Arg{code} @@ -549,7 +573,7 @@ % \begin{function} % { % \cs_gset_nopar:Nn, \cs_gset_nopar:cn, -% \cs_gset_nopar:Nx, \cs_gset_nopar:cx +% \cs_gset_nopar:Ne, \cs_gset_nopar:ce % } % \begin{syntax} % \cs{cs_gset_nopar:Nn} \meta{function} \Arg{code} @@ -566,7 +590,7 @@ % \begin{function} % { % \cs_gset_protected:Nn, \cs_gset_protected:cn, -% \cs_gset_protected:Nx, \cs_gset_protected:cx +% \cs_gset_protected:Ne, \cs_gset_protected:ce % } % \begin{syntax} % \cs{cs_gset_protected:Nn} \meta{function} \Arg{code} @@ -583,7 +607,7 @@ % \begin{function} % { % \cs_gset_protected_nopar:Nn, \cs_gset_protected_nopar:cn, -% \cs_gset_protected_nopar:Nx, \cs_gset_protected_nopar:cx +% \cs_gset_protected_nopar:Ne, \cs_gset_protected_nopar:ce % } % \begin{syntax} % \cs{cs_gset_protected_nopar:Nn} \meta{function} \Arg{code} @@ -1034,15 +1058,6 @@ % \end{texnote} % \end{function} % -% \begin{function}[updated = 2011-12-31]{\use:x} -% \begin{syntax} -% \cs{use:x} \Arg{expandable tokens} -% \end{syntax} -% Fully expands the \meta{expandable tokens} and inserts the -% result into the input stream at the current location. -% Any hash characters (|#|) in the argument must be doubled. -% \end{function} -% % \subsection{Selecting tokens from delimited arguments} % % A different kind of function for selecting tokens from the token @@ -1520,55 +1535,63 @@ % % \begin{macro} % { -% \cs_set_nopar:Npn , \cs_set_nopar:Npx , -% \cs_set:Npn , \cs_set:Npx , -% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npx , -% \cs_set_protected:Npn , \cs_set_protected:Npx +% \cs_set_nopar:Npn , \cs_set_nopar:Npe , \cs_set_nopar:Npx , +% \cs_set:Npn , \cs_set:Npe , \cs_set:Npx , +% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npe , \cs_set_protected_nopar:Npx , +% \cs_set_protected:Npn , \cs_set_protected:Npe , \cs_set_protected:Npx % } % All assignment functions in \LaTeX3 should be naturally protected; % after all, the \TeX{} primitives for assignments are and it can be % a cause of problems if others aren't. % \begin{macrocode} \tex_let:D \cs_set_nopar:Npn \tex_def:D +\tex_let:D \cs_set_nopar:Npe \tex_edef:D \tex_let:D \cs_set_nopar:Npx \tex_edef:D \tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn { \tex_long:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npx +\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe { \tex_long:D \tex_edef:D } +\tex_let:D \cs_set:Npx \cs_set:Npe \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn { \tex_protected:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npx +\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe { \tex_protected:D \tex_edef:D } +\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn { \tex_protected:D \tex_long:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npx +\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe { \tex_protected:D \tex_long:D \tex_edef:D } +\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe % \end{macrocode} % \end{macro} % % \begin{macro} % { -% \cs_gset_nopar:Npn , \cs_gset_nopar:Npx , -% \cs_gset:Npn , \cs_gset:Npx , -% \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npx , -% \cs_gset_protected:Npn , \cs_gset_protected:Npx +% \cs_gset_nopar:Npn , \cs_gset_nopar:Npe , \cs_gset_nopar:Npx , +% \cs_gset:Npn , \cs_gset:Npe , \cs_gset:Npx , +% \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npe , \cs_gset_protected_nopar:Npx , +% \cs_gset_protected:Npn , \cs_gset_protected:Npe , \cs_gset_protected:Npx % } % Global versions of the above functions. % \begin{macrocode} \tex_let:D \cs_gset_nopar:Npn \tex_gdef:D +\tex_let:D \cs_gset_nopar:Npe \tex_xdef:D \tex_let:D \cs_gset_nopar:Npx \tex_xdef:D \cs_set_protected:Npn \cs_gset:Npn { \tex_long:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset:Npx +\cs_set_protected:Npn \cs_gset:Npe { \tex_long:D \tex_xdef:D } +\tex_let:D \cs_gset:Npx \cs_gset:Npe \cs_set_protected:Npn \cs_gset_protected_nopar:Npn { \tex_protected:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset_protected_nopar:Npx +\cs_set_protected:Npn \cs_gset_protected_nopar:Npe { \tex_protected:D \tex_xdef:D } +\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe \cs_set_protected:Npn \cs_gset_protected:Npn { \tex_protected:D \tex_long:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset_protected:Npx +\cs_set_protected:Npn \cs_gset_protected:Npe { \tex_protected:D \tex_long:D \tex_xdef:D } +\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe % \end{macrocode} % \end{macro} % @@ -1921,7 +1944,7 @@ { \@@_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p } \cs_set_protected:Npn \@@_generate_conditional_parm:NNNpnn #1#2#3#4# { - \use:x + \use:e { \@@_generate_conditional:nnNNNnnn \cs_split_function:N #3 @@ -1973,7 +1996,7 @@ { \@@_generate_conditional_count:NNNnn \cs_new_protected:Npn p } \cs_set_protected:Npn \@@_generate_conditional_count:NNNnn #1#2#3 { - \use:x + \use:e { \@@_generate_conditional_count:nnNNNnn \cs_split_function:N #3 @@ -1986,7 +2009,7 @@ { \@@_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 } { \tl_count:n {#2} } { - \msg_error:nnxx { kernel } { bad-number-of-arguments } + \msg_error:nnee { kernel } { bad-number-of-arguments } { \token_to_str:c { #1 : #2 } } { \tl_count:n {#2} } \use_none:nn @@ -2024,11 +2047,11 @@ \cs_set_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8 { \if_meaning:w \c_false_bool #3 - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:c {#1} } \exp_after:wN \use_none:nn \fi: - \use:x + \use:e { \exp_not:N \@@_generate_conditional:NNnnnnNw \exp_not:n { #4 #5 {#1} {#2} {#6} } @@ -2064,7 +2087,7 @@ \use:c { @@_generate_ #8 _form:wNNnnnnN } \tl_if_empty:nF {#8} { - \msg_error:nnxx + \msg_error:nnee { kernel } { conditional-form-unknown } {#8} { \token_to_str:c { #3 : #4 } } } @@ -2118,7 +2141,7 @@ { #7 \@@_p_true:w \fi: \c_false_bool } } { - \msg_error:nnx { kernel } { protected-predicate } + \msg_error:nne { kernel } { protected-predicate } { \token_to_str:c { #4 _p: #5 } } } } @@ -2176,7 +2199,7 @@ { \@@_set_eq_conditional:NNNn \cs_new_eq:cc } \cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4 { - \use:x + \use:e { \exp_not:N \@@_set_eq_conditional:nnNnnNNw \cs_split_function:N #2 @@ -2216,12 +2239,12 @@ \cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 { \if_meaning:w \c_false_bool #3 - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:c {#1} } \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w \fi: \if_meaning:w \c_false_bool #6 - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:c {#4} } \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w \fi: @@ -2235,7 +2258,7 @@ \use:c { @@_set_eq_conditional_ #6 _form:wNnnnn } \tl_if_empty:nF {#6} { - \msg_error:nnxx + \msg_error:nnee { kernel } { conditional-form-unknown } {#6} { \token_to_str:c { #1 : #2 } } } @@ -2554,14 +2577,14 @@ % only temporary, they will be redefined later on. % % \begin{macro} -% {\msg_error:nnxx, \msg_error:nnx, \msg_error:nn} +% {\msg_error:nnee, \msg_error:nne, \msg_error:nn} % If an internal error occurs before \LaTeX3 has loaded \pkg{l3msg} then % the code should issue a usable if terse error message and halt. This % can only happen if a coding error is made by the team, so this is % a reasonable response. Setting the \tn{newlinechar} is needed, to % turn |^^J| into a proper line break in plain \TeX{}. % \begin{macrocode} -\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4 +\cs_set_protected:Npn \msg_error:nnee #1#2#3#4 { \tex_newlinechar:D = `\^^J \scan_stop: \tex_errmessage:D @@ -2574,10 +2597,10 @@ } \tex_end:D } -\cs_set_protected:Npn \msg_error:nnx #1#2#3 - { \msg_error:nnxx {#1} {#2} {#3} { } } +\cs_set_protected:Npn \msg_error:nne #1#2#3 + { \msg_error:nnee {#1} {#2} {#3} { } } \cs_set_protected:Npn \msg_error:nn #1#2 - { \msg_error:nnxx {#1} {#2} { } { } } + { \msg_error:nnee {#1} {#2} { } { } } % \end{macrocode} % \end{macro} % @@ -2589,14 +2612,14 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[documented-as=\iow_log:n]{\iow_log:x, \iow_term:x} +% \begin{macro}[documented-as=\iow_log:n]{\iow_log:e, \iow_term:e} % We define a routine to write only to the log file. And a % similar one for writing to both the log file and the terminal. -% These will be redefined later by \pkg{l3io}. +% These will be redefined later by \pkg{l3file}. % \begin{macrocode} -\cs_set_protected:Npn \iow_log:x +\cs_set_protected:Npn \iow_log:e { \tex_immediate:D \tex_write:D -1 } -\cs_set_protected:Npn \iow_term:x +\cs_set_protected:Npn \iow_term:e { \tex_immediate:D \tex_write:D 16 } % \end{macrocode} % \end{macro} @@ -2614,7 +2637,7 @@ { \cs_if_free:NF #1 { - \msg_error:nnxx { kernel } { command-already-defined } + \msg_error:nnee { kernel } { command-already-defined } { \token_to_str:N #1 } { \token_to_meaning:N #1 } } } @@ -2631,10 +2654,10 @@ % % \begin{macro} % { -% \cs_new_nopar:Npn , \cs_new_nopar:Npx , -% \cs_new:Npn , \cs_new:Npx , -% \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npx , -% \cs_new_protected:Npn , \cs_new_protected:Npx +% \cs_new_nopar:Npn , \cs_new_nopar:Npe , \cs_new_nopar:Npx , +% \cs_new:Npn , \cs_new:Npe , \cs_new:Npx , +% \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npe , \cs_new_protected_nopar:Npx , +% \cs_new_protected:Npn , \cs_new_protected:Npe , \cs_new_protected:Npx % } % \begin{macro}{\@@_tmp:w} % Function which check that the control sequence is free before @@ -2649,12 +2672,16 @@ } } \@@_tmp:w \cs_new_nopar:Npn \cs_gset_nopar:Npn +\@@_tmp:w \cs_new_nopar:Npe \cs_gset_nopar:Npe \@@_tmp:w \cs_new_nopar:Npx \cs_gset_nopar:Npx \@@_tmp:w \cs_new:Npn \cs_gset:Npn +\@@_tmp:w \cs_new:Npe \cs_gset:Npe \@@_tmp:w \cs_new:Npx \cs_gset:Npx \@@_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn +\@@_tmp:w \cs_new_protected_nopar:Npe \cs_gset_protected_nopar:Npe \@@_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx \@@_tmp:w \cs_new_protected:Npn \cs_gset_protected:Npn +\@@_tmp:w \cs_new_protected:Npe \cs_gset_protected:Npe \@@_tmp:w \cs_new_protected:Npx \cs_gset_protected:Npx % \end{macrocode} % \end{macro} @@ -2662,9 +2689,9 @@ % % \begin{macro}[documented-as=\cs_set_nopar:Npn] % { -% \cs_set_nopar:cpn , \cs_set_nopar:cpx , -% \cs_gset_nopar:cpn , \cs_gset_nopar:cpx , -% \cs_new_nopar:cpn , \cs_new_nopar:cpx +% \cs_set_nopar:cpn , \cs_set_nopar:cpe , \cs_set_nopar:cpx , +% \cs_gset_nopar:cpn , \cs_gset_nopar:cpe , \cs_gset_nopar:cpx , +% \cs_new_nopar:cpn , \cs_new_nopar:cpe , \cs_new_nopar:cpx % } % Like \cs{cs_set_nopar:Npn} and \cs{cs_new_nopar:Npn}, except that the % first argument consists of the sequence of characters that should @@ -2680,64 +2707,76 @@ \cs_set:Npn \@@_tmp:w #1#2 { \cs_new_protected_nopar:Npn #1 { \exp_args:Nc #2 } } \@@_tmp:w \cs_set_nopar:cpn \cs_set_nopar:Npn +\@@_tmp:w \cs_set_nopar:cpe \cs_set_nopar:Npe \@@_tmp:w \cs_set_nopar:cpx \cs_set_nopar:Npx \@@_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn +\@@_tmp:w \cs_gset_nopar:cpe \cs_gset_nopar:Npe \@@_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx \@@_tmp:w \cs_new_nopar:cpn \cs_new_nopar:Npn +\@@_tmp:w \cs_new_nopar:cpe \cs_new_nopar:Npe \@@_tmp:w \cs_new_nopar:cpx \cs_new_nopar:Npx % \end{macrocode} % \end{macro} % % \begin{macro}[documented-as=\cs_set:Npn] % { -% \cs_set:cpn , \cs_set:cpx , -% \cs_gset:cpn , \cs_gset:cpx , -% \cs_new:cpn , \cs_new:cpx +% \cs_set:cpn , \cs_set:cpe , \cs_set:cpx , +% \cs_gset:cpn , \cs_gset:cpe , \cs_gset:cpx , +% \cs_new:cpn , \cs_new:cpe , \cs_new:cpx % } % Variants of the \cs{cs_set:Npn} versions which make a csname out % of the first arguments. We may also do this globally. % \begin{macrocode} \@@_tmp:w \cs_set:cpn \cs_set:Npn +\@@_tmp:w \cs_set:cpe \cs_set:Npe \@@_tmp:w \cs_set:cpx \cs_set:Npx \@@_tmp:w \cs_gset:cpn \cs_gset:Npn +\@@_tmp:w \cs_gset:cpe \cs_gset:Npe \@@_tmp:w \cs_gset:cpx \cs_gset:Npx \@@_tmp:w \cs_new:cpn \cs_new:Npn +\@@_tmp:w \cs_new:cpe \cs_new:Npe \@@_tmp:w \cs_new:cpx \cs_new:Npx % \end{macrocode} % \end{macro} % % \begin{macro}[documented-as=\cs_set_protected_nopar:Npn] % { -% \cs_set_protected_nopar:cpn , \cs_set_protected_nopar:cpx , -% \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpx , -% \cs_new_protected_nopar:cpn , \cs_new_protected_nopar:cpx +% \cs_set_protected_nopar:cpn , \cs_set_protected_nopar:cpe , \cs_set_protected_nopar:cpx , +% \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpe , \cs_gset_protected_nopar:cpx , +% \cs_new_protected_nopar:cpn , \cs_new_protected_nopar:cpe , \cs_new_protected_nopar:cpx % } % Variants of the \cs{cs_set_protected_nopar:Npn} versions which make % a csname out of the first arguments. We may also do this globally. % \begin{macrocode} \@@_tmp:w \cs_set_protected_nopar:cpn \cs_set_protected_nopar:Npn +\@@_tmp:w \cs_set_protected_nopar:cpe \cs_set_protected_nopar:Npe \@@_tmp:w \cs_set_protected_nopar:cpx \cs_set_protected_nopar:Npx \@@_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn +\@@_tmp:w \cs_gset_protected_nopar:cpe \cs_gset_protected_nopar:Npe \@@_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx \@@_tmp:w \cs_new_protected_nopar:cpn \cs_new_protected_nopar:Npn +\@@_tmp:w \cs_new_protected_nopar:cpe \cs_new_protected_nopar:Npe \@@_tmp:w \cs_new_protected_nopar:cpx \cs_new_protected_nopar:Npx % \end{macrocode} % \end{macro} % % \begin{macro}[documented-as=\cs_set_protected:Npn] % { -% \cs_set_protected:cpn , \cs_set_protected:cpx , -% \cs_gset_protected:cpn , \cs_gset_protected:cpx , -% \cs_new_protected:cpn , \cs_new_protected:cpx +% \cs_set_protected:cpn , \cs_set_protected:cpe , \cs_set_protected:cpx , +% \cs_gset_protected:cpn , \cs_gset_protected:cpe , \cs_gset_protected:cpx , +% \cs_new_protected:cpn , \cs_new_protected:cpe , \cs_new_protected:cpx % } % Variants of the \cs{cs_set_protected:Npn} versions which make a csname % out of the first arguments. We may also do this globally. % \begin{macrocode} \@@_tmp:w \cs_set_protected:cpn \cs_set_protected:Npn +\@@_tmp:w \cs_set_protected:cpe \cs_set_protected:Npe \@@_tmp:w \cs_set_protected:cpx \cs_set_protected:Npx \@@_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn +\@@_tmp:w \cs_gset_protected:cpe \cs_gset_protected:Npe \@@_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx \@@_tmp:w \cs_new_protected:cpn \cs_new_protected:Npn +\@@_tmp:w \cs_new_protected:cpe \cs_new_protected:Npe \@@_tmp:w \cs_new_protected:cpx \cs_new_protected:Npx % \end{macrocode} % \end{macro} @@ -2827,7 +2866,7 @@ % \begin{macrocode} \cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2 { - \exp_args:Nx \@@_parm_from_arg_count_test:nnF + \exp_args:Ne \@@_parm_from_arg_count_test:nnF { \exp_after:wN \exp_not:n \if_case:w \int_eval:n {#2} @@ -2914,7 +2953,7 @@ { \__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3} { - \msg_error:nnxx { kernel } { bad-number-of-arguments } + \msg_error:nnee { kernel } { bad-number-of-arguments } { \token_to_str:N #1 } { \int_eval:n {#3} } \use_none:n } @@ -2944,18 +2983,18 @@ % % \begin{macro} % { -% \cs_set:Nn , \cs_set:Nx , -% \cs_set_nopar:Nn , \cs_set_nopar:Nx , -% \cs_set_protected:Nn , \cs_set_protected:Nx , -% \cs_set_protected_nopar:Nn , \cs_set_protected_nopar:Nx , -% \cs_gset:Nn , \cs_gset:Nx , -% \cs_gset_nopar:Nn , \cs_gset_nopar:Nx , -% \cs_gset_protected:Nn , \cs_gset_protected:Nx , -% \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Nx , -% \cs_new:Nn , \cs_new:Nx , -% \cs_new_nopar:Nn , \cs_new_nopar:Nx , -% \cs_new_protected:Nn , \cs_new_protected:Nx , -% \cs_new_protected_nopar:Nn , \cs_new_protected_nopar:Nx , +% \cs_set:Nn , \cs_set:Ne , \cs_set:Nx , +% \cs_set_nopar:Nn , \cs_set_nopar:Ne , \cs_set_nopar:Nx , +% \cs_set_protected:Nn , \cs_set_protected:Ne , \cs_set_protected:Nx , +% \cs_set_protected_nopar:Nn , \cs_set_protected_nopar:Ne , \cs_set_protected_nopar:Nx , +% \cs_gset:Nn , \cs_gset:Ne , \cs_gset:Nx , +% \cs_gset_nopar:Nn , \cs_gset_nopar:Ne , \cs_gset_nopar:Nx , +% \cs_gset_protected:Nn , \cs_gset_protected:Ne , \cs_gset_protected:Nx , +% \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Ne , \cs_gset_protected_nopar:Nx , +% \cs_new:Nn , \cs_new:Ne , \cs_new:Nx , +% \cs_new_nopar:Nn , \cs_new_nopar:Ne , \cs_new_nopar:Nx , +% \cs_new_protected:Nn , \cs_new_protected:Ne , \cs_new_protected:Nx , +% \cs_new_protected_nopar:Nn , \cs_new_protected_nopar:Ne , \cs_new_protected_nopar:Nx , % } % We want to define \cs{cs_set:Nn} as % \begin{verbatim} @@ -2980,7 +3019,7 @@ } \cs_new_protected:Npn \@@_generate_from_signature:NNn #1#2 { - \use:x + \use:e { \@@_generate_from_signature:nnNNNn \cs_split_function:N #2 @@ -2995,14 +3034,14 @@ { \tl_map_function:nN {#2} \@@_generate_from_signature:n } \tl_if_empty:oF \@@_tmp:w { - \msg_error:nnxxx { kernel } { non-base-function } + \msg_error:nneee { kernel } { non-base-function } { \token_to_str:N #5 } {#2} { \@@_tmp:w } } \cs_generate_from_arg_count:NNnn #5 #4 { \tl_count:n {#2} } {#6} } { - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:N #5 } } } @@ -3015,46 +3054,58 @@ % Then we define the 24 variants beginning with |N|. % \begin{macrocode} \@@_tmp:w { set } { Nn } { Npn } +\@@_tmp:w { set } { Ne } { Npe } \@@_tmp:w { set } { Nx } { Npx } \@@_tmp:w { set_nopar } { Nn } { Npn } +\@@_tmp:w { set_nopar } { Ne } { Npe } \@@_tmp:w { set_nopar } { Nx } { Npx } \@@_tmp:w { set_protected } { Nn } { Npn } +\@@_tmp:w { set_protected } { Ne } { Npe } \@@_tmp:w { set_protected } { Nx } { Npx } \@@_tmp:w { set_protected_nopar } { Nn } { Npn } +\@@_tmp:w { set_protected_nopar } { Ne } { Npe } \@@_tmp:w { set_protected_nopar } { Nx } { Npx } \@@_tmp:w { gset } { Nn } { Npn } +\@@_tmp:w { gset } { Ne } { Npe } \@@_tmp:w { gset } { Nx } { Npx } \@@_tmp:w { gset_nopar } { Nn } { Npn } +\@@_tmp:w { gset_nopar } { Ne } { Npe } \@@_tmp:w { gset_nopar } { Nx } { Npx } \@@_tmp:w { gset_protected } { Nn } { Npn } +\@@_tmp:w { gset_protected } { Ne } { Npe } \@@_tmp:w { gset_protected } { Nx } { Npx } \@@_tmp:w { gset_protected_nopar } { Nn } { Npn } +\@@_tmp:w { gset_protected_nopar } { Ne } { Npe } \@@_tmp:w { gset_protected_nopar } { Nx } { Npx } \@@_tmp:w { new } { Nn } { Npn } +\@@_tmp:w { new } { Ne } { Npe } \@@_tmp:w { new } { Nx } { Npx } \@@_tmp:w { new_nopar } { Nn } { Npn } +\@@_tmp:w { new_nopar } { Ne } { Npe } \@@_tmp:w { new_nopar } { Nx } { Npx } \@@_tmp:w { new_protected } { Nn } { Npn } +\@@_tmp:w { new_protected } { Ne } { Npe } \@@_tmp:w { new_protected } { Nx } { Npx } \@@_tmp:w { new_protected_nopar } { Nn } { Npn } +\@@_tmp:w { new_protected_nopar } { Ne } { Npe } \@@_tmp:w { new_protected_nopar } { Nx } { Npx } % \end{macrocode} % \end{macro} % % \begin{macro}[documented-as=\cs_set:Nn] % { -% \cs_set:cn , \cs_set:cx , -% \cs_set_nopar:cn , \cs_set_nopar:cx , -% \cs_set_protected:cn , \cs_set_protected:cx , -% \cs_set_protected_nopar:cn , \cs_set_protected_nopar:cx , -% \cs_gset:cn , \cs_gset:cx , -% \cs_gset_nopar:cn , \cs_gset_nopar:cx , -% \cs_gset_protected:cn , \cs_gset_protected:cx , -% \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:cx , -% \cs_new:cn , \cs_new:cx , -% \cs_new_nopar:cn , \cs_new_nopar:cx , -% \cs_new_protected:cn , \cs_new_protected:cx , -% \cs_new_protected_nopar:cn , \cs_new_protected_nopar:cx , +% \cs_set:cn , \cs_set:ce , \cs_set:cx , +% \cs_set_nopar:cn , \cs_set_nopar:ce , \cs_set_nopar:cx , +% \cs_set_protected:cn , \cs_set_protected:ce , \cs_set_protected:cx , +% \cs_set_protected_nopar:cn , \cs_set_protected_nopar:ce , \cs_set_protected_nopar:cx , +% \cs_gset:cn , \cs_gset:ce , \cs_gset:cx , +% \cs_gset_nopar:cn , \cs_gset_nopar:ce , \cs_gset_nopar:cx , +% \cs_gset_protected:cn , \cs_gset_protected:ce , \cs_gset_protected:cx , +% \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:ce , \cs_gset_protected_nopar:cx , +% \cs_new:cn , \cs_new:ce , \cs_new:cx , +% \cs_new_nopar:cn , \cs_new_nopar:ce , \cs_new_nopar:cx , +% \cs_new_protected:cn , \cs_new_protected:ce , \cs_new_protected:cx , +% \cs_new_protected_nopar:cn , \cs_new_protected_nopar:ce , \cs_new_protected_nopar:cx , % } % The 24 |c| variants simply use \cs{exp_args:Nc}. % \begin{macrocode} @@ -3067,28 +3118,40 @@ } } \@@_tmp:w { set } { n } +\@@_tmp:w { set } { e } \@@_tmp:w { set } { x } \@@_tmp:w { set_nopar } { n } +\@@_tmp:w { set_nopar } { e } \@@_tmp:w { set_nopar } { x } \@@_tmp:w { set_protected } { n } +\@@_tmp:w { set_protected } { e } \@@_tmp:w { set_protected } { x } \@@_tmp:w { set_protected_nopar } { n } +\@@_tmp:w { set_protected_nopar } { e } \@@_tmp:w { set_protected_nopar } { x } \@@_tmp:w { gset } { n } +\@@_tmp:w { gset } { e } \@@_tmp:w { gset } { x } \@@_tmp:w { gset_nopar } { n } +\@@_tmp:w { gset_nopar } { e } \@@_tmp:w { gset_nopar } { x } \@@_tmp:w { gset_protected } { n } +\@@_tmp:w { gset_protected } { e } \@@_tmp:w { gset_protected } { x } \@@_tmp:w { gset_protected_nopar } { n } +\@@_tmp:w { gset_protected_nopar } { e } \@@_tmp:w { gset_protected_nopar } { x } \@@_tmp:w { new } { n } +\@@_tmp:w { new } { e } \@@_tmp:w { new } { x } \@@_tmp:w { new_nopar } { n } +\@@_tmp:w { new_nopar } { e } \@@_tmp:w { new_nopar } { x } \@@_tmp:w { new_protected } { n } +\@@_tmp:w { new_protected } { e } \@@_tmp:w { new_protected } { x } \@@_tmp:w { new_protected_nopar } { n } +\@@_tmp:w { new_protected_nopar } { e } \@@_tmp:w { new_protected_nopar } { x } % \end{macrocode} % \end{macro} @@ -3133,7 +3196,7 @@ \cs_if_exist:NTF #1 {#2} { - \msg_error:nnx { kernel } { variable-not-defined } + \msg_error:nne { kernel } { variable-not-defined } { \token_to_str:N #1 } } } @@ -3196,7 +3259,7 @@ { \group_begin: \int_set:Nn \tex_escapechar:D { `\\ } - \exp_args:NNx + \exp_args:NNe \group_end: #1 { \token_to_str:N #2 = \cs_meaning:N #2 } } @@ -3214,7 +3277,7 @@ { \@@_group_show:NN \int_zero:N 0 } \cs_new_protected:Npn \@@_group_show:NN #1#2 { - \use:x + \use:e { #1 \tex_interactionmode:D \int_set:Nn \tex_tracingonline:D {#2} @@ -3247,7 +3310,7 @@ % catcode~$12$. If the token in question isn't a macro, the token % \cs{scan_stop:} is returned instead. % \begin{macrocode} -\use:x +\use:e { \exp_not:n { \cs_new:Npn \@@_prefix_arg_replacement:wN #1 } \tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \s_@@_stop #4 } diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index aaa4333858..e300bccc67 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -313,7 +313,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \bool_if:NF \l_@@_expl_bool { - \cs_set_protected:Npx \ExplSyntaxOff + \cs_set_protected:Npe \ExplSyntaxOff { \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } } \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } } diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 34b6ca44ef..dfa6b3c451 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -1372,7 +1372,7 @@ \group_end: } { - \msg_error:nnx { kernel } { variable-not-defined } + \msg_error:nne { kernel } { variable-not-defined } { \token_to_str:N #2 } } } diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx index f3a5021425..6e455b099c 100644 --- a/macros/latex/contrib/l3kernel/l3candidates.dtx +++ b/macros/latex/contrib/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -129,10 +129,10 @@ % % \begin{function}[added = 2018-04-01] % { -% \tl_build_put_left:Nn, \tl_build_put_left:Nx, -% \tl_build_gput_left:Nn, \tl_build_gput_left:Nx, -% \tl_build_put_right:Nn, \tl_build_put_right:Nx, -% \tl_build_gput_right:Nn, \tl_build_gput_right:Nx, +% \tl_build_put_left:Nn, \tl_build_put_left:Ne, +% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, +% \tl_build_put_right:Nn, \tl_build_put_right:Ne, +% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne % } % \begin{syntax} % \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens} @@ -198,9 +198,9 @@ % hence in the \texttt{x}-expanding assignment. % \begin{macrocode} \cs_new_protected:Npn \seq_set_filter:NNn - { \@@_set_filter:NNNn \__kernel_tl_set:Nx } + { \@@_set_filter:NNNn \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_gset_filter:NNn - { \@@_set_filter:NNNn \__kernel_tl_gset:Nx } + { \@@_set_filter:NNNn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_set_filter:NNNn #1#2#3#4 { \@@_push_item_def:n { \bool_if:nT {#4} { \@@_wrap_item:n {##1} } } @@ -231,8 +231,8 @@ % name is that of \meta{tl~var} followed by~|'|. There are between $0$ % and $4$ \cs{exp_end:} to keep track of when \meta{left} and % \meta{right} should be put into the \meta{next~tl}. The -% \meta{assignment} is \cs{cs_set_nopar:Npx} if the variable is local, -% and \cs{cs_gset_nopar:Npx} if it is global. +% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local, +% and \cs{cs_gset_nopar:Npe} if it is global. % % \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N} % \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN} @@ -241,7 +241,7 @@ % derived from |#1| without any external data such as a counter. % Empty that \meta{next~tl} and setup the structure. The local and % global versions only differ by a single function -% \cs[no-index]{cs_(g)set_nopar:Npx} used for all assignments: this is +% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is % important because only that function is stored in the \meta{tl~var} % and \meta{next~tl} for subsequent assignments. In principle % \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N} @@ -250,9 +250,9 @@ % clear it locally or globally as appropriate. % \begin{macrocode} \cs_new_protected:Npn \tl_build_begin:N #1 - { \@@_build_begin:NN \cs_set_nopar:Npx #1 } + { \@@_build_begin:NN \cs_set_nopar:Npe #1 } \cs_new_protected:Npn \tl_build_gbegin:N #1 - { \@@_build_begin:NN \cs_gset_nopar:Npx #1 } + { \@@_build_begin:NN \cs_gset_nopar:Npe #1 } \cs_new_protected:Npn \@@_build_begin:NN #1#2 { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 } \cs_new_protected:Npn \@@_build_begin:NNN #1#2#3 @@ -283,8 +283,8 @@ % % \begin{macro} % { -% \tl_build_put_right:Nn, \tl_build_put_right:Nx, -% \tl_build_gput_right:Nn, \tl_build_gput_right:Nx, +% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx, +% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx, % \@@_build_last:NNn, \@@_build_put:nn, \@@_build_put:nw % } % Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most @@ -299,32 +299,24 @@ % place without ever becoming a macro argument). We use % \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading % arguments that are likely very long token lists. We use -% \cs[no-index]{cs_(g)set_nopar:Npx} rather than -% \cs[no-index]{tl_(g)set:Nx} partly for the same reason and partly +% \cs[no-index]{cs_(g)set_nopar:Npe} rather than +% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly % because the assignments are interrupted by brace tricks, which % implies that the assignment does not simply set the token list to an % |x|-expansion of the second argument. % \begin{macrocode} \cs_new_protected:Npn \tl_build_put_right:Nn #1#2 { - \cs_set_nopar:Npx #1 + \cs_set_nopar:Npe #1 { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } } } -\cs_new_protected:Npn \tl_build_put_right:Nx #1#2 - { - \cs_set_nopar:Npx #1 - { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 } - } +\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx } \cs_new_protected:Npn \tl_build_gput_right:Nn #1#2 { - \cs_gset_nopar:Npx #1 + \cs_gset_nopar:Npe #1 { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } } } -\cs_new_protected:Npn \tl_build_gput_right:Nx #1#2 - { - \cs_gset_nopar:Npx #1 - { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 } - } +\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx } \cs_new_protected:Npn \@@_build_last:NNn #1#2 { \if_false: { { \fi: @@ -350,8 +342,9 @@ % % \begin{macro} % { -% \tl_build_put_left:Nn, \tl_build_put_left:Nx, -% \tl_build_gput_left:Nn, \tl_build_gput_left:Nx, \@@_build_put_left:NNn +% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx, +% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx, +% \@@_build_put_left:NNn % } % See \cs{tl_build_put_right:Nn} for all the machinery. We could % easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just @@ -359,11 +352,11 @@ % |x|-expanding assignment. % \begin{macrocode} \cs_new_protected:Npn \tl_build_put_left:Nn #1 - { \@@_build_put_left:NNn \cs_set_nopar:Npx #1 } -\cs_generate_variant:Nn \tl_build_put_left:Nn { Nx } + { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 } +\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx } \cs_new_protected:Npn \tl_build_gput_left:Nn #1 - { \@@_build_put_left:NNn \cs_gset_nopar:Npx #1 } -\cs_generate_variant:Nn \tl_build_gput_left:Nn { Nx } + { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 } +\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx } \cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3 { #1 #2 @@ -389,7 +382,7 @@ % trick to wrap all the \meta{right} parts together. % \begin{macrocode} \cs_new_protected:Npn \tl_build_get:NN - { \@@_build_get:NNN \__kernel_tl_set:Nx } + { \@@_build_get:NNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \@@_build_get:NNN #1#2#3 { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } } \cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4 @@ -410,16 +403,16 @@ % Get the data then clear the \meta{next~tl} recursively until finding % an empty one. It is perhaps wasteful to repeatedly use % \cs{cs_to_str:N}. The local/global scope is checked by -% \cs{tl_set:Nx} or \cs{tl_gset:Nx}. +% \cs{tl_set:Ne} or \cs{tl_gset:Ne}. % \begin{macrocode} \cs_new_protected:Npn \tl_build_end:N #1 { - \@@_build_get:NNN \__kernel_tl_set:Nx #1 #1 + \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1 \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N } \cs_new_protected:Npn \tl_build_gend:N #1 { - \@@_build_get:NNN \__kernel_tl_gset:Nx #1 #1 + \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1 \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N } \cs_new_protected:Npn \@@_build_end_loop:NN #1#2 diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx index fc9cdd9e92..4192ec029a 100644 --- a/macros/latex/contrib/l3kernel/l3cctab.dtx +++ b/macros/latex/contrib/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -543,7 +543,7 @@ { \seq_gpop:NNF \g_@@_unused_seq \l_@@_internal_a_tl { \@@_begin_aux: } - \exp_args:Nx \@@_chk_group_begin:n + \@@_chk_group_begin:e { \@@_nesting_number:N \l_@@_internal_a_tl } \seq_gpush:NV \g_@@_stack_seq \l_@@_internal_a_tl \exp_args:NV \@@_gset:n \l_@@_internal_a_tl @@ -566,7 +566,7 @@ \seq_gpop:NNTF \g_@@_stack_seq \l_@@_internal_a_tl { \seq_gpush:NV \g_@@_unused_seq \l_@@_internal_a_tl - \exp_args:Nx \@@_chk_group_end:n + \exp_args:Ne \@@_chk_group_end:n { \@@_nesting_number:N \l_@@_internal_a_tl } \@@_select:N \l_@@_internal_a_tl } @@ -575,7 +575,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_chk_group_begin:n,\@@_chk_group_end:n} +% \begin{macro} +% {\@@_chk_group_begin:n,\@@_chk_group_begin:e, \@@_chk_group_end:n} % Catcode tables are not allowed to be intermixed with groups, so here % we check that they are properly nested regarding \TeX{} groups. % \cs{@@_chk_group_begin:n} stores the current group level in a stack, @@ -636,10 +637,11 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_chk_group_begin:n #1 { - \seq_gpush:Nx \g_@@_group_seq + \seq_gpush:Ne \g_@@_group_seq { \int_use:N \tex_currentgrouplevel:D } \cs_set_eq:cN { @@_group_ #1 _chk: } \prg_do_nothing: } +\cs_generate_variant:Nn \@@_chk_group_begin:n { e } \cs_new_protected:Npn \@@_chk_group_end:n #1 { \seq_gpop:NN \g_@@_group_seq \l_@@_internal_b_tl @@ -650,7 +652,7 @@ } { \cs_if_exist_p:c { @@_group_ #1 _chk: } } { - \msg_error:nnx { cctab } { group-mismatch } + \msg_error:nne { cctab } { group-mismatch } { \int_sign:n { \tex_currentgrouplevel:D - \l_@@_internal_b_tl } @@ -675,10 +677,10 @@ \exp_after:wN \exp_after:wN \exp_after:wN \@@_nesting_number:w \exp_after:wN \token_to_str:N #1 } - \use:x + \use:e { \cs_new:Npn \exp_not:N \@@_nesting_number:w - ##1 \tl_to_str:n { g_@@_ } ##2 \tl_to_str:n { _cctab } {##2} + #1 \tl_to_str:n { g_@@_ } #2 \tl_to_str:n { _cctab } {#2} } } % \end{macrocode} @@ -754,13 +756,13 @@ \@@_chk_if_valid_aux:NTF #1 { \prg_return_true: } { - \msg_error:nnx { cctab } { invalid-cctab } + \msg_error:nne { cctab } { invalid-cctab } { \token_to_str:N #1 } \prg_return_false: } } { - \msg_error:nnx { kernel } { command-not-defined } + \msg_error:nne { kernel } { command-not-defined } { \token_to_str:N #1 } \prg_return_false: } diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 0eaac6a532..8fc2f6870b 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -123,8 +123,8 @@ % % \begin{function}[added = 2014-07-05] % { -% \clist_const:Nn, \clist_const:Nx, -% \clist_const:cn, \clist_const:cx +% \clist_const:Nn, \clist_const:Ne, +% \clist_const:cn, \clist_const:ce % } % \begin{syntax} % \cs{clist_const:Nn} \meta{clist~var} \Arg{comma list} @@ -216,14 +216,14 @@ % % \begin{function}[added = 2011-09-06] % { -% \clist_set:Nn, \clist_set:NV, -% \clist_set:No, \clist_set:Nx, -% \clist_set:cn, \clist_set:cV, -% \clist_set:co, \clist_set:cx, -% \clist_gset:Nn, \clist_gset:NV, -% \clist_gset:No, \clist_gset:Nx, -% \clist_gset:cn, \clist_gset:cV, -% \clist_gset:co, \clist_gset:cx +% \clist_set:Nn, \clist_set:NV, \clist_set:Ne, +% \clist_set:No, +% \clist_set:cn, \clist_set:cV, \clist_set:ce, +% \clist_set:co, +% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne, +% \clist_gset:No, +% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce, +% \clist_gset:co % } % \begin{syntax} % \cs{clist_set:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -241,17 +241,17 @@ % \begin{function}[updated = 2011-09-05] % { % \clist_put_left:Nn, \clist_put_left:NV, -% \clist_put_left:Nv, -% \clist_put_left:No, \clist_put_left:Nx, +% \clist_put_left:Nv, \clist_put_left:Ne, +% \clist_put_left:No, % \clist_put_left:cn, \clist_put_left:cV, -% \clist_put_left:cv, -% \clist_put_left:co, \clist_put_left:cx, +% \clist_put_left:cv, \clist_put_left:ce, +% \clist_put_left:co, % \clist_gput_left:Nn, \clist_gput_left:NV, -% \clist_gput_left:Nv, -% \clist_gput_left:No, \clist_gput_left:Nx, +% \clist_gput_left:Nv, \clist_gput_left:Ne, +% \clist_gput_left:No, % \clist_gput_left:cn, \clist_gput_left:cV, -% \clist_gput_left:cv, -% \clist_gput_left:co, \clist_gput_left:cx +% \clist_gput_left:cv, \clist_gput_left:ce, +% \clist_gput_left:co % } % \begin{syntax} % \cs{clist_put_left:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -268,17 +268,17 @@ % \begin{function}[updated = 2011-09-05] % { % \clist_put_right:Nn, \clist_put_right:NV, -% \clist_put_right:Nv, -% \clist_put_right:No, \clist_put_right:Nx, +% \clist_put_right:Nv, \clist_put_right:Ne, +% \clist_put_right:No, % \clist_put_right:cn, \clist_put_right:cV, -% \clist_put_right:cv, -% \clist_put_right:co, \clist_put_right:cx, +% \clist_put_right:cv, \clist_put_right:ce, +% \clist_put_right:co, % \clist_gput_right:Nn, \clist_gput_right:NV, -% \clist_gput_right:Nv, -% \clist_gput_right:No, \clist_gput_right:Nx, +% \clist_gput_right:Nv, \clist_gput_right:Ne, +% \clist_gput_right:No, % \clist_gput_right:cn, \clist_gput_right:cV, -% \clist_gput_right:cv, -% \clist_gput_right:co, \clist_gput_right:cx +% \clist_gput_right:cv, \clist_gput_right:ce, +% \clist_gput_right:co % } % \begin{syntax} % \cs{clist_put_right:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -444,7 +444,7 @@ % \texttt{n}-type comma lists. % % \begin{function}[rEXP, updated = 2012-06-29] -% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN} +% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN, \clist_map_function:eN} % \begin{syntax} % \cs{clist_map_function:NN} \meta{clist~var} \meta{function} % \end{syntax} @@ -548,7 +548,7 @@ % \end{function} % % \begin{function}[EXP, added = 2012-07-13] -% {\clist_count:N, \clist_count:c, \clist_count:n} +% {\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e} % \begin{syntax} % \cs{clist_count:N} \meta{clist~var} % \end{syntax} @@ -706,10 +706,10 @@ % % \begin{function} % { -% \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx, -% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx, -% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx, -% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx +% \clist_push:Nn, \clist_push:NV, \clist_push:No, +% \clist_push:cn, \clist_push:cV, \clist_push:co, +% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, +% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, % } % \begin{syntax} % \cs{clist_push:Nn} \meta{clist~var} \Arg{items} @@ -722,7 +722,7 @@ % \section{Using a single item} % % \begin{function}[added = 2014-07-17, EXP] -% {\clist_item:Nn, \clist_item:cn, \clist_item:nn} +% {\clist_item:Nn, \clist_item:cn, \clist_item:nn, \clist_item:en} % \begin{syntax} % \cs{clist_item:Nn} \meta{clist~var} \Arg{int expr} % \end{syntax} @@ -984,15 +984,16 @@ % % \begin{macro} % { -% \clist_const:Nn, \clist_const:cn, -% \clist_const:Nx, \clist_const:cx +% \clist_const:Nn, \clist_const:Ne, \clist_const:Nx, +% \clist_const:cn, \clist_const:ce, \clist_const:cx % } % Creating and initializing a constant comma list is done by % sanitizing all items (stripping spaces and braces). % \begin{macrocode} \cs_new_protected:Npn \clist_const:Nn #1#2 - { \tl_const:Nx #1 { \@@_sanitize:n {#2} } } -\cs_generate_variant:Nn \clist_const:Nn { c , Nx , cx } + { \tl_const:Ne #1 { \@@_sanitize:n {#2} } } +\cs_generate_variant:Nn \clist_const:Nn { Ne , c , ce } +\cs_generate_variant:Nn \clist_const:Nn { Nx , cx } % \end{macrocode} % \end{macro} % @@ -1066,9 +1067,9 @@ % in the case of an empty comma-list. % \begin{macrocode} \cs_new_protected:Npn \clist_set_from_seq:NN - { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Nx } + { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gset_from_seq:NN - { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx } + { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_set_from_seq:NNNN #1#2#3#4 { \seq_if_empty:NTF #4 @@ -1107,9 +1108,9 @@ % a little work to do. % \begin{macrocode} \cs_new_protected:Npn \clist_concat:NNN - { \@@_concat:NNNN \__kernel_tl_set:Nx } + { \@@_concat:NNNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gconcat:NNN - { \@@_concat:NNNN \__kernel_tl_gset:Nx } + { \@@_concat:NNNN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_concat:NNNN #1#2#3#4 { #1 #2 @@ -1140,47 +1141,49 @@ % % \begin{macro} % { -% \clist_set:Nn, \clist_set:NV, -% \clist_set:No, \clist_set:Nx, -% \clist_set:cn, \clist_set:cV, -% \clist_set:co, \clist_set:cx +% \clist_set:Nn, \clist_set:NV, \clist_set:Ne, +% \clist_set:No, \clist_set:Nx, +% \clist_set:cn, \clist_set:cV, \clist_set:ce, +% \clist_set:co, \clist_set:cx % } % \begin{macro} % { -% \clist_gset:Nn, \clist_gset:NV, +% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne, % \clist_gset:No, \clist_gset:Nx, -% \clist_gset:cn, \clist_gset:cV, -% \clist_gset:co, \clist_gset:cx +% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce, +% \clist_gset:co, \clist_gset:cx, % } % \begin{macrocode} \cs_new_protected:Npn \clist_set:Nn #1#2 - { \__kernel_tl_set:Nx #1 { \@@_sanitize:n {#2} } } + { \__kernel_tl_set:Ne #1 { \@@_sanitize:n {#2} } } \cs_new_protected:Npn \clist_gset:Nn #1#2 - { \__kernel_tl_gset:Nx #1 { \@@_sanitize:n {#2} } } -\cs_generate_variant:Nn \clist_set:Nn { NV , No , Nx , c , cV , co , cx } -\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx } + { \__kernel_tl_gset:Ne #1 { \@@_sanitize:n {#2} } } +\cs_generate_variant:Nn \clist_set:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \clist_set:Nn { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gset:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \clist_gset:Nn { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \clist_put_left:Nn, \clist_put_left:NV, -% \clist_put_left:Nv, -% \clist_put_left:No, \clist_put_left:Nx, -% \clist_put_left:cn, \clist_put_left:cV, -% \clist_put_left:cv, -% \clist_put_left:co, \clist_put_left:cx +% \clist_put_left:Nn, \clist_put_left:NV, +% \clist_put_left:Nv, \clist_put_left:Ne, +% \clist_put_left:No, \clist_put_left:Nx, +% \clist_put_left:cn, \clist_put_left:cV, +% \clist_put_left:cv, \clist_put_left:ce, +% \clist_put_left:co, \clist_put_left:cx, % } % \UnitTested % \begin{macro} % { % \clist_gput_left:Nn, \clist_gput_left:NV, -% \clist_gput_left:Nv, +% \clist_gput_left:Nv, \clist_gput_left:Ne, % \clist_gput_left:No, \clist_gput_left:Nx, % \clist_gput_left:cn, \clist_gput_left:cV, -% \clist_gput_left:cv, -% \clist_gput_left:co, \clist_gput_left:cx +% \clist_gput_left:cv, \clist_gput_left:ce, +% \clist_gput_left:co, \clist_gput_left:cx, % } % \UnitTested % \begin{macro}{\@@_put_left:NNNn} @@ -1197,10 +1200,10 @@ #2 \l_@@_internal_clist {#4} #1 #3 \l_@@_internal_clist #3 } -\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_put_left:Nn { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_gput_left:Nn { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1209,21 +1212,21 @@ % \begin{macro} % { % \clist_put_right:Nn, \clist_put_right:NV, -% \clist_put_right:Nv, +% \clist_put_right:Nv, \clist_put_right:Ne, % \clist_put_right:No, \clist_put_right:Nx, % \clist_put_right:cn, \clist_put_right:cV, -% \clist_put_right:cv, +% \clist_put_right:cv, \clist_put_right:ce, % \clist_put_right:co, \clist_put_right:cx % } % \UnitTested % \begin{macro} % { % \clist_gput_right:Nn, \clist_gput_right:NV, -% \clist_gput_right:Nv, +% \clist_gput_right:Nv, \clist_gput_right:Ne, % \clist_gput_right:No, \clist_gput_right:Nx, % \clist_gput_right:cn, \clist_gput_right:cV, -% \clist_gput_right:cv, -% \clist_gput_right:co, \clist_gput_right:cx +% \clist_gput_right:cv, \clist_gput_right:ce, +% \clist_gput_right:cx, \clist_gput_right:co % } % \UnitTested % \begin{macro}{\@@_put_right:NNNn} @@ -1237,10 +1240,14 @@ #2 \l_@@_internal_clist {#4} #1 #3 #3 \l_@@_internal_clist } -\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \clist_put_right:Nn + { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_put_right:Nn + { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gput_right:Nn + { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_gput_right:Nn + { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1288,9 +1295,9 @@ % result can safely be an empty comma list. % \begin{macrocode} \cs_new_protected:Npn \clist_pop:NN - { \@@_pop:NNN \__kernel_tl_set:Nx } + { \@@_pop:NNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gpop:NN - { \@@_pop:NNN \__kernel_tl_gset:Nx } + { \@@_pop:NNN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_pop:NNN #1#2#3 { \if_meaning:w #2 \c_empty_clist @@ -1335,9 +1342,9 @@ } \prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF } \prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 } + { \@@_pop_TF:NNN \__kernel_tl_set:Ne #1 #2 } \prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 } + { \@@_pop_TF:NNN \__kernel_tl_gset:Ne #1 #2 } \cs_new_protected:Npn \@@_pop_TF:NNN #1#2#3 { \if_meaning:w #2 \c_empty_clist @@ -1357,32 +1364,20 @@ % % \begin{macro}{ % \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx, -% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx +% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx, % } % \UnitTested % \begin{macro}{ % \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx, -% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx +% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx, % } % \UnitTested % Pushing to a comma list is the same as adding on the left. % \begin{macrocode} \cs_new_eq:NN \clist_push:Nn \clist_put_left:Nn -\cs_new_eq:NN \clist_push:NV \clist_put_left:NV -\cs_new_eq:NN \clist_push:No \clist_put_left:No -\cs_new_eq:NN \clist_push:Nx \clist_put_left:Nx -\cs_new_eq:NN \clist_push:cn \clist_put_left:cn -\cs_new_eq:NN \clist_push:cV \clist_put_left:cV -\cs_new_eq:NN \clist_push:co \clist_put_left:co -\cs_new_eq:NN \clist_push:cx \clist_put_left:cx +\cs_generate_variant:Nn \clist_push:Nn { NV , No , Nx , c , cV , co , cx } \cs_new_eq:NN \clist_gpush:Nn \clist_gput_left:Nn -\cs_new_eq:NN \clist_gpush:NV \clist_gput_left:NV -\cs_new_eq:NN \clist_gpush:No \clist_gput_left:No -\cs_new_eq:NN \clist_gpush:Nx \clist_gput_left:Nx -\cs_new_eq:NN \clist_gpush:cn \clist_gput_left:cn -\cs_new_eq:NN \clist_gpush:cV \clist_gput_left:cV -\cs_new_eq:NN \clist_gpush:co \clist_gput_left:co -\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx +\cs_generate_variant:Nn \clist_gpush:Nn { NV , No , Nx , c , cV , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1415,7 +1410,7 @@ { \clist_if_in:NnF \l_@@_internal_remove_clist {##1} { - \tl_put_right:Nx \l_@@_internal_remove_clist + \tl_put_right:Ne \l_@@_internal_remove_clist { \clist_if_empty:NF \l_@@_internal_remove_clist { , } \@@_if_wrap:nTF {##1} { \exp_not:n { {##1} } } { \exp_not:n {##1} } @@ -1478,9 +1473,9 @@ % the second step removes it. % \begin{macrocode} \cs_new_protected:Npn \clist_remove_all:Nn - { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx } + { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gremove_all:Nn - { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx } + { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_remove_all:NNNn #1#2#3#4 { \@@_if_wrap:nTF {#4} @@ -1534,9 +1529,9 @@ % \texttt{N}-type comma lists, but the slow-down is not too bad. % \begin{macrocode} \cs_new_protected:Npn \clist_reverse:N #1 - { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } } + { \__kernel_tl_set:Ne #1 { \exp_args:No \clist_reverse:n {#1} } } \cs_new_protected:Npn \clist_greverse:N #1 - { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } } + { \__kernel_tl_gset:Ne #1 { \exp_args:No \clist_reverse:n {#1} } } \cs_generate_variant:Nn \clist_reverse:N { c } \cs_generate_variant:Nn \clist_greverse:N { c } % \end{macrocode} @@ -1657,7 +1652,7 @@ { \@@_if_wrap:nTF {#2} { - \cs_set:Npx \@@_tmp:w ##1 + \cs_set:Npe \@@_tmp:w ##1 { \exp_not:N \tl_if_eq:nnT {##1} \exp_not:n @@ -1726,7 +1721,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\clist_map_function:nN} +% \begin{macro}{\clist_map_function:nN, \clist_map_function:eN} % \UnitTested % \begin{macro}{\@@_map_function_n:Nn} % \begin{macro}{\@@_map_unbrace:wn} @@ -1745,6 +1740,7 @@ \s_@@_stop \clist_map_break: , \prg_break_point:Nn \clist_map_break: { } } +\cs_generate_variant:Nn \clist_map_function:nN { e } \cs_new:Npn \@@_map_function_n:Nn #1 #2 { \@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop @@ -1893,7 +1889,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n} +% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e} % \begin{macro}{\@@_count:n} % \begin{macro}{\@@_count:w} % Counting the items in a comma list is done using the same approach as for @@ -1933,6 +1929,7 @@ } } \exp_args:No \@@_tmp:w \c_space_tl +\cs_generate_variant:Nn \clist_count:n { e } % \end{macrocode} % \end{macro} % \end{macro} @@ -2110,7 +2107,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\clist_item:nn} +% \begin{macro}{\clist_item:nn, \clist_item:en} % \begin{macro}{ % \@@_item_n:nw, % \@@_item_n_loop:nw, @@ -2130,6 +2127,7 @@ {#1} \@@_item_n:nw } +\cs_generate_variant:Nn \clist_item:nn { e } \cs_new:Npn \@@_item_n:nw #1 { \@@_item_n_loop:nw {#1} \prg_do_nothing: } \cs_new:Npn \@@_item_n_loop:nw #1 #2, @@ -2188,9 +2186,9 @@ % |#2| serving as a dummy code to prevent a check performed by this % auxiliary. % \begin{macrocode} -\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \clist_show:N { c } -\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \clist_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { @@ -2205,7 +2203,7 @@ { } { } } { - \msg_error:nnxx { clist } { non-clist } + \msg_error:nnee { clist } { non-clist } { \token_to_str:N #2 } { \tl_to_str:N #2 } } } @@ -2217,8 +2215,8 @@ % A variant of the above: no existence check, empty first argument for % the message. % \begin{macrocode} -\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nnxxxx } -\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nnxxxx } +\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nneeee } +\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nneeee } \cs_new_protected:Npn \@@_show:Nn #1#2 { #1 { clist } { show } diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index 2269c6c686..94824400de 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -602,7 +602,7 @@ \coffin_if_exist:NTF #1 { #2 } { - \msg_error:nnx { coffin } { unknown } + \msg_error:nne { coffin } { unknown } { \token_to_str:N #1 } } } @@ -736,7 +736,7 @@ } #5 #1 \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 } - \@@_set_pole:Nnx #1 { T } + \@@_set_pole:Nne #1 { T } { { 0pt } { @@ -749,7 +749,7 @@ \box_clear:N \l_@@_internal_box } } -\cs_new_protected:Npx \@@_set_vertical_aux: +\cs_new_protected:Npe \@@_set_vertical_aux: { \bool_lazy_and:nnT { \cs_if_exist_p:N \fmtname } @@ -834,7 +834,7 @@ #5 #6 #1 \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 } - \@@_set_pole:Nnx #1 { T } + \@@_set_pole:Nne #1 { T } { { 0pt } { @@ -949,7 +949,7 @@ \prop_get:cnNF { coffin ~ \@@_to_value:N #1 ~ poles } {#2} #3 { - \msg_error:nnxx { coffin } { unknown-pole } + \msg_error:nnee { coffin } { unknown-pole } { \exp_not:n {#2} } { \token_to_str:N #1 } \tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } } } @@ -989,17 +989,17 @@ % \coffin_gset_vertical_pole:Nnn, \coffin_gset_vertical_pole:cnn % } % \begin{macro}{\@@_set_vertical_pole:NnnN} -% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nnx} +% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nne} % Setting the pole of a coffin at the user/designer level requires a % bit more care. The idea here is to provide a reasonable interface to % the system, then to do the setting with full expansion. The % three-argument version is used internally to do a direct setting. % \begin{macrocode} \cs_new_protected:Npn \coffin_set_horizontal_pole:Nnn #1#2#3 - { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cnx } + { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cne } \cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c } \cs_new_protected:Npn \coffin_gset_horizontal_pole:Nnn #1#2#3 - { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cnx } + { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cne } \cs_generate_variant:Nn \coffin_gset_horizontal_pole:Nnn { c } \cs_new_protected:Npn \@@_set_horizontal_pole:NnnN #1#2#3#4 { @@ -1014,10 +1014,10 @@ } } \cs_new_protected:Npn \coffin_set_vertical_pole:Nnn #1#2#3 - { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cnx } + { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cne } \cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c } \cs_new_protected:Npn \coffin_gset_vertical_pole:Nnn #1#2#3 - { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cnx } + { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cne } \cs_generate_variant:Nn \coffin_gset_vertical_pole:Nnn { c } \cs_new_protected:Npn \@@_set_vertical_pole:NnnN #1#2#3#4 { @@ -1036,7 +1036,7 @@ \prop_put:cnn { coffin ~ \@@_to_value:N #1 ~ poles } {#2} {#3} } -\cs_generate_variant:Nn \@@_set_pole:Nnn { Nnx } +\cs_generate_variant:Nn \@@_set_pole:Nnn { Nne } % \end{macrocode} % \end{macro} % \end{macro} @@ -1070,9 +1070,9 @@ % of the underlying \TeX{} box. % \begin{macrocode} \cs_new_protected:Npn \@@_update_corners:N #1 - { \@@_update_corners:NN #1 \prop_put:Nnx } + { \@@_update_corners:NN #1 \prop_put:Nne } \cs_new_protected:Npn \@@_gupdate_corners:N #1 - { \@@_update_corners:NN #1 \prop_gput:Nnx } + { \@@_update_corners:NN #1 \prop_gput:Nne } \cs_new_protected:Npn \@@_update_corners:NN #1#2 { \exp_args:Nc \@@_update_corners:NNN @@ -1115,9 +1115,9 @@ % coffins. % \begin{macrocode} \cs_new_protected:Npn \@@_update_poles:N #1 - { \@@_update_poles:NN #1 \prop_put:Nnx } + { \@@_update_poles:NN #1 \prop_put:Nne } \cs_new_protected:Npn \@@_gupdate_poles:N #1 - { \@@_update_poles:NN #1 \prop_gput:Nnx } + { \@@_update_poles:NN #1 \prop_gput:Nne } \cs_new_protected:Npn \@@_update_poles:NN #1#2 { \exp_args:Nc \@@_update_poles:NNN @@ -1277,7 +1277,7 @@ % more complexity, we now work out both slopes and pass to an auxiliary. % \begin{macrocode} { - \use:x + \use:e { \@@_calculate_intersection:nnnnnn { \dim_to_fp:n {#4} / \dim_to_fp:n {#3} } @@ -1494,17 +1494,17 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_set_bounding:N #1 { - \prop_put:Nnx \l_@@_bounding_prop { tl } + \prop_put:Nne \l_@@_bounding_prop { tl } { { 0pt } { \dim_eval:n { \box_ht:N #1 } } } - \prop_put:Nnx \l_@@_bounding_prop { tr } + \prop_put:Nne \l_@@_bounding_prop { tr } { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { \box_ht:N #1 } } } \dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 } - \prop_put:Nnx \l_@@_bounding_prop { bl } + \prop_put:Nne \l_@@_bounding_prop { bl } { { 0pt } { \dim_use:N \l_@@_internal_dim } } - \prop_put:Nnx \l_@@_bounding_prop { br } + \prop_put:Nne \l_@@_bounding_prop { br } { { \dim_eval:n { \box_wd:N #1 } } { \dim_use:N \l_@@_internal_dim } @@ -1523,13 +1523,13 @@ \cs_new_protected:Npn \@@_rotate_bounding:nnn #1#2#3 { \@@_rotate_vector:nnNN {#2} {#3} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_bounding_prop {#1} + \prop_put:Nne \l_@@_bounding_prop {#1} { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } } \cs_new_protected:Npn \@@_rotate_corner:Nnnn #1#2#3#4 { \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_corners_prop {#2} + \prop_put:Nne \l_@@_corners_prop {#2} { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } } % \end{macrocode} @@ -1546,7 +1546,7 @@ \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim \@@_rotate_vector:nnNN {#5} {#6} \l_@@_x_prime_dim \l_@@_y_prime_dim - \prop_put:Nnx \l_@@_poles_prop {#2} + \prop_put:Nne \l_@@_poles_prop {#2} { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } { \dim_use:N \l_@@_x_prime_dim } @@ -1647,7 +1647,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_shift_corner:Nnnn #1#2#3#4 { - \prop_put:Nnx \l_@@_corners_prop {#2} + \prop_put:Nne \l_@@_corners_prop {#2} { { \dim_eval:n { #3 - \l_@@_left_corner_dim } } { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } @@ -1655,7 +1655,7 @@ } \cs_new_protected:Npn \@@_shift_pole:Nnnnnn #1#2#3#4#5#6 { - \prop_put:Nnx \l_@@_poles_prop {#2} + \prop_put:Nne \l_@@_poles_prop {#2} { { \dim_eval:n { #3 - \l_@@_left_corner_dim } } { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } @@ -1821,13 +1821,13 @@ \cs_new_protected:Npn \@@_scale_corner:Nnnn #1#2#3#4 { \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_corners_prop {#2} + \prop_put:Nne \l_@@_corners_prop {#2} { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } } \cs_new_protected:Npn \@@_scale_pole:Nnnnnn #1#2#3#4#5#6 { \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_poles_prop {#2} + \prop_put:Nne \l_@@_poles_prop {#2} { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } {#5} {#6} @@ -1844,14 +1844,14 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_x_shift_corner:Nnnn #1#2#3#4 { - \prop_put:Nnx \l_@@_corners_prop {#2} + \prop_put:Nne \l_@@_corners_prop {#2} { { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} } } \cs_new_protected:Npn \@@_x_shift_pole:Nnnnnn #1#2#3#4#5#6 { - \prop_put:Nnx \l_@@_poles_prop {#2} + \prop_put:Nne \l_@@_poles_prop {#2} { { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} {#5} {#6} @@ -2068,7 +2068,7 @@ \tl_if_in:nnTF {#2} { - } { \tl_set:Nn \l_@@_internal_tl { {#2} } } { \tl_set:Nn \l_@@_internal_tl { { #1 - #2 } } } - \exp_last_unbraced:NNo \@@_set_pole:Nnx \l_@@_aligned_coffin + \exp_last_unbraced:NNo \@@_set_pole:Nne \l_@@_aligned_coffin { \l_@@_internal_tl } { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } @@ -2092,7 +2092,7 @@ } \cs_new_protected:Npn \@@_offset_corner:Nnnnn #1#2#3#4#5#6 { - \prop_put:cnx + \prop_put:cne { coffin ~ \@@_to_value:N \l_@@_aligned_coffin \c_space_tl corners @@ -2130,11 +2130,11 @@ { \dim_compare:nNnTF {#2} < {#6} { - \@@_set_pole:Nnx #9 { T } + \@@_set_pole:Nne #9 { T } { { 0pt } {#6} { 1000pt } { 0pt } } } { - \@@_set_pole:Nnx #9 { T } + \@@_set_pole:Nne #9 { T } { { 0pt } {#2} { 1000pt } { 0pt } } } } @@ -2142,11 +2142,11 @@ { \dim_compare:nNnTF {#2} < {#6} { - \@@_set_pole:Nnx #9 { B } + \@@_set_pole:Nne #9 { B } { { 0pt } {#2} { 1000pt } { 0pt } } } { - \@@_set_pole:Nnx #9 { B } + \@@_set_pole:Nne #9 { B } { { 0pt } {#6} { 1000pt } { 0pt } } } } @@ -2490,10 +2490,10 @@ % structure then the code complains. % \begin{macrocode} \cs_new_protected:Npn \coffin_show_structure:N - { \@@_show_structure:NN \msg_show:nnxxxx } + { \@@_show_structure:NN \msg_show:nneeee } \cs_generate_variant:Nn \coffin_show_structure:N { c } \cs_new_protected:Npn \coffin_log_structure:N - { \@@_show_structure:NN \msg_log:nnxxxx } + { \@@_show_structure:NN \msg_log:nneeee } \cs_generate_variant:Nn \coffin_log_structure:N { c } \cs_new_protected:Npn \@@_show_structure:NN #1#2 { @@ -2525,8 +2525,8 @@ % } % Essentially a combination of \cs{coffin_show_structure:N} and % \cs{box_show:Nnn}, but we need to avoid having two prompts, so we -% use \cs{msg_term:nnxxxx} instead of -% \cs{msg_show:nnxxxx} in the |show| case. +% use \cs{msg_term:nneeee} instead of +% \cs{msg_show:nneeee} in the |show| case. % \begin{macrocode} \cs_new_protected:Npn \coffin_show:N #1 { \coffin_show:Nnn #1 \c_max_int \c_max_int } @@ -2535,10 +2535,10 @@ { \coffin_log:Nnn #1 \c_max_int \c_max_int } \cs_generate_variant:Nn \coffin_log:N { c } \cs_new_protected:Npn \coffin_show:Nnn - { \@@_show:NNNnn \msg_term:nnxxxx \box_show:Nnn } + { \@@_show:NNNnn \msg_term:nneeee \box_show:Nnn } \cs_generate_variant:Nn \coffin_show:Nnn { c } \cs_new_protected:Npn \coffin_log:Nnn - { \@@_show:NNNnn \msg_log:nnxxxx \box_show:Nnn } + { \@@_show:NNNnn \msg_log:nneeee \box_show:Nnn } \cs_generate_variant:Nn \coffin_log:Nnn { c } \cs_new_protected:Npn \@@_show:NNNnn #1#2#3#4#5 { diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx index 1453001a2a..3d225b2d22 100644 --- a/macros/latex/contrib/l3kernel/l3color.dtx +++ b/macros/latex/contrib/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -720,7 +720,7 @@ \cs_generate_variant:Nn \exp_last_unbraced:Nf { c } \cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4 { - \tl_set:Nx #4 + \tl_set:Ne #4 { \cs_if_exist_use:cTF { @@_convert_ #1 _ #2 :w } { #3 \s_@@_stop } @@ -850,11 +850,11 @@ % otherwise expands, then starts working through the expression itself. % At the end, we apply the payload. % \begin{macrocode} -\cs_new_protected:Npx \@@_parse:nN #1#2 +\cs_new_protected:Npe \@@_parse:nN #1#2 { - \tl_set:Nx \exp_not:c { l_@@_named_ . _tl } + \tl_set:Ne \exp_not:c { l_@@_named_ . _tl } { \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl } - \prop_put:NVx \exp_not:c { l_@@_named_ . _prop } + \prop_put:NVe \exp_not:c { l_@@_named_ . _prop } \exp_not:c { l_@@_named_ . _tl } { \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl } \exp_not:N \exp_args:Ne \exp_not:N \@@_parse_aux:nN @@ -889,14 +889,14 @@ \prop_get:cnNTF { l_@@_named_ #3 _prop } {#1} \l_@@_value_tl - { \tl_set:Nx #2 { {#1} { \l_@@_value_tl } } } + { \tl_set:Ne #2 { {#1} { \l_@@_value_tl } } } { \tl_set_eq:Nc \l_@@_model_tl { l_@@_named_ #3 _tl } \prop_get:cVN { l_@@_named_ #3 _prop } \l_@@_model_tl \l_@@_value_tl \@@_convert:nnN \l_@@_model_tl {#1} \l_@@_value_tl - \tl_set:Nx #2 + \tl_set:Ne #2 { {#1} { \l_@@_value_tl } @@ -926,7 +926,7 @@ \group_begin: \@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl \@@_parse_loop:w #3 ! ! ! ! \s_@@_stop - \tl_set:Nx \l_@@_internal_tl + \tl_set:Ne \l_@@_internal_tl { { \l_@@_model_tl } { \l_@@_value_tl } } \exp_args:NNNV \group_end: \tl_set:Nn #1 \l_@@_internal_tl @@ -951,7 +951,7 @@ { \fp_compare_p:nNn {#1} > { 0 } } { \fp_compare_p:nNn {#1} < { 100 } } { - \use:x + \use:e { \@@_parse_loop:nn {#1} { \tl_if_blank:nTF {#2} { white } {#2} } @@ -1004,7 +1004,7 @@ { \@@_parse_gray:n {#2} } { \@@_parse_std:n {#2} } } - \tl_set:Nx \l_@@_value_tl + \tl_set:Ne \l_@@_value_tl { \@@_parse_mix:NVVn \l_@@_model_tl \l_@@_value_tl \l_@@_next_value_tl {#1} @@ -1400,7 +1400,7 @@ \@@_convert:VVN \l_@@_model_tl \l_color_fixed_model_tl \l_@@_value_tl } - \tl_set:Nx #1 + \tl_set:Ne #1 { { \l_color_fixed_model_tl } { \l_@@_value_tl } } } } @@ -1419,12 +1419,12 @@ % will therefore always be available. The finalisation is separate from the % main function so it can also be applied to \emph{e.g.}~page color. % \begin{macrocode} -\cs_new_protected:Npx \@@_finalise_current: +\cs_new_protected:Npe \@@_finalise_current: { - \tl_set:Nx \exp_not:c { l_@@_named_ . _tl } + \tl_set:Ne \exp_not:c { l_@@_named_ . _tl } { \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl } \prop_clear:N \exp_not:c { l_@@_named_ . _prop } - \prop_put:NVx \exp_not:c { l_@@_named_ . _prop } + \prop_put:NVe \exp_not:c { l_@@_named_ . _prop } \exp_not:c { l_@@_named_ . _tl } { \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl } } @@ -1488,7 +1488,7 @@ { \cs_if_exist:cTF { @@_parse_model_ #1 :w } { - \tl_set:Nx #3 + \tl_set:Ne #3 { \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop } } { \msg_error:nnn { color } { unknown-model } {#1} } @@ -1496,7 +1496,7 @@ \cs_new_protected:Npn \@@_select_swap:Nnn #1#2#3 { \@@_convert:nVnN {#2} \l_color_fixed_model_tl {#3} \l_@@_value_tl - \tl_set:Nx #1 + \tl_set:Ne #1 { { \l_color_fixed_model_tl } { \l_@@_value_tl } } } % \end{macrocode} @@ -1781,10 +1781,10 @@ { \@@_parse:nN {#2} \l_@@_named_tl \tl_clear_new:c { l_@@_named_ #1 _tl } - \tl_set:cx { l_@@_named_ #1 _tl } + \tl_set:ce { l_@@_named_ #1 _tl } { \@@_model:N \l_@@_named_tl } \prop_clear_new:c { l_@@_named_ #1 _prop } - \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl } + \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl } { \@@_values:N \l_@@_named_tl } \@@_set:nnw {#1} {#2} #2 ! \s_@@_stop } @@ -1811,7 +1811,7 @@ \@@_parse:nN {#2} \l_@@_internal_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_@@_internal_tl \l_@@_internal_tl - \prop_put:cxx { l_@@_named_ #1 _prop } + \prop_put:cee { l_@@_named_ #1 _prop } { \@@_model:N \l_@@_internal_tl } { \@@_values:N \l_@@_internal_tl } } @@ -1828,16 +1828,16 @@ {#1} {#3} } } -\cs_new_protected:Npx \@@_set_aux:nnn #1#2#3 +\cs_new_protected:Npe \@@_set_aux:nnn #1#2#3 { \exp_not:N \@@_set_colon:nnw {#2} {#3} #1 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop } -\use:x +\use:e { \cs_new_protected:Npn \exp_not:N \@@_set_colon:nnw - ##1##2 ##3 \c_colon_str ##4 \c_colon_str - ##5 \exp_not:N \s_@@_stop + #1#2 #3 \c_colon_str #4 \c_colon_str + #5 \exp_not:N \s_@@_stop } { \tl_if_blank:nTF {#4} @@ -1851,10 +1851,10 @@ \tl_if_blank:nF {#2} { \@@_select:nnN {#2} {#4} \l_@@_named_tl - \tl_set:Nx \l_@@_internal_tl { \@@_model:N \l_@@_named_tl } + \tl_set:Ne \l_@@_internal_tl { \@@_model:N \l_@@_named_tl } \tl_if_empty:cT { l_@@_named_ #1 _tl } { \tl_set_eq:cN { l_@@_named_ #1 _tl } \l_@@_internal_tl } - \prop_put:cVx { l_@@_named_ #1 _prop } \l_@@_internal_tl + \prop_put:cVe { l_@@_named_ #1 _prop } \l_@@_internal_tl { \@@_values:N \l_@@_named_tl } \@@_set_loop:nw {#1} #3 \s_@@_mark #5 \s_@@_stop } @@ -1867,9 +1867,9 @@ \prop_clear_new:c { l_@@_named_ #1 _prop } \str_if_eq:nnTF {#2} { . } { - \tl_set:cx { l_@@_named_ #1 _tl } + \tl_set:ce { l_@@_named_ #1 _tl } { \@@_model:N \l_@@_current_tl } - \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl } + \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl } { \@@_values:N \l_@@_current_tl } } { @@ -1909,7 +1909,7 @@ % \begin{macrocode} \prop_new:c { l_@@_named_._prop } \tl_new:c { l_@@_named_._tl } -\tl_set:cx { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl } +\tl_set:ce { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl } % \end{macrocode} % \end{variable} % @@ -2005,7 +2005,7 @@ \group_begin: \cs_set_protected:Npn \@@_tmp:w #1#2 { - \cs_new_protected:cpx { @@_export_format_ #1 :nnN } ##1##2##3 + \cs_new_protected:cpe { @@_export_format_ #1 :nnN } ##1##2##3 { \exp_not:N \@@_export:nnnNN {#2} {##1} {##2} ##3 \exp_not:c { @@_export_ #1 :Nw } @@ -2042,10 +2042,10 @@ % required, then do some simple maths. % \begin{macrocode} \cs_new_protected:cpn { @@_export_comma-sep-rgb:Nw } #1#2 ~ #3 ~ #4 \s_@@_stop - { \tl_set:Nx #1 { #2 , #3 , #4 } } + { \tl_set:Ne #1 { #2 , #3 , #4 } } \cs_new_protected:Npn \@@_export_HTML:Nw #1#2 ~ #3 ~ #4 \s_@@_stop { - \tl_set:Nx #1 + \tl_set:Ne #1 { \@@_export_HTML:n {#2} \@@_export_HTML:n {#3} @@ -2195,7 +2195,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nnx} +% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nne} % A shared auxiliary to do the basics of setting up a new model: reserve a % number, create a white-equivalent, set up links to the backend. % \begin{macrocode} @@ -2204,13 +2204,13 @@ \int_gincr:N \g_@@_model_int \clist_map_inline:nn { fill , stroke , select } { - \cs_new_protected:cpx { @@_backend_ ##1 _ #1 :n } ####1 + \cs_new_protected:cpe { @@_backend_ ##1 _ #1 :n } ####1 { \exp_not:c { @@_backend_ ##1 _ #2 :nn } { color \int_use:N \g_@@_model_int } {####1} } } - \cs_new_protected:cpx { @@_model_ #1 _white: } + \cs_new_protected:cpe { @@_model_ #1 _white: } { \prop_put:Nnn \exp_not:N \l_@@_named_white_prop {#1} { \exp_not:n {#3} } @@ -2219,7 +2219,7 @@ } \use:c { @@_model_ #1 _white: } } -\cs_generate_variant:Nn \@@_model_init:nnn { nnx } +\cs_generate_variant:Nn \@@_model_init:nnn { nne } % \end{macrocode} % \end{macro} % @@ -2309,7 +2309,7 @@ \use:c { @@_model_separation_ #8 :nnnnnn } {#6} {#7} {#1} {#2} {#3} {#4} \prop_gput:Nnn \g_@@_alternative_model_prop {#6} {#8} - \prop_gput:Nnx \g_@@_colorants_prop {#6} + \prop_gput:Nne \g_@@_colorants_prop {#6} { \str_convert_pdfname:n {#7} } } \cs_new_protected:Npn \@@_model_separation_cmyk:nnnnnn #1#2#3#4#5#6 @@ -2355,7 +2355,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_model_convert:nnn #1#2#3 { - \cs_new:cpx { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop + \cs_new:cpe { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop { \exp_not:N \exp_args:NNe \exp_not:N \use:nn \exp_not:c { @@_convert_ #2 _ #3 :w } @@ -2520,7 +2520,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_model_devicen:nnn #1#2#3 { - \exp_args:Nx \@@_model_devicen:nnnn + \exp_args:Ne \@@_model_devicen:nnnn { \clist_count:n {#2} } {#1} {#2} {#3} } % \end{macrocode} @@ -2531,7 +2531,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_model_devicen:nnnn #1#2#3#4 { - \@@_model_init:nnx {#4} { devicen } + \@@_model_init:nne {#4} { devicen } { 0 \prg_replicate:nn { #1 - 1 } { ~ 0 } } @@ -2539,7 +2539,7 @@ { \@@_model_devicen_parse_generic:nn } {#4} {#1} \@@_model_devicen_init:nnn {#1} {#2} {#3} - \@@_model_devicen_convert:nnnx {#4} {#2} {#3} + \@@_model_devicen_convert:nnne {#4} {#2} {#3} { 1 \prg_replicate:nn { #1 - 1 } { ~ 1 } } @@ -2602,7 +2602,7 @@ {#1} { \@@_model_devicen_parse:nw {#2} ##1 , ##2 , \q_nil , \s_@@_stop } } - \cs_new:cpx { @@_parse_mix_ #1 :nw } + \cs_new:cpe { @@_parse_mix_ #1 :nw } ##1 ##2 \s_@@_mark ##3 \s_@@_stop { \exp_not:N \@@_model_devicen_mix:nw {##1} @@ -2680,7 +2680,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_model_devicen_init:nnnn #1#2#3#4 { - \tl_set:Nx \l_@@_internal_tl + \tl_set:Ne \l_@@_internal_tl { \prg_replicate:nn {#1} { 1.0 ~ } } \int_zero:N \l_@@_internal_int \clist_map_inline:nn {#4} @@ -2691,7 +2691,7 @@ \exp_after:wN \@@_model_devicen_transform:w \l_@@_value_tl , 0 , 0 , 0 , \s_@@_stop {#1} {#2} } - \tl_put_right:Nx \l_@@_internal_tl + \tl_put_right:Ne \l_@@_internal_tl { \prg_replicate:nn {#1} { neg ~ 1.0 ~ add ~ #1 ~ -1 ~ roll ~ } @@ -2699,7 +2699,7 @@ \prg_replicate:nn {#2} { ~ pop } ~ #1 ~ 1 ~ roll } - \use:x + \use:e { \@@_backend_devicen_init:nnn { @@ -2737,7 +2737,7 @@ } \cs_new_protected:Npn \@@_model_devicen_transform:nnn #1#2#3 { - \tl_put_right:Nx \l_@@_internal_tl + \tl_put_right:Ne \l_@@_internal_tl { \fp_compare:nNnF {#3} = \c_zero_fp { @@ -2761,7 +2761,7 @@ { \use:c { @@_model_devicen_convert_ #2 :nnn } {#1} {#3} } -\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnnx } +\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnne } \cs_new_protected:Npn \@@_model_devicen_convert_cmyk:nnn #1#2 { \tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk } @@ -2780,7 +2780,7 @@ \cs_new_protected:Npn \@@_model_devicen_convert:nnnnn #1#2#3#4#5 { \cs_new:cpn { @@_convert_ #2 _ #1 :w } ##1 \s_@@_stop {#5} - \cs_new:cpx { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop + \cs_new:cpe { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop { \exp_not:c { @@_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w } \prg_replicate:nn {#3} { { 1 } } @@ -2963,7 +2963,7 @@ } \cs_new_protected:Npn \@@_model_iccbased:nn #1#2 { - \exp_args:NNx \prop_get:NnNTF \c_@@_icc_colorspace_signatures_prop + \prop_get:NeNTF \c_@@_icc_colorspace_signatures_prop { \file_hex_dump:nnn { #1 } { 17 } { 20 } } \l_@@_internal_tl { \exp_last_unbraced:NV \@@_model_iccbased_aux:nnnnnn @@ -2986,7 +2986,7 @@ \cs_new:cpn { @@_convert_ #5 _gray:w } ##1 \s_@@_stop { 0 } \cs_new:cpn { @@_convert_gray_ #5 :w } ##1 \s_@@_stop { #2 } \use:c { @@_model_devicen_parse_ #1 :nn } {#5} {#1} - \exp_args:Nx \@@_backend_iccbased_init:nnn + \exp_args:Ne \@@_backend_iccbased_init:nnn { \file_full_name:n {#6} } {#1} {#4} } % \end{macrocode} @@ -3047,9 +3047,9 @@ % is similar to the keys module here. % \begin{macrocode} \cs_new_protected:Npn \color_show:n - { \@@_show:Nn \msg_show:nnxxxx } + { \@@_show:Nn \msg_show:nneeee } \cs_new_protected:Npn \color_log:n - { \@@_show:Nn \msg_log:nnxxxx } + { \@@_show:Nn \msg_log:nneeee } \cs_new_protected:Npn \@@_show:Nn #1#2 { #1 { color } { show } diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index d700a0f021..8efdc986cc 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -108,12 +108,12 @@ % \cs{flag_if_exist_p:n}, and if not raises a kernel-level error. % \end{function} % -% \begin{function}{\__kernel_debug_log:x} +% \begin{function}{\__kernel_debug_log:e} % \begin{syntax} -% \cs{__kernel_debug_log:x} \Arg{message text} +% \cs{__kernel_debug_log:e} \Arg{message text} % \end{syntax} % If the \texttt{log-functions} option is active, this function writes -% the \meta{message text} to the log file using \cs{iow_log:x}. +% the \meta{message text} to the log file using \cs{iow_log:e}. % Otherwise, the \meta{message text} is ignored using \cs{use_none:n}. % This function is only created if debugging is enabled. % \end{function} @@ -220,7 +220,7 @@ } \cs_set_protected:Npn \debug_resume: { - \__kernel_tl_set:Nx \l_@@_suspended_tl + \__kernel_tl_set:Ne \l_@@_suspended_tl { \tl_tail:N \l_@@_suspended_tl } \tl_if_empty:NT \l_@@_suspended_tl { @@ -269,7 +269,7 @@ \@@_suspended:T \use_none:nnn \cs_if_exist:NF ##1 { - \msg_error:nnx { debug } { non-declared-variable } + \msg_error:nne { debug } { non-declared-variable } { \token_to_str:N ##1 } } } @@ -278,7 +278,7 @@ \@@_suspended:T \use_none:nnn \cs_if_exist:NF ##1 { - \msg_error:nnx { kernel } { command-not-defined } + \msg_error:nne { kernel } { command-not-defined } { \token_to_str:N ##1 } } } @@ -362,7 +362,7 @@ \if:w #1 \scan_stop: \cs_gset_nopar:Npn #1 {#2} \else: - \msg_error:nnxxx { debug } { local-global } + \msg_error:nneee { debug } { local-global } {#1} {#2} { \iow_char:N \\ #3 } \fi: \fi: @@ -374,19 +374,19 @@ % \end{macro} % % \begin{macro}{\@@_log-functions_on:, \@@_log-functions_off:} -% \begin{macro}{\__kernel_debug_log:x} +% \begin{macro}{\__kernel_debug_log:e} % These two functions (corresponding to the \pkg{expl3} option -% \texttt{log-functions}) control whether \cs{__kernel_debug_log:x} +% \texttt{log-functions}) control whether \cs{__kernel_debug_log:e} % writes to the log file or not. By default, logging is off. % \begin{macrocode} \cs_new_protected:cpn { @@_log-functions_on: } { - \cs_set_protected:Npn \__kernel_debug_log:x - { \@@_suspended:T \use_none:nn \iow_log:x } + \cs_set_protected:Npn \__kernel_debug_log:e + { \@@_suspended:T \use_none:nn \iow_log:e } } \cs_new_protected:cpn { @@_log-functions_off: } - { \cs_set_protected:Npn \__kernel_debug_log:x { \use_none:n } } -\cs_new_protected:Npn \__kernel_debug_log:x { \use_none:n } + { \cs_set_protected:Npn \__kernel_debug_log:e { \use_none:n } } +\cs_new_protected:Npn \__kernel_debug_log:e { \use_none:n } % \end{macrocode} % \end{macro} % \end{macro} @@ -510,11 +510,11 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_generate_parameter_list:NNN #1#2#3 { - \__kernel_tl_set:Nx \l_@@_internal_tl + \__kernel_tl_set:Ne \l_@@_internal_tl { \exp_last_unbraced:Nf \use_ii:nnn \cs_split_function:N #1 } - \__kernel_tl_set:Nx #2 + \__kernel_tl_set:Ne #2 { \exp_args:NV \@@_build_parm_text:n \l_@@_internal_tl } - \__kernel_tl_set:Nx #3 + \__kernel_tl_set:Ne #3 { \exp_args:NV \@@_build_arg_list:n \l_@@_internal_tl } } \cs_new:Npn \@@_build_parm_text:n #1 @@ -658,7 +658,7 @@ { \cs_gset_eq:cN { @@_ \cs_to_str:N #1 } #1 \@@_generate_parameter_list:NNN #1 \l_@@_tmpa_tl \l_@@_tmpb_tl - \exp_args:Nx \tex_scantokens:D + \exp_args:Ne \tex_scantokens:D { \tex_global:D \cs_prefix_spec:N #1 \tex_def:D \exp_not:N #1 @@ -673,23 +673,23 @@ } \cs_set_protected:Npn \@@_add_to_debug_code:Nnn #1#2#3 { - \use:x + \use:e { \cs_set:Npn \exp_not:N \@@_tmp:w - ####1 \tl_to_str:n { macro: } - ####2 \tl_to_str:n { -> } - ####3 \c_backslash_str \tl_to_str:n { @@_ } + ##1 \tl_to_str:n { macro: } + ##2 \tl_to_str:n { -> } + ##3 \c_backslash_str \tl_to_str:n { @@_ } \cs_to_str:N #1 - ####4 \s_@@_stop + ##4 \s_@@_stop { - \exp_not:N \exp_args:Nx \exp_not:N \tex_scantokens:D + \exp_not:N \exp_args:Ne \exp_not:N \tex_scantokens:D { - \tex_global:D ####1 - \tex_def:D \exp_not:N #1 ####2 + \tex_global:D ##1 + \tex_def:D \exp_not:N #1 ##2 { - ####3 \tl_to_str:n {#2} + ##3 \tl_to_str:n {#2} \c_backslash_str @@_ \cs_to_str:N #1 - ####4 \tl_to_str:n {#3} + ##4 \tl_to_str:n {#3} } } } @@ -721,7 +721,7 @@ } \cs_set_protected:Npn \@@_patch_weird:Nnn #1#2#3 { - \use:x + \use:e { \tex_endlinechar:D -1 \scan_stop: \exp_not:N \tex_scantokens:D @@ -790,8 +790,8 @@ % % % \begin{macrocode} -\cs_gset_protected:Npn \__kernel_tl_set:Nx { \cs_set_nopar:Npx } -\cs_gset_protected:Npn \__kernel_tl_gset:Nx { \cs_gset_nopar:Npx } +\cs_gset_protected:Npn \__kernel_tl_set:Ne { \cs_set_nopar:Npe } +\cs_gset_protected:Npn \__kernel_tl_gset:Ne { \cs_gset_nopar:Npe } % \end{macrocode} % % Patching where the first argument to a function needs scope-checking: @@ -838,20 +838,21 @@ \skip_set_eq:NN \skip_add:Nn \skip_sub:Nn - \__kernel_tl_set:Nx + \__kernel_tl_set:Ne \tl_clear:N \tl_set_eq:NN \tl_put_left:Nn \tl_put_left:NV + \tl_put_left:Nv + \tl_put_left:Ne \tl_put_left:No - \tl_put_left:Nx \tl_put_right:Nn \tl_put_right:NV + \tl_put_right:Nv + \tl_put_right:Ne \tl_put_right:No - \tl_put_right:Nx \tl_build_begin:N \tl_build_put_right:Nn - \tl_build_put_right:Nx \tl_build_put_left:Nn \vbox_set:Nn \vbox_set_top:Nn @@ -902,20 +903,21 @@ \skip_gset_eq:NN \skip_gadd:Nn \skip_gsub:Nn - \__kernel_tl_gset:Nx + \__kernel_tl_gset:Ne \tl_gclear:N \tl_gset_eq:NN \tl_gput_left:Nn \tl_gput_left:NV + \tl_gput_left:Nv + \tl_gput_left:Ne \tl_gput_left:No - \tl_gput_left:Nx \tl_gput_right:Nn \tl_gput_right:NV + \tl_gput_right:Nv + \tl_gput_right:Ne \tl_gput_right:No - \tl_gput_right:Nx \tl_build_gbegin:N \tl_build_gput_right:Nn - \tl_build_gput_right:Nx \tl_build_gput_left:Nn \vbox_gset:Nn \vbox_gset_top:Nn @@ -940,7 +942,6 @@ \muskip_const:Nn \skip_const:Nn \tl_const:Nn - \tl_const:Nx } % \end{macrocode} % @@ -991,7 +992,7 @@ \__kernel_patch:nnn { } { - \__kernel_debug_log:x + \__kernel_debug_log:e { Defining~\token_to_str:N #1~ \msg_line_context: } } { \__kernel_chk_if_free_cs:N } @@ -1000,7 +1001,7 @@ { \cs_if_free:NF #4 { - \__kernel_debug_log:x + \__kernel_debug_log:e { Variant~\token_to_str:N #4~% already~defined;~ not~ changing~ it~ \msg_line_context: @@ -1013,7 +1014,7 @@ \__kernel_patch:nnn { \cs_if_exist:cF { \c_@@_code_root_str #1 } - { \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } } + { \__kernel_debug_log:e { Defining~key~#1~\msg_line_context: } } } { } { \@@_cmd_set_direct:nn } @@ -1021,7 +1022,7 @@ \__kernel_patch:nnn { } { - \__kernel_debug_log:x + \__kernel_debug_log:e { Defining~message~ #1 / #2 ~\msg_line_context: } } { \@@_chk_free:nn } @@ -1059,7 +1060,7 @@ { \@@_trace_push:nnN { regex } { 1 } \@@_escape_use:nnnn \group_begin: - \__kernel_tl_set:Nx \l_@@_internal_a_tl + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \@@_trace_pop:nnN { regex } { 1 } \@@_escape_use:nnnn } \use_none:nnn } @@ -1081,7 +1082,7 @@ { \@@_build_for_cs:n } \__kernel_patch:nnn { - \@@_trace:nnx { regex } { 2 } + \@@_trace:nne { regex } { 2 } { regex~new~state~ L=\int_use:N \l_@@_left_state_int ~ -> ~ @@ -1103,24 +1104,24 @@ \__kernel_patch:nnn { \@@_trace_push:nnN { regex } { 1 } \@@_match:n - \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list } + \@@_trace:nne { regex } { 1 } { analyzing~query~token~list } } { \@@_trace_pop:nnN { regex } { 1 } \@@_match:n } { \@@_match:n } \__kernel_patch:nnn { \@@_trace_push:nnN { regex } { 1 } \@@_match_cs:n - \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list } + \@@_trace:nne { regex } { 1 } { analyzing~query~token~list } } { \@@_trace_pop:nnN { regex } { 1 } \@@_match_cs:n } { \@@_match_cs:n } \__kernel_patch:nnn - { \@@_trace:nnx { regex } { 1 } { initializing } } + { \@@_trace:nne { regex } { 1 } { initializing } } { } { \@@_match_init: } \__kernel_patch:nnn { - \@@_trace:nnx { regex } { 2 } + \@@_trace:nne { regex } { 2 } { state~\int_use:N \l_@@_curr_state_int } } { } @@ -1153,7 +1154,7 @@ { \char_set_catcode_parameter:N \# \tex_endlinechar:D -1 \scan_stop: - \exp_args:Nx \tex_scantokens:D + \exp_args:Ne \tex_scantokens:D { \tex_global:D \cs_prefix_spec:N #1 \tex_def:D \exp_not:N #1 \cs_parameter_spec:N #1 @@ -1172,7 +1173,7 @@ { \tl_map_inline:nn {#1} { - \exp_args:NNx \__kernel_patch:Nn ##1 + \exp_args:NNe \__kernel_patch:Nn ##1 { { \c_hash_str 1 } { @@ -1238,7 +1239,7 @@ { \tl_map_inline:nn {#1} { - \exp_args:NNx \__kernel_patch:Nn ##1 + \exp_args:NNe \__kernel_patch:Nn ##1 { { \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 } @@ -1286,7 +1287,7 @@ { \tl_map_inline:nn {#1} { - \exp_args:NNx \__kernel_patch:Nn ##1 + \exp_args:NNe \__kernel_patch:Nn ##1 { { \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 } @@ -1325,7 +1326,7 @@ { \clist_map_inline:nn { :nNnT , :nNnF , :nNnTF , _p:nNn } { - \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 } + \exp_args:Nce \__kernel_patch:Nn { #1 ##1 } { { \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 } @@ -1349,7 +1350,7 @@ { \clist_map_inline:nn { :nT , :nF , :nTF , _p:n } { - \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 } + \exp_args:Nce \__kernel_patch:Nn { #1 ##1 } { { \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 } diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index a60fe16ff4..c9564f4080 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -145,11 +145,11 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_warn_once:nnNnn #1#2#3#4#5 { - \cs_gset_protected:Npx #3 + \cs_gset_protected:Npe #3 { \__kernel_if_debug:TF { - \exp_not:N \msg_warning:nnxxx + \exp_not:N \msg_warning:nneee { deprecation } { deprecated-command } {#1} { \token_to_str:N #3 } @@ -193,7 +193,7 @@ \exp_not:N \msg_expandable_error:nnnnn { deprecation } { deprecated-command } { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} } - \exp_not:N \msg_error:nnxxx + \exp_not:N \msg_error:nneee { deprecation } { deprecated-command } { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} } } @@ -682,25 +682,25 @@ { meaning } { meaning_remove } } { - \use:x + \use:e { \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n } - \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ####1####2####3 + \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ##1##2##3 { \peek_remove_spaces:n - { \exp_not:c { peek_ #1 :NTF } ####1 {####2} {####3} } + { \exp_not:c { peek_ #1 :NTF } ##1 {##2} {##3} } } \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n } - \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ####1####2 + \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ##1##2 { \peek_remove_spaces:n - { \exp_not:c { peek_ #1 :NT } ####1 {####2} } + { \exp_not:c { peek_ #1 :NT } ##1 {##2} } } \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n } - \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ####1####2 + \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ##1##2 { \peek_remove_spaces:n - { \exp_not:c { peek_ #1 :NF } ####1 {####2} } + { \exp_not:c { peek_ #1 :NF } ##1 {##2} } } } } diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index b1744b9f7b..ed675106ba 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/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-08-29} +% \date{Released 2023-10-10} % \maketitle % \tableofcontents % @@ -957,7 +957,7 @@ and all files in that bundle must be distributed together. % \seq_set_split:NoV, % \str_case:fn, % \tl_count:f, -% \tl_greplace_all:Nxn, +% \tl_greplace_all:Nen, % \tl_greplace_all:Nno, % \tl_if_head_eq_charcode:oNTF, % \tl_if_head_eq_charcode:oNT, @@ -968,17 +968,14 @@ and all files in that bundle must be distributed together. % \tl_if_in:NoTF, % \tl_if_in:NoT, % \tl_if_in:NoF, -% \tl_remove_all:Nx, -% \tl_replace_all:Nxn, -% \tl_replace_all:Nnx, +% \tl_remove_all:Ne, +% \tl_replace_all:Nen, +% \tl_replace_all:Nne, % \tl_replace_all:Non, % \tl_replace_all:Nno, % \tl_replace_once:Noo, % \tl_to_str:f, % \tl_to_str:o, -% \prop_get:NxNTF, -% \prop_put:Nxn, -% \prop_gput:NVx, % } % A few missing variants. % \begin{macrocode} @@ -1001,9 +998,6 @@ and all files in that bundle must be distributed together. \cs_generate_variant:Nn \tl_replace_once:Nnn { Noo } \cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV } \cs_generate_variant:Nn \tl_to_str:n { f , o } -\cs_generate_variant:Nn \prop_get:NnNTF { Nx } -\cs_generate_variant:Nn \prop_put:Nnn { Nx } -\cs_generate_variant:Nn \prop_gput:Nnn { NVx } % \end{macrocode} % \end{macro} % @@ -1033,7 +1027,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_trim_right:Nn #1#2 { \cs_set:Npn \@@_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} } - \__kernel_tl_set:Nx #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop } + \__kernel_tl_set:Ne #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop } } \cs_generate_variant:Nn \@@_trim_right:Nn { No } % \end{macrocode} @@ -1076,7 +1070,7 @@ and all files in that bundle must be distributed together. #1 \g_@@_module_name_tl } } -\cs_new_protected:Npx \@@_replace_at_at_aux:Nn #1#2 +\cs_new_protected:Npe \@@_replace_at_at_aux:Nn #1#2 { \tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ } \tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ } @@ -1130,7 +1124,7 @@ and all files in that bundle must be distributed together. \@@_trim_right:Nn \l_@@_detect_internals_tl _ \@@_trim_right:Nn \l_@@_detect_internals_tl : \@@_trim_right:No \l_@@_detect_internals_tl { \token_to_str:N : } - \msg_warning:nnxxx { l3doc } { foreign-internal } + \msg_warning:nneee { l3doc } { foreign-internal } { \tl_to_str:N \l_@@_detect_internals_cs_tl } { \tl_to_str:N \l_@@_detect_internals_tl } { \tl_to_str:N \g_@@_module_name_tl } @@ -1253,14 +1247,14 @@ and all files in that bundle must be distributed together. \@@_if_almost_str:nTF {#1} { \@@_key_get_base_TF:nN {#1} \l_@@_tmpa_tl - \__kernel_tl_set:Nx #2 + \__kernel_tl_set:Ne #2 { \@@_split_function_do:on \l_@@_tmpa_tl { \@@_base_form_aux:nnN } } } { \tl_set:Nn #2 {#1} } } -\cs_new:Npx \@@_key_get_base_TF:nN #1#2 +\cs_new:Npe \@@_key_get_base_TF:nN #1#2 { - \__kernel_tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} } + \__kernel_tl_set:Ne #2 { \exp_not:N \tl_to_str:n {#1} } \tl_if_in:NoF #2 { \tl_to_str:n {:} } { \exp_not:N \prg_break: } \tl_if_in:onT { #2 z } { \tl_to_str:n {TF} z } @@ -1312,7 +1306,7 @@ and all files in that bundle must be distributed together. \tl_if_head_eq_charcode:nNTF {#4} : { #2 {#1} } { - \use:x + \use:e { \exp_not:n {#3} { \@@_base_form_aux:nnN {#4} {#5} #6 } @@ -1602,7 +1596,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_set_protected:Npn \ifnot@excluded { - \exp_args:Nxx \expanded@notin + \exp_args:Nee \expanded@notin { \c_backslash_str \tl_to_str:N \macro@namepart , } { \exp_args:NV \tl_to_str:n \index@excludelist } } @@ -2016,7 +2010,7 @@ and all files in that bundle must be distributed together. \verbatim@font \@@_if_almost_str:VT \l_@@_cmd_tl { - \__kernel_tl_set:Nx \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl } + \__kernel_tl_set:Ne \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl } \bool_if:NT \g_@@_cs_break_bool { \regex_replace_all:nnN @@ -2038,13 +2032,13 @@ and all files in that bundle must be distributed together. { \quark_if_no_value:NF \l_@@_cmd_index_tl { - \__kernel_tl_set:Nx \l_@@_cmd_tl + \__kernel_tl_set:Ne \l_@@_cmd_tl { \c_backslash_str \exp_not:o { \l_@@_cmd_index_tl } } } \exp_args:No \@@_key_get:n { \l_@@_cmd_tl } \quark_if_no_value:NF \l_@@_cmd_module_tl { - \__kernel_tl_set:Nx \l_@@_index_module_tl + \__kernel_tl_set:Ne \l_@@_index_module_tl { \tl_to_str:N \l_@@_cmd_module_tl } } \@@_special_index_module:ooonN @@ -2153,19 +2147,19 @@ and all files in that bundle must be distributed together. % \end{macro} % % \begin{macro} -% {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:xN} +% {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:eN} % Create a \pkg{hyperref} anchor from a macro name~|#1| and stores it % in the token list variable~|#2|. For instance, |\prg_replicate:nn| % gives |doc/function//prg/replicate:nn|. % \begin{macrocode} \cs_new_protected:Npn \@@_get_hyper_target:nN #1#2 { - \__kernel_tl_set:Nx #2 { \tl_to_str:n {#1} } - \tl_replace_all:Nxn #2 { \c_underscore_str } { / } - \tl_remove_all:Nx #2 { \c_backslash_str } + \__kernel_tl_set:Ne #2 { \tl_to_str:n {#1} } + \tl_replace_all:Nen #2 { \c_underscore_str } { / } + \tl_remove_all:Ne #2 { \c_backslash_str } \tl_put_left:Nn #2 { doc/function// } } -\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , x } +\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , e } % \end{macrocode} % \end{macro} % @@ -2183,21 +2177,21 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_names_get_seq:nN #1#2 { - \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:n {#1} } + \__kernel_tl_set:Ne \l_@@_tmpa_tl { \tl_to_str:n {#1} } \bool_if:NTF \l_@@_names_verb_bool { \seq_clear:N #2 \seq_put_right:NV #2 \l_@@_tmpa_tl } { - \tl_remove_all:Nx \l_@@_tmpa_tl + \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M \c_percent_str } - \tl_remove_all:Nx \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } } - \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^I } - \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^M } + \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } } + \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I } + \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M } \@@_detect_internals:N \l_@@_tmpa_tl \@@_replace_at_at:N \l_@@_tmpa_tl - \exp_args:NNx \seq_set_from_clist:Nn #2 + \exp_args:NNe \seq_set_from_clist:Nn #2 { \tl_to_str:N \l_@@_tmpa_tl } } } @@ -2238,14 +2232,14 @@ and all files in that bundle must be distributed together. \tl_if_head_eq_charcode:nNTF {#2} : { \@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: } } { - \exp_args:Nx \@@_names_parse_aux:nnn + \exp_args:Ne \@@_names_parse_aux:nnn { \@@_base_form_aux:nnN {#1} {#2} #3 } {#1} {#2} } } { \bool_if:NT \l_@@_macro_TF_bool - { \msg_error:nnx { l3doc } { no-signature-TF } {#4} } + { \msg_error:nne { l3doc } { no-signature-TF } {#4} } \@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: } } } @@ -2294,12 +2288,12 @@ and all files in that bundle must be distributed together. \str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: } { \seq_gclear:N \g_@@_variants_seq - \@@_names_typeset_auxii:x { \g_@@_base_name_tl } + \@@_names_typeset_auxii:e { \g_@@_base_name_tl } } { \seq_gset_eq:NN \g_@@_variants_seq #1 \seq_gpop:NN \g_@@_variants_seq \l_@@_tmpb_tl - \@@_names_typeset_auxii:x + \@@_names_typeset_auxii:e { \g_@@_base_name_tl : \l_@@_tmpb_tl } } } @@ -2308,7 +2302,7 @@ and all files in that bundle must be distributed together. % \end{macro} % % \begin{macro} -% {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:x} +% {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:e} % In case the option |pTF| was given, typeset predicates before the % |TF| functions. In case the option |noTF| was given, typeset the % non-|TF| function as well. Pass the relevant boolean in both cases @@ -2318,7 +2312,7 @@ and all files in that bundle must be distributed together. { \bool_if:NT \l_@@_macro_pTF_bool { - \@@_names_typeset_block:xN + \@@_names_typeset_block:eN { \@@_predicate_from_base:n {#1} } \c_false_bool } @@ -2326,11 +2320,11 @@ and all files in that bundle must be distributed together. { \@@_names_typeset_block:nN {#1} \c_false_bool } \@@_names_typeset_block:nN {#1} \l_@@_macro_TF_bool } -\cs_generate_variant:Nn \@@_names_typeset_auxii:n { x } +\cs_generate_variant:Nn \@@_names_typeset_auxii:n { e } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:xN} +% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:eN} % Names in \env{function} and \env{macro} environments are typeset % differently. To distinguish the two note that % \cs{l_@@_nested_macro_int} is at least one when in an \env{macro} @@ -2343,7 +2337,7 @@ and all files in that bundle must be distributed together. { \@@_typeset_function_block:nN } { \@@_macro_typeset_block:nN } } -\cs_generate_variant:Nn \@@_names_typeset_block:nN { x } +\cs_generate_variant:Nn \@@_names_typeset_block:nN { e } % \end{macrocode} % \end{macro} % @@ -2391,7 +2385,7 @@ and all files in that bundle must be distributed together. \seq_set_eq:NN \l_@@_tmpa_seq ##1 \seq_pop:NN \l_@@_tmpa_seq \l_@@_tmpa_tl \seq_get:NN \l_@@_tmpa_seq \l_@@_tmpb_tl - \exp_args:NNx + \exp_args:NNe \group_end: #1 { @@ -2479,7 +2473,7 @@ and all files in that bundle must be distributed together. \exp_args:No \@@_date_compare:nNnT {#1} > { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int } { - \msg_error:nnxx { l3doc } { future-date } + \msg_error:nnee { l3doc } { future-date } { \tl_to_str:N \l_@@_macro_argument_tl } {#1} } @@ -2707,15 +2701,15 @@ and all files in that bundle must be distributed together. % % ^^A TODO: collect all index targets from a given function environment in a box and stick it at the top. % \begin{macro} -% {\@@_typeset_function_block:nN, \@@_typeset_function_block:xN} -% \begin{macro}{\@@_function_index:n, \@@_function_index:x} +% {\@@_typeset_function_block:nN, \@@_typeset_function_block:eN} +% \begin{macro}{\@@_function_index:n, \@@_function_index:e} % |#1| is a csname, |#2| a boolean indicating whether to add |TF| or not. % \begin{macrocode} \cs_new_protected:Npn \@@_typeset_function_block:nN #1#2 { - \@@_function_index:x + \@@_function_index:e { #1 \bool_if:NT #2 { \tl_to_str:n {TF} } } - \@@_function_label:xN {#1} #2 + \@@_function_label:eN {#1} #2 #1 \bool_if:NT #2 { \@@_typeset_TF: } \@@_typeset_expandability: @@ -2723,13 +2717,13 @@ and all files in that bundle must be distributed together. { \@@_typeset_variant_list:nN {#1} #2 } \\ } -\cs_generate_variant:Nn \@@_typeset_function_block:nN { x } +\cs_generate_variant:Nn \@@_typeset_function_block:nN { e } \cs_new_protected:Npn \@@_function_index:n #1 { \seq_gput_right:Nn \g_doc_functions_seq {#1} \@@_special_index:nn {#1} { usage } } -\cs_generate_variant:Nn \@@_function_index:n { x } +\cs_generate_variant:Nn \@@_function_index:n { e } % \end{macrocode} % % \begin{macrocode} @@ -2796,7 +2790,7 @@ and all files in that bundle must be distributed together. { \bool_if:NF \l_@@_no_label_bool { - \@@_get_hyper_target:xN + \@@_get_hyper_target:eN { \exp_not:n {#1} \bool_if:NT #2 { \tl_to_str:n {TF} } @@ -2805,7 +2799,7 @@ and all files in that bundle must be distributed together. \exp_args:No \label { \l_@@_tmpa_tl } } } -\cs_generate_variant:Nn \@@_function_label:nN { x } +\cs_generate_variant:Nn \@@_function_label:nN { e } % \end{macrocode} % \end{macro} % \end{macro} @@ -3064,7 +3058,7 @@ and all files in that bundle must be distributed together. \l_@@_macro_do_not_index_tl \exp_args:NNV \seq_set_from_clist:Nn \l_@@_tmpa_seq \l_@@_macro_do_not_index_tl - \__kernel_tl_set:Nx \l_@@_macro_do_not_index_tl + \__kernel_tl_set:Ne \l_@@_macro_do_not_index_tl { \seq_use:Nn \l_@@_tmpa_seq { , } } \exp_args:NV \DoNotIndex \l_@@_macro_do_not_index_tl } @@ -3105,7 +3099,7 @@ and all files in that bundle must be distributed together. \@@_macro_single:nNN {#1} \c_true_bool #2 \seq_if_empty:NF \g_@@_variants_seq { - \@@_macro_typeset_variant_list:xN + \@@_macro_typeset_variant_list:eN { \@@_get_function_name:n {#1} } #2 } } @@ -3115,7 +3109,7 @@ and all files in that bundle must be distributed together. \seq_map_inline:Nn \g_@@_variants_seq { \@@_macro_single:nNN { #1 : ##1 } \c_false_bool #2 } } -\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { x } +\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { e } % \end{macrocode} % \end{macro} % @@ -3137,7 +3131,7 @@ and all files in that bundle must be distributed together. \tl_set:Nn \saved@macroname {#1} \@@_macro_typeset_one:nN {#1} #3 \bool_if:NT #3 { \DoNotIndex {#1} } - \exp_args:Nx \@@_macro_index:nN + \exp_args:Ne \@@_macro_index:nN { #1 \bool_if:NT #3 { \tl_to_str:n { TF } } } #2 } @@ -3191,7 +3185,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_print_macroname:nN #1#2 { \strut - \@@_get_hyper_target:xN + \@@_get_hyper_target:eN { \exp_not:n {#1} \bool_if:NT #2 { \tl_to_str:n {TF} } @@ -3295,7 +3289,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_test_missing:n #1 { - \@@_test_missing_aux:Nxn + \@@_test_missing_aux:Nen \g_@@_missing_tests_prop { \seq_use:Nn \l_@@_names_seq { , } } { { \g_file_curr_name_str \c_space_tl (#1) } } @@ -3307,7 +3301,7 @@ and all files in that bundle must be distributed together. { \tl_set:Nn \l_@@_tmpa_tl {#3} } \prop_put:Nno #1 {#2} \l_@@_tmpa_tl } -\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Nx } +\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Ne } % \end{macrocode} % \end{macro} % @@ -3345,7 +3339,7 @@ and all files in that bundle must be distributed together. { \seq_set_filter:NNn \l_@@_tmpa_seq \l_@@_names_seq { ! \@@_if_macro_internal_p:n {##1} } - \seq_gput_right:Nx \g_@@_not_tested_seq + \seq_gput_right:Ne \g_@@_not_tested_seq { \seq_use:Nn \l_@@_tmpa_seq { , } \bool_if:NTF \l_@@_macro_pTF_bool {~(pTF)} @@ -3415,10 +3409,10 @@ and all files in that bundle must be distributed together. \bool_if:NTF \l_@@_macro_var_bool {variable} {function} \int_compare:nNnTF \l_@@_tmpa_int = 1 {~is~} {s~are~} documented~on~page~ - \@@_get_hyper_target:xN + \@@_get_hyper_target:eN { \seq_item:Nn \g_@@_nested_names_seq { 1 } } \l_@@_tmpa_tl - \exp_args:Nx \pageref { \l_@@_tmpa_tl } . + \exp_args:Ne \pageref { \l_@@_tmpa_tl } . } \seq_gclear:N \g_@@_nested_names_seq } @@ -3540,6 +3534,39 @@ and all files in that bundle must be distributed together. % \end{macrocode} % \end{environment} % +% \subsection{Footnote support} +% The environments \env{function} and \env{variable} are boxes +% and so looses footnotes. The following implements support. +% It relies currently on an internal from hyperref to get the correct targets. +% +% \begin{macrocode} +\providecommand\Hy@footnote@currentHref{} +\prop_new:N\g_@@_fnmark_prop +\cs_new_protected:Npn \@@_fn_store: + { + \prop_gput:Nee\g_@@_fnmark_prop + {fn\int_use:N\c@footnote}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}} + } +\cs_new_protected:Npn \@@_fn_restore:n #1 + { + \prop_get:NnN \g_@@_fnmark_prop {fn#1}\l_@@_tmpa_tl + \tl_gset:Ne\Hy@footnote@currentHref + {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl } + \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl} + } + +\cs_generate_variant:Nn \hook_gput_next_code:nn {ne} +\cs_new_protected:Npn \@@_fn_footnote:nn #1 #2 + { + \footnotemark + \@@_fn_store: + \hook_gput_next_code:ne {env/#1/after} + {\exp_not:N\@@_fn_restore:n{\int_use:N\c@footnote}{\exp_not:n{\footnotetext{#2}}}}} + +\AddToHook{env/function/begin}{\def\footnote{\@@_fn_footnote:nn{function}}} +\AddToHook{env/variable/begin}{\def\footnote{\@@_fn_footnote:nn{variable}}} +% \end{macrocode} +% % \subsection{Documenting templates} % % \begin{macrocode} @@ -3713,7 +3740,7 @@ and all files in that bundle must be distributed together. \@tempswatrue \if@partsw \@tempswafalse - \cs_set:Npx \@tempb {#1} + \cs_set:Npe \@tempb {#1} \clist_map_inline:Nn \@partlist { \if_meaning:w \@tempa \@tempb @@ -3734,7 +3761,7 @@ and all files in that bundle must be distributed together. \part{\currentfile} { \cs_set_eq:NN \ttfamily\relax - \cs_gset:Npx \filekey + \cs_gset:Npe \filekey { \filekey,~ \thepart = { \ttfamily \currentfile } } } \DocInput{\currentfile} @@ -3920,6 +3947,8 @@ and all files in that bundle must be distributed together. \tl_new:N \l_@@_doc_def_tl \tl_new:N \l_@@_doc_undef_tl \tl_new:N \l_@@_undoc_def_tl +\tl_const:Nn \c_@@_iow_separator_tl { ---- } +\tl_const:Nn \c_@@_iow_midrule_tl { -- } % \end{macrocode} % % \begin{macrocode} @@ -3928,7 +3957,7 @@ and all files in that bundle must be distributed together. \bool_lazy_and:nnT { \g_@@_typeset_implementation_bool } { \g_@@_checkfunc_bool } { - \iow_term:x { \c_@@_iow_separator_tl \iow_newline: } + \iow_term:e { \c_@@_iow_separator_tl \iow_newline: } \iow_open:Nn \g_@@_func_iow { \c_sys_jobname_str .cmds } \tl_clear:N \l_@@_doc_def_tl @@ -3938,12 +3967,12 @@ and all files in that bundle must be distributed together. { \seq_if_in:NnTF \g_doc_macros_seq {##1} { - \tl_put_right:Nx \l_@@_doc_def_tl + \tl_put_right:Ne \l_@@_doc_def_tl { ##1 \iow_newline: } \iow_now:Nn \g_@@_func_iow { > ~ ##1 } } { - \tl_put_right:Nx \l_@@_doc_undef_tl + \tl_put_right:Ne \l_@@_doc_undef_tl { ##1 \iow_newline: } \iow_now:Nn \g_@@_func_iow { ! ~ ##1 } } @@ -3952,7 +3981,7 @@ and all files in that bundle must be distributed together. { \seq_if_in:NnF \g_doc_functions_seq {##1} { - \tl_put_right:Nx \l_@@_undoc_def_tl + \tl_put_right:Ne \l_@@_undoc_def_tl { ##1 \iow_newline: } \iow_now:Nn \g_@@_func_iow { ? ~ ##1 } } @@ -3971,13 +4000,13 @@ and all files in that bundle must be distributed together. \l_@@_undoc_def_tl \iow_close:N \g_@@_func_iow - \iow_term:x { \c_@@_iow_separator_tl } + \iow_term:e { \c_@@_iow_separator_tl } } } \AtEndDocument { \@@_show_functions_defined: } % \end{macrocode} % -% TODO: use \cs{iow_term:x}. +% TODO: use \cs{iow_term:e}. % \begin{macrocode} \cs_new_protected:Npn \@@_functions_typeout:nN #1#2 { @@ -4014,7 +4043,7 @@ and all files in that bundle must be distributed together. \iow_newline: \space\space\space\space\space\space * ~ ##1 } - \tl_put_right:Nx \l_@@_tmpa_tl + \tl_put_right:Ne \l_@@_tmpa_tl { \iow_newline: \iow_newline: The~ following~ macro(s)~ have~ incomplete~ tests: @@ -4032,7 +4061,7 @@ and all files in that bundle must be distributed together. \iow_newline: \space\space\space\space ##1 } - \tl_put_right:Nx \l_@@_tmpa_tl + \tl_put_right:Ne \l_@@_tmpa_tl { \iow_newline: \iow_newline: @@ -4073,7 +4102,7 @@ and all files in that bundle must be distributed together. % \end{macrocode} % Force targets on every code line. % \begin{macrocode} -\cs_set_nopar:Npx \theCodelineNo +\cs_set_nopar:Npe \theCodelineNo { \group_begin: \exp_not:N \HD@savedestfalse @@ -4091,7 +4120,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \bool_new:N \l_@@_allow_indexing_bool \bool_set_true:N \l_@@_allow_indexing_bool -\use:x +\use:e { \exp_not:n { \cs_set_nopar:Npn \@starttoc #1 } { @@ -4162,7 +4191,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_gset_protected:Npn \it@is@a #1 { - \use:x + \use:e { \@@_special_index_module:nnnnN {#1} @@ -4223,7 +4252,7 @@ and all files in that bundle must be distributed together. % \end{arguments} % \begin{macrocode} { - \use:x + \use:e { \exp_not:n { \@@_special_index_aux:nnnnnn {#1} {#2} } \tl_if_empty:nTF {#3} @@ -4297,7 +4326,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \group_begin: \char_set_active_eq:NN - \scan_stop: -\tl_const:Nx \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } } +\tl_const:Ne \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } } \group_end: \cs_new_eq:NN \@@_old_hdpindex:nn \hdpindex \cs_new_eq:NN \@@_old_hdclindex:nnn \hdclindex @@ -4308,7 +4337,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_hdindex:nn #1#2 { \tl_set:Nn \l_@@_tmpa_tl {#2} - \tl_replace_all:Nxn \l_@@_tmpa_tl + \tl_replace_all:Nen \l_@@_tmpa_tl { \exp_not:V \c_@@_active_minus_tl \exp_not:V \c_@@_active_minus_tl } { -- } \seq_set_split:NnV \l_@@_tmpa_seq { -- } \l_@@_tmpa_tl @@ -4322,11 +4351,11 @@ and all files in that bundle must be distributed together. \tl_replace_all:Nnn \l_@@_tmpa_tl { MMMM } { \use_none:nn } \tl_if_in:NnT \l_@@_tmpa_tl { MMMD } { - \tl_replace_all:Nxn \l_@@_tmpa_tl + \tl_replace_all:Nen \l_@@_tmpa_tl { \exp_not:V \c_@@_active_minus_tl MMMD } { - MMMD } \tl_replace_all:Nnn \l_@@_tmpa_tl { - MMMD } { \@@_hdindex_aux:w } } - \use:x { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } } + \use:e { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } } } \cs_new_protected:Npn \@@_hdindex_aux:w #1 M { } % \end{macrocode} @@ -4335,7 +4364,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_special_index_set:Nn #1#2 { - \__kernel_tl_set:Nx #1 { \tl_to_str:n {#2} } + \__kernel_tl_set:Ne #1 { \tl_to_str:n {#2} } \@@_if_almost_str:nTF {#2} { \tl_replace_all:Non #1 { \tl_to_str:n { __ } } @@ -4344,7 +4373,7 @@ and all files in that bundle must be distributed together. \token_to_str:N \_ \token_to_str:N \_ \token_to_str:N \verb * \verbatimchar } - \exp_args:Nx \tl_map_inline:nn + \exp_args:Ne \tl_map_inline:nn { \tl_to_str:N \verbatimchar \token_to_str:N _ } { \tl_replace_all:Nnn #1 {##1} @@ -4353,7 +4382,7 @@ and all files in that bundle must be distributed together. \token_to_str:N \verb * \verbatimchar } } - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \token_to_str:N \verb * \verbatimchar #1 \verbatimchar @@ -4377,7 +4406,7 @@ and all files in that bundle must be distributed together. { \tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar \bslash } { - \tl_replace_all:Nxn #1 + \tl_replace_all:Nen #1 { \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 } } } @@ -4404,7 +4433,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_key_get:n #1 { \@@_key_get_base:nN {#1} \l_@@_index_macro_tl - \__kernel_tl_set:Nx \l_@@_index_key_tl + \__kernel_tl_set:Ne \l_@@_index_key_tl { \tl_to_str:N \l_@@_index_macro_tl } \tl_clear:N \l_@@_index_module_tl \tl_if_in:NoTF \l_@@_index_key_tl { \tl_to_str:n { __ } } @@ -4427,7 +4456,7 @@ and all files in that bundle must be distributed together. } \cs_new_protected:Npn \@@_key_pop: { - \__kernel_tl_set:Nx \l_@@_index_key_tl + \__kernel_tl_set:Ne \l_@@_index_key_tl { \tl_tail:N \l_@@_index_key_tl } } % \end{macrocode} @@ -4442,7 +4471,7 @@ and all files in that bundle must be distributed together. { \cs_set:Npn \@@_tmpa:w ##1 #1 ##2 \q_stop { \exp_not:n {##1} } - \__kernel_tl_set:Nx \l_@@_index_module_tl + \__kernel_tl_set:Ne \l_@@_index_module_tl { \exp_after:wN \@@_tmpa:w \l_@@_index_module_tl #1 \q_stop } } \cs_new_protected:Npn \@@_key_drop_underscores: @@ -4495,7 +4524,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_key_var: { - \exp_args:Nx \tl_if_head_eq_charcode:nNTF + \exp_args:Ne \tl_if_head_eq_charcode:nNTF { \exp_args:No \str_tail:n \l_@@_index_key_tl } _ { \str_case:fn { \str_head:N \l_@@_index_key_tl } @@ -4535,7 +4564,7 @@ and all files in that bundle must be distributed together. % sorted differently in an index. % \begin{macrocode} \clist_new:N \g_@@_non_modules_clist -\clist_gset:Nx \g_@@_non_modules_clist +\clist_gset:Ne \g_@@_non_modules_clist { \tl_to_str:n { diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf Binary files differindex 8ec07dcef3..b8cd8d1e29 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/contrib/l3kernel/l3doc.pdf diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index 2b40c56fc5..df2b7c63ab 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf Binary files differindex d93d065c3b..39d53ac5b9 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index 0d7e3e877a..d4fe6b3a30 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -501,6 +501,7 @@ % \exp_args:NNNo, % \exp_args:NNNV, % \exp_args:NNNv, +% \exp_args:NNNe, % \exp_args:Nccc, % \exp_args:NcNc, % \exp_args:NcNo, @@ -664,8 +665,8 @@ % This is the \TeX{} \tn{noexpand} primitive. It only prevents % expansion. At the beginning of an |f|-type argument, a space % \meta{token} is removed even if it appears as \cs{exp_not:N} -% \cs{c_space_token}. In an |x|-expanding definition -% (\cs{cs_new:Npx}), a macro parameter introduces an argument even +% \cs{c_space_token}. In an |e|-expanding definition +% (\cs{cs_new:Npe}), a macro parameter introduces an argument even % if it appears as \cs{exp_not:N} |#| |1|. This differs from % \cs{exp_not:n}. % \end{texnote} @@ -692,7 +693,7 @@ % \emph{must} be surrounded by braces. % \begin{texnote} % This is the \eTeX{} \tn{unexpanded} primitive. In an -% |x|-expanding definition (\cs{cs_new:Npx}), \cs{exp_not:n}~|{#1}| +% |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}| % is equivalent to |##1| rather than to~|#1|, namely it inserts the % two characters |#| and~|1|. In an |e|-type argument % \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the @@ -947,7 +948,7 @@ % In this section a general mechanism for defining functions that handle % arguments is defined. These general expansion functions are % expandable unless |x| is used. (Any version of |x| is going to have -% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some +% to use one of the \LaTeX3 names for \cs{cs_set:Npe} at some % point, and so is never going to be expandable.) % % The definition of expansion functions with this technique happens @@ -1080,7 +1081,7 @@ % \begin{macrocode} \cs_new_protected:Npn \::x #1 \::: #2#3 { - \cs_set_nopar:Npx \l_@@_internal_tl + \cs_set_nopar:Npe \l_@@_internal_tl { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } \l_@@_internal_tl } @@ -1325,7 +1326,7 @@ % % \begin{macro}[EXP] % { -% \exp_args:NNNV, \exp_args:NNNv, +% \exp_args:NNNV, \exp_args:NNNv, \exp_args:NNNe, % \exp_args:NcNc, \exp_args:NcNo, % \exp_args:Ncco, % } @@ -1345,6 +1346,13 @@ \exp_after:wN #3 \exp_after:wN { \exp:w \@@_eval_register:c {#4} } } +\cs_new:Npn \exp_args:NNNe #1#2#3#4 + { + \exp_after:wN #1 + \exp_after:wN #2 + \exp_after:wN #3 + \tex_expanded:D { {#4} } + } \cs_new:Npn \exp_args:NcNc #1#2#3#4 { \exp_after:wN #1 @@ -1410,7 +1418,7 @@ } \cs_new_protected:Npn \::x_unbraced \::: #1#2 { - \cs_set_nopar:Npx \l_@@_internal_tl { \exp_not:n {#1} #2 } + \cs_set_nopar:Npe \l_@@_internal_tl { \exp_not:n {#1} #2 } \l_@@_internal_tl } % \end{macrocode} @@ -1682,7 +1690,7 @@ % \end{arguments} % After making sure that the base form exists, test whether it is % protected or not and define \cs{@@_tmp:w} as either -% \cs{cs_new:Npx} or \cs{cs_new_protected:Npx}, which is +% \cs{cs_new:Npe} or \cs{cs_new_protected:Npe}, which is % then used to define all the variants (except those involving % \texttt{x}-expansion, always protected). Split up the original base % function only once, to grab its name and signature. Then we wish to @@ -1692,7 +1700,7 @@ \cs_new_protected:Npn \cs_generate_variant:Nn #1#2 { \@@_generate_variant:N #1 - \use:x + \use:e { \@@_generate_variant:nnNN \cs_split_function:N #1 @@ -1728,21 +1736,21 @@ % |\bot|, |\splittop|, or |\splitbot|, with |\| replaced by the % appropriate escape character. If |pr| appears in the part before % |ma|, the first \cs{s_@@_mark} is taken as an argument of the |wwNw| -% auxiliary, and |#3| is \cs{cs_new_protected:Npx}, otherwise it -% is \cs{cs_new:Npx}. +% auxiliary, and |#3| is \cs{cs_new_protected:Npe}, otherwise it +% is \cs{cs_new:Npe}. % \begin{macrocode} -\cs_new_protected:Npx \@@_generate_variant:N #1 +\cs_new_protected:Npe \@@_generate_variant:N #1 { \exp_not:N \exp_after:wN \exp_not:N \if_meaning:w \exp_not:N \exp_not:N #1 #1 - \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx + \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe \exp_not:N \else: \exp_not:N \exp_after:wN \exp_not:N \@@_generate_variant:ww \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma } \s_@@_mark - \s_@@_mark \cs_new_protected:Npx + \s_@@_mark \cs_new_protected:Npe \tl_to_str:n { pr } - \s_@@_mark \cs_new:Npx + \s_@@_mark \cs_new:Npe \s_@@_stop \exp_not:N \fi: } @@ -1773,7 +1781,7 @@ \cs_new_protected:Npn \@@_generate_variant:nnNN #1#2#3#4 { \if_meaning:w \c_false_bool #3 - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:c {#1} } \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w \fi: @@ -1837,7 +1845,7 @@ \if_meaning:w \scan_stop: #4 \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w \fi: - \use:x + \use:e { \exp_not:N \@@_generate_variant:wwNN \@@_generate_variant_loop:nNwN { } @@ -1976,7 +1984,7 @@ \exp_not:n { \s_@@_mark - \msg_error:nnxx { kernel } { variant-too-long } + \msg_error:nnee { kernel } { variant-too-long } {#5} { \token_to_str:N #3 } \use_none:nnn \s_@@_stop @@ -1991,7 +1999,7 @@ \exp_not:n { \s_@@_mark - \msg_error:nnxxxx { kernel } { invalid-variant } + \msg_error:nneeee { kernel } { invalid-variant } {#7} { \token_to_str:N #5 } {#1} {#2} \use_none:nnn \s_@@_stop @@ -2005,7 +2013,7 @@ #3 \s_@@_stop #4 #5 {#6} {#7} \exp_not:n { - \msg_error:nnxxxx + \msg_error:nneeee { kernel } { deprecated-variant } {#7} { \token_to_str:N #5 } {#1} {#2} } @@ -2039,7 +2047,7 @@ % (provided \texttt{log-functions} is active). % Otherwise, make sure that the |\exp_args:N #3| form is defined, and % if it contains |x|, change \cs{@@_tmp:w} locally to -% \cs{cs_new_protected:Npx}. Then define the variant by +% \cs{cs_new_protected:Npe}. Then define the variant by % combining the |\exp_args:N #3| variant and the base function. % \begin{macrocode} \cs_new_protected:Npn \@@_generate_variant:wwNN @@ -2074,11 +2082,11 @@ % the \cs[no-index]{exp_args:N\dots} function as a macro taking up to % $9$~arguments and expanding them using \cs{use:x} or \cs{tex_expanded:D}. % \begin{macrocode} -\cs_new_protected:Npx \@@_generate_internal_variant:n #1 +\cs_new_protected:Npe \@@_generate_internal_variant:n #1 { \exp_not:N \@@_generate_internal_variant:wwnNwn #1 \s_@@_mark - { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx } + { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe } \cs_new_protected:cpn \use:x \token_to_str:N x \s_@@_mark @@ -2111,7 +2119,7 @@ ##3 \s_@@_mark { - \use:x + \use:e { ##1 { exp_args:N ##3 } { \@@_generate_internal_variant_loop:n ##3 { : \use_i:nn } } @@ -2206,7 +2214,7 @@ % \begin{macrocode} \cs_new_protected:Npn \prg_generate_conditional_variant:Nnn #1 { - \use:x + \use:e { \@@_generate_variant:nnNnn \cs_split_function:N #1 @@ -2215,7 +2223,7 @@ \cs_new_protected:Npn \@@_generate_variant:nnNnn #1#2#3#4#5 { \if_meaning:w \c_false_bool #3 - \msg_error:nnx { kernel } { missing-colon } + \msg_error:nne { kernel } { missing-colon } { \token_to_str:c {#1} } \@@_use_i_delimit_by_s_stop:nw \fi: @@ -2235,7 +2243,7 @@ \cs_if_exist_use:cTF { @@_generate_variant_#1_form:nnn } { {#3} {#4} {#5} } { - \msg_error:nnxx + \msg_error:nnee { kernel } { conditional-form-unknown } {#1} { \token_to_str:c { #3 : #4 } } } diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index 1c1401e392..2d2ae6a183 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -448,7 +448,10 @@ % \subsection{Writing to files} % % \begin{function}[updated = 2012-06-05] -% {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx} +% { +% \iow_now:Nn, \iow_now:NV, \iow_now:Ne, +% \iow_now:cn, \iow_now:cV, \iow_now:ce +% } % \begin{syntax} % \cs{iow_now:Nn} \meta{stream} \Arg{tokens} % \end{syntax} @@ -457,7 +460,7 @@ % on expansion of \cs{iow_now:Nn}). % \end{function} % -% \begin{function}{\iow_log:n, \iow_log:x} +% \begin{function}{\iow_log:n, \iow_log:e} % \begin{syntax} % \cs{iow_log:n} \Arg{tokens} % \end{syntax} @@ -465,7 +468,7 @@ % file immediately: it is a dedicated version of \cs{iow_now:Nn}. % \end{function} % -% \begin{function}{\iow_term:n, \iow_term:x} +% \begin{function}{\iow_term:n, \iow_term:e} % \begin{syntax} % \cs{iow_term:n} \Arg{tokens} % \end{syntax} @@ -475,8 +478,8 @@ % % \begin{function} % { -% \iow_shipout:Nn, \iow_shipout:Nx, -% \iow_shipout:cn, \iow_shipout:cx +% \iow_shipout:Nn, \iow_shipout:Ne, +% \iow_shipout:cn, \iow_shipout:ce % } % \begin{syntax} % \cs{iow_shipout:Nn} \meta{stream} \Arg{tokens} @@ -486,7 +489,7 @@ % shipout). The \texttt{x}-type variants expand the \meta{tokens} % at the point where the function is used but \emph{not} when the % resulting tokens are written to the \meta{stream} -% (\emph{cf.}~\cs{iow_shipout_x:Nn}). +% (\emph{cf.}~\cs{iow_shipout_e:Nn}). % \begin{texnote} % When using \pkg{expl3} with a format other than \LaTeX{}, new line % characters inserted using \cs{iow_newline:} or using the @@ -496,13 +499,13 @@ % \end{texnote} % \end{function} % -% \begin{function}[updated = 2012-09-08] +% \begin{function}[updated = 2023-09-17] % { -% \iow_shipout_x:Nn, \iow_shipout_x:Nx, -% \iow_shipout_x:cn, \iow_shipout_x:cx +% \iow_shipout_e:Nn, \iow_shipout_e:Ne, +% \iow_shipout_e:cn, \iow_shipout_e:ce % } % \begin{syntax} -% \cs{iow_shipout_x:Nn} \meta{stream} \Arg{tokens} +% \cs{iow_shipout_e:Nn} \meta{stream} \Arg{tokens} % \end{syntax} % This function writes \meta{tokens} to the specified % \meta{stream} when the current page is finalised (\emph{i.e.}~at @@ -528,7 +531,7 @@ % write difficult characters such as |%|, |{|, |}|, % \emph{etc.}~in messages, for example: % \begin{verbatim} -% \iow_now:Nx \g_my_iow { \iow_char:N \{ text \iow_char:N \} } +% \iow_now:Ne \g_my_iow { \iow_char:N \{ text \iow_char:N \} } % \end{verbatim} % The function has no effect if writing is taking place without % expansion (\emph{e.g.}~in the second argument of \cs{iow_now:Nn}). @@ -546,14 +549,14 @@ % character inserted by \cs{iow_newline:} is not recognized by % \TeX{}, which may lead to the insertion of additional unwanted % line-breaks. This issue only affects \cs{iow_shipout:Nn}, -% \cs{iow_shipout_x:Nn} and direct uses of primitive operations. +% \cs{iow_shipout_e:Nn} and direct uses of primitive operations. % \end{texnote} % \end{function} % % \subsection{Wrapping lines in output} % % \begin{function}[added = 2012-06-28, updated = 2017-12-04] -% {\iow_wrap:nnnN, \iow_wrap:nxnN} +% {\iow_wrap:nnnN, \iow_wrap:nenN} % \begin{syntax} % \cs{iow_wrap:nnnN} \Arg{text} \Arg{run-on text} \Arg{set up} \meta{function} % \end{syntax} @@ -705,8 +708,10 @@ % \end{texnote} % \end{variable} % -% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n, \file_if_exist:V} +% \begin{function}[EXP, pTF, updated = 2023-09-18] +% {\file_if_exist:n, \file_if_exist:V} % \begin{syntax} +% \cs{file_if_exist_p:n} \Arg{file name} % \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code} % \end{syntax} % Searches for \meta{file name} using the current \TeX{} search @@ -714,7 +719,8 @@ % \cs{l_file_search_path_seq}. % \end{function} % -% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]{\file_get:nnN} +% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16] +% {\file_get:nnN, \file_get:VnN} % \begin{syntax} % \cs{file_get:nnN} \Arg{filename} \Arg{setup} \meta{tl} % \cs{file_get:nnNTF} \Arg{filename} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code} @@ -782,7 +788,8 @@ % Quotes (|"|) are invalid in file names and are discarded from the input. % \end{function} % -% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name:n} +% \begin{function}[EXP, added = 2020-06-24] +% {\file_parse_full_name:n, \file_parse_full_name:V} % \begin{syntax} % \cs{file_parse_full_name:n} \Arg{full name} % \end{syntax} @@ -791,7 +798,8 @@ % each inside a pair of braces. % \end{function} % -% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name_apply:nN} +% \begin{function}[EXP, added = 2020-06-24] +% {\file_parse_full_name_apply:nN, \file_parse_full_name_apply:VN} % \begin{syntax} % \cs{file_parse_full_name_apply:nN} \Arg{full name} \meta{function} % \end{syntax} @@ -801,7 +809,10 @@ % \end{function} % % \begin{function}[rEXP, added = 2019-11-19] -% {\file_hex_dump:n, \file_hex_dump:nnn} +% { +% \file_hex_dump:n, \file_hex_dump:V, +% \file_hex_dump:nnn, \file_hex_dump:Vnn +% } % \begin{syntax} % \cs{file_hex_dump:n} \Arg{file name} % \cs{file_hex_dump:nnn} \Arg{file name} \Arg{start index} \Arg{end index} @@ -819,7 +830,10 @@ % \end{function} % % \begin{function}[noTF, added = 2019-11-19] -% {\file_get_hex_dump:nN, \file_get_hex_dump:nnnN} +% { +% \file_get_hex_dump:nN, \file_get_hex_dump:VN, +% \file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN +% } % \begin{syntax} % \cs{file_get_hex_dump:nN} \Arg{file name} \meta{tl var} % \cs{file_get_hex_dump:nnnN} \Arg{file name} \Arg{start index} \Arg{end index} \meta{tl var} @@ -829,7 +843,8 @@ % If the file is not found, the \meta{tl var} will be set to \cs{q_no_value}. % \end{function} % -% \begin{function}[rEXP, added = 2019-09-03]{\file_mdfive_hash:n} +% \begin{function}[rEXP, added = 2019-09-03] +% {\file_mdfive_hash:n, \file_mdfive_hash:V} % \begin{syntax} % \cs{file_mdfive_hash:n} \Arg{file name} % \end{syntax} @@ -845,7 +860,7 @@ % \end{function} % % \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16] -% {\file_get_mdfive_hash:nN} +% {\file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN} % \begin{syntax} % \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var} % \end{syntax} @@ -854,7 +869,7 @@ % the \meta{tl var} will be set to \cs{q_no_value}. % \end{function} % -% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n} +% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n, \file_size:V} % \begin{syntax} % \cs{file_size:n} \Arg{file name} % \end{syntax} @@ -865,7 +880,7 @@ % \end{function} % % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] -% {\file_get_size:nN} +% {\file_get_size:nN, \file_get_size:VN} % \begin{syntax} % \cs{file_get_size:nN} \Arg{file name} \meta{tl var} % \end{syntax} @@ -875,7 +890,8 @@ % This is not available in older versions of \XeTeX{}. % \end{function} % -% \begin{function}[rEXP, added = 2019-09-03]{\file_timestamp:n} +% \begin{function}[rEXP, added = 2019-09-03] +% {\file_timestamp:n, \file_timestamp:V} % \begin{syntax} % \cs{file_timestamp:n} \Arg{file name} % \end{syntax} @@ -891,7 +907,7 @@ % \end{function} % % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] -% {\file_get_timestamp:nN} +% {\file_get_timestamp:nN, \file_get_timestamp:VN} % \begin{syntax} % \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var} % \end{syntax} @@ -902,7 +918,12 @@ % \end{function} % % \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP] -% {\file_compare_timestamp:nNn} +% { +% \file_compare_timestamp:nNn, +% \file_compare_timestamp:nNV, +% \file_compare_timestamp:VNn, +% \file_compare_timestamp:VNV +% } % \begin{syntax} % \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2} % \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code} @@ -935,7 +956,8 @@ % function. An error is raised if the file is not found. % \end{function} % -% \begin{function}[added = 2023-05-18, EXP]{\file_input_raw:n} +% \begin{function}[added = 2023-05-18, EXP] +% {\file_input_raw:n, \file_input_raw:V} % \begin{syntax} % \cs{file_input_raw:n} \Arg{file name} % \end{syntax} @@ -950,7 +972,13 @@ % \end{texnote} % \end{function} % -% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF} +% \begin{function}[added = 2014-07-02] +% { +% \file_if_exist_input:n, +% \file_if_exist_input:V, +% \file_if_exist_input:nF, +% \file_if_exist_input:VF +% } % \begin{syntax} % \cs{file_if_exist_input:n} \Arg{file name} % \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code} @@ -1169,7 +1197,7 @@ { \@@_open_stream:Nn #1 {#2} } { \@@_new:N #1 - \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} } + \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} } \@@_open_stream:Nn #1 {#2} } } @@ -1178,7 +1206,7 @@ % Here, we act defensively in case \LuaTeX{} is in use with an % extensionless file name. % \begin{macrocode} -\cs_new_protected:Npx \@@_open_stream:Nn #1#2 +\cs_new_protected:Npe \@@_open_stream:Nn #1#2 { \tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop: \prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2} @@ -1192,7 +1220,7 @@ % \end{macro} % % \begin{macro}{\ior_shell_open:Nn} -% \begin{macro}{\@@_shell_open:nN} +% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN} % Actually much easier than either the standard open or input versions! % When calling \cs{__kernel_ior_open:Nn} the file the pipe is added to % signal a shell command, but the quotes are not added yet---they are @@ -1201,18 +1229,19 @@ \cs_new_protected:Npn \ior_shell_open:Nn #1#2 { \sys_if_shell:TF - { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 } + { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 } { \msg_error:nn { kernel } { pipe-failed } } } \cs_new_protected:Npn \@@_shell_open:nN #1#2 { \tl_if_in:nnTF {#1} { " } { - \msg_error:nnx + \msg_error:nne { kernel } { quote-in-shell } {#1} } { \__kernel_ior_open:Nn #2 { |#1 } } } +\cs_generate_variant:Nn \@@_shell_open:nN { o } \msg_new:nnnn { kernel } { pipe-failed } { Cannot~run~piped~system~commands. } { @@ -1259,10 +1288,10 @@ { \prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl { - \exp_args:Nx #1 + \exp_args:Ne #1 { \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl } } - { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } } + { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } } } } % \end{macrocode} @@ -1278,8 +1307,8 @@ % \texttt{show-streams} takes care of translating |ior|/|iow| to % English. % \begin{macrocode} -\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nnxxxx } -\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nnxxxx } +\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nneeee } +\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nneeee } \cs_new_protected:Npn \@@_list:N #1 { #1 { kernel } { show-streams } @@ -1643,14 +1672,14 @@ % \begin{macrocode} \cs_new_protected:Npn \iow_open:Nn #1#2 { - \__kernel_tl_set:Nx \l_@@_file_name_tl + \__kernel_tl_set:Ne \l_@@_file_name_tl { \__kernel_file_name_sanitize:n {#2} } \iow_close:N #1 \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl { \@@_open_stream:NV #1 \l_@@_file_name_tl } { \@@_new:N #1 - \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} } + \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} } \@@_open_stream:NV #1 \l_@@_file_name_tl } } @@ -1668,24 +1697,25 @@ % \end{macro} % % \begin{macro}{\iow_shell_open:Nn} -% \begin{macro}{\@@_shell_open:nN} +% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN} % Very similar to the \texttt{ior} version % \begin{macrocode} \cs_new_protected:Npn \iow_shell_open:Nn #1#2 { \sys_if_shell:TF - { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 } + { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 } { \msg_error:nn { kernel } { pipe-failed } } } \cs_new_protected:Npn \@@_shell_open:nN #1#2 { \tl_if_in:nnTF {#1} { " } { - \msg_error:nnx + \msg_error:nne { kernel } { quote-in-shell } {#1} } { \__kernel_iow_open:Nn #2 { |#1 } } } +\cs_generate_variant:Nn \@@_shell_open:nN { o } % \end{macrocode} % \end{macro} % \end{macro} @@ -1725,10 +1755,10 @@ { \prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl { - \exp_args:Nx #1 + \exp_args:Ne #1 { \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl } } - { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } } + { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } } } } % \end{macrocode} @@ -1738,8 +1768,8 @@ % \begin{macro}{\@@_list:N} % Done as for input, but with a copy of the auxiliary so the name is correct. % \begin{macrocode} -\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nnxxxx } -\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nnxxxx } +\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nneeee } +\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nneeee } \cs_new_protected:Npn \@@_list:N #1 { #1 { kernel } { show-streams } @@ -1756,29 +1786,40 @@ % % \subsubsection{Deferred writing} % -% \begin{macro}{\iow_shipout_x:Nn, \iow_shipout_x:Nx, \iow_shipout_x:cn, \iow_shipout_x:cx} +% \begin{macro} +% { +% \iow_shipout_e:Nn, \iow_shipout_e:Ne, +% \iow_shipout_e:cn, \iow_shipout_e:ce +% } % First the easy part, this is the primitive, which expects its % argument to be braced. % \begin{macrocode} -\cs_new_protected:Npn \iow_shipout_x:Nn #1#2 +\cs_new_protected:Npn \iow_shipout_e:Nn #1#2 { \tex_write:D #1 {#2} } -\cs_generate_variant:Nn \iow_shipout_x:Nn { c, Nx, cx } +\cs_generate_variant:Nn \iow_shipout_e:Nn { Ne , c, ce } % \end{macrocode} % \end{macro} % -% \begin{macro}{\iow_shipout:Nn, \iow_shipout:Nx, \iow_shipout:cn, \iow_shipout:cx} +% \begin{macro} +% { +% \iow_shipout:Nn, \iow_shipout:Ne, +% \iow_shipout:Nx, +% \iow_shipout:cn, \iow_shipout:ce, +% \iow_shipout:cx +% } % With \eTeX{} available deferred writing without expansion is easy. % \begin{macrocode} \cs_new_protected:Npn \iow_shipout:Nn #1#2 { \tex_write:D #1 { \exp_not:n {#2} } } -\cs_generate_variant:Nn \iow_shipout:Nn { c, Nx, cx } +\cs_generate_variant:Nn \iow_shipout:Nn { Ne , c, ce } +\cs_generate_variant:Nn \iow_shipout:Nn { Nx , cx } % \end{macrocode} % \end{macro} % % \subsubsection{Immediate writing} % % \begin{macro}{\__kernel_iow_with:Nnn} -% \begin{macro}{\@@_with:nNnn} +% \begin{macro}{\@@_with:nNnn, \@@_with:oNnn} % If the integer~|#1| is equal to~|#2|, just leave~|#3| in the input % stream. Otherwise, pass the old value to an auxiliary, which sets % the integer to the new value, runs the code, and restores the @@ -1788,7 +1829,7 @@ { \int_compare:nNnTF {#1} = {#2} { \use:n } - { \exp_args:No \@@_with:nNnn { \int_use:N #1 } #1 {#2} } + { \@@_with:oNnn { \int_use:N #1 } #1 {#2} } } \cs_new_protected:Npn \@@_with:nNnn #1#2#3#4 { @@ -1796,14 +1837,17 @@ #4 \int_set:Nn #2 {#1} } +\cs_generate_variant:Nn \@@_with:nNnn { o } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \iow_now:Nn, \iow_now:NV, \iow_now:Nx, -% \iow_now:cn, \iow_now:cV, \iow_now:cx +% \iow_now:Nn, \iow_now:NV, \iow_now:Ne, +% \iow_now:Nx, +% \iow_now:cn, \iow_now:cV, \iow_now:ce, +% \iow_now:cx % } % This routine writes the second argument onto the output stream without % expansion. If this stream isn't open, the output goes to the terminal @@ -1822,18 +1866,23 @@ \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J } { \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } } } -\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \iow_now:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \iow_now:Nn { Nx , cx } % \end{macrocode} % \end{macro} % -% \begin{macro}{\iow_log:n, \iow_log:x} -% \begin{macro}{\iow_term:n, \iow_term:x} -% Writing to the log and the terminal directly are relatively easy. +% \begin{macro}{\iow_log:n, \iow_log:e, \iow_log:x} +% \begin{macro}{\iow_term:n, \iow_term:e, \iow_term:x} +% Writing to the log and the terminal directly are relatively easy; +% as we need the two \texttt{e}-type variants for bootstrapping, +% they are redefinitions here. % \begin{macrocode} -\cs_set_protected:Npn \iow_log:x { \iow_now:Nx \c_log_iow } \cs_new_protected:Npn \iow_log:n { \iow_now:Nn \c_log_iow } -\cs_set_protected:Npn \iow_term:x { \iow_now:Nx \c_term_iow } +\cs_set_protected:Npn \iow_log:e { \iow_now:Ne \c_log_iow } +\cs_generate_variant:Nn \iow_log:n { x } \cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow } +\cs_set_protected:Npn \iow_term:e { \iow_now:Ne \c_term_iow } +\cs_generate_variant:Nn \iow_term:n { x } % \end{macrocode} % \end{macro} % \end{macro} @@ -1902,14 +1951,14 @@ \cs_new:Npn \@@_unindent:w { } \cs_new_protected:Npn \@@_set_indent:n #1 { - \__kernel_tl_set:Nx \l_@@_one_indent_tl + \__kernel_tl_set:Ne \l_@@_one_indent_tl { \exp_args:No \__kernel_str_to_other_fast:n { \tl_to_str:n {#1} } } \int_set:Nn \l_@@_one_indent_int { \str_count:N \l_@@_one_indent_tl } \exp_last_unbraced:NNo \cs_set:Npn \@@_unindent:w \l_@@_one_indent_tl { } } -\exp_args:Nx \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } } +\exp_args:Ne \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } } % \end{macrocode} % \end{variable} % \end{macro} @@ -1968,13 +2017,13 @@ % \begin{macrocode} \group_begin: \int_set:Nn \tex_escapechar:D { -1 } - \tl_const:Nx \c_@@_wrap_marker_tl + \tl_const:Ne \c_@@_wrap_marker_tl { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } } \group_end: \tl_map_inline:nn { { end } { newline } { allow_break } { indent } { unindent } } { - \tl_const:cx { c_@@_wrap_ #1 _marker_tl } + \tl_const:ce { c_@@_wrap_ #1 _marker_tl } { \c_@@_wrap_marker_tl #1 @@ -1998,7 +2047,7 @@ \msg_error:nnnn { kernel } { iow-indent } { \iow_wrap:nnnN } { \iow_wrap_allow_break: } } -\cs_new:Npx \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl } +\cs_new:Npe \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl } \cs_new:Npn \@@_wrap_allow_break_error: { \msg_expandable_error:nnnn { kernel } { iow-indent } @@ -2026,7 +2075,7 @@ { \iow_wrap:nnnN } { \iow_indent:n } {#1} #1 } -\cs_new:Npx \@@_indent:n #1 +\cs_new:Npe \@@_indent:n #1 { \c_@@_wrap_indent_marker_tl #1 @@ -2043,7 +2092,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nxnN} +% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nenN} % The main wrapping function works as follows. First give |\\|, % \verb*|\ | and other formatting commands the correct definition for % messages and perform the given setup~|#3|. The definition of @@ -2059,11 +2108,11 @@ \group_begin: \cs_if_exist_use:N \conditionally@traceoff \int_set:Nn \tex_escapechar:D { -1 } - \cs_set:Npx \{ { \token_to_str:N \{ } - \cs_set:Npx \# { \token_to_str:N \# } - \cs_set:Npx \} { \token_to_str:N \} } - \cs_set:Npx \% { \token_to_str:N \% } - \cs_set:Npx \~ { \token_to_str:N \~ } + \cs_set:Npe \{ { \token_to_str:N \{ } + \cs_set:Npe \# { \token_to_str:N \# } + \cs_set:Npe \} { \token_to_str:N \} } + \cs_set:Npe \% { \token_to_str:N \% } + \cs_set:Npe \~ { \token_to_str:N \~ } \int_set:Nn \tex_escapechar:D { 92 } \cs_set_eq:NN \\ \iow_newline: \cs_set_eq:NN \ \c_catcode_other_space_tl @@ -2079,7 +2128,7 @@ % \cs{iow_wrap:nnnN}. % \begin{macrocode} \cs_set_eq:NN \protect \token_to_str:N - \__kernel_tl_set:Nx \l_@@_wrap_tl {#1} + \__kernel_tl_set:Ne \l_@@_wrap_tl {#1} \cs_set_eq:NN \iow_wrap_allow_break: \@@_wrap_allow_break_error: \cs_set_eq:NN \iow_indent:n \@@_indent_error:n % \end{macrocode} @@ -2087,8 +2136,8 @@ % then convert to a string) and initialize the target count for lines % (the first line has target count \cs{l_iow_line_count_int} instead). % \begin{macrocode} - \__kernel_tl_set:Nx \l_@@_newline_tl { \iow_newline: #2 } - \__kernel_tl_set:Nx \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl } + \__kernel_tl_set:Ne \l_@@_newline_tl { \iow_newline: #2 } + \__kernel_tl_set:Ne \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl } \int_set:Nn \l_@@_line_target_int { \l_iow_line_count_int - \str_count:N \l_@@_newline_tl + 1 } % \end{macrocode} @@ -2112,7 +2161,7 @@ \exp_args:NNf \group_end: #4 { \tl_to_str:N \l_@@_wrap_tl } } -\cs_generate_variant:Nn \iow_wrap:nnnN { nx } +\cs_generate_variant:Nn \iow_wrap:nnnN { ne } % \end{macrocode} % \end{macro} % @@ -2128,12 +2177,12 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_wrap_do: { - \__kernel_tl_set:Nx \l_@@_wrap_tl + \__kernel_tl_set:Ne \l_@@_wrap_tl { \exp_args:No \__kernel_str_to_other_fast:n \l_@@_wrap_tl \c_@@_wrap_end_marker_tl } - \__kernel_tl_set:Nx \l_@@_wrap_tl + \__kernel_tl_set:Ne \l_@@_wrap_tl { \exp_after:wN \@@_wrap_fix_newline:w \l_@@_wrap_tl ^^J \q_@@_nil ^^J \s_@@_stop @@ -2397,7 +2446,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_wrap_allow_break:n #1 { - \__kernel_tl_set:Nx \l_@@_line_tl + \__kernel_tl_set:Ne \l_@@_line_tl { \l_@@_line_tl \@@_wrap_trim:N \l_@@_line_part_tl } \bool_set_false:N \l_@@_line_break_bool \tl_if_empty:NTF \l_@@_line_part_tl @@ -2417,7 +2466,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_wrap_indent:n #1 { - \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl } + \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl } \bool_set_false:N \l_@@_line_break_bool \int_add:Nn \l_@@_indent_int { \l_@@_one_indent_int } \tl_put_right:No \l_@@_indent_tl { \l_@@_one_indent_tl } @@ -2425,10 +2474,10 @@ } \cs_new_protected:Npn \@@_wrap_unindent:n #1 { - \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl } + \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl } \bool_set_false:N \l_@@_line_break_bool \int_sub:Nn \l_@@_indent_int { \l_@@_one_indent_int } - \__kernel_tl_set:Nx \l_@@_indent_tl + \__kernel_tl_set:Ne \l_@@_indent_tl { \exp_after:wN \@@_unindent:w \l_@@_indent_tl } \@@_wrap_chunk:nw {#1} } @@ -2467,9 +2516,9 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_wrap_store_do:n #1 { - \__kernel_tl_set:Nx \l_@@_line_tl + \__kernel_tl_set:Ne \l_@@_line_tl { \l_@@_line_tl \l_@@_line_part_tl } - \__kernel_tl_set:Nx \l_@@_wrap_tl + \__kernel_tl_set:Ne \l_@@_wrap_tl { \l_@@_wrap_tl \l_@@_newline_tl @@ -2495,6 +2544,21 @@ % \end{macrocode} % \end{macro} % +% \subsection{Deprecated functions} +% +% \begin{macro} +% { +% \iow_shipout_x:Nn, \iow_shipout_x:Nx, +% \iow_shipout_x:cn, \iow_shipout_x:cx +% } +% Previously described as \texttt{x}-type, but the hash behaviour is really +% \texttt{e}-type. +% \begin{macrocode} +\cs_new_eq:NN \iow_shipout_x:Nn \iow_shipout_e:Nn +\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %<@@=file> % \end{macrocode} @@ -2539,7 +2603,7 @@ { \cs_set:Npn \@@_tmp:w ##1 " ##2 " ##3 \s_@@_stop { { } {##2} { } } - \seq_gput_right:Nx \g_@@_stack_seq + \seq_gput_right:Ne \g_@@_stack_seq { \exp_after:wN \@@_tmp:w \tex_jobname:D " \tex_jobname:D " \s_@@_stop @@ -2811,11 +2875,11 @@ % The same idea as the marker for rescanning token lists: this pair of % tokens cannot appear in a file that is being input. % \begin{macrocode} -\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : } +\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : } % \end{macrocode} % \end{variable} % -% \begin{macro}[TF]{\file_get:nnN} +% \begin{macro}[TF]{\file_get:nnN, \file_get:VnN} % \begin{macro}{\file_get:nnN,\@@_get_aux:nnN,\@@_get_do:Nw} % The approach here is similar to that for \cs{tl_set_rescan:Nnn}. % The file contents are grabbed as an argument delimited by @@ -2830,6 +2894,7 @@ \file_get:nnNF {#1} {#2} #3 { \tl_set:Nn #3 { \q_no_value } } } +\cs_generate_variant:Nn \file_get:nnN { V } \prg_new_protected_conditional:Npnn \file_get:nnN #1#2#3 { T , F , TF } { \file_get_full_name:nNTF {#1} \l_@@_full_name_tl @@ -2841,7 +2906,8 @@ } { \prg_return_false: } } -\cs_new_protected:Npx \@@_get_aux:nnN #1#2#3 +\prg_generate_conditional_variant:Nnn \file_get:nnN { V } { T , F , TF } +\cs_new_protected:Npe \@@_get_aux:nnN #1#2#3 { \exp_not:N \if_false: { \exp_not:N \fi: \group_begin: @@ -2901,6 +2967,7 @@ \exp_args:Ne \@@_full_name:n { \__kernel_file_name_sanitize:n {#1} } } +\cs_generate_variant:Nn \file_full_name:n { V } % \end{macrocode} % First, we check of the file is just here: no mapping so we do not % need the break part of the broader auxiliary. We are using the fact @@ -3011,7 +3078,7 @@ } { \@@_ext_check:nnw {#1} { #2 #3 / } #4 / #5 \s_@@_stop } } -\cs_new:Npx \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop +\cs_new:Npe \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop { \exp_not:N \@@_quark_if_nil:nTF {#5} { @@ -3065,15 +3132,14 @@ \cs_generate_variant:Nn \file_get_full_name:nN { V } \prg_new_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF } { - \__kernel_tl_set:Nx #2 + \__kernel_tl_set:Ne #2 { \file_full_name:n {#1} } \tl_if_empty:NTF #2 { \prg_return_false: } { \prg_return_true: } } -\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 } +\prg_generate_conditional_variant:Nnn \file_get_full_name:nN + { V } { T , F , TF } % \end{macrocode} % \end{macro} % \end{macro} @@ -3086,7 +3152,12 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[rEXP]{\file_mdfive_hash:n, \file_size:n, \file_timestamp:n} +% \begin{macro}[rEXP] +% { +% \file_mdfive_hash:n, \file_mdfive_hash:V, +% \file_size:n, \file_size:V, +% \file_timestamp:n, \file_timestamp:V +% } % \begin{macro}[rEXP]{\@@_details:nn, \@@_details_aux:nn} % \begin{macro}[rEXP]{\@@_mdfive_hash:n} % Getting file details by expansion is relatively easy if a bit repetitive. @@ -3095,8 +3166,10 @@ % \begin{macrocode} \cs_new:Npn \file_size:n #1 { \@@_details:nn {#1} { size } } +\cs_generate_variant:Nn \file_size:n { V } \cs_new:Npn \file_timestamp:n #1 { \@@_details:nn {#1} { moddate } } +\cs_generate_variant:Nn \file_timestamp:n { V } \cs_new:Npn \@@_details:nn #1#2 { \exp_args:Ne \@@_details_aux:nn @@ -3109,6 +3182,7 @@ } \cs_new:Npn \file_mdfive_hash:n #1 { \exp_args:Ne \@@_mdfive_hash:n { \file_full_name:n {#1} } } +\cs_generate_variant:Nn \file_mdfive_hash:n { V } \cs_new:Npn \@@_mdfive_hash:n #1 { \tex_mdfivesum:D file {#1} } % \end{macrocode} @@ -3116,10 +3190,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[rEXP]{\file_hex_dump:nnn, \@@_hex_dump_auxi:nnn} +% \begin{macro}[rEXP]{\file_hex_dump:nnn, \file_hex_dump:Vnn, \@@_hex_dump_auxi:nnn} % \begin{macro}[rEXP]{\@@_hex_dump_auxii:nnnn, \@@_hex_dump_auxiii:nnnn} % \begin{macro}[rEXP]{\@@_hex_dump_auxiiv:nnn} -% \begin{macro}[rEXP]{\file_hex_dump:n, \@@_hex_dump:n} +% \begin{macro}[rEXP]{\file_hex_dump:n, \file_hex_dump:V, \@@_hex_dump:n} % These are separate as they need multiple arguments \emph{or} the % file size. For \LuaTeX{}, the emulation does not need the file % size so we save a little on expansion. @@ -3131,6 +3205,7 @@ { \int_eval:n {#2} } { \int_eval:n {#3} } } +\cs_generate_variant:Nn \file_hex_dump:nnn { V } \cs_new:Npn \@@_hex_dump_auxi:nnn #1#2#3 { \bool_lazy_any:nF @@ -3174,6 +3249,7 @@ } \cs_new:Npn \file_hex_dump:n #1 { \exp_args:Ne \@@_hex_dump:n { \file_full_name:n {#1} } } +\cs_generate_variant:Nn \file_hex_dump:n { V } \sys_if_engine_luatex:TF { \cs_new:Npn \@@_hex_dump:n #1 @@ -3197,10 +3273,10 @@ % % \begin{macro}[noTF] % { -% \file_get_hex_dump:nN, -% \file_get_mdfive_hash:nN -% \file_get_size:nN, -% \file_get_timestamp:nN +% \file_get_hex_dump:nN, \file_get_hex_dump:VN, +% \file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN, +% \file_get_size:nN, \file_get_size:VN, +% \file_get_timestamp:nN, \file_get_timestamp:VN % } % \begin{macro}{\@@_get_details:nnN} % Non-expandable wrappers around the above in the case where appropriate @@ -3208,23 +3284,35 @@ % \begin{macrocode} \cs_new_protected:Npn \file_get_hex_dump:nN #1#2 { \file_get_hex_dump:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_generate_variant:Nn \file_get_hex_dump:nN { V } \cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2 { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_generate_variant:Nn \file_get_mdfive_hash:nN { V } \cs_new_protected:Npn \file_get_size:nN #1#2 { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_generate_variant:Nn \file_get_size:nN { V } \cs_new_protected:Npn \file_get_timestamp:nN #1#2 { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_generate_variant:Nn \file_get_timestamp:nN { V } \prg_new_protected_conditional:Npnn \file_get_hex_dump:nN #1#2 { T , F , TF } { \@@_get_details:nnN {#1} { hex_dump } #2 } +\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nN + { V } { T , F , TF } \prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF } { \@@_get_details:nnN {#1} { mdfive_hash } #2 } +\prg_generate_conditional_variant:Nnn \file_get_mdfive_hash:nN + { V } { T , F , TF } \prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF } { \@@_get_details:nnN {#1} { size } #2 } +\prg_generate_conditional_variant:Nnn \file_get_size:nN + { V } { T , F , TF } \prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF } { \@@_get_details:nnN {#1} { timestamp } #2 } +\prg_generate_conditional_variant:Nnn \file_get_timestamp:nN + { V } { T , F , TF } \cs_new_protected:Npn \@@_get_details:nnN #1#2#3 { - \__kernel_tl_set:Nx #3 + \__kernel_tl_set:Ne #3 { \use:c { file_ #2 :n } {#1} } \tl_if_empty:NTF #3 { \prg_return_false: } @@ -3234,7 +3322,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[noTF]{\file_get_hex_dump:nnnN} +% \begin{macro}[noTF]{\file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN} % Custom code due to the additional arguments. % \begin{macrocode} \cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4 @@ -3242,15 +3330,18 @@ \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4 { \tl_set:Nn #4 { \q_no_value } } } +\cs_generate_variant:Nn \file_get_hex_dump:nnnN { V } \prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4 { T , F , TF } { - \__kernel_tl_set:Nx #4 + \__kernel_tl_set:Ne #4 { \file_hex_dump:nnn {#1} {#2} {#3} } \tl_if_empty:NTF #4 { \prg_return_false: } { \prg_return_true: } } +\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nnnN + { V } { T , F , TF } % \end{macrocode} % \end{macro} % @@ -3262,7 +3353,13 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP, pTF]{\file_compare_timestamp:nNn} +% \begin{macro}[EXP, pTF] +% { +% \file_compare_timestamp:nNn, +% \file_compare_timestamp:nNV, +% \file_compare_timestamp:VNn +% \file_compare_timestamp:VNV +% } % \begin{macro}[EXP]{\@@_compare_timestamp:nnN} % \begin{macro}[EXP]{\@@_timestamp:n} % Comparison of file date can be done by using the low-level nature of the @@ -3276,6 +3373,8 @@ { \file_full_name:n {#3} } #2 } +\prg_generate_conditional_variant:Nnn \file_compare_timestamp:nNn + { nNV , V , VNV } { p , T , F , TF } \cs_new:Npn \@@_compare_timestamp:nnN #1#2#3 { \tl_if_blank:nTF {#1} @@ -3320,17 +3419,23 @@ % something, whereas if the file was not located then the return value % is empty. % \begin{macrocode} -\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF } +\prg_new_conditional:Npnn \file_if_exist:n #1 { p , T , F , TF } { - \file_get_full_name:nNTF {#1} \l_@@_full_name_tl - { \prg_return_true: } + \tl_if_blank:eTF { \file_full_name:n {#1} } { \prg_return_false: } + { \prg_return_true: } } -\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF } +\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { p , T , F , TF } % \end{macrocode} % \end{macro} % -% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF} +% \begin{macro} +% { +% \file_if_exist_input:n, +% \file_if_exist_input:V, +% \file_if_exist_input:nF, +% \file_if_exist_input:VF +% } % Input of a file with a test for existence. We do not define the |T| % or |TF| variants because the most useful place to place the % \meta{true code} would be inconsistent with other conditionals. @@ -3340,12 +3445,14 @@ \file_get_full_name:nNT {#1} \l_@@_full_name_tl { \@@_input:V \l_@@_full_name_tl } } +\cs_generate_variant:Nn \file_if_exist_input:n { V } \cs_new_protected:Npn \file_if_exist_input:nF #1#2 { \file_get_full_name:nNTF {#1} \l_@@_full_name_tl { \@@_input:V \l_@@_full_name_tl } {#2} } +\cs_generate_variant:Nn \file_if_exist_input:nF { V } % \end{macrocode} % \end{macro} % @@ -3361,7 +3468,7 @@ % \begin{macrocode} \cs_new_protected:Npn \__kernel_file_missing:n #1 { - \msg_error:nnx { kernel } { file-not-found } + \msg_error:nne { kernel } { file-not-found } { \__kernel_file_name_sanitize:n {#1} } } % \end{macrocode} @@ -3384,7 +3491,7 @@ { \__kernel_file_missing:n {#1} } } \cs_generate_variant:Nn \file_input:n { V } -\cs_new_protected:Npx \@@_input:n #1 +\cs_new_protected:Npe \@@_input:n #1 { \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist { \exp_not:N \@addtofilelist {#1} } @@ -3403,7 +3510,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_input_push:n #1 { - \seq_gpush:Nx \g_@@_stack_seq + \seq_gpush:Ne \g_@@_stack_seq { { \g_file_curr_dir_str } { \g_file_curr_name_str } @@ -3435,12 +3542,13 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\file_input_raw:n, \@@_input_raw:nn} +% \begin{macro}{\file_input_raw:n, \file_input_raw:V, \@@_input_raw:nn} % No error checking, no tracking. % \begin{macrocode} \cs_new:Npn \file_input_raw:n #1 { \exp_args:Ne \@@_input_raw:nn { \file_full_name:n {#1} } {#1} } -\cs_new:Npx \@@_input_raw:nn #1#2 +\cs_generate_variant:Nn \file_input_raw:n { V } +\cs_new:Npe \@@_input_raw:nn #1#2 { \exp_not:N \tl_if_blank:nTF {#1} { @@ -3459,7 +3567,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name_apply:nN} +% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name:nV} +% \begin{macro}{\file_parse_full_name_apply:nN \file_parse_full_name_apply:VN} % The main parsing macro \cs{file_parse_full_name_apply:nN} passes the % file name |#1| through \cs{__kernel_file_name_sanitize:n} so that we % have a single normalised way to treat files internally. @@ -3472,11 +3581,13 @@ \file_parse_full_name_apply:nN {#1} \prg_do_nothing: } +\cs_generate_variant:Nn \file_parse_full_name:n { V } \cs_new:Npn \file_parse_full_name_apply:nN #1 { \exp_args:Ne \@@_parse_full_name_auxi:nN { \__kernel_file_name_sanitize:n {#1} } } +\cs_generate_variant:Nn \file_parse_full_name_apply:nN { V } % \end{macrocode} % % \begin{macro}{\@@_parse_full_name_auxi:nN} @@ -3549,6 +3660,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\file_parse_full_name:nNNN, \file_parse_full_name:VNNN} % \begin{macrocode} @@ -3575,14 +3687,14 @@ % \cs{AtBeginDocument} into \cs{g_@@_record_seq}), turning it to a % string (this does not affect the commas of this comma list). % \begin{macrocode} -\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nnxxxx } -\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nnxxxx } +\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nneeee } +\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nneeee } \cs_new_protected:Npn \@@_list:N #1 { \seq_clear:N \l_@@_tmp_seq \clist_if_exist:NT \@filelist { - \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq + \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq { \tl_to_str:N \@filelist } } \seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq @@ -3605,7 +3717,7 @@ { \AtBeginDocument { - \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq + \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq { \tl_to_str:N \@filelist } \seq_gconcat:NNN \g_@@_record_seq @@ -3738,7 +3850,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_mismatched_dependency_error:nn #1 #2 { - \exp_args:NNx \ior_shell_open:Nn \g_@@_internal_ior + \exp_args:NNe \ior_shell_open:Nn \g_@@_internal_ior { kpsewhich ~ --all ~ --engine = \c_sys_engine_exec_str @@ -3869,7 +3981,7 @@ % \begin{macrocode} \sys_if_engine_luatex:TF { - \str_const:Nx \c_sys_platform_str + \str_const:Ne \c_sys_platform_str { \tex_directlua:D { tex.print(os.type) } } } { diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index 3fb3930535..637da52ee7 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -243,7 +243,7 @@ { \exp_args:Nc \__kernel_chk_defined:NT { flag~#2 } { - \exp_args:Nx #1 + \exp_args:Ne #1 { \tl_to_str:n { flag~#2~height } = \flag_height:n {#2} } } } diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index ecdd6ea31c..da05eafa39 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % \maketitle % % \begin{documentation} @@ -80,11 +80,11 @@ % assignments. % \begin{macrocode} \cs_new_protected:Npn \fp_set:Nn #1#2 - { \__kernel_tl_set:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } } + { \__kernel_tl_set:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } } \cs_new_protected:Npn \fp_gset:Nn #1#2 - { \__kernel_tl_gset:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } } + { \__kernel_tl_gset:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } } \cs_new_protected:Npn \fp_const:Nn #1#2 - { \tl_const:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } } + { \tl_const:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } } \cs_generate_variant:Nn \fp_set:Nn {c} \cs_generate_variant:Nn \fp_gset:Nn {c} \cs_generate_variant:Nn \fp_const:Nn {c} @@ -183,7 +183,7 @@ \s_@@ \@@_chk:w ??? ; \s_@@_stop } } - { \exp_args:Nx #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } } + { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } } } \cs_new:Npn \@@_show_validate:w #1 \s_@@ \@@_chk:w #2#3#4#5 ; #6 \s_@@_stop diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index 1f6b333761..3db65c9d29 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -226,7 +226,7 @@ % stream and its contents reach \TeX{}'s stomach. % \begin{macrocode} \cs_new_protected:Npn \@@_misused:n #1 - { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } } + { \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } } % \end{macrocode} % \end{macro} % @@ -338,7 +338,7 @@ % point numbers. This replaces infinities when converting to formats % that do not support infinities. % \begin{macrocode} -\tl_const:Nx \c_@@_overflowing_fp +\tl_const:Ne \c_@@_overflowing_fp { \s_@@ \@@_chk:w 1 0 { \int_eval:n { \c_@@_max_exponent_int + 1 } } @@ -596,7 +596,7 @@ \s_@@ { \@@_type_from_scan_other:N #1 } \s_@@_stop } -\cs_new:Npx \@@_type_from_scan_other:N #1 +\cs_new:Npe \@@_type_from_scan_other:N #1 { \exp_not:N \exp_after:wN \exp_not:N \@@_type_from_scan:w \exp_not:N \token_to_str:N #1 \s_@@_mark diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index 6a8d6376fb..3c5ad9195b 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -129,7 +129,7 @@ % that \cs{@@_+_o:ww} can still perform the sanity check that it was % followed by \cs{s_@@}. % \begin{macrocode} -\cs_new:cpx { @@_-_o:ww } \s_@@ +\cs_new:cpe { @@_-_o:ww } \s_@@ { \exp_not:c { @@_+_o:ww } \exp_not:n { \s_@@ \@@_neg_sign:N } @@ -1429,11 +1429,11 @@ { + 5 * #1 \exp_after:wN \@@_div_significand_vi:Nw - \int_value:w \@@_int_eval:w -20 + 2*#2#3 - #1*#6#7 + + \int_value:w \@@_int_eval:w -50 + 2*#2#3 - #1*#6#7 + \exp_after:wN \@@_div_significand_v:NN - \int_value:w \@@_int_eval:w 199980 + 2*#4 - #1*#8 + + \int_value:w \@@_int_eval:w 499950 + 2*#4 - #1*#8 + \exp_after:wN \@@_div_significand_v:NN - \int_value:w \@@_int_eval:w 200000 + 2*#5 - #1*#9 ; + \int_value:w \@@_int_eval:w 500000 + 2*#5 - #1*#9 ; } \cs_new:Npn \@@_div_significand_v:NN #1#2 { #1#2 \@@_int_eval_end: + } \cs_new:Npn \@@_div_significand_vi:Nw #1#2; diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index bce0ddc8fd..835f9c4341 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index d9c8cf5685..5ac216bf4c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index 0a5ac448aa..b83b37335b 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index 9f11464f29..2f439c2925 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -487,7 +487,7 @@ { \int_gincr:N \g__kernel_prg_map_int \exp_args:NNc \@@_step:NNnnnn - \cs_gset_protected:Npx + \cs_gset_protected:Npe { @@_map_ \int_use:N \g__kernel_prg_map_int :w } {#1} {#2} {#3} { diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index 86e2366f2d..418974d826 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -864,7 +864,7 @@ \exp_after:wN \@@_parse_exponent:N \exp:w \@@_parse_expand:w } -\cs_new:Npx \@@_parse_one_register_aux:Nw #1 +\cs_new:Npe \@@_parse_one_register_aux:Nw #1 { \exp_not:n { @@ -1937,7 +1937,7 @@ \fi: \@@_parse_expand:w } -\cs_new:Npx \@@_parse_lparen_after:NwN #1#2 @ #3 +\cs_new:Npe \@@_parse_lparen_after:NwN #1#2 @ #3 { \exp_not:N \token_if_eq_meaning:NNTF #3 \exp_not:c { @@_parse_infix_):N } diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index bb0e4b12f0..3e3b5cfdfc 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index c0c656189f..f0853f5999 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index 9b59b1759d..674ecdfd2d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % \maketitle % % \begin{documentation} @@ -127,11 +127,11 @@ { invalid_operation , division_by_zero , overflow , underflow } {#1} { - \msg_error:nnxx { fp } + \msg_error:nnee { fp } { unknown-fpu-trap-type } {#1} {#2} } { - \msg_error:nnx + \msg_error:nne { fp } { unknown-fpu-exception } {#1} } } diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index f4cc0513ad..b7bc6c19ce 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -91,13 +91,13 @@ {cos} {cot} {csc} {sec} {sin} {tan} } { - \cs_new:cpx { @@_parse_word_#1:N } + \cs_new:cpe { @@_parse_word_#1:N } { \exp_not:N \@@_parse_unary_function:NNN \exp_not:c { @@_#1_o:w } \exp_not:N \use_i:nn } - \cs_new:cpx { @@_parse_word_#1d:N } + \cs_new:cpe { @@_parse_word_#1d:N } { \exp_not:N \@@_parse_unary_function:NNN \exp_not:c { @@_#1_o:w } @@ -1201,7 +1201,7 @@ { #1 { acot } { acotd } } { \@@_atan_default:w \@@_acotii_o:Nww #1 } } -\cs_new:Npx \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ } +\cs_new:Npe \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ } % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index 17193dd8af..60a7b7534f 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index e3693f0a41..9929135baa 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -250,7 +250,7 @@ \cs_generate_variant:Nn \fparray_gset:Nnn { c } \cs_new_protected:Npn \@@_array_gset:NNNNww #1#2#3#4#5 ; #6 ; { - \@@_array_bounds:NNnTF \msg_error:nnxxx #4 {#5} + \@@_array_bounds:NNnTF \msg_error:nneee #4 {#5} { \exp_after:wN \@@_change_func_type:NNN \@@_use_i_until_s:nw #6 ; diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index 5bb880ead3..e012e191d2 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -1353,7 +1353,7 @@ % \end{macro} % % \begin{macro}{\int_const:Nn, \int_const:cn} -% \begin{macro}{\@@_const:nN} +% \begin{macro}{\@@_const:nN, \@@_const:eN} % \begin{macro}{\@@_constdef:Nw} % \begin{variable}{\c_@@_max_constdef_int} % \UnitTested @@ -1365,7 +1365,8 @@ % enabled) this runs some checks that constants would fail. % \begin{macrocode} \cs_new_protected:Npn \int_const:Nn #1#2 - { \exp_args:Nx \@@_const:nN { \int_eval:n {#2} } #1 } + { \@@_const:eN { \int_eval:n {#2} } #1 } +\cs_generate_variant:Nn \int_const:Nn { c } \cs_new_protected:Npn \@@_const:nN #1#2 { \int_compare:nNnTF {#1} < \c_zero_int @@ -1386,7 +1387,7 @@ } #2 = \@@_eval:w #1 \@@_eval_end: } -\cs_generate_variant:Nn \int_const:Nn { c } +\cs_generate_variant:Nn \@@_const:nN { e } \if_int_odd:w 0 \cs_if_exist:NT \tex_luatexversion:D { 1 } \cs_if_exist:NT \tex_omathchardef:D { 1 } @@ -2003,7 +2004,7 @@ { \int_gincr:N \g__kernel_prg_map_int \exp_args:NNc \@@_step:NNnnnn - \cs_gset_protected:Npx + \cs_gset_protected:Npe { @@_map_ \int_use:N \g__kernel_prg_map_int :w } {#1}{#2}{#3} { @@ -2035,7 +2036,7 @@ % % \begin{macro}{\int_to_symbols:nnn} % \UnitTested -% \begin{macro}{\@@_to_symbols:nnnn} +% \begin{macro}{\@@_to_symbols:nnnn, \@@_to_symbols:ennn} % For conversion of integers to arbitrary symbols the method is in % general as follows. The input number (|#1|) is compared to the total % number of symbols available at each place (|#2|). If the input is larger @@ -2050,7 +2051,7 @@ { \int_compare:nNnTF {#1} > {#2} { - \exp_args:NNo \exp_args:No \@@_to_symbols:nnnn + \@@_to_symbols:ennn { \int_case:nn { 1 + \int_mod:nn { #1 - 1 } {#2} } @@ -2066,6 +2067,7 @@ { \int_div_truncate:nn { #2 - 1 } {#3} } {#3} {#4} #1 } +\cs_generate_variant:Nn \@@_to_symbols:nnnn { e } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index cdbf71784c..10458ad602 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -238,7 +238,7 @@ end, 'protected', 'global') { \__kernel_chk_if_free_cs:N #1 \int_gincr:N \g_@@_table_int - \cs_gset_nopar:Npx #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl } + \cs_gset_nopar:Npe #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl } } \cs_new_protected:Npn \intarray_new:Nn #1#2 { @@ -246,7 +246,7 @@ end, 'protected', 'global') \@@_gset_count:Nw #1 \int_eval:n {#2} \scan_stop: \int_compare:nNnT { \intarray_count:N #1 } < 0 { - \msg_error:nnx { kernel } { negative-array-size } + \msg_error:nne { kernel } { negative-array-size } { \intarray_count:N #1 } } } @@ -387,7 +387,7 @@ end, 'protected', 'global') { \@@_gset:wF \int_eval:n {#2} #1 \int_eval:n{#3} { - \msg_error:nnxxx { kernel } { out-of-bounds } + \msg_error:nneee { kernel } { out-of-bounds } { \token_to_str:N #1 } { \int_use:N \l_@@_bad_index_int } { \intarray_count:N #1 } } } @@ -640,7 +640,7 @@ luacmd('@@_gset_range:w', function() \@@_count:w #1 = \int_eval:n {#2} \scan_stop: \int_compare:nNnT { \intarray_count:N #1 } < 0 { - \msg_error:nnx { kernel } { negative-array-size } + \msg_error:nne { kernel } { negative-array-size } { \intarray_count:N #1 } } \int_compare:nNnT { \intarray_count:N #1 } > 0 @@ -716,7 +716,7 @@ luacmd('@@_gset_range:w', function() \cs_generate_variant:Nn \intarray_gset:Nnn { c } \cs_new_protected:Npn \@@_gset:Nww #1#2 ; #3 ; { - \@@_bounds:NNnTF \msg_error:nnxxx #1 {#2} + \@@_bounds:NNnTF \msg_error:nneee #1 {#2} { \@@_gset_overflow_test:nw {#3} \__kernel_intarray_gset:Nnn #1 {#2} {#3} @@ -742,7 +742,7 @@ luacmd('@@_gset_range:w', function() } \cs_new_protected:Npn \@@_gset_overflow:NNnn #1#2#3#4 { - \msg_error:nnxxxx { kernel } { overflow } + \msg_error:nneeee { kernel } { overflow } { \token_to_str:N #2 } {#3} {#4} { \@@_signed_max_dim:n {#4} } #1 #2 {#3} { \@@_signed_max_dim:n {#4} } } @@ -915,9 +915,9 @@ luacmd('@@_gset_range:w', function() % \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c} % Convert the list to a comma list (with spaces after each comma) % \begin{macrocode} -\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \intarray_show:N { c } -\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \intarray_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index c2d442f183..d517f72a22 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -491,9 +491,9 @@ % only a single expansion. % \end{function} % -% \begin{function}{\__kernel_tl_set:Nx, \__kernel_tl_gset:Nx} +% \begin{function}{\__kernel_tl_set:Ne, \__kernel_tl_gset:Ne} % \begin{syntax} -% \cs{__kernel_tl_set:Nx} \meta{tl~var} \Arg{tokens} +% \cs{__kernel_tl_set:Ne} \meta{tl~var} \Arg{tokens} % \end{syntax} % Fully expands \meta{tokens} and assigns the result to \meta{tl~var}. % \meta{tokens} must be given in braces and there must be no token between @@ -545,7 +545,7 @@ % { % \__kernel_backend_literal:n, % \__kernel_backend_literal:e, -% \__kernel_backend_literal:x +% \__kernel_backend_literal:e % } % \begin{syntax} % \cs{__kernel_backend_literal:n} \Arg{content} @@ -558,7 +558,7 @@ % \begin{function} % { % \__kernel_backend_literal_postscript:n, -% \__kernel_backend_literal_postscript:x +% \__kernel_backend_literal_postscript:e % } % \begin{syntax} % \cs{__kernel_backend_literal_postscript:n} \Arg{PostScript} @@ -570,7 +570,7 @@ % \begin{function} % { % \__kernel_backend_literal_pdf:n, -% \__kernel_backend_literal_pdf:x +% \__kernel_backend_literal_pdf:e % } % \begin{syntax} % \cs{__kernel_backend_literal_pdf:n} \Arg{PDF instructions} @@ -582,7 +582,7 @@ % \begin{function} % { % \__kernel_backend_literal_svg:n, -% \__kernel_backend_literal_svg:x +% \__kernel_backend_literal_svg:e % } % \begin{syntax} % \cs{__kernel_backend_literal_svg:n} \Arg{SVG instructions} @@ -594,7 +594,7 @@ % \begin{function} % { % \__kernel_backend_postscript:n, -% \__kernel_backend_postscript:x +% \__kernel_backend_postscript:e % } % \begin{syntax} % \cs{__kernel_backend_postscript:n} \Arg{PostScript} @@ -626,7 +626,7 @@ % \begin{function} % { % \__kernel_backend_matrix:n, -% \__kernel_backend_matrix:x +% \__kernel_backend_matrix:e % } % \begin{syntax} % \cs{__kernel_backend_matrix:n} \Arg{matrix} diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index 8a78f8cd7c..95ddcd0a38 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -124,7 +124,8 @@ % % \section{Creating keys} % -% \begin{function}[updated = 2017-11-14]{\keys_define:nn} +% \begin{function}[updated = 2017-11-14] +% {\keys_define:nn, \keys_define:ne} % \begin{syntax} % \cs{keys_define:nn} \Arg{module} \Arg{keyval list} % \end{syntax} @@ -216,7 +217,7 @@ % \end{function} % % \begin{function}[added = 2011-08-21, updated = 2013-07-10] -% {.choices:nn, .choices:Vn, .choices:on, .choices:xn} +% {.choices:nn, .choices:Vn, .choices:en, .choices:on} % \begin{syntax} % \meta{key} .choices:nn = \Arg{choices} \Arg{code} % \end{syntax} @@ -263,7 +264,7 @@ % \end{function} % % \begin{function}[updated = 2013-07-09] -% {.default:n, .default:V, .default:o, .default:x} +% {.default:n, .default:V, .default:e, .default:o} % \begin{syntax} % \meta{key} .default:n = \Arg{default} % \end{syntax} @@ -355,7 +356,7 @@ % \end{function} % % \begin{function}[updated = 2013-07-09] -% {.initial:n, .initial:V, .initial:o, .initial:x} +% {.initial:n, .initial:V, .initial:e, .initial:o} % \begin{syntax} % \meta{key} .initial:n = \Arg{value} % \end{syntax} @@ -424,7 +425,7 @@ % \end{function} % % \begin{function}[added = 2011-08-21, updated = 2013-07-10] -% {.multichoices:nn, .multichoices:Vn, .multichoices:on, .multichoices:xn} +% {.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on} % \begin{syntax} % \meta{key} .multichoices:nn \Arg{choices} \Arg{code} % \end{syntax} @@ -480,14 +481,14 @@ % at the point that the key is set up. % \end{function} % -% \begin{function}[added = 2021-10-30] -% {.str_set_x:N, .str_set_x:c, .str_gset_x:N, .str_gset_x:c} +% \begin{function}[added = 2023-09-18] +% {.str_set_e:N, .str_set_e:c, .str_gset_e:N, .str_gset_e:c} % \begin{syntax} -% \meta{key} .str_set_x:N = \meta{string variable} +% \meta{key} .str_set_e:N = \meta{string variable} % \end{syntax} % Defines \meta{key} to set \meta{string variable} to \meta{value}, -% which will be subjected to an \texttt{x}-type expansion -% (\emph{i.e.}~using \cs{str_set:Nx}). If the variable does not exist, +% which will be subjected to an \texttt{e}-type expansion +% (\emph{i.e.}~using \cs{str_set:Ne}). If the variable does not exist, % it is created globally at the point that the key is set up. % \end{function} % @@ -500,13 +501,14 @@ % at the point that the key is set up. % \end{function} % -% \begin{function}{.tl_set_x:N, .tl_set_x:c, .tl_gset_x:N, .tl_gset_x:c} +% \begin{function}[added = 2023-09-18] +% {.tl_set_e:N, .tl_set_e:c, .tl_gset_e:N, .tl_gset_e:c} % \begin{syntax} -% \meta{key} .tl_set_x:N = \meta{token list variable} +% \meta{key} .tl_set_e:N = \meta{token list variable} % \end{syntax} % Defines \meta{key} to set \meta{token list variable} to \meta{value}, -% which will be subjected to an \texttt{x}-type expansion -% (\emph{i.e.}~using \cs{tl_set:Nx}). If the variable does not exist, +% which will be subjected to an \texttt{e}-type expansion +% (\emph{i.e.}~using \cs{tl_set:Ne}). If the variable does not exist, % it is created globally at the point that the key is set up. % \end{function} % @@ -637,7 +639,7 @@ % key / choice-b .code:n = code-b, % key / choice-c .code:n = code-c, % key / unknown .code:n = -% \msg_error:nnxxx { mymodule } { unknown-choice } +% \msg_error:nneee { mymodule } { unknown-choice } % { key } % Name of choice key % { choice-a , choice-b , choice-c } % Valid choices % { \exp_not:n {#1} } % Invalid choice given @@ -724,7 +726,10 @@ % \section{Setting keys} % % \begin{function}[updated = 2017-11-14] -% {\keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx} +% { +% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:ne, +% \keys_set:no, +% } % \begin{syntax} % \cs{keys_set:nn} \Arg{module} \Arg{keyval list} % \end{syntax} @@ -782,11 +787,14 @@ % \begin{function}[added = 2011-08-23, updated = 2019-01-29] % { % \keys_set_known:nn, \keys_set_known:nV, -% \keys_set_known:nv, \keys_set_known:no, +% \keys_set_known:nv, \keys_set_known:ne, +% \keys_set_known:no % \keys_set_known:nnN, \keys_set_known:nVN, -% \keys_set_known:nvN, \keys_set_known:noN, +% \keys_set_known:nvN, \keys_set_known:neN, +% \keys_set_known:noN % \keys_set_known:nnnN, \keys_set_known:nVnN, -% \keys_set_known:nvnN, \keys_set_known:nonN +% \keys_set_known:nvnN, \keys_set_known:nenN, +% \keys_set_known:nonN % } % \begin{syntax} % \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} @@ -1730,7 +1738,7 @@ % % \subsection{The key defining mechanism} % -% \begin{macro}{\keys_define:nn} +% \begin{macro}{\keys_define:nn, \keys_define:ne, \keys_define:nx} % \begin{macro}{\@@_define:nnn, \@@_define:onn} % The public function for definitions is just a wrapper for the lower % level mechanism, more or less. The outer function is designed to @@ -1739,9 +1747,10 @@ % \begin{macrocode} \cs_new_protected:Npn \keys_define:nn { \@@_define:onn \l_@@_module_str } +\cs_generate_variant:Nn \keys_define:nn { ne , nx } \cs_new_protected:Npn \@@_define:nnn #1#2#3 { - \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} } + \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} } \keyval_parse:NNn \@@_define:n \@@_define:nn {#3} \str_set:Nn \l_@@_module_str {#1} } @@ -1776,7 +1785,7 @@ { \str_if_empty:NF \l_@@_property_str { - \msg_error:nnxx { keys } { property-unknown } + \msg_error:nnee { keys } { property-unknown } \l_@@_property_str \l_keys_path_str } } @@ -1798,12 +1807,12 @@ % and storing the text before and after it. Everything is turned into % strings, so there is no problem using an \texttt{x}-type expansion. Since % \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this -% function uses \cs{cs_set_nopar:Npx} instead of \cs{tl_set:Nx} to gain some +% function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some % speed. % \begin{macrocode} \cs_new_protected:Npn \@@_property_find:n #1 { - \cs_set_nopar:Npx \l_@@_property_str { \@@_trim_spaces:n { #1 } } + \cs_set_nopar:Npe \l_@@_property_str { \@@_trim_spaces:n { #1 } } \exp_after:wN \@@_property_find_auxi:w \l_@@_property_str \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil \@@_property_find_err:w @@ -1816,22 +1825,22 @@ #1 \s_@@_mark #2 \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil \@@_property_find_err:w { - \cs_set_nopar:Npx \l_keys_path_str + \cs_set_nopar:Npe \l_keys_path_str { \str_if_empty:NF \l_@@_module_str { \l_@@_module_str / } #1 } \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil \@@_property_find_auxiv:w } \cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark { - \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 } + \cs_set_nopar:Npe \l_keys_path_str { \l_keys_path_str . #1 } \@@_property_find_auxi:w } \cs_new_protected:Npn \@@_property_find_auxiv:w #1 \s_@@_nil \@@_property_find_auxiii:w \s_@@_mark \s_@@_nil \@@_property_find_auxiv:w { - \cs_set_nopar:Npx \l_@@_property_str { . #1 } - \cs_set_nopar:Npx \l_keys_path_str + \cs_set_nopar:Npe \l_@@_property_str { . #1 } + \cs_set_nopar:Npe \l_keys_path_str { \exp_after:wN \@@_trim_spaces:n \exp_after:wN { \l_keys_path_str } } \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str } @@ -1861,7 +1870,7 @@ \l_@@_property_str \s_@@_stop { \use:c { \c_@@_props_root_str \l_@@_property_str } } { - \msg_error:nnxx { keys } { property-requires-value } + \msg_error:nnee { keys } { property-requires-value } \l_@@_property_str \l_keys_path_str } } @@ -1896,13 +1905,13 @@ { \bool_if_exist:NF #1 { \bool_new:N #1 } \@@_choice_make: - \@@_cmd_set:nx { \l_keys_path_str / true } + \@@_cmd_set:ne { \l_keys_path_str / true } { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 } - \@@_cmd_set:nx { \l_keys_path_str / false } + \@@_cmd_set:ne { \l_keys_path_str / false } { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 } \@@_cmd_set_direct:nn { \l_keys_path_str / unknown } { - \msg_error:nnx { keys } { boolean-values-only } + \msg_error:nne { keys } { boolean-values-only } \l_keys_path_str } \@@_default_set:n { true } @@ -1932,7 +1941,7 @@ { \c_@@_type_root_str \@@_parent:o \l_keys_path_str } { choice } { - \msg_error:nnxx { keys } { nested-choice-key } + \msg_error:nnee { keys } { nested-choice-key } \l_keys_path_tl { \@@_parent:o \l_keys_path_str } } { \@@_choice_make_aux:N #1 } @@ -1946,7 +1955,7 @@ \@@_cmd_set_direct:nn \l_keys_path_str { #1 {##1} } \@@_cmd_set_direct:nn { \l_keys_path_str / unknown } { - \msg_error:nnxx { keys } { choice-unknown } + \msg_error:nnee { keys } { choice-unknown } \l_keys_path_str {##1} } } @@ -1971,7 +1980,7 @@ \clist_map_inline:nn {#2} { \int_incr:N \l_keys_choice_int - \@@_cmd_set:nx + \@@_cmd_set:ne { \l_keys_path_str / \@@_trim_spaces:n {##1} } { \tl_set:Nn \exp_not:N \l_keys_choice_tl {##1} @@ -1987,7 +1996,7 @@ % % \begin{macro} % { -% \@@_cmd_set:nn, \@@_cmd_set:nx, \@@_cmd_set:Vn, \@@_cmd_set:Vo, +% \@@_cmd_set:nn, \@@_cmd_set:Vn, \@@_cmd_set:ne, \@@_cmd_set:Vo, % \@@_cmd_set_direct:nn % } % Setting the code for a key first logs if appropriate that we are @@ -1995,7 +2004,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_cmd_set:nn #1#2 { \@@_cmd_set_direct:nn {#1} { \@@_precompile:n {#2} } } -\cs_generate_variant:Nn \@@_cmd_set:nn { nx , Vn , Vo } +\cs_generate_variant:Nn \@@_cmd_set:nn { ne , Vn , Vo } \cs_new_protected:Npn \@@_cmd_set_direct:nn #1#2 { \cs_set_protected:cpn { \c_@@_code_root_str #1 } ##1 {#2} } % \end{macrocode} @@ -2008,7 +2017,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_cs_set:NNpn #1#2#3# { - \cs_set_protected:cpx { \c_@@_code_root_str \l_keys_path_str } ##1 + \cs_set_protected:cpe { \c_@@_code_root_str \l_keys_path_str } ##1 { \@@_precompile:n { #1 \exp_not:N #2 \exp_not:n {#3} {##1} } @@ -2020,7 +2029,7 @@ % \end{macro} % % \begin{macro}{\@@_default_set:n} -% Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpx} as this +% Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpe} as this % avoids any worries about whether a token list exists. % \begin{macrocode} \cs_new_protected:Npn \@@_default_set:n #1 @@ -2032,7 +2041,7 @@ \tex_undefined:D } { - \cs_set_nopar:cpx + \cs_set_nopar:cpe { \c_@@_default_root_str \l_keys_path_str } { \exp_not:n {#1} } \@@_value_requirement:nn { required } { false } @@ -2114,13 +2123,13 @@ \cs_new_protected:Npn \@@_legacy_if_set:nnnn #1#2#3#4 { \@@_choice_make: - \@@_cmd_set:nx { \l_keys_path_str / true } + \@@_cmd_set:ne { \l_keys_path_str / true } { \exp_not:c { legacy_if_#2 set_ #3 :n } { \exp_not:n {#1} } } - \@@_cmd_set:nx { \l_keys_path_str / false } + \@@_cmd_set:ne { \l_keys_path_str / false } { \exp_not:c { legacy_if_#2 set_ #4 :n } { \exp_not:n {#1} } } \@@_cmd_set:nn { \l_keys_path_str / unknown } { - \msg_error:nnx { keys } { boolean-values-only } + \msg_error:nne { keys } { boolean-values-only } \l_keys_path_str } \@@_default_set:n { true } @@ -2165,7 +2174,7 @@ \prop_if_exist:NF #1 { \prop_new:N #1 } \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop \l_@@_tmpa_tl \l_@@_tmpb_tl - \@@_cmd_set:nx \l_keys_path_str + \@@_cmd_set:ne \l_keys_path_str { \exp_not:c { prop_ #2 put:Nnn } \exp_not:N #1 @@ -2225,7 +2234,7 @@ } } { - \msg_error:nnx { keys } + \msg_error:nne { keys } { boolean-values-only } { .value_ #1 :n } } @@ -2234,7 +2243,7 @@ { \bool_if:NF \l_@@_no_value_bool { - \msg_error:nnxx { keys } { value-forbidden } + \msg_error:nnee { keys } { value-forbidden } \l_keys_path_str \l_keys_value_tl \use_none:nnn } @@ -2243,7 +2252,7 @@ { \bool_if:NT \l_@@_no_value_bool { - \msg_error:nnx { keys } { value-required } + \msg_error:nne { keys } { value-required } \l_keys_path_str \use_none:nnn } @@ -2294,7 +2303,7 @@ { \prop_get:NVNF #1 \l_@@_module_str \l_@@_tmpa_tl { \tl_clear:N \l_@@_tmpa_tl } - \tl_set:Nx \l_@@_tmpb_tl + \tl_set:Ne \l_@@_tmpb_tl { \exp_after:wN \@@_usage:w \l_keys_path_str \s_@@_stop } \bool_if:NTF #2 { \clist_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl } @@ -2316,7 +2325,7 @@ \cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4 { \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 } - \@@_cmd_set:nx \l_keys_path_str + \@@_cmd_set:ne \l_keys_path_str { \exp_not:c { #2 _ #3 set:N #4 } \exp_not:N #1 @@ -2386,8 +2395,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} -% {.choices:nn, .choices:Vn, .choices:on, .choices:xn} +% \begin{macro}{.choices:nn, .choices:Vn, .choices:en, .choices:on, .choices:xn} % For auto-generation of a series of mutually-exclusive choices. % Here, |#1| consists of two separate % arguments, hence the slightly odd-looking implementation. @@ -2396,6 +2404,8 @@ { \@@_choices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .choices:Vn } #1 { \exp_args:NV \@@_choices_make:nn #1 } +\cs_new_protected:cpn { \c_@@_props_root_str .choices:en } #1 + { \exp_args:Ne \@@_choices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .choices:on } #1 { \exp_args:No \@@_choices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1 @@ -2452,13 +2462,15 @@ % \end{macro} % \end{macro} % -% \begin{macro}{.default:n, .default:V, .default:o, .default:x} +% \begin{macro}{.default:n, .default:V, .default:e, .default:o, .default:x} % Expansion is left to the internal functions. % \begin{macrocode} \cs_new_protected:cpn { \c_@@_props_root_str .default:n } #1 { \@@_default_set:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .default:V } #1 { \exp_args:NV \@@_default_set:n #1 } +\cs_new_protected:cpn { \c_@@_props_root_str .default:e } #1 + { \exp_args:Ne \@@_default_set:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .default:o } #1 { \exp_args:No \@@_default_set:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .default:x } #1 @@ -2514,13 +2526,15 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{.initial:n, .initial:V, .initial:o, .initial:x} +% \begin{macro}{.initial:n, .initial:V, .initial:e, .initial:o, .initial:x} % The standard hand-off approach. % \begin{macrocode} \cs_new_protected:cpn { \c_@@_props_root_str .initial:n } #1 { \@@_initialise:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .initial:V } #1 { \exp_args:NV \@@_initialise:n #1 } +\cs_new_protected:cpn { \c_@@_props_root_str .initial:e } #1 + { \exp_args:Ne \@@_initialise:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .initial:o } #1 { \exp_args:No \@@_initialise:n {#1} } \cs_new_protected:cpn { \c_@@_props_root_str .initial:x } #1 @@ -2579,11 +2593,7 @@ % \end{macro} % % \begin{macro}{.multichoice:} -% \begin{macro} -% { -% .multichoices:nn, .multichoices:Vn, .multichoices:on, -% .multichoices:xn, -% } +% \begin{macro}{.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on, .multichoices:xn} % The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but % where more than one choice is allowed. % \begin{macrocode} @@ -2593,6 +2603,8 @@ { \@@_multichoices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:Vn } #1 { \exp_args:NV \@@_multichoices_make:nn #1 } +\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:en } #1 + { \exp_args:Ne \@@_multichoices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:on } #1 { \exp_args:No \@@_multichoices_make:nn #1 } \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1 @@ -2647,26 +2659,26 @@ % % \begin{macro}{.str_set:N, .str_set:c} % \begin{macro}{.str_gset:N, .str_gset:c} -% \begin{macro}{.str_set_x:N, .str_set_x:c} -% \begin{macro}{.str_gset_x:N, .str_gset_x:c} +% \begin{macro}{.str_set_e:N, .str_set_e:c} +% \begin{macro}{.str_gset_e:N, .str_gset_e:c} % Setting a variable is very easy: just pass the data along. % \begin{macrocode} \cs_new_protected:cpn { \c_@@_props_root_str .str_set:N } #1 { \@@_variable_set:NnnN #1 { str } { } n } \cs_new_protected:cpn { \c_@@_props_root_str .str_set:c } #1 { \@@_variable_set:cnnN {#1} { str } { } n } -\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1 - { \@@_variable_set:NnnN #1 { str } { } x } -\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1 - { \@@_variable_set:cnnN {#1} { str } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:N } #1 + { \@@_variable_set:NnnN #1 { str } { } e } +\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:c } #1 + { \@@_variable_set:cnnN {#1} { str } { } e } \cs_new_protected:cpn { \c_@@_props_root_str .str_gset:N } #1 { \@@_variable_set:NnnN #1 { str } { g } n } \cs_new_protected:cpn { \c_@@_props_root_str .str_gset:c } #1 { \@@_variable_set:cnnN {#1} { str } { g } n } -\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1 - { \@@_variable_set:NnnN #1 { str } { g } x } -\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1 - { \@@_variable_set:cnnN {#1} { str } { g } x } +\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:N } #1 + { \@@_variable_set:NnnN #1 { str } { g } e } +\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:c } #1 + { \@@_variable_set:cnnN {#1} { str } { g } e } % \end{macrocode} % \end{macro} % \end{macro} @@ -2675,26 +2687,26 @@ % % \begin{macro}{.tl_set:N, .tl_set:c} % \begin{macro}{.tl_gset:N, .tl_gset:c} -% \begin{macro}{.tl_set_x:N, .tl_set_x:c} -% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c} +% \begin{macro}{.tl_set_e:N, .tl_set_e:c} +% \begin{macro}{.tl_gset_e:N, .tl_gset_e:c} % Setting a variable is very easy: just pass the data along. % \begin{macrocode} \cs_new_protected:cpn { \c_@@_props_root_str .tl_set:N } #1 { \@@_variable_set:NnnN #1 { tl } { } n } \cs_new_protected:cpn { \c_@@_props_root_str .tl_set:c } #1 { \@@_variable_set:cnnN {#1} { tl } { } n } -\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1 - { \@@_variable_set:NnnN #1 { tl } { } x } -\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1 - { \@@_variable_set:cnnN {#1} { tl } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:N } #1 + { \@@_variable_set:NnnN #1 { tl } { } e } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:c } #1 + { \@@_variable_set:cnnN {#1} { tl } { } e } \cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:N } #1 { \@@_variable_set:NnnN #1 { tl } { g } n } \cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:c } #1 { \@@_variable_set:cnnN {#1} { tl } { g } n } -\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1 - { \@@_variable_set:NnnN #1 { tl } { g } x } -\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1 - { \@@_variable_set:cnnN {#1} { tl } { g } x } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:N } #1 + { \@@_variable_set:NnnN #1 { tl } { g } e } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:c } #1 + { \@@_variable_set:cnnN {#1} { tl } { g } e } % \end{macrocode} % \end{macro} % \end{macro} @@ -2732,7 +2744,8 @@ % % \begin{macro} % { -% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx, +% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:ne, +% \keys_set:no, \keys_set:nx, % \@@_set:nn % } % \begin{macro}{\@@_set:nnn} @@ -2740,7 +2753,7 @@ % \begin{macrocode} \cs_new_protected:Npn \keys_set:nn #1#2 { - \use:x + \use:e { \bool_set_false:N \exp_not:N \l_@@_only_known_bool \bool_set_false:N \exp_not:N \l_@@_filtered_bool @@ -2758,12 +2771,12 @@ { \exp_not:o \l_@@_relative_tl } } } -\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx } +\cs_generate_variant:Nn \keys_set:nn { nV , nv , ne , no , nx } \cs_new_protected:Npn \@@_set:nn #1#2 { \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} } \cs_new_protected:Npn \@@_set:nnn #1#2#3 { - \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} } + \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} } \keyval_parse:NNn \@@_set_keyval:n \@@_set_keyval:nn {#3} \str_set:Nn \l_@@_module_str {#1} } @@ -2774,18 +2787,21 @@ % \begin{macro} % { % \keys_set_known:nnN, \keys_set_known:nVN, -% \keys_set_known:nvN, \keys_set_known:noN +% \keys_set_known:nvN, \keys_set_known:neN, +% \keys_set_known:noN % } % \begin{macro} % { % \keys_set_known:nnnN, \keys_set_known:nVnN, -% \keys_set_known:nvnN, \keys_set_known:nonN +% \keys_set_known:nvnN, \keys_set_known:nenN, +% \keys_set_known:nonN % } % \begin{macro}{\@@_set_known:nnnnN} % \begin{macro} % { % \keys_set_known:nn, \keys_set_known:nV, -% \keys_set_known:nv, \keys_set_known:no +% \keys_set_known:nv, \keys_set_known:ne, +% \keys_set_known:no % } % \begin{macro}{\@@_set_known:nnn} % Setting known keys simply means setting the appropriate flag, then @@ -2799,26 +2815,26 @@ \exp_args:No \@@_set_known:nnnnN \l_@@_unused_clist \q_@@_no_value {#1} {#2} #3 } -\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no } +\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , ne , no } \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4 { \exp_args:No \@@_set_known:nnnnN \l_@@_unused_clist {#3} {#1} {#2} #4 } -\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , no } +\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , ne , no } \cs_new_protected:Npn \@@_set_known:nnnnN #1#2#3#4#5 { \clist_clear:N \l_@@_unused_clist \@@_set_known:nnn {#2} {#3} {#4} - \__kernel_tl_set:Nx #5 { \exp_not:o \l_@@_unused_clist } + \__kernel_tl_set:Ne #5 { \exp_not:o \l_@@_unused_clist } \tl_set:Nn \l_@@_unused_clist {#1} } \cs_new_protected:Npn \keys_set_known:nn #1#2 { \@@_set_known:nnn \q_@@_no_value {#1} {#2} } -\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } +\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , ne , no } \cs_new_protected:Npn \@@_set_known:nnn #1#2#3 { - \use:x + \use:e { \bool_set_true:N \exp_not:N \l_@@_only_known_bool \bool_set_false:N \exp_not:N \l_@@_filtered_bool @@ -2888,7 +2904,7 @@ { \clist_clear:N \l_@@_unused_clist \@@_set_filter:nnnn {#2} {#3} {#4} {#5} - \__kernel_tl_set:Nx #6 { \exp_not:o \l_@@_unused_clist } + \__kernel_tl_set:Ne #6 { \exp_not:o \l_@@_unused_clist } \tl_set:Nn \l_@@_unused_clist {#1} } \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3 @@ -2896,7 +2912,7 @@ \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } \cs_new_protected:Npn \@@_set_filter:nnnn #1#2#3#4 { - \use:x + \use:e { \bool_set_false:N \exp_not:N \l_@@_only_known_bool \bool_set_true:N \exp_not:N \l_@@_filtered_bool @@ -2915,7 +2931,7 @@ } \cs_new_protected:Npn \keys_set_groups:nnn #1#2#3 { - \use:x + \use:e { \bool_set_false:N \exp_not:N \l_@@_only_known_bool \bool_set_false:N \exp_not:N \l_@@_filtered_bool @@ -3001,7 +3017,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_set_keyval:nnn #1#2#3 { - \__kernel_tl_set:Nx \l_keys_path_str + \__kernel_tl_set:Ne \l_keys_path_str { \tl_if_blank:nF {#1} { #1 / } @@ -3020,7 +3036,7 @@ } \cs_generate_variant:Nn \@@_set_keyval:nnn { o } % \end{macrocode} -% This function uses \cs{cs_set_nopar:Npx} internally for performance reasons, +% This function uses \cs{cs_set_nopar:Npe} internally for performance reasons, % the argument |#1| is already a string in every usage, so turning it into a % string again seems unnecessary. % \begin{macrocode} @@ -3036,12 +3052,12 @@ \cs_new_protected:Npn \@@_find_key_module_auxii:Nw #1 #2 \s_@@_mark #3 \s_@@_nil \@@_find_key_module_auxii:Nw { - \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 } \@@_find_key_module_auxi:Nw #1 #3 \s_@@_nil \@@_find_key_module_auxiii:Nw } \cs_new_protected:Npn \@@_find_key_module_auxiii:Nw #1 #2 \s_@@_mark { - \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 } \@@_find_key_module_auxi:Nw #1 } \cs_new_protected:Npn \@@_find_key_module_auxiv:Nw @@ -3209,7 +3225,7 @@ { \c_@@_code_root_str \l_@@_module_str / unknown } { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl } { - \msg_error:nnxx { keys } { unknown } + \msg_error:nnee { keys } { unknown } \l_keys_path_str \l_@@_module_str } } @@ -3248,7 +3264,7 @@ { \@@_quark_if_no_value:NTF \l_@@_relative_tl { - \clist_put_right:Nx \l_@@_unused_clist + \clist_put_right:Ne \l_@@_unused_clist { \l_keys_key_str \bool_if:NF \l_@@_no_value_bool @@ -3258,7 +3274,7 @@ { \tl_if_empty:NTF \l_@@_relative_tl { - \clist_put_right:Nx \l_@@_unused_clist + \clist_put_right:Ne \l_@@_unused_clist { \l_keys_path_str \bool_if:NF \l_@@_no_value_bool @@ -3270,30 +3286,30 @@ } \cs_new_protected:Npn \@@_store_unused_aux: { - \__kernel_tl_set:Nx \l_@@_relative_tl + \__kernel_tl_set:Ne \l_@@_relative_tl { \exp_args:No \@@_trim_spaces:n \l_@@_relative_tl } - \use:x + \use:e { \cs_set_protected:Npn \@@_store_unused:w - ####1 \l_@@_relative_tl / - ####2 \l_@@_relative_tl / - ####3 \s_@@_stop + ##1 \l_@@_relative_tl / + ##2 \l_@@_relative_tl / + ##3 \s_@@_stop } { \tl_if_blank:nF {##1} { - \msg_error:nnxx { keys } { bad-relative-key-path } + \msg_error:nnee { keys } { bad-relative-key-path } \l_keys_path_str \l_@@_relative_tl } - \clist_put_right:Nx \l_@@_unused_clist + \clist_put_right:Ne \l_@@_unused_clist { \exp_not:n {##2} \bool_if:NF \l_@@_no_value_bool { = { \exp_not:o \l_keys_value_tl } } } } - \use:x + \use:e { \@@_store_unused:w \l_keys_path_str \l_@@_relative_tl / \l_@@_relative_tl / @@ -3458,9 +3474,9 @@ % To show a key, show its code using a message. % \begin{macrocode} \cs_new_protected:Npn \keys_show:nn - { \@@_show:Nnn \msg_show:nnxxxx } + { \@@_show:Nnn \msg_show:nneeee } \cs_new_protected:Npn \keys_log:nn - { \@@_show:Nnn \msg_log:nnxxxx } + { \@@_show:Nnn \msg_log:nneeee } \cs_new_protected:Npn \@@_show:Nnn #1#2#3 { #1 { keys } { show-key } @@ -3483,7 +3499,7 @@ } { } { } } -\cs_new:Npx \@@_show:n #1 +\cs_new:Npe \@@_show:n #1 { \exp_not:N \@@_show:w #1 @@ -3492,21 +3508,21 @@ \tl_to_str:n { \@@_precompile:n } \exp_not:N \s_@@_stop } -\use:x +\use:e { \cs_new:Npn \exp_not:N \@@_show:w - ##1 \tl_to_str:n { \@@_precompile:n } - ##2 \tl_to_str:n { \@@_precompile:n } - ##3 \exp_not:N \s_@@_stop + #1 \tl_to_str:n { \@@_precompile:n } + #2 \tl_to_str:n { \@@_precompile:n } + #3 \exp_not:N \s_@@_stop } { \tl_if_blank:nTF {#2} {#1} { \@@_show:Nw #2 \s_@@_stop } } -\use:x +\use:e { - \cs_new:Npn \exp_not:N \@@_show:Nw ##1##2 + \cs_new:Npn \exp_not:N \@@_show:Nw #1#2 \c_right_brace_str \exp_not:N \s_@@_stop } {#2} @@ -3568,6 +3584,38 @@ \prop_gput:Nnn \g_msg_module_type_prop { keys } { } % \end{macrocode} % +% \subsection{Deprecated functions} +% +% \begin{macro}{.str_set_x:N, .str_set_x:c} +% \begin{macro}{.str_gset_x:N, .str_gset_x:c} +% \begin{macrocode} +\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1 + { \@@_variable_set:NnnN #1 { str } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1 + { \@@_variable_set:cnnN {#1} { str } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1 + { \@@_variable_set:NnnN #1 { str } { g } x } +\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1 + { \@@_variable_set:cnnN {#1} { str } { g } x } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{.tl_set_x:N, .tl_set_x:c} +% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c} +% \begin{macrocode} +\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1 + { \@@_variable_set:NnnN #1 { tl } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1 + { \@@_variable_set:cnnN {#1} { tl } { } x } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1 + { \@@_variable_set:NnnN #1 { tl } { g } x } +\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1 + { \@@_variable_set:cnnN {#1} { tl } { g } x } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macrocode} %</package> % \end{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index 4142ac4658..92b8cdb971 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index 4e1f6a5bb8..c7832c892d 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index 82092523fa..4feb4115a1 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -105,8 +105,8 @@ % % \begin{function}[updated = 2011-08-16] % { -% \msg_new:nnnn, \msg_new:nnxx, -% \msg_new:nnn, \msg_new:nnx +% \msg_new:nnnn, \msg_new:nnee, +% \msg_new:nnn, \msg_new:nne % } % \begin{syntax} % \cs{msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text} @@ -320,12 +320,12 @@ % \msg_fatal:nnVn , % \msg_fatal:nnnV , % \msg_fatal:nnV , -% \msg_fatal:nnxxxx , -% \msg_fatal:nnxxx , -% \msg_fatal:nnnxx , -% \msg_fatal:nnxx , -% \msg_fatal:nnnx , -% \msg_fatal:nnx +% \msg_fatal:nneeee , +% \msg_fatal:nneee , +% \msg_fatal:nnnee , +% \msg_fatal:nnee , +% \msg_fatal:nnne , +% \msg_fatal:nne % } % \begin{syntax} % \cs{msg_fatal:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -347,12 +347,12 @@ % \msg_critical:nnVn , % \msg_critical:nnnV , % \msg_critical:nnV , -% \msg_critical:nnxxxx , -% \msg_critical:nnxxx , -% \msg_critical:nnnxx , -% \msg_critical:nnxx , -% \msg_critical:nnnx , -% \msg_critical:nnx +% \msg_critical:nneeee , +% \msg_critical:nneee , +% \msg_critical:nnnee , +% \msg_critical:nnee , +% \msg_critical:nnne , +% \msg_critical:nne % } % \begin{syntax} % \cs{msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -380,12 +380,12 @@ % \msg_error:nnVn , % \msg_error:nnnV , % \msg_error:nnV , -% \msg_error:nnxxxx , -% \msg_error:nnxxx , -% \msg_error:nnnxx , -% \msg_error:nnxx , -% \msg_error:nnnx , -% \msg_error:nnx +% \msg_error:nneeee , +% \msg_error:nneee , +% \msg_error:nnnee , +% \msg_error:nnee , +% \msg_error:nnne , +% \msg_error:nne % } % \begin{syntax} % \cs{msg_error:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -402,21 +402,20 @@ % \msg_warning:nnnnn , % \msg_warning:nnnn , % \msg_warning:nnn , -% \msg_warning:nnn , % \msg_warning:nn , % \msg_warning:nnVV , % \msg_warning:nnVn , % \msg_warning:nnnV , % \msg_warning:nnV , -% \msg_warning:nnxxxx , -% \msg_warning:nnxxx , -% \msg_warning:nnnxx , -% \msg_warning:nnxx , -% \msg_warning:nnnx , -% \msg_warning:nnx +% \msg_warning:nneeee , +% \msg_warning:nneee , +% \msg_warning:nnnee , +% \msg_warning:nnee , +% \msg_warning:nnne , +% \msg_warning:nne % } % \begin{syntax} -% \cs{msg_warning:nnxxxx} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} +% \cs{msg_warning:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} % \end{syntax} % Issues \meta{module} warning \meta{message}, passing \meta{arg one} % to \meta{arg four} to the text-creating functions. The warning text @@ -435,12 +434,12 @@ % \msg_note:nnVn , % \msg_note:nnnV , % \msg_note:nnV , -% \msg_note:nnxxxx , -% \msg_note:nnxxx , -% \msg_note:nnnxx , -% \msg_note:nnxx , -% \msg_note:nnnx , -% \msg_note:nnx , +% \msg_note:nneeee , +% \msg_note:nneee , +% \msg_note:nnnee , +% \msg_note:nnee , +% \msg_note:nnne , +% \msg_note:nne , % \msg_info:nnnnnn , % \msg_info:nnnnn , % \msg_info:nnnn , @@ -450,12 +449,12 @@ % \msg_info:nnVn , % \msg_info:nnnV , % \msg_info:nnV , -% \msg_info:nnxxxx , -% \msg_info:nnxxx , -% \msg_info:nnnxx , -% \msg_info:nnxx , -% \msg_info:nnnx , -% \msg_info:nnx +% \msg_info:nneeee , +% \msg_info:nneee , +% \msg_info:nnnee , +% \msg_info:nnee , +% \msg_info:nnne , +% \msg_info:nne % } % \begin{syntax} % \cs{msg_note:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -480,12 +479,12 @@ % \msg_term:nnVn , % \msg_term:nnnV , % \msg_term:nnV , -% \msg_term:nnxxxx , -% \msg_term:nnxxx , -% \msg_term:nnnxx , -% \msg_term:nnxx , -% \msg_term:nnnx , -% \msg_term:nnx , +% \msg_term:nneeee , +% \msg_term:nneee , +% \msg_term:nnnee , +% \msg_term:nnee , +% \msg_term:nnne , +% \msg_term:nne , % \msg_log:nnnnnn , % \msg_log:nnnnn , % \msg_log:nnnn , @@ -495,12 +494,12 @@ % \msg_log:nnVn , % \msg_log:nnnV , % \msg_log:nnV , -% \msg_log:nnxxxx , -% \msg_log:nnxxx , -% \msg_log:nnnxx , -% \msg_log:nnxx , -% \msg_log:nnnx , -% \msg_log:nnx +% \msg_log:nneeee , +% \msg_log:nneee , +% \msg_log:nnnee , +% \msg_log:nnee , +% \msg_log:nnne , +% \msg_log:nne % } % \begin{syntax} % \cs{msg_term:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -525,12 +524,12 @@ % \msg_none:nnVn , % \msg_none:nnnV , % \msg_none:nnV , -% \msg_none:nnxxxx , -% \msg_none:nnxxx , -% \msg_none:nnnxx , -% \msg_none:nnxx , -% \msg_none:nnnx , -% \msg_none:nnx +% \msg_none:nneeee , +% \msg_none:nneee , +% \msg_none:nnnee , +% \msg_none:nnee , +% \msg_none:nnne , +% \msg_none:nne % } % \begin{syntax} % \cs{msg_none:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -552,12 +551,12 @@ % \msg_show:nnVn , % \msg_show:nnnV , % \msg_show:nnV , -% \msg_show:nnxxxx , -% \msg_show:nnxxx , -% \msg_show:nnnxx , -% \msg_show:nnxx , -% \msg_show:nnnx , -% \msg_show:nnx +% \msg_show:nneeee , +% \msg_show:nneee , +% \msg_show:nnnee , +% \msg_show:nnee , +% \msg_show:nnne , +% \msg_show:nne % } % \begin{syntax} % \cs{msg_show:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} @@ -579,7 +578,7 @@ % \cs{seq_map_function:NN} \meta{seq} \cs{msg_show_item:n} % \cs{prop_map_function:NN} \meta{prop} \cs{msg_show_item:nn} % \end{syntax} -% Used in the text of messages for \cs{msg_show:nnxxxx} to show or log +% Used in the text of messages for \cs{msg_show:nnnnnn} to show or log % a list of items or key--value pairs. The output of % \cs{msg_show_item:n} produces a newline, the prefix |>|, two spaces, % then the braced string representation of its argument. @@ -798,14 +797,18 @@ { \msg_if_exist:nnT {#1} {#2} { - \msg_error:nnxx { msg } { already-defined } + \msg_error:nnnn { msg } { already-defined } {#1} {#2} } } % \end{macrocode} % \end{macro} % -% \begin{macro}{\msg_new:nnnn, \msg_new:nnxx, \msg_new:nnn, \msg_new:nnx} +% \begin{macro} +% { +% \msg_new:nnnn, \msg_new:nnee, \msg_new:nnxx, +% \msg_new:nnn, \msg_new:nne, \msg_new:nnx +% } % \begin{macro}{\msg_gset:nnnn, \msg_gset:nnn} % \begin{macro}{\msg_set:nnnn, \msg_set:nnn} % Setting a message simply means saving the appropriate text @@ -816,10 +819,10 @@ \@@_chk_free:nn {#1} {#2} \msg_gset:nnnn {#1} {#2} } -\cs_generate_variant:Nn \msg_new:nnnn { nnxx } +\cs_generate_variant:Nn \msg_new:nnnn { nnee , nnxx } \cs_new_protected:Npn \msg_new:nnn #1#2#3 { \msg_new:nnnn {#1} {#2} {#3} { } } -\cs_generate_variant:Nn \msg_new:nnn { nnx } +\cs_generate_variant:Nn \msg_new:nnn { nne , nnx } \cs_new_protected:Npn \msg_set:nnnn #1#2#3#4 { \cs_set:cpn { \c_@@_text_prefix_tl #1 / #2 } @@ -923,8 +926,8 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_interrupt:NnnnN #1#2#3#4#5 { - \str_set:Nx \l_@@_text_str { #1 {#2} } - \str_set:Nx \l_@@_name_str { \msg_module_name:n {#2} } + \str_set:Ne \l_@@_text_str { #1 {#2} } + \str_set:Ne \l_@@_name_str { \msg_module_name:n {#2} } \cs_if_eq:cNTF { \c_@@_more_text_prefix_tl #2 / #3 } \@@_no_more_text:nnnn @@ -972,7 +975,7 @@ \iow_wrap:nnnN { \\ #3 } { } { } \@@_interrupt_more_text:n \group_begin: \int_sub:Nn \l_iow_line_count_int { 2 } - \iow_wrap:nxnN { \l_@@_text_str : ~ #1 } + \iow_wrap:nenN { \l_@@_text_str : ~ #1 } { ( \l_@@_name_str ) \prg_replicate:nn @@ -993,7 +996,7 @@ \tl_set:Nn \l_@@_internal_tl {#1} } \cs_new_protected:Npn \@@_interrupt_more_text:n #1 - { \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } } + { \exp_args:Ne \tex_errhelp:D { #1 \iow_newline: } } % \end{macrocode} % \end{macro} % \end{macro} @@ -1165,39 +1168,28 @@ ##1##2##3##4##5##6 {#2} \cs_new_protected:cpn { msg_ #1 :nnnnnn } ##1##2##3##4##5##6 { - \use:x + \use:e { \exp_not:n { \@@_use:nnnnnnn {#1} {##1} {##2} } { \tl_to_str:n {##3} } { \tl_to_str:n {##4} } { \tl_to_str:n {##5} } { \tl_to_str:n {##6} } } } - \cs_new_protected:cpx { msg_ #1 :nnnnn } ##1##2##3##4##5 + \cs_new_protected:cpe { msg_ #1 :nnnnn } ##1##2##3##4##5 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } } - \cs_new_protected:cpx { msg_ #1 :nnnn } ##1##2##3##4 + \cs_new_protected:cpe { msg_ #1 :nnnn } ##1##2##3##4 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } } - \cs_new_protected:cpx { msg_ #1 :nnn } ##1##2##3 + \cs_new_protected:cpe { msg_ #1 :nnn } ##1##2##3 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } } - \cs_new_protected:cpx { msg_ #1 :nn } ##1##2 + \cs_new_protected:cpe { msg_ #1 :nn } ##1##2 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } } - \cs_generate_variant:cn { msg_ #1 :nnn } { nnV } - \cs_generate_variant:cn { msg_ #1 :nnnn } { nnVV , nnVn , nnnV , nnnx } - \cs_generate_variant:cn { msg_ #1 :nnnnn } { nnnxx } - \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6 - { - \use:x - { - \exp_not:N \exp_not:n - { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} } - {##3} {##4} {##5} {##6} - } - } - \cs_new_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5 - { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } } - \cs_new_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4 - { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } } - \cs_new_protected:cpx { msg_ #1 :nnx } ##1##2##3 - { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } } + \cs_generate_variant:cn { msg_ #1 :nnn } + { nnV , nne , nnx } + \cs_generate_variant:cn { msg_ #1 :nnnn } + { nnVV , nnVn , nnnV , nnne , nnnx , nnee , nnxx } + \cs_generate_variant:cn { msg_ #1 :nnnnn } + { nnnee , nnnxx , nneee , nnxxx } + \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx } } % \end{macrocode} % \end{macro} @@ -1213,11 +1205,17 @@ % \msg_fatal:nnVn , % \msg_fatal:nnnV , % \msg_fatal:nnV , +% \msg_fatal:nneeee , +% \msg_fatal:nneee , % \msg_fatal:nnxxxx , % \msg_fatal:nnxxx , +% \msg_fatal:nnnee , +% \msg_fatal:nnee , % \msg_fatal:nnnxx , % \msg_fatal:nnxx , % \msg_fatal:nnnx , +% \msg_fatal:nnne , +% \msg_fatal:nne , % \msg_fatal:nnx % } % \begin{macro}{\@@_fatal_exit:} @@ -1253,11 +1251,17 @@ % \msg_critical:nnVn , % \msg_critical:nnnV , % \msg_critical:nnV , +% \msg_critical:nneeee , +% \msg_critical:nneee , % \msg_critical:nnxxxx , % \msg_critical:nnxxx , +% \msg_critical:nnnee , +% \msg_critical:nnee , % \msg_critical:nnnxx , % \msg_critical:nnxx , % \msg_critical:nnnx , +% \msg_critical:nnne , +% \msg_critical:nne , % \msg_critical:nnx % } % Not quite so bad: just end the current file. @@ -1284,11 +1288,17 @@ % \msg_error:nnVn , % \msg_error:nnnV , % \msg_error:nnV , +% \msg_error:nneeee , +% \msg_error:nneee , % \msg_error:nnxxxx , % \msg_error:nnxxx , +% \msg_error:nnnee , +% \msg_error:nnee , % \msg_error:nnnxx , % \msg_error:nnxx , % \msg_error:nnnx , +% \msg_error:nnne , +% \msg_error:nne , % \msg_error:nnx % } % For an error, the interrupt routine is called. We check if there is @@ -1296,8 +1306,8 @@ % permanently empty text. We have to undefine the bootstrap versions % here. % \begin{macrocode} - \cs_undefine:N \msg_error:nnxx - \cs_undefine:N \msg_error:nnx + \cs_undefine:N \msg_error:nnee + \cs_undefine:N \msg_error:nne \cs_undefine:N \msg_error:nn \@@_class_new:nn { error } { @@ -1321,11 +1331,17 @@ % \msg_warning:nnVn , % \msg_warning:nnnV , % \msg_warning:nnV , +% \msg_warning:nneeee , +% \msg_warning:nneee , % \msg_warning:nnxxxx , % \msg_warning:nnxxx , +% \msg_warning:nnnee , +% \msg_warning:nnee , % \msg_warning:nnnxx , % \msg_warning:nnxx , % \msg_warning:nnnx , +% \msg_warning:nnne , +% \msg_warning:nne , % \msg_warning:nnx , % \msg_note:nnnnnn , % \msg_note:nnnnn , @@ -1336,11 +1352,17 @@ % \msg_note:nnVn , % \msg_note:nnnV , % \msg_note:nnV , +% \msg_note:nneeee , +% \msg_note:nneee , % \msg_note:nnxxxx , % \msg_note:nnxxx , +% \msg_note:nnnee , +% \msg_note:nnee , % \msg_note:nnnxx , % \msg_note:nnxx , % \msg_note:nnnx , +% \msg_note:nnne , +% \msg_note:nne , % \msg_note:nnx , % \msg_info:nnnnnn , % \msg_info:nnnnn , @@ -1351,12 +1373,18 @@ % \msg_info:nnVn , % \msg_info:nnnV , % \msg_info:nnV , +% \msg_info:nneeee , +% \msg_info:nneee , % \msg_info:nnxxxx , % \msg_info:nnxxx , +% \msg_info:nnnee , +% \msg_info:nnee , % \msg_info:nnnxx , % \msg_info:nnxx , % \msg_info:nnnx , -% \msg_info:nnx , +% \msg_info:nnne , +% \msg_info:nne , +% \msg_info:nnx % } % Warnings and information messages have no decoration. Warnings are % printed to the terminal while information can either go to the log @@ -1364,10 +1392,10 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8 { - \str_set:Nx \l_@@_text_str { #2 {#3} } - \str_set:Nx \l_@@_name_str { \msg_module_name:n {#3} } + \str_set:Ne \l_@@_text_str { #2 {#3} } + \str_set:Ne \l_@@_name_str { \msg_module_name:n {#3} } #1 { } - \iow_wrap:nxnN + \iow_wrap:nenN { \l_@@_text_str : ~ \use:c { \c_@@_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8} @@ -1404,21 +1432,6 @@ % % \begin{macro} % { -% \msg_log:nnnnnn , -% \msg_log:nnnnn , -% \msg_log:nnnn , -% \msg_log:nnn , -% \msg_log:nn , -% \msg_log:nnVV , -% \msg_log:nnVn , -% \msg_log:nnnV , -% \msg_log:nnV , -% \msg_log:nnxxxx , -% \msg_log:nnxxx , -% \msg_log:nnnxx , -% \msg_log:nnxx , -% \msg_log:nnnx , -% \msg_log:nnx , % \msg_term:nnnnnn , % \msg_term:nnnnn , % \msg_term:nnnn , @@ -1428,12 +1441,39 @@ % \msg_term:nnVn , % \msg_term:nnnV , % \msg_term:nnV , +% \msg_term:nneeee , +% \msg_term:nneee , % \msg_term:nnxxxx , % \msg_term:nnxxx , +% \msg_term:nnnee , +% \msg_term:nnee , % \msg_term:nnnxx , % \msg_term:nnxx , % \msg_term:nnnx , +% \msg_term:nnne , +% \msg_term:nne , % \msg_term:nnx , +% \msg_log:nnnnnn , +% \msg_log:nnnnn , +% \msg_log:nnnn , +% \msg_log:nnn , +% \msg_log:nn , +% \msg_log:nnVV , +% \msg_log:nnVn , +% \msg_log:nnnV , +% \msg_log:nnV , +% \msg_log:nneeee , +% \msg_log:nneee , +% \msg_log:nnxxxx , +% \msg_log:nnxxx , +% \msg_log:nnnee , +% \msg_log:nnee , +% \msg_log:nnnxx , +% \msg_log:nnxx , +% \msg_log:nnnx , +% \msg_log:nnne , +% \msg_log:nne , +% \msg_log:nnx % } % \enquote{Log} data is very similar to information, but with no extras % added. @@ -1467,11 +1507,17 @@ % \msg_none:nnVn , % \msg_none:nnnV , % \msg_none:nnV , +% \msg_none:nneeee , +% \msg_none:nneee , % \msg_none:nnxxxx , % \msg_none:nnxxx , +% \msg_none:nnnee , +% \msg_none:nnee , % \msg_none:nnnxx , % \msg_none:nnxx , % \msg_none:nnnx , +% \msg_none:nnne , +% \msg_none:nne , % \msg_none:nnx % } % The \texttt{none} message type is needed so that input can be gobbled. @@ -1491,11 +1537,17 @@ % \msg_show:nnVn , % \msg_show:nnnV , % \msg_show:nnV , +% \msg_show:nneeee , +% \msg_show:nneee , % \msg_show:nnxxxx , % \msg_show:nnxxx , +% \msg_show:nnnee , +% \msg_show:nnee , % \msg_show:nnnxx , % \msg_show:nnxx , -% \msg_show:nnx , +% \msg_show:nnnx , +% \msg_show:nnne , +% \msg_show:nne , % \msg_show:nnx % } % \begin{macro}{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn} @@ -1563,18 +1615,18 @@ % the messages. We need to use |^^J| here directly as \pkg{l3file} is % not yet loaded. % \begin{macrocode} -\cs_new:Npx \msg_show_item:n #1 +\cs_new:Npe \msg_show_item:n #1 { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n { {#1} } } -\cs_new:Npx \msg_show_item_unbraced:n #1 +\cs_new:Npe \msg_show_item_unbraced:n #1 { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n {#1} } -\cs_new:Npx \msg_show_item:nn #1#2 +\cs_new:Npe \msg_show_item:nn #1#2 { ^^J > \use:nn { ~ } { ~ } \exp_not:N \tl_to_str:n { {#1} } \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ } \exp_not:N \tl_to_str:n { {#2} } } -\cs_new:Npx \msg_show_item_unbraced:nn #1#2 +\cs_new:Npe \msg_show_item_unbraced:nn #1#2 { ^^J > \use:nn { ~ } { ~ } \exp_not:N \tl_to_str:n {#1} @@ -1595,7 +1647,7 @@ \cs_new:Npn \@@_class_chk_exist:nT #1 { \cs_if_free:cTF { @@_ #1 _code:nnnnnn } - { \msg_error:nnx { msg } { class-unknown } {#1} } + { \msg_error:nnn { msg } { class-unknown } {#1} } } % \end{macrocode} % \end{macro} @@ -1654,7 +1706,7 @@ \@@_class_chk_exist:nT {#1} { \tl_set:Nn \l_@@_current_class_tl {#1} - \cs_set_protected:Npx \@@_use_code: + \cs_set_protected:Npe \@@_use_code: { \exp_not:n { @@ -1665,7 +1717,7 @@ \@@_use_redirect_name:n { #2 / #3 } } } - { \msg_error:nnxx { msg } { unknown } {#2} {#3} } + { \msg_error:nnnn { msg } { unknown } {#2} {#3} } \cs_if_exist_use:N \conditionally@traceon } \cs_new_protected:Npn \@@_use_code: { } @@ -1815,7 +1867,7 @@ \tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl { \prop_put:cnn { l_@@_redirect_ #2 _prop } {#3} {#2} - \msg_warning:nnxxxx + \msg_warning:nneeee { msg } { redirect-loop } { \seq_item:Nn \l_@@_class_loop_seq { 1 } } { \seq_item:Nn \l_@@_class_loop_seq { 2 } } @@ -1871,26 +1923,26 @@ % % \begin{macro} % { -% \__kernel_msg_info:nnxx , -% \__kernel_msg_warning:nnx , -% \__kernel_msg_warning:nnxx , -% \__kernel_msg_error:nnx , -% \__kernel_msg_error:nnxx , -% \__kernel_msg_error:nnxxx +% \__kernel_msg_info:nnee , +% \__kernel_msg_warning:nne , +% \__kernel_msg_warning:nnee , +% \__kernel_msg_error:nne , +% \__kernel_msg_error:nnee , +% \__kernel_msg_error:nneee % } % \begin{macrocode} -\cs_new_protected:Npn \__kernel_msg_info:nnxx #1 - { \msg_info:nnxx { LaTeX / #1 } } -\cs_new_protected:Npn \__kernel_msg_warning:nnx #1 - { \msg_warning:nnx { LaTeX / #1 } } -\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1 - { \msg_warning:nnxx { LaTeX / #1 } } -\cs_new_protected:Npn \__kernel_msg_error:nnx #1 - { \msg_error:nnx { LaTeX / #1 } } -\cs_new_protected:Npn \__kernel_msg_error:nnxx #1 - { \msg_error:nnxx { LaTeX / #1 } } -\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1 - { \msg_error:nnxxx { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_info:nnee #1 + { \msg_info:nnee { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_warning:nne #1 + { \msg_warning:nne { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_warning:nnee #1 + { \msg_warning:nnee { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_error:nne #1 + { \msg_error:nne { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_error:nnee #1 + { \msg_error:nnee { LaTeX / #1 } } +\cs_new_protected:Npn \__kernel_msg_error:nneee #1 + { \msg_error:nneee { LaTeX / #1 } } % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index f3f56f7f72..f299b21579 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf Binary files differindex 7ebec4848a..7f0effadb8 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex fe4f64501c..5508abfcc9 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex 3b36d8a341..13e40ab8bd 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex f3031cb0d8..f80fc2a519 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex d7155a9049..c33cbf0cac 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex 788ded7ff1..ffe3a03c6c 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex 9778f1dd95..e25a8421bb 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 84e2f2c9f2..4159983011 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex e91e2d344b..8d74fc5968 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex 83832c3237..d4c60d81f7 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex acbefc90b5..7b5dcec9cc 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 132979c8a7..1cfeef5b06 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex c1ed0ffaca..cd159d28f3 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx index ebfdc9115b..f583b393ca 100644 --- a/macros/latex/contrib/l3kernel/l3pdf.dtx +++ b/macros/latex/contrib/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -60,7 +60,7 @@ % \end{function} % % \begin{function}[added = 2022-08-23] -% {\pdf_object_write:nnn, \pdf_object_write:nnx} +% {\pdf_object_write:nnn, \pdf_object_write:nne} % \begin{syntax} % \cs{pdf_object_write:nn} \Arg{object} \Arg{type} \Arg{content} % \end{syntax} @@ -87,7 +87,7 @@ % \end{function} % % \begin{function}[added = 2021-02-10] -% {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx} +% {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne} % \begin{syntax} % \cs{pdf_object_unnamed_write:nn} \Arg{type} \Arg{content} % \end{syntax} @@ -312,9 +312,14 @@ % \subsection{Objects} % % \begin{macro}{\pdf_object_new:n} -% \begin{macro}{\pdf_object_write:nnn, \pdf_object_write:nnx} +% \begin{macro} +% {\pdf_object_write:nnn, \pdf_object_write:nne, \pdf_object_write:nnx} % \begin{macro}{\pdf_object_ref:n} -% \begin{macro}{\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx} +% \begin{macro} +% { +% \pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne, +% \pdf_object_unnamed_write:nx +% } % \begin{macro}{\pdf_object_ref_last:} % \begin{macro}[pTF]{\pdf_object_if_exist:n} % Simple to do: all objects create a constant |int| so it is not a @@ -332,14 +337,14 @@ \@@_backend_object_write:nnn {#1} {#2} {#3} \bool_gset_true:N \g_@@_init_bool } -\cs_generate_variant:Nn \pdf_object_write:nnn { nnx } +\cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx } \cs_new:Npn \pdf_object_ref:n #1 { \@@_backend_object_ref:n {#1} } \cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2 { \@@_backend_object_now:nn {#1} {#2} \bool_gset_true:N \g_@@_init_bool } -\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { nx } +\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx } \cs_new:Npn \pdf_object_ref_last: { \@@_backend_object_last: } \prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF } { @@ -536,7 +541,7 @@ } \cs_new_protected:Npn \pdf_object_write:nn #1#2 { - \exp_args:Nnx \@@_backend_object_write:nnn + \exp_args:Nne \@@_backend_object_write:nnn {#1} { \prop_item:Nn \g_@@_object_prop {#1} } {#2} \bool_gset_true:N \g_@@_init_bool } diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv index 2de6430a12..710da8edbe 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/contrib/l3kernel/l3prefixes.csv @@ -12,6 +12,7 @@ alloc,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https ampersand,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, apfs,apfontspec,Qing Lee,https://github.com/CTeX-org/apfontspec,https://github.com/CTeX-org/apfontspec.git,https://github.com/CTeX-org/apfontspec/issues,2020-05-17,2020-05-17, arch,archaeologie,Lukas C. Bossert,http://www.biblatex-archaeologie.de,https://github.com/LukasCBossert/biblatex-archaeologie.git,https://github.com/LukasCBossert/biblatex-archaeologie/issues,2017-03-24,2017-03-24, +arsenal,arsenal,Boris Veytsman,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal/issues array,hobby,Andrew Stacey,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby/issues,2013-03-16,2020-10-29, atsign,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, avm,langsci-avm,Felix Kopecky,https://ctan.org/pkg/langsci-avm,https://github.com/langsci/langsci-avm,https://github.com/langsci/langsci-avm/issues,2020-03-11,2020-03-11, @@ -120,6 +121,7 @@ intarray,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,ht ior,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, iot,iot,Island of TeX,https://islandoftex.gitlab.io,https://gitlab.com/islandoftex/texmf,https://gitlab.com/groups/islandoftex/texmf/-/issues,2023-07-18,2023-07-18, iow,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, +iwonamath,iwonamath,Boris Veytsman,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath/issues jiazhu,jiazhu,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2020-05-17,2020-05-17, job,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, kernel,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, @@ -197,6 +199,7 @@ prelim,prelim2e,Marei Peischl,https://github.com/TeXhackse/prelim2e,https://gith prg,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, primargs,morewrites,Bruno Le Floch,https://github.com/blefloch/latex-morewrites,https://github.com/blefloch/latex-morewrites.git,https://github.com/blefloch/latex-morewrites/issues,2013-03-16,2015-09-22, prop,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, +property,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, pseudo,pseudo,Magnus Lie Hetland,https://github.com/mlhetland/pseudo.sty,https://github.com/mlhetland/pseudo.sty.git,https://github.com/mlhetland/pseudo.sty/issues,2019-06-24,2019-06-24, ptex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-07-28,2015-07-28, ptxcd,ptxcd, Marei Peischl,,,,2020-07-27,2020-07-27,Used for specific corporate design templates @@ -238,6 +241,7 @@ tag,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https:/ tasks,tasks,Clemens Niederberger,https://github.com/cgnieder/tasks/,https://github.com/cgnieder/tasks.git,https://github.com/cgnieder/cgnieder/tasks/issues,2013-03-16,2020-04-14, tblr,tabularray,Jianrui Lyu,https://github.com/lvjr/tabularray,https://github.com/lvjr/tabularray.git,https://github.com/lvjr/tabularray/issues,2022-04-02,2022-04-02, tcobox,tcolorbox,Thomas F. Sturm,https://github.com/T-F-S/tcolorbox,https://github.com/T-F-S/tcolorbox.git,https://github.com/T-F-S/tcolorbox/issues,2020-02-19,2020-02-19, +template,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03, term,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, tex,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, text,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-01-15,2020-01-15, diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf Binary files differindex 89ba420517..5d41b138f0 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index ec778817d3..e3f09d90d3 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -1079,11 +1079,11 @@ { \token_case_meaning:NnF #2 { - \c_true_bool { \exp_args:Nx #1 { \token_to_str:N #2 = true } } - \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } } + \c_true_bool { \exp_args:Ne #1 { \token_to_str:N #2 = true } } + \c_false_bool { \exp_args:Ne #1 { \token_to_str:N #2 = false } } } { - \msg_error:nnxxx { kernel } { bad-type } + \msg_error:nneee { kernel } { bad-type } { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool } } } diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 2d5fc3edcc..69cafe1cff 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -165,18 +165,28 @@ % % \begin{function}[updated = 2012-07-09] % { -% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, -% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, -% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, -% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx, -% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, -% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx, -% \prop_gput:Non, \prop_gput:Nxn, \prop_gput:NxV, \prop_gput:Noo, \prop_gput:Nxx, -% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, -% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx +% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne, +% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe, +% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve, +% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee, +% \prop_put:Nno, \prop_put:Non, \prop_put:Noo, +% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne, +% \prop_put:cno, +% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe, +% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve, +% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee, +% \prop_put:con, \prop_put:coo, +% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne, +% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe, +% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, +% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee, +% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo, +% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne, +% \prop_gput:cno, +% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe, +% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, +% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee, +% \prop_gput:con, \prop_gput:coo % } % \begin{syntax} % \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value} @@ -192,8 +202,10 @@ % % \begin{function} % { -% \prop_put_if_new:Nnn, \prop_put_if_new:cnn, -% \prop_gput_if_new:Nnn, \prop_gput_if_new:cnn +% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, +% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV, +% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, +% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV % } % \begin{syntax} % \cs{prop_put_if_new:Nnn} \meta{property list} \Arg{key} \Arg{value} @@ -250,8 +262,10 @@ % % \begin{function}[updated = 2011-08-28] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, % \prop_get:cnc % } % \begin{syntax} @@ -267,7 +281,12 @@ % \end{function} % % \begin{function}[updated = 2011-08-18] -% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN +% } % \begin{syntax} % \cs{prop_pop:NnN} \meta{property list} \Arg{key} \meta{tl var} % \end{syntax} @@ -281,7 +300,12 @@ % \end{function} % % \begin{function}[updated = 2011-08-18] -% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN +% } % \begin{syntax} % \cs{prop_gpop:NnN} \meta{property list} \Arg{key} \meta{tl var} % \end{syntax} @@ -297,8 +321,8 @@ % % \begin{function}[added = 2014-07-17, EXP] % { -% \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne, -% \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce +% \prop_item:Nn, \prop_item:NV, \prop_item:Ne, \prop_item:No, +% \prop_item:cn, \prop_item:cV, \prop_item:ce, \prop_item:co % } % \begin{syntax} % \cs{prop_item:Nn} \meta{property list} \Arg{key} @@ -343,8 +367,10 @@ % % \begin{function}[added = 2012-05-12] % { -% \prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV, -% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV +% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne, +% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce, +% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne, +% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce, % } % \begin{syntax} % \cs{prop_remove:Nn} \meta{property list} \Arg{key} @@ -378,8 +404,8 @@ % % \begin{function}[updated = 2011-09-15, EXP, pTF] % { -% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No, -% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co +% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No, +% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co % } % \begin{syntax} % \cs{prop_if_in_p:Nn} \meta{property list} \Arg{key} @@ -404,8 +430,10 @@ % % \begin{function}[updated = 2012-05-19, TF] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, % \prop_get:cnc % } % \begin{syntax} @@ -423,7 +451,12 @@ % \end{function} % % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19] -% {\prop_pop:NnN, \prop_pop:cnN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN +% } % \begin{syntax} % \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code} % \end{syntax} @@ -439,7 +472,12 @@ % \end{function} % % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19] -% {\prop_gpop:NnN, \prop_gpop:cnN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN +% } % \begin{syntax} % \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code} % \end{syntax} @@ -874,7 +912,7 @@ \cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2 { \prop_set_from_keyval:Nn \l_@@_internal_prop {#2} - \tl_const:Nx #1 { \exp_not:o \l_@@_internal_prop } + \tl_const:Ne #1 { \exp_not:o \l_@@_internal_prop } \prop_clear:N \l_@@_internal_prop } \cs_generate_variant:Nn \prop_const_from_keyval:Nn { c } @@ -959,9 +997,15 @@ % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV} +% { +% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne, +% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce +% } % \begin{macro}[tested = m3prop002] -% {\prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV} +% { +% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne, +% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce +% } % Deleting from a property starts by splitting the list. % If the key is present in the property list, the returned value is ignored. % If the key is missing, nothing happens. @@ -978,18 +1022,18 @@ { \tl_gset:Nn #1 { ##1 ##3 } } { } } -\cs_generate_variant:Nn \prop_remove:Nn { NV } -\cs_generate_variant:Nn \prop_remove:Nn { c , cV } -\cs_generate_variant:Nn \prop_gremove:Nn { NV } -\cs_generate_variant:Nn \prop_gremove:Nn { c , cV } +\cs_generate_variant:Nn \prop_remove:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \prop_gremove:Nn { NV , Ne , c , cV , ce } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[tested = m3prop002] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, \prop_get:cxN, % \prop_get:cnc % } % Getting an item from a list is very easy: after splitting, @@ -1002,15 +1046,26 @@ { \tl_set:Nn #3 {##2} } { \tl_set:Nn #3 { \q_no_value } } } -\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , No , Nx } -\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc } +\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \prop_get:NnN { No , Nx , co , cx } +\cs_generate_variant:Nn \prop_get:NnN { cnc } % \end{macrocode} % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN, +% } % \begin{macro}[tested = m3prop002] -% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN, +% } % Popping a value also starts by doing the split. % If the key is present, save the value in the token list and update the % property list as when deleting. @@ -1034,10 +1089,10 @@ } { \tl_set:Nn #3 { \q_no_value } } } -\cs_generate_variant:Nn \prop_pop:NnN { No } -\cs_generate_variant:Nn \prop_pop:NnN { c , co } -\cs_generate_variant:Nn \prop_gpop:NnN { No } -\cs_generate_variant:Nn \prop_gpop:NnN { c , co } +\cs_generate_variant:Nn \prop_pop:NnN { NV , No } +\cs_generate_variant:Nn \prop_pop:NnN { c , cV , co } +\cs_generate_variant:Nn \prop_gpop:NnN { NV , No } +\cs_generate_variant:Nn \prop_gpop:NnN { c , cV , co } % \end{macrocode} % \end{macro} % \end{macro} @@ -1129,7 +1184,13 @@ % \end{macro} % % \begin{macro}[TF, tested = m3prop004] -% {\prop_pop:NnN, \prop_pop:cnN, \prop_gpop:NnN, \prop_gpop:cnN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% } % Popping an item from a property list, keeping track of whether % the key was present or not, is implemented as a conditional. % If the key was missing, neither the property list, nor the token @@ -1156,28 +1217,40 @@ } { \prg_return_false: } } -\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF } -\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_pop:NnN { NV , c , cV } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { NV , c , cV } { T , F , TF } % \end{macrocode} % \end{macro} % % \begin{macro}[tested = m3prop002] % { -% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, -% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, -% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, -% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx +% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne, +% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe, +% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve, +% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee, +% \prop_put:Nno, \prop_put:Nnx, \prop_put:NVx, +% \prop_put:Non, \prop_put:Noo, \prop_put:NxV, \prop_put:Nxx, +% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne, +% \prop_put:cno, \prop_put:cnx, +% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe, +% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve, +% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee, +% \prop_put:con, \prop_put:coo, \prop_put:cxV, \prop_put:cxx % } % \begin{macro}[tested = m3prop002] % { -% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, -% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_hput:Nvx, -% \prop_gput:Non, \prop_gput:Nxn, \prop_pgut:NxV, \prop_gput:Noo, \prop_gput:Nxx, -% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, -% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx +% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne, +% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe, +% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, +% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee, +% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo, +% \prop_gput:Nnx, \prop_gput:NVx, \prop_gput:Nxn, \prop_gput:Nxx, +% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne, +% \prop_gput:cno, \prop_gput:cnx, +% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe, +% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, +% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee, +% \prop_gput:cno, \prop_gput:con, \prop_gput:cxn, \prop_gput:cxx % } % \begin{macro}{\@@_put:NNnn} % Since the branches of \cs{@@_split:NnTF} are used as the replacement @@ -1193,8 +1266,8 @@ % updated entry is placed at the same spot as the original \meta{key} % in the property list, preserving the order of entries. % \begin{macrocode} -\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Nx } -\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Nx } +\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Ne } +\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_put:NNnn #1#2#3#4 { \tl_set:Nn \l_@@_internal_tl @@ -1207,22 +1280,48 @@ { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } } } \cs_generate_variant:Nn \prop_put:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } + { + NnV , Nnv , Nne , NV , NVV , NVv , NVe , + Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee + } +\cs_generate_variant:Nn \prop_put:Nnn + { Nno , No , Noo , Nnx , NVx , NxV , Nxx } +\cs_generate_variant:Nn \prop_put:Nnn + { + c , cnV , cnv , cne , cV , cVV , cVv , cVe , + cv , cvV , cvv , cve , ce , ceV , cev , cee + } \cs_generate_variant:Nn \prop_put:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } + { cno , co , coo , cnx , cVx , cxV , cxx } +\cs_generate_variant:Nn \prop_gput:Nnn + { + NnV , Nnv , Nne , NV , NVV , NVv , NVe , + Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee + } \cs_generate_variant:Nn \prop_gput:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } + { Nno , No , Noo , Nnx , NVx , NxV , Nxx } \cs_generate_variant:Nn \prop_gput:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } + { + c , cnV , cnv , cne , cV , cVV , cVv , cVe , + cv , cvV , cvv , cve , ce , ceV , cev , cee + } +\cs_generate_variant:Nn \prop_gput:Nnn + { cno , co , coo , cnx , cVx , cxV , cxx } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_put_if_new:Nnn, \prop_put_if_new:cnn} +% { +% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, +% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV +% } % \begin{macro}[tested = m3prop002] -% {\prop_gput_if_new:Nnn, \prop_gput_if_new:cnn} +% { +% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, +% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV +% } % \begin{macro}{\@@_put_if_new:NNnn} % Adding conditionally also splits. If the key is already present, % the three brace groups given by \cs{@@_split:NnTF} are removed. @@ -1230,9 +1329,9 @@ % convert the key to a string using \cs{tl_to_str:n}. % \begin{macrocode} \cs_new_protected:Npn \prop_put_if_new:Nnn - { \@@_put_if_new:NNnn \__kernel_tl_set:Nx } + { \@@_put_if_new:NNnn \__kernel_tl_set:Ne } \cs_new_protected:Npn \prop_gput_if_new:Nnn - { \@@_put_if_new:NNnn \__kernel_tl_gset:Nx } + { \@@_put_if_new:NNnn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_put_if_new:NNnn #1#2#3#4 { \tl_set:Nn \l_@@_internal_tl @@ -1244,8 +1343,10 @@ { } { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } } } -\cs_generate_variant:Nn \prop_put_if_new:Nnn { c } -\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c } +\cs_generate_variant:Nn \prop_put_if_new:Nnn + { NnV , NV , cnV , cV } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn + { NnV , NV , cnV , cV } % \end{macrocode} % \end{macro} % \end{macro} @@ -1278,8 +1379,8 @@ % % \begin{macro}[pTF, tested = m3prop003] % { -% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No, -% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co +% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No, +% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co % } % \begin{macro}[EXP]{\@@_if_in:nnn} % Testing expandably if a key is in a property list @@ -1309,7 +1410,7 @@ { \prop_map_break:n { \use_i:nn \prg_return_true: } } } \prg_generate_conditional_variant:Nnn \prop_if_in:Nn - { NV , No , c , cV , co } { p , T , F , TF } + { NV , Ne , No , c , cV , ce , co } { p , T , F , TF } % \end{macrocode} % \end{macro} % \end{macro} @@ -1318,8 +1419,10 @@ % % \begin{macro}[TF, tested = m3prop004] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, \prop_get:cxN, % \prop_get:cnc % } % Getting the value corresponding to a key, keeping track of whether @@ -1336,7 +1439,11 @@ { \prg_return_false: } } \prg_generate_conditional_variant:Nnn \prop_get:NnN - { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF } + { NV , Nv , Ne , c , cV , cv , ce } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_get:NnN + { No , Nx , co , cx } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_get:NnN + { cnc } { T , F , TF } % \end{macrocode} % \end{macro} % @@ -1471,9 +1578,9 @@ % we use \cs{msg_show_item:nn} to format both the key and the value % for each pair. % \begin{macrocode} -\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \prop_show:N { c } -\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \prop_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index e05b5369e1..1a1e1aaf1f 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -633,21 +633,21 @@ % % \begin{macro}{\@@_new_test:NNNn, \@@_new_test:Nccn, % \@@_new_test_aux:nnNNnnnn} -% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Nxxn} +% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Neen} % \begin{macrocode} \cs_new_protected:Npn \__kernel_quark_new_test:N #1 - { \@@_new_test_aux:Nx #1 { \@@_module_name:N #1 } } + { \@@_new_test_aux:Ne #1 { \@@_module_name:N #1 } } \cs_new_protected:Npn \@@_new_test_aux:Nn #1 #2 { \if_meaning:w \q_nil #2 \q_nil - \msg_error:nnx { quark } { invalid-function } + \msg_error:nne { quark } { invalid-function } { \token_to_str:N #1 } \else: \@@_new_test:Nccn #1 { q__#2_recursion_tail } { q__#2_recursion_stop } { __#2 } \fi: } -\cs_generate_variant:Nn \@@_new_test_aux:Nn { Nx } +\cs_generate_variant:Nn \@@_new_test_aux:Nn { Ne } \cs_new_protected:Npn \@@_new_test:NNNn #1 { \exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn @@ -657,18 +657,18 @@ \cs_generate_variant:Nn \@@_new_test:NNNn { Ncc } \cs_new_protected:Npn \__kernel_quark_new_conditional:Nn #1 { - \@@_new_conditional:Nxxn #1 + \@@_new_conditional:Neen #1 { \@@_quark_conditional_name:N #1 } { \@@_module_name:N #1 } } \cs_new_protected:Npn \@@_new_conditional:Nnnn #1#2#3#4 { \if_meaning:w \q_nil #2 \q_nil - \msg_error:nnx { quark } { invalid-function } + \msg_error:nne { quark } { invalid-function } { \token_to_str:N #1 } \else: \if_meaning:w \q_nil #3 \q_nil - \msg_error:nnx { quark } { invalid-function } + \msg_error:nne { quark } { invalid-function } { \token_to_str:N #1 } \else: \exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn @@ -678,12 +678,12 @@ \fi: \fi: } -\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nxx } +\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nee } \cs_new_protected:Npn \@@_new_test_aux:nnNNnnnn #1 #2 #3 #4 #5 { \cs_if_exist_use:cTF { @@_new_#5_#2:Nnnn } { #4 } { - \msg_error:nnxx { quark } { invalid-function } + \msg_error:nnee { quark } { invalid-function } { \token_to_str:N #4 } {#2} \use_none:nnn } @@ -951,7 +951,7 @@ { \tl_if_in:NnTF \g_@@_marks_tl { #1 } { - \msg_error:nnx { scanmark } { already-defined } + \msg_error:nne { scanmark } { already-defined } { \token_to_str:N #1 } } { diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index 3d342960ac..87dfcec47b 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -1158,24 +1158,24 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_toks_put_left:Nx} -% \begin{macro}{\@@_toks_put_right:Nx, \@@_toks_put_right:Nn} +% \begin{macro}{\@@_toks_put_left:Ne} +% \begin{macro}{\@@_toks_put_right:Ne, \@@_toks_put_right:Nn} % During the building phase we wish to add \texttt{x}-expanded % material to \tn{toks}, either to the left or to the right. The % expansion is done \enquote{by hand} for optimization (these % operations are used quite a lot). The \texttt{Nn} version of -% \cs{@@_toks_put_right:Nx} is provided because it is more +% \cs{@@_toks_put_right:Ne} is provided because it is more % efficient than \texttt{x}-expanding with \cs{exp_not:n}. % \begin{macrocode} -\cs_new_protected:Npn \@@_toks_put_left:Nx #1#2 +\cs_new_protected:Npn \@@_toks_put_left:Ne #1#2 { - \cs_set_nopar:Npx \@@_tmp:w { #2 } + \cs_set_nopar:Npe \@@_tmp:w { #2 } \tex_toks:D #1 \exp_after:wN \exp_after:wN \exp_after:wN { \exp_after:wN \@@_tmp:w \tex_the:D \tex_toks:D #1 } } -\cs_new_protected:Npn \@@_toks_put_right:Nx #1#2 +\cs_new_protected:Npn \@@_toks_put_right:Ne #1#2 { - \cs_set_nopar:Npx \@@_tmp:w {#2} + \cs_set_nopar:Npe \@@_tmp:w {#2} \tex_toks:D #1 \exp_after:wN { \tex_the:D \tex_toks:D \exp_after:wN #1 \@@_tmp:w } } @@ -1541,7 +1541,7 @@ { \int_compare:nNnTF \l_@@_curr_catcode_int = 0 { - \__kernel_tl_set:Nx \l_@@_internal_a_tl + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \scan_stop: \@@_curr_cs_to_str: \scan_stop: } \tl_if_in:noTF { \scan_stop: #1 \scan_stop: } \l_@@_internal_a_tl @@ -1568,7 +1568,7 @@ \@@_build_for_cs:n {#1} \bool_set_eq:NN \l_@@_saved_success_bool \g_@@_success_bool - \exp_args:Nx \@@_match_cs:n { \@@_curr_cs_to_str: } + \exp_args:Ne \@@_match_cs:n { \@@_curr_cs_to_str: } \if_meaning:w \c_true_bool \g_@@_success_bool \group_insert_after:N \@@_break_true:w \fi: @@ -1729,9 +1729,9 @@ \cs_set:Npn \@@_escape_escaped:N ##1 { #2 } \cs_set:Npn \@@_escape_raw:N ##1 { #3 } \@@_standard_escapechar: - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \__kernel_str_to_other_fast:n {#4} } - \tl_put_right:Nx \l_@@_internal_a_tl + \tl_put_right:Ne \l_@@_internal_a_tl { \exp_after:wN \@@_escape_loop:N \g_@@_internal_tl \scan_stop: \prg_break_point: @@ -1797,17 +1797,17 @@ \prg_break: } \cs_new:cpn { @@_escape_~:w } { } -\cs_new:cpx { @@_escape_/a:w } +\cs_new:cpe { @@_escape_/a:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^G } -\cs_new:cpx { @@_escape_/t:w } +\cs_new:cpe { @@_escape_/t:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^I } -\cs_new:cpx { @@_escape_/n:w } +\cs_new:cpe { @@_escape_/n:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^J } -\cs_new:cpx { @@_escape_/f:w } +\cs_new:cpe { @@_escape_/f:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^L } -\cs_new:cpx { @@_escape_/r:w } +\cs_new:cpe { @@_escape_/r:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^M } -\cs_new:cpx { @@_escape_/e:w } +\cs_new:cpe { @@_escape_/e:w } { \exp_not:N \@@_escape_raw:N \iow_char:N \^^[ } % \end{macrocode} % \end{macro} @@ -2421,7 +2421,7 @@ } { } \if_int_compare:w \l_@@_group_level_int > \c_zero_int - \msg_error:nnx { regex } { missing-rparen } + \msg_error:nne { regex } { missing-rparen } { \int_use:N \l_@@_group_level_int } \prg_replicate:nn { \l_@@_group_level_int } @@ -2440,7 +2440,7 @@ \fi: \tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } } \tl_build_end:N \l_@@_build_tl - \exp_args:NNNx + \exp_args:NNNe \group_end: \tl_set:Nn \l_@@_internal_regex { \l_@@_build_tl } } @@ -2550,7 +2550,7 @@ \tl_build_put_right:Nn \l_@@_build_tl { \@@_class:NnnnN \c_true_bool { \if_false: } \fi: } } - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \if_int_compare:w \l_@@_catcodes_int < \c_@@_all_catcodes_int @@ -2567,19 +2567,19 @@ % \end{macro} % % \begin{macro} -% {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:x} +% {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:e} % This function places the collected tokens back in the input stream, % each as a raw character. Spaces are not preserved. % \begin{macrocode} \cs_new_protected:Npn \@@_compile_abort_tokens:n #1 { - \use:x + \use:e { \exp_args:No \tl_map_function:nN { \tl_to_str:n {#1} } \@@_compile_raw:N } } -\cs_generate_variant:Nn \@@_compile_abort_tokens:n { x } +\cs_generate_variant:Nn \@@_compile_abort_tokens:n { e } % \end{macrocode} % \end{macro} % @@ -2617,7 +2617,7 @@ % \end{macro} % % \begin{macro}{\@@_compile_quantifier_none:} -% \begin{macro}{\@@_compile_quantifier_abort:xNN} +% \begin{macro}{\@@_compile_quantifier_abort:eNN} % Those functions are called whenever there is no quantifier, or a % braced construction is invalid (equivalent to no quantifier, and % whatever characters were grabbed are left raw). @@ -2627,11 +2627,11 @@ \tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } { 1 } { 0 } \c_false_bool } } -\cs_new_protected:Npn \@@_compile_quantifier_abort:xNN #1#2#3 +\cs_new_protected:Npn \@@_compile_quantifier_abort:eNN #1#2#3 { \@@_compile_quantifier_none: - \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3} - \@@_compile_abort_tokens:x {#1} + \msg_warning:nnee { regex } { invalid-quantifier } {#1} {#3} + \@@_compile_abort_tokens:e {#1} #2 #3 } % \end{macrocode} @@ -2703,7 +2703,7 @@ { \@@_get_digits:NTFw \l_@@_internal_a_int { \@@_compile_quantifier_braced_auxi:w } - { \@@_compile_quantifier_abort:xNN { \c_left_brace_str } } + { \@@_compile_quantifier_abort:eNN { \c_left_brace_str } } } \cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2 { @@ -2722,7 +2722,7 @@ } } { - \@@_compile_quantifier_abort:xNN + \@@_compile_quantifier_abort:eNN { \c_left_brace_str \int_use:N \l_@@_internal_a_int } #1 #2 } @@ -2735,7 +2735,7 @@ { \int_use:N \l_@@_internal_a_int } { -1 } } { - \@@_compile_quantifier_abort:xNN + \@@_compile_quantifier_abort:eNN { \c_left_brace_str \int_use:N \l_@@_internal_a_int , } #1 #2 } @@ -2746,7 +2746,7 @@ { \if_int_compare:w \l_@@_internal_a_int > \l_@@_internal_b_int - \msg_error:nnxx { regex } { backwards-quantifier } + \msg_error:nnee { regex } { backwards-quantifier } { \int_use:N \l_@@_internal_a_int } { \int_use:N \l_@@_internal_b_int } \int_zero:N \l_@@_internal_b_int @@ -2758,7 +2758,7 @@ { \int_use:N \l_@@_internal_b_int } } { - \@@_compile_quantifier_abort:xNN + \@@_compile_quantifier_abort:eNN { \c_left_brace_str \int_use:N \l_@@_internal_a_int , @@ -2780,7 +2780,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_compile_raw_error:N #1 { - \msg_error:nnx { regex } { bad-escape } {#1} + \msg_error:nne { regex } { bad-escape } {#1} \@@_compile_raw:N #1 } % \end{macrocode} @@ -2839,9 +2839,9 @@ \@@_if_end_range:NNTF #2 #3 { \if_int_compare:w `#1 > `#3 \exp_stop_f: - \msg_error:nnxx { regex } { range-backwards } {#1} {#3} + \msg_error:nnee { regex } { range-backwards } {#1} {#3} \else: - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \if_int_compare:w `#1 = `#3 \exp_stop_f: \@@_item_equal:n @@ -2853,9 +2853,9 @@ \fi: } { - \msg_warning:nnxx { regex } { range-missing-end } + \msg_warning:nnee { regex } { range-missing-end } {#1} { \c_backslash_str #3 } - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \@@_item_equal:n { \int_value:w `#1 \exp_stop_f: } \@@_item_equal:n { \int_value:w `- \exp_stop_f: } @@ -2873,7 +2873,7 @@ % \cs{@@_prop_.:}, which matches any character or control % sequence, and refuses $-2$ (end-marker). % \begin{macrocode} -\cs_new_protected:cpx { @@_compile_.: } +\cs_new_protected:cpe { @@_compile_.: } { \exp_not:N \@@_if_in_class:TF { \@@_compile_raw:N . } @@ -2904,9 +2904,9 @@ % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:w #1#2 { - \cs_new_protected:cpx { @@_compile_/#1: } + \cs_new_protected:cpe { @@_compile_/#1: } { \@@_compile_one:n \exp_not:c { @@_prop_#1: } } - \cs_new_protected:cpx { @@_compile_/#2: } + \cs_new_protected:cpe { @@_compile_/#2: } { \@@_compile_one:n { \@@_item_reverse:n { \exp_not:c { @@_prop_#1: } } } @@ -2967,8 +2967,8 @@ } } } -\exp_args:Nx \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: } -\exp_args:Nx \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: } +\exp_args:Ne \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: } +\exp_args:Ne \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: } % \end{macrocode} % \end{macro} % \end{macro} @@ -3117,11 +3117,11 @@ { : { \@@_compile_class_posix:NNNNw } = { - \msg_warning:nnx { regex } + \msg_warning:nne { regex } { posix-unsupported } { = } } . { - \msg_warning:nnx { regex } + \msg_warning:nne { regex } { posix-unsupported } { . } } } @@ -3133,12 +3133,12 @@ \@@_two_if_eq:NNNNTF #5 #6 \@@_compile_special:N ^ { \bool_set_false:N \l_@@_internal_bool - \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi: + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi: \@@_compile_class_posix_loop:w } { \bool_set_true:N \l_@@_internal_bool - \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi: + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi: \@@_compile_class_posix_loop:w #5 #6 } } @@ -3163,9 +3163,9 @@ } } { - \msg_warning:nnx { regex } { posix-unknown } + \msg_warning:nne { regex } { posix-unknown } { \l_@@_internal_a_tl } - \@@_compile_abort_tokens:x + \@@_compile_abort_tokens:e { [: \bool_if:NF \l_@@_internal_bool { ^ } \l_@@_internal_a_tl :] @@ -3173,9 +3173,9 @@ } } { - \msg_error:nnxx { regex } { posix-missing-close } + \msg_error:nnee { regex } { posix-missing-close } { [: \l_@@_internal_a_tl } { #2 #4 } - \@@_compile_abort_tokens:x { [: \l_@@_internal_a_tl } + \@@_compile_abort_tokens:e { [: \l_@@_internal_a_tl } #1 #2 #3 #4 } } @@ -3213,7 +3213,7 @@ \if_int_compare:w \l_@@_group_level_int > \c_zero_int \tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } } \tl_build_end:N \l_@@_build_tl - \exp_args:NNNx + \exp_args:NNNe \group_end: \tl_build_put_right:Nn \l_@@_build_tl { \l_@@_build_tl } \int_set_eq:NN \l_@@_catcodes_int \l_@@_default_catcodes_int @@ -3252,7 +3252,7 @@ \cs_if_exist_use:cF { @@_compile_special_group_\token_to_str:N #4 :w } { - \msg_warning:nnx { regex } { special-group-unknown } + \msg_warning:nne { regex } { special-group-unknown } { (? #4 } \@@_compile_group_begin:N \@@_group:nnnN \@@_compile_raw:N ? #3 #4 @@ -3321,7 +3321,7 @@ { \@@_item_caseless_range:nn } } { - \msg_warning:nnx { regex } { unknown-option } { (?i #2 } + \msg_warning:nne { regex } { unknown-option } { (?i #2 } \@@_compile_raw:N ( \@@_compile_raw:N ? \@@_compile_raw:N i @@ -3340,7 +3340,7 @@ { \@@_item_caseful_range:nn } } { - \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 } + \msg_warning:nne { regex } { unknown-option } { (?-#2#4 } \@@_compile_raw:N ( \@@_compile_raw:N ? \@@_compile_raw:N - @@ -3379,7 +3379,7 @@ } { \cs_if_exist_use:cF { @@_compile_c_#2:w } } { - \msg_error:nnx { regex } { c-missing-category } {#2} + \msg_error:nne { regex } { c-missing-category } {#2} #1 #2 } } @@ -3453,7 +3453,7 @@ { \@@_compile_c_lbrack_end: } } { - \msg_error:nnx { regex } { c-missing-rbrack } {#2} + \msg_error:nne { regex } { c-missing-rbrack } {#2} \@@_compile_c_lbrack_end: #1 #2 } @@ -3534,12 +3534,12 @@ { \@@_compile_end: \flag_clear:n { @@_cs } - \__kernel_tl_set:Nx \l_@@_internal_a_tl + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \exp_after:wN \@@_compile_cs_aux:Nn \l_@@_internal_regex \q_@@_nil \q_@@_nil \q_@@_recursion_stop } - \exp_args:Nx \@@_compile_one:n + \exp_args:Ne \@@_compile_one:n { \flag_if_raised:nTF { @@_cs } { \@@_item_cs:n { \exp_not:o \l_@@_internal_regex } } @@ -3622,7 +3622,7 @@ \@@_two_if_eq:NNNNTF #2 #3 \@@_compile_special:N \c_left_brace_str { \tl_set:Nn \l_@@_internal_b_tl {#1} - \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi: + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi: \@@_compile_u_loop:NN } { @@ -3665,7 +3665,7 @@ } { \if_false: { \fi: } - \msg_error:nnx { regex } { u-missing-rbrace } {#2} + \msg_error:nne { regex } { u-missing-rbrace } {#2} \l_@@_internal_b_tl #1 #2 } @@ -3691,7 +3691,7 @@ \group_begin: \cs_set:Npn \@@_group:nnnN { \@@_group_no_capture:nnnN } \cs_set:Npn \@@_group_resetting:nnnN { \@@_group_no_capture:nnnN } - \exp_args:NNx + \exp_args:NNe \group_end: \@@_compile_ur:n { \use:c { \l_@@_internal_a_tl } } } @@ -3756,12 +3756,12 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_compile_u_in_cs: { - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \exp_args:No \__kernel_str_to_other_fast:n { \l_@@_internal_a_tl } } - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \tl_map_function:NN \g_@@_internal_tl \@@_compile_u_in_cs_aux:n @@ -3786,7 +3786,7 @@ { \tl_analysis_map_inline:Nn \l_@@_internal_a_tl { - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \@@_class:NnnnN \c_true_bool { @@ -4096,7 +4096,7 @@ \cs_new_protected:Npn \@@_show_one:n #1 { \int_incr:N \l_@@_show_lines_int - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \exp_not:N \iow_newline: \seq_map_function:NN \l_@@_show_prefix_seq \use:n @@ -4113,7 +4113,7 @@ % second argument in a deeper level of nesting. % \begin{macrocode} \cs_new_protected:Npn \@@_show_push:n #1 - { \seq_put_right:Nx \l_@@_show_prefix_seq { #1 ~ } } + { \seq_put_right:Ne \l_@@_show_prefix_seq { #1 ~ } } \cs_new_protected:Npn \@@_show_pop: { \seq_pop_right:NN \l_@@_show_prefix_seq \l_@@_internal_a_tl } \cs_new_protected:Npn \@@_show_scope:nn #1#2 @@ -4186,7 +4186,7 @@ \bool_if:NTF #1 { Match } { Don't~match } \@@_msg_repeated:nnN {#3} {#4} #5 } - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \exp_not:o \l_@@_internal_a_tl } } } @@ -4367,7 +4367,7 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_case_build:n, \@@_case_build:x, \@@_case_build_aux:Nn, \@@_case_build_loop:n} +% \begin{macro}{\@@_case_build:n, \@@_case_build:e, \@@_case_build_aux:Nn, \@@_case_build_loop:n} % See \cs{@@_build:n}, but with a loop. % \begin{macrocode} \cs_new_protected:Npn \@@_case_build:n #1 @@ -4375,7 +4375,7 @@ \@@_case_build_aux:Nn \c_true_bool {#1} \int_gzero:N \g_@@_case_int } -\cs_generate_variant:Nn \@@_case_build:n { x } +\cs_generate_variant:Nn \@@_case_build:n { e } \cs_new_protected:Npn \@@_case_build_aux:Nn #1#2 { \@@_standard_escapechar: @@ -4386,7 +4386,7 @@ { \@@_action_start_wildcard:N #1 } % \@@_build_new_state: - \@@_toks_put_left:Nx \l_@@_left_state_int + \@@_toks_put_left:Ne \l_@@_left_state_int { \@@_action_submatch:nN { 0 } < } \@@_push_lr_states: \int_zero:N \l_@@_case_max_group_int @@ -4410,7 +4410,7 @@ } \seq_pop:NN \l_@@_right_state_seq \l_@@_internal_a_tl \int_set:Nn \l_@@_right_state_int \l_@@_internal_a_tl - \@@_toks_put_left:Nx \l_@@_right_state_int + \@@_toks_put_left:Ne \l_@@_right_state_int { \@@_action_submatch:nN { 0 } > \int_gset:Nn \g_@@_case_int @@ -4498,9 +4498,9 @@ % differing usage later on. Both functions could be optimized. % \begin{macrocode} \cs_new_protected:Npn \@@_build_transition_left:NNN #1#2#3 - { \@@_toks_put_left:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } } + { \@@_toks_put_left:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } } \cs_new_protected:Npn \@@_build_transition_right:nNn #1#2#3 - { \@@_toks_put_right:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } } + { \@@_toks_put_right:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } } % \end{macrocode} % \end{macro} % @@ -4529,7 +4529,7 @@ \cs_new_protected:Npn \@@_build_transitions_lazyness:NNNNN #1#2#3#4#5 { \@@_build_new_state: - \@@_toks_put_right:Nx \l_@@_left_state_int + \@@_toks_put_right:Ne \l_@@_left_state_int { \if_meaning:w \c_true_bool #1 #2 { \int_eval:n { #3 - \l_@@_left_state_int } } @@ -4557,7 +4557,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_class:NnnnN #1#2#3#4#5 { - \cs_set:Npx \@@_tests_action_cost:n ##1 + \cs_set:Npe \@@_tests_action_cost:n ##1 { \exp_not:n { \exp_not:n {#2} } \bool_if:NTF #1 @@ -4791,8 +4791,8 @@ \cs_new_protected:Npn \@@_group_submatches:nNN #1#2#3 { \if_int_compare:w #1 > - \c_one_int - \@@_toks_put_left:Nx #2 { \@@_action_submatch:nN {#1} < } - \@@_toks_put_left:Nx #3 { \@@_action_submatch:nN {#1} > } + \@@_toks_put_left:Ne #2 { \@@_action_submatch:nN {#1} < } + \@@_toks_put_left:Ne #3 { \@@_action_submatch:nN {#1} > } \fi: } % \end{macrocode} @@ -4953,7 +4953,7 @@ \cs_new_protected:Npn \@@_assertion:Nn #1#2 { \@@_build_new_state: - \@@_toks_put_right:Nx \l_@@_left_state_int + \@@_toks_put_right:Ne \l_@@_left_state_int { \exp_not:n {#2} \@@_break_point:TF @@ -5005,7 +5005,7 @@ \cs_new_protected:Npn \@@_command_K: { \@@_build_new_state: - \@@_toks_put_right:Nx \l_@@_left_state_int + \@@_toks_put_right:Ne \l_@@_left_state_int { \@@_action_submatch:nN { 0 } < \bool_set_true:N \l_@@_fresh_thread_bool @@ -5347,7 +5347,7 @@ \fi: \int_set_eq:NN \l_@@_start_pos_int \l_@@_success_pos_int \bool_set_false:N \l_@@_match_success_bool - \tl_set:Nx \l_@@_curr_submatches_tl + \tl_set:Ne \l_@@_curr_submatches_tl { \prg_replicate:nn { 2 * \l_@@_capturing_group_int } { 0 , } } \int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int \@@_store_state:n { \l_@@_min_state_int } @@ -5423,10 +5423,10 @@ \tl_set:Nn \l_@@_curr_token_tl {#1} \int_set:Nn \l_@@_curr_char_int {#2} \int_set:Nn \l_@@_curr_catcode_int { "#3 } - \tl_build_put_right:Nx \l_@@_matched_analysis_tl + \tl_build_put_right:Ne \l_@@_matched_analysis_tl { \exp_not:o \l_@@_curr_analysis_tl } \tl_set:Nn \l_@@_curr_analysis_tl { { {#1} {#2} #3 } } - \use:x + \use:e { \int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int \int_step_function:nnN @@ -5539,7 +5539,7 @@ { \@@_action_free_aux:nn { < \l_@@_step_int } } \cs_new_protected:Npn \@@_action_free_aux:nn #1#2 { - \use:x + \use:e { \int_add:Nn \l_@@_curr_state_int {#2} \exp_not:n @@ -5569,7 +5569,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_action_cost:n #1 { - \exp_args:Nx \@@_store_state:n + \exp_args:Ne \@@_store_state:n { \int_eval:n { \l_@@_curr_state_int + #1 } } } % \end{macrocode} @@ -5627,7 +5627,7 @@ } \cs_new_protected:Npn \@@_action_submatch_aux:w #1 ; #2#3 { - \tl_set:Nx \l_@@_curr_submatches_tl + \tl_set:Ne \l_@@_curr_submatches_tl { \prg_replicate:nn { #2 \if_meaning:w > #3 + \l_@@_capturing_group_int \fi: } @@ -5844,7 +5844,7 @@ % % \subsubsection{Framework} % -% \begin{macro}{\@@_replacement:n, \@@_replacement:x} +% \begin{macro}{\@@_replacement:n, \@@_replacement:e} % \begin{macro}{\@@_replacement_apply:Nn, \@@_replacement_set:n} % The replacement text is built incrementally. We keep track in % \cs{l_@@_balance_int} of the balance of explicit begin- and @@ -5882,25 +5882,25 @@ {#2} \prg_do_nothing: \prg_do_nothing: \if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int - \msg_error:nnx { regex } { replacement-missing-rbrace } + \msg_error:nne { regex } { replacement-missing-rbrace } { \int_use:N \l_@@_replacement_csnames_int } - \tl_build_put_right:Nx \l_@@_build_tl + \tl_build_put_right:Ne \l_@@_build_tl { \prg_replicate:nn \l_@@_replacement_csnames_int \cs_end: } \fi: \seq_if_empty:NF \l_@@_replacement_category_seq { - \msg_error:nnx { regex } { replacement-missing-rparen } + \msg_error:nne { regex } { replacement-missing-rparen } { \seq_count:N \l_@@_replacement_category_seq } \seq_clear:N \l_@@_replacement_category_seq } - \tl_gput_right:Nx \g_@@_balance_tl + \tl_gput_right:Ne \g_@@_balance_tl { + \int_use:N \l_@@_balance_int } \tl_build_end:N \l_@@_build_tl \exp_args:NNo \group_end: #1 \l_@@_build_tl } -\cs_generate_variant:Nn \@@_replacement:n { x } +\cs_generate_variant:Nn \@@_replacement:n { e } \cs_new_protected:Npn \@@_replacement_set:n #1 { \cs_set:Npn \@@_replacement_do_one_match:n ##1 @@ -5927,7 +5927,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:x} +% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:e} % \begin{macrocode} \tl_new:N \g_@@_case_replacement_tl \tl_new:N \g_@@_case_balance_tl @@ -5947,7 +5947,7 @@ \exp_args:No \@@_replacement_set:n { \g_@@_case_replacement_tl \fi: } } -\cs_generate_variant:Nn \@@_case_replacement:n { x } +\cs_generate_variant:Nn \@@_case_replacement:n { e } \cs_new_protected:Npn \@@_case_replacement_aux:n #1 { \tl_gput_right:Nn \g_@@_case_replacement_tl { \or: #1 } @@ -6458,7 +6458,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_replacement_error:NNN #1#2#3 { - \msg_error:nnx { regex } { replacement-#1 } {#3} + \msg_error:nne { regex } { replacement-#1 } {#3} #2 #3 } % \end{macrocode} @@ -6502,7 +6502,7 @@ \cs_new_protected:Npn \regex_const:Nn #1#2 { \@@_compile:n {#2} - \tl_const:Nx #1 { \exp_not:o \l_@@_internal_regex } + \tl_const:Ne #1 { \exp_not:o \l_@@_internal_regex } } % \end{macrocode} % \end{macro} @@ -6516,8 +6516,8 @@ % Then show the variable with some appropriate text. The auxiliary % \cs{@@_show:N} is defined in a different section. % \begin{macrocode} -\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nnxxxx } -\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nnxxxx } +\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nneeee } +\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nneeee } \cs_new_protected:Npn \@@_show:Nn #1#2 { \@@_compile:n {#2} @@ -6526,8 +6526,8 @@ { \tl_to_str:n {#2} } { } { \l_@@_internal_a_tl } { } } -\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nnxxxx } -\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nneeee } +\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nneeee } \cs_new_protected:Npn \@@_show:NN #1#2 { \__kernel_chk_tl_type:NnnT #2 { regex } @@ -6663,15 +6663,15 @@ { \int_if_odd:nTF { \tl_count:n {#1} } { - \msg_error:nnxxxx { regex } { case-odd } + \msg_error:nneeee { regex } { case-odd } { \token_to_str:N \regex_replace_case_once:nN(TF) } { code } { \tl_count:n {#1} } { \tl_to_str:n {#1} } \use_ii:nn } { \@@_replace_once_aux:nnN - { \@@_case_build:x { \@@_tl_odd_items:n {#1} } } - { \@@_replacement:x { \tl_item:nn {#1} { 2 * \g_@@_case_int } } } + { \@@_case_build:e { \@@_tl_odd_items:n {#1} } } + { \@@_replacement:e { \tl_item:nn {#1} { 2 * \g_@@_case_int } } } #2 \bool_if:NTF \g_@@_success_bool } @@ -6695,15 +6695,15 @@ { \int_if_odd:nTF { \tl_count:n {#1} } { - \msg_error:nnxxxx { regex } { case-odd } + \msg_error:nneeee { regex } { case-odd } { \token_to_str:N \regex_replace_case_all:nN(TF) } { code } { \tl_count:n {#1} } { \tl_to_str:n {#1} } \use_ii:nn } { \@@_replace_all_aux:nnN - { \@@_case_build:x { \@@_tl_odd_items:n {#1} } } - { \@@_case_replacement:x { \@@_tl_even_items:n {#1} } } + { \@@_case_build:e { \@@_tl_odd_items:n {#1} } } + { \@@_case_replacement:e { \@@_tl_even_items:n {#1} } } #2 \bool_if:NTF \g_@@_success_bool } @@ -6857,14 +6857,14 @@ { \int_if_odd:nTF { \tl_count:n {#1} } { - \msg_error:nnxxxx { regex } { case-odd } + \msg_error:nneeee { regex } { case-odd } { \token_to_str:N \regex_match_case:nn(TF) } { code } { \tl_count:n {#1} } { \tl_to_str:n {#1} } \use_ii:nn } { \@@_if_match:nn - { \@@_case_build:x { \@@_tl_odd_items:n {#1} } } + { \@@_case_build:e { \@@_tl_odd_items:n {#1} } } {#2} \bool_if:NTF \g_@@_success_bool } @@ -7001,7 +7001,7 @@ \flag_clear:n { @@_begin } \flag_clear:n { @@_end } \cs_set_eq:NN \@@_tmp:w \scan_stop: - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \int_step_function:nnN { \l_@@_min_submatch_int } { \l_@@_submatch_int - 1 } \@@_extract_seq_aux:n @@ -7012,12 +7012,12 @@ \int_set:Nn \l_@@_added_end_int { \flag_height:n { @@_end } } \tex_afterassignment:D \@@_extract_check:w - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \g_@@_internal_tl \if_false: { \fi: } } \int_compare:nNnT { \l_@@_added_begin_int + \l_@@_added_end_int } > 0 { - \msg_error:nnxxx { regex } { result-unbalanced } + \msg_error:nneee { regex } { result-unbalanced } { splitting~or~extracting~submatches } { \int_use:N \l_@@_added_begin_int } { \int_use:N \l_@@_added_end_int } @@ -7087,17 +7087,17 @@ % In \cs{@@_group_end_extract_seq:N} we had to expand % \cs{g_@@_internal_tl} to turn \cs{if_false:} constructions into % actual begin-group and end-group tokens. This is done with a -% \cs{__kernel_tl_gset:Nx} assignment, and \cs{@@_extract_check:w} is +% \cs{__kernel_tl_gset:Ne} assignment, and \cs{@@_extract_check:w} is % run immediately after this assignment ends, thanks to the % \tn{afterassignment} primitive. If all of the items were properly % balanced (enough begin-group tokens before end-group tokens, so |}{| % is not) then \cs{@@_extract_check:w} is called just before the -% closing brace of the \cs{__kernel_tl_gset:Nx} (thanks to our sneaky +% closing brace of the \cs{__kernel_tl_gset:Ne} (thanks to our sneaky % \cs{if_false:} |{| \cs{fi:} |}| construction), and finds that there % is nothing left to expand. If any of the items is unbalanced, the % assignment gets ended early by an extra end-group token, and our % check finds more tokens needing to be expanded in a new -% \cs{__kernel_tl_gset:Nx} assignment. We need to add a begin-group +% \cs{__kernel_tl_gset:Ne} assignment. We need to add a begin-group % and an end-group tokens to the unbalanced item, namely to the last % item found so far, which we reach through a loop. % \begin{macrocode} @@ -7113,7 +7113,7 @@ \int_incr:N \l_@@_added_begin_int \int_incr:N \l_@@_added_end_int \tex_afterassignment:D \@@_extract_check:w - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \exp_after:wN \@@_extract_check_loop:w \g_@@_internal_tl @@ -7234,7 +7234,7 @@ \@@_replacement_balance_one_match:n { \l_@@_zeroth_submatch_int } } - \__kernel_tl_set:Nx \l_@@_internal_a_tl + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \@@_replacement_do_one_match:n { \l_@@_zeroth_submatch_int } @@ -7283,7 +7283,7 @@ { \l_@@_submatch_int - 1 } \@@_replacement_balance_one_match:n } - \__kernel_tl_set:Nx \l_@@_internal_a_tl + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \int_step_function:nnnN { \l_@@_min_submatch_int } @@ -7327,7 +7327,7 @@ \@@_group_end_replace_try: \int_compare:nNnT { \l_@@_added_begin_int + \l_@@_added_end_int } > 0 { - \msg_error:nnxxx { regex } { result-unbalanced } + \msg_error:nneee { regex } { result-unbalanced } { replacing } { \int_use:N \l_@@_added_begin_int } { \int_use:N \l_@@_added_end_int } } @@ -7337,7 +7337,7 @@ \cs_new_protected:Npn \@@_group_end_replace_try: { \tex_afterassignment:D \@@_group_end_replace_check:w - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \prg_replicate:nn { \l_@@_added_begin_int } { { \if_false: } \fi: } \l_@@_internal_a_tl @@ -7592,11 +7592,11 @@ % \cs{@@_replacement:n}, which as usual defines % \cs{@@_replacement_do_one_match:n} to insert the tokens from the % start of the match attempt to the beginning of the match, followed -% by the replacement text. The \cs{use:x} expands for instance the +% by the replacement text. The \cs{use:e} expands for instance the % trailing \cs{@@_query_range:nn} down to a sequence of % \cs{@@_reinsert_item:n} \Arg{tokens} where \meta{tokens} % \texttt{o}-expand to a single token that we want to insert. After -% \texttt{x}-expansion, \cs{use:x} does \cs{use:n}, so we have +% \texttt{e}-expansion, \cs{use:e} does \cs{use:n}, so we have % \cs{exp_after:wN} \cs{l_@@_peek_true_tl} \cs{exp:w} \ldots{} % \cs{exp_end:}. This is set up such as to obtain % \cs{l_@@_peek_true_tl} followed by the replaced tokens (possibly @@ -7615,7 +7615,7 @@ \cs_set_eq:NN \@@_replacement_exp_not:N \@@_peek_replacement_token:n \cs_set_eq:NN \@@_replacement_exp_not:V \@@_peek_replacement_var:N \exp_args:No \@@_replacement:n { \l_@@_replacement_tl } - \use:x + \use:e { \exp_not:n { \exp_after:wN \l_@@_peek_true_tl \exp:w } \@@_replacement_do_one_match:n @@ -7736,7 +7736,7 @@ % % Messages for the preparsing phase. % \begin{macrocode} -\use:x +\use:e { \msg_new:nnn { regex } { trailing-backslash } { Trailing~'\iow_char:N\\'~in~regex~or~replacement. } @@ -8107,20 +8107,20 @@ % be merged. % % \begin{macro} -% {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nnx} +% {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nne} % Here |#1| is the module name (\texttt{regex}) and |#2| is % typically~1. If the module's current tracing level is less than % |#2| show nothing, otherwise write |#3| to the terminal. % \begin{macrocode} \cs_new_protected:Npn \@@_trace_push:nnN #1#2#3 - { \@@_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } } + { \@@_trace:nne {#1} {#2} { entering~ \token_to_str:N #3 } } \cs_new_protected:Npn \@@_trace_pop:nnN #1#2#3 - { \@@_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } } -\cs_new_protected:Npn \@@_trace:nnx #1#2#3 + { \@@_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } } +\cs_new_protected:Npn \@@_trace:nne #1#2#3 { \int_compare:nNnF { \int_use:c { g_@@_trace_#1_int } } < {#2} - { \iow_term:x { Trace:~#3 } } + { \iow_term:e { Trace:~#3 } } } % \end{macrocode} % \end{macro} @@ -8143,7 +8143,7 @@ \l_@@_min_state_int { \l_@@_max_state_int - 1 } { - \@@_trace:nnx { regex } {#1} + \@@_trace:nne { regex } {#1} { \iow_char:N \\toks ##1 = { \@@_toks_use:w ##1 } } } } diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index d523320f4e..9572261d46 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -128,10 +128,10 @@ % { % \seq_set_split:Nnn , % \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV , -% \seq_set_split:Nnx , \seq_set_split:Nxx , +% \seq_set_split:Nne , \seq_set_split:Nee , % \seq_gset_split:Nnn, % \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV, -% \seq_gset_split:Nnx , \seq_gset_split:Nxx +% \seq_gset_split:Nne , \seq_gset_split:Nee % } % \begin{syntax} % \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list} @@ -196,14 +196,14 @@ % \section{Appending data to sequences} % % \begin{function}{ -% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, -% \seq_put_left:No, \seq_put_left:Nx, -% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv, -% \seq_put_left:co, \seq_put_left:cx, -% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, -% \seq_gput_left:No, \seq_gput_left:Nx, -% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, -% \seq_gput_left:co, \seq_gput_left:cx +% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne, +% \seq_put_left:No, +% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv, \seq_put_left:ce, +% \seq_put_left:co, +% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne, +% \seq_gput_left:No, +% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce, +% \seq_gput_left:co % } % \begin{syntax} % \cs{seq_put_left:Nn} \meta{seq~var} \Arg{item} @@ -212,14 +212,14 @@ % \end{function} % % \begin{function}{ -% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, -% \seq_put_right:No, \seq_put_right:Nx, -% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, -% \seq_put_right:co, \seq_put_right:cx, -% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, -% \seq_gput_right:No, \seq_gput_right:Nx, -% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, -% \seq_gput_right:co, \seq_gput_right:cx +% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne, +% \seq_put_right:No, +% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:ce, +% \seq_put_right:co, +% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne, +% \seq_gput_right:No, +% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce, +% \seq_gput_right:co, % } % \begin{syntax} % \cs{seq_put_right:Nn} \meta{seq~var} \Arg{item} @@ -471,10 +471,10 @@ % % \begin{function} % { -% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx, -% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx, -% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx, -% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx +% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Ne, +% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:ce, +% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne, +% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce % } % \begin{syntax} % \cs{seq_remove_all:Nn} \meta{seq~var} \Arg{item} @@ -554,8 +554,10 @@ % % \begin{function}[TF] % { -% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx, -% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx +% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:Ne, +% \seq_if_in:No, +% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:ce, +% \seq_if_in:co, % } % \begin{syntax} % \cs{seq_if_in:NnTF} \meta{seq~var} \Arg{item} \Arg{true code} \Arg{false code} @@ -905,12 +907,14 @@ % % \begin{function} % { -% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx, -% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:co, \seq_push:cx, -% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, -% \seq_gpush:No, \seq_gpush:Nx, -% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, -% \seq_gpush:co, \seq_gpush:cx +% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne, +% \seq_push:No, +% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:ce, +% \seq_push:co, +% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:Ne, +% \seq_gpush:No, +% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:ce, +% \seq_gpush:co % } % \begin{syntax} % \cs{seq_push:Nn} \meta{seq~var} \Arg{item} @@ -1083,7 +1087,7 @@ % raised. The definition should always be set globally. % \end{function} % -% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:x} +% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:e} % \begin{syntax} % \cs{@@_push_item_def:n} \Arg{code} % \end{syntax} @@ -1234,22 +1238,22 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_set_from_clist:NN #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n } } \cs_new_protected:Npn \seq_set_from_clist:Nn #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n } } \cs_new_protected:Npn \seq_gset_from_clist:NN #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n } } \cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n } } \cs_generate_variant:Nn \seq_set_from_clist:NN { Nc } @@ -1267,7 +1271,7 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_const_from_clist:Nn #1#2 { - \tl_const:Nx #1 + \tl_const:Ne #1 { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n } } \cs_generate_variant:Nn \seq_const_from_clist:Nn { c } @@ -1278,9 +1282,11 @@ % { % \seq_set_split:Nnn , % \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV , +% \seq_set_split:Nne , \seq_set_split:Nee , % \seq_set_split:Nnx , \seq_set_split:Nxx , % \seq_gset_split:Nnn, -% \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV, +% \seq_gset_split:NVn, \seq_gset_split:NnV, \seq_gset_split:NVV, +% \seq_gset_split:Nne, \seq_gset_split:Nee, % \seq_gset_split:Nnx, \seq_gset_split:Nxx % } % \begin{macro} @@ -1316,13 +1322,13 @@ % braces which are outermost after space trimming. % \begin{macrocode} \cs_new_protected:Npn \seq_set_split:Nnn - { \@@_set_split:NNNnn \__kernel_tl_set:Nx \tl_trim_spaces:n } + { \@@_set_split:NNNnn \__kernel_tl_set:Ne \tl_trim_spaces:n } \cs_new_protected:Npn \seq_gset_split:Nnn - { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \tl_trim_spaces:n } + { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \tl_trim_spaces:n } \cs_new_protected:Npn \seq_set_split_keep_spaces:Nnn - { \@@_set_split:NNNnn \__kernel_tl_set:Nx \exp_not:n } + { \@@_set_split:NNNnn \__kernel_tl_set:Ne \exp_not:n } \cs_new_protected:Npn \seq_gset_split_keep_spaces:Nnn - { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \exp_not:n } + { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \exp_not:n } \cs_new_protected:Npn \@@_set_split:NNNnn #1#2#3#4#5 { \tl_if_empty:nTF {#4} @@ -1342,7 +1348,7 @@ \@@_set_split_end: \@@_set_split:Nw #2 \prg_do_nothing: } - \__kernel_tl_set:Nx \l_@@_internal_a_tl { \l_@@_internal_a_tl } + \__kernel_tl_set:Ne \l_@@_internal_a_tl { \l_@@_internal_a_tl } } #1 #3 { \s_@@ \l_@@_internal_a_tl } } @@ -1354,8 +1360,10 @@ } \cs_new:Npn \@@_set_split:w #1 \@@_set_split_end: { \@@_wrap_item:n {#1} } -\cs_generate_variant:Nn \seq_set_split:Nnn { NV , NnV , NVV , Nnx , Nxx } -\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx } +\cs_generate_variant:Nn \seq_set_split:Nnn { NV , NnV , NVV , Nne , Nee } +\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx , Nxx } +\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nne , Nee } +\cs_generate_variant:Nn \seq_gset_split:Nnn { Nnx , Nxx } \cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn { NnV } \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV } % \end{macrocode} @@ -1395,17 +1403,17 @@ % \subsection{Appending data to either end} % % \begin{macro}{ -% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, +% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne, % \seq_put_left:No, \seq_put_left:Nx, -% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv, +% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,\seq_put_left:ce, % \seq_put_left:co, \seq_put_left:cx % } % \UnitTested % \begin{macro}{ -% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, +% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne, % \seq_gput_left:No, \seq_gput_left:Nx, -% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, -% \seq_gput_left:co, \seq_gput_left:cx +% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce, +% \seq_gput_left:co, \seq_put_left:cx % } % \begin{macro}[EXP]{\@@_put_left_aux:w} % When adding to the left of a sequence, remove \cs{s_@@}. This is @@ -1414,7 +1422,7 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_put_left:Nn #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \exp_not:n { \s_@@ \@@_item:n {#2} } \exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 } @@ -1422,17 +1430,17 @@ } \cs_new_protected:Npn \seq_gput_left:Nn #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \exp_not:n { \s_@@ \@@_item:n {#2} } \exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 } } } \cs_new:Npn \@@_put_left_aux:w \s_@@ { \exp_stop_f: } -\cs_generate_variant:Nn \seq_put_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \seq_put_left:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \seq_put_left:Nn { NV , Nv , Ne , No , Nx } +\cs_generate_variant:Nn \seq_put_left:Nn { c , cV , cv , ce , co ,cx } +\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , Ne , No , Nx } +\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , ce , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1440,17 +1448,17 @@ % % \begin{macro} % { -% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, +% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne, % \seq_put_right:No, \seq_put_right:Nx, -% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, +% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:cx, % \seq_put_right:co, \seq_put_right:cx % } % \UnitTested % \begin{macro} % { -% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, +% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne, % \seq_gput_right:No, \seq_gput_right:Nx, -% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, +% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce, % \seq_gput_right:co, \seq_gput_right:cx % } % Since there is no trailing marker, adding an item to the right of a @@ -1460,10 +1468,10 @@ { \tl_put_right:Nn #1 { \@@_item:n {#2} } } \cs_new_protected:Npn \seq_gput_right:Nn #1#2 { \tl_gput_right:Nn #1 { \@@_item:n {#2} } } -\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , Ne , No , Nx } +\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , ce , co , cx } +\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx } +\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1515,14 +1523,18 @@ % % \begin{macro} % { -% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx, -% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx +% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Ne, +% \seq_remove_all:Nx, +% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:ce +% \seq_remove_all:cx, % } % \UnitTested % \begin{macro} % { -% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx, -% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx +% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne, +% \seq_gremove_all:Nx, +% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce, +% \seq_gremove_all:Nx % } % \UnitTested % \begin{macro}{\@@_remove_all_aux:NNn} @@ -1541,9 +1553,9 @@ % \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost. % \begin{macrocode} \cs_new_protected:Npn \seq_remove_all:Nn - { \@@_remove_all_aux:NNn \__kernel_tl_set:Nx } + { \@@_remove_all_aux:NNn \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_gremove_all:Nn - { \@@_remove_all_aux:NNn \__kernel_tl_gset:Nx } + { \@@_remove_all_aux:NNn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_remove_all_aux:NNn #1#2#3 { \@@_push_item_def:n @@ -1564,8 +1576,10 @@ #1 #2 {#2} \@@_pop_item_def: } -\cs_generate_variant:Nn \seq_remove_all:Nn { NV , Nx , c , cV , cx } -\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \seq_remove_all:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \seq_remove_all:Nn { Nx , cx } +\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \seq_gremove_all:Nn { Nx , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1585,15 +1599,15 @@ % last argument \cs{use_ii:nn} vs \cs{use_i:nn}. % \begin{macrocode} \cs_new_protected:Npn \seq_set_item:Nnn #1#2#3 - { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn } + { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_i:nn } \cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3 - { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn } + { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_i:nn } \cs_generate_variant:Nn \seq_set_item:Nnn { c } \cs_generate_variant:Nn \seq_gset_item:Nnn { c } \prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F } - { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn } + { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_ii:nn } \prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F } - { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn } + { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_ii:nn } \prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F } \prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F } % \end{macrocode} @@ -1629,7 +1643,7 @@ { #6 { - \msg_error:nnxxx { seq } { item-too-large } + \msg_error:nneee { seq } { item-too-large } { \token_to_str:N #3 } {#2} {#1} } { \prg_return_false: } @@ -1715,9 +1729,9 @@ % from the stack, and the memory consumption becomes linear. % \begin{macrocode} \cs_new_protected:Npn \seq_reverse:N - { \@@_reverse:NN \__kernel_tl_set:Nx } + { \@@_reverse:NN \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_greverse:N - { \@@_reverse:NN \__kernel_tl_gset:Nx } + { \@@_reverse:NN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_reverse:NN #1 #2 { \cs_set_eq:NN \@@_tmp:w \@@_item:n @@ -1780,7 +1794,7 @@ { \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int { - \msg_error:nnx { seq } { shuffle-too-large } + \msg_error:nne { seq } { shuffle-too-large } { \token_to_str:N #2 } } { @@ -1793,7 +1807,7 @@ \seq_gclear:N \g_@@_internal_seq \int_step_inline:nn \l_@@_internal_a_int { - \seq_gput_right:Nx \g_@@_internal_seq + \seq_gput_right:Ne \g_@@_internal_seq { \tex_the:D \tex_toks:D ##1 } } \group_end: @@ -1820,8 +1834,10 @@ % % \begin{macro}[TF] % { -% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx, -% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx +% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:Ne, +% \seq_if_in:No, \seq_if_in:Nx, +% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv,\seq_if_in:ce, +% \seq_if_in:co, \seq_if_in:cx % } % \UnitTested % \begin{macro}{\@@_if_in:} @@ -1854,7 +1870,7 @@ \cs_new:Npn \@@_if_in: { \prg_break:n { \group_end: \prg_return_true: } } \prg_generate_conditional_variant:Nnn \seq_if_in:Nn - { NV , Nv , No , Nx , c , cV , cv , co , cx } { T , F , TF } + { NV , Nv , Ne , No , Nx , c , cV , cv , ce , co , cx } { T , F , TF } % \end{macrocode} % \end{macro} % \end{macro} @@ -1896,7 +1912,7 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_get_left:NN #1#2 { - \__kernel_tl_set:Nx #2 + \__kernel_tl_set:Ne #2 { \exp_after:wN \@@_get_left:wnw #1 \@@_item:n { \q_no_value } \s_@@_stop @@ -1948,7 +1964,7 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_get_right:NN #1#2 { - \__kernel_tl_set:Nx #2 + \__kernel_tl_set:Ne #2 { \exp_after:wN \use_i_ii:nnn \exp_after:wN \@@_get_right_loop:nw @@ -1989,9 +2005,9 @@ % finally stops the loop. % \begin{macrocode} \cs_new_protected:Npn \seq_pop_right:NN - { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx } + { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_gpop_right:NN - { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx } + { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_pop_right:NNN #1#2#3 { \cs_set_eq:NN \@@_tmp:w \@@_item:n @@ -2003,7 +2019,7 @@ #2 { \if_false: { \fi: } - \__kernel_tl_set:Nx #3 + \__kernel_tl_set:Ne #3 } { } \use_none:nn \cs_set_eq:NN \@@_item:n \@@_tmp:w @@ -2051,10 +2067,10 @@ { \@@_pop_TF:NNNN \@@_pop_left:NNN \tl_gset:Nn #1 #2 } \prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx #1 #2 } + { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne #1 #2 } \prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx #1 #2 } + { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne #1 #2 } \prg_generate_conditional_variant:Nnn \seq_pop_left:NN { c } { T , F , TF } \prg_generate_conditional_variant:Nnn \seq_gpop_left:NN { c } @@ -2174,7 +2190,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:x} +% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:e} % \begin{macro}{\@@_push_item_def:} % \begin{macro}{\@@_pop_item_def:} % The definition of \cs{@@_item:n} needs to be saved and restored at @@ -2186,10 +2202,10 @@ \@@_push_item_def: \cs_gset:Npn \@@_item:n ##1 } -\cs_new_protected:Npn \@@_push_item_def:x +\cs_new_protected:Npn \@@_push_item_def:e { \@@_push_item_def: - \cs_gset:Npx \@@_item:n ##1 + \cs_gset:Npe \@@_item:n ##1 } \cs_new_protected:Npn \@@_push_item_def: { @@ -2269,7 +2285,7 @@ % \begin{macrocode} \cs_new_protected:Npn \seq_map_variable:NNn #1#2#3 { - \@@_push_item_def:x + \@@_push_item_def:e { \tl_set:Nn \exp_not:N #2 {##1} \exp_not:n {#3} @@ -2380,9 +2396,9 @@ % semantics. % \begin{macrocode} \cs_new_protected:Npn \seq_set_map_x:NNn - { \@@_set_map_x:NNNn \__kernel_tl_set:Nx } + { \@@_set_map_x:NNNn \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_gset_map_x:NNn - { \@@_set_map_x:NNNn \__kernel_tl_gset:Nx } + { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4 { \@@_push_item_def:n { \exp_not:N \@@_item:n {#4} } @@ -2399,9 +2415,9 @@ % <inline function>. % \begin{macrocode} \cs_new_protected:Npn \seq_set_map:NNn - { \@@_set_map:NNNn \__kernel_tl_set:Nx } + { \@@_set_map:NNNn \__kernel_tl_set:Ne } \cs_new_protected:Npn \seq_gset_map:NNn - { \@@_set_map:NNNn \__kernel_tl_gset:Nx } + { \@@_set_map:NNNn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_set_map:NNNn #1#2#3#4 { \@@_push_item_def:n { \exp_not:n { \@@_item:n {#4} } } @@ -2507,37 +2523,27 @@ % The same functions as for sequences, but with the correct naming. % % \begin{macro}{ -% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx, -% \seq_push:cn, \seq_push:cV, \seq_push:cV, \seq_push:co, \seq_push:cx +% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne, +% \seq_push:No, \seq_push:Nx, +% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:ce, +% \seq_push:co, \seq_push:cx % } % \UnitTested % \begin{macro}{ -% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:No, \seq_gpush:Nx, -% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:co, \seq_gpush:cx +% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:Ne, +% \seq_gpush:No, \seq_gpush:Nx, +% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:ce, +% \seq_gpush:co, \seq_gpush:cx % } % \UnitTested % Pushing to a sequence is the same as adding on the left. % \begin{macrocode} -\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn -\cs_new_eq:NN \seq_push:NV \seq_put_left:NV -\cs_new_eq:NN \seq_push:Nv \seq_put_left:Nv -\cs_new_eq:NN \seq_push:No \seq_put_left:No -\cs_new_eq:NN \seq_push:Nx \seq_put_left:Nx -\cs_new_eq:NN \seq_push:cn \seq_put_left:cn -\cs_new_eq:NN \seq_push:cV \seq_put_left:cV -\cs_new_eq:NN \seq_push:cv \seq_put_left:cv -\cs_new_eq:NN \seq_push:co \seq_put_left:co -\cs_new_eq:NN \seq_push:cx \seq_put_left:cx +\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn +\cs_generate_variant:Nn \seq_push:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \seq_push:Nn { No , Nx , co , cx } \cs_new_eq:NN \seq_gpush:Nn \seq_gput_left:Nn -\cs_new_eq:NN \seq_gpush:NV \seq_gput_left:NV -\cs_new_eq:NN \seq_gpush:Nv \seq_gput_left:Nv -\cs_new_eq:NN \seq_gpush:No \seq_gput_left:No -\cs_new_eq:NN \seq_gpush:Nx \seq_gput_left:Nx -\cs_new_eq:NN \seq_gpush:cn \seq_gput_left:cn -\cs_new_eq:NN \seq_gpush:cV \seq_gput_left:cV -\cs_new_eq:NN \seq_gpush:cv \seq_gput_left:cv -\cs_new_eq:NN \seq_gpush:co \seq_gput_left:co -\cs_new_eq:NN \seq_gpush:cx \seq_gput_left:cx +\cs_generate_variant:Nn \seq_gpush:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \seq_gpush:Nn { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2585,9 +2591,9 @@ % \UnitTested % Apply the general \cs{__kernel_chk_tl_type:NnnT}. % \begin{macrocode} -\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \seq_show:N { c } -\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \seq_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index 7ce22afb7e..0371b7ecad 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -189,7 +189,7 @@ % between two integers, with all distances converted to scaled points. % Thus % \begin{verbatim} -% \tl_set:Nx \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } } +% \tl_set:Ne \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } } % \tl_show:N \l_my_tl % \end{verbatim} % displays |327680/655360| on the terminal. @@ -1654,7 +1654,7 @@ { \int_gincr:N \g__kernel_prg_map_int \exp_args:NNc \@@_step:NNnnnn - \cs_gset_protected:Npx + \cs_gset_protected:Npe { @@_map_ \int_use:N \g__kernel_prg_map_int :w } {#1}{#2}{#3} { @@ -1733,10 +1733,10 @@ \exp_after:wN \@@_to_decimal:w \dim_use:N \@@_eval:w #1 \@@_eval_end: } -\use:x +\use:e { \cs_new:Npn \exp_not:N \@@_to_decimal:w - ##1 . ##2 \tl_to_str:n { pt } + #1 . #2 \tl_to_str:n { pt } } { \int_compare:nNnTF {#2} > \c_zero_int diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index b92eddbb35..6837e7fb0e 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -124,8 +124,8 @@ % \begin{variable}{\g_@@_internal_seq, \g_@@_internal_tl} % Sorting happens in a group; the result is stored in those global % variables before being copied outside the group to the proper -% places. For seq and tl this is more efficient than using \cs{use:x} -% (or some \cs{exp_args:NNNx}) to smuggle the definition outside the +% places. For seq and tl this is more efficient than using \cs{use:e} +% (or some \cs{exp_args:NNNe}) to smuggle the definition outside the % group since \TeX{} does not need to re-read tokens. For clist we % don't gain anything since the result is converted from seq to clist % anyways. @@ -376,7 +376,7 @@ { \group_begin: \@@_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3} - \__kernel_tl_gset:Nx \g_@@_internal_tl + \__kernel_tl_gset:Ne \g_@@_internal_tl { \@@_tl_toks:w \l_@@_min_int ; } \group_end: #1 #2 \g_@@_internal_tl @@ -432,7 +432,7 @@ \int_step_inline:nnn \l_@@_min_int { \l_@@_top_int - 1 } { - \seq_gput_right:Nx \g_@@_internal_seq + \seq_gput_right:Ne \g_@@_internal_seq { \tex_the:D \tex_toks:D ##1 } } \group_end: @@ -591,14 +591,14 @@ \cs_new_protected:Npn \@@_return_mark:w #1 \s_@@_mark { } \cs_new_protected:Npn \@@_return_none_error: { - \msg_error:nnxx { sort } { return-none } + \msg_error:nnee { sort } { return-none } { \tex_the:D \tex_toks:D \l_@@_A_int } { \tex_the:D \tex_toks:D \l_@@_C_int } \@@_return_same:w \@@_return_none_error: } \cs_new_protected:Npn \@@_return_two_error: { - \msg_error:nnxx { sort } { return-two } + \msg_error:nnee { sort } { return-two } { \tex_the:D \tex_toks:D \l_@@_A_int } { \tex_the:D \tex_toks:D \l_@@_C_int } } @@ -1026,7 +1026,7 @@ { \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n } \cs_new_protected:Npn \@@_disabled_toksdef:n #1 { - \msg_error:nnx { sort } { toksdef } + \msg_error:nne { sort } { toksdef } { \token_to_str:N #1 } \@@_error: \tex_toksdef:D #1 @@ -1050,7 +1050,7 @@ \cs_new_protected:Npn \@@_too_long_error:NNw #1#2 \fi: { \fi: - \msg_error:nnxxx { sort } { too-large } + \msg_error:nneee { sort } { too-large } { \token_to_str:N #2 } { \int_eval:n { \l_@@_true_max_int - \l_@@_min_int } } { \int_eval:n { \l_@@_top_int - \l_@@_min_int } } diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index 6c0b2145e2..f4bfaf2c2c 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -468,12 +468,12 @@ % an empty result for the input $-1$. % \begin{macrocode} \group_begin: - \__kernel_tl_set:Nx \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } } + \__kernel_tl_set:Ne \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } } \tl_map_inline:Nn \l_@@_internal_tl { \tl_map_inline:Nn \l_@@_internal_tl { - \tl_const:cx { c_@@_byte_ \int_eval:n {"#1##1} _tl } + \tl_const:ce { c_@@_byte_ \int_eval:n {"#1##1} _tl } { \char_generate:nn { "#1##1 } { 12 } #1 ##1 } } } @@ -554,7 +554,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_convert_gmap:N #1 { - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_convert_gmap_loop:NN \exp_after:wN #1 @@ -579,7 +579,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_convert_gmap_internal:N #1 { - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_convert_gmap_internal_loop:Nww \exp_after:wN #1 @@ -599,8 +599,8 @@ % % \subsubsection{Error-reporting during conversion} % -% \begin{macro}{\@@_if_flag_error:nnx} -% \begin{macro}{\@@_if_flag_no_error:nnx} +% \begin{macro}{\@@_if_flag_error:nne} +% \begin{macro}{\@@_if_flag_no_error:nne} % When converting using the function \cs{str_set_convert:Nnnn}, errors % should be reported to the user after each step in the % conversion. Errors are signalled by raising some flag (typically @@ -608,16 +608,16 @@ % give the user an error, otherwise remove the arguments. On the other % hand, in the conditional functions \cs{str_set_convert:NnnnTF}, % errors should be suppressed. This is done by changing -% \cs{@@_if_flag_error:nnx} into \cs{@@_if_flag_no_error:nnx} +% \cs{@@_if_flag_error:nne} into \cs{@@_if_flag_no_error:nne} % locally. % \begin{macrocode} -\cs_new_protected:Npn \@@_if_flag_error:nnx #1 +\cs_new_protected:Npn \@@_if_flag_error:nne #1 { \flag_if_raised:nTF {#1} - { \msg_error:nnx { str } } + { \msg_error:nne { str } } { \use_none:nn } } -\cs_new_protected:Npn \@@_if_flag_no_error:nnx #1#2#3 +\cs_new_protected:Npn \@@_if_flag_no_error:nne #1#2#3 { \flag_if_raised:nT {#1} { \bool_gset_true:N \g_@@_error_bool } } % \end{macrocode} % \end{macro} @@ -675,7 +675,7 @@ % unescape and decode; encode and escape; exit the group and store the % result in the user's variable. The various conversion functions all % act on \cs{g_@@_result_tl}. Errors are silenced for the conditional -% functions by redefining \cs{@@_if_flag_error:nnx} locally. +% functions by redefining \cs{@@_if_flag_error:nne} locally. % \begin{macrocode} \cs_new_protected:Npn \str_set_convert:Nnnn { \@@_convert:nNNnnn { } \tl_set_eq:NN } @@ -686,7 +686,7 @@ { \bool_gset_false:N \g_@@_error_bool \@@_convert:nNNnnn - { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx } + { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne } \tl_set_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true: } @@ -695,7 +695,7 @@ { \bool_gset_false:N \g_@@_error_bool \@@_convert:nNNnnn - { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx } + { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne } \tl_gset_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true: } @@ -703,7 +703,7 @@ { \group_begin: #1 - \__kernel_tl_gset:Nx \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} } + \__kernel_tl_gset:Ne \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} } \exp_after:wN \@@_convert:wwwnn \tl_to_str:n {#5} /// \s_@@_stop { decode } { unescape } @@ -758,7 +758,7 @@ { \if_meaning:w #1 #5 \tl_if_empty:nF {#3} - { \msg_error:nnx { str } { native-escaping } {#3} } + { \msg_error:nne { str } { native-escaping } {#3} } #1 \else: #4 #2 #1 @@ -808,7 +808,7 @@ { \cs_if_exist:cF { @@_convert_#2_#3: } { - \exp_args:Nx \@@_convert:nnnn + \exp_args:Ne \@@_convert:nnnn { \@@_convert_lowercase_alphanum:n {#3} } {#1} {#2} {#3} } @@ -830,7 +830,7 @@ } { \tl_clear:N \l_@@_internal_tl - \msg_error:nnxx { str } { unknown-#2 } {#4} {#1} + \msg_error:nnee { str } { unknown-#2 } {#4} {#1} } } \cs_if_exist:cF { @@_convert_#3_#1: } @@ -936,9 +936,9 @@ \cs_new_protected:Npn \@@_convert_unescape_: { \flag_clear:n { str_byte } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_args:No \@@_filter_bytes:n \g_@@_result_tl } - \@@_if_flag_error:nnx { str_byte } { non-byte } { bytes } + \@@_if_flag_error:nne { str_byte } { non-byte } { bytes } } } { \cs_new_protected:Npn \@@_convert_unescape_: { } } @@ -997,7 +997,7 @@ { \flag_clear:n { str_error } \@@_convert_gmap_internal:N \@@_encode_native_char:n - \@@_if_flag_error:nnx { str_error } + \@@_if_flag_error:nne { str_error } { native-overflow } { } } \cs_new:Npn \@@_encode_native_char:n #1 @@ -1032,7 +1032,7 @@ \cs_new_protected:Npn \@@_convert_decode_clist: { \clist_gset:No \g_@@_result_tl \g_@@_result_tl - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_args:No \clist_map_function:nN \g_@@_result_tl \@@_decode_clist_char:n @@ -1055,7 +1055,7 @@ \cs_new_protected:Npn \@@_convert_encode_clist: { \@@_convert_gmap_internal:N \@@_encode_clist_char:n - \__kernel_tl_gset:Nx \g_@@_result_tl { \tl_tail:N \g_@@_result_tl } + \__kernel_tl_gset:Ne \g_@@_result_tl { \tl_tail:N \g_@@_result_tl } } \cs_new:Npn \@@_encode_clist_char:n #1 { , #1 } % \end{macrocode} @@ -1179,14 +1179,14 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_convert_decode_eight_bit:n #1 { - \cs_set:Npx \@@_tmp:w + \cs_set:Npe \@@_tmp:w { \exp_not:N \@@_decode_eight_bit_aux:Nn \exp_not:c { g_@@_decode_#1_intarray } } \flag_clear:n { str_error } \@@_convert_gmap:N \@@_tmp:w - \@@_if_flag_error:nnx { str_error } { decode-8-bit } {#1} + \@@_if_flag_error:nne { str_error } { decode-8-bit } {#1} } \cs_new:Npn \@@_decode_eight_bit_aux:Nn #1#2 { @@ -1222,7 +1222,7 @@ \int_new:N \l_@@_modulo_int \cs_new_protected:Npn \@@_convert_encode_eight_bit:n #1 { - \cs_set:Npx \@@_tmp:w + \cs_set:Npe \@@_tmp:w { \exp_not:N \@@_encode_eight_bit_aux:NNn \exp_not:c { g_@@_encode_#1_intarray } @@ -1230,7 +1230,7 @@ } \flag_clear:n { str_error } \@@_convert_gmap_internal:N \@@_tmp:w - \@@_if_flag_error:nnx { str_error } { encode-8-bit } {#1} + \@@_if_flag_error:nne { str_error } { encode-8-bit } {#1} } \cs_new:Npn \@@_encode_eight_bit_aux:NNn #1#2#3 { @@ -1349,7 +1349,7 @@ \group_begin: \flag_clear:n { str_error } \int_set:Nn \tex_escapechar:D { 92 } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \@@_output_byte:w " \exp_last_unbraced:Nf \@@_unescape_hex_auxi:N @@ -1358,7 +1358,7 @@ \prg_break_point: \@@_output_end: } - \@@_if_flag_error:nnx { str_error } { unescape-hex } { } + \@@_if_flag_error:nne { str_error } { unescape-hex } { } \group_end: } \cs_new:Npn \@@_unescape_hex_auxi:N #1 @@ -1428,14 +1428,14 @@ \flag_clear:n { str_byte } \flag_clear:n { str_error } \int_set:Nn \tex_escapechar:D { 92 } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN #3 \g_@@_result_tl #1 ? { ? \prg_break: } \prg_break_point: } - \@@_if_flag_error:nnx { str_byte } { non-byte } { #2 } - \@@_if_flag_error:nnx { str_error } { unescape-#2 } { } + \@@_if_flag_error:nne { str_byte } { non-byte } { #2 } + \@@_if_flag_error:nne { str_error } { unescape-#2 } { } \group_end: } \cs_new:Npn #3 ##1#1##2##3 @@ -1514,20 +1514,20 @@ \flag_clear:n { str_byte } \flag_clear:n { str_error } \int_set:Nn \tex_escapechar:D { 92 } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_unescape_string_newlines:wN \g_@@_result_tl \prg_break: ^^M ? \prg_break_point: } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_unescape_string_loop:wNNN \g_@@_result_tl #1 ?? { ? \prg_break: } \prg_break_point: } - \@@_if_flag_error:nnx { str_byte } { non-byte } { string } - \@@_if_flag_error:nnx { str_error } { unescape-string } { } + \@@_if_flag_error:nne { str_byte } { non-byte } { string } + \@@_if_flag_error:nne { str_error } { unescape-string } { } \group_end: } } @@ -1664,7 +1664,7 @@ % (and including) \texttt{del}, are converted to octal. One backslash % is added before each parenthesis and backslash. % \begin{macrocode} -\str_const:Nx \c_@@_escape_string_str +\str_const:Ne \c_@@_escape_string_str { \c_backslash_str ( ) } \cs_new_protected:Npn \@@_convert_escape_string: { \@@_convert_gmap:N \@@_escape_string_char:N } @@ -1973,13 +1973,13 @@ \flag_clear:n { str_extra } \flag_clear:n { str_overlong } \flag_clear:n { str_overflow } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_decode_utf_viii_start:N \g_@@_result_tl { \prg_break: \@@_decode_utf_viii_end: } \prg_break_point: } - \@@_if_flag_error:nnx { str_error } { utf8-decode } { } + \@@_if_flag_error:nne { str_error } { utf8-decode } { } } \cs_new:Npn \@@_decode_utf_viii_start:N #1 { @@ -2109,7 +2109,7 @@ \cs_new_protected:cpn { @@_convert_encode_utf16: } { \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n - \tl_gput_left:Nx \g_@@_result_tl { ^^fe ^^ff } + \tl_gput_left:Ne \g_@@_result_tl { ^^fe ^^ff } } \cs_new_protected:cpn { @@_convert_encode_utf16be: } { \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n } @@ -2120,7 +2120,7 @@ \flag_clear:n { str_error } \cs_set_eq:NN \@@_tmp:w #1 \@@_convert_gmap_internal:N \@@_encode_utf_xvi_char:n - \@@_if_flag_error:nnx { str_error } { utf16-encode } { } + \@@_if_flag_error:nne { str_error } { utf16-encode } { } } \cs_new:Npn \@@_encode_utf_xvi_char:n #1 { @@ -2263,13 +2263,13 @@ \flag_clear:n { str_extra } \flag_clear:n { str_end } \cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_decode_utf_xvi_pair:NN #2 \q_@@_nil \q_@@_nil \prg_break_point: } - \@@_if_flag_error:nnx { str_error } { utf16-decode } { } + \@@_if_flag_error:nne { str_error } { utf16-decode } { } } % \end{macrocode} % \end{macro} @@ -2422,7 +2422,7 @@ \cs_new_protected:cpn { @@_convert_encode_utf32: } { \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n - \tl_gput_left:Nx \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff } + \tl_gput_left:Ne \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff } } \cs_new_protected:cpn { @@_convert_encode_utf32be: } { \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n } @@ -2551,13 +2551,13 @@ \flag_clear:n { str_end } \flag_clear:n { str_error } \cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 } - \__kernel_tl_gset:Nx \g_@@_result_tl + \__kernel_tl_gset:Ne \g_@@_result_tl { \exp_after:wN \@@_decode_utf_xxxii_loop:NNNN #2 \s_@@_stop \s_@@_stop \s_@@_stop \s_@@_stop \prg_break_point: } - \@@_if_flag_error:nnx { str_error } { utf32-decode } { } + \@@_if_flag_error:nne { str_error } { utf32-decode } { } } \cs_new:Npn \@@_decode_utf_xxxii_loop:NNNN #1#2#3#4 { @@ -2639,7 +2639,7 @@ } \cs_new:Npn \@@_convert_pdfname_bytes_aux:n #1 { \@@_convert_pdfname_bytes_aux:nnnn #1 } - \cs_new:Npx \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4 + \cs_new:Npe \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4 { \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#1} \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#2} diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index c2498436cb..300a779bd1 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -108,8 +108,8 @@ % % \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_const:Nn, \str_const:NV, \str_const:Nx, -% \str_const:cn, \str_const:cV, \str_const:cx +% \str_const:Nn, \str_const:NV, \str_const:Ne, +% \str_const:cn, \str_const:cV, \str_const:ce % } % \begin{syntax} % \cs{str_const:Nn} \meta{str~var} \Arg{token list} @@ -178,10 +178,10 @@ % % \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_set:Nn, \str_set:NV, \str_set:Nx, -% \str_set:cn, \str_set:cV, \str_set:cx, -% \str_gset:Nn, \str_gset:NV, \str_gset:Nx, -% \str_gset:cn, \str_gset:cV, \str_gset:cx +% \str_set:Nn, \str_set:NV, \str_set:Ne, +% \str_set:cn, \str_set:cV, \str_set:ce, +% \str_gset:Nn, \str_gset:NV, \str_gset:Ne, +% \str_gset:cn, \str_gset:cV, \str_gset:ce % } % \begin{syntax} % \cs{str_set:Nn} \meta{str var} \Arg{token list} @@ -192,10 +192,10 @@ % % \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx, -% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx, -% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx, -% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx +% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne, +% \str_put_left:cn, \str_put_left:cV, \str_put_left:ce, +% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne, +% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce % } % \begin{syntax} % \cs{str_put_left:Nn} \meta{str var} \Arg{token list} @@ -207,10 +207,10 @@ % % \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx, -% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx, -% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx, -% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx +% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne, +% \str_put_right:cn, \str_put_right:cV, \str_put_right:Ne, +% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne, +% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce % } % \begin{syntax} % \cs{str_put_right:Nn} \meta{str var} \Arg{token list} @@ -595,18 +595,18 @@ % at positions $s$ for $s\le0$ or $s>l$. % For instance, % \begin{verbatim} -% \iow_term:x { \str_range:nnn { abcdef } { 2 } { 5 } } -% \iow_term:x { \str_range:nnn { abcdef } { -4 } { -1 } } -% \iow_term:x { \str_range:nnn { abcdef } { -2 } { -1 } } -% \iow_term:x { \str_range:nnn { abcdef } { 0 } { -1 } } +% \iow_term:e { \str_range:nnn { abcdef } { 2 } { 5 } } +% \iow_term:e { \str_range:nnn { abcdef } { -4 } { -1 } } +% \iow_term:e { \str_range:nnn { abcdef } { -2 } { -1 } } +% \iow_term:e { \str_range:nnn { abcdef } { 0 } { -1 } } % \end{verbatim} % prints \texttt{bcde}, \texttt{cdef}, \texttt{ef}, and an empty % line to the terminal. The \meta{start index} must always be smaller than % or equal to the \meta{end index}: if this is not the case then no output % is generated. Thus % \begin{verbatim} -% \iow_term:x { \str_range:nnn { abcdef } { 5 } { 2 } } -% \iow_term:x { \str_range:nnn { abcdef } { -1 } { -4 } } +% \iow_term:e { \str_range:nnn { abcdef } { 5 } { 2 } } +% \iow_term:e { \str_range:nnn { abcdef } { -1 } { -4 } } % \end{verbatim} % both yield empty strings. % \end{function} @@ -617,25 +617,25 @@ % The behavior of \cs{str_range_ignore_spaces:nnn} is similar, but spaces % are removed before starting the job. The input % \begin{verbatim} -% \iow_term:x { \str_range:nnn { abcdefg } { 2 } { 5 } } -% \iow_term:x { \str_range:nnn { abcdefg } { 2 } { -3 } } -% \iow_term:x { \str_range:nnn { abcdefg } { -6 } { 5 } } -% \iow_term:x { \str_range:nnn { abcdefg } { -6 } { -3 } } -% -% \iow_term:x { \str_range:nnn { abc~efg } { 2 } { 5 } } -% \iow_term:x { \str_range:nnn { abc~efg } { 2 } { -3 } } -% \iow_term:x { \str_range:nnn { abc~efg } { -6 } { 5 } } -% \iow_term:x { \str_range:nnn { abc~efg } { -6 } { -3 } } -% -% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } } -% -% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } } -% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } } +% \iow_term:e { \str_range:nnn { abcdefg } { 2 } { 5 } } +% \iow_term:e { \str_range:nnn { abcdefg } { 2 } { -3 } } +% \iow_term:e { \str_range:nnn { abcdefg } { -6 } { 5 } } +% \iow_term:e { \str_range:nnn { abcdefg } { -6 } { -3 } } +% +% \iow_term:e { \str_range:nnn { abc~efg } { 2 } { 5 } } +% \iow_term:e { \str_range:nnn { abc~efg } { 2 } { -3 } } +% \iow_term:e { \str_range:nnn { abc~efg } { -6 } { 5 } } +% \iow_term:e { \str_range:nnn { abc~efg } { -6 } { -3 } } +% +% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } } +% +% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } } +% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } } % \end{verbatim} % will print four instances of |bcde|, four instances of |bc e| and eight % instances of |bcde|. @@ -973,20 +973,20 @@ % % \begin{macro} % { -% \str_set:Nn, \str_set:NV, \str_set:Nx, -% \str_set:cn, \str_set:cV, \str_set:cx, -% \str_gset:Nn, \str_gset:NV, \str_gset:Nx, -% \str_gset:cn, \str_gset:cV, \str_gset:cx, -% \str_const:Nn, \str_const:NV, \str_const:Nx, -% \str_const:cn, \str_const:cV, \str_const:cx, -% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx, -% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx, -% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx, -% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx, -% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx, -% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx, -% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx, -% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx +% \str_set:Nn, \str_set:NV, \str_set:Ne, \str_set:Nx, +% \str_set:cn, \str_set:cV, \str_set:ce, \str_set:cx, +% \str_gset:Nn, \str_gset:NV, \str_gset:Ne, \str_gset:Nx, +% \str_gset:cn, \str_gset:cV, \str_gset:ce, \str_gset:cx, +% \str_const:Nn, \str_const:NV, \str_const:Ne, \str_const:Nx, +% \str_const:cn, \str_const:cV, \str_const:ce, \str_const:cx, +% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne, \str_put_left:Nx, +% \str_put_left:cn, \str_put_left:cV, \str_put_left:ce, \str_put_left:cx, +% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne, \str_gput_left:Nx, +% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce, \str_gput_left:cx, +% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne, \str_put_right:Nx, +% \str_put_right:cn, \str_put_right:cV, \str_put_right:ce, \str_put_right:cx, +% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne, \str_gput_right:Nx, +% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce, \str_gput_right:cx % } % Simply convert the token list inputs to \meta{strings}. % \begin{macrocode} @@ -995,12 +995,13 @@ { \tl_if_blank:nF {#1} { - \cs_new_protected:cpx { str_ #1 :Nn } ##1##2 + \cs_new_protected:cpe { str_ #1 :Nn } ##1##2 { - \exp_not:c { tl_ #1 :Nx } ##1 + \exp_not:c { tl_ #1 :Ne } ##1 { \exp_not:N \tl_to_str:n {##2} } } - \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx } + \cs_generate_variant:cn { str_ #1 :Nn } + { NV , Ne , Nx , cn , cV , ce , cx } \@@_tmp:n } } @@ -1041,13 +1042,13 @@ % hide in braces. % \begin{macrocode} \cs_new_protected:Npn \str_replace_once:Nnn - { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Nx } + { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Ne } \cs_new_protected:Npn \str_greplace_once:Nnn - { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Nx } + { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Ne } \cs_new_protected:Npn \str_replace_all:Nnn - { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Nx } + { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Ne } \cs_new_protected:Npn \str_greplace_all:Nnn - { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Nx } + { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Ne } \cs_generate_variant:Nn \str_replace_once:Nnn { c } \cs_generate_variant:Nn \str_greplace_once:Nnn { c } \cs_generate_variant:Nn \str_replace_all:Nnn { c } @@ -1056,10 +1057,10 @@ { \tl_if_empty:nTF {#4} { - \msg_error:nnx { kernel } { empty-search-pattern } {#5} + \msg_error:nne { kernel } { empty-search-pattern } {#5} } { - \use:x + \use:e { \exp_not:n { \@@_replace_aux:NNNnnn #1 #2 #3 } { \tl_to_str:N #3 } @@ -1215,7 +1216,7 @@ % \begin{macrocode} \prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF } { - \use:x + \use:e { \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } } { \prg_return_true: } { \prg_return_false: } } @@ -1223,7 +1224,7 @@ { c } { T , F , TF } \prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF } { - \use:x + \use:e { \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } } { \prg_return_true: } { \prg_return_false: } } @@ -1369,7 +1370,7 @@ \int_gincr:N \g__kernel_prg_map_int \cs_gset_protected:cpn { @@_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2} - \use:x + \use:e { \exp_not:N \@@_map_inline:NN \exp_not:c { @@_map_ \int_use:N \g__kernel_prg_map_int :w } @@ -1390,7 +1391,7 @@ } \cs_new_protected:Npn \str_map_variable:nNn #1#2#3 { - \use:x + \use:e { \exp_not:n { \@@_map_variable:NnN #2 {#3} } \__kernel_str_to_other_fast:n {#1} @@ -1992,7 +1993,7 @@ \cs_new:Npn \@@_change_case_codepoint:nN #1#2 { \@@_change_case_char:fnn { \int_eval:n {`#2} } {#1} {#2} } \else: - \cs_new:Npx \@@_change_case_codepoint:nN #1#2 + \cs_new:Npe \@@_change_case_codepoint:nN #1#2 { \exp_not:N \int_compare:nNnTF {`#2} > { "80 } { @@ -2121,19 +2122,19 @@ % For all of those strings, use \cs{cs_to_str:N} to get characters with % the correct category code without worries % \begin{macrocode} -\str_const:Nx \c_ampersand_str { \cs_to_str:N \& } -\str_const:Nx \c_atsign_str { \cs_to_str:N \@ } -\str_const:Nx \c_backslash_str { \cs_to_str:N \\ } -\str_const:Nx \c_left_brace_str { \cs_to_str:N \{ } -\str_const:Nx \c_right_brace_str { \cs_to_str:N \} } -\str_const:Nx \c_circumflex_str { \cs_to_str:N \^ } -\str_const:Nx \c_colon_str { \cs_to_str:N \: } -\str_const:Nx \c_dollar_str { \cs_to_str:N \$ } -\str_const:Nx \c_hash_str { \cs_to_str:N \# } -\str_const:Nx \c_percent_str { \cs_to_str:N \% } -\str_const:Nx \c_tilde_str { \cs_to_str:N \~ } -\str_const:Nx \c_underscore_str { \cs_to_str:N \_ } -\str_const:Nx \c_zero_str { 0 } +\str_const:Ne \c_ampersand_str { \cs_to_str:N \& } +\str_const:Ne \c_atsign_str { \cs_to_str:N \@ } +\str_const:Ne \c_backslash_str { \cs_to_str:N \\ } +\str_const:Ne \c_left_brace_str { \cs_to_str:N \{ } +\str_const:Ne \c_right_brace_str { \cs_to_str:N \} } +\str_const:Ne \c_circumflex_str { \cs_to_str:N \^ } +\str_const:Ne \c_colon_str { \cs_to_str:N \: } +\str_const:Ne \c_dollar_str { \cs_to_str:N \$ } +\str_const:Ne \c_hash_str { \cs_to_str:N \# } +\str_const:Ne \c_percent_str { \cs_to_str:N \% } +\str_const:Ne \c_tilde_str { \cs_to_str:N \~ } +\str_const:Ne \c_underscore_str { \cs_to_str:N \_ } +\str_const:Ne \c_zero_str { 0 } % \end{macrocode} % \end{variable} % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf Binary files differindex c3025741c6..16d307e028 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index d241392fb9..29c2f76864 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/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-08-29} +\date{Released 2023-10-10} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf Binary files differindex ebc9bcab2a..5c4fe8ad1d 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 42e1b4c263..dbb6d858b4 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/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-08-29} +\date{Released 2023-10-10} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index 5717e60e73..5e57590767 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -148,7 +148,7 @@ % where the |u| part is only present for \upTeX{}. % \end{variable} % -% \begin{function}[added = 2020-09-24, EXP]{\sys_timer:} +% \begin{function}[added = 2021-05-12, EXP]{\sys_timer:} % \begin{syntax} % \cs{sys_timer:} % \end{syntax} @@ -159,6 +159,14 @@ % scaled seconds ($2^{-16}$ seconds). % \end{function} % +% \begin{function}[added = 2021-05-12, EXP, pTF]{\sys_if_timer_exist:} +% \begin{syntax} +% \cs{sys_if_timer_exist_p:} +% \cs{sys_if_timer_exist:TF} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests whether current engine has timer support. +% \end{function} +% % \section{Output format} % % \begin{function}[added = 2015-09-19, EXP, pTF] @@ -249,8 +257,8 @@ % \cs{q_no_value} in the non-branching version. % Note that quote characters (|"|) \emph{cannot} be used inside the % \meta{shell command}. The \cs{sys_get_shell:nnNTF} conditional -% inserts the \texttt{true code} if the shell is available and no quote is -% detected, and the \texttt{false code} otherwise. +% inserts the \meta{true code} if the shell is available and no quote is +% detected, and the \meta{false code} otherwise. % \end{function} % % \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int} @@ -294,14 +302,16 @@ % shell escape is enabled use \cs{sys_if_shell:}. % \end{function} % -% \begin{function}[added = 2017-05-27]{\sys_shell_now:n, \sys_shell_now:x} +% \begin{function}[added = 2017-05-27] +% {\sys_shell_now:n, \sys_shell_now:e} % \begin{syntax} % \cs{sys_shell_now:n} \Arg{tokens} % \end{syntax} % Execute \meta{tokens} through shell escape immediately. % \end{function} % -% \begin{function}[added = 2017-05-27]{\sys_shell_shipout:n, \sys_shell_shipout:x} +% \begin{function}[added = 2017-05-27] +% {\sys_shell_shipout:n, \sys_shell_shipout:e} % \begin{syntax} % \cs{sys_shell_shipout:n} \Arg{tokens} % \end{syntax} @@ -411,7 +421,7 @@ % Set up the engine tests on the basis exactly one test should be true. % Mainly a case of looking for the appropriate marker primitive. % \begin{macrocode} -\str_const:Nx \c_sys_engine_str +\str_const:Ne \c_sys_engine_str { \cs_if_exist:NT \tex_luatexversion:D { luatex } \cs_if_exist:NT \tex_pdftexversion:D { pdftex } @@ -448,7 +458,7 @@ % \begin{macrocode} \group_begin: \cs_set_eq:NN \lua_now:e \tex_directlua:D - \str_const:Nx \c_sys_engine_exec_str + \str_const:Ne \c_sys_engine_exec_str { \sys_if_engine_pdftex:T { pdf } \sys_if_engine_xetex:T { xe } @@ -466,7 +476,7 @@ tex } \group_end: -\str_const:Nx \c_sys_engine_format_str +\str_const:Ne \c_sys_engine_format_str { \cs_if_exist:NTF \fmtname { @@ -505,7 +515,7 @@ % Various different engines, various different ways to extract the % data! % \begin{macrocode} -\str_const:Nx \c_sys_engine_version_str +\str_const:Ne \c_sys_engine_version_str { \str_case:on \c_sys_engine_str { @@ -594,7 +604,7 @@ \tl_if_blank:nF {#1} { \tl_gset:Nn \g_@@_backend_tl {#1} } \@@_load_backend_check:N \g_@@_backend_tl - \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl } + \str_const:Ne \c_sys_backend_str { \g_@@_backend_tl } \__kernel_sys_configuration_load:n { l3backend- \c_sys_backend_str } } @@ -610,7 +620,7 @@ { xetex } { } } { - \msg_error:nnxx { sys } { wrong-backend } + \msg_error:nnee { sys } { wrong-backend } #1 { xetex } \tl_gset:Nn #1 { xetex } } @@ -629,7 +639,7 @@ { \str_if_eq_p:Vn #1 { luatex } } { \str_if_eq_p:Vn #1 { pdftex } } { - \msg_error:nnxx { sys } { wrong-backend } + \msg_error:nnee { sys } { wrong-backend } #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } } \sys_if_engine_luatex:TF { \tl_gset:Nn #1 { luatex } } @@ -645,7 +655,7 @@ { dvisvgm } { } } { - \msg_error:nnxx { sys } { wrong-backend } + \msg_error:nnee { sys } { wrong-backend } #1 { dvips } \tl_gset:Nn #1 { dvips } } @@ -697,7 +707,7 @@ % \begin{variable}{\c_@@_marker_tl} % The same idea as the marker for rescanning token lists. % \begin{macrocode} -\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : } +\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : } % \end{macrocode} % \end{variable} % @@ -721,7 +731,7 @@ { \tl_if_in:nnTF {#1} { " } { - \msg_error:nnx + \msg_error:nne { kernel } { quote-in-shell } {#1} \prg_return_false: } @@ -759,7 +769,7 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\sys_shell_now:n} +% \begin{macro}{\sys_shell_now:n, \sys_shell_now:e, \sys_shell_now:x} % \begin{macro}{\@@_shell_now:e} % Execute commands through shell escape immediately. % @@ -797,13 +807,13 @@ do \cs_new_protected:Npn \sys_shell_now:n #1 { \iow_now:Nn \c_@@_shell_stream_int {#1} } } -\cs_generate_variant:Nn \sys_shell_now:n { x } +\cs_generate_variant:Nn \sys_shell_now:n { e, x } %</tex> % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\sys_shell_shipout:n} +% \begin{macro}{\sys_shell_shipout:n, \sys_shell_shipout:e, \sys_shell_shipout:x} % \begin{macro}{\@@_shell_shipout:e} % Execute commands through shell escape at shipout. % @@ -843,7 +853,7 @@ end \cs_new_protected:Npn \sys_shell_shipout:n #1 { \iow_shipout:Nn \c_@@_shell_stream_int {#1} } } -\cs_generate_variant:Nn \sys_shell_shipout:n { x } +\cs_generate_variant:Nn \sys_shell_shipout:n { e , x } % \end{macrocode} % \end{macro} % \end{macro} @@ -940,7 +950,7 @@ end % \begin{macrocode} \@@_everyjob:n { - \str_const:Nx \c_sys_timestamp_str + \str_const:Ne \c_sys_timestamp_str { \cs_if_exist:NTF \tex_directlua:D { \tex_directlua:D { tex.print(pdf.getcreationdate()) } } @@ -1101,7 +1111,7 @@ end % \begin{macrocode} \@@_finalise:n { - \str_const:Nx \c_sys_output_str + \str_const:Ne \c_sys_output_str { \int_compare:nNnTF { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 } @@ -1126,7 +1136,7 @@ end \tl_new:N \g_@@_backend_tl \@@_finalise:n { - \__kernel_tl_gset:Nx \g_@@_backend_tl + \__kernel_tl_gset:Ne \g_@@_backend_tl { \sys_if_engine_xetex:TF { xetex } diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf Binary files differindex c34ddb6bd8..ebe1f75c91 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index e0a5780cb8..bd166834ac 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/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-08-29} +\date{Released 2023-10-10} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index 07a79e2bb0..0e20a797f0 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -243,15 +243,15 @@ } \cs_new:Npn \@@_change_case_auxi:nnn #1#2#3 { \exp_args:No \@@_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} } -\cs_new:Npx \@@_change_case_BCP:nnn #1#2#3 +\cs_new:Npe \@@_change_case_BCP:nnn #1#2#3 { \exp_not:N \@@_change_case_BCP:nnw {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop } -\use:x +\use:e { \cs_new:Npn \exp_not:N \@@_change_case_BCP:nnw - ##1##2##3 \tl_to_str:n { -x- } ##4 \tl_to_str:n { -x- } ##5 + #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5 \exp_not:N \q_@@_stop } { \@@_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q_@@_stop } @@ -353,9 +353,9 @@ } \@@_change_case_break:w } -\use:x +\use:e { - \cs_new:Npn \exp_not:N \@@_change_case_space:nnw ##1##2 \c_space_tl + \cs_new:Npn \exp_not:N \@@_change_case_space:nnw #1#2 \c_space_tl } { \@@_change_case_store:n { ~ } @@ -427,9 +427,9 @@ \@@_change_case_store:n { {#4} } \@@_change_case_math_loop:nnNw {#1} {#2} #3 } -\use:x +\use:e { - \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw ##1##2##3 + \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw #1#2#3 \c_space_tl } { diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx index b2372d446f..8b3ac6098c 100644 --- a/macros/latex/contrib/l3kernel/l3text-map.dtx +++ b/macros/latex/contrib/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -168,8 +168,8 @@ } \@@_map_loop:Nnw #1 { } } -\use:x - { \cs_new:Npn \exp_not:N \@@_map_space:Nnw ##1##2 \c_space_tl } +\use:e + { \cs_new:Npn \exp_not:N \@@_map_space:Nnw #1#2 \c_space_tl } { \@@_map_output:Nn #1 {#2} #1 { ~ } diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx index 35d180d042..075b370737 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -349,7 +349,7 @@ % \begin{macro} % { % \text_declare_purify_equivalent:Nn, -% \text_declare_purify_equivalent:Nx +% \text_declare_purify_equivalent:Ne % } % \begin{macrocode} \cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2 @@ -357,7 +357,7 @@ \tl_clear_new:c { l_@@_purify_ \token_to_str:N #1 _tl } \tl_set:cn { l_@@_purify_ \token_to_str:N #1 _tl } {#2} } -\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx } +\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Ne } % \end{macrocode} % \end{macro} % @@ -436,7 +436,7 @@ \text_declare_purify_equivalent:Nn \\ { } \tl_map_inline:nn { \{ \} \# \$ \% \_ } - { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } } + { \text_declare_purify_equivalent:Ne #1 { \cs_to_str:N #1 } } % \end{macrocode} % Cross-referencing. % \begin{macrocode} @@ -449,7 +449,7 @@ \use:n { \group_end: - \text_declare_purify_equivalent:Nx ~ { \c_space_tl } + \text_declare_purify_equivalent:Ne ~ { \c_space_tl } } \text_declare_purify_equivalent:Nn \nobreakspace { ~ } \text_declare_purify_equivalent:Nn \ { ~ } @@ -471,7 +471,7 @@ \cs_set_protected:Npn \@@_loop:Nn #1#2 { \quark_if_recursion_tail_stop:N #1 - \text_declare_purify_equivalent:Nx #1 + \text_declare_purify_equivalent:Ne #1 { \codepoint_generate:nn {"#2} { \char_value_catcode:n {"#2} } @@ -535,7 +535,7 @@ \cs_set_protected:Npn \@@_loop:Nn #1#2 { \quark_if_recursion_tail_stop:N #1 - \tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl } + \tl_const:ce { c_@@_purify_ \token_to_str:N #1 _tl } { \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } } \@@_loop:Nn } @@ -569,7 +569,7 @@ \cs_set_protected:Npn \@@_loop:NNn #1#2#3 { \quark_if_recursion_tail_stop:N #1 - \tl_const:cx + \tl_const:ce { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } { \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } } \@@_loop:NNn diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index 016c5579a1..8df534cc84 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -268,7 +268,7 @@ % \begin{function}[added = 2020-03-05] % { % \text_declare_purify_equivalent:Nn , -% \text_declare_purify_equivalent:Nx +% \text_declare_purify_equivalent:Ne % } % \begin{syntax} % \cs{text_declare_purify_equivalent:Nn} \meta{cmd} \Arg{replacement} @@ -673,7 +673,7 @@ \cs_new:Npn \@@_codepoint_process:nN #1#2 { #1 {#2} } } { - \cs_new:Npx \@@_codepoint_process:nN #1#2 + \cs_new:Npe \@@_codepoint_process:nN #1#2 { \exp_not:N \int_compare:nNnTF {`#2} > { "80 } { @@ -742,7 +742,7 @@ #2 {#3} \prg_return_true: \prg_return_false: } - \cs_new:Npx \@@_codepoint_from_chars:Nw #1 + \cs_new:Npe \@@_codepoint_from_chars:Nw #1 { \exp_not:N \if_int_compare:w `#1 > "80 \exp_not:N \exp_stop_f: \sys_if_engine_pdftex:TF @@ -817,7 +817,7 @@ % applied to \cs{cite}. % \begin{macrocode} \tl_new:N \l_text_case_exclude_arg_tl -\tl_set:Nx \l_text_case_exclude_arg_tl +\tl_set:Ne \l_text_case_exclude_arg_tl { \exp_not:n { \begin \cite \end \label \ref } \exp_not:c { cite ~ } @@ -1230,7 +1230,7 @@ % token. There is also the case of a straight \tn{@protected@testopt} to % cover. % \begin{macrocode} -\cs_new:Npx \@@_expand_cs:N #1 +\cs_new:Npe \@@_expand_cs:N #1 { \exp_not:N \str_if_eq:nnTF {#1} { \exp_not:N \protect } { \exp_not:N \@@_expand_protect:w } diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 385b3db8ac..9cadf04e87 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -233,7 +233,7 @@ % \begin{macrocode} \group_begin: \char_set_active_eq:NN \ \scan_stop: -\tl_const:Nx \c_@@_peek_catcodes_tl +\tl_const:Ne \c_@@_peek_catcodes_tl { \char_generate:nn { 32 } { 3 } 3 \char_generate:nn { 32 } { 4 } 4 @@ -773,7 +773,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_analysis_b:n #1 { - \__kernel_tl_gset:Nx \g_@@_analysis_result_tl + \__kernel_tl_gset:Ne \g_@@_analysis_result_tl { \@@_analysis_b_loop:w 0; #1 \prg_break_point: @@ -837,7 +837,7 @@ % in the input stream, and call \cs{@@_analysis_b_normals:ww} % with its first argument decremented. % \begin{macrocode} -\cs_new:Npx \@@_analysis_b_char:Nn #1#2 +\cs_new:Npe \@@_analysis_b_char:Nn #1#2 { \exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D \token_to_str:N D \exp_not:N \else: @@ -1004,9 +1004,9 @@ % as \cs{tl_show:N} by simply calling that function. % \begin{macrocode} \cs_new_protected:Npn \tl_analysis_show:N - { \@@_analysis_show:NNN \msg_show:nnxxxx \tl_show:N } + { \@@_analysis_show:NNN \msg_show:nneeee \tl_show:N } \cs_new_protected:Npn \tl_analysis_log:N - { \@@_analysis_show:NNN \msg_log:nnxxxx \tl_log:N } + { \@@_analysis_show:NNN \msg_log:nneeee \tl_log:N } \cs_new_protected:Npn \@@_analysis_show:NNN #1#2#3 { \tl_if_exist:NTF #3 @@ -1024,9 +1024,9 @@ % No existence test needed here. % \begin{macrocode} \cs_new_protected:Npn \tl_analysis_show:n - { \@@_analysis_show:Nn \msg_show:nnxxxx } + { \@@_analysis_show:Nn \msg_show:nneeee } \cs_new_protected:Npn \tl_analysis_log:n - { \@@_analysis_show:Nn \msg_log:nnxxxx } + { \@@_analysis_show:Nn \msg_log:nneeee } \cs_new_protected:Npn \@@_analysis_show:Nn #1#2 { \@@_analysis:n {#2} @@ -1234,7 +1234,7 @@ \cs_new_protected:Npn \@@_peek_analysis_loop:NNn #1#2#3 { \group_begin: - \tl_set:Nx \l_@@_peek_code_tl + \tl_set:Ne \l_@@_peek_code_tl { \exp_not:c { @@_analysis_map_ \int_use:N \g__kernel_prg_map_int :nnN } @@ -1266,8 +1266,8 @@ % \tn{outer} macros, hence the need for \cs{exp_after:wN} and % \cs{exp_not:N} in the code above, which allows the next function to % safely grab the token as an argument. We run some code that is -% expanded using the primitive \cs{cs_set_nopar:Npx} rather than -% \cs{tl_set:Nx} to avoid grabbing it as an argument as |#1| may be +% expanded using the primitive \cs{cs_set_nopar:Npe} rather than +% \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be % \tn{outer}. To allow~|#1| as an argument of the user's function % (stored in \cs{l_@@_peek_code_tl}), we set it equal to % \cs{scan_stop:}, but we do it at the last minute because |#1| @@ -1293,7 +1293,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_exp:N #1 { - \cs_set_nopar:Npx \l_@@_peek_code_tl + \cs_set_nopar:Npe \l_@@_peek_code_tl { \tex_let:D \exp_not:N #1 \scan_stop: \exp_not:o \l_@@_peek_code_tl @@ -1315,7 +1315,7 @@ } \l_@@_peek_code_tl } -\cs_new:Npx \@@_peek_analysis_exp_active:N #1 +\cs_new:Npe \@@_peek_analysis_exp_active:N #1 { { \exp_not:N \int_value:w `#1 } \token_to_str:N D } % \end{macrocode} % For normal non-expandable tokens we must distinguish characters @@ -1366,7 +1366,7 @@ % \begin{macrocode} \group_begin: \char_set_active_eq:NN \ \scan_stop: -\cs_new_protected:Npx \@@_peek_analysis_char:N #1 +\cs_new_protected:Npe \@@_peek_analysis_char:N #1 { \cs_set_eq:NN \char_generate:nn { 32 } { 13 } @@ -1374,7 +1374,7 @@ \tex_lccode:D `#1 = 32 \exp_stop_f: \tex_lowercase:D { - \tl_put_right:Nx \exp_not:N \l_@@_peek_code_tl + \tl_put_right:Ne \exp_not:N \l_@@_peek_code_tl { \exp_not:n { \@@_analysis_b_char:Nn \use_none:n } {#1} } } \exp_not:n @@ -1501,7 +1501,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_active_str:n #1 { - \tl_put_right:Nx \l_@@_peek_code_tl + \tl_put_right:Ne \l_@@_peek_code_tl { { \char_generate:nn { `#1 } { 13 } } { \int_value:w `#1 } @@ -1521,7 +1521,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_explicit:n #1 { - \tl_put_right:Nx \l_@@_peek_code_tl + \tl_put_right:Ne \l_@@_peek_code_tl { \if_meaning:w \l_peek_token \c_space_token { ~ } { 32 } \token_to_str:N A @@ -1601,7 +1601,7 @@ \cs_new_protected:Npn \@@_peek_analysis_collect_end:NNN #1#2#3 { #1 #2 - \tl_put_right:Nx \l_@@_peek_code_tl + \tl_put_right:Ne \l_@@_peek_code_tl { { \exp_not:N \exp_not:n { \exp_not:c { \l_@@_internal_a_tl } } } { -1 } @@ -1619,7 +1619,7 @@ % and its meaning are too long to fit in one line % of the terminal, the end is replaced by this token list. % \begin{macrocode} -\tl_const:Nx \c_@@_analysis_show_etc_str % ( +\tl_const:Ne \c_@@_analysis_show_etc_str % ( { \token_to_str:N \ETC.) } % \end{macrocode} % \end{variable} diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index 06226fd7ba..e606c3c558 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -97,7 +97,11 @@ % \meta{tl~var} is initially empty. % \end{function} % -% \begin{function}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx} +% \begin{function} +% { +% \tl_const:Nn, \tl_const:Ne, +% \tl_const:cn, \tl_const:ce +% } % \begin{syntax} % \cs{tl_const:Nn} \meta{tl~var} \Arg{token list} % \end{syntax} @@ -161,12 +165,12 @@ % % \begin{function} % { -% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, \tl_set:Nx, -% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, \tl_set:cx, +% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, +% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, % \tl_gset:Nn, \tl_gset:NV, \tl_gset:Nv, -% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, \tl_gset:Nx, +% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, % \tl_gset:cn, \tl_gset:cV, \tl_gset:cv, -% \tl_gset:co, \tl_gset:ce, \tl_gset:cf, \tl_gset:cx +% \tl_gset:co, \tl_gset:ce, \tl_gset:cf % } % \begin{syntax} % \cs{tl_set:Nn} \meta{tl~var} \Arg{tokens} @@ -177,10 +181,14 @@ % % \begin{function} % { -% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx, -% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx, -% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx, -% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx +% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:Ne, +% \tl_put_left:No, +% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:ce, +% \tl_put_left:co, +% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne, +% \tl_gput_left:No, +% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce +% \tl_gput_left:co % } % \begin{syntax} % \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens} @@ -191,10 +199,14 @@ % % \begin{function} % { -% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx, -% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx, -% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, \tl_gput_right:Nx, -% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, \tl_gput_right:cx +% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:Ne, +% \tl_put_right:No, +% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:ce, +% \tl_put_right:co, +% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne, +% \tl_gput_right:No, +% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce +% \tl_gput_right:co % } % \begin{syntax} % \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens} @@ -249,7 +261,7 @@ % contain and the category codes of those characters). Thus for example % \begin{verbatim} % \tl_set:Nn \l_tmpa_tl { abc } -% \tl_set:Nx \l_tmpb_tl { \tl_to_str:n { abc } } +% \tl_set:Ne \l_tmpb_tl { \tl_to_str:n { abc } } % \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl { true } { false } % \end{verbatim} % yields \texttt{false}. @@ -269,7 +281,10 @@ % \end{function} % % \begin{function}[TF] -% {\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx} +% { +% \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en, +% \tl_if_eq:ee +% } % \begin{syntax} % \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code} % \end{syntax} @@ -594,7 +609,11 @@ % \end{function} % % \begin{function}[added = 2011-07-09, updated = 2012-06-25, EXP] -% {\tl_trim_spaces:n, \tl_trim_spaces:o} +% { +% \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v, +% \tl_trim_spaces:e, +% \tl_trim_spaces:o +% } % \begin{syntax} % \cs{tl_trim_spaces:n} \Arg{token list} % \end{syntax} @@ -646,7 +665,7 @@ % \end{texnote} % \end{function} % -% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:x} +% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:e} % \begin{syntax} % \cs{tl_show:n} \Arg{token list} % \end{syntax} @@ -665,7 +684,8 @@ % \cs{tl_show:N} which displays the result in the terminal. % \end{function} % -% \begin{function}[added = 2014-08-22, updated = 2015-08-07]{\tl_log:n, \tl_log:x} +% \begin{function}[added = 2014-08-22, updated = 2015-08-07] +% {\tl_log:n, \tl_log:e, \tl_log:x} % \begin{syntax} % \cs{tl_log:n} \Arg{token list} % \end{syntax} @@ -997,17 +1017,17 @@ % \end{verbatim} % Here are some more interesting examples. The calls % \begin{verbatim} -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } } +% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } } +% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } } +% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } } +% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } } % \end{verbatim} % are all equivalent and will print |bcd{e{}}| on the terminal; similarly % \begin{verbatim} -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } } +% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } } +% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } } +% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } } +% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } } % \end{verbatim} % are all equivalent and will print |bcd {e{}}| on the % terminal (note the space in the middle). To the contrary, @@ -1074,13 +1094,13 @@ % \begin{function}[updated = 2011-08-11] % { % \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV, -% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx, +% \tl_replace_once:Nen, \tl_replace_once:Nne, \tl_replace_once:Nee, % \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV, -% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx, -% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV, -% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx, +% \tl_replace_once:cen, \tl_replace_once:cne, \tl_replace_once:cee, +% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV, +% \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee, % \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV, -% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx +% \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee % } % \begin{syntax} % \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens} @@ -1094,14 +1114,14 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, -% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx, -% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, -% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx, -% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:cnV, -% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx, -% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, -% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx +% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, +% \tl_replace_all:Nen, \tl_replace_all:Nne, \tl_replace_all:Nee, +% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, +% \tl_replace_all:cen, \tl_replace_all:cne, \tl_replace_all:cee, +% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV, +% \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee, +% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, +% \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee % } % \begin{syntax} % \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens} @@ -1119,10 +1139,10 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx, -% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx, -% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx -% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx +% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne, +% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce, +% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Ne, +% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:ce % } % \begin{syntax} % \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens} @@ -1135,10 +1155,10 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx, -% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx, -% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx -% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx +% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Ne, +% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:ce, +% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne, +% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce, % } % \begin{syntax} % \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens} @@ -1169,10 +1189,14 @@ % % \begin{function}[updated = 2015-08-11] % { -% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, -% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx, -% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, -% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx +% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nne, +% \tl_set_rescan:Nno, +% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cne, +% \tl_set_rescan:cno, +% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne, +% \tl_gset_rescan:Nno, +% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne, +% \tl_gset_rescan:cno, % } % \begin{syntax} % \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens} @@ -1300,12 +1324,12 @@ % % \subsection{Functions} % -% \begin{macro}{\__kernel_tl_set:Nx,\__kernel_tl_gset:Nx} +% \begin{macro}{\__kernel_tl_set:Ne,\__kernel_tl_gset:Ne} % These two are supplied to get better performance for macros which would -% otherwise use \cs{tl_set:Nx} or \cs{tl_gset:Nx} internally. +% otherwise use \cs{tl_set:Ne} or \cs{tl_gset:Ne} internally. % \begin{macrocode} -\cs_new_eq:NN \__kernel_tl_set:Nx \cs_set_nopar:Npx -\cs_new_eq:NN \__kernel_tl_gset:Nx \cs_gset_nopar:Npx +\cs_new_eq:NN \__kernel_tl_set:Ne \cs_set_nopar:Npe +\cs_new_eq:NN \__kernel_tl_gset:Ne \cs_gset_nopar:Npe % \end{macrocode} % \end{macro} % @@ -1322,23 +1346,22 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx} -% Constants are also easy to generate. They use \cs{cs_gset_nopar:Npx} instead -% of \cs{__kernel_tl_gset:Nx} so that the correct scope checking is applied if +% \begin{macro} +% { +% \tl_const:Nn, \tl_const:Ne, \tl_const:Nx, +% \tl_const:cn, \tl_const:ce, \tl_const:cx +% } +% Constants are also easy to generate. They use \cs{cs_gset_nopar:Npe} instead +% of \cs{__kernel_tl_gset:Ne} so that the correct scope checking is applied if % \pkg{l3debug} is used. % \begin{macrocode} \cs_new_protected:Npn \tl_const:Nn #1#2 { \__kernel_chk_if_free_cs:N #1 - \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } - } -\cs_new_protected:Npn \tl_const:Nx #1#2 - { - \__kernel_chk_if_free_cs:N #1 - \cs_gset_nopar:Npx #1 {#2} + \cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} } } -\cs_generate_variant:Nn \tl_const:Nn { c } -\cs_generate_variant:Nn \tl_const:Nx { c } +\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce } +\cs_generate_variant:Nn \tl_const:Nn { Nx , cx } % \end{macrocode} % \end{macro} % @@ -1396,7 +1419,7 @@ % \begin{macrocode} \cs_new_protected:Npn \tl_concat:NNN #1#2#3 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} \__kernel_exp_not:w \exp_after:wN {#3} @@ -1404,7 +1427,7 @@ } \cs_new_protected:Npn \tl_gconcat:NNN #1#2#3 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} \__kernel_exp_not:w \exp_after:wN {#3} @@ -1439,7 +1462,7 @@ % \begin{macrocode} \group_begin: \tex_catcode:D `- = 11 ~ -\tl_const:Nx \c_novalue_tl { - NoValue \token_to_str:N - } +\tl_const:Ne \c_novalue_tl { - NoValue \token_to_str:N - } \group_end: % \end{macrocode} % \end{variable} @@ -1471,173 +1494,203 @@ % by hand as it is used quite a lot. % \begin{macrocode} \cs_new_protected:Npn \tl_set:Nn #1#2 - { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w {#2} } } + { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w {#2} } } \cs_new_protected:Npn \tl_set:No #1#2 - { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } } -\cs_new_protected:Npn \tl_set:Nx #1#2 - { \__kernel_tl_set:Nx #1 {#2} } + { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } } \cs_new_protected:Npn \tl_gset:Nn #1#2 - { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w {#2} } } + { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w {#2} } } \cs_new_protected:Npn \tl_gset:No #1#2 - { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } } -\cs_new_protected:Npn \tl_gset:Nx #1#2 - { \__kernel_tl_gset:Nx #1 {#2} } + { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } } \cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Ne , Nf } \cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , ce , cf } -\cs_generate_variant:Nn \tl_set:Nx { c } \cs_generate_variant:Nn \tl_set:No { c } +\cs_generate_variant:Nn \tl_set:Nn { Nx , cx } \cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Ne , Nf } \cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf } -\cs_generate_variant:Nn \tl_gset:Nx { c } \cs_generate_variant:Nn \tl_gset:No { c } +\cs_generate_variant:Nn \tl_gset:Nn { Nx , cx } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx, -% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx +% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:Ne, +% \tl_put_left:No, \tl_put_left:Nx, +% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:ce, +% \tl_put_left:co, \tl_put_left:cx % } % \begin{macro} % { -% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx, -% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx +% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne, +% \tl_gput_left:No, \tl_gput_left:Nx, +% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce, +% \tl_gput_left:co, \tl_gput_left:cx % } % Adding to the left is done directly to gain a little performance. % \begin{macrocode} \cs_new_protected:Npn \tl_put_left:Nn #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_new_protected:Npn \tl_put_left:NV #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_new_protected:Npn \tl_put_left:Nv #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } +\cs_new_protected:Npn \tl_put_left:Ne #1#2 + { + \__kernel_tl_set:Ne #1 + { + \__kernel_exp_not:w \tex_expanded:D { {#2} } + \__kernel_exp_not:w \exp_after:wN {#1} + } + } \cs_new_protected:Npn \tl_put_left:No #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } -\cs_new_protected:Npn \tl_put_left:Nx #1#2 - { \__kernel_tl_set:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_new_protected:Npn \tl_gput_left:Nn #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_new_protected:Npn \tl_gput_left:NV #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_new_protected:Npn \tl_gput_left:Nv #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } +\cs_new_protected:Npn \tl_gput_left:Ne #1#2 + { + \__kernel_tl_gset:Ne #1 + { + \__kernel_exp_not:w \tex_expanded:D { {#2} } + \__kernel_exp_not:w \exp_after:wN {#1} + } + } \cs_new_protected:Npn \tl_gput_left:No #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} \__kernel_exp_not:w \exp_after:wN {#1} } } -\cs_new_protected:Npn \tl_gput_left:Nx #1#2 - { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_generate_variant:Nn \tl_put_left:Nn { c } \cs_generate_variant:Nn \tl_put_left:NV { c } \cs_generate_variant:Nn \tl_put_left:Nv { c } +\cs_generate_variant:Nn \tl_put_left:Ne { c } \cs_generate_variant:Nn \tl_put_left:No { c } -\cs_generate_variant:Nn \tl_put_left:Nx { c } +\cs_generate_variant:Nn \tl_put_left:Nn { Nx, cx } \cs_generate_variant:Nn \tl_gput_left:Nn { c } \cs_generate_variant:Nn \tl_gput_left:NV { c } -\cs_generate_variant:Nn \tl_gput_left:NV { c } +\cs_generate_variant:Nn \tl_gput_left:Nv { c } +\cs_generate_variant:Nn \tl_gput_left:Ne { c } \cs_generate_variant:Nn \tl_gput_left:No { c } -\cs_generate_variant:Nn \tl_gput_left:Nx { c } +\cs_generate_variant:Nn \tl_gput_left:Nn { Nx , cx } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx, -% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx +% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:Ne, +% \tl_put_right:No, \tl_put_right:Nx, +% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:ce, +% \tl_put_right:co, \tl_put_right:cx % } % \begin{macro} % { -% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, -% \tl_gput_right:Nx, -% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, -% \tl_gput_right:cx +% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne, +% \tl_gput_right:No, \tl_gput_right:Nx, +% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce, +% \tl_gput_right:co, \tl_gput_right:cx % } % The same on the right. % \begin{macrocode} \cs_new_protected:Npn \tl_put_right:Nn #1#2 - { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } } + { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } } \cs_new_protected:Npn \tl_put_right:NV #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 } } \cs_new_protected:Npn \tl_put_right:Nv #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} } } +\cs_new_protected:Npn \tl_put_right:Ne #1#2 + { + \__kernel_tl_set:Ne #1 + { + \__kernel_exp_not:w \exp_after:wN {#1} + \__kernel_exp_not:w \tex_expanded:D { {#2} } + } + } \cs_new_protected:Npn \tl_put_right:No #1#2 { - \__kernel_tl_set:Nx #1 + \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \__kernel_exp_not:w \exp_after:wN {#2} } } -\cs_new_protected:Npn \tl_put_right:Nx #1#2 - { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } } \cs_new_protected:Npn \tl_gput_right:Nn #1#2 - { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } } + { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } } \cs_new_protected:Npn \tl_gput_right:NV #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 } } \cs_new_protected:Npn \tl_gput_right:Nv #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} } } +\cs_new_protected:Npn \tl_gput_right:Ne #1#2 + { + \__kernel_tl_gset:Ne #1 + { + \__kernel_exp_not:w \exp_after:wN {#1} + \__kernel_exp_not:w \tex_expanded:D { {#2} } + } + } \cs_new_protected:Npn \tl_gput_right:No #1#2 { - \__kernel_tl_gset:Nx #1 + \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#1} \__kernel_exp_not:w \exp_after:wN {#2} } } -\cs_new_protected:Npn \tl_gput_right:Nx #1#2 - { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } } \cs_generate_variant:Nn \tl_put_right:Nn { c } \cs_generate_variant:Nn \tl_put_right:NV { c } \cs_generate_variant:Nn \tl_put_right:Nv { c } +\cs_generate_variant:Nn \tl_put_right:Ne { c } \cs_generate_variant:Nn \tl_put_right:No { c } -\cs_generate_variant:Nn \tl_put_right:Nx { c } +\cs_generate_variant:Nn \tl_put_right:Nn { Nx , cx } \cs_generate_variant:Nn \tl_gput_right:Nn { c } \cs_generate_variant:Nn \tl_gput_right:NV { c } \cs_generate_variant:Nn \tl_gput_right:Nv { c } +\cs_generate_variant:Nn \tl_gput_right:Ne { c } \cs_generate_variant:Nn \tl_gput_right:No { c } -\cs_generate_variant:Nn \tl_gput_right:Nx { c } +\cs_generate_variant:Nn \tl_gput_right:Nn { Nx, cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1679,19 +1732,23 @@ % codes: it cannot appear in the tokens being rescanned since all % colons have the same category code. % \begin{macrocode} -\tl_const:Nx \c_@@_rescan_marker_tl { : \token_to_str:N : } +\tl_const:Ne \c_@@_rescan_marker_tl { : \token_to_str:N : } % \end{macrocode} % \end{variable} % % \begin{macro} % { -% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, -% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx +% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nne, +% \tl_set_rescan:Nno, \tl_set_rescan:Nnx, +% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cne, +% \tl_set_rescan:cno, \tl_set_rescan:cnx, % } % \begin{macro} % { -% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, -% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx +% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne, +% \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, +% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne, +% \tl_gset_rescan:cno, \tl_gset_rescan:cnx % } % \begin{macro}{\tl_rescan:nn, \tl_rescan:nV} % \begin{macro}{\@@_rescan_aux:} @@ -1790,10 +1847,10 @@ \group_end: #1 #2 {#3} } -\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV , Nno , Nnx } -\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cnV , cno , cnx } -\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nno , Nnx } -\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV , Nne , c , cnV , cne } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno , Nnx , cno , cnx } +\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nne , c , cnV , cne } +\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx , cno , cnx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1913,59 +1970,75 @@ % % \begin{macro} % { -% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, -% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx, -% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, -% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx +% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV, +% \tl_replace_once:Nen, \tl_replace_once:Nne, \tl_replace_once:Nee, +% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx, +% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV, +% \tl_replace_once:cen, \tl_replace_once:cne, \tl_replace_once:cee, +% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx % } % \begin{macro} % { -% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV, -% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx, -% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, -% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx +% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV, +% \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee, +% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx, +% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV, +% \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee, +% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx % } % \begin{macro} % { -% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV, -% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx, -% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV, -% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx +% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, +% \tl_replace_all:Nen, \tl_replace_all:Nne, \tl_replace_all:Nee, +% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx, +% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, +% \tl_replace_all:cen, \tl_replace_all:cne, \tl_replace_all:cee, +% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx % } % \begin{macro} % { -% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_replace_once:NnV, -% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx, -% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_replace_once:cnV, -% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx +% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV, +% \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee, +% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx, +% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, +% \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee, +% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx % } % All of the \texttt{replace} functions call \cs{@@_replace:NnNNNnn} % with appropriate arguments. The first two arguments are explained % later. The next controls whether the replacement function calls % itself (\cs{@@_replace_next:w}) or stops (\cs{@@_replace_wrap:w}) -% after the first replacement. Next comes an \texttt{x}-type -% assignment function \cs{tl_set:Nx} or \cs{tl_gset:Nx} for local or +% after the first replacement. Next comes an \texttt{e}-type +% assignment function \cs{tl_set:Ne} or \cs{tl_gset:Ne} for local or % global replacements. Finally, the three arguments \meta{tl~var} % \Arg{pattern} \Arg{replacement} provided by the user. When % describing the auxiliary functions below, we denote the contents of % the \meta{tl~var} by \meta{token list}. % \begin{macrocode} \cs_new_protected:Npn \tl_replace_once:Nnn - { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Nx } + { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Ne } \cs_new_protected:Npn \tl_greplace_once:Nnn - { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Nx } + { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Ne } \cs_new_protected:Npn \tl_replace_all:Nnn - { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx } + { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Ne } \cs_new_protected:Npn \tl_greplace_all:Nnn - { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx } + { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Ne } +\cs_generate_variant:Nn \tl_replace_once:Nnn + { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee } \cs_generate_variant:Nn \tl_replace_once:Nnn - { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } + { Nx , Nnx , Nxx , cxn , cnx , cxx } \cs_generate_variant:Nn \tl_greplace_once:Nnn - { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } + { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee } +\cs_generate_variant:Nn \tl_greplace_once:Nnn + { Nx , Nnx , Nxx , cxn , cnx , cxx } +\cs_generate_variant:Nn \tl_replace_all:Nnn + { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee } \cs_generate_variant:Nn \tl_replace_all:Nnn - { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } + { Nx , Nnx , Nxx , cxn , cnx , cxx } \cs_generate_variant:Nn \tl_greplace_all:Nnn - { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } + { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee } +\cs_generate_variant:Nn \tl_greplace_all:Nnn + { Nx , Nnx , Nxx , cxn , cnx , cxx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2046,7 +2119,7 @@ { \tl_if_empty:nTF {#6} { - \msg_error:nnx { kernel } { empty-search-pattern } + \msg_error:nne { kernel } { empty-search-pattern } { \tl_to_str:n {#7} } } { @@ -2124,7 +2197,7 @@ \group_align_safe_begin: \cs_set:Npn \@@_replace_wrap:w ##1 #1 ##2 { \__kernel_exp_not:w \exp_after:wN { \use_none:nn ##1 } ##2 } - \cs_set:Npx \@@_replace_next:w ##1 #5 + \cs_set:Npe \@@_replace_next:w ##1 #5 { \exp_not:N \@@_replace_wrap:w ##1 \exp_not:n { #1 } @@ -2152,13 +2225,13 @@ % % \begin{macro} % { -% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx, -% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx +% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne, +% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce % } % \begin{macro} % { -% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx, -% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx +% \tl_gremove_once:Nn, \tl_gremove_once:NV, +% \tl_gremove_once:cn, \tl_gremove_once:cV, % } % Removal is just a special case of replacement. % \begin{macrocode} @@ -2166,21 +2239,25 @@ { \tl_replace_once:Nnn #1 {#2} { } } \cs_new_protected:Npn \tl_gremove_once:Nn #1#2 { \tl_greplace_once:Nnn #1 {#2} { } } -\cs_generate_variant:Nn \tl_remove_once:Nn { NV , Nx , c , cV , cx } -\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \tl_remove_once:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Ne , c , cV , ce } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx, -% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx +% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Ne, +% \tl_remove_all:Nx, +% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:ce, +% \tl_remove_all:cx, % } % \begin{macro} % { -% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx, -% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx +% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne, +% \tl_gremove_all:Nx, +% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce, +% \tl_gremove_all:cx, % } % Removal is just a special case of replacement. % \begin{macrocode} @@ -2188,8 +2265,10 @@ { \tl_replace_all:Nnn #1 {#2} { } } \cs_new_protected:Npn \tl_gremove_all:Nn #1#2 { \tl_greplace_all:Nnn #1 {#2} { } } -\cs_generate_variant:Nn \tl_remove_all:Nn { NV , Nx , c , cV , cx } -\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \tl_remove_all:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , cx } +\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2328,7 +2407,12 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx} +% \begin{macro}[TF] +% { +% \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en, +% \tl_if_eq:ee, +% \tl_if_eq:xn, \tl_if_eq:nx, \tl_if_eq:xx, +% } % A simple store and compare routine. % \begin{macrocode} \prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF } @@ -2344,7 +2428,9 @@ \prg_return_false: \fi: } -\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F } +\prg_generate_conditional_variant:Nnn \tl_if_eq:nn + { nV , ne , nx , e , ee , x , xx } + { TF , T , F } % \end{macrocode} % \end{macro} % @@ -2423,13 +2509,14 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP,pTF]{\tl_if_single:N} +% \begin{macro}[EXP,pTF]{\tl_if_single:N, \tl_if_single:c} % Expand the token list and feed it to \cs{tl_if_single:nTF}. % \begin{macrocode} \cs_new:Npn \tl_if_single_p:N { \exp_args:No \tl_if_single_p:n } \cs_new:Npn \tl_if_single:NT { \exp_args:No \tl_if_single:nT } \cs_new:Npn \tl_if_single:NF { \exp_args:No \tl_if_single:nF } \cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF } +\prg_generate_conditional_variant:Nnn \tl_if_single:N {c} { p , T , F , TF } % \end{macrocode} % \end{macro} % @@ -2751,7 +2838,12 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\tl_trim_spaces:n, \tl_trim_spaces:o} +% \begin{macro} +% { +% \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v, +% \tl_trim_spaces:e, +% \tl_trim_spaces:o, +% } % \begin{macro}{\tl_trim_spaces_apply:nN, \tl_trim_spaces_apply:oN} % \begin{macro} % { @@ -2774,14 +2866,14 @@ { \@@_trim_mark: #1 } { \__kernel_exp_not:w \exp_after:wN } } -\cs_generate_variant:Nn \tl_trim_spaces:n { o } +\cs_generate_variant:Nn \tl_trim_spaces:n { V , v , e , o } \cs_new:Npn \tl_trim_spaces_apply:nN #1#2 { \@@_trim_spaces:nn { \@@_trim_mark: #1 } { \exp_args:No #2 } } \cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o } \cs_new_protected:Npn \tl_trim_spaces:N #1 - { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } } + { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } } \cs_new_protected:Npn \tl_gtrim_spaces:N #1 - { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } } + { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } } \cs_generate_variant:Nn \tl_trim_spaces:N { c } \cs_generate_variant:Nn \tl_gtrim_spaces:N { c } % \end{macrocode} @@ -3237,7 +3329,7 @@ % or with a space, making sure that % \cs{@@_act_space:wwNNN} gobbles the space. % \begin{macrocode} -\exp_args:Nnx \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop } +\exp_args:Nne \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop } { \exp_not:o { \@@_act_if_head_is_space:nTF {#1} } \exp_not:N \@@_act_space:wwNNN @@ -3346,9 +3438,9 @@ % which stops the \texttt{f}-expansion. % \begin{macrocode} \cs_new_protected:Npn \tl_reverse:N #1 - { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } } + { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } } \cs_new_protected:Npn \tl_greverse:N #1 - { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } } + { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } } \cs_generate_variant:Nn \tl_reverse:N { c } \cs_generate_variant:Nn \tl_greverse:N { c } % \end{macrocode} @@ -3563,7 +3655,7 @@ { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} } } { - \msg_error:nnxxx { kernel } { bad-type } + \msg_error:nneee { kernel } { bad-type } { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl } } } @@ -3571,7 +3663,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\tl_show:n, \tl_show:x, \@@_show:n} +% \begin{macro}{\tl_show:n, \tl_show:e, \tl_show:x, \@@_show:n} % \begin{macro}[EXP]{\@@_show:w} % Many |show| functions are based on \cs{tl_show:n}. % The argument of \cs{tl_show:n} is line-wrapped using @@ -3591,7 +3683,7 @@ % \begin{macrocode} \cs_new_protected:Npn \tl_show:n #1 { \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \@@_show:n } -\cs_generate_variant:Nn \tl_show:n { x } +\cs_generate_variant:Nn \tl_show:n { e , x } \cs_new_protected:Npn \@@_show:n #1 { \tl_set:Nf \l_@@_internal_a_tl { \@@_show:w #1 \s_@@_stop } @@ -3609,13 +3701,13 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\tl_log:n, \tl_log:x} +% \begin{macro}{\tl_log:n, \tl_log:e, \tl_log:x} % Logging is much easier, simply line-wrap. The |>~| and trailing % period is there to match the output of \cs{tl_show:n}. % \begin{macrocode} \cs_new_protected:Npn \tl_log:n #1 { \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n } -\cs_generate_variant:Nn \tl_log:n { x } +\cs_generate_variant:Nn \tl_log:n { e , x } % \end{macrocode} % \end{macro} % @@ -3635,17 +3727,17 @@ \exp_args:Nf \tl_if_empty:nTF { \cs_prefix_spec:N #1 \cs_parameter_spec:N #1 } { - \tl_set:Nx \l_@@_internal_a_tl {#3} + \tl_set:Ne \l_@@_internal_a_tl {#3} \tl_if_eq:NNTF #1 \l_@@_internal_a_tl {#4} { - \msg_error:nnxxxx { kernel } { bad-type } + \msg_error:nneeee { kernel } { bad-type } { \token_to_str:N #1 } { \tl_to_str:N #1 } {#2} { \tl_to_str:N \l_@@_internal_a_tl } } } { - \msg_error:nnxxx { kernel } { bad-type } + \msg_error:nneee { kernel } { bad-type } { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2} } } diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index ce274f9583..aedde78098 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -1490,7 +1490,7 @@ \char_set_lccode:nn { `\^^@ } { ##1 } \tex_lowercase:D { \group_end: #2 ^^@ } } - \cs_new_protected:cpx { #1 :NN } ##1 + \cs_new_protected:cpe { #1 :NN } ##1 { \exp_not:c { #1 : nN } { `##1 } } } \@@_tmp:nN { char_set_active_eq } \cs_set_eq:NN @@ -1614,7 +1614,7 @@ \char_set_catcode_math_superscript:n { 0 } \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: } \char_set_catcode_parameter:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { ^^@^^@ \exp_not:N \or: } + \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: } \tl_put_right:Nn \l_@@_tmp_tl { { \if_false: } \fi: \exp_not:N \or: } \char_set_catcode_alignment:n { 0 } \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: } @@ -1627,16 +1627,16 @@ % \end{macrocode} % Convert the above temporary list into a series of constant token % lists, one for each character code, using \cs{tex_lowercase:D} to -% convert |^^@| in each case. The \texttt{x}-type expansion ensures +% convert |^^@| in each case. The \texttt{e}-type expansion ensures % that \cs{tex_lowercase:D} receives the contents of the token list. % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:n #1 { \char_set_lccode:nn { 0 } {#1} \char_set_lccode:nn { 32 } {#1} - \exp_args:Nx \tex_lowercase:D + \exp_args:Ne \tex_lowercase:D { - \tl_const:Nx + \tl_const:Ne \exp_not:c { c_@@_ \@@_int_to_roman:w #1 _tl } { \exp_not:o \l_@@_tmp_tl } } @@ -1848,7 +1848,7 @@ % \begin{macro}{\c_catcode_other_space_tl} % Create a space with category code $12$: an \enquote{other} space. % \begin{macrocode} -\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } +\tl_const:Ne \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } % \end{macrocode} % \end{macro} % @@ -2127,17 +2127,17 @@ % detokenized. % % \begin{macrocode} -\use:x +\use:e { - \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N ##1 + \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N #1 { p , T , F , TF } { \exp_not:N \exp_after:wN \exp_not:N \@@_if_macro_p:w - \exp_not:N \token_to_meaning:N ##1 \tl_to_str:n { ma : } + \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma : } \s_@@_stop } \cs_new:Npn \exp_not:N \@@_if_macro_p:w - ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \s_@@_stop + #1 \tl_to_str:n { ma } #2 \c_colon_str #3 \s_@@_stop } { \str_if_eq:nnTF { #2 } { cro } @@ -2208,11 +2208,11 @@ \group_begin: \cs_set_protected:Npn \@@_tmp:w #1 { - \use:x + \use:e { \cs_new:Npn \exp_not:c { @@_delimit_by_ #1 :w } - ####1 \tl_to_str:n {#1} ####2 \s_@@_stop - { ####1 \tl_to_str:n {#1} } + ##1 \tl_to_str:n {#1} ##2 \s_@@_stop + { ##1 \tl_to_str:n {#1} } } } \@@_tmp:w { char" } @@ -2283,17 +2283,17 @@ \group_begin: \cs_set_protected:Npn \@@_tmp:w #1#2#3 { - \use:x + \use:e { - \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ####1 + \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ##1 { p , T , F , TF } { \cs_if_exist:cT { tex_ #2 :D } { - \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 :D } + \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 :D } \exp_not:N \prg_return_false: \exp_not:N \else: - \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 def:D } + \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 def:D } \exp_not:N \prg_return_false: \exp_not:N \else: } @@ -2301,7 +2301,7 @@ { \exp_not:N \exp_after:wN \exp_not:c { @@_delimit_by_ #2 :w } - \exp_not:N \token_to_meaning:N ####1 + \exp_not:N \token_to_meaning:N ##1 ? \tl_to_str:n {#2} \s_@@_stop } { \exp_not:n {#3} } @@ -2464,26 +2464,26 @@ end } { \tex_chardef:D \c_@@_A_int = `A ~ % - \use:x + \use:e { - \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1 + \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1 { p , T , F , TF } { - \exp_not:N \token_if_macro:NTF ##1 + \exp_not:N \token_if_macro:NTF #1 \exp_not:N \prg_return_false: { \exp_not:N \exp_after:wN \exp_not:N \@@_if_primitive:NNw - \exp_not:N \token_to_meaning:N ##1 - \tl_to_str:n { : : : } \s_@@_stop ##1 + \exp_not:N \token_to_meaning:N #1 + \tl_to_str:n { : : : } \s_@@_stop #1 } } \cs_new:Npn \exp_not:N \@@_if_primitive:NNw - ##1##2 ##3 \c_colon_str ##4 \s_@@_stop + #1#2 #3 \c_colon_str #4 \s_@@_stop { \exp_not:N \tl_if_empty:oTF - { \exp_not:N \@@_if_primitive_space:w ##3 ~ } + { \exp_not:N \@@_if_primitive_space:w #3 ~ } { - \exp_not:N \@@_if_primitive_loop:N ##3 + \exp_not:N \@@_if_primitive_loop:N #3 \c_colon_str \s_@@_stop } { \exp_not:N \@@_if_primitive_nullfont:N } @@ -2694,7 +2694,7 @@ end % \begin{macrocode} \cs_new_protected:Npn \peek_remove_spaces:n #1 { - \cs_set:Npx \@@_false:w { \exp_not:n {#1} } + \cs_set:Npe \@@_false:w { \exp_not:n {#1} } \group_align_safe_begin: \cs_set:Npn \@@_true_aux:w { \peek_after:Nw \@@_remove_spaces: } \@@_true_aux:w @@ -2723,7 +2723,7 @@ end \cs_new_protected:Npn \peek_remove_filler:n #1 { \cs_set:Npn \@@_true_aux:w { \@@_remove_filler:w } - \cs_set:Npx \@@_false:w + \cs_set:Npe \@@_false:w { \exp_not:N \group_align_safe_end: \exp_not:n {#1} @@ -2786,13 +2786,13 @@ end \group_align_safe_begin: \cs_set_eq:NN \l_@@_search_token #3 \tl_set:Nn \l_@@_search_tl {#3} - \cs_set:Npx \@@_true_aux:w + \cs_set:Npe \@@_true_aux:w { \exp_not:N \group_align_safe_end: \exp_not:n {#4} } \cs_set_eq:NN \@@_true:w #1 - \cs_set:Npx \@@_false:w + \cs_set:Npe \@@_false:w { \exp_not:N \group_align_safe_end: \exp_not:n {#5} @@ -2928,7 +2928,7 @@ end { \tl_map_inline:nn { { TF } { T } { F } } { - \cs_new_protected:cpx { peek_ #1 ##1 :N ####1 } + \cs_new_protected:cpe { peek_ #1 ##1 :N ####1 } { \exp_not:c { @@_token ##1 _generic:NN ####1 } \exp_not:c { @@_execute_branches_ #1 : } diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index f79fc63e5a..2161e0963e 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -549,7 +549,7 @@ } \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop { - \tl_const:cx + \tl_const:ce { c_@@_nfd_ \codepoint_str_generate:n {"#1} _tl } { {"#2} @@ -607,11 +607,11 @@ \@@_add:nn { lowercase } {#5} \int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} } { - \tl_const:cx + \tl_const:ce { c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl } { {"#6} { } { } } } - \tl_set:Nx \l_@@_next_codepoint_fint_tl + \tl_set:Ne \l_@@_next_codepoint_fint_tl { \int_eval:n { "#1 + 1 } } } \cs_set_protected:Npn \@@_add:nn #1#2 @@ -626,7 +626,7 @@ % The general category for unassigned characters is \texttt{Cn}, so we % find the correct value once and then use that. % \begin{macrocode} - \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop + \cs_set_protected:Npe \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop { \exp_not:N \tl_if_blank:nTF {#6} { @@ -679,7 +679,7 @@ \int_compare:nNnF { \int_div_truncate:nn { #2 - #1 } \c_@@_block_size_int } = 0 { - \tl_set:cx { l_@@_ #3 _block_clist } + \tl_set:ce { l_@@_ #3 _block_clist } { \exp_args:NNe \use:nn \use_none:n { \prg_replicate:nn { \c_@@_block_size_int } { , #4 } } @@ -689,7 +689,7 @@ } \prg_replicate:nn { \int_mod:nn { #2 - #1 } \c_@@_block_size_int } - { \clist_put_right:cx { l_@@_ #3 _block_clist } {#4} } + { \clist_put_right:ce { l_@@_ #3 _block_clist } {#4} } } % \end{macrocode} % To allow rapid comparison, each completed block is stored locally as a @@ -716,12 +716,12 @@ \tl_use:c { l_@@_ #1 _block_tl } _clist } { l_@@_ #1 _block_clist } - \tl_set:cx { l_@@_ #1 _block_tl } + \tl_set:ce { l_@@_ #1 _block_tl } { \int_eval:n { \tl_use:c { l_@@_ #1 _block_tl } + 1 } } } \prg_replicate:nn {#2} { - \tl_set:cx { l_@@_ #1 _pos_tl } + \tl_set:ce { l_@@_ #1 _pos_tl } { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } } \exp_args:Nc \__kernel_intarray_gset:Nnn { g_@@_ #1 _index_intarray } @@ -846,7 +846,7 @@ \reverse_if:N \if_int_compare:w \int_eval:n { \__kernel_codepoint_data:nn { lowercase } {"#1} + "#1 } = "#3 ~ - \tl_const:cx + \tl_const:ce { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl } { {"#3} { } { } } \fi: @@ -862,7 +862,7 @@ % \begin{macrocode} \cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop { - \tl_const:cx { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl } + \tl_const:ce { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl } { {"#2} {"#3} @@ -895,7 +895,7 @@ { \tl_if_empty:nF {#4} { - \tl_const:cx { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl } + \tl_const:ce { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl } { {"#3} {"#4} @@ -994,7 +994,7 @@ { \str_if_empty:NF \l_@@_tmpb_str { - \clist_const:cx { c_@@_grapheme_ \l_@@_tmpb_str _clist } + \clist_const:ce { c_@@_grapheme_ \l_@@_tmpb_str _clist } { \exp_after:wN \use_none:n \l_@@_tmpa_str } \cs_set_nopar:Npn \l_@@_tmpa_str { } } @@ -1004,7 +1004,7 @@ } \cs_set_protected:Npn \@@_data_auxii:w #1 .. #2 .. #3 \q_stop { - \cs_set_nopar:Npx \l_@@_tmpa_str + \cs_set_nopar:Npe \l_@@_tmpa_str { \l_@@_tmpa_str , \tl_trim_spaces:n {#1} .. \tl_trim_spaces:n {#2} diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf Binary files differindex 458c832be3..a89fb20da4 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index ee6efdcc7a..bd89e29524 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -40,6 +40,10 @@ for those people who are interested. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[kernel]{l3doc} + +\newif\ifinterface +\interfacefalse + \listfiles \begin{document} @@ -53,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-08-29} +\date{Released 2023-10-10} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex index cddbdac6e2..34573d3d64 100644 --- a/macros/latex/contrib/l3kernel/source3body.tex +++ b/macros/latex/contrib/l3kernel/source3body.tex @@ -44,8 +44,16 @@ for those people who are interested. \setlength\parskip{\baselineskip} \noindent +\ifinterface This is the reference documentation for the \pkg{expl3} -programming environment. The \pkg{expl3} modules set up an experimental +programming environment; see the matching \pkg{source3} PDF +for the typeset sources. +\else +This is the typset sources for the \pkg{expl3} +programming environment; see the matching \pkg{interface3} PDF +for the API reference manual. +\fi +The \pkg{expl3} modules set up a naming scheme for \LaTeX{} commands, which allow the \LaTeX{} programmer to systematically name functions and variables, and specify the argument types of functions. |