[latex3-commits] [git/LaTeX3-latex3-latex2e] main: Update l3kernel and l3packages to 2021-11-12 (3f427b10)
Joseph Wright
joseph.wright at morningstar2.co.uk
Fri Nov 12 13:56:14 CET 2021
Repository : https://github.com/latex3/latex2e
On branch : main
Link : https://github.com/latex3/latex2e/commit/3f427b10e24c64f9fc11bf21d11a4e8078c97d36
>---------------------------------------------------------------
commit 3f427b10e24c64f9fc11bf21d11a4e8078c97d36
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Fri Nov 12 12:56:14 2021 +0000
Update l3kernel and l3packages to 2021-11-12
>---------------------------------------------------------------
3f427b10e24c64f9fc11bf21d11a4e8078c97d36
texmf/tex/latex/l3kernel/expl3-code.tex | 196 ++++++++++++---------------
texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +-
texmf/tex/latex/l3kernel/expl3.ltx | 2 +-
texmf/tex/latex/l3kernel/expl3.sty | 2 +-
texmf/tex/latex/l3packages/xparse/xparse.sty | 6 +-
5 files changed, 96 insertions(+), 112 deletions(-)
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index 65bd533c..acd75465 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -70,7 +70,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-10-18}%
+\def\ExplFileDate{2021-11-12}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -4962,23 +4962,20 @@
}
\prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF }
{
- \if_int_compare:w
- \__str_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
- = \c_zero_int
+ \if:w 0 \__str_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_generate_conditional_variant:Nnn \str_if_eq:nn
{ V , v , o , nV , no , VV , nv } { p , T , F , TF }
\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF }
{
- \if_int_compare:w \__str_if_eq:nn {#1} {#2} = \c_zero_int
+ \if:w 0 \__str_if_eq:nn {#1} {#2}
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F }
{
- \if_int_compare:w
- \__str_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
- = \c_zero_int \prg_return_true: \else: \prg_return_false: \fi:
+ \if:w 0 \__str_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
+ \prg_return_true: \else: \prg_return_false: \fi:
}
\prg_generate_conditional_variant:Nnn \str_if_eq:NN
{ c , Nc , cc } { T , F , TF , p }
@@ -7117,12 +7114,13 @@
\fi:
}
\prg_generate_conditional_variant:Nnn \bool_if:N { c } { p , T , F , TF }
+\cs_new:Npn \bool_to_str:N #1 { \bool_if:NTF #1 { true } { false } }
+\cs_generate_variant:Nn \bool_to_str:N { c }
+\cs_new:Npn \bool_to_str:n #1 { \bool_if:nTF {#1} { true } { false } }
\cs_new_protected:Npn \bool_show:n
- { \msg_show_eval:Nn \__bool_to_str:n }
+ { \msg_show_eval:Nn \bool_to_str:n }
\cs_new_protected:Npn \bool_log:n
- { \msg_log_eval:Nn \__bool_to_str:n }
-\cs_new:Npn \__bool_to_str:n #1
- { \bool_if:nTF {#1} { true } { false } }
+ { \msg_log_eval:Nn \bool_to_str:n }
\cs_new_protected:Npn \bool_show:N { \__bool_show:NN \tl_show:n }
\cs_generate_variant:Nn \bool_show:N { c }
\cs_new_protected:Npn \bool_log:N { \__bool_show:NN \tl_log:n }
@@ -9493,83 +9491,51 @@
\cs_new_protected:Npn \__prop_concat:NNNN #1#2#3#4
{
\prop_set_eq:NN \l__prop_internal_prop #3
- \prop_map_tokens:Nn #4 { \prop_put:Nnn \l__prop_internal_prop }
+ \prop_map_inline:Nn #4 { \prop_put:Nnn \l__prop_internal_prop {##1} {##2} }
#1 #2 \l__prop_internal_prop
}
-\cs_new_protected:Npn \prop_set_from_keyval:Nn #1#2
+\cs_new_protected:Npn \prop_set_from_keyval:Nn #1
{
- \prop_clear:N \l__prop_internal_prop
- \__prop_from_keyval:n {#2}
- \prop_set_eq:NN #1 \l__prop_internal_prop
- \prop_clear:N \l__prop_internal_prop
+ \prop_clear:N #1
+ \prop_put_from_keyval:Nn #1
}
\cs_generate_variant:Nn \prop_set_from_keyval:Nn { c }
-\cs_new_protected:Npn \prop_gset_from_keyval:Nn #1#2
+\cs_new_protected:Npn \prop_gset_from_keyval:Nn #1
{
- \prop_clear:N \l__prop_internal_prop
- \__prop_from_keyval:n {#2}
- \prop_gset_eq:NN #1 \l__prop_internal_prop
- \prop_clear:N \l__prop_internal_prop
+ \prop_gclear:N #1
+ \prop_gput_from_keyval:Nn #1
}
\cs_generate_variant:Nn \prop_gset_from_keyval:Nn { c }
\cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2
{
- \prop_clear:N \l__prop_internal_prop
- \__prop_from_keyval:n {#2}
+ \prop_set_from_keyval:Nn \l__prop_internal_prop {#2}
\tl_const:Nx #1 { \exp_not:o \l__prop_internal_prop }
\prop_clear:N \l__prop_internal_prop
}
\cs_generate_variant:Nn \prop_const_from_keyval:Nn { c }
-\cs_new_protected:Npn \prop_put_from_keyval:Nn #1#2
+\cs_new_protected:Npn \prop_put_from_keyval:Nn
{
- \prop_set_eq:NN \l__prop_internal_prop #1
- \__prop_from_keyval:n {#2}
- \prop_set_eq:NN #1 \l__prop_internal_prop
- \prop_clear:N \l__prop_internal_prop
+ \bool_if:NTF \l__kernel_keyval_allow_blank_keys_bool
+ { \__prop_keyval_parse:NNNn \c_true_bool }
+ { \__prop_keyval_parse:NNNn \c_false_bool }
+ \prop_put:Nnn
}
\cs_generate_variant:Nn \prop_put_from_keyval:Nn { c }
-\cs_new_protected:Npn \prop_gput_from_keyval:Nn #1#2
+\cs_new_protected:Npn \prop_gput_from_keyval:Nn
{
- \prop_set_eq:NN \l__prop_internal_prop #1
- \__prop_from_keyval:n {#2}
- \prop_gset_eq:NN #1 \l__prop_internal_prop
- \prop_clear:N \l__prop_internal_prop
+ \bool_if:NTF \l__kernel_keyval_allow_blank_keys_bool
+ { \__prop_keyval_parse:NNNn \c_true_bool }
+ { \__prop_keyval_parse:NNNn \c_false_bool }
+ \prop_gput:Nnn
}
\cs_generate_variant:Nn \prop_gput_from_keyval:Nn { c }
-\cs_new_protected:Npn \__prop_from_keyval:n #1
- {
- \__prop_from_keyval_loop:w \prg_do_nothing: #1 ,
- \q__prop_recursion_tail , \q__prop_recursion_stop
- }
-\cs_new_protected:Npn \__prop_from_keyval_loop:w #1 ,
- {
- \__prop_if_recursion_tail_stop:o {#1}
- \__prop_from_keyval_split:Nw \__prop_from_keyval_key:n
- #1 = = \s__prop_stop {#1}
- \__prop_from_keyval_loop:w \prg_do_nothing:
- }
-\cs_new_protected:Npn \__prop_from_keyval_split:Nw #1#2 =
- { \tl_trim_spaces_apply:oN {#2} #1 }
-\cs_new_protected:Npn \__prop_from_keyval_key:n #1
- { \__prop_from_keyval_key:w #1 \s__prop_mark }
-\cs_new_protected:Npn \__prop_from_keyval_key:w #1 \s__prop_mark #2 \s__prop_stop
+\cs_new_protected:Npn \__prop_missing_eq:n
+ { \msg_error:nnn { prop } { prop-keyval } }
+\cs_new_protected:Npn \__prop_keyval_parse:NNNn #1#2#3#4
{
- \__prop_from_keyval_split:Nw \__prop_from_keyval_value:n
- \prg_do_nothing: #2 \s__prop_stop {#1}
- }
-\cs_new_protected:Npn \__prop_from_keyval_value:n #1
- { \__prop_from_keyval_value:w #1 \s__prop_mark }
-\cs_new_protected:Npn \__prop_from_keyval_value:w #1 \s__prop_mark #2 \s__prop_stop #3#4
- {
- \tl_if_single:nTF {#2}
- { \prop_put:Nnn \l__prop_internal_prop {#3} {#1} }
- {
- \tl_if_empty:nF { #3 #1 #2 }
- {
- \msg_error:nnx { prop } { prop-keyval }
- { \exp_not:o {#4} }
- }
- }
+ \bool_set_eq:NN \l__kernel_keyval_allow_blank_keys_bool \c_true_bool
+ \keyval_parse:nnn \__prop_missing_eq:n { #2 #3 } {#4}
+ \bool_set_eq:NN \l__kernel_keyval_allow_blank_keys_bool #1
}
\cs_new_protected:Npn \__prop_split:NnTF #1#2
{ \exp_args:NNo \__prop_split_aux:NnTF #1 { \tl_to_str:n {#2} } }
@@ -10640,7 +10606,7 @@
\msg_new:nnn { prg } { negative-replication }
{ Negative~argument~for~\iow_char:N\\prg_replicate:nn. }
\msg_new:nnn { prop } { prop-keyval }
- { Missing/extra~'='~in~'#1'~(in~'..._keyval:Nn') }
+ { Missing~'='~in~'#1'~(in~'..._keyval:Nn') }
\msg_new:nnn { kernel } { unknown-comparison }
{ Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
\msg_new:nnn { kernel } { zero-step }
@@ -12776,6 +12742,7 @@
\scan_new:N \s__keyval_mark
\scan_new:N \s__keyval_stop
\scan_new:N \s__keyval_tail
+\bool_new:N \l__kernel_keyval_allow_blank_keys_bool
\group_begin:
\cs_set_protected:Npn \__keyval_tmp:w #1#2
{
@@ -12946,9 +12913,11 @@
\cs_new:Npn \__keyval_if_recursion_tail:w \s__keyval_mark #1 \s__keyval_tail { }
\cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \__keyval_trim:nN #1 \__keyval_key:nn
{ \__keyval_loop_other:nnw }
-\cs_new:Npn \__keyval_blank_key_error:w #1 \__keyval_loop_other:nnw
+\cs_new:Npn \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop #1 \__keyval_loop_other:nnw
{
- \msg_expandable_error:nn { keyval } { blank-key-name }
+ \bool_if:NTF \l__kernel_keyval_allow_blank_keys_bool
+ { #1 }
+ { \msg_expandable_error:nn { keyval } { blank-key-name } }
\__keyval_loop_other:nnw
}
\msg_new:nnn { keyval } { misplaced-equals-sign }
@@ -13316,7 +13285,7 @@
}
{
\msg_error:nnx { keys }
- { property-boolean-values-only }
+ { boolean-values-only }
{ .value_ #1 :n }
}
}
@@ -13489,6 +13458,22 @@
{ \__keys_variable_set_required:NnnN #1 { skip } { g } n }
\cs_new_protected:cpn { \c__keys_props_root_str .skip_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { skip } { g } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { g } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { g } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { g } x }
\cs_new_protected:cpn { \c__keys_props_root_str .tl_set:N } #1
{ \__keys_variable_set:NnnN #1 { tl } { } n }
\cs_new_protected:cpn { \c__keys_props_root_str .tl_set:c } #1
@@ -15782,9 +15767,7 @@
{
\if_catcode:w \scan_stop: \exp_not:N #1
\if_meaning:w \scan_stop: #1
- \if_int_compare:w
- \__fp_str_if_eq:nn { \s__fp } { \exp_not:N #1 }
- = \c_zero_int
+ \if:w 0 \__fp_str_if_eq:nn { \s__fp } { \exp_not:N #1 }
0
\msg_expandable_error:nnn
{ fp } { after-e } { floating~point~ }
@@ -15796,9 +15779,7 @@
\prg_return_false:
\fi:
\else:
- \if_int_compare:w
- \__fp_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 }
- = \c_zero_int
+ \if:w 0 \__fp_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 }
\int_value:w #1
\else:
0
@@ -16084,9 +16065,7 @@
\cs_new:Npn \__fp_parse_infix:NN #1 #2
{
\if_catcode:w \scan_stop: \exp_not:N #2
- \if_int_compare:w
- \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 }
- = \c_zero_int
+ \if:w 0 \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 }
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_parse_infix_mark:NNN
\else:
@@ -16128,9 +16107,7 @@
\cs_new:Npn \__fp_parse_infix_after_paren:NN #1 #2
{
\if_catcode:w \scan_stop: \exp_not:N #2
- \if_int_compare:w
- \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 }
- = \c_zero_int
+ \if:w 0 \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 }
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_parse_infix_mark:NNN
\else:
@@ -18769,8 +18746,7 @@
\cs_new:Npn \__fp_pow_normal_o:ww
\s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5
{
- \if_int_compare:w \__fp_str_if_eq:nn { #2 #3 }
- { 1 {1000} {0000} {0000} {0000} } = \c_zero_int
+ \if:w 0 \__fp_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} }
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
\exp_after:wN \__fp_case_return_ii_o:ww
\fi:
@@ -27973,18 +27949,18 @@
\tl_set:Nx #4
{
\cs_if_exist:cTF { __color_convert_ #1 _ #2 :w }
- { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop }
+ { \use:c { __color_convert_ #1 _ #2 :w } #3 \s__color_stop }
{ \use:c { c__color_fallback_ #2 _tl } }
}
}
\cs_generate_variant:Nn \__color_convert:nnnN { nV , nnV }
-\cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \s__color_stop
+\cs_new:Npn \__color_convert_gray_rgb:w #1 \s__color_stop
{ #1 ~ #1 ~ #1 }
-\cs_new:Npn \__color_convert_gray_cmyk:w #1 ~ #2 \s__color_stop
+\cs_new:Npn \__color_convert_gray_cmyk:w #1 \s__color_stop
{ 0 ~ 0 ~ 0 ~ \fp_eval:n { 1 - #1 } }
-\cs_new:Npn \__color_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
+\cs_new:Npn \__color_convert_rgb_gray:w #1 ~ #2 ~ #3 \s__color_stop
{ \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } }
-\cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
+\cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 \s__color_stop
{
\exp_args:Nf \__color_convert_rgb_cmyk:nnnn
{ \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3}
@@ -27996,9 +27972,9 @@
\fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl
#1
}
-\cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s__color_stop
+\cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
{ \fp_eval:n { 1 - min ( 1 , 0.3 * #1 + 0.59 * #2 + 0.11 * #3 + #4 ) } }
-\cs_new:Npn \__color_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s__color_stop
+\cs_new:Npn \__color_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
{
\fp_eval:n { 1 - min ( 1 , #1 + #4 ) } \c_space_tl
\fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl
@@ -28636,7 +28612,10 @@
{
\fp_compare:nNnTF {#1} = { 0 }
{ 00 }
- { \int_to_Hex:n { \fp_to_int:n { #1 * 255 } } }
+ {
+ \fp_compare:nNnT { #1 * 255 } < { 16 } { 0 }
+ \int_to_Hex:n { \fp_to_int:n { #1 * 255 } }
+ }
}
\cs_new_protected:cpn { __color_export_space-sep-rgb:Nw } #1#2 \s__color_stop
{ \tl_set:Nn #1 {#2} }
@@ -28791,7 +28770,7 @@
}
\cs_new_protected:Npn \__color_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
{
- \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 \s__color_stop
{
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #4} ~
@@ -28806,7 +28785,7 @@
}
\cs_new_protected:Npn \__color_model_separation_rgb:nnnnnn #1#2#3#4#5#6
{
- \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 \s__color_stop
{
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #4} ~
@@ -28820,16 +28799,16 @@
}
\cs_new_protected:Npn \__color_model_separation_gray:nnnnnn #1#2#3#4#5#6
{
- \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 \s__color_stop
{
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #3}
}
- \cs_new:cpn { __color_convert_ #1 _gray:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #1 _gray:w } ##1 \s__color_stop
{ \fp_eval:n {##1 * #3} }
- \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 \s__color_stop
{
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #3} ~
@@ -28840,11 +28819,11 @@
}
\cs_new_protected:Npn \__color_model_convert:nnn #1#2#3
{
- \cs_new:cpx { __color_convert_ #1 _ #3 :w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpx { __color_convert_ #1 _ #3 :w } ##1 \s__color_stop
{
\exp_not:N \exp_args:NNe \exp_not:N \use:nn
\exp_not:c { __color_convert_ #2 _ #3 :w }
- { \exp_not:c { __color_convert_ #1 _ #2 :w } ##1 ~ ##2 \s__color_stop }
+ { \exp_not:c { __color_convert_ #1 _ #2 :w } ##1 \s__color_stop }
\c_space_tl \exp_not:N \s__color_stop
}
}
@@ -28865,11 +28844,11 @@
\tl_if_exist:cTF { c__color_model_whitepoint_CIELAB_ #1 _tl }
{
\__color_backend_separation_init_CIELAB:nnn {#1} {#3} { #4 ~ #5 ~ #6 }
- \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 \s__color_stop
{ 0 ~ 0 ~ 0 ~ 1 }
- \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 \s__color_stop
{ 1 ~ 1 ~ 1 }
- \cs_new:cpn { __color_convert_ #2 _gray:w } ##1 ~ ##2 \s__color_stop
+ \cs_new:cpn { __color_convert_ #2 _gray:w } ##1 \s__color_stop
{ 1 }
}
{
@@ -29047,7 +29026,7 @@
\prop_get:NnN \g__color_alternative_values_prop {##1}
\l__color_value_tl
\exp_after:wN \__color_model_devicen_transform:w
- \l__color_value_tl , 0 , 0 , 0 \s__color_stop {#1} {#2}
+ \l__color_value_tl , 0 , 0 , 0 , \s__color_stop {#1} {#2}
}
\tl_put_right:Nx \l__color_internal_tl
{
@@ -29085,7 +29064,7 @@
{ \__color_model_devicen_transform:nnn {#5} { 1 } {#1} }
\cs_new_protected:cpn { __color_model_devicen_transform_3:nnnnn } #1#2#3#4#5
{
- \clist_map_inline { #1 , #2 , #3 }
+ \clist_map_inline:nn { #1 , #2 , #3 }
{ \__color_model_devicen_transform:nnn {#5} { 3 } {##1} }
}
\cs_new_protected:cpn { __color_model_devicen_transform_4:nnnnn } #1#2#3#4#5
@@ -29137,8 +29116,9 @@
{
\exp_not:c { __color_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w }
\prg_replicate:nn {#3} { { 1 } }
- ##1 \exp_not:N \s__color_mark
+ ##1 ~ \exp_not:N \s__color_mark
\clist_map_function:nN {#4} \__color_model_devicen_convert:n
+ {}
\exp_not:N \s__color_stop
}
}
@@ -29220,7 +29200,7 @@
\cs_new:Npn \__color_convert_devicen_rgb:nnnw
#1#2#3#4 ~ #5 \s__color_mark #6#7 \s__color_stop
{
- \__color_convert_devicen_cmyk:nnnnnn {#4} {#1} {#2} {#3} #6
+ \__color_convert_devicen_rgb:nnnnnnn {#4} {#1} {#2} {#3} #6
#5 \s__color_mark #7 \s__color_stop
}
\cs_new:Npn \__color_convert_devicen_rgb:nnnnnnn #1#2#3#4#5#6#7
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index 3d1e1a7d..3e0a8141 100644
--- a/texmf/tex/latex/l3kernel/expl3-generic.tex
+++ b/texmf/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-10-18}%
+\def\ExplFileDate{2021-11-12}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index 64ef124d..b581aa5d 100644
--- a/texmf/tex/latex/l3kernel/expl3.ltx
+++ b/texmf/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-10-18}%
+\def\ExplFileDate{2021-11-12}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index a76be7b8..068438f5 100644
--- a/texmf/tex/latex/l3kernel/expl3.sty
+++ b/texmf/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-10-18}%
+\def\ExplFileDate{2021-11-12}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/texmf/tex/latex/l3packages/xparse/xparse.sty b/texmf/tex/latex/l3packages/xparse/xparse.sty
index 1dcf1ecb..9e84418e 100644
--- a/texmf/tex/latex/l3packages/xparse/xparse.sty
+++ b/texmf/tex/latex/l3packages/xparse/xparse.sty
@@ -60,7 +60,7 @@
}
}
\ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2021-08-27}{}
+\ProvidesExplPackage{xparse}{2021-11-12}{}
{L3 Experimental document command parser}
\clist_new:N \l__cmd_options_clist
\DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }
@@ -153,6 +153,10 @@
{ \exp_not:c { \l__cmd_expandable_aux_name_tl } }
\__cmd_prepare_signature:N
}
+\cs_new_protected:Npn \__cmd_copy_grabber_u:w #1 #2 #3
+ { \__cmd_copy_grabber_D:w {#1} {#2} {#3} { } { } }
+\tl_const:Nn \c__cmd_show_type_u_tl { 3 }
+\tl_const:Nn \c__cmd_show_type_G_tl { 3 }
\cs_new_protected:Npn \__cmd_grab_G:w #1 \__cmd_run_code:
{
\__cmd_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn
More information about the latex3-commits
mailing list.