diff options
author | Karl Berry <karl@freefriends.org> | 2021-11-12 23:04:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-11-12 23:04:14 +0000 |
commit | 0ff2ba12c9b350c0546c2256e398168d325d234a (patch) | |
tree | ad8b6639a8ea08db1ae7b1092f84aab7e8ad43ee /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | |
parent | 933d3ad47a7b54da768a6a1f8a2fe702bcfa9b2e (diff) |
l3 (12nov21)
git-svn-id: svn://tug.org/texlive/trunk@61040 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | 196 |
1 files changed, 88 insertions, 108 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 65bd533c8b8..acd7546557c 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/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 |