diff options
Diffstat (limited to 'macros/latex/required/l3kernel')
92 files changed, 698 insertions, 543 deletions
diff --git a/macros/latex/required/l3kernel/CHANGELOG.md b/macros/latex/required/l3kernel/CHANGELOG.md index 82eb45806a..80629d5ef5 100644 --- a/macros/latex/required/l3kernel/CHANGELOG.md +++ b/macros/latex/required/l3kernel/CHANGELOG.md @@ -7,11 +7,70 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-11-02] + +### Added +- `V`-type variant for all `\<var>_set:Nn` functions + +### Fixed +- Error detection in coffin code (see \#1580) + +## [2024-10-09] + +### Added +- `\coffin_ht_plus_dp:(N|c)` + +### Fixed +- Use TU-encoding with lualatex and xelatex in `l3doc` +- Inconsistent local/global assignments in `l3doc` (see \#1593) + +## [2024-09-10] + +### Fixed +- `\seq_map_pairwise_function:NNN` not work with `\seq_map_break:(n)` (issue \#1587) + +### Changed +- Increase outdent of long function names in `l3doc` (issue \#1585) + +## [2024-08-30] + +### Changed +- Reduce memory usage when building Unicode data storage +- Avoid recursive doc for `\file_if_exist:n(TF)` (issue \#1573) + +### Fixed +- Handling of `ltcmd` newlines (`\obeyedline`) in `l3doc` (issue \#1577) + +## [2024-08-16] + +### Added +- Add quark (`\q_`) and scan mark (`\s_`) prefixes to naming scheme + (issue \#1565) + +## [2024-07-20] + +### Fixed +- Implementation of deprecated `\tl_mixed_case:n(n)` +- Redo the fix for LaTeX2e key properties (issue latex3/latex2e\#1415) + +## [2024-06-19] + +### Fixed +- Avoid a low-level error when LaTeX2e key properties are given without a value + +## [2024-05-27] + +### Added +- Syntax entries of `\keys_set_groups:nnn(n)N` + +### Fixed +- `\peek_analysis_map_inline:n` with active spaces (issue \#1539) + ## [2024-05-08] ### Added - Full set of variants for `\prop_(g)put_if_not_in:Nnn` -- `keys_set_groups:nnn(n)N` to match `keys_set_exclude_groups:nnn(n)N` +- `\keys_set_groups:nnn(n)N` to match `\keys_set_exclude_groups:nnn(n)N` ### Fixed - Implementation of deprecated `\pdf_object_write:nn` @@ -1734,7 +1793,15 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2024-05-08...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-11-02...HEAD +[2024-11-02]: https://github.com/latex3/latex3/compare/2024-10-09...2024-11-02 +[2024-10-09]: https://github.com/latex3/latex3/compare/2024-09-10...2024-10-09 +[2024-09-10]: https://github.com/latex3/latex3/compare/2024-08-30...2024-09-10 +[2024-08-30]: https://github.com/latex3/latex3/compare/2024-08-16...2024-08-30 +[2024-08-16]: https://github.com/latex3/latex3/compare/2024-07-20...2024-08-16 +[2024-07-20]: https://github.com/latex3/latex3/compare/2024-06-19...2024-07-20 +[2024-06-19]: https://github.com/latex3/latex3/compare/2024-05-27...2024-06-19 +[2024-05-27]: https://github.com/latex3/latex3/compare/2024-05-08...2024-05-27 [2024-05-08]: https://github.com/latex3/latex3/compare/2024-04-11...2024-05-08 [2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 diff --git a/macros/latex/required/l3kernel/README.md b/macros/latex/required/l3kernel/README.md index 0928ea46ce..d048951c6d 100644 --- a/macros/latex/required/l3kernel/README.md +++ b/macros/latex/required/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-05-08 +Release 2024-11-02 Overview -------- diff --git a/macros/latex/required/l3kernel/expl3.dtx b/macros/latex/required/l3kernel/expl3.dtx index f4129aeb02..2d0a15de88 100644 --- a/macros/latex/required/l3kernel/expl3.dtx +++ b/macros/latex/required/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-05-08}% +\def\ExplFileDate{2024-11-02}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -454,6 +454,15 @@ % implementation in \LaTeX3 means that |toks| are not required, and that % all operations for storing tokens can use the |tl| variable type. % +% There are two more special types of constants: +% \begin{arg-description} +% \item[q] constants of quark type; +% \item[s] constants of scan mark type. +% \end{arg-description} +% The \meta{type} part of quark and scan mark constants is omitted, and +% the \meta{module} part of general quarks and scan marks is often +% omitted too. +% % Experienced \TeX{} programmers will notice that some of the variable % types listed are native \TeX{} registers whilst others are not. In % general, the underlying \TeX{} implementation for a data structure may diff --git a/macros/latex/required/l3kernel/expl3.pdf b/macros/latex/required/l3kernel/expl3.pdf Binary files differindex dd4f07af68..611d4ad06f 100644 --- a/macros/latex/required/l3kernel/expl3.pdf +++ b/macros/latex/required/l3kernel/expl3.pdf diff --git a/macros/latex/required/l3kernel/interface3.pdf b/macros/latex/required/l3kernel/interface3.pdf Binary files differindex 309d9c92a7..ca71fc3daf 100644 --- a/macros/latex/required/l3kernel/interface3.pdf +++ b/macros/latex/required/l3kernel/interface3.pdf diff --git a/macros/latex/required/l3kernel/interface3.tex b/macros/latex/required/l3kernel/interface3.tex index 613eb673b0..91576320b0 100644 --- a/macros/latex/required/l3kernel/interface3.tex +++ b/macros/latex/required/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-11-02} \pagenumbering{roman} \maketitle diff --git a/macros/latex/required/l3kernel/l3basics.dtx b/macros/latex/required/l3kernel/l3basics.dtx index 4c00ec0032..934bffb39f 100644 --- a/macros/latex/required/l3kernel/l3basics.dtx +++ b/macros/latex/required/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -1151,10 +1151,9 @@ % argument (a single token denoted by |N|) is still free for definition. % It would be used in constructions like % \begin{quote} -% |\bool_if:nTF {| \\ -% \verb" \cs_if_free_p:N \l_tmpz_tl || \cs_if_free_p:N \g_tmpz_tl " \\ -% |}| -% \Arg{true code} \Arg{false code} +% "\bool_if:nTF" \\ +% " { \cs_if_free_p:N \l_tmpz_tl || \cs_if_free_p:N \g_tmpz_tl }" \\ +% " "\Arg{true code} \Arg{false code} % \end{quote} % % For each predicate defined, a \enquote{branching conditional} @@ -1171,7 +1170,7 @@ % % \subsection{Tests on control sequences} % -% \begin{function}[EXP,pTF]{\cs_if_eq:NN} +% \begin{function}[EXP,pTF]{\cs_if_eq:NN, \cs_if_eq:Nc, \cs_if_eq:cN, \cs_if_eq:cc} % \begin{syntax} % \cs{cs_if_eq_p:NN} \meta{cs_1} \meta{cs_2} % \cs{cs_if_eq:NNTF} \meta{cs_1} \meta{cs_2} \Arg{true code} \Arg{false code} diff --git a/macros/latex/required/l3kernel/l3bitset.dtx b/macros/latex/required/l3kernel/l3bitset.dtx index 22cf7dc1f7..79a5a21b4d 100644 --- a/macros/latex/required/l3kernel/l3bitset.dtx +++ b/macros/latex/required/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3bootstrap.dtx b/macros/latex/required/l3kernel/l3bootstrap.dtx index e17c056909..105304afe4 100644 --- a/macros/latex/required/l3kernel/l3bootstrap.dtx +++ b/macros/latex/required/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3box.dtx b/macros/latex/required/l3kernel/l3box.dtx index 5d5aa54027..6499104961 100644 --- a/macros/latex/required/l3kernel/l3box.dtx +++ b/macros/latex/required/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -906,9 +906,9 @@ % \begin{syntax} % \cs{box_set_trim:Nnnnn} \meta{box} \Arg{left} \Arg{bottom} \Arg{right} \Arg{top} % \end{syntax} -% Adjusts the bounding box of the \meta{box} \meta{left} is removed from +% Adjusts the bounding box of the \meta{box}: \meta{left} is removed from % the left-hand edge of the bounding box, \meta{right} from the right-hand -% edge and so fourth. All adjustments are \meta{dim exprs}. +% edge, and so forth. All adjustments are \meta{dim exprs}. % Material outside of the bounding box is still displayed in the output % unless \cs{box_set_clipped:N} is subsequently applied. % The updated \meta{box} is an diff --git a/macros/latex/required/l3kernel/l3cctab.dtx b/macros/latex/required/l3kernel/l3cctab.dtx index a8c5232b3e..53db15109b 100644 --- a/macros/latex/required/l3kernel/l3cctab.dtx +++ b/macros/latex/required/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3clist.dtx b/macros/latex/required/l3kernel/l3clist.dtx index ebbfa29ddc..dc6caccf0d 100644 --- a/macros/latex/required/l3kernel/l3clist.dtx +++ b/macros/latex/required/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -324,8 +324,10 @@ % { % \clist_remove_all:Nn, \clist_remove_all:cn, % \clist_remove_all:NV, \clist_remove_all:cV, +% \clist_remove_all:Ne, \clist_remove_all:ce, % \clist_gremove_all:Nn, \clist_gremove_all:cn, -% \clist_gremove_all:NV, \clist_gremove_all:cV +% \clist_gremove_all:NV, \clist_gremove_all:cV, +% \clist_gremove_all:Ne, \clist_gremove_all:ce % } % \begin{syntax} % \cs{clist_remove_all:Nn} \meta{clist~var} \Arg{item} @@ -350,7 +352,7 @@ % Reverses the order of items stored in the \meta{clist~var}. % \end{function} % -% \begin{function}[added = 2014-07-18]{\clist_reverse:n} +% \begin{function}[added = 2014-07-18, EXP]{\clist_reverse:n} % \begin{syntax} % \cs{clist_reverse:n} \Arg{comma list} % \end{syntax} @@ -391,7 +393,7 @@ % \cs{clist_if_empty_p:n} \Arg{comma list} % \cs{clist_if_empty:nTF} \Arg{comma list} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{clist~var} is empty (containing no items). +% Tests if the \meta{comma~list} is empty (containing no items). % The rules for space trimming are as for other \texttt{n}-type % comma-list functions, hence the comma list |{~,~,,~}| (without % outer braces) is empty, while |{~,{},}| (without outer braces) @@ -562,7 +564,8 @@ % % \begin{function}[EXP, added = 2013-05-26]{\clist_use:Nnnn, \clist_use:cnnn} % \begin{syntax} -% \cs{clist_use:Nnnn} \meta{clist~var} \Arg{separator~between~two} \Arg{separator~between~more~than~two} \Arg{separator~between~final~two} +% \cs{clist_use:Nnnn} \meta{clist~var} \Arg{separator~between~two} \\ +% ~~\Arg{separator~between~more~than~two} \Arg{separator~between~final~two} % \end{syntax} % Places the contents of the \meta{clist~var} in the input stream, % with the appropriate \meta{separator} between the items. Namely, if @@ -618,8 +621,9 @@ % % \begin{function}[EXP, added = 2021-05-10]{\clist_use:nnnn, \clist_use:nn} % \begin{syntax} -% \cs{clist_use:nnnn} \meta{comma~list} \Arg{separator~between~two} \Arg{separator~between~more~than~two} \Arg{separator~between~final~two} -% \cs{clist_use:nn} \meta{comma~list} \Arg{separator} +% \cs{clist_use:nnnn} \Arg{comma~list} \Arg{separator~between~two} \\ +% ~~\Arg{separator~between~more~than~two} \Arg{separator~between~final~two} +% \cs{clist_use:nn} \Arg{comma~list} \Arg{separator} % \end{syntax} % Places the contents of the \meta{comma~list} in the input stream, % with the appropriate \meta{separator} between the items. As for @@ -648,60 +652,60 @@ % \begin{function}[noTF, added = 2012-05-14, updated = 2019-02-16] % {\clist_get:NN, \clist_get:cN} % \begin{syntax} -% \cs{clist_get:NN} \meta{clist~var} \meta{token list variable} +% \cs{clist_get:NN} \meta{clist~var} \meta{tl~var} % \end{syntax} % Stores the left-most item from a \meta{clist~var} in the -% \meta{token list variable} without removing it from the -% \meta{clist~var}. The \meta{token list variable} is assigned locally. +% \meta{tl~var} without removing it from the +% \meta{clist~var}. The \meta{tl~var} is assigned locally. % In the non-branching version, if the \meta{clist~var} is empty the -% \meta{token list variable} is set to the marker value \cs{q_no_value}. +% \meta{tl~var} is set to the marker value \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2011-09-06]{\clist_pop:NN, \clist_pop:cN} % \begin{syntax} -% \cs{clist_pop:NN} \meta{clist~var} \meta{token list variable} +% \cs{clist_pop:NN} \meta{clist~var} \meta{tl~var} % \end{syntax} % Pops the left-most item from a \meta{clist~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% comma list and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% comma list and stores it in the \meta{tl~var}. % Both of the variables are assigned locally. % \end{function} % % \begin{function}{\clist_gpop:NN, \clist_gpop:cN} % \begin{syntax} -% \cs{clist_gpop:NN} \meta{clist~var} \meta{token list variable} +% \cs{clist_gpop:NN} \meta{clist~var} \meta{tl~var} % \end{syntax} % Pops the left-most item from a \meta{clist~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% comma list and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% comma list and stores it in the \meta{tl~var}. % The \meta{clist~var} is modified globally, while the assignment of -% the \meta{token list variable} is local. +% the \meta{tl~var} is local. % \end{function} % % \begin{function}[TF, added = 2012-05-14]{\clist_pop:NN, \clist_pop:cN} % \begin{syntax} -% \cs{clist_pop:NNTF} \meta{clist~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{clist_pop:NNTF} \meta{clist~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{clist~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{clist~var} is non-empty, pops the top item from the -% \meta{clist~var} in the \meta{token list variable}, \emph{i.e.}~removes +% \meta{clist~var} in the \meta{tl~var}, \emph{i.e.}~removes % the item from the \meta{clist~var}. Both the \meta{clist~var} and the -% \meta{token list variable} are assigned locally. +% \meta{tl~var} are assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-14]{\clist_gpop:NN, \clist_gpop:cN} % \begin{syntax} -% \cs{clist_gpop:NNTF} \meta{clist~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{clist_gpop:NNTF} \meta{clist~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{clist~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{clist~var} is non-empty, pops the top item from the -% \meta{clist~var} in the \meta{token list variable}, \emph{i.e.}~removes +% \meta{clist~var} in the \meta{tl~var}, \emph{i.e.}~removes % the item from the \meta{clist~var}. The \meta{clist~var} is modified -% globally, while the \meta{token list variable} is assigned locally. +% globally, while the \meta{tl~var} is assigned locally. % \end{function} % % \begin{function} @@ -1429,13 +1433,15 @@ % \begin{macro} % { % \clist_remove_all:Nn, \clist_remove_all:cn, -% \clist_remove_all:NV, \clist_remove_all:cV +% \clist_remove_all:NV, \clist_remove_all:cV, +% \clist_remove_all:Ne, \clist_remove_all:ce % } % \UnitTested % \begin{macro} % { % \clist_gremove_all:Nn, \clist_gremove_all:cn, -% \clist_gremove_all:NV, \clist_gremove_all:cV +% \clist_gremove_all:NV, \clist_gremove_all:cV, +% \clist_gremove_all:Ne, \clist_gremove_all:ce % } % \UnitTested % \begin{macro}{\@@_remove_all:NNNn} @@ -1509,8 +1515,8 @@ \cs_new:Npn \@@_remove_all: { \exp_after:wN \@@_remove_all:w \@@_tmp:w , } \cs_new:Npn \@@_remove_all:w #1 , \s_@@_mark , #2 , { \exp_not:n {#1} } -\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV } -\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV } +\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV , Ne , ce } +\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV , Ne , ce } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex/required/l3kernel/l3coffins.dtx b/macros/latex/required/l3kernel/l3coffins.dtx index 76bbc78d99..7eda18d6e7 100644 --- a/macros/latex/required/l3kernel/l3coffins.dtx +++ b/macros/latex/required/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -327,6 +327,14 @@ % in a form suitable for use in a \meta{dim expr}. % \end{function} % +% \begin{function}[added = 2024-10-01]{\coffin_ht_plus_dp:N, \coffin_ht_plus_dp:c} +% \begin{syntax} +% \cs{coffin_ht_plus_dp:N} \meta{coffin} +% \end{syntax} +% Calculates the total vertical size (height plus depth) of the \meta{coffin} +% in a form suitable for use in a \meta{dim expr}. +% \end{function} +% % \begin{function}{\coffin_wd:N, \coffin_wd:c} % \begin{syntax} % \cs{coffin_wd:N} \meta{coffin} @@ -866,7 +874,7 @@ % \begin{macrocode} \cs_new_protected:Npn \coffin_set_eq:NN #1#2 { - \@@_if_exist:NT #1 + \@@_if_exist:NT #2 { \box_set_eq:NN #1 #2 \prop_set_eq:cc { coffin ~ \@@_to_value:N #1 ~ corners } @@ -878,7 +886,7 @@ \cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc } \cs_new_protected:Npn \coffin_gset_eq:NN #1#2 { - \@@_if_exist:NT #1 + \@@_if_exist:NT #2 { \box_gset_eq:NN #1 #2 \prop_gset_eq:cc { coffin ~ \@@_to_value:N #1 ~ corners } @@ -924,7 +932,8 @@ % \begin{macro} % { % \coffin_dp:N, \coffin_dp:c, \coffin_ht:N, \coffin_ht:c, -% \coffin_wd:N, \coffin_wd:c +% \coffin_ht_plus_dp:N, \coffin_ht_plus_dp:c, +% \coffin_wd:N, \coffin_wd:c, % } % Coffins are just boxes when it comes to measurement. However, semantically % a separate set of functions are required. @@ -933,6 +942,8 @@ \cs_new_eq:NN \coffin_dp:c \box_dp:c \cs_new_eq:NN \coffin_ht:N \box_ht:N \cs_new_eq:NN \coffin_ht:c \box_ht:c +\cs_new_eq:NN \coffin_ht_plus_dp:N \box_ht_plus_dp:N +\cs_new_eq:NN \coffin_ht_plus_dp:c \box_ht_plus_dp:c \cs_new_eq:NN \coffin_wd:N \box_wd:N \cs_new_eq:NN \coffin_wd:c \box_wd:c % \end{macrocode} diff --git a/macros/latex/required/l3kernel/l3color.dtx b/macros/latex/required/l3kernel/l3color.dtx index f9383d0404..99c81e4980 100644 --- a/macros/latex/required/l3kernel/l3color.dtx +++ b/macros/latex/required/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -103,7 +103,7 @@ % \begin{itemize} % \item \texttt{Gray} Grayscale color, with a single axis running from % $0$ (fully black) to $15$ (fully white) -% \item \texttt{hsb} Hue-saturation-brightness color, with three axes,all +% \item \texttt{hsb} Hue-saturation-brightness color, with three axes, all % real values in the range $[0,1]$ for hue saturation and brightness % \item \texttt{Hsb} Hue-saturation-brightness color, with three axes, integer % in the range $[0,360]$ for hue, real values in the range $[0,1]$ for @@ -243,9 +243,9 @@ % % \begin{function}{\color_set_eq:nn} % \begin{syntax} -% \cs{color_set_eq:nn} \Arg{name1} \Arg{name2} +% \cs{color_set_eq:nn} \Arg{name_1} \Arg{name_2} % \end{syntax} -% Copies the color specification in \meta{name2} to \meta{name1}. The +% Copies the color specification in \meta{name_2} to \meta{name_1}. The % special name |.| may be used to represent the current color, allowing % it to be saved to a name. % \end{function} @@ -325,7 +325,7 @@ % \end{function} % % \begin{variable}[module = color]{color.sc} -% When using \texttt{dvips}, this PostScript variables hold the stroke color. +% When using \texttt{dvips}, this PostScript variable holds the stroke color. % \end{variable} % % \subsection{Coloring math mode material} @@ -338,7 +338,7 @@ % % \begin{function}[added = 2022-01-26]{\color_math:nn, \color_math:nnn} % \begin{syntax} -% \cs{color_math:nn} \Arg{color expression}\Arg{content} +% \cs{color_math:nn} \Arg{color expression} \Arg{content} % \cs{color_math:nnn} \Arg{model(s)} \Arg{value(s)} \Arg{content} % \end{syntax} % Works as for \cs[no-index]{color_select:n(n)} but applies color only to the math mode @@ -406,20 +406,20 @@ % % \begin{function}{\color_export:nnN} % \begin{syntax} -% \cs{color_export:nnN} \Arg{color expression} \Arg{format} \Arg{tl} +% \cs{color_export:nnN} \Arg{color expression} \Arg{format} \meta{tl var} % \end{syntax} % Parses the \meta{color expression} as described earlier, % then converts to the \meta{format} specified and assigns the data to the -% \meta{tl}. +% \meta{tl var}. % \end{function} % % \begin{function}{\color_export:nnnN} % \begin{syntax} -% \cs{color_export:nnnN} \Arg{model} \Arg{value(s)} \Arg{format} \Arg{tl} +% \cs{color_export:nnnN} \Arg{model} \Arg{value(s)} \Arg{format} \meta{tl var} % \end{syntax} % Expresses the combination of \meta{model} and \meta{value(s)} in an % internal representation, then converts to the \meta{format} specified and -% assigns the data to the \meta{tl}. +% assigns the data to the \meta{tl var}. % \end{function} % % \section{Creating new color models} @@ -495,7 +495,7 @@ % % Color profiles are used to ensure color accuracy by linking to collaboration. % Applying a profile can be used to standardise color which is otherwise -% device-dependence. +% device-dependent. % % \begin{function}[added = 2021-02-23]{\color_profile_apply:nn} % \begin{syntax} @@ -697,14 +697,14 @@ % \begin{macro}{\@@_convert:nnnN, \@@_convert:nVnN, \@@_convert:nnVN} % \begin{macro}[EXP] % { -% \@@_convert_gray_gray:w -% \@@_convert_gray_rgb:w -% \@@_convert_gray_cmyk:w -% \@@_convert_cmyk_gray:w -% \@@_convert_cmyk_rgb:w -% \@@_convert_cmyk_cmyk:w -% \@@_convert_rgb_gray:w -% \@@_convert_rgb_rgb:w +% \@@_convert_gray_gray:w, +% \@@_convert_gray_rgb:w, +% \@@_convert_gray_cmyk:w, +% \@@_convert_cmyk_gray:w, +% \@@_convert_cmyk_rgb:w, +% \@@_convert_cmyk_cmyk:w, +% \@@_convert_rgb_gray:w, +% \@@_convert_rgb_rgb:w, % \@@_convert_rgb_cmyk:w % } % \begin{macro}[EXP]{\@@_convert_rgb_cmyk:nnn} diff --git a/macros/latex/required/l3kernel/l3debug.dtx b/macros/latex/required/l3kernel/l3debug.dtx index 7fb64a8c13..c3554aab6d 100644 --- a/macros/latex/required/l3kernel/l3debug.dtx +++ b/macros/latex/required/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-05-08}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-11-02}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} diff --git a/macros/latex/required/l3kernel/l3deprecation.dtx b/macros/latex/required/l3kernel/l3deprecation.dtx index d947bb4599..87c7708eb8 100644 --- a/macros/latex/required/l3kernel/l3deprecation.dtx +++ b/macros/latex/required/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -505,10 +505,10 @@ { \text_uppercase:nn {#1} {#2} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n } \cs_new:Npn \tl_mixed_case:n #1 - { \text_titlecase_first:n {#1} } + { \text_titlecase_first:n { \text_lowercase:n {#1} } } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn } \cs_new:Npn \tl_mixed_case:nn #1#2 - { \text_titlecase_first:nn {#1} {#2} } + { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } } % \end{macrocode} % \end{macro} % @@ -571,7 +571,7 @@ % \char_lower_case:N, \char_upper_case:N, % \char_mixed_case:Nn, \char_fold_case:N, % \char_str_lower_case:N, \char_str_upper_case:N, -% \char_str_mixed_case:Nn, \char_str_fold_case:N, +% \char_str_mixed_case:N, \char_str_fold_case:N, % } % \begin{macrocode} \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n } diff --git a/macros/latex/required/l3kernel/l3doc.dtx b/macros/latex/required/l3kernel/l3doc.dtx index 24efea50c7..1f7a29efa5 100644 --- a/macros/latex/required/l3kernel/l3doc.dtx +++ b/macros/latex/required/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-05-08}{} +\ProvidesExplClass{l3doc}{2024-11-02}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % \maketitle % \tableofcontents % @@ -471,7 +471,7 @@ and all files in that bundle must be distributed together. % \cs{tl_if_empty_p:N} \meta{tl~var} % \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token list variable} is entirely empty +% Tests if the \meta{tl~var} is entirely empty % (\emph{i.e.}~contains no tokens at all). % \end{function} % \end{verbatim} @@ -484,7 +484,7 @@ and all files in that bundle must be distributed together. % \cs{tl_if_empty_p:N} \meta{tl~var} % \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token list variable} is entirely empty +% Tests if the \meta{tl~var} is entirely empty % (\emph{i.e.}~contains no tokens at all). % \end{function} % \end{minipage} @@ -959,8 +959,8 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \bool_new:N \g_@@_typeset_documentation_bool \bool_new:N \g_@@_typeset_implementation_bool -\bool_set_true:N \g_@@_typeset_documentation_bool -\bool_set_true:N \g_@@_typeset_implementation_bool +\bool_gset_true:N \g_@@_typeset_documentation_bool +\bool_gset_true:N \g_@@_typeset_implementation_bool % \end{macrocode} % \end{variable} % @@ -1531,12 +1531,23 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \bool_if:NT \g_@@_lmodern_bool { - \RequirePackage[T1]{fontenc} - \RequirePackage{lmodern} - \group_begin: - \ttfamily - \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{} - \group_end: + \bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: }{ \sys_if_engine_xetex_p: } + { + \group_begin: + \ttfamily + \DeclareFontShape{TU}{lmtt}{m}{it} + {<-> \UnicodeFontFile{lmmonoslant10-regular}{}}{} + \group_end: + } + { + \RequirePackage[T1]{fontenc} + \RequirePackage{lmodern} + \group_begin: + \ttfamily + \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{} + \group_end: + } } % \end{macrocode} % @@ -1618,7 +1629,7 @@ and all files in that bundle must be distributed together. % % \subsection{Design} % -% Increase the text width slightly so that width the standard fonts +% Increase the text width slightly so that with the standard fonts % 72~columns of code may appear in a \env{macrocode} environment. % Increase the marginpar width slightly, for long command names. And % increase the left margin by a similar amount. @@ -2160,10 +2171,18 @@ and all files in that bundle must be distributed together. % % \begin{macro}{\@@_names_get_seq:nN} % The argument~|#1| (argument of a |function| or |macro| environment) -% has catcodes $10$ (space), $12$ (other) and $13$ (active). Sanitize -% catcodes. If the |verb| option was used, output a one-item -% sequence. Otherwise, remove any \enquote{\%} character at the -% beginning of a line. Remove tabs and newlines. Finally, convert +% has catcodes $10$ (space), $12$ (other) and $13$ (active), and +% since \LaTeX{} 2024-06-01 also macro \cs{obeyedline} in replacement +% of active |^^M| tokens (due to the revised behavior of |+v| +% argument type in |ltcmd|). +% If the |verb| option was used, sanitize catcodes and output +% a one-item sequence. +% Otherwise, remove any \enquote{\%} character at the beginning of +% a line using new end-of-line marker \cs{obeyedline}. Remove any +% remaining \cs{obeyedline}. Then sanitize catcodes so we keep those +% verbatim \cs{obeyedline} typed in by user. Remove remaining +% \enquote{\%} character at the beginning of a line using traditional +% |^^M| marker. Remove tabs and newlines. Finally, convert % |_@@| and |@@| to |__|\meta{module name} (if it is non-empty). At % this point, \cs{l_@@_tmpa_tl} contains a comma-delimited list of % names, where |@| and~|_| have category code letter. Turn it to a @@ -2172,17 +2191,20 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_names_get_seq:nN #1#2 { - \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:n {#1} } \bool_if:NTF \l_@@_names_verb_bool { \seq_clear:N #2 - \seq_put_right:NV #2 \l_@@_tmpa_tl + \seq_put_right:No #2 { \tl_to_str:n {#1} } } { + \tl_set:Nn \l_@@_tmpa_tl {#1} \tl_remove_all:Ne \l_@@_tmpa_tl - { \iow_char:N \^^M \c_percent_str } + { \exp_not:N \obeyedline \c_percent_str } \tl_remove_all:Ne \l_@@_tmpa_tl - { \token_to_str:N \obeyedline \c_space_tl \c_percent_str } + { \exp_not:N \obeyedline } + \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:N \l_@@_tmpa_tl } + \tl_remove_all:Ne \l_@@_tmpa_tl + { \iow_char:N \^^M \c_percent_str } \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M } @@ -2529,7 +2551,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_function_typeset_stop: { \par - \dim_set:Nn \prevdepth { \box_dp:N \l_@@_descr_coffin } + \dim_set:Nn \prevdepth { \coffin_dp:N \l_@@_descr_coffin } \allowbreak } % \end{macrocode} @@ -2594,7 +2616,7 @@ and all files in that bundle must be distributed together. \dim_zero:N \l_@@_trial_width_dim \hcoffin_set:Nn \l_@@_functions_coffin { \@@_typeset_functions: } \dim_set:Nn \l_@@_trial_width_dim - { \box_wd:N \l_@@_functions_coffin } + { \coffin_wd:N \l_@@_functions_coffin } \bool_set:Nn \l_@@_long_name_bool { \dim_compare_p:nNn \l_@@_trial_width_dim > \marginparwidth } } @@ -2643,7 +2665,7 @@ and all files in that bundle must be distributed together. \coffin_join:NnnNnnnn \l_@@_output_coffin {l} {b} \l_@@_descr_coffin {l} {t} - {0.75\marginparwidth + \marginparsep} {-\medskipamount} + {\marginparwidth + \marginparsep} {-\medskipamount} \coffin_typeset:Nnnnn \l_@@_output_coffin {\l_@@_descr_coffin-l} {\l_@@_descr_coffin-t} {0pt} {0pt} @@ -2695,8 +2717,7 @@ and all files in that bundle must be distributed together. % \end{macro} % % ^^A TODO: collect all index targets from a given function environment in a box and stick it at the top. -% \begin{macro} -% {\@@_typeset_function_block:nN, \@@_typeset_function_block:eN} +% \begin{macro}{\@@_typeset_function_block:nN} % \begin{macro}{\@@_function_index:n, \@@_function_index:e} % |#1| is a csname, |#2| a boolean indicating whether to add |TF| or not. % \begin{macrocode} @@ -2712,7 +2733,6 @@ and all files in that bundle must be distributed together. { \@@_typeset_variant_list:nN {#1} #2 } \\ } -\cs_generate_variant:Nn \@@_typeset_function_block:nN { e } \cs_new_protected:Npn \@@_function_index:n #1 { \seq_gput_right:Nn \g_doc_functions_seq {#1} @@ -2840,7 +2860,7 @@ and all files in that bundle must be distributed together. { \textwidth \bool_if:NT \l_@@_long_name_bool - { + 0.75 \marginparwidth - \l_@@_trial_width_dim } + { + \marginparwidth - \l_@@_trial_width_dim } } \hbox_gset:Nw \g_@@_syntax_box \small \ttfamily @@ -3213,7 +3233,7 @@ and all files in that bundle must be distributed together. % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_print_macroname_aux:nn} +% \begin{macro}{\@@_print_macroname_aux:nn, \@@_print_macroname_aux:on} % |#1| is prefix, |#2| is optional |TF| suffix. % \begin{macrocode} \cs_new_protected:Npn \@@_print_macroname_aux:nn #1#2 @@ -3714,7 +3734,7 @@ and all files in that bundle must be distributed together. { \clist_map_inline:nn {#1} { - \clist_put_right:Nn \g_docinput_clist {##1} + \clist_gput_right:Nn \g_docinput_clist {##1} \@@_input:n {##1} } } @@ -3839,7 +3859,7 @@ and all files in that bundle must be distributed together. { MMMMV - \filesep \int_use:N \c@CodelineNo } } } -\tl_gclear:N \filesep +\tl_clear_new:N \filesep \cs_new_protected:Npn \@@_index_page_hc:nn #1#2 { \protected@write \@indexfile {} @@ -4254,7 +4274,6 @@ and all files in that bundle must be distributed together. {#2} \l_@@_index_internal_bool } -\cs_generate_variant:Nn \@@_special_index:nn { o } % \end{macrocode} % \end{macro} % diff --git a/macros/latex/required/l3kernel/l3doc.pdf b/macros/latex/required/l3kernel/l3doc.pdf Binary files differindex 9a856d8aed..de0bcf60e8 100644 --- a/macros/latex/required/l3kernel/l3doc.pdf +++ b/macros/latex/required/l3kernel/l3doc.pdf diff --git a/macros/latex/required/l3kernel/l3docstrip.dtx b/macros/latex/required/l3kernel/l3docstrip.dtx index a3b62db0af..fb69b714fb 100644 --- a/macros/latex/required/l3kernel/l3docstrip.dtx +++ b/macros/latex/required/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3docstrip.pdf b/macros/latex/required/l3kernel/l3docstrip.pdf Binary files differindex d2fe34a02b..061cd6fc44 100644 --- a/macros/latex/required/l3kernel/l3docstrip.pdf +++ b/macros/latex/required/l3kernel/l3docstrip.pdf diff --git a/macros/latex/required/l3kernel/l3expan.dtx b/macros/latex/required/l3kernel/l3expan.dtx index 7b859acaa5..3ca2c517b1 100644 --- a/macros/latex/required/l3kernel/l3expan.dtx +++ b/macros/latex/required/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -75,8 +75,8 @@ % If \cs{seq_gpush:No} was not defined it could be coded in the following way: % \begin{verbatim} % \exp_args:NNo \seq_gpush:Nn -% \g_file_name_stack -% { \l_tmpa_tl } +% \g_file_name_stack +% { \l_tmpa_tl } % \end{verbatim} % In other words, the first argument to \cs{exp_args:NNo} is the base % function and the other arguments are preprocessed and then passed to diff --git a/macros/latex/required/l3kernel/l3file.dtx b/macros/latex/required/l3kernel/l3file.dtx index ba460e3fee..ceadf34dc0 100644 --- a/macros/latex/required/l3kernel/l3file.dtx +++ b/macros/latex/required/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -225,8 +225,8 @@ % % \begin{function}[noTF, added = 2012-06-24, updated = 2019-03-23]{\ior_get:NN} % \begin{syntax} -% \cs{ior_get:NN} \meta{stream} \meta{token list variable} -% \cs{ior_get:NNTF} \meta{stream} \meta{token list variable} \meta{true code} \meta{false code} +% \cs{ior_get:NN} \meta{stream} \meta{tl~var} +% \cs{ior_get:NNTF} \meta{stream} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % Function that reads one or more lines (until an equal number of left % and right braces are found) from the file input \meta{stream} and stores @@ -243,7 +243,7 @@ % converted to the token \cs{par}. Therefore, blank lines can be % skipped by using a test such as % \begin{verbatim} -% \ior_get:NN \l_my_stream \l_tmpa_tl +% \ior_get:NN \l_my_ior \l_tmpa_tl % \tl_set:Nn \l_tmpb_tl { \par } % \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl % ... @@ -267,8 +267,8 @@ % \begin{function}[noTF, added = 2016-12-04, updated = 2019-03-23] % {\ior_str_get:NN} % \begin{syntax} -% \cs{ior_str_get:NN} \meta{stream} \meta{token list variable} -% \cs{ior_str_get:NNTF} \meta{stream} \meta{token list variable} \meta{true code} \meta{false code} +% \cs{ior_str_get:NN} \meta{stream} \meta{tl~var} +% \cs{ior_str_get:NNTF} \meta{stream} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % Function that reads one line from the file input \meta{stream} and stores % the result locally in the \meta{token list} variable. @@ -277,7 +277,7 @@ % characters which are given category code $10$ (space). % Multiple whitespace characters are retained by this process. It % always only reads one line and any blank lines in the input -% result in the \meta{token list variable} being empty. Unlike +% result in the \meta{tl~var} being empty. Unlike % \cs{ior_get:NN}, line ends do not receive any special treatment. Thus % input % \begin{verbatim} @@ -429,7 +429,7 @@ % % \begin{function}[added = 2019-03-23]{\ior_get_term:nN, \ior_str_get_term:nN} % \begin{syntax} -% \cs{ior_get_term:nN} \Arg{prompt} \meta{token list variable} +% \cs{ior_get_term:nN} \Arg{prompt} \meta{tl~var} % \end{syntax} % Function that reads one or more lines (until an equal number of left % and right braces are found) from the terminal and stores @@ -718,8 +718,10 @@ % \cs{file_if_exist_p:n} \Arg{file name} % \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if \meta{file name} is found in the path as detailed for -% \cs{file_if_exist:nTF}. +% Expands the argument of the \meta{file name} to give a string, then +% searches for this string using the current \TeX{} search +% path and the additional paths controlled by +% \cs{l_file_search_path_seq}. % \end{function} % % \subsection{Information about files and file contents} @@ -809,7 +811,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_size:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[rEXP, added = 2019-09-03] @@ -825,7 +826,6 @@ % \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| % (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. % When the file is not found, the result of expansion is empty. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] @@ -836,7 +836,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_timestamp:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP] @@ -847,11 +846,11 @@ % \file_compare_timestamp:VNV % } % \begin{syntax} -% \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2} -% \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code} +% \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{relation} \Arg{file-2} +% \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{relation} \Arg{file-2} \Arg{true code} \Arg{false code} % \end{syntax} % Compares the file stamps on the two \meta{files} as indicated by -% the \meta{comparator}, and inserts either the \meta{true code} +% the \meta{relation}, and inserts either the \meta{true code} % or \meta{false case} as required. A file which is not found % is treated as older than any file which is found. This allows for % example the construct @@ -863,14 +862,13 @@ % \end{verbatim} % to work when the derived file is entirely absent. The timestamp % of two absent files is regarded as different. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, updated = 2019-02-16] % {\file_get_full_name:nN, \file_get_full_name:VN} % \begin{syntax} -% \cs{file_get_full_name:nN} \Arg{file name} \meta{tl} -% \cs{file_get_full_name:nNTF} \Arg{file name} \meta{tl} \Arg{true code} \Arg{false code} +% \cs{file_get_full_name:nN} \Arg{file name} \meta{tl var} +% \cs{file_get_full_name:nNTF} \Arg{file name} \meta{tl var} \Arg{true code} \Arg{false code} % \end{syntax} % Searches for \meta{file name} in the path as detailed for % \cs{file_if_exist:nTF}, and if found sets the \meta{tl var} the @@ -945,15 +943,15 @@ % \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16] % {\file_get:nnN, \file_get:VnN} % \begin{syntax} -% \cs{file_get:nnN} \Arg{file name} \Arg{setup} \meta{tl} -% \cs{file_get:nnNTF} \Arg{file name} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code} +% \cs{file_get:nnN} \Arg{file name} \Arg{setup} \meta{tl var} +% \cs{file_get:nnNTF} \Arg{file name} \Arg{setup} \meta{tl var} \Arg{true code} \Arg{false code} % \end{syntax} -% Defines \meta{tl} to the contents of \meta{file name}. +% Defines \meta{tl var} to the contents of \meta{file name}. % Category codes may need to be set appropriately via the \meta{setup} % argument. -% The non-branching version sets the \meta{tl} to \cs{q_no_value} if the file is +% The non-branching version sets the \meta{tl var} to \cs{q_no_value} if the file is % not found. The branching version runs the \meta{true code} after the -% assignment to \meta{tl} if the file is found, and \meta{false code} +% assignment to \meta{tl var} if the file is found, and \meta{false code} % otherwise. The file content will be tokenized using the current % category code régime, % \end{function} diff --git a/macros/latex/required/l3kernel/l3flag.dtx b/macros/latex/required/l3kernel/l3flag.dtx index bf7776f449..7741a9b0da 100644 --- a/macros/latex/required/l3kernel/l3flag.dtx +++ b/macros/latex/required/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-assign.dtx b/macros/latex/required/l3kernel/l3fp-assign.dtx index 9ef1944a99..4fcaf71864 100644 --- a/macros/latex/required/l3kernel/l3fp-assign.dtx +++ b/macros/latex/required/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % \maketitle % % \begin{documentation} @@ -75,7 +75,9 @@ % \begin{macro} % { % \fp_set:Nn, \fp_set:cn, +% \fp_set:NV, \fp_set:cV, % \fp_gset:Nn, \fp_gset:cn, +% \fp_gset:NV, \fp_gset:cV, % \fp_const:Nn, \fp_const:cn % } % Simply use \cs{@@_parse:n} within various \texttt{f}-expanding @@ -87,8 +89,8 @@ { \__kernel_tl_gset:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } } \cs_new_protected:Npn \fp_const:Nn #1#2 { \tl_const:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } } -\cs_generate_variant:Nn \fp_set:Nn {c} -\cs_generate_variant:Nn \fp_gset:Nn {c} +\cs_generate_variant:Nn \fp_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \fp_gset:Nn { NV , c , cV } \cs_generate_variant:Nn \fp_const:Nn {c} % \end{macrocode} % \end{macro} diff --git a/macros/latex/required/l3kernel/l3fp-aux.dtx b/macros/latex/required/l3kernel/l3fp-aux.dtx index f788b85df9..807710de08 100644 --- a/macros/latex/required/l3kernel/l3fp-aux.dtx +++ b/macros/latex/required/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-basics.dtx b/macros/latex/required/l3kernel/l3fp-basics.dtx index 83c9cc87fa..11c244aa1f 100644 --- a/macros/latex/required/l3kernel/l3fp-basics.dtx +++ b/macros/latex/required/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-convert.dtx b/macros/latex/required/l3kernel/l3fp-convert.dtx index e42fb383fe..23f7a2213d 100644 --- a/macros/latex/required/l3kernel/l3fp-convert.dtx +++ b/macros/latex/required/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-expo.dtx b/macros/latex/required/l3kernel/l3fp-expo.dtx index 31eb49093d..d65a147e15 100644 --- a/macros/latex/required/l3kernel/l3fp-expo.dtx +++ b/macros/latex/required/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-extended.dtx b/macros/latex/required/l3kernel/l3fp-extended.dtx index e35f0ae55e..cedbc91888 100644 --- a/macros/latex/required/l3kernel/l3fp-extended.dtx +++ b/macros/latex/required/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-functions.dtx b/macros/latex/required/l3kernel/l3fp-functions.dtx index e7667eaa9b..444e8189fa 100644 --- a/macros/latex/required/l3kernel/l3fp-functions.dtx +++ b/macros/latex/required/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-logic.dtx b/macros/latex/required/l3kernel/l3fp-logic.dtx index 49ad2b1c02..baa08b4216 100644 --- a/macros/latex/required/l3kernel/l3fp-logic.dtx +++ b/macros/latex/required/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-parse.dtx b/macros/latex/required/l3kernel/l3fp-parse.dtx index 7999be7966..d272cadf11 100644 --- a/macros/latex/required/l3kernel/l3fp-parse.dtx +++ b/macros/latex/required/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-random.dtx b/macros/latex/required/l3kernel/l3fp-random.dtx index 2a3d00cb58..91c3a20477 100644 --- a/macros/latex/required/l3kernel/l3fp-random.dtx +++ b/macros/latex/required/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-round.dtx b/macros/latex/required/l3kernel/l3fp-round.dtx index b96d496b22..a4202b4fea 100644 --- a/macros/latex/required/l3kernel/l3fp-round.dtx +++ b/macros/latex/required/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-symbolic.dtx b/macros/latex/required/l3kernel/l3fp-symbolic.dtx index cdb7383949..0db79ef775 100644 --- a/macros/latex/required/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex/required/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-traps.dtx b/macros/latex/required/l3kernel/l3fp-traps.dtx index bca459effa..b300528ec5 100644 --- a/macros/latex/required/l3kernel/l3fp-traps.dtx +++ b/macros/latex/required/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % \maketitle % % \begin{documentation} diff --git a/macros/latex/required/l3kernel/l3fp-trig.dtx b/macros/latex/required/l3kernel/l3fp-trig.dtx index 8e8bc1cbf8..46cad5c8f9 100644 --- a/macros/latex/required/l3kernel/l3fp-trig.dtx +++ b/macros/latex/required/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-types.dtx b/macros/latex/required/l3kernel/l3fp-types.dtx index 9764606e83..049a6eea82 100644 --- a/macros/latex/required/l3kernel/l3fp-types.dtx +++ b/macros/latex/required/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp.dtx b/macros/latex/required/l3kernel/l3fp.dtx index d49d2431cb..0cbfd20153 100644 --- a/macros/latex/required/l3kernel/l3fp.dtx +++ b/macros/latex/required/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -108,7 +108,7 @@ % towards $+\infty$ if $t>0$ and towards $-\infty$ if $t<0$. % \end{itemize} % And \emph{(not yet)} modulo, and \enquote{quantize}. -% \item Random numbers: $\mathop{rand}()$, $\mathop{randint}(m,n)$. +% \item Random numbers: $\operatorname{rand}()$, $\operatorname{randint}(m,n)$. % \item Constants: \texttt{pi}, \texttt{deg} (one degree in radians). % \item Dimensions, automatically expressed in points, \emph{e.g.}, % \texttt{pc} is~$12$. @@ -198,7 +198,10 @@ % \section{Setting floating point variables} % % \begin{function}[updated = 2012-05-08, tested = m3fp002] -% {\fp_set:Nn, \fp_set:cn, \fp_gset:Nn, \fp_gset:cn} +% { +% \fp_set:Nn, \fp_set:cn, \fp_set:NV, \fp_set:cV, +% \fp_gset:Nn, \fp_gset:cn, \fp_gset:NV, \fp_gset:cV +% } % \begin{syntax} % \cs{fp_set:Nn} \meta{fp~var} \Arg{fp expr} % \end{syntax} @@ -773,9 +776,9 @@ % The result may contain other functions, which are % then replaced by their results if they have any. For instance, % \begin{quote} -% \cs{fp_new_function:n} |{ foo }| \\ +% \cs{fp_new_function:n} |{ npow }| \\ % \cs{fp_set_function:nnn} |{ npow } { a,b } { a**b }| \\ -% \cs{fp_show:n} |{ npow(16,0.25) } }| +% \cs{fp_show:n} |{ npow(16,0.25) }| % \end{quote} % shows |2|. The names of the \meta{vars} must % consist entirely of Latin letters |[a-zA-Z]|, but are otherwise not @@ -904,7 +907,6 @@ % the \TeX{} run and display some information about the current % operation in the terminal. % \end{itemize} -% \emph{This function is experimental, and may be altered or removed.} % \end{function} % % \begin{variable} diff --git a/macros/latex/required/l3kernel/l3fparray.dtx b/macros/latex/required/l3kernel/l3fparray.dtx index 8b8026a6b8..52b91d1296 100644 --- a/macros/latex/required/l3kernel/l3fparray.dtx +++ b/macros/latex/required/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3int.dtx b/macros/latex/required/l3kernel/l3int.dtx index c4e8408af2..9782fe452c 100644 --- a/macros/latex/required/l3kernel/l3int.dtx +++ b/macros/latex/required/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -100,21 +100,6 @@ % restricted-expandable functions can both be used, and \cs{exp_not:n} % and its variants have no effect while \cs{exp_not:N} may incorrectly % interrupt the expression. -% \begin{texnote} -% Exactly two expansions are needed to evaluate \cs{int_eval:n}. -% The result is \emph{not} an \meta{internal integer}, and therefore -% should be terminated by a space if used in \cs{int_value:w} or in -% a \TeX{}-style integer assignment. -% -% As all \TeX{} integers, integer operands can also be: -% \tn{value}\Arg{\LaTeXe{} counter}; dimension or skip variables, -% converted to integers in~\texttt{sp}; the character code of some -% character given as \texttt{`}\meta{char} or -% \texttt{`\textbackslash}\meta{char}; octal numbers given as -% \texttt{'} followed by digits from \texttt{0} to \texttt{7}; or -% hexadecimal numbers given as |"| followed by digits and upper case -% letters from \texttt{A} to~\texttt{F}. -% \end{texnote} % % \begin{function}[EXP]{\int_eval:n} % \begin{syntax} @@ -124,43 +109,7 @@ % input stream as an integer denotation: for positive results an % explicit sequence of decimal digits not starting with~\texttt{0}, % for negative results \texttt{-}~followed by such a sequence, and -% \texttt{0}~for zero. The \meta{int expr} should consist, -% after expansion, of \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, -% \texttt{(}, \texttt{)} and of course integer operands. The result -% is calculated by applying standard mathematical rules with the -% following peculiarities: -% \begin{itemize} -% \item \texttt{/} denotes division rounded to the closest integer with -% ties rounded away from zero; -% \item there is an error and the overall expression evaluates to zero -% whenever the absolute value of any intermediate result exceeds -% $2^{31}-1$, except in the case of scaling operations -% $a$\texttt{*}$b$\texttt{/}$c$, for which $a$\texttt{*}$b$ may be -% arbitrarily large; -% \item parentheses may not appear after unary \texttt{+} or -% \texttt{-}, namely placing \texttt{+(} or \texttt{-(} at the start -% of an expression or after \texttt{+}, \texttt{-}, \texttt{*}, -% \texttt{/} or~\texttt{(} leads to an error. -% \end{itemize} -% Each integer operand can be either an integer variable (with no need -% for \cs{int_use:N}) or an integer denotation. For example both -% \begin{verbatim} -% \int_eval:n { 5 + 4 * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% and -% \begin{verbatim} -% \tl_new:N \l_my_tl -% \tl_set:Nn \l_my_tl { 5 } -% \int_new:N \l_my_int -% \int_set:Nn \l_my_int { 4 } -% \int_eval:n { \l_my_tl + \l_my_int * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% evaluate to $-6$ because \cs[no-index]{l_my_tl} expands to the -% integer denotation~|5|. As the \meta{int expr} is fully -% expanded from left to right during evaluation, fully expandable and -% restricted-expandable functions can both be used, and \cs{exp_not:n} -% and its variants have no effect while \cs{exp_not:N} may incorrectly -% interrupt the expression. +% \texttt{0}~for zero. % \begin{texnote} % Exactly two expansions are needed to evaluate \cs{int_eval:n}. % The result is \emph{not} an \meta{internal integer}, and therefore @@ -313,11 +262,11 @@ % \begin{function}[EXP, pTF, added=2012-03-03] % {\int_if_exist:N, \int_if_exist:c} % \begin{syntax} -% \cs{int_if_exist_p:N} \meta{int} -% \cs{int_if_exist:NTF} \meta{int} \Arg{true code} \Arg{false code} +% \cs{int_if_exist_p:N} \meta{integer} +% \cs{int_if_exist:NTF} \meta{integer} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests whether the \meta{int} is currently defined. This does not -% check that the \meta{int} really is an integer variable. +% Tests whether the \meta{integer} is currently defined. This does not +% check that the \meta{integer} really is an integer variable. % \end{function} % % \section{Setting and incrementing integers} @@ -346,7 +295,10 @@ % \end{function} % % \begin{function}[updated = 2011-10-22] -% {\int_set:Nn, \int_set:cn, \int_gset:Nn, \int_gset:cn} +% { +% \int_set:Nn, \int_set:cn, \int_set:NV, \int_set:cV, +% \int_gset:Nn, \int_gset:cn, \int_gset:MV, \int_gset:cV +% } % \begin{syntax} % \cs{int_set:Nn} \meta{integer} \Arg{int expr} % \end{syntax} @@ -462,7 +414,8 @@ % \end{syntax} % This function evaluates the \meta{test int expr} and % compares this in turn to each of the -% \meta{int expr cases}. If the two are equal then the +% \meta{int expr case}s until a match is found. +% If the two are equal then the % associated \meta{code} is left in the input stream % and other cases are discarded. If any of the % cases are matched, the \meta{true code} is also inserted into the @@ -481,6 +434,10 @@ % { No idea! } % \end{verbatim} % leaves \enquote{\texttt{Medium}} in the input stream. +% Since evaluation of the test expressions stops at the first +% successful case, the order of possible matches should normally +% be that the most likely are earlier: this will reduce the average +% steps required to complete expansion. % \end{function} % % \begin{function}[EXP,pTF]{\int_if_even:n, \int_if_odd:n} @@ -909,7 +866,6 @@ % \end{syntax} % Evaluates the two \meta{int expr}s and produces a % pseudo-random number between the two (with bounds included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[EXP, added = 2018-05-05]{\int_rand:n} @@ -918,7 +874,6 @@ % \end{syntax} % Evaluates the \meta{int expr} then produces a % pseudo-random number between $1$ and the \meta{int expr} (included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \section{Viewing integers} @@ -1521,9 +1476,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\int_set:Nn, \int_set:cn} +% \begin{macro}{\int_set:Nn, \int_set:cn, \int_set:NV, \int_set:cV} % \UnitTested -% \begin{macro}{\int_gset:Nn, \int_gset:cn} +% \begin{macro}{\int_gset:Nn, \int_gset:cn, \int_gset:NV, \int_gset:cV} % \UnitTested % As integers are register-based \TeX{} issues an error % if they are not defined. While the |=| sign is optional, this @@ -1534,8 +1489,8 @@ { #1 = \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \int_gset:Nn #1#2 { \tex_global:D #1 = \@@_eval:w #2 \@@_eval_end: } -\cs_generate_variant:Nn \int_set:Nn { c } -\cs_generate_variant:Nn \int_gset:Nn { c } +\cs_generate_variant:Nn \int_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \int_gset:Nn { NV , c , cV } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex/required/l3kernel/l3intarray.dtx b/macros/latex/required/l3kernel/l3intarray.dtx index 20e6219ef8..9a9a5d64e8 100644 --- a/macros/latex/required/l3kernel/l3intarray.dtx +++ b/macros/latex/required/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -79,7 +79,7 @@ % \begin{function}[added = 2018-05-04] % {\intarray_const_from_clist:Nn, \intarray_const_from_clist:cn} % \begin{syntax} -% \cs{intarray_const_from_clist:Nn} \meta{intarray~var} \meta{int expr clist} +% \cs{intarray_const_from_clist:Nn} \meta{intarray~var} \Arg{int expr clist} % \end{syntax} % Creates a new constant \meta{integer array variable} or raises an % error if the name is already taken. The \meta{integer array diff --git a/macros/latex/required/l3kernel/l3kernel-functions.dtx b/macros/latex/required/l3kernel/l3kernel-functions.dtx index 6779a3ca6c..2678f3f965 100644 --- a/macros/latex/required/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/required/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3keys.dtx b/macros/latex/required/l3kernel/l3keys.dtx index f03c628a63..c9220d7279 100644 --- a/macros/latex/required/l3kernel/l3keys.dtx +++ b/macros/latex/required/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -500,9 +500,9 @@ % % \begin{function}{.tl_set:N, .tl_set:c, .tl_gset:N, .tl_gset:c} % \begin{syntax} -% \meta{key} .tl_set:N = \meta{token list variable} +% \meta{key} .tl_set:N = \meta{tl~var} % \end{syntax} -% Defines \meta{key} to set \meta{token list variable} to \meta{value}. +% Defines \meta{key} to set \meta{tl~var} to \meta{value}. % If the variable does not exist, it is created globally % at the point that the key is set up. % \end{function} @@ -510,9 +510,9 @@ % \begin{function}[added = 2023-09-18] % {.tl_set_e:N, .tl_set_e:c, .tl_gset_e:N, .tl_gset_e:c} % \begin{syntax} -% \meta{key} .tl_set_e:N = \meta{token list variable} +% \meta{key} .tl_set_e:N = \meta{tl~var} % \end{syntax} -% Defines \meta{key} to set \meta{token list variable} to \meta{value}, +% Defines \meta{key} to set \meta{tl~var} to \meta{value}, % which will be subjected to an \texttt{e}-type expansion % (\emph{i.e.}~using \cs{tl_set:Ne}). If the variable does not exist, % it is created globally at the point that the key is set up. @@ -649,15 +649,13 @@ % { key } % Name of choice key % { choice-a , choice-b , choice-c } % Valid choices % { \exp_not:n {#1} } % Invalid choice given -% % -% % % } % \end{verbatim} % % Multiple choices are created in a very similar manner to mutually-exclusive % choices, using the properties \texttt{.multichoice:} and % \texttt{.multichoices:nn}. As with mutually exclusive choices, multiple -% choices are define as sub-keys. Thus both +% choices are defined as sub-keys. Thus both % \begin{verbatim} % \keys_define:nn { mymodule } % { @@ -792,36 +790,6 @@ % } % \end{verbatim} % -% \begin{function}[added = 2011-08-23, updated = 2019-01-29] -% { -% \keys_set_known:nn, \keys_set_known:nV, -% \keys_set_known:nv, \keys_set_known:ne, -% \keys_set_known:no, -% \keys_set_known:nnN, \keys_set_known:nVN, -% \keys_set_known:nvN, \keys_set_known:neN, -% \keys_set_known:noN, -% \keys_set_known:nnnN, \keys_set_known:nVnN, -% \keys_set_known:nvnN, \keys_set_known:nenN, -% \keys_set_known:nonN -% } -% \begin{syntax} -% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} -% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl} -% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl} -% \end{syntax} -% These functions set keys which are known for the \meta{module}, and -% simply ignore other keys. The \cs{keys_set_known:nn} function parses the -% \meta{keyval list}, and sets those keys which are defined for -% \meta{module}. Any keys which are unknown are not processed further by -% the parser. In addition, \cs{keys_set_known:nnN} stores the key--value -% pairs in the \meta{tl} in comma-separated form (\emph{i.e.}~an edited -% version of the \meta{keyval list}). When a \meta{root} is given -% (\cs{keys_set_known:nnnN}), the key--value entries are returned -% relative to this point in the key tree. When it is absent, only the -% key name and value are provided. The correct list is returned by -% nested calls. -% \end{function} -% % \section{Selective key setting} % \label{sec:l3keys:selective} % @@ -862,33 +830,37 @@ % groups to be made \enquote{active}, or by marking one or more groups to % be ignored in key setting. % -% \begin{function}[added = 2024-01-10] +% \begin{function}[added = 2011-08-23, updated = 2019-01-29] % { -% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, -% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, -% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, -% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, -% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, -% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% \keys_set_known:nn, \keys_set_known:nV, +% \keys_set_known:nv, \keys_set_known:ne, +% \keys_set_known:no, +% \keys_set_known:nnN, \keys_set_known:nVN, +% \keys_set_known:nvN, \keys_set_known:neN, +% \keys_set_known:noN, +% \keys_set_known:nnnN, \keys_set_known:nVnN, +% \keys_set_known:nvnN, \keys_set_known:nenN, +% \keys_set_known:nonN % } % \begin{syntax} -% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} -% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl} -% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{root} \meta{tl} +% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} +% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Sets keys by excluding those in the specified \meta{groups}. -% The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus always set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_exclude_groups:nnn} version skips this stage. -% -% Use of \cs{keys_set_exclude_groups:nnnN} can be nested, with the correct residual -% \meta{keyval list} returned at each stage. In the version which takes -% a \meta{root} argument, the key list is returned relative to that point -% in the key tree. In the cases without a \meta{root} argument, only -% the key names and values are returned. +% These functions set keys which are known for the \meta{module}, and +% simply ignore other keys. The \cs{keys_set_known:nn} function parses the +% \meta{keyval list}, and sets those keys which are defined for +% \meta{module}. Any keys which are unknown are not processed further by +% the parser. +% +% In addition, \cs{keys_set_known:nnN} and \cs{keys_set_known:nnnN} +% store the key--value pairs for unknown keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_known:nnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. % \end{function} % % \begin{function}[added = 2013-07-14, updated = 2024-05-08] @@ -902,25 +874,62 @@ % } % \begin{syntax} % \cs{keys_set_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} +% \end{syntax} +% These functions activate key selection in an \enquote{opt-in} sense: +% only keys assigned to one or more of the \meta{groups} specified are set. +% The \meta{groups} are given as a comma-separated list. Unknown keys are +% not assigned to any group and are thus never set. +% +% In addition, \cs{keys_set_groups:nnnN} and \cs{keys_set_groups:nnnnN} +% store the key--value pairs for skipped keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_groups:nnnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. +% \end{function} +% +% \begin{function}[added = 2024-01-10] +% { +% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, +% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, +% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, +% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, +% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, +% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% } +% \begin{syntax} +% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Activates key filtering in an \enquote{opt-in} sense: only keys assigned to -% one or more of the \meta{groups} specified are set. The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus never set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_groups:nnn} version skips this stage +% These functions activate key selection in an \enquote{opt-out} sense: +% keys assigned to one or more of the \meta{groups} specified are +% \emph{not} set. The \meta{groups} are given as a comma-separated list. +% Unknown keys are not assigned to any group and are thus always set. +% +% In addition, \cs{keys_set_exclude_groups:nnnN} and +% \cs{keys_set_exclude_groups:nnnnN} store the key--value pairs for +% skipped keys in the \meta{tl~var} in comma-separated form +% (\emph{i.e.}~an edited version of the \meta{keyval list}). When a +% \meta{root} is given (\cs{keys_set_exclude_groups:nnnnN}), the +% key--value entries are returned relative to this point in the key +% tree. When it is absent, only the key name and value are provided. +% The correct list is returned by nested calls. % \end{function} % % \section{Digesting keys} % % \begin{function}[added = 2022-03-09]{\keys_precompile:nnN} % \begin{syntax} -% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl} +% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} % \end{syntax} % Parses the \meta{keyval list} as for \cs{keys_set:nn}, placing the % resulting code for those which set variables or functions into the -% \meta{tl}. Thus this function \enquote{precompiles} the keyval list into +% \meta{tl~var}. Thus this function \enquote{precompiles} the keyval list into % a set of results which can be applied rapidly. % \end{function} % @@ -1687,14 +1696,14 @@ % \begin{variable}{\l_@@_selective_clist} % The list of key groups being filtered in or out during selective setting. % \begin{macrocode} -\seq_new:N \l_@@_selective_clist +\clist_new:N \l_@@_selective_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_tmp_clist} % Scratch space used as a data dump. % \begin{macrocode} -\seq_new:N \l_@@_tmp_clist +\clist_new:N \l_@@_tmp_clist % \end{macrocode} % \end{variable} % @@ -1915,19 +1924,21 @@ % \end{macro} % % \begin{macro}{\@@_define_code:n} +% \begin{macro}[EXP]{\@@_define_code:nnn} % \begin{macro}[EXP]{\@@_define_code:w} % Two possible cases. If there is a value for the key, then just use % the function. If not, then a check to make sure there is no need for % a value with the property. If there should be one then complain, -% otherwise execute it. There is no need to check for a |:| as if it -% was missing the earlier tests would have failed. +% otherwise execute it. For a \LaTeXe{} property like |.code| which +% doesn't contain a |:|, treat it as having arity 1 and pass the +% (empty) value to it. % \begin{macrocode} \cs_new_protected:Npn \@@_define_code:n #1 { \bool_if:NTF \l_@@_no_value_bool { - \exp_after:wN \@@_define_code:w - \l_@@_property_str \s_@@_stop + \@@_define_code:nnn + { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} } { \use:c { \c_@@_props_root_str \l_@@_property_str } } { \msg_error:nnee { keys } { property-requires-value } @@ -1936,12 +1947,31 @@ } { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} } } -\exp_last_unbraced:NNNNo - \cs_new:Npn \@@_define_code:w #1 \c_colon_str #2 \s_@@_stop - { \tl_if_empty:nTF {#2} } +\cs_new:Npe \@@_define_code:nnn + { + \exp_not:N \exp_after:wN \exp_not:N \@@_define_code:w + \exp_not:N \l_@@_property_str + \c_colon_str \c_colon_str + \exp_not:N \s_@@_stop + } +\use:e + { + \cs_new:Npn \exp_not:N \@@_define_code:w + #1 \c_colon_str #2 \c_colon_str #3 \exp_not:N \s_@@_stop + } + { + \tl_if_empty:nTF {#3} + { \use_i:nnn } + { + \tl_if_empty:nTF {#2} + { \use_ii:nnn } + { \use_iii:nnn } + } + } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \subsection{Turning properties into actions} % @@ -2148,7 +2178,7 @@ % % \begin{macro}{\@@_initialise:n} % A set up for initialisation: just run the code if it exists. -% We need to set the key string here, using the deprecated \texttt{tl} +% We need to set the key string here, using the deprecated \texttt{tl~var} % as a piece of scratch space. % \begin{macrocode} \cs_new_protected:Npn \@@_initialise:n #1 diff --git a/macros/latex/required/l3kernel/l3legacy.dtx b/macros/latex/required/l3kernel/l3legacy.dtx index fd30799ea1..b76516d1b0 100644 --- a/macros/latex/required/l3kernel/l3legacy.dtx +++ b/macros/latex/required/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3luatex.dtx b/macros/latex/required/l3kernel/l3luatex.dtx index 19d92a1591..d7a6058a15 100644 --- a/macros/latex/required/l3kernel/l3luatex.dtx +++ b/macros/latex/required/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -567,7 +567,7 @@ ltxutils.filesize = filesize % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{luadef} +% \begin{macro}[int]{luacmd} % An internal function for defining control sequences form Lua which behave % like primitives. This acts as a wrapper around |token.set_lua| which accepts % a function instead of an index into the functions table. diff --git a/macros/latex/required/l3kernel/l3msg.dtx b/macros/latex/required/l3kernel/l3msg.dtx index 96fc231193..68058724e8 100644 --- a/macros/latex/required/l3kernel/l3msg.dtx +++ b/macros/latex/required/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3names.dtx b/macros/latex/required/l3kernel/l3names.dtx index c2af4697f2..95aeafe4a6 100644 --- a/macros/latex/required/l3kernel/l3names.dtx +++ b/macros/latex/required/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -580,7 +580,6 @@ \@@_primitive:NN \pdfoutline \tex_pdfoutline:D \@@_primitive:NN \pdfoutput \tex_pdfoutput:D \@@_primitive:NN \pdfpageattr \tex_pdfpageattr:D - \@@_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D \@@_primitive:NN \pdfpagebox \tex_pdfpagebox:D \@@_primitive:NN \pdfpageref \tex_pdfpageref:D \@@_primitive:NN \pdfpageresources \tex_pdfpageresources:D @@ -1242,13 +1241,11 @@ % \end{macrocode} % Primitives from \upTeX{}. % \begin{macrocode} - \@@_primitive:NN \currentcjktoken \tex_currentcjktoken:D \@@_primitive:NN \disablecjktoken \tex_disablecjktoken:D \@@_primitive:NN \enablecjktoken \tex_enablecjktoken:D \@@_primitive:NN \forcecjktoken \tex_forcecjktoken:D \@@_primitive:NN \kchar \tex_kchar:D \@@_primitive:NN \kchardef \tex_kchardef:D - \@@_primitive:NN \kuten \tex_kuten:D \@@_primitive:NN \uptexrevision \tex_uptexrevision:D \@@_primitive:NN \uptexversion \tex_uptexversion:D % \end{macrocode} diff --git a/macros/latex/required/l3kernel/l3news.pdf b/macros/latex/required/l3kernel/l3news.pdf Binary files differindex eeea0487e7..6082a4a8f0 100644 --- a/macros/latex/required/l3kernel/l3news.pdf +++ b/macros/latex/required/l3kernel/l3news.pdf diff --git a/macros/latex/required/l3kernel/l3news01.pdf b/macros/latex/required/l3kernel/l3news01.pdf Binary files differindex eed44515b5..ab42ee7d9e 100644 --- a/macros/latex/required/l3kernel/l3news01.pdf +++ b/macros/latex/required/l3kernel/l3news01.pdf diff --git a/macros/latex/required/l3kernel/l3news02.pdf b/macros/latex/required/l3kernel/l3news02.pdf Binary files differindex 34df11b4f6..0dc154f266 100644 --- a/macros/latex/required/l3kernel/l3news02.pdf +++ b/macros/latex/required/l3kernel/l3news02.pdf diff --git a/macros/latex/required/l3kernel/l3news03.pdf b/macros/latex/required/l3kernel/l3news03.pdf Binary files differindex fa2fc3a7b9..b65c38e4da 100644 --- a/macros/latex/required/l3kernel/l3news03.pdf +++ b/macros/latex/required/l3kernel/l3news03.pdf diff --git a/macros/latex/required/l3kernel/l3news04.pdf b/macros/latex/required/l3kernel/l3news04.pdf Binary files differindex c1b5f0e555..72b0bd7508 100644 --- a/macros/latex/required/l3kernel/l3news04.pdf +++ b/macros/latex/required/l3kernel/l3news04.pdf diff --git a/macros/latex/required/l3kernel/l3news05.pdf b/macros/latex/required/l3kernel/l3news05.pdf Binary files differindex a3dc4d6e02..1ee5999389 100644 --- a/macros/latex/required/l3kernel/l3news05.pdf +++ b/macros/latex/required/l3kernel/l3news05.pdf diff --git a/macros/latex/required/l3kernel/l3news06.pdf b/macros/latex/required/l3kernel/l3news06.pdf Binary files differindex 765174a222..796821593a 100644 --- a/macros/latex/required/l3kernel/l3news06.pdf +++ b/macros/latex/required/l3kernel/l3news06.pdf diff --git a/macros/latex/required/l3kernel/l3news07.pdf b/macros/latex/required/l3kernel/l3news07.pdf Binary files differindex d9d2c2a281..545b732f7a 100644 --- a/macros/latex/required/l3kernel/l3news07.pdf +++ b/macros/latex/required/l3kernel/l3news07.pdf diff --git a/macros/latex/required/l3kernel/l3news08.pdf b/macros/latex/required/l3kernel/l3news08.pdf Binary files differindex 810cc505a0..66d91ae341 100644 --- a/macros/latex/required/l3kernel/l3news08.pdf +++ b/macros/latex/required/l3kernel/l3news08.pdf diff --git a/macros/latex/required/l3kernel/l3news09.pdf b/macros/latex/required/l3kernel/l3news09.pdf Binary files differindex 1491fdd32c..1e56ef2837 100644 --- a/macros/latex/required/l3kernel/l3news09.pdf +++ b/macros/latex/required/l3kernel/l3news09.pdf diff --git a/macros/latex/required/l3kernel/l3news10.pdf b/macros/latex/required/l3kernel/l3news10.pdf Binary files differindex 496795ff16..1d50364e6e 100644 --- a/macros/latex/required/l3kernel/l3news10.pdf +++ b/macros/latex/required/l3kernel/l3news10.pdf diff --git a/macros/latex/required/l3kernel/l3news11.pdf b/macros/latex/required/l3kernel/l3news11.pdf Binary files differindex 68a16e2539..c5460e4ca7 100644 --- a/macros/latex/required/l3kernel/l3news11.pdf +++ b/macros/latex/required/l3kernel/l3news11.pdf diff --git a/macros/latex/required/l3kernel/l3news12.pdf b/macros/latex/required/l3kernel/l3news12.pdf Binary files differindex f99bb21037..517857c7dd 100644 --- a/macros/latex/required/l3kernel/l3news12.pdf +++ b/macros/latex/required/l3kernel/l3news12.pdf diff --git a/macros/latex/required/l3kernel/l3pdf.dtx b/macros/latex/required/l3kernel/l3pdf.dtx index 007cb5b5ad..624fd08326 100644 --- a/macros/latex/required/l3kernel/l3pdf.dtx +++ b/macros/latex/required/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -70,8 +70,8 @@ % \cs{pdf_object_write:nnn} \Arg{object} \Arg{type} \Arg{content} % \end{syntax} % Writes the \meta{content} as content of the \meta{object}. Depending on the -% \meta{type} declared for the object, the format required for the -% \meta{data} will vary +% \meta{type} declared for the object, the format required for +% \meta{content} will vary: % \begin{itemize} % \item[\texttt{array}] A space-separated list of values % \item[\texttt{dict}] Key--value pairs in the form @@ -159,7 +159,7 @@ % \cs{pdf_object_unnamed_write:nn} \Arg{type} \Arg{content} % \end{syntax} % Writes the \meta{content} as content of an anonymous object. Depending on the -% \meta{type}, the format required for the \meta{data} will vary +% \meta{type}, the format required for \meta{content} will vary: % \begin{itemize} % \item[\texttt{array}] A space-separated list of values % \item[\texttt{dict}] Key--value pairs in the form @@ -192,11 +192,11 @@ % % \begin{function}[pTF, EXP, added = 2021-02-10]{\pdf_version_compare:Nn} % \begin{syntax} -% \cs{pdf_version_compare_p:Nn} \meta{comparator} \Arg{version} -% \cs{pdf_version_compare:NnTF} \meta{comparator} \Arg{version} \Arg{true code} \Arg{false code} +% \cs{pdf_version_compare_p:Nn} \meta{relation} \Arg{version} +% \cs{pdf_version_compare:NnTF} \meta{relation} \Arg{version} \Arg{true code} \Arg{false code} % \end{syntax} % Compares the version of the PDF being created with the \meta{version} -% string specified, using the \meta{comparator}. Either the \meta{true code} +% string specified, using the \meta{relation}. Either the \meta{true code} % or \meta{false code} will be left in the output stream. % \end{function} % @@ -251,9 +251,9 @@ % % \section{Destinations} % -% Destinations are the places a link jumped too. -% Unlike the name may suggest they don't described -% an exact location in the PDF. Instead a destination contains a reference to +% Destinations are the places a link jumped to. +% Unlike the name may suggest, they don't describe +% an exact location in the PDF. Instead, a destination contains a reference to % a page along with an instruction how to display this page. % The normally used \enquote{XYZ \textit{top left zoom}} for example instructs % the viewer to show the page with the given \textit{zoom} and diff --git a/macros/latex/required/l3kernel/l3prefixes.csv b/macros/latex/required/l3kernel/l3prefixes.csv index 7baa984582..e9835fb3f0 100644 --- a/macros/latex/required/l3kernel/l3prefixes.csv +++ b/macros/latex/required/l3kernel/l3prefixes.csv @@ -26,6 +26,7 @@ block,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https: bool,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, box,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, bxjh,BXjaholiday,Takuto Asakura,https://github.com/wtsnjp/BXjaholiday,https://github.com/wtsnjp/BXjaholiday.git,https://github.com/wtsnjp/BXjaholiday/issues,2018-02-02,2019-02-02, +cal,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, cascade,cascade,F. Pantigny,,,,2020-07-21,2020-07-21, catcode,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, cctab,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28, @@ -78,6 +79,7 @@ etex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https: etl,etl,Jonathan P. Spratte,https://github.com/Skillmon/ltx_etl,git@github.com:Skillmon/ltx_etl.git,https://github.com/Skillmon/ltx_etl/issues,2021-08-16,2021-08-16, exp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, expl,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +expltools,expltools,VÃt Starý Novotný,https://github.com/witiko/expltools/,https://github.com/witiko/expltools.git,https://github.com/witiko/expltools/issues,2024-06-26,2024-06-26,Development tools for expl3 programmers exsheets,exsheets,Clemens Niederberger,https://bitbucket.org/cgnieder/exsheets/,git@bitbucket.org:cgnieder/exsheets.git,https://bitbucket.org/cgnieder/exsheets/issues,2013-03-16,2013-03-16, extblx,biblatex-ext,Moritz Wemheuer,https://github.com/moewew/biblatex-ext/,https://github.com/moewew/biblatex-ext.git,https://github.com/moewew/biblatex-ext/issues,2020-02-09,2020-02-09, exwf,exwrapfig,Takuto Asakura,https://github.com/wtsnjp/exwrapfig,https://github.com/wtsnjp/exwrapfig.git,https://github.com/wtsnjp/exwrapfig/issues,2018-06-07,2018-06-07, @@ -132,11 +134,14 @@ job,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https:/ jsonparse,jsonparse,Jasper Habicht,https://github.com/jasperhabicht/jsonparse,https://github.com/jasperhabicht/jsonparse/jsponsparse.git,https://github.com/jasperhabicht/jsonparse/issues,2024-04-14,2024-04-14, kernel,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, keys,"l3kernel,l3keys2e,ltkeys",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +keythms,keytheorems,Matthew Bertucci,https://github.com/mbertucci47/keytheorems,https://github.com/mbertucci47/keytheorems,https://github.com/mbertucci47/keytheorems/issues,2024-09-10,2024-09-10, keyval,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, kgl,kantlipsum,Enrico Gregorio,,,,2013-03-16,2013-03-16, kivitendo,"kiviletter, kivitables",Marei Peischl for Kivitendo,https://www.kivitendo.de/,https://github.com/kivitendo/kivitendo-erp,https://forum.kivitendo.de/,2021-05-28,2021-05-28, +knot,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, langsci,langscibook,Language Science Press,https://langsci-press.org,https://github.com/langsci/langscibook,https://github.com/langsci/langscibook/issues,2021-07-20,2021-07-21, left,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +liftarm,liftarm,Matthias Floré,,,,2024-05-25,2024-05-25, lltxmath,lualatex-math,Philipp Stephani,https://github.com/phst/lualatex-math,https://github.com/phst/lualatex-math.git,https://github.com/phst/lualatex-math/issues,2012-11-07,2012-11-07, log,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, lua,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -159,6 +164,7 @@ minibox,minibox,Will Robertson,,https://github.com/wspr/will2e.git,https://githu minus,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, mix,media9,Alexander Grahn,,https://gitlab.com/agrahn/media9,https://gitlab.com/agrahn/media9/issues,2013-01-18,2020-04-15, mode,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +moremath,moremath,Marcel Ilg,https://github.com/Mister00X/moremath,https://github.com/Mister00X/moremath.git,https://github.com/Mister00X/moremath/issues,2024-07-27,2024-07-27, morewrites,morewrites,Bruno Le Floch,https://github.com/blefloch/latex-morewrites,https://github.com/blefloch/latex-morewrites.git,https://github.com/blefloch/latex-morewrites/issues,2013-03-16,2015-09-22, msg,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, msvg,media4svg,Alexander Grahn,,https://gitlab.com/agrahn/media4svg,https://gitlab.com/agrahn/media4svg/issues,2020-04-15,2020-04-15, @@ -200,6 +206,7 @@ piton,piton,François Pantigny,,,,29/09/2022,29/09/2022, pkgploader,pkgploader,Michiel Helvensteijn,,,,2014-02-05,2014-02-05, platex,platex,Japanese TeX Development Community,https://github.com/texjporg/platex,https://github.com/texjporg/platex.git,https://github.com/texjporg/platex/issues,2020-09-30,2020-09-30, polyglossia,polyglossia,Arthur Reutenauer,https://www.polyglossia.org/,https://github.com/reutenauer/polyglossia,https://github.com/reutenauer/polyglossia/issues,2019-09-03,, +polyomino,polyomino,Matthias Floré,,,,2024-09-05,2024-09-05, postnotes,postnotes,gusbrs,https://github.com/gusbrs/postnotes,https://github.com/gusbrs/postnotes.git,https://github.com/gusbrs/postnotes/issues,2022-04-23,2022-04-23, prelim,prelim2e,Marei Peischl,https://github.com/TeXhackse/prelim2e,https://github.com/TeXhackse/prelim2e.git,https://github.com/TeXhackse/prelim2e/issues,2020-11-24,2020-11-24, prg,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -209,6 +216,7 @@ property,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,htt pseudo,pseudo,Magnus Lie Hetland,https://github.com/mlhetland/pseudo.sty,https://github.com/mlhetland/pseudo.sty.git,https://github.com/mlhetland/pseudo.sty/issues,2019-06-24,2019-06-24, ptex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-07-28,2015-07-28, ptxcd,ptxcd,Marei Peischl,,,,2020-07-27,2020-07-27,Used for specific corporate design templates +ptxtools,"depp, ptxtools",Marei Peischl,https://gitlab.com/islandoftex/texmf/depp,https://gitlab.com/islandoftex/texmf/depp.git,https://gitlab.com/islandoftex/texmf/depp,2024-07-09,2024-07-09, qrbill,qrbill,Marei Peischl,https://github.com/peiTeX/qrbill,https://github.com/peiTeX/qrbill.git,https://github.com/peiTeX/qrbill/issues,2020-06-27,2020-06-27, quark,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, rainbow,beamertheme-rainbow,samcarter,https://github.com/samcarter/beamertheme-rainbow,https://github.com/samcarter/beamertheme-rainbow,https://github.com/samcarter/beamertheme-rainbow/issues,2023-07-04,2023-07-04, @@ -238,6 +246,7 @@ slcd,se2thesis,Stephan Lukasczyk,https://github.com/se2p/se2thesis,https://githu socket,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17, sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13, space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +spath,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15, statistics,statistics,Julien Rivaud,https://gitlab.com/frnchfrgg-latex/statistics,https://gitlab.com/frnchfrgg-latex/statistics.git,https://gitlab.com/frnchfrgg-latex/statistics/issues,2018-06-25,2018-06-25, stm,lt3-stm,CV Radhakrishnan,http://www.cvr.cc/,,,2014-02-26,2014-02-26, @@ -257,6 +266,7 @@ tex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https:/ text,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-01-15,2020-01-15, tikzfill,tikzfill,Thomas F. Sturm,https://github.com/T-F-S/tikzfill,https://github.com/T-F-S/tikzfill.git,https://github.com/T-F-S/tikzfill/issues,2022-07-19,2022-07-19, tikzlings,tikzlings,samcarter,https://github.com/samcarter/tikzlings,git@github.com:samcarter/tikzlings.git,https://github.com/samcarter/tikzlings/issues,2023-02-17,2023-02-17, +tikzspath,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, tikzsymbols,tikzsymbols,Ben Vitecek,https://github.com/Vidabe/tikzsymbols,https://github.com/Vidabe/tikzsymbols.git,https://github.com/Vidabe/tikzsymbols/issues,2018-09-26,2018-09-26, tilde,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, tl,"l3kernel,l3tl-build",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -287,6 +297,7 @@ xmarks,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https xparse,xparse,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, xpatch,"regexpatch,xpatch",Enrico Gregorio,,,,2013-03-16,2013-03-16, xpeek,xpeek,Joel C. Salomon,,,,2013-03-16,2013-03-16, +xpg,polyglossia,Jürgen Spitzmüller,https://github.com/reutenauer/polyglossia/,https://github.com/reutenauer/polyglossia/,https://github.com/reutenauer/polyglossia/issues,2024-07-02,2024-07-02, xpinyin,xpinyin,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-03-16,2013-05-26, xsb,xsavebox,Alexander Grahn,,https://gitlab.com/agrahn/xsavebox,https://gitlab.com/agrahn/xsavebox/issues,2016-02-26,2020-04-15, xsim,xsim,Clemens Niederberger,https://github.com/cgnieder/xsim/,https://github.com/cgnieder/xsim.git,https://github.com/cgnieder/xsim/issues,2020-04-14,2020-04-14, @@ -298,4 +309,5 @@ zhnum,zhnumber,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/ zrefcheck,zref-check,gusbrs,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check/issues,2021-08-05,2021-08-05, zrefclever,zref-clever,gusbrs,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever/issues,2021-11-29,2021-11-29, zrefvario,zref-vario,gusbrs,https://github.com/gusbrs/zref-vario,https://github.com/gusbrs/zref-vario,https://github.com/gusbrs/zref-vario/issues,2022-02-02,2022-02-02, +zugferd,zugferd,Marei Peischl,https://github.com/TeXhackse/LaTeX-ZUGFeRD,https://github.com/TeXhackse/LaTeX-ZUGFeRD.git,https://github.com/TeXhackse/LaTeX-ZUGFeRD/issues,2024-07-09,2024-07-09, zxjt,zxjatype,Takayuki Yato,,,,2013-03-16,2013-03-16, diff --git a/macros/latex/required/l3kernel/l3prefixes.pdf b/macros/latex/required/l3kernel/l3prefixes.pdf Binary files differindex 0a721bca11..3063489a71 100644 --- a/macros/latex/required/l3kernel/l3prefixes.pdf +++ b/macros/latex/required/l3kernel/l3prefixes.pdf diff --git a/macros/latex/required/l3kernel/l3prg.dtx b/macros/latex/required/l3kernel/l3prg.dtx index 96ef859b3f..c4f2ab1fa0 100644 --- a/macros/latex/required/l3kernel/l3prg.dtx +++ b/macros/latex/required/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -664,7 +664,7 @@ % ~~\Arg{true code} % ~~\Arg{false code} % \end{syntax} -% Evaluates in turn each of the \meta{boolean expression cases} until +% Evaluates in turn each of the \meta{boolean expression case}s until % the first one that evaluates to \texttt{true}. % The \meta{code} associated to this first case is left in the input % stream, followed by the \meta{true code}, and other cases are diff --git a/macros/latex/required/l3kernel/l3prop.dtx b/macros/latex/required/l3kernel/l3prop.dtx index 3350b27792..47cd52320c 100644 --- a/macros/latex/required/l3kernel/l3prop.dtx +++ b/macros/latex/required/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -181,11 +181,11 @@ % \prop_gset_from_keyval:Nn, \prop_gset_from_keyval:cn, % } % \begin{syntax} -% \cs{prop_set_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_set_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Sets \meta{property list} to contain key--value pairs given in the second % argument. If duplicate keys appear only the last of the values is kept. @@ -205,11 +205,11 @@ % \begin{function}[added = 2017-11-28, updated = 2021-11-07] % {\prop_const_from_keyval:Nn, \prop_const_from_keyval:cn} % \begin{syntax} -% \cs{prop_const_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_const_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Creates a new constant \enquote{flat} \meta{property list} or raises % an error if the @@ -224,11 +224,11 @@ % \begin{function}[added = 2024-02-12] % {\prop_const_linked_from_keyval:Nn, \prop_const_linked_from_keyval:cn} % \begin{syntax} -% \cs{prop_const_linked_from_keyval:Nn} \meta{prop~var} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_const_linked_from_keyval:Nn} \meta{prop~var} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Creates a new constant \enquote{linked} \meta{prop~var} or raises an % error if the @@ -347,11 +347,11 @@ % \prop_gput_from_keyval:Nn, \prop_gput_from_keyval:cn, % } % \begin{syntax} -% \cs{prop_put_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_put_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Updates the \meta{property list} by adding entries for each key--value % pair given in the second argument. The addition is done through @@ -386,7 +386,7 @@ % Recovers the \meta{value} stored with \meta{key} from the % \meta{property list}, and places this in the \meta{token list % variable}. If the \meta{key} is not found in the -% \meta{property list} then the \meta{token list variable} is set +% \meta{property list} then the \meta{tl~var} is set % to the special marker \cs{q_no_value}. The \meta{token list % variable} is set within the current \TeX{} group. See also % \cs{prop_get:NnNTF}. @@ -405,7 +405,7 @@ % Recovers the \meta{value} stored with \meta{key} from the % \meta{property list}, and places this in the \meta{token list % variable}. If the \meta{key} is not found in the -% \meta{property list} then the \meta{token list variable} is set +% \meta{property list} then the \meta{tl~var} is set % to the special marker \cs{q_no_value}. The \meta{key} and % \meta{value} are then deleted from the property list. Both % assignments are local. See also \cs{prop_pop:NnNTF}. @@ -424,11 +424,11 @@ % Recovers the \meta{value} stored with \meta{key} from the % \meta{property list}, and places this in the \meta{token list % variable}. If the \meta{key} is not found in the -% \meta{property list} then the \meta{token list variable} is set +% \meta{property list} then the \meta{tl~var} is set % to the special marker \cs{q_no_value}. The \meta{key} and % \meta{value} are then deleted from the property list. % The \meta{property list} is modified globally, while the assignment of -% the \meta{token list variable} is local. See also \cs{prop_gpop:NnNTF}. +% the \meta{tl~var} is local. See also \cs{prop_gpop:NnNTF}. % \end{function} % % \begin{function}[EXP, added = 2014-07-17] @@ -553,17 +553,17 @@ % \prop_get:cnc % } % \begin{syntax} -% \cs{prop_get:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\ +% \cs{prop_get:NnNTF} \meta{property list} \Arg{key} \meta{tl~var} \\ % ~~\Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{key} is not present in the \meta{property list}, leaves % the \meta{false code} in the input stream. The value of the -% \meta{token list variable} is not defined in this case and should +% \meta{tl~var} is not defined in this case and should % not be relied upon. If the \meta{key} is present in the % \meta{property list}, stores the corresponding \meta{value} in the -% \meta{token list variable} without removing it from the +% \meta{tl~var} without removing it from the % \meta{property list}, then leaves the \meta{true code} in the input -% stream. The \meta{token list variable} is assigned locally. +% stream. The \meta{tl~var} is assigned locally. % \end{function} % % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19] @@ -574,17 +574,17 @@ % \prop_pop:coN % } % \begin{syntax} -% \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\ +% \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{tl~var} \\ % ~~\Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{key} is not present in the \meta{property list}, leaves % the \meta{false code} in the input stream. The value of the -% \meta{token list variable} is not defined in this case and should +% \meta{tl~var} is not defined in this case and should % not be relied upon. If the \meta{key} is present in % the \meta{property list}, pops the corresponding \meta{value} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from +% in the \meta{tl~var}, \emph{i.e.}~removes the item from % the \meta{property list}. -% Both the \meta{property list} and the \meta{token list variable} +% Both the \meta{property list} and the \meta{tl~var} % are assigned locally. % \end{function} % @@ -596,18 +596,18 @@ % \prop_gpop:coN % } % \begin{syntax} -% \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\ +% \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{tl~var} \\ % ~~\Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{key} is not present in the \meta{property list}, leaves % the \meta{false code} in the input stream. The value of the -% \meta{token list variable} is not defined in this case and should +% \meta{tl~var} is not defined in this case and should % not be relied upon. If the \meta{key} is present in % the \meta{property list}, pops the corresponding \meta{value} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from +% in the \meta{tl~var}, \emph{i.e.}~removes the item from % the \meta{property list}. % The \meta{property list} is modified globally, while the -% \meta{token list variable} is assigned locally. +% \meta{tl~var} is assigned locally. % \end{function} % % \section{Mapping over property lists} diff --git a/macros/latex/required/l3kernel/l3quark.dtx b/macros/latex/required/l3kernel/l3quark.dtx index c989bd4024..5c6b0ca2d4 100644 --- a/macros/latex/required/l3kernel/l3quark.dtx +++ b/macros/latex/required/l3kernel/l3quark.dtx @@ -32,7 +32,7 @@ % % \title{^^A % The \pkg{l3quark} module\\ Quarks and scan marks^^A -% } +% }\ifdefined\thechapter\label{sec:l3quarks}\fi % % \author{^^A % The \LaTeX{} Project\thanks @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3regex.dtx b/macros/latex/required/l3kernel/l3regex.dtx index ad44b8c6f9..1fa9f71f08 100644 --- a/macros/latex/required/l3kernel/l3regex.dtx +++ b/macros/latex/required/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -643,7 +643,7 @@ % \end{syntax} % Determines which of the \meta{regular expressions} matches at the % earliest point in the \meta{token list}, and leaves the -% corresponding \meta{code_i} followed by the \meta{true code} in the +% corresponding \meta{code} followed by the \meta{true code} in the % input stream. If several \meta{regex} match starting at the same % point, then the first one in the list is selected and the others are % discarded. If none of the \meta{regex} match, the \meta{false code} @@ -5970,7 +5970,7 @@ % corresponding to the initial value of % \cs{l_@@_replacement_category_tl}. % The argument |#1| is a single character (including the case of a catcode-other space). -% In case no specific catcode is requested, we taked into account the +% In case no specific catcode is requested, we take into account the % current catcode regime (at the time the replacement is performed) % as much as reasonable, with all impossible catcodes (escape, % newline, etc.) being mapped to \enquote{other}. diff --git a/macros/latex/required/l3kernel/l3seq.dtx b/macros/latex/required/l3kernel/l3seq.dtx index 713e4a33b1..120081197b 100644 --- a/macros/latex/required/l3kernel/l3seq.dtx +++ b/macros/latex/required/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -249,78 +249,78 @@ % For implementation reasons, the actions at the left of the sequence are % faster than those acting on the right. These functions all assign the % recovered material locally, \emph{i.e.}~setting the -% \meta{token list variable} used with \cs{tl_set:Nn} and \emph{never} +% \meta{tl~var} used with \cs{tl_set:Nn} and \emph{never} % \cs{tl_gset:Nn}. % % \begin{function}[updated = 2012-05-14]{\seq_get_left:NN, \seq_get_left:cN} % \begin{syntax} -% \cs{seq_get_left:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_get_left:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Stores the left-most item from a \meta{seq~var} in the -% \meta{token list variable} without removing it from the -% \meta{seq~var}. The \meta{token list variable} is assigned locally. -% If \meta{seq~var} is empty the \meta{token list variable} +% \meta{tl~var} without removing it from the +% \meta{seq~var}. The \meta{tl~var} is assigned locally. +% If \meta{seq~var} is empty the \meta{tl~var} % is set to the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-19]{\seq_get_right:NN, \seq_get_right:cN} % \begin{syntax} -% \cs{seq_get_right:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_get_right:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Stores the right-most item from a \meta{seq~var} in the -% \meta{token list variable} without removing it from the -% \meta{seq~var}. The \meta{token list variable} is assigned locally. -% If \meta{seq~var} is empty the \meta{token list variable} +% \meta{tl~var} without removing it from the +% \meta{seq~var}. The \meta{tl~var} is assigned locally. +% If \meta{seq~var} is empty the \meta{tl~var} % is set to the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-14]{\seq_pop_left:NN, \seq_pop_left:cN} % \begin{syntax} -% \cs{seq_pop_left:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_pop_left:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the left-most item from a \meta{seq~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% sequence and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% sequence and stores it in the \meta{tl~var}. % Both of the variables are assigned locally. If \meta{seq~var} is -% empty the \meta{token list variable} is set to +% empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-14]{\seq_gpop_left:NN, \seq_gpop_left:cN} % \begin{syntax} -% \cs{seq_gpop_left:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_gpop_left:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the left-most item from a \meta{seq~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% sequence and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% sequence and stores it in the \meta{tl~var}. % The \meta{seq~var} is modified globally, while the assignment of -% the \meta{token list variable} is local. -% If \meta{seq~var} is empty the \meta{token list variable} is set to +% the \meta{tl~var} is local. +% If \meta{seq~var} is empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-19]{\seq_pop_right:NN, \seq_pop_right:cN} % \begin{syntax} -% \cs{seq_pop_right:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_pop_right:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the right-most item from a \meta{seq~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% sequence and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% sequence and stores it in the \meta{tl~var}. % Both of the variables are assigned locally. If \meta{seq~var} is -% empty the \meta{token list variable} is set to +% empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-19]{\seq_gpop_right:NN, \seq_gpop_right:cN} % \begin{syntax} -% \cs{seq_gpop_right:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_gpop_right:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the right-most item from a \meta{seq~var} into the -% \meta{token list variable}, \emph{i.e.}~removes the item from the -% sequence and stores it in the \meta{token list variable}. +% \meta{tl~var}, \emph{i.e.}~removes the item from the +% sequence and stores it in the \meta{tl~var}. % The \meta{seq~var} is modified globally, while the assignment of -% the \meta{token list variable} is local. -% If \meta{seq~var} is empty the \meta{token list variable} is set to +% the \meta{tl~var} is local. +% If \meta{seq~var} is empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % @@ -354,7 +354,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{seq~var}. If the % \meta{seq~var} is empty the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} @@ -372,92 +371,92 @@ % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19] % {\seq_get_left:NN, \seq_get_left:cN} % \begin{syntax} -% \cs{seq_get_left:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_get_left:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, stores the left-most item from the % \meta{seq~var} -% in the \meta{token list variable} without removing it from the +% in the \meta{tl~var} without removing it from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. -% The \meta{token list variable} is assigned locally. +% The \meta{tl~var} is assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-19] % {\seq_get_right:NN, \seq_get_right:cN} % \begin{syntax} -% \cs{seq_get_right:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_get_right:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, stores the right-most item from the % \meta{seq~var} -% in the \meta{token list variable} without removing it from the +% in the \meta{tl~var} without removing it from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. -% The \meta{token list variable} is assigned locally. +% The \meta{tl~var} is assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19] % {\seq_pop_left:NN, \seq_pop_left:cN} % \begin{syntax} -% \cs{seq_pop_left:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_pop_left:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the left-most item from the % \meta{seq~var} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from the +% in the \meta{tl~var}, \emph{i.e.}~removes the item from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. -% Both the \meta{seq~var} and the \meta{token list variable} are assigned +% Both the \meta{seq~var} and the \meta{tl~var} are assigned % locally. % \end{function} % % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19] % {\seq_gpop_left:NN, \seq_gpop_left:cN} % \begin{syntax} -% \cs{seq_gpop_left:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_gpop_left:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the left-most item from the \meta{seq~var} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from the +% in the \meta{tl~var}, \emph{i.e.}~removes the item from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. -% The \meta{seq~var} is modified globally, while the \meta{token list variable} +% The \meta{seq~var} is modified globally, while the \meta{tl~var} % is assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-19] % {\seq_pop_right:NN, \seq_pop_right:cN} % \begin{syntax} -% \cs{seq_pop_right:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_pop_right:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the right-most item from the \meta{seq~var} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from the +% in the \meta{tl~var}, \emph{i.e.}~removes the item from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. -% Both the \meta{seq~var} and the \meta{token list variable} are assigned +% Both the \meta{seq~var} and the \meta{tl~var} are assigned % locally. % \end{function} % % \begin{function}[TF, added = 2012-05-19] % {\seq_gpop_right:NN, \seq_gpop_right:cN} % \begin{syntax} -% \cs{seq_gpop_right:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_gpop_right:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the right-most item from the \meta{seq~var} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from the +% in the \meta{tl~var}, \emph{i.e.}~removes the item from the % \meta{seq~var}, then leaves the \meta{true code} in the input stream. % The \meta{seq~var} is modified globally, while the -% \meta{token list variable} is assigned locally. +% \meta{tl~var} is assigned locally. % \end{function} % % \section{Modifying sequences} @@ -748,7 +747,7 @@ % 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 applying \meta{inline function} to each +% The sequence resulting from applying \meta{inline function} to each % \meta{item} is assigned to \meta{seq~var_1}. % \begin{texnote} % Contrarily to other mapping functions, \cs{seq_map_break:} cannot @@ -853,72 +852,72 @@ % % \begin{function}[updated = 2012-05-14]{\seq_get:NN, \seq_get:cN} % \begin{syntax} -% \cs{seq_get:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_get:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Reads the top item from a \meta{seq~var} into the -% \meta{token list variable} without removing it from the -% \meta{seq~var}. The \meta{token list variable} is assigned locally. -% If \meta{seq~var} is empty the \meta{token list variable} is set to +% \meta{tl~var} without removing it from the +% \meta{seq~var}. The \meta{tl~var} is assigned locally. +% If \meta{seq~var} is empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-14]{\seq_pop:NN, \seq_pop:cN} % \begin{syntax} -% \cs{seq_pop:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_pop:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the top item from a \meta{seq~var} into the -% \meta{token list variable}. Both of the variables are assigned -% locally. If \meta{seq~var} is empty the \meta{token list variable} +% \meta{tl~var}. Both of the variables are assigned +% locally. If \meta{seq~var} is empty the \meta{tl~var} % is set to the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[updated = 2012-05-14]{\seq_gpop:NN, \seq_gpop:cN} % \begin{syntax} -% \cs{seq_gpop:NN} \meta{seq~var} \meta{token list variable} +% \cs{seq_gpop:NN} \meta{seq~var} \meta{tl~var} % \end{syntax} % Pops the top item from a \meta{seq~var} into the -% \meta{token list variable}. The \meta{seq~var} is modified globally, -% while the \meta{token list variable} is assigned locally. If -% \meta{seq~var} is empty the \meta{token list variable} is set to +% \meta{tl~var}. The \meta{seq~var} is modified globally, +% while the \meta{tl~var} is assigned locally. If +% \meta{seq~var} is empty the \meta{tl~var} is set to % the special marker \cs{q_no_value}. % \end{function} % % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19]{\seq_get:NN, \seq_get:cN} % \begin{syntax} -% \cs{seq_get:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_get:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, stores the top item from a -% \meta{seq~var} in the \meta{token list variable} without removing it from -% the \meta{seq~var}. The \meta{token list variable} is assigned locally. +% \meta{seq~var} in the \meta{tl~var} without removing it from +% the \meta{seq~var}. The \meta{tl~var} is assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19]{\seq_pop:NN, \seq_pop:cN} % \begin{syntax} -% \cs{seq_pop:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_pop:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the top item from the -% \meta{seq~var} in the \meta{token list variable}, \emph{i.e.}~removes the +% \meta{seq~var} in the \meta{tl~var}, \emph{i.e.}~removes the % item from the \meta{seq~var}. Both the \meta{seq~var} and the -% \meta{token list variable} are assigned locally. +% \meta{tl~var} are assigned locally. % \end{function} % % \begin{function}[TF, added = 2012-05-14, updated = 2012-05-19]{\seq_gpop:NN, \seq_gpop:cN} % \begin{syntax} -% \cs{seq_gpop:NNTF} \meta{seq~var} \meta{token list variable} \Arg{true code} \Arg{false code} +% \cs{seq_gpop:NNTF} \meta{seq~var} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} % If the \meta{seq~var} is empty, leaves the \meta{false code} in the -% input stream. The value of the \meta{token list variable} is +% input stream. The value of the \meta{tl~var} is % not defined in this case and should not be relied upon. If the % \meta{seq~var} is non-empty, pops the top item from the \meta{seq~var} -% in the \meta{token list variable}, \emph{i.e.}~removes the item from the +% in the \meta{tl~var}, \emph{i.e.}~removes the item from the % \meta{seq~var}. The \meta{seq~var} is modified globally, while the -% \meta{token list variable} is assigned locally. +% \meta{tl~var} is assigned locally. % \end{function} % % \begin{function} @@ -2410,6 +2409,7 @@ \exp_after:wN \@@_map_pairwise_function:wNw #2 \s_@@_stop #3 #1 { ? \prg_break: } { } \prg_break_point: + \prg_break_point:Nn \seq_map_break: { } } \cs_new:Npn \@@_map_pairwise_function:wNw \s_@@ #1 \s_@@_stop #2 { diff --git a/macros/latex/required/l3kernel/l3skip.dtx b/macros/latex/required/l3kernel/l3skip.dtx index 3eeb891e3d..2e15eb2866 100644 --- a/macros/latex/required/l3kernel/l3skip.dtx +++ b/macros/latex/required/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -124,7 +124,10 @@ % \end{function} % % \begin{function}[updated = 2011-10-22] -% {\dim_set:Nn, \dim_set:cn, \dim_gset:Nn, \dim_gset:cn} +% { +% \dim_set:Nn, \dim_set:cn, \dim_set:NV, \dim_set:cV, +% \dim_gset:Nn, \dim_gset:cn, \dim_gset:NV, \dim_gset:cV +% } % \begin{syntax} % \cs{dim_set:Nn} \meta{dimension} \Arg{dim expr} % \end{syntax} @@ -277,7 +280,8 @@ % \end{syntax} % This function evaluates the \meta{test dim expr} and % compares this in turn to each of the -% \meta{dim expr cases}. If the two are equal then the +% \meta{dim expr case}s until a match is found. +% If the two are equal then the % associated \meta{code} is left in the input stream % and other cases are discarded. If any of the % cases are matched, the \meta{true code} is also inserted into the @@ -297,6 +301,10 @@ % { No idea! } % \end{verbatim} % leaves \enquote{\texttt{Medium}} in the input stream. +% Since evaluation of the test expressions stops at the first +% successful case, the order of possible matches should normally +% be that the most likely are earlier: this will reduce the average +% steps required to complete expansion. % \end{function} % % \section{Dimension expression loops} @@ -752,7 +760,10 @@ % \end{function} % % \begin{function}[updated = 2011-10-22] -% {\skip_set:Nn, \skip_set:cn, \skip_gset:Nn, \skip_gset:cn} +% { +% \skip_set:Nn, \skip_set:cn, \skip_set:NV, \skip_set:cV, +% \skip_gset:Nn, \skip_gset:cn, \skip_gset:NV, \skip_gset:cV +% } % \begin{syntax} % \cs{skip_set:Nn} \meta{skip} \Arg{skip expr} % \end{syntax} @@ -988,7 +999,10 @@ % \end{function} % % \begin{function}[updated = 2011-10-22] -% {\muskip_set:Nn, \muskip_set:cn, \muskip_gset:Nn, \muskip_gset:cn} +% { +% \muskip_set:Nn, \muskip_set:cn, \muskip_set:Nn, \muskip_set:cn, +% \muskip_gset:Nn, \muskip_gset:cn, \muskip_gset:NV, \muskip_gset:cV +% } % \begin{syntax} % \cs{muskip_set:Nn} \meta{muskip} \Arg{muskip expr} % \end{syntax} @@ -1245,8 +1259,8 @@ % % \subsection{Setting \texttt{dim} variables} % -% \begin{macro}{\dim_set:Nn, \dim_set:cn} -% \begin{macro}{\dim_gset:Nn, \dim_gset:cn} +% \begin{macro}{\dim_set:Nn, \dim_set:cn, \dim_set:NV, \dim_set:cV} +% \begin{macro}{\dim_gset:Nn, \dim_gset:cn, \dim_gset:NV, \dim_gset:cV} % Setting dimensions is easy enough but when debugging we want both to % check that the variable is correctly local/global and to wrap the % expression in some code. The \cs{scan_stop:} deals with the case @@ -1257,8 +1271,8 @@ { #1 = \@@_eval:w #2 \@@_eval_end: \scan_stop: } \cs_new_protected:Npn \dim_gset:Nn #1#2 { \tex_global:D #1 = \@@_eval:w #2 \@@_eval_end: \scan_stop: } -\cs_generate_variant:Nn \dim_set:Nn { c } -\cs_generate_variant:Nn \dim_gset:Nn { c } +\cs_generate_variant:Nn \dim_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \dim_gset:Nn { NV , c , cV } % \end{macrocode} % \end{macro} % \end{macro} @@ -2208,16 +2222,16 @@ % % \subsection{Setting \texttt{skip} variables} % -% \begin{macro}{\skip_set:Nn, \skip_set:cn} -% \begin{macro}{\skip_gset:Nn, \skip_gset:cn} +% \begin{macro}{\skip_set:Nn, \skip_set:cn, \skip_set:NV, \skip_set:cV} +% \begin{macro}{\skip_gset:Nn, \skip_gset:cn, \skip_gset:NV, \skip_gset:cV} % Much the same as for dimensions. % \begin{macrocode} \cs_new_protected:Npn \skip_set:Nn #1#2 { #1 = \tex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gset:Nn #1#2 { \tex_global:D #1 = \tex_glueexpr:D #2 \scan_stop: } -\cs_generate_variant:Nn \skip_set:Nn { c } -\cs_generate_variant:Nn \skip_gset:Nn { c } +\cs_generate_variant:Nn \skip_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \skip_gset:Nn { NV , c , cV } % \end{macrocode} % \end{macro} % \end{macro} @@ -2459,16 +2473,16 @@ % % \subsection{Setting \texttt{muskip} variables} % -% \begin{macro}{\muskip_set:Nn, \muskip_set:cn} -% \begin{macro}{\muskip_gset:Nn, \muskip_gset:cn} +% \begin{macro}{\muskip_set:Nn, \muskip_set:cn, \muskip_set:NV, \muskip_set:cV} +% \begin{macro}{\muskip_gset:Nn, \muskip_gset:cn, \muskip_gset:NV, \muskip_gset:cV} % This should be pretty familiar. % \begin{macrocode} \cs_new_protected:Npn \muskip_set:Nn #1#2 { #1 = \tex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gset:Nn #1#2 { \tex_global:D #1 = \tex_muexpr:D #2 \scan_stop: } -\cs_generate_variant:Nn \muskip_set:Nn { c } -\cs_generate_variant:Nn \muskip_gset:Nn { c } +\cs_generate_variant:Nn \muskip_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \muskip_gset:Nn { NV , c , cV } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex/required/l3kernel/l3sort.dtx b/macros/latex/required/l3kernel/l3sort.dtx index 9ba8713244..c599739d56 100644 --- a/macros/latex/required/l3kernel/l3sort.dtx +++ b/macros/latex/required/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3str-convert.dtx b/macros/latex/required/l3kernel/l3str-convert.dtx index 0b280fb109..1976b092b1 100644 --- a/macros/latex/required/l3kernel/l3str-convert.dtx +++ b/macros/latex/required/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -139,10 +139,10 @@ % % \begin{function}{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} % \begin{syntax} -% \cs{str_set_convert:Nnnn} \meta{str~var} \Arg{string} \Arg{name~1} \Arg{name~2} +% \cs{str_set_convert:Nnnn} \meta{str~var} \Arg{string} \Arg{name_1} \Arg{name_2} % \end{syntax} % This function converts the \meta{string} from the encoding given by -% \meta{name~1} to the encoding given by \meta{name~2}, and stores the +% \meta{name_1} to the encoding given by \meta{name_2}, and stores the % result in the \meta{str~var}. Each \meta{name} can have the form % \meta{encoding} or \meta{encoding}\texttt{/}\meta{escaping}, where % the possible values of \meta{encoding} and \meta{escaping} are given @@ -177,14 +177,14 @@ % % \begin{function}[TF]{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} % \begin{syntax} -% \cs{str_set_convert:NnnnTF} \meta{str~var} \Arg{string} \Arg{name~1} \Arg{name~2} \Arg{true code} \Arg{false code} +% \cs{str_set_convert:NnnnTF} \meta{str~var} \Arg{string} \Arg{name_1} \Arg{name_2} \Arg{true code} \Arg{false code} % \end{syntax} % As \cs{str_set_convert:Nnnn}, converts the \meta{string} from the -% encoding given by \meta{name~1} to the encoding given by -% \meta{name~2}, and assigns the result to \meta{str~var}. Contrarily +% encoding given by \meta{name_1} to the encoding given by +% \meta{name_2}, and assigns the result to \meta{str~var}. Contrarily % to \cs{str_set_convert:Nnnn}, the conditional variant does not raise % errors in case the \meta{string} is not valid according to the -% \meta{name~1} encoding, or cannot be expressed in the \meta{name~2} +% \meta{name_1} encoding, or cannot be expressed in the \meta{name_2} % encoding. Instead, the \meta{false code} is performed. % \end{function} % @@ -195,7 +195,7 @@ % % \begin{function}[EXP]{\str_convert_pdfname:n} % \begin{syntax} -% \cs{str_convert_pdfname:n} \meta{string} +% \cs{str_convert_pdfname:n} \Arg{string} % \end{syntax} % As \cs{str_set_convert:Nnnn}, converts the \meta{string} on a byte-by-byte % basis with non-ASCII codepoints escaped using hashes. diff --git a/macros/latex/required/l3kernel/l3str.dtx b/macros/latex/required/l3kernel/l3str.dtx index d4e08b2dd2..94a74b17d1 100644 --- a/macros/latex/required/l3kernel/l3str.dtx +++ b/macros/latex/required/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -303,7 +303,8 @@ % ~~\Arg{false code} % \end{syntax} % Compares the \meta{test string} in turn with each -% of the \meta{string case}s (all token lists are converted to strings). +% of the \meta{string case}s until a match is found +% (all token lists are converted to strings). % If the two are equal (as described for % \cs{str_if_eq:nnTF}) then the associated \meta{code} is left in the % input stream and other cases are discarded. If any of the @@ -557,7 +558,7 @@ % \end{function} % % \begin{function}[EXP, added = 2015-09-18] -% {\str_item:Nn, \str_item:nn, \str_item_ignore_spaces:nn} +% {\str_item:Nn, \str_item:cn, \str_item:nn, \str_item_ignore_spaces:nn} % \begin{syntax} % \cs{str_item:nn} \Arg{token list} \Arg{integer expression} % \end{syntax} @@ -757,7 +758,7 @@ % \item Case changing text for typesetting: see the % \cs[index=text_lowercase:n]{text_lowercase:n(n)}, % \cs[index=text_uppercase:n]{text_uppercase:n(n)} and -% \cs[index=text_titlecase_all:n]{text_titlecase_(all|once):n(n)} functions which +% \cs[index=text_titlecase_all:n]{text_titlecase_(all|first):n(n)} functions which % correctly deal with context-dependence and other factors appropriate % to text case changing. % \end{itemize} @@ -789,7 +790,7 @@ % \end{quote} % The folding approach implemented by \cs{str_casefold:n} follows the % \enquote{full} scheme defined by the Unicode Consortium -% (\emph{e.g.}~\SS folds to \texttt{SS}). As case-folding is +% (\emph{e.g.}~\SS{} folds to \texttt{SS}). As case-folding is % a language-insensitive process, there is no special treatment of % Turkic input (\emph{i.e.}~\texttt{I} always folds to \texttt{i} and % not to \texttt{\i}). @@ -797,9 +798,9 @@ % % \begin{function}[added = 2023-05-19, EXP]{\str_mdfive_hash:n, \str_mdfive_hash:e} % \begin{syntax} -% \cs{str_mdfive_hash:n} \Arg{tl} +% \cs{str_mdfive_hash:n} \Arg{tokens} % \end{syntax} -% Expands to the MD5 sum generated from the \meta{tl}, which is converted +% Expands to the MD5 sum generated from the \meta{tokens}, which is converted % to a \meta{string} as described for \cs{tl_to_str:n}. % \end{function} % diff --git a/macros/latex/required/l3kernel/l3styleguide.pdf b/macros/latex/required/l3kernel/l3styleguide.pdf Binary files differindex 33333f832f..3bc937254f 100644 --- a/macros/latex/required/l3kernel/l3styleguide.pdf +++ b/macros/latex/required/l3kernel/l3styleguide.pdf diff --git a/macros/latex/required/l3kernel/l3styleguide.tex b/macros/latex/required/l3kernel/l3styleguide.tex index 2cffd774e3..32395f1377 100644 --- a/macros/latex/required/l3kernel/l3styleguide.tex +++ b/macros/latex/required/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-11-02} \begin{document} diff --git a/macros/latex/required/l3kernel/l3syntax-changes.pdf b/macros/latex/required/l3kernel/l3syntax-changes.pdf Binary files differindex 64bf0da4e8..5d7b4faff4 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/required/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/required/l3kernel/l3syntax-changes.tex b/macros/latex/required/l3kernel/l3syntax-changes.tex index 0b21c09da0..d86cba73d8 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.tex +++ b/macros/latex/required/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-11-02} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3sys.dtx b/macros/latex/required/l3kernel/l3sys.dtx index 0417a963bc..4a600987da 100644 --- a/macros/latex/required/l3kernel/l3sys.dtx +++ b/macros/latex/required/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -336,9 +336,9 @@ % \begin{function}[added = 2024-03-08, updated = 2024-04-08] % {\sys_get_query:nN, \sys_get_query:nnN, \sys_get_query:nnnN} % \begin{syntax} -% \cs{sys_get_query:nN} \Arg{cmd} \Arg{tl var} -% \cs{sys_get_query:nnN} \Arg{cmd} \Arg{spec} \Arg{tl var} -% \cs{sys_get_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \Arg{tl var} +% \cs{sys_get_query:nN} \Arg{cmd} \meta{tl var} +% \cs{sys_get_query:nnN} \Arg{cmd} \Arg{spec} \meta{tl var} +% \cs{sys_get_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \meta{tl var} % \end{syntax} % Sets the \meta{tl var} to the information returned by the % \texttt{l3sys-query} \meta{cmd}, potentially supplying the \meta{options} @@ -374,11 +374,11 @@ % \begin{function}[added = 2024-03-08] % {\sys_split_query:nN, \sys_split_query:nnN, \sys_split_query:nnnN} % \begin{syntax} -% \cs{sys_split_query:nN} \Arg{cmd} \Arg{seq} -% \cs{sys_split_query:nnN} \Arg{cmd} \Arg{spec} \Arg{seq} -% \cs{sys_split_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \Arg{seq} +% \cs{sys_split_query:nN} \Arg{cmd} \meta{seq var} +% \cs{sys_split_query:nnN} \Arg{cmd} \Arg{spec} \meta{seq var} +% \cs{sys_split_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \meta{seq var} % \end{syntax} -% Works as described for \cs{sys_split_query:nnnN}, but sets the \meta{seq} +% Works as described for \cs{sys_split_query:nnnN}, but sets the \meta{seq var} % to contain one entry for each line returned by \texttt{l3sys-query}. % This function should therefore be preferred where multi-line return is % expected, e.g.~for the \texttt{ls} command. @@ -1030,7 +1030,7 @@ end % \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. +% \texttt{pdf} library but isn't actually tied to PDF. % \begin{macrocode} \@@_everyjob:n { diff --git a/macros/latex/required/l3kernel/l3term-glossary.pdf b/macros/latex/required/l3kernel/l3term-glossary.pdf Binary files differindex b54a47f899..921a8a0614 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.pdf +++ b/macros/latex/required/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/required/l3kernel/l3term-glossary.tex b/macros/latex/required/l3kernel/l3term-glossary.tex index 86ad15568a..cb01e6f812 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.tex +++ b/macros/latex/required/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-11-02} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3text-case.dtx b/macros/latex/required/l3kernel/l3text-case.dtx index 888e6e97b9..a9847bf900 100644 --- a/macros/latex/required/l3kernel/l3text-case.dtx +++ b/macros/latex/required/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text-map.dtx b/macros/latex/required/l3kernel/l3text-map.dtx index ab4a6db91e..52e304ec15 100644 --- a/macros/latex/required/l3kernel/l3text-map.dtx +++ b/macros/latex/required/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text-purify.dtx b/macros/latex/required/l3kernel/l3text-purify.dtx index ec85eb8be4..8163fead6a 100644 --- a/macros/latex/required/l3kernel/l3text-purify.dtx +++ b/macros/latex/required/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text.dtx b/macros/latex/required/l3kernel/l3text.dtx index a59e047bd7..559bc158ae 100644 --- a/macros/latex/required/l3kernel/l3text.dtx +++ b/macros/latex/required/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -65,11 +65,11 @@ % \end{syntax} % Takes user input \meta{text} and expands the content. % Protected commands (typically -% formatting) are left in place, and no processing takes place of +% formatting) are left in place, and no processing of % math mode material (as delimited by pairs given in % \cs{l_text_math_delims_tl} or as the argument to commands listed -% in \cs{l_text_math_arg_tl}). Commands which are neither engine- -% nor \LaTeX{} protected are expanded exhaustively. +% in \cs{l_text_math_arg_tl}) takes place. Commands which are neither engine- +% nor \LaTeX{}-protected are expanded exhaustively. % Any commands listed in \cs{l_text_expand_exclude_tl} are excluded from % expansion, as are those in \cs{l_text_case_exclude_arg_tl} and % \cs{l_text_math_arg_tl}. @@ -114,8 +114,8 @@ % \end{function} % % Upper- and lowercase have the obvious meanings. Titlecasing may be regarded -% informally as converting the first character of the \meta{tokens} to -% uppercase. However, the process is more complex +% informally as converting the first \emph{non-space} character of the +% \meta{tokens} to uppercase. However, the process is more complex % than this as there are some situations where a single lowercase character % maps to a special form, for example \texttt{ij} in Dutch which becomes % \texttt{IJ}. There are two functions available for titlecasing: one which @@ -214,8 +214,9 @@ % \text_declare_uppercase_mapping:nnn % } % \begin{syntax} -% \cs{text_declare_lowercase_mapping:nn} \Arg{codeppoint} \Arg{replacement} -% \cs{text_declare_lowercase_mapping:nnn} \Arg{BCP-47} \Arg{codeppoint} \Arg{replacement} +% \cs{text_declare_lowercase_mapping:nn} \Arg{codepoint} \Arg{replacement} +% \cs{text_declare_lowercase_mapping:nnn} \Arg{BCP-47} \Arg{codepoint} \\ +% ~~\Arg{replacement} % \end{syntax} % Declares that the \meta{replacement} tokens should be used when case mapping % the \meta{codepoint}, rather than the standard mapping given in the @@ -305,7 +306,7 @@ % % \begin{function}[rEXP, added = 2022-08-04]{\text_map_function:nN} % \begin{syntax} -% \cs{text_map_function:nN} \meta{text} \Arg{function} +% \cs{text_map_function:nN} \Arg{text} \meta{function} % \end{syntax} % Takes user input \meta{text} and expands as described for % \cs{text_expand:n}, then maps over the \emph{graphemes} within the @@ -323,7 +324,7 @@ % % \begin{function}[added = 2022-08-04]{\text_map_inline:nn} % \begin{syntax} -% \cs{text_map_inline:nn} \meta{text} \Arg{inline function} +% \cs{text_map_inline:nn} \Arg{text} \Arg{inline function} % \end{syntax} % Takes user input \meta{text} and expands as described for % \cs{text_expand:n}, then maps over the \emph{graphemes} within the diff --git a/macros/latex/required/l3kernel/l3tl-analysis.dtx b/macros/latex/required/l3kernel/l3tl-analysis.dtx index 80a7d74cef..d3342eb876 100644 --- a/macros/latex/required/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/required/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -1303,14 +1303,20 @@ % Expandable tokens (which are automatically |N|-type) can be % \tn{outer} macros, hence the need for \cs{exp_after:wN} and % \cs{exp_not:N} in the code above, which allows the next function to -% safely grab the token as an argument. We run some code that is -% expanded using the primitive \cs{cs_set_nopar:Npe} rather than -% \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be -% \tn{outer}. To allow~|#1| as an argument of the user's function -% (stored in \cs{l_@@_peek_code_tl}), we set it equal to -% \cs{scan_stop:}, but we do it at the last minute because |#1| -% may be some pretty important function such as \cs{exp_after:wN}. -% Then we put the user's function and the elaborate first argument +% safely grab the token as an argument. To allow the +% possibly-\tn{outer} token~|#1| as an argument of the \meta{user's +% function} (which is protected and stored in \cs{l_@@_peek_code_tl}), +% we set it equal to a harmless macro. This must be done at the very +% last minute because |#1| may be some pretty important function such +% as \cs{exp_after:wN}. Using a primitive \cs{cs_set_nopar:Npe} +% expansion (to avoid \tn{outer} problems) we set up to run the code +% \tn{let} |#1| \meta{user's function} \meta{user's function} followed +% by arguments involving~|#1|. Regardless of~|#1| (including the +% user's function itself), the user's function is run. It always +% starts with \cs{group_end:}, which has not been redefined since |#1| +% started out as expandable, and which restores the definition of~|#1|. +% +% Then we put the elaborate first argument % \cs{__kernel_exp_not:w} \cs{exp_after:wN} |{| \cs{exp_not:N} |#1| |}|: % indeed we cannot use \cs{exp_not:n} |{#1}| as this breaks for an % \tn{outer} macro and we cannot use \cs{exp_not:N} |#1|, as @@ -1323,29 +1329,31 @@ % the two cases is easy: since we have made the escape character % printable, \cs{token_to_str:N} gives at least two characters for a % control sequence versus a single one for an active character -% (possibly being a space). Importantly, once we apply -% \cs{token_to_str:N} we no longer need to worry about \tn{outer} -% tokens. +% (possibly being a space, in which case the trailing brace group is +% taken as the first argument of \cs{@@_peek_analysis_exp_aux:Nw}). +% Importantly, |#1| could be an \tn{outer} token (as it is only set to +% \cs{scan_stop:} at the last minute) but once we apply +% \cs{token_to_str:N} we no longer need to worry about it. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_exp:N #1 { \cs_set_nopar:Npe \l_@@_peek_code_tl { - \tex_let:D \exp_not:N #1 \scan_stop: - \exp_not:o \l_@@_peek_code_tl + \tex_let:D \exp_not:N #1 \l_@@_peek_code_tl + \l_@@_peek_code_tl { \exp_not:n { \__kernel_exp_not:w \exp_after:wN } { \exp_not:N \exp_not:N \exp_not:N #1 } } \exp_after:wN \@@_peek_analysis_exp_aux:Nw - \token_to_str:N #1 \prg_do_nothing: \s_@@ + \token_to_str:N #1 { } \s_@@ } \l_@@_peek_code_tl } \cs_new:Npe \@@_peek_analysis_exp_aux:Nw #1#2 \s_@@ { - \exp_not:N \if:w \scan_stop: #2 \scan_stop: - { \exp_not:N \int_value:w `#1 } \token_to_str:N D + \exp_not:N \if_meaning:w \scan_stop: #2 \scan_stop: + { \exp_not:N \int_value:w `#1 ~ } \token_to_str:N D \exp_not:N \else: { -1 } 0 \exp_not:N \fi: diff --git a/macros/latex/required/l3kernel/l3tl-build.dtx b/macros/latex/required/l3kernel/l3tl-build.dtx index 708ea81680..e3c615f5b2 100644 --- a/macros/latex/required/l3kernel/l3tl-build.dtx +++ b/macros/latex/required/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3tl.dtx b/macros/latex/required/l3kernel/l3tl.dtx index 940b3cb8d0..3d08f2354b 100644 --- a/macros/latex/required/l3kernel/l3tl.dtx +++ b/macros/latex/required/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -55,7 +55,7 @@ % \begin{verbatim} % \foo:n { a collection of \tokens } % \end{verbatim} -% or may be stored in a so-called \enquote{token list variable}, which +% or may be stored in a so-called \enquote{tl~var} (\meta{tl~var}), which % have the suffix \texttt{tl}: a token list variable can also be used as % the argument to a function, for example % \begin{verbatim} @@ -994,7 +994,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{token list}. If the % \meta{token list} is blank, the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} @@ -1111,7 +1110,7 @@ % % Within token lists, replacement takes place at the top level: there is % no recursion into brace groups (more precisely, within a group defined by -% a categroy code $1$/$2$ pair). +% a category code $1$/$2$ pair). % % \begin{function}[updated = 2011-08-11] % { diff --git a/macros/latex/required/l3kernel/l3token.dtx b/macros/latex/required/l3kernel/l3token.dtx index 5c31ab04e7..8dc792cab5 100644 --- a/macros/latex/required/l3kernel/l3token.dtx +++ b/macros/latex/required/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -660,7 +660,10 @@ % \cs{token_if_long_macro_p:N} \meta{token} \\ % \cs{token_if_long_macro:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token} is a long macro. +% Tests if the \meta{token} is a long macro with no other prefix; to +% test for a macro that is both long and protected, use +% \cs[index = token_if_protected_long_macro:NTF]^^A +% {token_if_protected_long_macro:N(TF)}. % \end{function} % % \begin{function}[EXP,pTF, updated=2012-01-20]{\token_if_protected_macro:N} @@ -668,8 +671,10 @@ % \cs{token_if_protected_macro_p:N} \meta{token} \\ % \cs{token_if_protected_macro:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token} is a protected macro: for a macro which -% is both protected and long this returns \texttt{false}. +% Tests if the \meta{token} is a protected macro with no other prefix; to +% test for a macro that is both protected and long, use +% \cs[index = token_if_protected_long_macro:NTF]^^A +% {token_if_protected_long_macro:N(TF)}. % \end{function} % % \begin{function}[EXP,pTF, updated=2012-01-20]{\token_if_protected_long_macro:N} @@ -776,7 +781,7 @@ % ~~\Arg{false code} % \end{syntax} % This function compares the \meta{test token} in turn with each of -% the \meta{token cases}. If the two are equal (as described for +% the \meta{token case}s. If the two are equal (as described for % \cs{token_if_eq_catcode:NNTF}, \cs{token_if_eq_charcode:NNTF} and % \cs{token_if_eq_meaning:NNTF}, respectively) then the associated % \meta{code} is left in the input stream and other cases are diff --git a/macros/latex/required/l3kernel/l3unicode.dtx b/macros/latex/required/l3kernel/l3unicode.dtx index 3b3bd007a4..5708992806 100644 --- a/macros/latex/required/l3kernel/l3unicode.dtx +++ b/macros/latex/required/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-11-02} % % \maketitle % @@ -719,15 +719,22 @@ \tl_set:ce { l_@@_ #1 _block_tl } { \int_eval:n { \tl_use:c { l_@@_ #1 _block_tl } + 1 } } } - \prg_replicate:nn {#2} +% \end{macrocode} +% Here, we avoid \cs{prg_replicate:nn} as the number of tokens generated would be +% high: that shows in the format dump (although \TeX{} recovers memory during +% the subsequent runs). +% \begin{macrocode} + \int_step_inline:nnn + { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } + { \tl_use:c { l_@@_ #1 _pos_tl } + #2 } { - \tl_set:ce { l_@@_ #1 _pos_tl } - { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } } \exp_args:Nc \__kernel_intarray_gset:Nnn { g_@@_ #1 _index_intarray } - { \tl_use:c { l_@@_ #1 _pos_tl } } + {##1} \l_@@_matched_block_tl } + \tl_set:ce { l_@@_ #1 _pos_tl } + { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + #2 } } \clist_clear:c { l_@@_ #1 _block_clist } } % \end{macrocode} diff --git a/macros/latex/required/l3kernel/source3.pdf b/macros/latex/required/l3kernel/source3.pdf Binary files differindex 77c8b81892..463d639fb0 100644 --- a/macros/latex/required/l3kernel/source3.pdf +++ b/macros/latex/required/l3kernel/source3.pdf diff --git a/macros/latex/required/l3kernel/source3.tex b/macros/latex/required/l3kernel/source3.tex index 623b9cc1a0..08d3319b5e 100644 --- a/macros/latex/required/l3kernel/source3.tex +++ b/macros/latex/required/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-11-02} \pagenumbering{roman} \maketitle diff --git a/macros/latex/required/l3kernel/source3body.tex b/macros/latex/required/l3kernel/source3body.tex index 8471296227..44b67816d6 100644 --- a/macros/latex/required/l3kernel/source3body.tex +++ b/macros/latex/required/l3kernel/source3body.tex @@ -285,7 +285,7 @@ pass it to |\foo:N|. Variables are named in a similar manner to functions, but begin with a single letter to define the type of variable: -\begin{description} +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{c}] Constant: global parameters whose value should not be changed. \item[\texttt{g}] Parameters whose value should only be set globally. @@ -302,7 +302,7 @@ function, typically starting with the module\footnote{The module names are \texttt{\string\l_int_tmpa_int} would be very unreadable.} name and then a descriptive part. Variables end with a short identifier to show the variable type: -\begin{description}% +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{bitset}] a set of bits (a string made up of a series of \texttt{0} and \texttt{1} tokens that are accessed by position). \item[\texttt{clist}] Comma separated list. @@ -318,7 +318,7 @@ Variables end with a short identifier to show the variable type: Applying \texttt{V}-type or \texttt{v}-type expansion to variables of one of the above types is supported, while it is not supported for the following variable types: -\begin{description} +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{bool}] Either true or false. \item[\texttt{box}] Box register. \item[\texttt{coffin}] A \enquote{box with handles} --- a higher-level @@ -344,6 +344,19 @@ are never used by the core code. The nature of \TeX{} grouping means that as with any other scratch variable, these should only be set and used with no intervening third-party code. +There are two more special types of constants: +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] + \item[\texttt{q}] Quark constants. + \item[\texttt{s}] Scan mark constants. +\end{description} +Similarly, each quark or scan mark name starts with the module name, +but doesn't end with a variable type, because the type is already +marked by the prefix \texttt{q} or \texttt{s}. +Some general quarks and scan marks provided by \LaTeX3 don't start +with a module name, for example \cs{s_stop}. +See documentation of quarks and scan marks in Chapter~\ref{sec:l3quarks} +for more info. + \subsection{Terminological inexactitude} A word of warning. In this document, and others referring to the \pkg{expl3} |