From 3e6434887745cbe7f306e52188a6113bb39e9f10 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 29 Aug 2023 23:21:00 +0000 Subject: l3kernel (30aug23) git-svn-id: svn://tug.org/texlive/trunk@68106 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 4 +- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 2 +- .../source/latex/l3kernel/l3bootstrap.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3cctab.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3color.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3debug.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 2 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 32 +-- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 4 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 7 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 16 +- .../texmf-dist/source/latex/l3kernel/l3legacy.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 136 +++++++++++- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 68 +++--- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 73 +++++-- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 55 +++-- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- .../source/latex/l3kernel/l3str-convert.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 14 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 24 ++- .../source/latex/l3kernel/l3text-case.dtx | 2 +- .../source/latex/l3kernel/l3text-map.dtx | 2 +- .../source/latex/l3kernel/l3text-purify.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3text.dtx | 2 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 238 ++++++++++++++------- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 3 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 2 +- 57 files changed, 548 insertions(+), 216 deletions(-) (limited to 'Master/texmf-dist/source/latex') diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index de20e5abe84..9adee097c5c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> % -\def\ExplFileDate{2023-08-11}% +\def\ExplFileDate{2023-08-29}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index bc363401677..17cb2467bf6 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index bf51cb55274..aaa4333858e 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 0b4ae268924..34b6ca44efd 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 978c6d95de1..f3a50214254 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index e8804818f24..fc9cdd9e927 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 88455b84721..0eaac6a532c 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index cf1ed0ebc84..2269c6c6869 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index 3597f0bc4e4..1453001a2ae 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index 36e5e8d313d..d700a0f0217 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 14386a14308..a60fe16ff48 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 43a3312231e..b1744b9f7bb 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-08-11} +% \date{Released 2023-08-29} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 58c151045a4..2b40c56fc50 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 922e0315b2a..0d7e3e877a9 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 8ef7950afa1..1c1401e3929 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -126,7 +126,8 @@ % the \meta{false code} is inserted into the input stream. % \end{function} % -% \begin{function}[updated = 2012-02-09]{\iow_open:Nn, \iow_open:cn} +% \begin{function}[updated = 2012-02-09] +% {\iow_open:Nn, \iow_open:NV, \iow_open:cn, \iow_open:cV} % \begin{syntax} % \cs{iow_open:Nn} \meta{stream} \Arg{file name} % \end{syntax} @@ -446,7 +447,8 @@ % % \subsection{Writing to files} % -% \begin{function}[updated = 2012-06-05]{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx} +% \begin{function}[updated = 2012-06-05] +% {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx} % \begin{syntax} % \cs{iow_now:Nn} \meta{stream} \Arg{tokens} % \end{syntax} @@ -703,7 +705,7 @@ % \end{texnote} % \end{variable} % -% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n} +% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n, \file_if_exist:V} % \begin{syntax} % \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code} % \end{syntax} @@ -922,7 +924,7 @@ % \end{function} % % -% \begin{function}[updated = 2017-06-26]{\file_input:n} +% \begin{function}[updated = 2017-06-26]{\file_input:n, \file_input:V} % \begin{syntax} % \cs{file_input:n} \Arg{file name} % \end{syntax} @@ -1634,7 +1636,7 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\iow_open:Nn, \iow_open:cn} +% \begin{macro}{\iow_open:Nn, \iow_open:NV, \iow_open:cn, \iow_open:cV} % \begin{macro}{\@@_open_stream:Nn, \@@_open_stream:NV} % The same idea as for reading, but without the path and without the need % to allow for a conditional version. @@ -1652,7 +1654,7 @@ \@@_open_stream:NV #1 \l_@@_file_name_tl } } -\cs_generate_variant:Nn \iow_open:Nn { c } +\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV } \cs_new_protected:Npn \@@_open_stream:Nn #1#2 { \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop: @@ -1798,7 +1800,11 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx} +% \begin{macro} +% { +% \iow_now:Nn, \iow_now:NV, \iow_now:Nx, +% \iow_now:cn, \iow_now:cV, \iow_now:cx +% } % This routine writes the second argument onto the output stream without % expansion. If this stream isn't open, the output goes to the terminal % instead. If the first argument is no output stream at all, we get an @@ -1816,7 +1822,7 @@ \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J } { \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } } } -\cs_generate_variant:Nn \iow_now:Nn { c, Nx, cx } +\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx } % \end{macrocode} % \end{macro} % @@ -3308,7 +3314,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[TF]{\file_if_exist:n} +% \begin{macro}[TF]{\file_if_exist:n, \file_if_exist:V} % The test for the existence of a file is a wrapper around the function to % add a path to a file. If the file was found, the path contains % something, whereas if the file was not located then the return value @@ -3320,6 +3326,7 @@ { \prg_return_true: } { \prg_return_false: } } +\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF } % \end{macrocode} % \end{macro} % @@ -3360,7 +3367,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\file_input:n} +% \begin{macro}{\file_input:n, \file_input:V} % \begin{macro}{\@@_input:n, \@@_input:V} % \begin{macro}{\@@_input_push:n, \__kernel_file_input_push:n} % \begin{macro}{\@@_input_pop:, \__kernel_file_input_pop:} @@ -3376,6 +3383,7 @@ { \@@_input:V \l_@@_full_name_tl } { \__kernel_file_missing:n {#1} } } +\cs_generate_variant:Nn \file_input:n { V } \cs_new_protected:Npx \@@_input:n #1 { \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist @@ -3751,7 +3759,7 @@ % \begin{macrocode} \tex_endinput:D } -% \begin{macrocode} +% \end{macrocode} % % Now define the actual error message: % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 16d7ad8cf4e..3fb39305353 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index fd74adbb30f..ecdd6ea31cd 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-08-11} +% \date{Released 2023-08-29} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index b79d221f386..1f6b3337610 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 2ce6f8c75aa..6a8d6376fbc 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 6b9443ce090..bce0ddc8fd0 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 320c7ffa934..d9c8cf5685b 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index fbc59aa01fa..0a5ac448aac 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index ea21e32e9c1..9f11464f295 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -404,7 +404,7 @@ \exp:w \exp_end_continue_f:w \@@_parse:n {#3} } \cs_generate_variant:Nn \fp_step_function:nnnN { nnnc } -% \end{macrocode} +% \end{macrocode} % Only floating point numbers (not tuples) are allowed arguments. % Only \enquote{normal} floating points (not $\pm 0$, % $\pm\texttt{inf}$, \texttt{nan}) can be used as step; if positive, diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 76e511868f6..86e2366f2dc 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 948b81b2cc1..bb0e4b12f01 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index d52675b87b8..c0c656189ff 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 725674b62c3..9b59b1759d5 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-08-11} +% \date{Released 2023-08-29} % \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 aef546549ad..f4cc0513add 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 9966e983e5a..17193dd8aff 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 75a307ea9dc..e3693f0a41e 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 64919d9e465..5bb880ead35 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -688,7 +688,7 @@ % Integers can be placed into the output stream with formatting. These % conversions apply to any integer expressions. % -% \begin{function}[updated = 2011-10-22, EXP]{\int_to_arabic:n} +% \begin{function}[updated = 2011-10-22, EXP]{\int_to_arabic:n, \int_to_arabic:v} % \begin{syntax} % \cs{int_to_arabic:n} \Arg{int expr} % \end{syntax} @@ -2024,11 +2024,12 @@ % % \subsection{Formatting integers} % -% \begin{macro}{\int_to_arabic:n} +% \begin{macro}{\int_to_arabic:n, \int_to_arabic:v} % \UnitTested % Nothing exciting here. % \begin{macrocode} \cs_new_eq:NN \int_to_arabic:n \int_eval:n +\cs_generate_variant:Nn \int_to_arabic:n { v } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index c9f97c6304b..cdbf71784c6 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 876aabddddd..c2d442f1832 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index d84b56eee04..8a78f8cd7c2 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -985,7 +985,8 @@ % \end{verbatim} % are treated identically. % -% \begin{function}[rEXP, added=2020-12-19, updated = 2021-05-10]{\keyval_parse:nnn} +% \begin{function}[rEXP, added=2020-12-19, updated = 2021-05-10] +% {\keyval_parse:nnn, \keyval_parse:nnV, \keyval_parse:nnv} % \begin{syntax} % \cs{keyval_parse:nnn} \Arg{code_1} \Arg{code_2} \Arg{key--value list} % \end{syntax} @@ -1023,7 +1024,8 @@ % \end{texnote} % \end{function} % -% \begin{function}[rEXP, updated = 2021-05-10]{\keyval_parse:NNn} +% \begin{function}[rEXP, updated = 2021-05-10] +% {\keyval_parse:NNn, \keyval_parse:NNV, \keyval_parse:NNv} % \begin{syntax} % \cs{keyval_parse:NNn} \meta{function_1} \meta{function_2} \Arg{key--value list} % \end{syntax} @@ -1114,7 +1116,11 @@ { % \end{macrocode} % -% \begin{macro}[EXP]{\keyval_parse:nnn, \keyval_parse:NNn} +% \begin{macro}[EXP] +% { +% \keyval_parse:nnn, \keyval_parse:nnV, \keyval_parse:nnv, +% \keyval_parse:NNn, \keyval_parse:NNV, \keyval_parse:NNv +% } % The main function starts the first of two loops. The outer loop splits the % key--value list at active commas, the inner loop will do so at other commas. % The use of \cs{s_@@_mark} here prevents loss of braces from the key @@ -1379,6 +1385,8 @@ \char_set_catcode_active:n { `\= } \@@_tmp:w , = \group_end: +\cs_generate_variant:Nn \keyval_parse:NNn { NNV , NNv } +\cs_generate_variant:Nn \keyval_parse:nnn { nnV , nnv } % \end{macrocode} % % \begin{macro}[EXP]{\@@_pair:nnnn, \@@_key:nn} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index acb2ad3cbd4..4142ac4658f 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 079f23e3c12..4e1f6a5bb83 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 7e80cf56654..82092523fa1 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -103,7 +103,11 @@ % although in general this may be confusing; simply writing the messages % using |~| characters is the method favored by the team. % -% \begin{function}[updated = 2011-08-16]{\msg_new:nnnn, \msg_new:nnn} +% \begin{function}[updated = 2011-08-16] +% { +% \msg_new:nnnn, \msg_new:nnxx, +% \msg_new:nnn, \msg_new:nnx +% } % \begin{syntax} % \cs{msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text} % \end{syntax} @@ -312,9 +316,15 @@ % \msg_fatal:nnnn , % \msg_fatal:nnn , % \msg_fatal:nn , +% \msg_fatal:nnVV , +% \msg_fatal:nnVn , +% \msg_fatal:nnnV , +% \msg_fatal:nnV , % \msg_fatal:nnxxxx , % \msg_fatal:nnxxx , +% \msg_fatal:nnnxx , % \msg_fatal:nnxx , +% \msg_fatal:nnnx , % \msg_fatal:nnx % } % \begin{syntax} @@ -333,9 +343,15 @@ % \msg_critical:nnnn , % \msg_critical:nnn , % \msg_critical:nn , +% \msg_critical:nnVV , +% \msg_critical:nnVn , +% \msg_critical:nnnV , +% \msg_critical:nnV , % \msg_critical:nnxxxx , % \msg_critical:nnxxx , +% \msg_critical:nnnxx , % \msg_critical:nnxx , +% \msg_critical:nnnx , % \msg_critical:nnx % } % \begin{syntax} @@ -360,9 +376,15 @@ % \msg_error:nnnn , % \msg_error:nnn , % \msg_error:nn , +% \msg_error:nnVV , +% \msg_error:nnVn , +% \msg_error:nnnV , +% \msg_error:nnV , % \msg_error:nnxxxx , % \msg_error:nnxxx , +% \msg_error:nnnxx , % \msg_error:nnxx , +% \msg_error:nnnx , % \msg_error:nnx % } % \begin{syntax} @@ -380,10 +402,17 @@ % \msg_warning:nnnnn , % \msg_warning:nnnn , % \msg_warning:nnn , +% \msg_warning:nnn , % \msg_warning:nn , +% \msg_warning:nnVV , +% \msg_warning:nnVn , +% \msg_warning:nnnV , +% \msg_warning:nnV , % \msg_warning:nnxxxx , % \msg_warning:nnxxx , +% \msg_warning:nnnxx , % \msg_warning:nnxx , +% \msg_warning:nnnx , % \msg_warning:nnx % } % \begin{syntax} @@ -402,18 +431,30 @@ % \msg_note:nnnn , % \msg_note:nnn , % \msg_note:nn , +% \msg_note:nnVV , +% \msg_note:nnVn , +% \msg_note:nnnV , +% \msg_note:nnV , % \msg_note:nnxxxx , % \msg_note:nnxxx , +% \msg_note:nnnxx , % \msg_note:nnxx , +% \msg_note:nnnx , % \msg_note:nnx , % \msg_info:nnnnnn , % \msg_info:nnnnn , % \msg_info:nnnn , % \msg_info:nnn , % \msg_info:nn , +% \msg_info:nnVV , +% \msg_info:nnVn , +% \msg_info:nnnV , +% \msg_info:nnV , % \msg_info:nnxxxx , % \msg_info:nnxxx , +% \msg_info:nnnxx , % \msg_info:nnxx , +% \msg_info:nnnx , % \msg_info:nnx % } % \begin{syntax} @@ -435,18 +476,30 @@ % \msg_term:nnnn , % \msg_term:nnn , % \msg_term:nn , +% \msg_term:nnVV , +% \msg_term:nnVn , +% \msg_term:nnnV , +% \msg_term:nnV , % \msg_term:nnxxxx , % \msg_term:nnxxx , +% \msg_term:nnnxx , % \msg_term:nnxx , +% \msg_term:nnnx , % \msg_term:nnx , % \msg_log:nnnnnn , % \msg_log:nnnnn , % \msg_log:nnnn , % \msg_log:nnn , % \msg_log:nn , +% \msg_log:nnVV , +% \msg_log:nnVn , +% \msg_log:nnnV , +% \msg_log:nnV , % \msg_log:nnxxxx , % \msg_log:nnxxx , +% \msg_log:nnnxx , % \msg_log:nnxx , +% \msg_log:nnnx , % \msg_log:nnx % } % \begin{syntax} @@ -468,9 +521,15 @@ % \msg_none:nnnn , % \msg_none:nnn , % \msg_none:nn , +% \msg_none:nnVV , +% \msg_none:nnVn , +% \msg_none:nnnV , +% \msg_none:nnV , % \msg_none:nnxxxx , % \msg_none:nnxxx , +% \msg_none:nnnxx , % \msg_none:nnxx , +% \msg_none:nnnx , % \msg_none:nnx % } % \begin{syntax} @@ -489,9 +548,15 @@ % \msg_show:nnnn , % \msg_show:nnn , % \msg_show:nn , +% \msg_show:nnVV , +% \msg_show:nnVn , +% \msg_show:nnnV , +% \msg_show:nnV , % \msg_show:nnxxxx , % \msg_show:nnxxx , +% \msg_show:nnnxx , % \msg_show:nnxx , +% \msg_show:nnnx , % \msg_show:nnx % } % \begin{syntax} @@ -740,7 +805,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\msg_new:nnnn, \msg_new:nnn} +% \begin{macro}{\msg_new:nnnn, \msg_new:nnxx, \msg_new:nnn, \msg_new:nnx} % \begin{macro}{\msg_gset:nnnn, \msg_gset:nnn} % \begin{macro}{\msg_set:nnnn, \msg_set:nnn} % Setting a message simply means saving the appropriate text @@ -751,8 +816,10 @@ \@@_chk_free:nn {#1} {#2} \msg_gset:nnnn {#1} {#2} } +\cs_generate_variant:Nn \msg_new:nnnn { nnxx } \cs_new_protected:Npn \msg_new:nnn #1#2#3 { \msg_new:nnnn {#1} {#2} {#3} { } } +\cs_generate_variant:Nn \msg_new:nnn { nnx } \cs_new_protected:Npn \msg_set:nnnn #1#2#3#4 { \cs_set:cpn { \c_@@_text_prefix_tl #1 / #2 } @@ -1113,6 +1180,9 @@ { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } } \cs_new_protected:cpx { msg_ #1 :nn } ##1##2 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } } + \cs_generate_variant:cn { msg_ #1 :nnn } { nnV } + \cs_generate_variant:cn { msg_ #1 :nnnn } { nnVV , nnVn , nnnV , nnnx } + \cs_generate_variant:cn { msg_ #1 :nnnnn } { nnnxx } \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6 { \use:x @@ -1139,9 +1209,15 @@ % \msg_fatal:nnnn , % \msg_fatal:nnn , % \msg_fatal:nn , +% \msg_fatal:nnVV , +% \msg_fatal:nnVn , +% \msg_fatal:nnnV , +% \msg_fatal:nnV , % \msg_fatal:nnxxxx , % \msg_fatal:nnxxx , +% \msg_fatal:nnnxx , % \msg_fatal:nnxx , +% \msg_fatal:nnnx , % \msg_fatal:nnx % } % \begin{macro}{\@@_fatal_exit:} @@ -1173,9 +1249,15 @@ % \msg_critical:nnnn , % \msg_critical:nnn , % \msg_critical:nn , +% \msg_critical:nnVV , +% \msg_critical:nnVn , +% \msg_critical:nnnV , +% \msg_critical:nnV , % \msg_critical:nnxxxx , % \msg_critical:nnxxx , +% \msg_critical:nnnxx , % \msg_critical:nnxx , +% \msg_critical:nnnx , % \msg_critical:nnx % } % Not quite so bad: just end the current file. @@ -1198,9 +1280,15 @@ % \msg_error:nnnn , % \msg_error:nnn , % \msg_error:nn , +% \msg_error:nnVV , +% \msg_error:nnVn , +% \msg_error:nnnV , +% \msg_error:nnV , % \msg_error:nnxxxx , % \msg_error:nnxxx , +% \msg_error:nnnxx , % \msg_error:nnxx , +% \msg_error:nnnx , % \msg_error:nnx % } % For an error, the interrupt routine is called. We check if there is @@ -1229,27 +1317,45 @@ % \msg_warning:nnnn , % \msg_warning:nnn , % \msg_warning:nn , +% \msg_warning:nnVV , +% \msg_warning:nnVn , +% \msg_warning:nnnV , +% \msg_warning:nnV , % \msg_warning:nnxxxx , % \msg_warning:nnxxx , +% \msg_warning:nnnxx , % \msg_warning:nnxx , +% \msg_warning:nnnx , % \msg_warning:nnx , % \msg_note:nnnnnn , % \msg_note:nnnnn , % \msg_note:nnnn , % \msg_note:nnn , % \msg_note:nn , +% \msg_note:nnVV , +% \msg_note:nnVn , +% \msg_note:nnnV , +% \msg_note:nnV , % \msg_note:nnxxxx , % \msg_note:nnxxx , +% \msg_note:nnnxx , % \msg_note:nnxx , +% \msg_note:nnnx , % \msg_note:nnx , % \msg_info:nnnnnn , % \msg_info:nnnnn , % \msg_info:nnnn , % \msg_info:nnn , % \msg_info:nn , +% \msg_info:nnVV , +% \msg_info:nnVn , +% \msg_info:nnnV , +% \msg_info:nnV , % \msg_info:nnxxxx , % \msg_info:nnxxx , +% \msg_info:nnnxx , % \msg_info:nnxx , +% \msg_info:nnnx , % \msg_info:nnx , % } % Warnings and information messages have no decoration. Warnings are @@ -1303,18 +1409,30 @@ % \msg_log:nnnn , % \msg_log:nnn , % \msg_log:nn , +% \msg_log:nnVV , +% \msg_log:nnVn , +% \msg_log:nnnV , +% \msg_log:nnV , % \msg_log:nnxxxx , % \msg_log:nnxxx , +% \msg_log:nnnxx , % \msg_log:nnxx , +% \msg_log:nnnx , % \msg_log:nnx , % \msg_term:nnnnnn , % \msg_term:nnnnn , % \msg_term:nnnn , % \msg_term:nnn , % \msg_term:nn , +% \msg_term:nnVV , +% \msg_term:nnVn , +% \msg_term:nnnV , +% \msg_term:nnV , % \msg_term:nnxxxx , % \msg_term:nnxxx , +% \msg_term:nnnxx , % \msg_term:nnxx , +% \msg_term:nnnx , % \msg_term:nnx , % } % \enquote{Log} data is very similar to information, but with no extras @@ -1345,9 +1463,15 @@ % \msg_none:nnnn , % \msg_none:nnn , % \msg_none:nn , +% \msg_none:nnVV , +% \msg_none:nnVn , +% \msg_none:nnnV , +% \msg_none:nnV , % \msg_none:nnxxxx , % \msg_none:nnxxx , +% \msg_none:nnnxx , % \msg_none:nnxx , +% \msg_none:nnnx , % \msg_none:nnx % } % The \texttt{none} message type is needed so that input can be gobbled. @@ -1363,9 +1487,15 @@ % \msg_show:nnnn , % \msg_show:nnn , % \msg_show:nn , +% \msg_show:nnVV , +% \msg_show:nnVn , +% \msg_show:nnnV , +% \msg_show:nnV , % \msg_show:nnxxxx , % \msg_show:nnxxx , +% \msg_show:nnnxx , % \msg_show:nnxx , +% \msg_show:nnx , % \msg_show:nnx % } % \begin{macro}{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 1db4aaa8065..f3f56f7f723 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -533,7 +533,6 @@ \@@_primitive:NN \pdfcompresslevel \tex_pdfcompresslevel:D \@@_primitive:NN \pdfcolorstack \tex_pdfcolorstack:D \@@_primitive:NN \pdfcolorstackinit \tex_pdfcolorstackinit:D - \@@_primitive:NN \pdfcreationdate \tex_pdfcreationdate:D \@@_primitive:NN \pdfdecimaldigits \tex_pdfdecimaldigits:D \@@_primitive:NN \pdfdest \tex_pdfdest:D \@@_primitive:NN \pdfdestmargin \tex_pdfdestmargin:D @@ -627,6 +626,7 @@ \@@_primitive:NN \pdfadjustspacing \tex_adjustspacing:D \@@_primitive:NN \pdfappendkern \tex_appendkern:D \@@_primitive:NN \pdfcopyfont \tex_copyfont:D + \@@_primitive:NN \pdfcreationdate \tex_creationdate:D \@@_primitive:NN \pdfdraftmode \tex_draftmode:D \@@_primitive:NN \pdfeachlinedepth \tex_eachlinedepth:D \@@_primitive:NN \pdfeachlineheight \tex_eachlineheight:D diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx index dd275751db0..ebfdc9115b7 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index fe88bac05d6..ec778817d3d 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index e7ef6d11f88..2d5fc3edccf 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -167,16 +167,16 @@ % { % \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, % \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Noo, \prop_put:Nxx, +% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, % \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, % \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:coo, \prop_put:cxx, +% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx, % \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, % \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx, -% \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx, +% \prop_gput:Non, \prop_gput:Nxn, \prop_gput:NxV, \prop_gput:Noo, \prop_gput:Nxx, % \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, % \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:coo, \prop_gput:cxx +% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx % } % \begin{syntax} % \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value} @@ -250,8 +250,9 @@ % % \begin{function}[updated = 2011-08-28] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:cnc % } % \begin{syntax} % \cs{prop_get:NnN} \meta{property list} \Arg{key} \meta{tl var} @@ -294,7 +295,11 @@ % the \meta{token list variable} is local. See also \cs{prop_gpop:NnNTF}. % \end{function} % -% \begin{function}[added = 2014-07-17, EXP]{\prop_item:Nn, \prop_item:cn} +% \begin{function}[added = 2014-07-17, EXP] +% { +% \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne, +% \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce +% } % \begin{syntax} % \cs{prop_item:Nn} \meta{property list} \Arg{key} % \end{syntax} @@ -399,8 +404,9 @@ % % \begin{function}[updated = 2012-05-19, TF] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:cnc % } % \begin{syntax} % \cs{prop_get:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\ @@ -982,8 +988,9 @@ % % \begin{macro}[tested = m3prop002] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NoN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:coN +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:cnc % } % Getting an item from a list is very easy: after splitting, % if the key is in the property list, just set the token list variable @@ -995,8 +1002,8 @@ { \tl_set:Nn #3 {##2} } { \tl_set:Nn #3 { \q_no_value } } } -\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , No } -\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co } +\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , No , Nx } +\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc } % \end{macrocode} % \end{macro} % @@ -1035,7 +1042,11 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\prop_item:Nn, \prop_item:cn} +% \begin{macro}[EXP] +% { +% \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne, +% \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce +% } % \begin{macro}[EXP]{\@@_item:nnn} % Getting the value corresponding to a key in a property list in an % expandable fashion simply uses \cs{prop_map_tokens:Nn} to go through @@ -1053,7 +1064,7 @@ \str_if_eq:eeT {#1} {#2} { \prop_map_break:n { \exp_not:n {#3} } } } -\cs_generate_variant:Nn \prop_item:Nn { c } +\cs_generate_variant:Nn \prop_item:Nn { NV , No , Ne , c , cV , co , ce } % \end{macrocode} % \end{macro} % \end{macro} @@ -1154,19 +1165,19 @@ % { % \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, % \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Noo, \prop_put:Nxx, +% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, % \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, % \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:coo, \prop_put:cxx +% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx % } % \begin{macro}[tested = m3prop002] % { % \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, -% \prop_gput:NVn, \prop_gput:NVV, \prop_hput:NVx, \prop_hput:Nvx, -% \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx, +% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_hput:Nvx, +% \prop_gput:Non, \prop_gput:Nxn, \prop_pgut:NxV, \prop_gput:Noo, \prop_gput:Nxx, % \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, % \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:coo, \prop_gput:cxx +% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx % } % \begin{macro}{\@@_put:NNnn} % Since the branches of \cs{@@_split:NnTF} are used as the replacement @@ -1196,13 +1207,13 @@ { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } } } \cs_generate_variant:Nn \prop_put:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx } + { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } \cs_generate_variant:Nn \prop_put:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx } + { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } \cs_generate_variant:Nn \prop_gput:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx } + { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } \cs_generate_variant:Nn \prop_gput:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx } + { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1307,8 +1318,9 @@ % % \begin{macro}[TF, tested = m3prop004] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NoN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:coN +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:cnc % } % Getting the value corresponding to a key, keeping track of whether % the key was present or not, is implemented as a conditional (with @@ -1324,7 +1336,7 @@ { \prg_return_false: } } \prg_generate_conditional_variant:Nnn \prop_get:NnN - { NV , Nv , No , c , cV , cv , co } { T , F , TF } + { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 41c61be8384..e05b5369e11 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 6aef0742a02..3d342960ac9 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -587,7 +587,11 @@ % while the later require a compiled expression as generated by % \cs{regex_set:Nn}. % -% \begin{function}[TF, added = 2017-05-26]{\regex_match:nn, \regex_match:Nn} +% \begin{function}[TF, added = 2017-05-26] +% { +% \regex_match:nn, \regex_match:nV, +% \regex_match:Nn, \regex_match:NV +% } % \begin{syntax} % \cs{regex_match:nnTF} \Arg{regex} \Arg{token list} \Arg{true code} \Arg{false code} % \end{syntax} @@ -600,7 +604,11 @@ % leaves \texttt{TRUE} then \texttt{FALSE} in the input stream. % \end{function} % -% \begin{function}[added = 2017-05-26]{\regex_count:nnN, \regex_count:NnN} +% \begin{function}[added = 2017-05-26] +% { +% \regex_count:nnN, \regex_count:nVN, +% \regex_count:NnN, \regex_count:NVN +% } % \begin{syntax} % \cs{regex_count:nnN} \Arg{regex} \Arg{token list} \meta{int var} % \end{syntax} @@ -657,7 +665,10 @@ % \section{Submatch extraction} % % \begin{function}[noTF, added = 2017-05-26] -% {\regex_extract_once:nnN, \regex_extract_once:NnN} +% { +% \regex_extract_once:nnN, \regex_extract_once:nVN, +% \regex_extract_once:NVN, \regex_extract_once:NVN +% } % \begin{syntax} % \cs{regex_extract_once:nnN} \Arg{regex} \Arg{token list} \meta{seq~var} % \cs{regex_extract_once:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} @@ -688,7 +699,10 @@ % \end{function} % % \begin{function}[noTF, added = 2017-05-26] -% {\regex_extract_all:nnN, \regex_extract_all:NnN} +% { +% \regex_extract_all:nnN, \regex_extract_all:nVN, +% \regex_extract_all:NnN, \regex_extract_all:NVN +% } % \begin{syntax} % \cs{regex_extract_all:nnN} \Arg{regex} \Arg{token list} \meta{seq~var} % \cs{regex_extract_all:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} @@ -711,7 +725,11 @@ % and the \texttt{true} branch is left in the input stream. % \end{function} % -% \begin{function}[noTF, added = 2017-05-26]{\regex_split:nnN, \regex_split:NnN} +% \begin{function}[noTF, added = 2017-05-26] +% { +% \regex_split:nnN, \regex_split:nVN, +% \regex_split:NnN, \regex_split:NVN, +% } % \begin{syntax} % \cs{regex_split:nnN} \Arg{regular expression} \Arg{token list} \meta{seq~var} % \cs{regex_split:nnNTF} \Arg{regular expression} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} @@ -740,7 +758,10 @@ % \section{Replacement} % % \begin{function}[noTF, added = 2017-05-26] -% {\regex_replace_once:nnN,\regex_replace_once:NnN} +% { +% \regex_replace_once:nnN,\regex_replace_once:nVN, +% \regex_replace_once:NnN,\regex_replace_once:NVN +% } % \begin{syntax} % \cs{regex_replace_once:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var} % \cs{regex_replace_once:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} @@ -754,7 +775,10 @@ % \end{function} % % \begin{function}[noTF, added = 2017-05-26] -% {\regex_replace_all:nnN, \regex_replace_all:NnN} +% { +% \regex_replace_all:nnN,\regex_replace_all:nVN, +% \regex_replace_all:NnN,\regex_replace_all:NVN +% } % \begin{syntax} % \cs{regex_replace_all:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var} % \cs{regex_replace_all:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} @@ -6518,7 +6542,11 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[TF]{\regex_match:nn, \regex_match:Nn} +% \begin{macro}[TF] +% { +% \regex_match:nn, \regex_match:nV, +% \regex_match:Nn, \regex_match:NV +% } % Those conditionals are based on a common auxiliary defined % later. Its first argument builds the \textsc{nfa} corresponding to % the regex, and the second argument is the query token list. Once we @@ -6530,21 +6558,26 @@ \@@_if_match:nn { \@@_build:n {#1} } {#2} \@@_return: } +\prg_generate_conditional_variant:Nnn \regex_match:nn { nV } { T , F , TF } \prg_new_protected_conditional:Npnn \regex_match:Nn #1#2 { T , F , TF } { \@@_if_match:nn { \@@_build:N #1 } {#2} \@@_return: } +\prg_generate_conditional_variant:Nnn \regex_match:Nn { NV } { T , F , TF } % \end{macrocode} % \end{macro} % -% \begin{macro}{\regex_count:nnN, \regex_count:NnN} +% \begin{macro} +% {\regex_count:nnN, \regex_count:nVN, \regex_count:NnN, \regex_count:NVN} % Again, use an auxiliary whose first argument builds the \textsc{nfa}. % \begin{macrocode} \cs_new_protected:Npn \regex_count:nnN #1 { \@@_count:nnN { \@@_build:n {#1} } } \cs_new_protected:Npn \regex_count:NnN #1 { \@@_count:nnN { \@@_build:N #1 } } +\cs_generate_variant:Nn \regex_count:nnN { nV } +\cs_generate_variant:Nn \regex_count:NnN { NV } % \end{macrocode} % \end{macro} % @@ -6573,11 +6606,16 @@ % % \begin{macro}[noTF] % { -% \regex_extract_once:nnN, \regex_extract_once:NnN, -% \regex_extract_all:nnN, \regex_extract_all:NnN, -% \regex_replace_once:nnN, \regex_replace_once:NnN, -% \regex_replace_all:nnN, \regex_replace_all:NnN, -% \regex_split:nnN, \regex_split:NnN +% \regex_extract_once:nnN, \regex_extract_once:nVN, +% \regex_extract_once:NnN, \regex_extract_once:NVN, +% \regex_extract_all:nnN, \regex_extract_all:nVN, +% \regex_extract_all:NnN, \regex_extract_all:NVN, +% \regex_replace_once:nnN, \regex_replace_once:nVN, +% \regex_replace_once:NnN, \regex_replace_once:NVN, +% \regex_replace_all:nnN, \regex_replace_all:nVN, +% \regex_replace_all:NnN, \regex_replace_all:NVN, +% \regex_split:NnN, \regex_split:NVN, +% \regex_split:nnN, \regex_split:nVN % } % We define here $40$ user functions, following a common pattern in % terms of \texttt{:nnN} auxiliaries, defined in the coming @@ -6595,6 +6633,11 @@ { #1 { \@@_build:n {##1} } {##2} ##3 \@@_return: } \prg_new_protected_conditional:Npnn #3 ##1##2##3 { T , F , TF } { #1 { \@@_build:N ##1 } {##2} ##3 \@@_return: } + \cs_generate_variant:Nn #2 { nV } + \prg_generate_conditional_variant:Nnn #2 { nV } { T , F , TF } + \cs_generate_variant:Nn #3 { NV } + \prg_generate_conditional_variant:Nnn #3 { NV } { T , F , TF } + } \@@_tmp:w \@@_extract_once:nnN \regex_extract_once:nnN \regex_extract_once:NnN diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index ad14896d422..d523320f4e5 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -126,8 +126,12 @@ % % \begin{function}[added = 2011-08-15, updated = 2012-07-02] % { -% \seq_set_split:Nnn , \seq_set_split:NnV , -% \seq_gset_split:Nnn, \seq_gset_split:NnV +% \seq_set_split:Nnn , +% \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV , +% \seq_set_split:Nnx , \seq_set_split:Nxx , +% \seq_gset_split:Nnn, +% \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV, +% \seq_gset_split:Nnx , \seq_gset_split:Nxx % } % \begin{syntax} % \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list} @@ -304,7 +308,11 @@ % the special marker \cs{q_no_value}. % \end{function} % -% \begin{function}[added = 2014-07-17, EXP]{\seq_item:Nn, \seq_item:cn} +% \begin{function}[added = 2014-07-17, EXP] +% { +% \seq_item:Nn, \seq_item:NV, \seq_item:Ne, +% \seq_item:cn, \seq_item:cV, \seq_item:ce +% } % \begin{syntax} % \cs{seq_item:Nn} \meta{seq~var} \Arg{integer expression} % \end{syntax} @@ -463,8 +471,10 @@ % % \begin{function} % { -% \seq_remove_all:Nn , \seq_remove_all:cn, -% \seq_gremove_all:Nn, \seq_gremove_all:cn +% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx, +% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx, +% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx, +% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx % } % \begin{syntax} % \cs{seq_remove_all:Nn} \meta{seq~var} \Arg{item} @@ -1266,8 +1276,12 @@ % % \begin{macro} % { -% \seq_set_split:Nnn , \seq_set_split:NnV , -% \seq_gset_split:Nnn, \seq_gset_split:NnV +% \seq_set_split:Nnn , +% \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV , +% \seq_set_split:Nnx , \seq_set_split:Nxx , +% \seq_gset_split:Nnn, +% \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV, +% \seq_gset_split:Nnx, \seq_gset_split:Nxx % } % \begin{macro} % { @@ -1340,8 +1354,8 @@ } \cs_new:Npn \@@_set_split:w #1 \@@_set_split_end: { \@@_wrap_item:n {#1} } -\cs_generate_variant:Nn \seq_set_split:Nnn { NnV } -\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV } +\cs_generate_variant:Nn \seq_set_split:Nnn { NV , NnV , NVV , Nnx , Nxx } +\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx } \cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn { NnV } \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV } % \end{macrocode} @@ -1499,9 +1513,17 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\seq_remove_all:Nn, \seq_remove_all:cn} +% \begin{macro} +% { +% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx, +% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx +% } % \UnitTested -% \begin{macro}{\seq_gremove_all:Nn, \seq_gremove_all:cn} +% \begin{macro} +% { +% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx, +% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx +% } % \UnitTested % \begin{macro}{\@@_remove_all_aux:NNn} % The idea of the code here is to avoid a relatively expensive addition of @@ -1542,8 +1564,8 @@ #1 #2 {#2} \@@_pop_item_def: } -\cs_generate_variant:Nn \seq_remove_all:Nn { c } -\cs_generate_variant:Nn \seq_gremove_all:Nn { c } +\cs_generate_variant:Nn \seq_remove_all:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Nx , c , cV , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2047,7 +2069,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\seq_item:Nn, \seq_item:cn} +% \begin{macro} +% {\seq_item:Nn, \seq_item:NV, \seq_item:Ne, \seq_item:cn, \seq_item:cV, \seq_item:ce} % \begin{macro}{\@@_item:wNn, \@@_item:nN, \@@_item:nwn} % The idea here is to find the offset of the item from the left, then use % a loop to grab the correct item. If the resulting offset is too large, @@ -2077,7 +2100,7 @@ { \prg_break:n { \exp_not:n {#3} } } { \exp_args:Nf \@@_item:nwn { \int_eval:n { #1 - 1 } } } } -\cs_generate_variant:Nn \seq_item:Nn { c } +\cs_generate_variant:Nn \seq_item:Nn { NV , Ne , c , cV , ce } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 35d380e58bd..7ce22afb7ea 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 99efb3e9c27..b92eddbb350 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index 6bb0b39f85f..6c0b2145e25 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index ed7e39d816a..c2498436cba 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -283,7 +283,10 @@ % \end{function} % % \begin{function}[added = 2013-07-24, updated = 2022-03-21, EXP, noTF] -% {\str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:nV, \str_case:nv} +% { +% \str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:en, +% \str_case:nV, \str_case:nv +% } % \begin{syntax} % \cs{str_case:nnTF} \Arg{test string} \\ % ~~|{| \\ @@ -1228,7 +1231,10 @@ % \end{macro} % % \begin{macro}[EXP, noTF] -% {\str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_e:nn} +% { +% \str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:en, \str_case:nV, \str_case:nv, +% \str_case_e:nn +% } % \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF} % \begin{macro}[EXP] % {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw} @@ -1257,7 +1263,7 @@ } \cs_new:Npn \@@_case:nnTF #1#2#3#4 { \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop } -\cs_generate_variant:Nn \str_case:nn { V , o , nV , nv } +\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 } \cs_new_eq:NN \str_case:Nn \str_case:Vn diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 5ff23b47750..5717e60e731 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -79,6 +79,11 @@ % \end{texnote} % \end{variable} % +% \begin{variable}[added = 2023-08-27]{\c_sys_timestamp_str} +% The timestamp for the current job: the format is as described for +% \cs{file_timestamp:n}. +% \end{variable} +% % \section{Engine} % % \begin{function}[added = 2015-09-07, EXP, pTF] @@ -928,6 +933,23 @@ end % \end{macrocode} % \end{variable} % +% \begin{variable}{\c_sys_timestamp_str} +% A simple expansion: Lua\TeX{} chokes if we use \tn{pdffeedback} here, +% hence the direct use of Lua. Notice that the function there is in the +% \texttt{pdf} library but isn actually tied to PDF. +% \begin{macrocode} +\@@_everyjob:n + { + \str_const:Nx \c_sys_timestamp_str + { + \cs_if_exist:NTF \tex_directlua:D + { \tex_directlua:D { tex.print(pdf.getcreationdate()) } } + { \tex_creationdate:D } + } + } +% \end{macrocode} +% \end{variable} +% % \subsubsection{Random numbers} % % \begin{macro}[EXP]{\sys_rand_seed:} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index 245ea5b4fad..07a79e2bb02 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx index 9d083adf04a..b2372d446f7 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index 450c5b748f3..35d180d0421 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index a946fad8451..016c5579a19 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 1a484457db5..385b3db8ac6 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 08ed9216efc..06226fd7bad 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -177,10 +177,10 @@ % % \begin{function} % { -% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:No, \tl_put_left:Nx, -% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:co, \tl_put_left:cx, -% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx, -% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:co, \tl_gput_left:cx +% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx, +% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx, +% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx, +% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx % } % \begin{syntax} % \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens} @@ -191,12 +191,10 @@ % % \begin{function} % { -% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx, -% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:co, \tl_put_right:cx, -% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No, -% \tl_gput_right:Nx, -% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:co, -% \tl_gput_right:cx +% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx, +% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx, +% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, \tl_gput_right:Nx, +% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, \tl_gput_right:cx % } % \begin{syntax} % \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens} @@ -230,7 +228,7 @@ % \end{function} % % \begin{function}[added = 2012-05-24, updated = 2012-06-05, EXP,pTF] -% {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o} +% {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o, \tl_if_empty:e} % \begin{syntax} % \cs{tl_if_empty_p:n} \Arg{token list} % \cs{tl_if_empty:nTF} \Arg{token list} \Arg{true code} \Arg{false code} @@ -270,7 +268,8 @@ % category codes are not important. % \end{function} % -% \begin{function}[TF]{\tl_if_eq:nn} +% \begin{function}[TF] +% {\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx} % \begin{syntax} % \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code} % \end{syntax} @@ -281,7 +280,7 @@ % or \cs{str_if_eq:nnTF} if category codes are not important. % \end{function} % -% \begin{function}[TF]{\tl_if_in:Nn, \tl_if_in:cn} +% \begin{function}[TF]{\tl_if_in:Nn, \tl_if_in:NV, \tl_if_in:cn, \tl_if_in:cV} % \begin{syntax} % \cs{tl_if_in:NnTF} \meta{tl~var} \Arg{token list} \Arg{true code} \Arg{false code} % \end{syntax} @@ -293,7 +292,7 @@ % \end{function} % % \begin{function}[TF] -% {\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:no} +% {\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:nV, \tl_if_in:on, \tl_if_in:no} % \begin{syntax} % \cs{tl_if_in:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code} % \end{syntax} @@ -438,7 +437,8 @@ % % \subsection{Using token lists} % -% \begin{function}[EXP]{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v} +% \begin{function}[EXP] +% {\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v, \tl_to_str:e} % \begin{syntax} % \cs{tl_to_str:n} \Arg{token list} % \end{syntax} @@ -536,7 +536,7 @@ % \end{function} % % \begin{function}[updated = 2012-01-08, EXP] -% {\tl_reverse:n, \tl_reverse:V, \tl_reverse:o} +% {\tl_reverse:n, \tl_reverse:V, \tl_reverse:o, \tl_reverse:f, \tl_reverse:e} % \begin{syntax} % \cs{tl_reverse:n} \Arg{token list} % \end{syntax} @@ -1073,10 +1073,14 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_replace_once:Nnn, \tl_replace_once:Nxx, -% \tl_replace_once:cnn, \tl_replace_once:cxx, -% \tl_greplace_once:Nnn, \tl_greplace_once:Nxx -% \tl_greplace_once:cnn, \tl_greplace_once:cxx +% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV, +% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx, +% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV, +% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx, +% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV, +% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx, +% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV, +% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx % } % \begin{syntax} % \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens} @@ -1090,10 +1094,14 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_replace_all:Nnn, \tl_replace_all:Nxx, -% \tl_replace_all:cnn, \tl_replace_all:cxx -% \tl_greplace_all:Nnn, \tl_greplace_all:Nxx, -% \tl_greplace_all:cnn, \tl_greplace_all:cxx +% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, +% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx, +% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, +% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx, +% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:cnV, +% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx, +% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, +% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx % } % \begin{syntax} % \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens} @@ -1111,10 +1119,10 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_remove_once:Nn, \tl_remove_once:Nx, -% \tl_remove_once:cn, \tl_remove_once:cx, -% \tl_gremove_once:Nn, \tl_gremove_once:Nx -% \tl_gremove_once:cn, \tl_gremove_once:cx +% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx, +% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx, +% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx +% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx % } % \begin{syntax} % \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens} @@ -1127,10 +1135,10 @@ % % \begin{function}[updated = 2011-08-11] % { -% \tl_remove_all:Nn, \tl_remove_all:Nx, -% \tl_remove_all:cn, \tl_remove_all:cx, -% \tl_gremove_all:Nn, \tl_gremove_all:Nx -% \tl_gremove_all:cn, \tl_gremove_all:cx +% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx, +% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx, +% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx +% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx % } % \begin{syntax} % \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens} @@ -1161,10 +1169,10 @@ % % \begin{function}[updated = 2015-08-11] % { -% \tl_set_rescan:Nnn, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, -% \tl_set_rescan:cnn, \tl_set_rescan:cno, \tl_set_rescan:cnx, -% \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, -% \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx +% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, +% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx, +% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, +% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx % } % \begin{syntax} % \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens} @@ -1488,13 +1496,13 @@ % % \begin{macro} % { -% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:No, \tl_put_left:Nx, -% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:co, \tl_put_left:cx +% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx, +% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx % } % \begin{macro} % { -% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx, -% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:co, \tl_gput_left:cx +% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx, +% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx % } % Adding to the left is done directly to gain a little performance. % \begin{macrocode} @@ -1508,6 +1516,11 @@ \__kernel_tl_set:Nx #1 { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} } } +\cs_new_protected:Npn \tl_put_left:Nv #1#2 + { + \__kernel_tl_set:Nx #1 + { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} } + } \cs_new_protected:Npn \tl_put_left:No #1#2 { \__kernel_tl_set:Nx #1 @@ -1528,6 +1541,11 @@ \__kernel_tl_gset:Nx #1 { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} } } +\cs_new_protected:Npn \tl_gput_left:Nv #1#2 + { + \__kernel_tl_gset:Nx #1 + { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} } + } \cs_new_protected:Npn \tl_gput_left:No #1#2 { \__kernel_tl_gset:Nx #1 @@ -1540,10 +1558,12 @@ { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } } \cs_generate_variant:Nn \tl_put_left:Nn { c } \cs_generate_variant:Nn \tl_put_left:NV { c } +\cs_generate_variant:Nn \tl_put_left:Nv { c } \cs_generate_variant:Nn \tl_put_left:No { c } \cs_generate_variant:Nn \tl_put_left:Nx { c } \cs_generate_variant:Nn \tl_gput_left:Nn { c } \cs_generate_variant:Nn \tl_gput_left:NV { c } +\cs_generate_variant:Nn \tl_gput_left:NV { c } \cs_generate_variant:Nn \tl_gput_left:No { c } \cs_generate_variant:Nn \tl_gput_left:Nx { c } % \end{macrocode} @@ -1552,14 +1572,14 @@ % % \begin{macro} % { -% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx, -% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:co, \tl_put_right:cx +% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx, +% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx % } % \begin{macro} % { -% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No, +% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, % \tl_gput_right:Nx, -% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:co, +% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, % \tl_gput_right:cx % } % The same on the right. @@ -1571,6 +1591,11 @@ \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 } } +\cs_new_protected:Npn \tl_put_right:Nv #1#2 + { + \__kernel_tl_set:Nx #1 + { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} } + } \cs_new_protected:Npn \tl_put_right:No #1#2 { \__kernel_tl_set:Nx #1 @@ -1588,6 +1613,11 @@ \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 } } +\cs_new_protected:Npn \tl_gput_right:Nv #1#2 + { + \__kernel_tl_gset:Nx #1 + { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} } + } \cs_new_protected:Npn \tl_gput_right:No #1#2 { \__kernel_tl_gset:Nx #1 @@ -1600,10 +1630,12 @@ { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } } \cs_generate_variant:Nn \tl_put_right:Nn { c } \cs_generate_variant:Nn \tl_put_right:NV { c } +\cs_generate_variant:Nn \tl_put_right:Nv { c } \cs_generate_variant:Nn \tl_put_right:No { c } \cs_generate_variant:Nn \tl_put_right:Nx { c } \cs_generate_variant:Nn \tl_gput_right:Nn { c } \cs_generate_variant:Nn \tl_gput_right:NV { c } +\cs_generate_variant:Nn \tl_gput_right:Nv { c } \cs_generate_variant:Nn \tl_gput_right:No { c } \cs_generate_variant:Nn \tl_gput_right:Nx { c } % \end{macrocode} @@ -1653,13 +1685,13 @@ % % \begin{macro} % { -% \tl_set_rescan:Nnn, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, -% \tl_set_rescan:cnn, \tl_set_rescan:cno, \tl_set_rescan:cnx +% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx, +% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx % } % \begin{macro} % { -% \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, -% \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx +% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx, +% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx % } % \begin{macro}{\tl_rescan:nn, \tl_rescan:nV} % \begin{macro}{\@@_rescan_aux:} @@ -1758,10 +1790,10 @@ \group_end: #1 #2 {#3} } -\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno , Nnx } -\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cno , cnx } -\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx } -\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV , Nno , Nnx } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cnV , cno , cnx } +\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nno , Nnx } +\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1879,10 +1911,34 @@ % % \subsection{Modifying token list variables} % -% \begin{macro}{\tl_replace_all:Nnn, \tl_replace_all:cnn} -% \begin{macro}{\tl_greplace_all:Nnn, \tl_greplace_all:cnn} -% \begin{macro}{\tl_replace_once:Nnn, \tl_replace_once:cnn} -% \begin{macro}{\tl_greplace_once:Nnn, \tl_greplace_once:cnn} +% \begin{macro} +% { +% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV, +% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx, +% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV, +% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx +% } +% \begin{macro} +% { +% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV, +% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx, +% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV, +% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx +% } +% \begin{macro} +% { +% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV, +% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx, +% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV, +% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx +% } +% \begin{macro} +% { +% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_replace_once:NnV, +% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx, +% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_replace_once:cnV, +% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx +% } % All of the \texttt{replace} functions call \cs{@@_replace:NnNNNnn} % with appropriate arguments. The first two arguments are explained % later. The next controls whether the replacement function calls @@ -1902,10 +1958,14 @@ { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx } \cs_new_protected:Npn \tl_greplace_all:Nnn { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx } -\cs_generate_variant:Nn \tl_replace_once:Nnn { Nxx , c , cxx } -\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx } -\cs_generate_variant:Nn \tl_replace_all:Nnn { Nxx , c , cxx } -\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nxx , c , cxx } +\cs_generate_variant:Nn \tl_replace_once:Nnn + { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } +\cs_generate_variant:Nn \tl_greplace_once:Nnn + { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } +\cs_generate_variant:Nn \tl_replace_all:Nnn + { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } +\cs_generate_variant:Nn \tl_greplace_all:Nnn + { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2090,30 +2150,46 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\tl_remove_once:Nn, \tl_remove_once:cn} -% \begin{macro}{\tl_gremove_once:Nn, \tl_gremove_once:cn} +% \begin{macro} +% { +% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx, +% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx +% } +% \begin{macro} +% { +% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx, +% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx +% } % Removal is just a special case of replacement. % \begin{macrocode} \cs_new_protected:Npn \tl_remove_once:Nn #1#2 { \tl_replace_once:Nnn #1 {#2} { } } \cs_new_protected:Npn \tl_gremove_once:Nn #1#2 { \tl_greplace_once:Nnn #1 {#2} { } } -\cs_generate_variant:Nn \tl_remove_once:Nn { Nx , c , cx } -\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx } +\cs_generate_variant:Nn \tl_remove_once:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Nx , c , cV , cx } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\tl_remove_all:Nn, \tl_remove_all:cn} -% \begin{macro}{\tl_gremove_all:Nn, \tl_gremove_all:cn} +% \begin{macro} +% { +% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx, +% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx +% } +% \begin{macro} +% { +% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx, +% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx +% } % Removal is just a special case of replacement. % \begin{macrocode} \cs_new_protected:Npn \tl_remove_all:Nn #1#2 { \tl_replace_all:Nnn #1 {#2} { } } \cs_new_protected:Npn \tl_gremove_all:Nn #1#2 { \tl_greplace_all:Nnn #1 {#2} { } } -\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , c , cx } -\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx } +\cs_generate_variant:Nn \tl_remove_all:Nn { NV , Nx , c , cV , cx } +\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Nx , c , cV , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -2137,7 +2213,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V} +% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:e} % The \cs{if:w} triggers the expansion of \cs{tl_to_str:n} which converts the % argument to a string: this is empty if and only if the argument is. Then % |\if:w \scan_stop: ... \scan_stop:| is \texttt{true} if and only if the @@ -2155,7 +2231,7 @@ \fi: } \prg_generate_conditional_variant:Nnn \tl_if_empty:n - { V } { p , TF , T , F } + { V , e } { p , TF , T , F } % \end{macrocode} % \end{macro} % @@ -2252,7 +2328,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[TF]{\tl_if_eq:nn} +% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx} % A simple store and compare routine. % \begin{macrocode} \prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF } @@ -2268,10 +2344,11 @@ \prg_return_false: \fi: } +\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F } % \end{macrocode} % \end{macro} % -% \begin{macro}[TF]{\tl_if_in:Nn, \tl_if_in:cn} +% \begin{macro}[TF]{\tl_if_in:Nn, \tl_if_in:NV, \tl_if_in:cn, \tl_if_in:cV} % See \cs{tl_if_in:nnTF} for further comments. Here we simply % expand the token list variable and pass it to \cs{tl_if_in:nnTF}. % \begin{macrocode} @@ -2279,11 +2356,11 @@ \cs_new_protected:Npn \tl_if_in:NnF { \exp_args:No \tl_if_in:nnF } \cs_new_protected:Npn \tl_if_in:NnTF { \exp_args:No \tl_if_in:nnTF } \prg_generate_conditional_variant:Nnn \tl_if_in:Nn - { c } { T , F , TF } + { NV , c , cV } { T , F , TF } % \end{macrocode} % \end{macro} % -% \begin{macro}[TF]{\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:no} +% \begin{macro}[TF]{\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:nV, \tl_if_in:no} % Once more, the test relies on the emptiness test for robustness. % The function \cs{@@_tmp:w} removes tokens until the first occurrence % of |#2|. If this does not appear in |#1|, then the final |#2| is removed, @@ -2313,7 +2390,7 @@ \if_false: } \fi: } \prg_generate_conditional_variant:Nnn \tl_if_in:nn - { V , o , no } { T , F , TF } + { V , o , nV , no } { T , F , TF } % \end{macrocode} % \end{macro} % @@ -2557,10 +2634,10 @@ % % \subsection{Using token lists} % -% \begin{macro}{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v} +% \begin{macro}{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v, \tl_to_str:e} % Another name for a primitive: defined in \pkg{l3basics}. % \begin{macrocode} -\cs_generate_variant:Nn \tl_to_str:n { o , V , v } +\cs_generate_variant:Nn \tl_to_str:n { o , V , v , e } % \end{macrocode} % \end{macro} % @@ -3228,7 +3305,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\tl_reverse:n, \tl_reverse:o, \tl_reverse:V} +% \begin{macro}[EXP] +% {\tl_reverse:n, \tl_reverse:o, \tl_reverse:V, \tl_reverse:f, \tl_reverse:e} % \begin{macro}[EXP]{\@@_reverse_normal:nN} % \begin{macro}[EXP]{\@@_reverse_group_preserve:nn} % \begin{macro}[EXP]{\@@_reverse_space:n} @@ -3250,7 +3328,7 @@ {#1} } } -\cs_generate_variant:Nn \tl_reverse:n { o , V } +\cs_generate_variant:Nn \tl_reverse:n { o , V , f , e } \cs_new:Npn \@@_reverse_normal:N { \@@_act_reverse_output:n } \cs_new:Npn \@@_reverse_group_preserve:n #1 diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 832205cd70d..ce274f9583d 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % @@ -1603,6 +1603,7 @@ \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: } \char_set_catcode_letter:n { 0 } \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: } +% \end{macrocode} % For making spaces, there needs to be an |o|-type expansion of a |\use:n| % (or some other tokenization) to avoid dropping the space. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index dc95aad698d..f79fc63e5a3 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-08-11} +% \date{Released 2023-08-29} % % \maketitle % -- cgit v1.2.3