diff options
author | Karl Berry <karl@freefriends.org> | 2023-11-01 20:15:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-11-01 20:15:10 +0000 |
commit | 7888ea6606132ba347b147f1d3d3e02122e607cc (patch) | |
tree | 1e8d4ec81a3f49287a9d605eac72467ad4f1b6d7 /Master/texmf-dist/source/latex/l3kernel | |
parent | a776d572cfd8fa24365dbc0cc22bbd856fbbe97b (diff) |
latex3 (1nov23)
git-svn-id: svn://tug.org/texlive/trunk@68721 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel')
62 files changed, 827 insertions, 617 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 09e21e47109..bf5bc9e46f4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2023-10-23}% +\def\ExplFileDate{2023-11-01}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -958,6 +958,16 @@ % loadable: package loading is dependent on the \LaTeXe{} package-management % mechanism. % +% \section{Getting the version of \pkg{expl3}} +% +% \begin{function}{\ExplLoaderFileDate} +% Once the programming layer is loaded by one of the loaders, you can access +% its version in the ISO date format \meta{year}-\meta{month}-\meta{day}, +% through \cs{ExplLoaderFileDate}. +% +% The current version of \pkg{expl3} is \ExplLoaderFileDate. +% \end{function} +% % \section{Engine/primitive requirements} % % To use \pkg{expl3} and the higher level packages provided by the diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index 24f11d8f7b6..0018a81d704 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -65,6 +65,7 @@ and all files in that bundle must be distributed together. \from{l3expan.dtx} {package} \from{l3quark.dtx} {package} \from{l3tl.dtx} {package} + \from{l3tl-build.dtx} {package} \from{l3str.dtx} {package} \from{l3seq.dtx} {package} \from{l3int.dtx} {package} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 00e159d8176..716b9168178 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -106,6 +106,9 @@ % level may be closed by a \cs{group_end:} function or by a token % with category code $2$ (close-group), namely a ^^A{ % |}| if standard category codes apply. +% \begin{texnote} +% This is the \TeX{} primitive \tn{aftergroup}. +% \end{texnote} % \end{function} % % \begin{function}[added = 2021-05-11]{\group_show_list:, \group_log_list:} @@ -116,7 +119,7 @@ % Display (to the terminal or log file) a list of the groups that are % currently opened. This is intended for tracking down problems. % \begin{texnote} -% This is a wrapper around the \tn{showgroups} primitive. +% This is a wrapper around the \eTeX{} primitive \tn{showgroups}. % \end{texnote} % \end{function} % @@ -130,8 +133,9 @@ % is therefore used as a shorthand for \enquote{replacement text}. % % Functions which are not \enquote{protected} are fully expanded -% inside an \texttt{x} expansion. In contrast, \enquote{protected} -% functions are not expanded within \texttt{x} expansions. +% inside an \texttt{e}-type or \texttt{x}-type expansion. +% In contrast, \enquote{protected} functions are not expanded within +% \texttt{e} and \texttt{x} expansions. % % \subsection{Defining functions} % @@ -175,7 +179,7 @@ % Create a new function with the \texttt{protected} restriction, % such as \cs{cs_set_protected:Npn}. The parameter may contain % \cs{par} tokens but the function will not expand within an -% \texttt{x}-type or \texttt{e}-type expansion. +% \texttt{e}-type or \texttt{x}-type expansion. % \end{description} % % Finally, the functions in @@ -245,8 +249,8 @@ % Creates \meta{function} to expand to \meta{code} as replacement text. % Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. -% The \meta{function} will not expand within an \texttt{x}-type or -% or \texttt{e}-type +% The \meta{function} will not expand within an \texttt{e}-type or +% or \texttt{x}-type % argument. The definition is global and an error results if the % \meta{function} is already defined. % \end{function} @@ -265,7 +269,7 @@ % \emph{etc.}) will be replaced by those absorbed by the function. % When the \meta{function} is used the \meta{parameters} absorbed % cannot contain \cs{par} tokens. The \meta{function} will not -% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global +% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global % and an error results if the \meta{function} is already defined. % \end{function} % @@ -317,7 +321,7 @@ % \emph{etc.}) will be replaced by those absorbed by the function. % The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. The \meta{function} will -% not expand within an \texttt{x}-type or \texttt{e}-type argument. +% not expand within an \texttt{e}-type or \texttt{x}-type argument. % \end{function} % % \begin{function} @@ -336,7 +340,7 @@ % cannot contain \cs{par} tokens. The assignment of a meaning % to the \meta{function} is restricted to the current \TeX{} group % level. The \meta{function} will not expand within an -% \texttt{x}-type or \texttt{e}-type argument. +% \texttt{e}-type or \texttt{x}-type argument. % \end{function} % % \begin{function} @@ -389,7 +393,7 @@ % The assignment of a meaning to the \meta{function} is \emph{not} % restricted to the current \TeX{} group level: the assignment is % global. The \meta{function} will not expand within an -% \texttt{x}-type or \texttt{e}-type argument. +% \texttt{e}-type or \texttt{x}-type argument. % \end{function} % % \begin{function} @@ -408,7 +412,7 @@ % cannot contain \cs{par} tokens. The assignment of a meaning to the % \meta{function} is \emph{not} restricted to the current \TeX{} % group level: the assignment is global. The \meta{function} will -% not expand within an \texttt{x}-type or \texttt{e}-type argument. +% not expand within an \texttt{e}-type or \texttt{x}-type argument. % \end{function} % % \subsection{Defining new functions using the signature} @@ -459,8 +463,8 @@ % Within the \meta{code}, the number of \meta{parameters} is detected % automatically from the function signature. These \meta{parameters} % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the -% function. The \meta{function} will not expand within an \texttt{x}-type -% or \texttt{e}-type argument. The definition is global and +% function. The \meta{function} will not expand within an \texttt{e}-type +% or \texttt{x}-type argument. The definition is global and % an error results if the \meta{function} is already defined. % \end{function} % @@ -478,7 +482,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. The \meta{function} will not -% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global and +% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global and % an error results if the \meta{function} is already defined. % \end{function} % @@ -529,8 +533,8 @@ % Within the \meta{code}, the number of \meta{parameters} is detected % automatically from the function signature. These \meta{parameters} % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the -% function. The \meta{function} will not expand within an \texttt{x}-type -% or \texttt{e}-type argument. +% function. The \meta{function} will not expand within an \texttt{e}-type +% or \texttt{x}-type argument. % The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} @@ -549,7 +553,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. The \meta{function} will not -% expand within an \texttt{x}-type or \texttt{e}-type argument. +% expand within an \texttt{e}-type or \texttt{x}-type argument. % The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} @@ -599,8 +603,8 @@ % Within the \meta{code}, the number of \meta{parameters} is detected % automatically from the function signature. These \meta{parameters} % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the -% function. The \meta{function} will not expand within an \texttt{x}-type -% or \texttt{e}-type argument. +% function. The \meta{function} will not expand within an \texttt{e}-type +% or \texttt{x}-type argument. % The assignment of a meaning to the \meta{function} is global. % \end{function} % @@ -618,7 +622,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. The \meta{function} will not -% expand within an \texttt{x}-type or \texttt{e}-type argument. +% expand within an \texttt{e}-type or \texttt{x}-type argument. % The assignment of a meaning to the \meta{function} is global. % \end{function} % @@ -712,7 +716,7 @@ % This function expands to the \emph{meaning} of the \meta{control sequence} % control sequence. For a macro, this includes the \meta{replacement text}. % \begin{texnote} -% This is \TeX{}'s \tn{meaning} primitive. +% This is the \TeX{} primitive \tn{meaning}. % For tokens that are not control sequences, it is more logical to % use \cs{token_to_meaning:N}. % The \texttt{c} variant correctly reports undefined arguments. @@ -825,7 +829,7 @@ % of category code $10$. The result does \emph{not} include % the current escape token, contrarily to \cs{token_to_str:N}. % Full expansion of this function requires exactly $2$ expansion -% steps, and so an \texttt{x}-type or \texttt{e}-type expansion, or two +% steps, and so an \texttt{e}-type or \texttt{x}-type expansion, or two % \texttt{o}-type expansions are required to % convert the \meta{control sequence} to a sequence of characters % in the input stream. In most cases, an \texttt{f}-expansion @@ -1207,7 +1211,7 @@ % Certain conditionals deal with specific data types like boxes and % fonts and are described there. The ones described below are either % the universal conditionals or deal with control sequences. We -% prefix primitive conditionals with |\if_|. +% prefix primitive conditionals with |\if_|, except for \cs{if:w}. % % \begin{function}[EXP] % {\if_true:, \if_false:, \else:, \fi:, \reverse_if:N} @@ -1222,8 +1226,10 @@ % conditional. The function "\or:" is documented in \pkg{l3int} and % used in case switches. % \begin{texnote} -% These are equivalent to their corresponding \TeX\ primitive -% conditionals; \cs{reverse_if:N} is \eTeX's \tn{unless}. +% \cs{if_true:} and \cs{if_false:} are equivalent to their corresponding +% \TeX{} primitive conditionals \tn{iftrue} and \tn{iffalse}; +% \cs{else:} and \cs{fi:} are the \TeX{} primitives \tn{else} and \tn{fi}; +% \cs{reverse_if:N} is the \eTeX{} primitive \tn{unless}. % \end{texnote} % \end{function} % @@ -1236,7 +1242,7 @@ % <arg_1> and <arg_2> could be functions, variables, tokens; in all cases the % \emph{unexpanded} definitions are compared. % \begin{texnote} -% This is \TeX{}'s \tn{ifx}. +% This is the \TeX{} primitive \tn{ifx}. % \end{texnote} % \end{function} % @@ -1251,6 +1257,10 @@ % tests if the category codes of the two tokens are the same whereas % "\if:w" tests if the character codes are % identical. "\if_charcode:w" is an alternative name for "\if:w". +% \begin{texnote} +% \cs{if:w} and \cs{if_charcode:w} are both the \TeX{} primitive \tn{if}. +% \cs{if_catcode:w} is the \TeX{} primitive \tn{ifcat}. +% \end{texnote} % \end{function} % % \begin{function}[EXP]{\if_cs_exist:N, \if_cs_exist:w} @@ -1264,7 +1274,7 @@ % "\scan_stop:"! This can be useful when dealing with control % sequences which cannot be entered as a single token. % \begin{texnote} -% These are \TeX{}'s \tn{ifdefined} and \tn{ifcsname}, respectively. +% These are the \TeX{} primitives \tn{ifdefined} and \tn{ifcsname}. % \end{texnote} % \end{function} % @@ -1278,6 +1288,10 @@ % \end{syntax} % Execute <true code> if currently in horizontal mode, otherwise % execute <false code>. Similar for the other functions. +% \begin{texnote} +% These are the \TeX{} primitives \tn{ifhmode}, \tn{ifvmode}, \tn{ifmmode}, +% and~\tn{ifinner}. +% \end{texnote} % \end{function} % % \section{Starting a paragraph} @@ -2414,9 +2428,6 @@ % returned with \meta{true} for when there is a colon in the function % and \meta{false} if there is not. % -% We cannot use |:| directly as it has the wrong category code so -% an |x|-type expansion is used to force the conversion. -% % First ensure that we actually get a properly evaluated string by % expanding \cs{cs_to_str:N} twice. If the function contained a % colon, the auxiliary takes as |#1| the function name, delimited by @@ -3245,7 +3256,7 @@ % wrapping code as otherwise we would wrongly see the definitions that % are in place there. To get correct escape characters, set the % \tn{escapechar} in a group; this also localizes the assignment -% performed by \texttt{x}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands +% performed by \texttt{e}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands % convert their argument to a control sequence within a group to avoid % showing \tn{relax} for undefined control sequences. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index a42f358ae89..395e5e35b49 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -51,9 +51,16 @@ % % \section{Using the \LaTeX3 modules} % -% The modules documented in \file{source3} are designed to be used on top of -% \LaTeXe{} and are loaded all as one with the usual |\usepackage{expl3}| or -% |\RequirePackage{expl3}| instructions. +% The modules documented in ^^A +% \ifinterface +% this file (and \file{source3} for documented sources) ^^A +% \else +% \file{interface3} (and this file) ^^A +% \fi +% are designed to be used on top of \LaTeXe{} and are already pre-loaded +% since \LaTeXe{} 2020-02-02. +% To support older formats, the |\usepackage{expl3}| or |\RequirePackage{expl3}| +% instructions are still available to load them all as one. % % As the modules use a coding syntax different from standard % \LaTeXe{} it provides a few functions for setting it up. @@ -80,7 +87,6 @@ % \begin{function}[updated = 2017-03-19, updated = 2023-08-03] % {\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile} % \begin{syntax} -% |\RequirePackage{expl3}| \\ % \cs{ProvidesExplPackage} \Arg{package} \Arg{date} \Arg{version} \Arg{description} % \end{syntax} % These functions act broadly in the same way as the corresponding @@ -99,7 +105,6 @@ % % \begin{function}[updated = 2012-06-04]{\GetIdInfo} % \begin{syntax} -% |\RequirePackage{l3bootstrap}| % \cs{GetIdInfo} |$Id:| \meta{SVN info field} |$| \Arg{description} % \end{syntax} % Extracts all information from a SVN field. Spaces are not diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 57576531682..b92b4faaa68 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -639,7 +639,7 @@ % variable does not exist or if it is invalid. This function may be applied to % local or global boxes. % \begin{texnote} -% This is the \tn{box} primitive. +% This is the \TeX{} primitive \tn{box}. % \end{texnote} % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 567969d5450..b5c30bd42f9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -103,49 +103,6 @@ % % \section{Additions to \pkg{l3tl}} % -% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N} -% \begin{syntax} -% \cs{tl_build_begin:N} \meta{tl~var} -% \end{syntax} -% Clears the \meta{tl~var} and sets it up to support other -% \cs[no-index]{tl_build_\ldots{}} functions, which allow accumulating -% large numbers of tokens piece by piece much more efficiently than -% standard \pkg{l3tl} functions. Until \cs{tl_build_end:N} -% \meta{tl~var} is called, applying any function from \pkg{l3tl} other -% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect -% results. The |begin| and |gbegin| functions must be used for local -% and global \meta{tl~var} respectively. -% \end{function} -% -% \begin{function}[added = 2018-04-01]{\tl_build_clear:N, \tl_build_gclear:N} -% \begin{syntax} -% \cs{tl_build_clear:N} \meta{tl~var} -% \end{syntax} -% Clears the \meta{tl~var} and sets it up to support other -% \cs[no-index]{tl_build_\ldots{}} functions. The |clear| and -% |gclear| functions must be used for local and global \meta{tl~var} -% respectively. -% \end{function} -% -% \begin{function}[added = 2018-04-01] -% { -% \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} -% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens} -% \end{syntax} -% Adds \meta{tokens} to the left or right side of the current contents -% of \meta{tl~var}. The \meta{tl~var} must have been set up with -% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and -% |gput| functions must be used for local and global \meta{tl~var} -% respectively. The |right| functions are about twice faster than the -% |left| functions. -% \end{function} -% % \begin{function}[added = 2018-04-01]{\tl_build_get:NN} % \begin{syntax} % \cs{tl_build_get:NN} \meta{tl~var_1} \meta{tl~var_2} @@ -157,20 +114,6 @@ % \cs{tl_set:Nn}. % \end{function} % -% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N} -% \begin{syntax} -% \cs{tl_build_end:N} \meta{tl~var} -% \end{syntax} -% Gets the contents of \meta{tl~var} and stores that into the -% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}. -% The \meta{tl~var} must have -% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. -% The |end| and |gend| functions must be used for local and global -% \meta{tl~var} respectively. These functions completely remove the -% setup code that enabled \meta{tl~var} to be used for other -% \cs[no-index]{tl_build_\ldots{}} functions. -% \end{function} -% % \end{documentation} % % \begin{implementation} @@ -195,7 +138,7 @@ % and skipping out of that would break horribly. % The \cs{@@_wrap_item:n} function inserts the relevant % \cs{@@_item:n} without expansion in the input stream, -% hence in the \texttt{x}-expanding assignment. +% hence in the \texttt{e}-expanding assignment. % \begin{macrocode} \cs_new_protected:Npn \seq_set_filter:NNn { \@@_set_filter:NNNn \__kernel_tl_set:Ne } @@ -219,210 +162,10 @@ %<@@=tl> % \end{macrocode} % -% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N} -% \meta{tl~var}, the \meta{tl~var} has the structure -% \begin{quote} -% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn} -% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right} -% \end{quote} -% where \meta{right} is not braced. The \enquote{data} it represents is -% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed -% by \meta{right}. The \meta{next~tl} is a token list variable whose -% 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: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} -% First construct the \meta{next~tl}: using a prime here conflicts -% with the usual \pkg{expl3} convention but we need a name that can be -% 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: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} -% to empty |#1| and make sure it is defined, but logging the -% definition does not seem useful so we just do |#3| |#1| |{}| to -% clear it locally or globally as appropriate. -% \begin{macrocode} -\cs_new_protected:Npn \tl_build_begin:N #1 - { \@@_build_begin:NN \cs_set_nopar:Npe #1 } -\cs_new_protected:Npn \tl_build_gbegin:N #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 - { - #3 #1 { } - #3 #2 - { - \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: } - \exp_not:n { \@@_build_last:NNn #3 #1 { } } - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N} -% The |begin| and |gbegin| functions already clear enough to make the -% token list variable effectively empty. Eventually the |begin| and -% |gbegin| functions should check that |#1'| is empty or undefined, -% while the |clear| and |gclear| functions ought to empty |#1'|, -% |#1''| and so on, similar to \cs{tl_build_end:N}. This only affects -% memory usage. -% \begin{macrocode} -\cs_new_eq:NN \tl_build_clear:N \tl_build_begin:N -\cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N -% \end{macrocode} -% \end{macro} -% -% \begin{macro} -% { -% \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 -% of the time this just removes one \cs{exp_end:}. When there are -% none left, \cs{@@_build_last:NNn} is expanded instead. It resets -% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and -% the definition early. Then it makes sure the \meta{next~tl} (its -% argument |#1|) is set-up and starts a new definition. Then -% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left} -% part of the original \meta{tl~var} as appropriate for the definition -% of the \meta{next~tl} (the \meta{right} part is left in the right -% 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: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:Npe #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:Npe #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: - \exp_end: \exp_end: \exp_end: \exp_end: \exp_end: - \@@_build_last:NNn #1 #2 { } - } - } - \if_meaning:w \c_empty_tl #2 - \@@_build_begin:NN #1 #2 - \fi: - #1 #2 - { - \exp_after:wN \exp_not:n \exp_after:wN - { - \exp:w \if_false: } } \fi: - \exp_after:wN \@@_build_put:nn \exp_after:wN {#2} - } -\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 } -\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5 - { #2 \@@_build_last:NNn #3 #4 { #1 #5 } } -% \end{macrocode} -% \end{macro} -% -% \begin{macro} -% { -% \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 -% add the \meta{right} material after the \Arg{left} in the -% |x|-expanding assignment. -% \begin{macrocode} -\cs_new_protected:Npn \tl_build_put_left:Nn #1 - { \@@_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: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 - { - \exp_after:wN \exp_not:n \exp_after:wN - { - \exp:w \exp_after:wN \@@_build_put:nn - \exp_after:wN {#2} {#3} - } - } - } -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\tl_build_get:NN} -% \begin{macro}{\@@_build_get:NNN, \@@_build_get:w, \@@_build_get_end:w} -% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and -% so on, all within an |x|-expanding assignment, and wrap as -% appropriate in \cs{exp_not:n}. The various \meta{left} parts are -% left in the assignment as we go, which enables us to expand the -% \meta{next~tl} at the right place. The various \meta{right} parts -% are eventually picked up in one last \cs{exp_not:n}, with a brace -% 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: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 - { - \exp_not:n {#4} - \if_meaning:w \c_empty_tl #3 - \exp_after:wN \@@_build_get_end:w - \fi: - \exp_after:wN \@@_build_get:w #3 - } -\cs_new:Npn \@@_build_get_end:w #1#2#3 - { \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\tl_build_end:N, \tl_build_gend:N, \@@_build_end_loop:NN} -% 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:Ne} or \cs{tl_gset:Ne}. -% \begin{macrocode} -\cs_new_protected:Npn \tl_build_end:N #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: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 - { - \if_meaning:w \c_empty_tl #1 - \exp_after:wN \use_none:nnnnnn - \fi: - #2 #1 - \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2 - } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index 794b53b5f49..317f623f2f0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index bd8082cf340..21563de7ea9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -361,7 +361,7 @@ % \begin{texnote} % The result is returned within \tn{unexpanded}, which means that the % comma list does not expand further when appearing in an -% \texttt{x}-type or \texttt{e}-type argument expansion. +% \texttt{e}-type or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -586,8 +586,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{items} -% do not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% do not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -611,8 +611,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{items} -% do not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% do not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -631,8 +631,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{items} -% do not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% do not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -737,8 +737,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -753,8 +753,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1523,7 +1523,7 @@ % \clist_reverse:N, \clist_reverse:c, % \clist_greverse:N, \clist_greverse:c % } -% Use \cs{clist_reverse:n} in an \texttt{x}-expanding assignment. The +% Use \cs{clist_reverse:n} in an \texttt{e}-expanding assignment. The % extra work that \cs{clist_reverse:n} does to preserve braces and % spaces would not be needed for the well-controlled case of % \texttt{N}-type comma lists, but the slow-down is not too bad. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index cf046706b69..3f3e484cfa1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index 2cdf604d02c..ca0aae12ae3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index c351529d858..ec27fe33af2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 98d8df40e54..6fcc98968a6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -137,7 +137,7 @@ % In case we want a warning, the \meta{function} is defined to produce % such a warning without grabbing any argument, then redefine itself % to the standard definition that the \meta{function} should have, -% with arguments, and call that definition. The \texttt{x}-type +% with arguments, and call that definition. The \texttt{e}-type % expansion and \cs{exp_not:n} avoid needing to double the~|#|, which % we could not do anyways. We then deal with the code for % \cs{debug_off:n} |{deprecation}|: presumably someone doing that does @@ -536,6 +536,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn} +% \begin{macrocode} +\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn } +\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn } +\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn } +\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn } +% \end{macrocode} +% \end{macro} +% % \subsection{Deprecated \pkg{l3sys} functions} % % \begin{macrocode} @@ -614,6 +623,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N} +% \begin{macrocode} +\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_begin:N } +\cs_new_protected:Npn \tl_build_clear:N { \tl_build_begin:N } +\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_gbegin:N } +\cs_new_protected:Npn \tl_build_gclear:N { \tl_build_gbegin:N } +% \end{macrocode} +% \end{macro} +% % \subsection{Deprecated \pkg{l3token} functions} % % \begin{macro}[EXP]{\char_to_utfviii_bytes:n} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 789095d1046..920145ce23a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -85,7 +85,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % \maketitle % \tableofcontents % @@ -1190,7 +1190,7 @@ and all files in that bundle must be distributed together. % Get predicate from a function's base name. The code is not broken % by functions with no signature. The |n|-type version can be used % for keys and other non-control sequences. The output after -% |x|-expansion is a string. +% |e|-expansion is a string. % \begin{macrocode} \cs_new:Npn \@@_predicate_from_base:n #1 { @@ -1930,9 +1930,9 @@ and all files in that bundle must be distributed together. \raisebox{\baselineskip}[0pt][0pt]{\hypertarget{expstar}{}}% \write \@auxout { \def \string \Codedoc@expstar { } } \@@_typeset_exp:\ indicates~fully~expandable~functions,~which~ - can~be~used~within~an~\texttt{x}-type~argument~(in~plain~ - \TeX{}~terms,~inside~an~\cs{edef}),~as~well~as~within~an~ - \texttt{f}-type~argument. + can~be~used~within~an~\texttt{e}-type~argument~(inside~an~\tn{expanded}),~ + \texttt{x}-type~argument~(in~plain~\TeX{}~terms,~inside~an~\tn{edef}),~ + as~well~as~within~an~\texttt{f}-type~argument. } \NewDocumentCommand { \CodedocExplainREXP } { } { @@ -1940,8 +1940,8 @@ and all files in that bundle must be distributed together. \write \@auxout { \def \string \Codedoc@rexpstar { } } \@@_typeset_rexp:\ indicates~ restricted~expandable~functions,~which~can~be~used~within~an~ - \texttt{x}-type~argument~but~cannot~be~fully~expanded~within~an~ - \texttt{f}-type~argument. + \texttt{x}-type~argument~or~an~\texttt{e}-type~argument,~ + but~cannot~be~fully~expanded~within~an~\texttt{f}-type~argument. } \NewDocumentCommand { \CodedocExplainTF } { } { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 59bd089ae65..9c363c8753b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 3bf2bd61536..d133eaae455 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -229,7 +229,7 @@ % contrast to |e|, all macro parameter characters |#| must be doubled, % and omitting this leads to low-level errors. In addition this type of % expansion is not expandable, namely functions that have |x| in their -% signature do not themselves expand when appearing inside |x| or |e| +% signature do not themselves expand when appearing inside |e| or |x| % expansion. % % The |f| type is so special that it deserves an example. It is @@ -264,8 +264,7 @@ % \begin{quote} % |\example:n { 3 , 7 }| % \end{quote} -% at the cost of being protected (for |x| type) or very much slower in -% old engines (for |e| type). +% at the cost of being protected for |x|-type. % If you use |f| type expansion in conditional processing then % you should stick to using |TF| type functions only as the expansion % does not finish any |\if... \fi:| itself! @@ -642,7 +641,7 @@ % appropriate argument specifier variant or the appropriate % \cs[no-index]{exp_args:N\meta{variant}} function. % \begin{texnote} -% This is the \TeX{} primitive \tn{expandafter} renamed. +% This is the \TeX{} primitive \tn{expandafter}. % \end{texnote} % \end{function} % @@ -659,10 +658,10 @@ % \cs{exp_not:N} \meta{token} % \end{syntax} % Prevents expansion of the \meta{token} in a context where it would -% otherwise be expanded, for example an |x|-type argument or the first -% token in an |o| or |e| or |f| argument. +% otherwise be expanded, for example an |e|-type or |x|-type argument or +% the first token in an |o|-type or |f|-type argument. % \begin{texnote} -% This is the \TeX{} \tn{noexpand} primitive. It only prevents +% This is the \TeX{} primitive \tn{noexpand}. 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 |e|-expanding definition @@ -686,16 +685,16 @@ % \begin{syntax} % \cs{exp_not:n} \Arg{tokens} % \end{syntax} -% Prevents expansion of the \meta{tokens} in an |e| or |x|-type argument. In -% all other cases the \meta{tokens} continue to be expanded, for +% Prevents expansion of the \meta{tokens} in an |e|-type or |x|-type argument. +% In all other cases the \meta{tokens} continue to be expanded, for % example in the input stream or in other types of arguments such as % \texttt{c}, \texttt{f}, \texttt{v}. The argument of \cs{exp_not:n} % \emph{must} be surrounded by braces. % \begin{texnote} -% This is the \eTeX{} \tn{unexpanded} primitive. In an -% |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}| +% This is the \eTeX{} primitive \tn{unexpanded}. In an +% |e|-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 +% two characters |#| and~|1|, and % \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the % character~|#|. % \end{texnote} @@ -706,7 +705,7 @@ % \cs{exp_not:o} \Arg{tokens} % \end{syntax} % Expands the \meta{tokens} once, then prevents any further expansion -% in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}. +% in |e|-type or |x|-type arguments using \cs{exp_not:n}. % \end{function} % % \begin{function}[EXP]{\exp_not:V} @@ -714,7 +713,7 @@ % \cs{exp_not:V} \meta{variable} % \end{syntax} % Recovers the content of the \meta{variable}, then prevents expansion -% of this material in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}. +% of this material in |e|-type or |x|-type arguments using \cs{exp_not:n}. % \end{function} % % \begin{function}[EXP]{\exp_not:v} @@ -725,7 +724,7 @@ % converts this into a control sequence which should be a \meta{variable} % name. % The content of the \meta{variable} is recovered, and further -% expansion in |x|-type or \texttt{e}-type arguments is prevented using \cs{exp_not:n}. +% expansion in |e|-type or |x|-type arguments is prevented using \cs{exp_not:n}. % \end{function} % % \begin{function}[EXP]{\exp_not:e} @@ -734,7 +733,7 @@ % \end{syntax} % Expands \meta{tokens} exhaustively, then protects the result of the % expansion (including any tokens which were not expanded) from -% further expansion in |e| or |x|-type arguments using \cs{exp_not:n}. +% further expansion in |e|-type or |x|-type arguments using \cs{exp_not:n}. % This is very rarely useful but is provided for consistency. % \end{function} % @@ -745,7 +744,7 @@ % Expands \meta{tokens} fully until the first unexpandable token is % found (if it is a space it is removed). Expansion then stops, and % the result of the expansion (including any tokens which were not -% expanded) is protected from further expansion in |x|-type or \texttt{e}-type arguments +% expanded) is protected from further expansion in |e|-type or |x|-type arguments % using \cs{exp_not:n}. % \end{function} % @@ -758,7 +757,7 @@ % and all of \meta{tokens} are expandable \cs{exp_stop_f:} % terminates the expansion of tokens even if \meta{more tokens} % are also expandable. The function itself is an implicit space -% token. Inside an \texttt{x}-type or \texttt{e}-type expansion, it retains its +% token. Inside an \texttt{e}-type or \texttt{x}-type expansion, it retains its % form, but when typeset it produces the underlying space (\verb*| |). % \end{function} % @@ -948,7 +947,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:Npe} at some +% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some % point, and so is never going to be expandable.) % % The definition of expansion functions with this technique happens @@ -1062,7 +1061,7 @@ % Since the expansion of \cs{exp:w} \cs{exp_end_continue_f:w} is % empty, we wind up with a fully expanded list, only \TeX{} has not % tried to execute any of the non-expandable tokens. This is what -% differentiates this function from the |x| argument type. +% differentiates this function from the |e| and |x| argument type. % \begin{macrocode} \cs_new:Npn \::f #1 \::: #2#3 { @@ -1818,7 +1817,7 @@ % trigger an error, because we do not have a means to replace % |o|-expansion by |x|-expansion. % More generally, we can only convert |N| to |c|, or convert |n| -% to |V|, |v|, |o|, |f|, |x|. +% to |V|, |v|, |o|, |e|, |f|, or |x|. % \end{itemize} % All this boils down to a few rules. Only |n| and |N|-type % arguments can be replaced by \cs{cs_generate_variant:Nn}. Other @@ -1828,7 +1827,7 @@ % part is ignored. % % We compare the base and variant signatures one character at a time -% within |x|-expansion. The result is given to +% within |e|-expansion. The result is given to % \cs{@@_generate_variant:wwNN} (defined later) in the form % \meta{processed variant signature} \cs{s_@@_mark} \meta{errors} % \cs{s_@@_stop} \meta{base function} \meta{new function}. If all went @@ -1889,7 +1888,7 @@ % % The case where the two letters are different is only allowed if the % base is |N| and the variant is |c|, or when the base is |n| and the -% variant is |o|, |V|, |v|, |f| or |x|. Otherwise, call +% variant is |V|, |v|, |o|, |e|, |f|, or |x|. Otherwise, call % \cs{@@_generate_variant_loop_invalid:NNwNNnn} to remove the end of % the loop, get arguments at the end of the loop, and place an % appropriate error message as a second argument of diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index af83fe4e088..423c9c2761f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -486,7 +486,7 @@ % \end{syntax} % This function writes \meta{tokens} to the specified % \meta{stream} when the current page is finalised (\emph{i.e.}~at -% shipout). The \texttt{x}-type variants expand the \meta{tokens} +% shipout). The \texttt{e}-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_e:Nn}). @@ -597,7 +597,7 @@ % output does \emph{not} expand further when written to a file. % % \begin{texnote} -% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{x}-type expansion +% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{e}-type expansion % on the \meta{text} to expand it. This is done in such a way that % \cs{exp_not:N} or \cs{exp_not:n} \emph{could} be used to prevent % expansion of material. However, this is less conceptually clear than @@ -687,9 +687,11 @@ % \emph{not} end in |/| other than the case that it is exactly equal % to the root directory. The \meta{name} and \meta{ext} parts together % make up the file name, thus the \meta{name} part may be thought of -% as the \enquote{job name} for the current file. Note that \TeX{} does -% not provide information on the \meta{ext} part for the main (top -% level) file and that this file always has an empty \meta{dir} component. +% as the \enquote{job name} for the current file. +% +% Note that \TeX{} does not provide information on the \meta{dir} and +% \meta{ext} part for the main (top level) file and that this file +% always has empty \meta{dir} and \meta{ext} components. % Also, the \meta{name} here will be equal to \cs{c_sys_jobname_str}, % which may be different from the real file name (if set using % |--jobname|, for example). diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 278c71f27c1..831f583aa1b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 17d75d10459..385086dca4c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % \maketitle % % \begin{documentation} @@ -165,7 +165,6 @@ % \subsection{Showing values} % % \begin{macro}{\fp_show:N, \fp_show:c, \fp_log:N, \fp_log:c, \@@_show:NN} -% \begin{macro}[EXP]{\@@_show_validate:w} % This shows the result of computing its argument by % passing the right data to \cs{tl_show:n} or \cs{tl_log:n}. % \begin{macrocode} @@ -176,21 +175,91 @@ \cs_new_protected:Npn \@@_show:NN #1#2 { \__kernel_chk_tl_type:NnnT #2 { fp } + { \exp_args:No \@@_show_validate:n #2 } + { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[EXP] +% { +% \@@_show_validate:n, \@@_show_validate_aux:n, \@@_show_validate:nn, +% } +% \begin{macro}[EXP] +% { +% \@@_show_validate:w, +% \@@_tuple_show_validate:w, +% \@@_symbolic_show_validate:w +% } +% To support symbolic expression, validation has to be done recursively. +% Two |\@@_show_validate:nn| wrappers are used to distinguish between +% initial and recursive calls, in which the former provides a demo of +% possible forms a |fp| variable would have. +% \begin{macrocode} +\cs_new:Npn \@@_show_validate:n #1 + { + \@@_show_validate:nn { #1 } + { + \s_@@ \@@_chk:w ??? ;~ or \iow_newline: + \s_@@_tuple \_@@_tuple_chk:w ? ;~ or \iow_newline: + \s_@@_symbolic \@@_symbolic_chk:w ? , ? ; + } + } +\cs_new:Npn \@@_show_validate_aux:n #1 + { + \@@_show_validate:nn { #1 } { } + } +\cs_new:Npn \@@_show_validate:nn #1#2 + { + \tl_if_empty:nF { #1 } { - \str_if_eq:eeTF { \tl_head:N #2 } { \s_@@_tuple } { \exp_not:o #2 } + \str_case:enF { \tl_head:n { #1 } } { - \exp_after:wN \@@_show_validate:w #2 - \s_@@ \@@_chk:w ??? ; \s_@@_stop + { \s_@@ } + { + \@@_show_validate:w #1 \s_@@ + \@@_chk:w ??? ; \s_@@_stop + } + { \s_@@_tuple } + { + \@@_tuple_show_validate:w #1 + \s_@@_tuple \_@@_tuple_chk:w ?? ; \s_@@_stop + } + { \s_@@_symbolic } + { + \@@_symbolic_show_validate:w #1 + \s_@@_symbolic \@@_symbolic_chk:w ? , ?? ; \s_@@_stop + } } + { #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 { - \token_if_eq_meaning:NNTF #2 1 - { \s_@@ \@@_chk:w #2 #3 {#4} #5 ; } - { \s_@@ \@@_chk:w #2 #3 #4 #5 ; } + \str_if_eq:nnF { #2 } {?} + { + \token_if_eq_meaning:NNTF #2 1 + { \s_@@ \@@_chk:w #2 #3 { #4 } #5 ; } + { \s_@@ \@@_chk:w #2 #3 #4 #5 ; } + \@@_show_validate_aux:n { #6 } + } + } +\cs_new:Npn \@@_tuple_show_validate:w + #1 \s_@@_tuple \_@@_tuple_chk:w #2#3 ; #4 \s_@@_stop + { + \str_if_eq:nnF { #2 } {?} + { \s_@@_tuple \@@_tuple_chk:w { \@@_show_validate_aux:n { #2 } } ; } + } +\cs_new:Npn \@@_symbolic_show_validate:w + #1 \s_@@_symbolic \@@_symbolic_chk:w #2 , #3#4 ; #5 \s_@@_stop + { + \str_if_eq:nnF { #2 } {?} + { + \s_@@_symbolic \@@_symbolic_chk:w \exp_not:n { #2 } , + { \@@_show_validate_aux:n { #3 } }; + \@@_show_validate_aux:n { #5 } + } } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index ccd5e63ac17..83191b80745 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -97,8 +97,8 @@ % When used directly without an accessor function, floating points % should produce an error: this is the role of \cs{@@_chk:w}. We could % make floating point variables be protected to prevent them from -% expanding under \texttt{x}-expansion, but it seems more convenient to -% treat them as a subcase of token list variables. +% expanding under \texttt{e}/\texttt{x}-expansion, but it seems more +% convenient to treat them as a subcase of token list variables. % % The (decimal part of the) IEEE-754-2008 standard requires the format % to be able to represent special floating point numbers besides the @@ -235,7 +235,8 @@ % where \cs{s_@@} is equal to the \TeX{} primitive \tn{relax}, and % \cs{@@_chk:w} is protected. The rest of the floating point number % is made of characters (or \tn{relax}). This ensures that nothing -% expands under \texttt{f}-expansion, nor under \texttt{x}-expansion. +% expands under \texttt{f}-expansion, nor under +% \texttt{e}/\texttt{x}-expansion. % However, when typeset, \cs{s_@@} does nothing, and \cs{@@_chk:w} is % expanded. We define \cs{@@_chk:w} to produce an error. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index b79950c2677..bba9b9535f3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 70983272ddf..499e1f2f5f1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index f0e691f310b..a2ff43ef289 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index e374e7e2881..2720891ef33 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx index a899f3493ae..55729bbcd87 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -72,7 +72,7 @@ \cs_new_protected:Npn \@@_new_function:n #1 { \@@_id_if_invalid:nTF {#1} - { \msg_error:nnn { fp } { invalid-identifier } {#1} } + { \msg_error:nnn { fp } { id-invalid } {#1} } { \cs_if_exist:cT { @@_parse_word_#1:N } { @@ -91,12 +91,12 @@ % \begin{macro} % {\@@_function_set_parsing:Nn, \@@_function_set_parsing_aux:NNn} % \begin{macrocode} -\cs_new:Npn \@@_function_set_parsing:Nn #1#2 +\cs_new_protected:Npn \@@_function_set_parsing:Nn #1#2 { \exp_args:NNc \@@_function_set_parsing_aux:NNn #1 { @@_parse_word_#2:N } {#2} } -\cs_new:Npn \@@_function_set_parsing_aux:NNn #1#2#3 +\cs_new_protected:Npn \@@_function_set_parsing_aux:NNn #1#2#3 { \cs_set:Npe \@@_tmp:w { @@ -171,7 +171,7 @@ \cs_new_protected:Npn \@@_set_function:Nnnn #1#2#3#4 { \@@_id_if_invalid:nTF {#2} - { \msg_error:nnn { fp } { invalid-identifier } {#2} } + { \msg_error:nnn { fp } { id-invalid } {#2} } { \cs_if_exist:cF { @@_parse_word_#2:N } { \@@_function_set_parsing:Nn \cs_set_eq:NN {#2} } @@ -180,8 +180,10 @@ \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} } { \int_incr:N \l_@@_function_arg_int - \exp_args:Ne \@@_clear_variable:n - { _ \tex_romannumeral:D \l_@@_function_arg_int } + \exp_args:Ne \@@_clear_variable_aux:n + { + \c_underscore_str \tex_romannumeral:D \l_@@_function_arg_int + } \fp_clear_variable:n {##1} \cs_set_nopar:cpe { l_@@_variable_##1_fp } { @@ -264,8 +266,12 @@ { \exp_args:No \@@_clear_function:n { \tl_to_str:n {#1} } } \cs_new_protected:Npn \@@_clear_function:n #1 { - \cs_undefine:c { @@_parse_word_ #1 :N } - \@@_function_set_parsing:Nn \cs_set_eq:NN {#1} + \@@_id_if_invalid:nTF {#1} + { \msg_error:nnn { fp } { id-invalid } {#1} } + { + \cs_set_eq:cN { @@_#1_o:w } \tex_undefine:D + \@@_function_set_parsing:Nn \cs_set_eq:NN {#1} + } } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 5e98d6b62c2..edf16c72b2f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 58fc4f1f2a2..e13a6718929 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 3cff0bdc1a1..5e213c5e4ce 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 901cb5ba340..783a7fd0a35 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx index 277ecfabf55..29ac5aa07c8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -157,8 +157,8 @@ % \begin{macro}[EXP] % {\@@_if_has_symbolic:nTF, \@@_if_has_symbolic_aux:w} % Tests if |#1| contains \cs{s_@@_symbolic} at top-level. This test -% should be precise enough to determine if a given an array contains a -% symbolic expression or only consists in floating points. Used in +% should be precise enough to determine if a given array contains a +% symbolic expression or only consists of floating points. Used in % \cs{@@_exp_after_symbolic_f:nw}. % \begin{macrocode} \cs_new:Npn \@@_if_has_symbolic:nTF #1 @@ -255,9 +255,9 @@ % \@@_&_symbolic_o:ww, % } % \begin{macrocode} -\cs_set:Npn \@@_tmp:w #1#2 +\cs_set_protected:Npn \@@_tmp:w #1#2 { - \cs_new_nopar:cpn + \cs_new:cpn { @@_symbolic_#2_symbolic_o:ww } { \@@_symbolic_binary_o:Nww #1 } \cs_new_eq:cc @@ -277,7 +277,7 @@ % % \subsection{Applying prefix functions to expressions} % -% \begin{macro}[aux, EXP]{\@@_symbolic_unary_o:NNw} +% \begin{macro}[EXP]{\@@_symbolic_unary_o:NNw} % Used when applying infix operators to expressions. % \begin{macrocode} \cs_new:Npn \@@_symbolic_unary_o:NNw #1#2#3; @ @@ -313,7 +313,7 @@ {not} {sec} {set_sign} {sin} {sqrt} {tan} } { - \cs_new_nopar:cpe { @@_symbolic_#1_o:w } + \cs_new:cpe { @@_symbolic_#1_o:w } { \exp_not:N \@@_symbolic_unary_o:NNw \exp_not:c { @@_#1_o:w } @@ -336,7 +336,7 @@ % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:w #1#2#3 { - \cs_new_nopar:cpn { @@_symbolic_to_#1:w } + \cs_new:cpn { @@_symbolic_to_#1:w } { \exp_after:wN \@@_symbolic_convert:wnnN \exp:w \exp_end_continue_f:w @@ -384,7 +384,8 @@ % \begin{macro}[rEXP] % { % \@@_symbolic_unary_to_tl:NNw, -% \@@_symbolic_binary_to_tl:Nww +% \@@_symbolic_binary_to_tl:Nww, +% \@@_symbolic_function_to_tl:Nw % } % Converting a symbolic expression to a token list is possible. % \begin{macrocode} @@ -440,6 +441,7 @@ % loop through letters in |#1|: if it is not a letter, break the loop % and return \texttt{true}. If the end of the loop is reached % without finding any non-letter, return \texttt{false}. +% Note |#1| must be a str (i.e., resulted from \cs{tl_to_str:n}). % \begin{macrocode} \prg_new_protected_conditional:Npnn \@@_id_if_invalid:n #1 { T , F , TF } @@ -447,10 +449,10 @@ \tl_if_empty:nTF {#1} { \prg_return_true: } { - \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ } + \tl_if_in:nnTF { #1 } { ~ } { \prg_return_true: } { - \exp_after:wN \@@_id_if_invalid_aux:N \tl_to_str:n {#1} + \@@_id_if_invalid_aux:N #1 { ? \prg_break:n \prg_return_false: } \prg_break_point: } @@ -511,9 +513,9 @@ % \begin{macro} % {\@@_variable_set_parsing:Nn, \@@_variable_set_parsing_aux:NNn} % \begin{macrocode} -\cs_new:Npn \@@_variable_set_parsing:Nn #1#2 +\cs_new_protected:Npn \@@_variable_set_parsing:Nn #1#2 { - \cs_set_nopar:Npn \@@_tmp:w + \cs_set:Npn \@@_tmp:w { \@@_exp_after_symbolic_f:nw { \@@_parse_infix:NN } \s_@@_symbolic \@@_symbolic_chk:w @@ -522,7 +524,7 @@ \exp_args:NNc \@@_variable_set_parsing_aux:NNn #1 { @@_parse_word_#2:N } {#2} } -\cs_new:Npn \@@_variable_set_parsing_aux:NNn #1#2#3 +\cs_new_protected:Npn \@@_variable_set_parsing_aux:NNn #1#2#3 { \cs_if_eq:NNF #2 \@@_tmp:w { @@ -541,23 +543,32 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\fp_clear_variable:n} -% \begin{macro}{\@@_clear_variable:n} +% \begin{macro} +% { +% \fp_clear_variable:n, +% \@@_clear_variable:n, \@@_clear_variable_aux:n +% } +% We need local undefining, so have to do it low-level. +% \cs{@@_clear_variable_aux:n} is needed by \cs{@@_set_function:Nnnn} +% to skip \cs{@@_id_if_invalid:nTF}. % \begin{macrocode} \cs_new_protected:Npn \fp_clear_variable:n #1 { + \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} } + } +\cs_new_protected:Npn \@@_clear_variable:n #1 + { \@@_id_if_invalid:nTF {#1} { \msg_error:nnn { fp } { id-invalid } {#1} } - { \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} } } + { \@@_clear_variable_aux:n {#1} } } -\cs_new_protected:Npn \@@_clear_variable:n #1 +\cs_new_protected:Npn \@@_clear_variable_aux:n #1 { - \cs_undefine:c { l_@@_variable_#1_fp } + \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1} } % \end{macrocode} % \end{macro} -% \end{macro} % % \begin{macro}{\fp_new_variable:n} % \begin{macro}{\@@_new_variable:n} @@ -567,20 +578,22 @@ % \begin{macrocode} \cs_new_protected:Npn \fp_new_variable:n #1 { - \@@_id_if_invalid:nTF {#1} - { \msg_error:nnn { fp } { id-invalid } {#1} } - { \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} } } + \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} } } \cs_new_protected:Npn \@@_new_variable:n #1 { - \cs_if_exist:cT { @@_parse_word_#1:N } + \@@_id_if_invalid:nTF {#1} + { \msg_error:nnn { fp } { id-invalid } {#1} } { - \msg_error:nnn - { fp } { id-already-defined } {#1} - \cs_undefine:c { @@_parse_word_#1:N } - \cs_undefine:c { l_@@_variable_#1_fp } + \cs_if_exist:cT { @@_parse_word_#1:N } + { + \msg_error:nnn + { fp } { id-already-defined } {#1} + \cs_undefine:c { @@_parse_word_#1:N } + \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D + } + \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1} } - \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1} } % \end{macrocode} % \end{macro} @@ -605,24 +618,26 @@ \flag_new:n { @@_symbolic } \cs_new_protected:Npn \fp_set_variable:nn #1 { - \@@_id_if_invalid:nTF {#1} - { \msg_error:nnn { fp } { id-invalid } {#1} } - { \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} } } + \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} } } \cs_new_protected:Npn \@@_set_variable:nn #1#2 { - \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1} - \fp_set:Nn \l_@@_symbolic_fp {#2} - \cs_set_nopar:cpn { l_@@_variable_#1_fp } - { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp } - \flag_clear:n { @@_symbolic } - \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp } - \flag_if_raised:nT { @@_symbolic } + \@@_id_if_invalid:nTF {#1} + { \msg_error:nnn { fp } { id-invalid } {#1} } { - \msg_error:nneee { fp } { id-loop } - { \tl_to_str:n {#1} } - { \tl_to_str:n {#2} } - { \fp_to_tl:N \l_@@_symbolic_fp } + \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1} + \fp_set:Nn \l_@@_symbolic_fp {#2} + \cs_set_nopar:cpn { l_@@_variable_#1_fp } + { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp } + \flag_clear:n { @@_symbolic } + \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp } + \flag_if_raised:nT { @@_symbolic } + { + \msg_error:nneee { fp } { id-loop } + { #1 } + { \tl_to_str:n {#2} } + { \fp_to_tl:N \l_@@_symbolic_fp } + } } } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 1bdece9ba76..5fec65448d9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index c49383a1787..8b9b843e2a0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx index 693cec5cccf..b99be49f167 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 578d568978f..1391e8b7588 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -768,7 +768,8 @@ % \end{syntax} % Defines the \meta{identifier} to stand in any further expression for % the result of evaluating the \meta{floating point expression}, with -% the \meta{identifier} accepting the \meta{vars} (a comma list). +% the \meta{identifier} accepting the \meta{vars} (a non-empty +% comma-separated list). % The result may contain other functions, which are % then replaced by their results if they have any. For instance, % \begin{quote} @@ -1376,10 +1377,10 @@ % \end{syntax} % Computes the arcsine, arccosine, arccosecant, or arcsecant of the % \meta{fp expr} and returns the result in degrees, in the range -% $[-90,90]$ for \texttt{asin} and \texttt{acsc} and $[0,180]$ for -% \texttt{acos} and \texttt{asec}. For a result in radians, use -% \texttt{asin}, \emph{etc.} If the argument of |asin| or |acos| lies -% outside the range $[-1,1]$, or the argument of |acsc| or |asec| +% $[-90,90]$ for \texttt{asind} and \texttt{acscd} and $[0,180]$ for +% \texttt{acosd} and \texttt{asecd}. For a result in radians, use +% \texttt{asin}, \emph{etc.} If the argument of |asind| or |acosd| lies +% outside the range $[-1,1]$, or the argument of |acscd| or |asecd| % inside the range $(-1,1)$, an \enquote{invalid operation} exception % is raised. \enquote{Underflow} and \enquote{overflow} occur when % appropriate. @@ -1424,8 +1425,8 @@ % \cs{fp_eval:n} \{ |acotd(| \meta{fp expr} |)| \} % \cs{fp_eval:n} \{ |acotd(| \meta{fp expr_1} , \meta{fp expr_2} |)| \} % \end{syntax} -% Those functions yield an angle in degrees: \texttt{atand} and -% \texttt{acotd} are their analogs in radians. The one-argument +% Those functions yield an angle in degrees: \texttt{atan} and +% \texttt{acot} are their analogs in radians. The one-argument % versions compute the arctangent or arccotangent of the % \meta{fp expr}: arctangent takes values in the range $[-90,90]$, and % arccotangent in the range $[0,180]$. The two-argument arctangent diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 36d84a593dc..e06c4d39bc3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index c1dc697e718..b658aedd8d0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -1035,7 +1035,7 @@ % |=|, |<| or |>| with category code $12$. % The \cs{else:} branch is optional. % \begin{texnote} -% These are both names for the \TeX{} primitive \tn{ifnum}. +% This is the \TeX{} primitive \tn{ifnum}. % \end{texnote} % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index cbfdc48666c..3d1f4b8b1fb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index ce3ab209700..9971ab4305e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -101,7 +101,7 @@ % given \meta{specific type} of token list. Produces suitable error % messages if the \meta{control sequence} does not exist, or if it is % not a token list variable at all, or if the \meta{control sequence} -% differs from the result of |x|-expanding \meta{reconstruction}. If +% differs from the result of |e|-expanding \meta{reconstruction}. If % all of these tests succeed then the \meta{true code} is run. % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 9fea120c910..d5bdf4d9699 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -1023,12 +1023,12 @@ % all). Spaces are trimmed from the ends of the \meta{key} and \meta{value}, % then one \emph{outer} set of braces is removed from the \meta{key} % and \meta{value} as part of the processing. If you need exactly the output -% shown above, you'll need to either \texttt{x}-type or \texttt{e}-type expand +% shown above, you'll need to either \texttt{e}-type or \texttt{x}-type expand % the function. % \begin{texnote} % The result of each list element is returned within \cs{exp_not:n}, which % means that the converted input stream does not expand further when -% appearing in an \texttt{x}-type or \texttt{e}-type argument expansion. +% appearing in an \texttt{e}-type or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1068,7 +1068,7 @@ % \begin{texnote} % The result is returned within \cs{exp_not:n}, which means that the % converted input stream does not expand further when appearing in an -% \texttt{x}-type or \texttt{e}-type argument expansion. +% \texttt{e}-type or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1805,7 +1805,7 @@ % } % Searching for a property means finding the last |.| in the input, % 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 +% strings, so there is no problem using an \texttt{e}-type expansion. Since % \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this % function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some % speed. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index 78adefa2dae..cd483bc1b8d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index c0ec4f69a04..47570a46ac2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -244,13 +244,12 @@ % Wrapper around |require'|\meta{module}|'|. % \begin{macrocode} \str_new:N \l_@@_err_msg_str -\cs_generate_variant:Nn \msg_error:nnnn { nnnV } \cs_new_protected:Npn \lua_load_module:n #1 { \bool_if:nF { \@@_load_module_p:n { #1 } } { \msg_error:nnnV - { luatex } { module-not-found } { #1 } { \l_@@_err_msg_str } + { luatex } { module-not-found } { #1 } \l_@@_err_msg_str } } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 382aab68ddd..57d7f05b3de 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -288,7 +288,7 @@ % message, extra arguments are ignored, or empty arguments added (of % course the sense of the message may be impaired). The four arguments are % converted to strings before being added to the message text: the -% \texttt{x}-type variants should be used to expand material. +% \texttt{e}-type variants should be used to expand material. % Note that this expansion takes place with the standard definitions in % effect, which means that shorthands such as |\~| or |\\| are % \emph{not} available; instead one should use \cs{iow_char:N} |\~| and @@ -961,7 +961,7 @@ % \begin{macro}{\@@_interrupt_text:n, \@@_interrupt_more_text:n} % First setup \TeX{}'s \tn{errhelp} register with the extra help |#1|, % then build a nice-looking error message with |#2|. Everything is -% done using \texttt{x}-type expansion as the new line markers are +% done using \texttt{e}-type expansion as the new line markers are % different for the two type of text and need to be correctly set up. % The auxiliary \cs{@@_interrupt_more_text:n} receives its argument % as a line-wrapped string, which is thus unaffected by expansion. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index e85262831f2..afd91b76b34 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx index 9c6172caafc..9380b62220d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index c676e7343e6..f57c433fd63 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 8fb7648af53..320a0b926b5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -335,8 +335,8 @@ % \cs{prop_get:NnN}. % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{value} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -358,7 +358,7 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} primitive % (\cs{exp_not:n}), which means that the key--value list does not expand -% further when appearing in an \texttt{x}-type or \texttt{e}-type argument expansion. +% further when appearing in an \texttt{e}-type or \texttt{x}-type argument expansion. % It also needs exactly two steps of expansion. % \end{texnote} % \end{function} @@ -1258,7 +1258,7 @@ % \meta{value} may contain arbitrary tokens, it is not safe to include % them in the argument of \cs{@@_split:NnTF}. We thus start by % storing in \cs{l_@@_internal_tl} tokens which (after -% \texttt{x}-expansion) encode the key--value pair. This variable can +% \texttt{e}-expansion) encode the key--value pair. This variable can % safely be used in \cs{@@_split:NnTF}. If the \meta{key} was absent, % append the new key--value to the list. % Otherwise concatenate the extracts |##1| diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index d5152295827..d5687886f5f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -31,7 +31,7 @@ % \fi % % \title{^^A -% The \pkg{l3quark} package\\ Quarks^^A +% The \pkg{l3quark} package\\ Quarks and scan marks^^A % } % % \author{^^A @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index cd7bd9f33b0..c07583f539e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -1090,7 +1090,7 @@ % When actually building the result, % \begin{itemize} % \item \tn{toks}\meta{position} holds \meta{tokens} which \texttt{o}- -% and \texttt{x}-expand to the \meta{position}-th token in the query. +% and \texttt{e}-expand to the \meta{position}-th token in the query. % \item \cs{g_@@_balance_intarray} holds the balance of begin-group and % end-group character tokens which appear before that point in the % token list. @@ -1160,12 +1160,12 @@ % % \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 +% During the building phase we wish to add \texttt{e}-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:Ne} is provided because it is more -% efficient than \texttt{x}-expanding with \cs{exp_not:n}. +% efficient than \texttt{e}-expanding with \cs{exp_not:n}. % \begin{macrocode} \cs_new_protected:Npn \@@_toks_put_left:Ne #1#2 { @@ -1188,7 +1188,7 @@ % \begin{macro}[rEXP]{\@@_curr_cs_to_str:} % Expands to the string representation of the token (known to be a % control sequence) at the current position \cs{l_@@_curr_pos_int}. -% It should only be used in \texttt{x}-expansion to avoid losing a +% It should only be used in \texttt{e}/\texttt{x}-expansion to avoid losing a % leading space. % \begin{macrocode} \cs_new:Npn \@@_curr_cs_to_str: @@ -1705,14 +1705,14 @@ % a string, then read from left to right, interpreting backslashes as % escaping the next character. Unescaped characters are fed to the % function \meta{inline~1}, and escaped characters are fed to the function -% \meta{inline~2} within an \texttt{x}-expansion context (typically those +% \meta{inline~2} within an \texttt{e}-expansion context (typically those % functions perform some tests on their argument to decide how to output % them). The escape sequences |\a|, |\e|, |\f|, |\n|, |\r|, |\t| and % |\x| are recognized, and those are replaced by the corresponding % character, then fed to \meta{inline~3}. The result is then left in the % input stream. Spaces are ignored unless escaped. % -% The conversion is done within an \texttt{x}-expanding assignment. +% The conversion is done within an \texttt{e}-expanding assignment. % % \begin{macro}{\@@_escape_use:nnnn} % The result is built in \cs{l_@@_internal_a_tl}, which is then left @@ -2393,7 +2393,7 @@ % \begin{macro}{\@@_compile:w, \@@_compile_end:} % Used when compiling a user regex or a regex for the |\c{...}| escape % sequence within another regex. Start building a token list within a -% group (with \texttt{x}-expansion at the outset), and set a few +% group (with \texttt{e}-expansion at the outset), and set a few % variables (group level, catcodes), then start the first branch. At % the end, make sure there are no dangling classes nor groups, close % the last branch: we are done building \cs{l_@@_internal_regex}. @@ -3638,7 +3638,7 @@ % % \begin{macro}[EXP]{\@@_compile_u_loop:NN} % We collect the characters for the argument of |\u| within an -% \texttt{x}-expanding assignment. In principle we could just wait to +% \texttt{e}-expanding assignment. In principle we could just wait to % encounter a right brace, but this is unsafe: if the right brace was % missing, then we would reach the end-markers of the regex, and % continue, leading to obscure fatal errors. Instead, we only allow @@ -4220,7 +4220,7 @@ \cs_new_protected:Npn \@@_show_item_exact_cs:n #1 { \seq_set_split:Nnn \l_@@_internal_seq { \scan_stop: } {#1} - \seq_set_map_x:NNn \l_@@_internal_seq + \seq_set_map_e:NNn \l_@@_internal_seq \l_@@_internal_seq { \iow_char:N\\##1 } \@@_show_one:n { control~sequence~ \seq_use:Nn \l_@@_internal_seq { ~or~ } } @@ -5363,7 +5363,7 @@ } \cs_new_protected:Npn \@@_match_once_init_aux: { - \tl_build_clear:N \l_@@_matched_analysis_tl + \tl_build_begin:N \l_@@_matched_analysis_tl \tl_clear:N \l_@@_curr_analysis_tl } % \end{macrocode} @@ -5663,7 +5663,7 @@ \l_@@_fresh_thread_bool \int_set_eq:NN \l_@@_success_pos_int \l_@@_curr_pos_int \int_set_eq:NN \l_@@_last_char_success_int \l_@@_last_char_int - \tl_build_clear:N \l_@@_matched_analysis_tl + \tl_build_begin:N \l_@@_matched_analysis_tl \tl_set_eq:NN \l_@@_success_submatches_tl \l_@@_curr_submatches_tl \prg_break: @@ -5748,7 +5748,7 @@ % \cs{exp_not:n} requires a braced argument. As far as I can tell, it % is only needed if the user tries to include in the replacement text % a control sequence set equal to a macro parameter character, such as -% \cs{c_parameter_token}. Indeed, within an \texttt{x}-expanding +% \cs{c_parameter_token}. Indeed, within an \texttt{e}/\texttt{x}-expanding % assignment, \cs{exp_not:N}~|#| behaves as a single |#|, whereas % \cs{exp_not:n}~|{#}| behaves as a doubled |##|. % \begin{macrocode} @@ -5774,7 +5774,7 @@ % exclusive. The function \cs{@@_query_range:nn} \Arg{min} % \Arg{max} unpacks registers from the position \meta{min} to the % position $\meta{max}-1$ included. Once this is expanded, a second -% \texttt{x}-expansion results in the actual tokens from the +% \texttt{e}-expansion results in the actual tokens from the % query. That second expansion is only done by user functions at the % very end of their operation, after checking (and correcting) the % brace balance first. @@ -6056,9 +6056,7 @@ % Unless the submatch appears inside a |\c{...}| or |\u{...}| % construction, it must be taken into account in the brace balance. % Later on, |##1| will be replaced by a pointer to the $0$-th submatch for a -% given match. There is an \cs{exp_not:N} here as at the point-of-use -% of \cs{g_@@_balance_tl} there is an \texttt{x}-type expansion which is needed -% to get |##1| in correctly. +% given match. % \begin{macrocode} \cs_new_protected:Npn \@@_replacement_put_submatch:n #1 { @@ -6292,7 +6290,7 @@ % % \begin{macro}{\@@_replacement_c_A:w} % For an active character, expansion must be avoided, twice because we -% later do two \texttt{x}-expansions, to unpack \tn{toks} for the +% later do two \texttt{e}-expansions, to unpack \tn{toks} for the % query, and to expand their contents to tokens of the query. % \begin{macrocode} \char_set_catcode_active:N \^^@ @@ -6305,7 +6303,7 @@ % An explicit begin-group token increases the balance, unless within a % |\c{...}| or |\u{...}| construction. Add the desired begin-group % character, using the standard \cs{if_false:} trick. We eventually -% \texttt{x}-expand twice. The first time must yield a balanced token +% \texttt{e}-expand twice. The first time must yield a balanced token % list, and the second one gives the bare begin-group token. The % \cs{exp_after:wN} is not strictly needed, but is more consistent % with \pkg{l3tl-analysis}. @@ -6326,7 +6324,7 @@ % This is not quite catcode-related: when the user requests a % character with category \enquote{control sequence}, the % one-character control symbol is returned. As for the active -% character, we prepare for two \texttt{x}-expansions. +% character, we prepare for two \texttt{e}-expansions. % \begin{macrocode} \cs_new_protected:Npn \@@_replacement_c_C:w #1#2 { @@ -6347,7 +6345,7 @@ % \end{macro} % % \begin{macro}{\@@_replacement_c_E:w} -% Similar to the begin-group case, the second \texttt{x}-expansion +% Similar to the begin-group case, the second \texttt{e}-expansion % produces the bare end-group token. % \begin{macrocode} \char_set_catcode_group_end:N \^^@ @@ -6391,7 +6389,7 @@ % % \begin{macro}{\@@_replacement_c_P:w} % For macro parameters, expansion is a tricky issue. We need to -% prepare for two \texttt{x}-expansions and passing through various +% prepare for two \texttt{e}-expansions and passing through various % macro definitions. Note that we cannot replace one \cs{exp_not:n} by % doubling the macro parameter characters because this would misbehave % if a mischievous user asks for |\c{\cP\#}|, since that macro @@ -7213,7 +7211,7 @@ % this match; we need to add the tokens from the end of the match to % the end of the query. Finally, store the result in the user's % variable after closing the group: this step involves an additional -% \texttt{x}-expansion, and checks that braces are balanced in the +% \texttt{e}-expansion, and checks that braces are balanced in the % final result. % \begin{macrocode} \cs_new_protected:Npn \@@_replace_once:nnN #1#2 @@ -7303,7 +7301,7 @@ % \@@_group_end_replace:N, \@@_group_end_replace_try:, % \@@_group_end_replace_check:w, \@@_group_end_replace_check:n % } -% At this stage \cs{l_@@_internal_a_tl} (|x|-expands to the desired +% At this stage \cs{l_@@_internal_a_tl} (|e|-expands to the desired % result). Guess from \cs{l_@@_balance_int} the number of braces to % add before or after the result then try expanding. The simplest % case is when \cs{l_@@_internal_a_tl} together with the braces we @@ -7476,7 +7474,7 @@ \@@_single_match: #1 \@@_match_init: - \tl_build_clear:N \l_@@_input_tl + \tl_build_begin:N \l_@@_input_tl \@@_match_once_init: \peek_analysis_map_inline:n { @@ -7499,7 +7497,7 @@ % match. For \cs{peek_regex_remove_once:nTF} we reinsert the tokens % seen only if the match failed; otherwise we just reinsert the % tokens~|#1|, with one expansion. To be more precise, |#1| consists -% of tokens that \texttt{o}-expand and \texttt{x}-expand to the last +% of tokens that \texttt{o}-expand and \texttt{e}-expand to the last % token seen, for example it is \cs{exp_not:N} \meta{cs} for a control % sequence. This means that just doing \cs{exp_after:wN} % \cs{l_@@_peek_true_tl} |#1| would be unsafe because the expansion of @@ -7661,12 +7659,12 @@ % \begin{macro}{\@@_peek_replacement_put:n} % While building the replacement function % \cs{@@_replacement_do_one_match:n}, we often want to put simple -% material, given as |#1|, whose \texttt{x}-expansion +% material, given as |#1|, whose \texttt{e}-expansion % \texttt{o}-expands to a single token. Normally we can just add the % token to \cs{l_@@_build_tl}, but for % \cs{peek_regex_replace_once:nnTF} we eventually want to do some % strange expansion that is basically using \cs{exp_after:wN} to jump -% through numerous tokens (we cannot use \texttt{x}-expansion like for +% through numerous tokens (we cannot use \texttt{e}-expansion like for % \cs{regex_replace_once:nnNTF} because it is ok for the result to be % unbalanced since we insert it in the input stream rather than % storing it. When within a csname we don't do any such shenanigan diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 56662dc6235..d9ab9ba1dd0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -327,8 +327,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -342,8 +342,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -740,15 +740,15 @@ % \end{texnote} % \end{function} % -% \begin{function}[added = 2020-07-16] -% {\seq_set_map_x:NNn, \seq_gset_map_x:NNn} +% \begin{function}[added = 2020-07-16, updated = 2023-10-26] +% {\seq_set_map_e:NNn, \seq_gset_map_e:NNn} % \begin{syntax} -% \cs{seq_set_map_x:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function} +% \cs{seq_set_map_e:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function} % \end{syntax} % Applies \meta{inline function} to every \meta{item} stored % within the \meta{seq~var_2}. The \meta{inline function} should % consist of code which will receive the \meta{item} as |#1|. -% The sequence resulting from \texttt{x}-expanding +% The sequence resulting from \texttt{e}-expanding % \meta{inline function} applied to each \meta{item} % is assigned to \meta{seq~var_1}. As such, the code % in \meta{inline function} should be expandable. @@ -796,8 +796,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{items} -% do not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% do not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -821,8 +821,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{items} -% do not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% do not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1308,14 +1308,14 @@ % spaces the item is enclosed within braces. After % \cs{tl_replace_all:Nnn}, the token list \cs{l_@@_internal_a_tl} % is a repetition of the pattern -% \cs{@@_set_split_auxi:w} \cs{prg_do_nothing:} +% \cs{@@_set_split:Nw} \cs{prg_do_nothing:} % \meta{item with spaces} \cs{@@_set_split_end:}. -% Then, \texttt{x}-expansion causes \cs{@@_set_split_auxi:w} +% Then, \texttt{e}-expansion causes \cs{@@_set_split:Nw} % to trim spaces, and leaves its result as -% \cs{@@_set_split_auxii:w} \meta{trimmed item} +% \cs{@@_set_split:w} \meta{trimmed item} % \cs{@@_set_split_end:}. This is then converted % to the \pkg{l3seq} internal structure by another -% \texttt{x}-expansion. In the first step, we insert +% \texttt{e}-expansion. In the first step, we insert % \cs{prg_do_nothing:} to avoid losing braces too early: % that would cause space trimming to act within those % lost braces. The second step is solely there to strip @@ -1480,7 +1480,7 @@ % % \begin{macro}{\@@_wrap_item:n} % This function converts its argument to a proper sequence item -% in an \texttt{x}-expansion context. +% in an \texttt{e}-expansion context. % \begin{macrocode} \cs_new:Npn \@@_wrap_item:n #1 { \exp_not:n { \@@_item:n {#1} } } % \end{macrocode} @@ -1542,15 +1542,15 @@ % items one at a time to an intermediate sequence. % The approach taken is therefore similar to % that in \cs{@@_pop_right:NNN}, using a \enquote{flexible} -% \texttt{x}-type expansion to do most of the work. As \cs{tl_if_eq:nnT} +% \texttt{e}-type expansion to do most of the work. As \cs{tl_if_eq:nnT} % is not expandable, a two-part strategy is needed. First, the -% \texttt{x}-type expansion uses \cs{str_if_eq:nnT} to find potential +% \texttt{e}-type expansion uses \cs{str_if_eq:nnT} to find potential % matches. If one is found, the expansion is halted and the necessary -% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{x}-type +% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{e}-type % is started again, including all of the items copied already. This % happens repeatedly until the entire sequence has been scanned. The code -% is set up to avoid needing and intermediate scratch list: the lead-off -% \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost. +% is set up to avoid needing an intermediate scratch list: the lead-off +% \texttt{e}-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:Ne } @@ -1993,7 +1993,7 @@ % use some of the same ideas as getting from the right. What is needed is a % \enquote{flexible length} way to set a token list variable. This is % supplied by the |{ \if_false: } \fi:| \ldots -% |\if_false: { \fi: }| construct. Using an \texttt{x}-type +% |\if_false: { \fi: }| construct. Using an \texttt{e}-type % expansion and a \enquote{non-expanding} definition for \cs{@@_item:n}, % the left-most $n - 1$ entries in a sequence of $n$ items are stored % back in the sequence. That needs a loop of unknown length, hence using the @@ -2280,7 +2280,7 @@ % } % \UnitTested % This is just a specialised version of the in-line mapping function, -% using an \texttt{x}-type expansion for the code set up so that the +% using an \texttt{e}-type expansion for the code set up so that the % number of |#| tokens required is as expected. % \begin{macrocode} \cs_new_protected:Npn \seq_map_variable:NNn #1#2#3 @@ -2389,17 +2389,17 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn} -% \begin{macro}{\@@_set_map_x:NNNn} +% \begin{macro}{\seq_set_map_e:NNn, \seq_gset_map_e:NNn} +% \begin{macro}{\@@_set_map_e:NNNn} % Very similar to \cs{seq_set_filter:NNn}. We could actually % merge the two within a single function, but it would have weird % semantics. % \begin{macrocode} -\cs_new_protected:Npn \seq_set_map_x:NNn - { \@@_set_map_x:NNNn \__kernel_tl_set:Ne } -\cs_new_protected:Npn \seq_gset_map_x:NNn - { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne } -\cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4 +\cs_new_protected:Npn \seq_set_map_e:NNn + { \@@_set_map_e:NNNn \__kernel_tl_set:Ne } +\cs_new_protected:Npn \seq_gset_map_e:NNn + { \@@_set_map_e:NNNn \__kernel_tl_gset:Ne } +\cs_new_protected:Npn \@@_set_map_e:NNNn #1#2#3#4 { \@@_push_item_def:n { \exp_not:N \@@_item:n {#4} } #1 #2 { #3 } @@ -2411,7 +2411,7 @@ % % \begin{macro}{\seq_set_map:NNn, \seq_gset_map:NNn} % \begin{macro}{\@@_set_map:NNNn} -% Similar to \cs{seq_set_map_x:NNn}, but prevents expansion of the +% Similar to \cs{seq_set_map_e:NNn}, but prevents expansion of the % <inline function>. % \begin{macrocode} \cs_new_protected:Npn \seq_set_map:NNn diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 3130ef85970..9dd5b3cbedb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -907,7 +907,7 @@ % Inserts a horizontal \meta{skip} into the current list. % The argument can also be a \meta{dim}. % \begin{texnote} -% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip} renamed. +% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip}. % \end{texnote} % \end{function} % @@ -920,7 +920,7 @@ % Inserts a vertical \meta{skip} into the current list. % The argument can also be a \meta{dim}. % \begin{texnote} -% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip} renamed. +% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip}. % \end{texnote} % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 0a987712f32..a82fa5c16fc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index c4fc416d428..a36a77ec185 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -345,7 +345,7 @@ % % \begin{variable}{str_byte, str_error} % Conversions from one \meta{encoding}/\meta{escaping} pair to another -% are done within \texttt{x}-expanding assignments. Errors are +% are done within \texttt{e}-expanding assignments. Errors are % signalled by raising the relevant flag. % \begin{macrocode} \flag_new:n { str_byte } @@ -979,7 +979,7 @@ % non-Unicode-aware engines we use a fall-back character |?| rather % than nothing when given a character code outside $[0,255]$. We % detect the presence of bad characters using a flag and only produce -% a single error after the \texttt{x}-expanding assignment. +% a single error after the \texttt{e}-expanding assignment. % \begin{macrocode} \bool_lazy_any:nTF { @@ -2515,7 +2515,7 @@ % its second argument (expanded or not). It sets \cs{@@_tmp:w} to % expand to the character code of either of its two arguments % depending on endianness, then triggers the \texttt{_loop} auxiliary -% inside an \texttt{x}-expanding assignment to \cs{g_@@_result_tl}. +% inside an \texttt{e}-expanding assignment to \cs{g_@@_result_tl}. % % The \texttt{_loop} auxiliary first checks for the end-of-string % marker \cs{s_@@_stop}, calling the \texttt{_end} auxiliary if diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 99c0f980a51..6aca45dae01 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -1036,7 +1036,7 @@ % simplified version of the token list code because neither the % delimiter nor the replacement can contain macro parameters or % braces. The delimiter \cs{s_@@_mark} cannot appear in the string to -% edit so it is used in all cases. Some |x|-expansion is unnecessary. +% edit so it is used in all cases. Some |e|-expansion is unnecessary. % There is no need to avoid losing braces nor to protect against % expansion. The ending code is much simplified and does not need to % hide in braces. @@ -1266,7 +1266,7 @@ { \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop } \cs_generate_variant:Nn \str_case:nn { V , o , e , nV , nv } \prg_generate_conditional_variant:Nnn \str_case:nn - { V , o , nV , nv } { T , F , TF } + { V , o , e , nV , nv } { T , F , TF } \cs_new_eq:NN \str_case:Nn \str_case:Vn \cs_new_eq:NN \str_case:NnT \str_case:VnT \cs_new_eq:NN \str_case:NnF \str_case:VnF diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 577e4daa199..65c64f4da3c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -54,7 +54,7 @@ % \begin{variable}[added = 2015-09-19, updated = 2019-10-27]{\c_sys_jobname_str} % Constant that gets the \enquote{job name} assigned when \TeX{} starts. % \begin{texnote} -% This copies the contents of the primitive \tn{jobname}. For technical +% This is the \TeX{} primitive \tn{jobname}. For technical % reasons, the string here is not of the same internal form as other, % but may be manipulated using normal string functions. % \end{texnote} @@ -73,7 +73,8 @@ % The date and time at which the current job was started: these are % all reported as integers. % \begin{texnote} -% Whilst the underlying primitives can be altered by the user, this +% Whilst the underlying \TeX{} primitives \tn{time}, \tn{day}, \tn{month}, +% and~\tn{year} can be altered by the user, this % interface to the time and date is intended to be the \enquote{real} % values. % \end{texnote} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index e34e9043a54..7c4eca5178a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -192,8 +192,12 @@ % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnn} % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnw} % \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnN} +% \begin{macro}[EXP] +% { +% \@@_change_case_codepoint_title_auxi:nnnn , +% \@@_change_case_codepoint_title_auxii:nnnn +% } % \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnn} -% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnnn} % \begin{macro}[EXP]{\@@_change_case_codepoint:nnnnn} % \begin{macro}[EXP]{\@@_change_case_codepoint:nn} % \begin{macro}[EXP] @@ -695,40 +699,39 @@ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5 } % \end{macrocode} -% For titlecasing, we need to fully expand the new character to see if it -% is a letter (or active). +% For titlecasing, we need to obtain the general category of the current +% codepoint. % \begin{macrocode} \cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4 { \bool_if:NTF \l_text_titlecase_check_letter_bool { - \tl_if_single:nTF {#4} + \exp_args:Ne \@@_change_case_codepoint_title_auxi:nnnn { - \bool_lazy_or:nnTF - { \token_if_letter_p:N #4 } - { - \bool_lazy_and_p:nn - { \token_if_active_p:N #4 } - { ! \int_compare_p:nNn {`#4} < { "80 } } - } - { \@@_change_case_codepoint_title:nnn } - { \@@_change_case_codepoint_title:nnnnn { title } {#1} } + \codepoint_to_category:n + { \@@_codepoint_from_chars:Nw #4 } } - { \@@_change_case_codepoint_title:nnn } } { \@@_change_case_codepoint_title:nnn } {#2} {#3} {#4} } +\cs_new:Npn \@@_change_case_codepoint_title_auxi:nnnn #1#2#3#4 + { + \tl_if_head_eq_charcode:nNTF {#1} { L } + { \@@_change_case_codepoint_title:nnn } + { \@@_change_case_codepoint_title_auxii:nnnn { title } } + {#2} {#3} {#4} + } \cs_new:Npn \@@_change_case_codepoint_title:nnn #1#2#3 - { \@@_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} } -\cs_new:Npn \@@_change_case_codepoint_title:nnnnn #1#2#3#4#5 + { \@@_change_case_codepoint_title_auxii:nnnn { end } {#1} {#2} {#3} } +\cs_new:Npn \@@_change_case_codepoint_title_auxii:nnnn #1#2#3#4 { - \cs_if_exist_use:cF { @@_change_case_title_ #4 :nnnnn } + \cs_if_exist_use:cF { @@_change_case_title_ #3 :nnnnn } { - \cs_if_exist_use:cF { @@_change_case_upper_ #4 :nnnnn } + \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnnn } { \@@_change_case_codepoint:nnnnn } } - {#1} {#2} {#3} {#4} {#5} + { title } {#1} {#2} {#3} {#4} } \cs_new:Npn \@@_change_case_codepoint:nnnnn #1#2#3#4#5 { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx index d863e51acef..4399853c159 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index 5770853cd72..afd0e6b8506 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index ea33b588557..131084f8328 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -188,13 +188,12 @@ % \end{itemize} % % Determining whether non-letter characters at the start of text should count -% as the uppercase element is controllable. When \cs{l_text_titlecase_check_letter_bool} is -% \texttt{true}, characters which are not letters (category code~$11$) are -% \enquote{skipped}: the first \emph{letter} is uppercased. -% (With $8$-bit engines, this is extended to active characters which form -% part of a multi-byte letter codepoint.) When -% \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first -% character is uppercased, irrespective of the category code of the character. +% as the uppercase element is controllable. When +% \cs{l_text_titlecase_check_letter_bool} is \texttt{true}, codepoints which are +% not letters (Unicode general category \texttt{L}) are not changed, and only +% the first \emph{letter} is uppercased. +% When \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first +% codepoint is uppercased, irrespective of the general code of the character. % % \begin{function}[added = 2022-07-04] % { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 6336b0d0765..2ad8d9b9f90 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -61,7 +61,7 @@ % \meta{token}: % \begin{itemize} % \item \meta{tokens}, which both \texttt{o}-expand and -% \texttt{x}-expand to the \meta{token}. The detailed form of +% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of % \meta{tokens} may change in later releases. % \item \meta{char code}, a decimal representation of the character % code of the \meta{token}, $-1$ if it is a control sequence. @@ -132,7 +132,7 @@ % We thus need a way to encode any \meta{token} (even begin-group and % end-group character tokens) in a way amenable to manipulating tokens % individually. The best we can do is to find \meta{tokens} which both -% \texttt{o}-expand and \texttt{x}-expand to the given +% \texttt{o}-expand and \texttt{e}/\texttt{x}-expand to the given % \meta{token}. Collecting more information about the category code and % character code is also useful for regular expressions, since most % regexes are catcode-agnostic. The internal format thus takes the form @@ -140,7 +140,7 @@ % \begin{quote} % \meta{tokens} \cs{s_@@} \meta{catcode} \meta{char code} \cs{s_@@} % \end{quote} -% The \meta{tokens} \texttt{o}- \emph{and} \texttt{x}-expand to the +% The \meta{tokens} \texttt{o}- \emph{and} \texttt{e}/\texttt{x}-expand to the % original token in the token list or to the cluster of tokens % corresponding to one Unicode character in the given encoding (for % \pkg{l3str-convert}). The \meta{catcode} is given as a single hexadecimal @@ -155,7 +155,7 @@ % converting from a general token list to the internal format. % % The current rule for converting a \meta{token} to a balanced set of -% \meta{tokens} which both \texttt{o}-expands and \texttt{x}-expands to +% \meta{tokens} which both \texttt{o}-expands and \texttt{e}/\texttt{x}-expands to % it is the following. % \begin{itemize} % \item A control sequence |\cs| becomes |\exp_not:n { \cs }| @@ -189,7 +189,7 @@ % then need to control expansion much more carefully: compare % \cs{int_value:w} |`#1| \cs{s_@@} with \cs{int_value:w} |`#1| % \cs{exp_stop_f:} \cs{exp_not:N} \cs{q_mark} to extract a character -% code followed by the delimiter in an \texttt{x}-expansion. +% code followed by the delimiter in an \texttt{e}-expansion. % \begin{macrocode} \scan_new:N \s_@@ % \end{macrocode} @@ -350,7 +350,7 @@ % (\texttt{N}-type) argument by \TeX{}. The plan is to have a two pass % system. In the first pass, locate special tokens, and store them in % various \tn{toks} registers. In the second pass, which is done within -% an \texttt{x}-expanding assignment, normal tokens are taken in as +% an \texttt{e}-expanding assignment, normal tokens are taken in as % \texttt{N}-type arguments, and special tokens are retrieved from the % \tn{toks} registers, and removed from the input stream by some means. % The whole process takes linear time, because we avoid building the @@ -830,7 +830,7 @@ % while a control sequence is always longer (we have set the escape % character to a printable value). In both cases, we leave % \cs{exp_not:n} \Arg{token} \cs{s_@@} in the input stream -% (after \texttt{x}-expansion). Here, \cs{exp_not:n} is used +% (after \texttt{e}-expansion). Here, \cs{exp_not:n} is used % rather than \cs{exp_not:N} because |#3| could be % a macro parameter character or could be \cs{s_@@} % (which must be hidden behind braces in the result). @@ -937,7 +937,7 @@ % Check now whether we reached the end (we shouldn't keep the trailing % end-group character that marked the end of the token list in the % first pass). -% Unpack the \tn{toks} register: when \texttt{x}-expanding again, +% Unpack the \tn{toks} register: when \texttt{e}/\texttt{x}-expanding again, % we will get the special token. % Then leave the category code in the input stream, followed by % the character code, and call \cs{@@_analysis_b_loop:w} with the next index. @@ -1069,7 +1069,7 @@ % \end{macro} % % \begin{macro}[rEXP]{\@@_analysis_show:, \@@_analysis_show_loop:wNw} -% Here, |#1| \texttt{o}- and \texttt{x}-expands to the token; +% Here, |#1| \texttt{o}- and \texttt{e}/\texttt{x}-expands to the token; % |#2| is the category code (one uppercase hexadecimal digit), % $0$ for control sequences; % |#3| is the character code, which we ignore. @@ -1390,7 +1390,7 @@ % characters to anything else than character code~$32$), then we apply % \cs{@@_analysis_b_char:Nn}, which detects active characters by % comparing them to \cs{tex_undefined:D}, and we must have undefined -% the active space for this test to work ---we use an |x|-expanding +% the active space for this test to work ---we use an |e|-expanding % assignment to get the active space in the right place. Finally % \cs{@@_peek_analysis_char:w} puts the arguments in the correct % order, including \cs{exp_not:n} for macro parameter characters and @@ -1549,7 +1549,7 @@ % character code. In the latter two cases we call % \cs{char_generate:nn} with suitable arguments and put suitable % \cs{if_false:} \cs{fi:} constructions to make the result balanced -% and such that \texttt{o}-expanding or \texttt{x}-expanding gives +% and such that \texttt{o}-expanding or \texttt{e}/\texttt{x}-expanding gives % back a single (unbalanced) begin-group or end-group character. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_explicit:n #1 diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx new file mode 100644 index 00000000000..08eb31e1b21 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx @@ -0,0 +1,329 @@ +% \iffalse meta-comment +% +%% File: l3tl-build.dtx +% +% Copyright (C) 2018-2023 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% This file is part of the "l3kernel bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/latex3 +% +% for those people who are interested. +% +%<*driver> +\documentclass[full,kernel]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \title{^^A +% The \textsf{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A +% } +% +% \author{^^A +% The \LaTeX{} Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% \date{Released 2023-11-01} +% +% \maketitle +% +% \begin{documentation} +% +% \section{Constructing \meta{tl~var} by accumulation} +% +% When creating a \meta{tl~var} by accumulation of many tokens, the performance +% available using a combination of \cs{tl_set:Nn} and \cs{tl_put_right:Nn} or +% similar begins to become an issue. To address this, a set of functions are +% available to \enquote{build} a \meta{tl~var}. The performance of this approach +% is much more efficient than the standard \cs{tl_put_right:Nn}, but the +% constructed token list cannot be accessed during construction other than +% by methods provided in this section. +% +% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N} +% \begin{syntax} +% \cs{tl_build_begin:N} \meta{tl~var} +% \end{syntax} +% Clears the \meta{tl~var} and sets it up to support other +% \cs[no-index]{tl_build_\ldots{}} functions. Until \cs{tl_build_end:N} +% \meta{tl~var} is called, applying any function from \pkg{l3tl} other +% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect +% results. The |begin| and |gbegin| functions must be used for local +% and global \meta{tl~var} respectively. +% \end{function} +% +% \begin{function}[added = 2018-04-01] +% { +% \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} +% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens} +% \end{syntax} +% Adds \meta{tokens} to the left or right side of the current contents +% of \meta{tl~var}. The \meta{tl~var} must have been set up with +% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and +% |gput| functions must be used for local and global \meta{tl~var} +% respectively. The |right| functions are about twice faster than the +% |left| functions. +% \end{function} +% +% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N} +% \begin{syntax} +% \cs{tl_build_end:N} \meta{tl~var} +% \end{syntax} +% Gets the contents of \meta{tl~var} and stores that into the +% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}. +% The \meta{tl~var} must have +% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. +% The |end| and |gend| functions must be used for local and global +% \meta{tl~var} respectively. These functions completely remove the +% setup code that enabled \meta{tl~var} to be used for other +% \cs[no-index]{tl_build_\ldots{}} functions. After the action of +% |end|/|gend|, the \meta{tl~var} may be manipulated using standard +% \texttt{tl} functions. +% \end{function} +% +% \end{documentation} +% +% \begin{implementation} +% +% \section{\pkg{l3tl-build} implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=tl> +% \end{macrocode} +% +% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N} +% \meta{tl~var}, the \meta{tl~var} has the structure +% \begin{quote} +% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn} +% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right} +% \end{quote} +% where \meta{right} is not braced. The \enquote{data} it represents is +% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed +% by \meta{right}. The \meta{next~tl} is a token list variable whose +% 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: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} +% First construct the \meta{next~tl}: using a prime here conflicts +% with the usual \pkg{expl3} convention but we need a name that can be +% 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: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} +% to empty |#1| and make sure it is defined, but logging the +% definition does not seem useful so we just do |#3| |#1| |{}| to +% clear it locally or globally as appropriate. +% \begin{macrocode} +\cs_new_protected:Npn \tl_build_begin:N #1 + { \@@_build_begin:NN \cs_set_nopar:Npe #1 } +\cs_new_protected:Npn \tl_build_gbegin:N #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 + { + #3 #1 { } + #3 #2 + { + \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: } + \exp_not:n { \@@_build_last:NNn #3 #1 { } } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \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 +% } +% \begin{macro}{\@@_build_last:NNn} +% \begin{macro}{\@@_build_put:nn} +% \begin{macro}{\@@_build_put:nw} +% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most +% of the time this just removes one \cs{exp_end:}. When there are +% none left, \cs{@@_build_last:NNn} is expanded instead. It resets +% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and +% the definition early. Then it makes sure the \meta{next~tl} (its +% argument |#1|) is set-up and starts a new definition. Then +% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left} +% part of the original \meta{tl~var} as appropriate for the definition +% of the \meta{next~tl} (the \meta{right} part is left in the right +% 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: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 +% |e|-expansion of the second argument. +% \begin{macrocode} +\cs_new_protected:Npn \tl_build_put_right:Nn #1#2 + { + \cs_set_nopar:Npe #1 + { \__kernel_exp_not:w \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:Npe #1 + { \__kernel_exp_not:w \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: + \exp_end: \exp_end: \exp_end: \exp_end: \exp_end: + \@@_build_last:NNn #1 #2 { } + } + } + \if_meaning:w \c_empty_tl #2 + \@@_build_begin:NN #1 #2 + \fi: + #1 #2 + { + \__kernel_exp_not:w \exp_after:wN + { + \exp:w \if_false: } } \fi: + \exp_after:wN \@@_build_put:nn \exp_after:wN {#2} + } +\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 } +\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5 + { #2 \@@_build_last:NNn #3 #4 { #1 #5 } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \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 +% } +% \begin{macro}{\@@_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 +% adding the \meta{right} material after the \Arg{left} in the +% |e|-expanding assignment. +% \begin{macrocode} +\cs_new_protected:Npn \tl_build_put_left:Nn #1 + { \@@_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: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 + { + \__kernel_exp_not:w \exp_after:wN + { + \exp:w \exp_after:wN \@@_build_put:nn + \exp_after:wN {#2} {#3} + } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\tl_build_end:N, \tl_build_gend:N} +% \begin{macro}{\@@_build_end_loop:NN} +% 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:Ne} or \cs{tl_gset:Ne}. +% \begin{macrocode} +\cs_new_protected:Npn \tl_build_end:N #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: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 + { + \if_meaning:w \c_empty_tl #1 + \exp_after:wN \use_none:nnnnnn + \fi: + #2 #1 + \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2 + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_build_get:NNN} +% \begin{macro}{\@@_build_get:w, \@@_build_get_end:w} +% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and +% so on, all within an |e|-expanding assignment, and wrap as +% appropriate in \cs{exp_not:n}. The various \meta{left} parts are +% left in the assignment as we go, which enables us to expand the +% \meta{next~tl} at the right place. The various \meta{right} parts +% are eventually picked up in one last \cs{exp_not:n}, with a brace +% trick to wrap all the \meta{right} parts together. +% \begin{macrocode} +\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 + { + \exp_not:n {#4} + \if_meaning:w \c_empty_tl #3 + \exp_after:wN \@@_build_get_end:w + \fi: + \exp_after:wN \@@_build_get:w #3 + } +\cs_new:Npn \@@_build_get_end:w #1#2#3 + { \__kernel_exp_not:w \exp_after:wN { \if_false: } \fi: } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index f3c52e2a0f0..774814ad333 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -566,8 +566,8 @@ % See also \cs{tl_reverse:N}. % \begin{texnote} % The result is returned within \tn{unexpanded}, which means that the token -% list does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% list does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -603,8 +603,8 @@ % consider the slower function \cs{tl_reverse:n}. % \begin{texnote} % The result is returned within \tn{unexpanded}, which means that the token -% list does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% list does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -623,8 +623,8 @@ % stream. % \begin{texnote} % The result is returned within \tn{unexpanded}, which means that the token -% list does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% list does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -873,8 +873,8 @@ % \cs{tl_head:n} leaving nothing in the input stream. % \begin{texnote} % The result is returned within \cs{exp_not:n}, which means that the token -% list does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% list does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -918,8 +918,8 @@ % in \cs{tl_tail:n} leaving nothing in the input stream. % \begin{texnote} % The result is returned within \cs{exp_not:n}, which means that the -% token list does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% token list does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -959,8 +959,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -976,8 +976,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1047,8 +1047,8 @@ % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% or \texttt{e}-type argument expansion. +% does not expand further when appearing in an \texttt{e}-type +% or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1079,7 +1079,7 @@ % \begin{texnote} % The result is returned within \cs{exp_not:n}, which means that the % token list does not expand further when appearing in an -% \texttt{x}-type or \texttt{e}-type argument expansion. +% \texttt{e}-type or \texttt{x}-type argument expansion. % \end{texnote} % \end{function} % @@ -1255,7 +1255,7 @@ % single-line string, as if it appeared in the middle of a line % read from a file. % -% Contrarily to the \tn{scantokens} primitive, \cs{tl_rescan:nn} +% Contrarily to the \tn{scantokens} \eTeX{} primitive, \cs{tl_rescan:nn} % tokenizes the whole string in the same category code regime rather % than one token at a time, so that directives such as \tn{verb} % that rely on changing category codes will not function properly. @@ -2153,7 +2153,7 @@ % All of its work is done between % \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} to avoid % issues in alignments. It does the actual replacement within -% |#3|~|#4|~|{...}|, an \texttt{x}-expanding \meta{assignment}~|#3| to +% |#3|~|#4|~|{...}|, an \texttt{e}-expanding \meta{assignment}~|#3| to % the \meta{tl~var}~|#4|. The auxiliary \cs{@@_replace_next:w} is % called, followed by the \meta{token list}, some tokens including the % \meta{delimiter}~|#1|, followed by the \meta{pattern}~|#5|. @@ -2166,7 +2166,7 @@ % |##1| cannot contain the \meta{delimiter}~|#1| that we worked so % hard to obtain, thus \cs{@@_replace_wrap:w} gets~|##1| as its own % argument~|##1|, and protects it against -% the \texttt{x}-expanding assignment. It also finds \cs{exp_not:n} +% the \texttt{e}-expanding assignment. It also finds \cs{exp_not:n} % as~|##2| and does nothing to it, thus letting through \cs{exp_not:n} % \Arg{replacement} into the assignment. Note that % \cs{@@_replace_next:w} and \cs{@@_replace_wrap:w} are always called @@ -2858,7 +2858,7 @@ % \cs{@@_trim_mark:} expands to nothing in a single expansion. In the case % at hand, we take \cs{__kernel_exp_not:w} \cs{exp_after:wN} as our % continuation, so that space trimming behaves correctly within an -% \texttt{x}-type expansion. +% \texttt{e}-type or \texttt{x}-type expansion. % \begin{macrocode} \cs_new:Npn \tl_trim_spaces:n #1 { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 888ceb36012..81534b54808 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % @@ -456,7 +456,7 @@ % as |macro|s. % \begin{texnote} % This is the \TeX{} primitive \tn{meaning}. -% The \meta{token} can thus be an explicit space tokens or an +% The \meta{token} can thus be an explicit space token or an % explicit begin-group or end-group character token (|{|~or~|}| when % normal \TeX{} category codes apply) even though these are not % valid \texttt{N}-type arguments. @@ -473,7 +473,7 @@ % category code $12$ (the escape character is part of the % \meta{token}). This function requires only a single expansion. % \begin{texnote} -% \cs{token_to_str:N} is the \TeX{} primitive \tn{string} renamed. +% \cs{token_to_str:N} is the \TeX{} primitive \tn{string}. % The \meta{token} can thus be an explicit space tokens or an % explicit begin-group or end-group character token (|{|~or~|}| when % normal \TeX{} category codes apply) even though these are not @@ -752,7 +752,7 @@ % \cs{token_if_primitive:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} % Tests if the \meta{token} is an engine primitive. In \LuaTeX{} -% this includes primitive-like commands defined using |{token.set_lua}|. +% this includes primitive-like commands defined using |token.set_lua|. % \end{function} % % \begin{function}[added = 2020-12-03, EXP, noTF] @@ -968,7 +968,7 @@ % receives three arguments for each \meta{token} in the input stream: % \begin{itemize} % \item \meta{tokens}, which both \texttt{o}-expand and -% \texttt{x}-expand to the \meta{token}. The detailed form of +% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of % \meta{tokens} may change in later releases. % \item \meta{char code}, a decimal representation of the character % code of the \meta{token}, $-1$ if it is a control sequence. @@ -2328,7 +2328,7 @@ % % Characters used as delimiters must have catcode~$12$ % and are obtained through \cs{tl_to_str:n}. This requires doing all -% definitions within \texttt{x}-expansion. The temporary function +% definitions within \texttt{e}-expansion. The temporary function % \cs{@@_tmp:w} used to define each conditional receives three % arguments: the name of the conditional, the auxiliary's delimiter % (also used to name the auxiliary), and the string to which one diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 54486cc0faf..1ee49aeb44e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-10-23} +% \date{Released 2023-11-01} % % \maketitle % |