From bffbeb435746ef4bfc3abbbce80006f657360f3a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 May 2020 20:47:47 +0000 Subject: l3kernel (11may20) git-svn-id: svn://tug.org/texlive/trunk@55101 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 1813 ++++++++++++-------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.ltx | 9 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 9 +- Master/texmf-dist/tex/latex/l3kernel/l3debug.def | 25 +- 5 files changed, 1083 insertions(+), 775 deletions(-) (limited to 'Master/texmf-dist/tex/latex/l3kernel') diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 7c496cc6033..4e1b9a8bdc0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -9,9 +9,9 @@ %% l3names.dtx (with options: `package') %% l3basics.dtx (with options: `package') %% l3expan.dtx (with options: `package') +%% l3quark.dtx (with options: `package') %% l3tl.dtx (with options: `package') %% l3str.dtx (with options: `package') -%% l3quark.dtx (with options: `package') %% l3seq.dtx (with options: `package') %% l3int.dtx (with options: `package') %% l3flag.dtx (with options: `package') @@ -68,7 +68,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-05-05}% +\def\ExplFileDate{2020-05-11}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -2116,6 +2116,7 @@ \tex_let:D \if_charcode:w \tex_if:D \tex_let:D \if_catcode:w \tex_ifcat:D \tex_let:D \if_meaning:w \tex_ifx:D +\tex_let:D \if_bool:N \tex_ifodd:D \tex_let:D \if_mode_math: \tex_ifmmode:D \tex_let:D \if_mode_horizontal: \tex_ifhmode:D \tex_let:D \if_mode_vertical: \tex_ifvmode:D @@ -2260,6 +2261,8 @@ { \exp_after:wN \use_i:nn \exp:w } \cs_set:Npn \prg_return_false: { \exp_after:wN \use_ii:nn \exp:w} +\cs_set:Npn \__prg_use_none_delimit_by_q_recursion_stop:w + #1 \q__prg_recursion_stop { } \cs_set_protected:Npn \prg_set_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_set:Npn e } \cs_set_protected:Npn \prg_new_conditional:Npnn @@ -2318,24 +2321,24 @@ \exp_not:N \__prg_generate_conditional:NNnnnnNw \exp_not:n { #4 #5 {#1} {#2} {#6} } \__prg_generate_conditional_test:w - #8 \q_mark + #8 \s__prg_mark \__prg_generate_conditional_fast:nw - \prg_return_true: \else: \prg_return_false: \fi: \q_mark + \prg_return_true: \else: \prg_return_false: \fi: \s__prg_mark \use_none:n \exp_not:n { {#8} \use_i_ii:nnn } \tl_to_str:n {#7} - \exp_not:n { , \q_recursion_tail , \q_recursion_stop } + \exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop } } } \cs_set:Npn \__prg_generate_conditional_test:w - #1 \prg_return_true: \else: \prg_return_false: \fi: \q_mark #2 + #1 \prg_return_true: \else: \prg_return_false: \fi: \s__prg_mark #2 { #2 {#1} } \cs_set:Npn \__prg_generate_conditional_fast:nw #1#2 \exp_not:n #3 { \exp_not:n { {#1} \use_i:nn } } \cs_set_protected:Npn \__prg_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 , { - \if_meaning:w \q_recursion_tail #8 - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \if_meaning:w \q__prg_recursion_tail #8 + \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w \fi: \use:c { __prg_generate_ #8 _form:wNNnnnnN } \tl_if_empty:nF {#8} @@ -2345,12 +2348,12 @@ {#8} { \token_to_str:c { #3 : #4 } } } \use_none:nnnnnnnn - \q_stop + \s__prg_stop #1 #2 {#3} {#4} {#5} {#6} #7 \__prg_generate_conditional:NNnnnnNw #1 #2 {#3} {#4} {#5} {#6} #7 } \cs_set_protected:Npn \__prg_generate_p_form:wNNnnnnN - #1 \q_stop #2#3#4#5#6#7#8 + #1 \s__prg_stop #2#3#4#5#6#7#8 { \if_meaning:w e #3 \exp_after:wN \use_i:nn @@ -2369,7 +2372,7 @@ } } \cs_set_protected:Npn \__prg_generate_T_form:wNNnnnnN - #1 \q_stop #2#3#4#5#6#7#8 + #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 { \exp_args:Nc #2 { #4 : #5 T } #6 } @@ -2377,7 +2380,7 @@ { #7 \exp_after:wN \use_ii:nn \fi: \use_none:n } } \cs_set_protected:Npn \__prg_generate_F_form:wNNnnnnN - #1 \q_stop #2#3#4#5#6#7#8 + #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 { \exp_args:Nc #2 { #4 : #5 F } #6 } @@ -2385,7 +2388,7 @@ { #7 \exp_after:wN \use_none:nn \fi: \use:n } } \cs_set_protected:Npn \__prg_generate_TF_form:wNNnnnnN - #1 \q_stop #2#3#4#5#6#7#8 + #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 { \exp_args:Nc #2 { #4 : #5 TF } #6 } @@ -2406,7 +2409,7 @@ \cs_split_function:N #3 \exp_not:N #1 \tl_to_str:n {#4} - \exp_not:n { , \q_recursion_tail , \q_recursion_stop } + \exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop } } } \cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 @@ -2414,19 +2417,19 @@ \if_meaning:w \c_false_bool #3 \__kernel_msg_error:nnx { kernel } { missing-colon } { \token_to_str:c {#1} } - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w \fi: \if_meaning:w \c_false_bool #6 \__kernel_msg_error:nnx { kernel } { missing-colon } { \token_to_str:c {#4} } - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w \fi: \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5} } \cs_set_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 , { - \if_meaning:w \q_recursion_tail #6 - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \if_meaning:w \q__prg_recursion_tail #6 + \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w \fi: \use:c { __prg_set_eq_conditional_ #6 _form:wNnnnn } \tl_if_empty:nF {#6} @@ -2436,17 +2439,17 @@ {#6} { \token_to_str:c { #1 : #2 } } } \use_none:nnnnnn - \q_stop + \s__prg_stop #5 {#1} {#2} {#3} {#4} \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5 } -\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 _p : #4 } { #5 _p : #6 } } -\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 TF } { #5 : #6 TF } } -\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 T } { #5 : #6 T } } -\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 F } { #5 : #6 F } } \tex_chardef:D \c_true_bool = 1 ~ \tex_chardef:D \c_false_bool = 0 ~ @@ -2465,13 +2468,13 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \__cs_split_function_auxi:w - \cs_to_str:N ##1 \q_mark \c_true_bool - #1 \q_mark \c_false_bool \q_stop + \cs_to_str:N ##1 \s__cs_mark \c_true_bool + #1 \s__cs_mark \c_false_bool \s__cs_stop } \cs_set:Npn \__cs_split_function_auxi:w - ##1 #1 ##2 \q_mark ##3##4 \q_stop - { \__cs_split_function_auxii:w ##1 \q_mark \q_stop {##2} ##3 } - \cs_set:Npn \__cs_split_function_auxii:w ##1 \q_mark ##2 \q_stop + ##1 #1 ##2 \s__cs_mark ##3##4 \s__cs_stop + { \__cs_split_function_auxii:w ##1 \s__cs_mark \s__cs_stop {##2} ##3 } + \cs_set:Npn \__cs_split_function_auxii:w ##1 \s__cs_mark ##2 \s__cs_stop { {##1} } } \exp_after:wN \__cs_tmp:w \token_to_str:N : @@ -2864,7 +2867,7 @@ \use:x { \exp_not:n { \cs_new:Npn \__kernel_prefix_arg_replacement:wN #1 } - \tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \q_stop #4 } + \tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \s__kernel_stop #4 } } { #4 {#1} {#2} {#3} } \cs_new:Npn \cs_prefix_spec:N #1 @@ -2872,7 +2875,7 @@ \token_if_macro:NTF #1 { \exp_after:wN \__kernel_prefix_arg_replacement:wN - \token_to_meaning:N #1 \q_stop \use_i:nnn + \token_to_meaning:N #1 \s__kernel_stop \use_i:nnn } { \scan_stop: } } @@ -2881,7 +2884,7 @@ \token_if_macro:NTF #1 { \exp_after:wN \__kernel_prefix_arg_replacement:wN - \token_to_meaning:N #1 \q_stop \use_ii:nnn + \token_to_meaning:N #1 \s__kernel_stop \use_ii:nnn } { \scan_stop: } } @@ -2890,7 +2893,7 @@ \token_if_macro:NTF #1 { \exp_after:wN \__kernel_prefix_arg_replacement:wN - \token_to_meaning:N #1 \q_stop \use_iii:nnn + \token_to_meaning:N #1 \s__kernel_stop \use_iii:nnn } { \scan_stop: } } @@ -3519,6 +3522,13 @@ \cs_new_eq:NN \__exp_e_the_pdfpagesattr: ? \cs_new_eq:NN \__exp_e_the_pdfpkmode: ? } +\cs_new_eq:NN \s__cs_mark \scan_stop: +\cs_new_eq:NN \s__cs_stop \scan_stop: +\cs_new:Npn \q__cs_recursion_stop { \q__cs_recursion_stop } +\cs_new:Npn \__cs_use_none_delimit_by_s_stop:w #1 \s__cs_stop { } +\cs_new:Npn \__cs_use_i_delimit_by_s_stop:nw #1 #2 \s__cs_stop {#1} +\cs_new:Npn \__cs_use_none_delimit_by_q_recursion_stop:w + #1 \q__cs_recursion_stop { } \cs_new_protected:Npn \cs_generate_variant:Nn #1#2 { \__cs_generate_variant:N #1 @@ -3529,7 +3539,7 @@ \exp_not:N #1 \tl_to_str:n {#2} , \exp_not:N \scan_stop: , - \exp_not:N \q_recursion_stop + \exp_not:N \q__cs_recursion_stop } } \cs_new_protected:Npn \cs_generate_variant:cn @@ -3542,34 +3552,34 @@ \exp_not:N \else: \exp_not:N \exp_after:wN \exp_not:N \__cs_generate_variant:ww \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma } - \exp_not:N \q_mark - \exp_not:N \q_mark \cs_new_protected:Npx + \s__cs_mark + \s__cs_mark \cs_new_protected:Npx \tl_to_str:n { pr } - \exp_not:N \q_mark \cs_new:Npx - \exp_not:N \q_stop + \s__cs_mark \cs_new:Npx + \s__cs_stop \exp_not:N \fi: } \exp_last_unbraced:NNNNo \cs_new_protected:Npn \__cs_generate_variant:ww - #1 { \tl_to_str:n { ma } } #2 \q_mark + #1 { \tl_to_str:n { ma } } #2 \s__cs_mark { \__cs_generate_variant:wwNw #1 } \exp_last_unbraced:NNNNo \cs_new_protected:Npn \__cs_generate_variant:wwNw - #1 { \tl_to_str:n { pr } } #2 \q_mark #3 #4 \q_stop + #1 { \tl_to_str:n { pr } } #2 \s__cs_mark #3 #4 \s__cs_stop { \cs_set_eq:NN \__cs_tmp:w #3 } \cs_new_protected:Npn \__cs_generate_variant:nnNN #1#2#3#4 { \if_meaning:w \c_false_bool #3 \__kernel_msg_error:nnx { kernel } { missing-colon } { \token_to_str:c {#1} } - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w \fi: \__cs_generate_variant:Nnnw #4 {#1}{#2} } \cs_new_protected:Npn \__cs_generate_variant:Nnnw #1#2#3#4 , { \if_meaning:w \scan_stop: #4 - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w \fi: \use:x { @@ -3577,16 +3587,16 @@ \__cs_generate_variant_loop:nNwN { } #4 \__cs_generate_variant_loop_end:nwwwNNnn - \q_mark + \s__cs_mark #3 ~ { ~ { } \fi: \__cs_generate_variant_loop_long:wNNnn } ~ { } - \q_stop + \s__cs_stop \exp_not:N #1 {#2} {#4} } \__cs_generate_variant:Nnnw #1 {#2} {#3} } -\cs_new:Npn \__cs_generate_variant_loop:nNwN #1#2#3 \q_mark #4 +\cs_new:Npn \__cs_generate_variant_loop:nNwN #1#2#3 \s__cs_mark #4 { \if:w #2 #4 \exp_after:wN \__cs_generate_variant_loop_same:w @@ -3605,7 +3615,7 @@ #1 \prg_do_nothing: #2 - \__cs_generate_variant_loop:nNwN { } #3 \q_mark + \__cs_generate_variant_loop:nNwN { } #3 \s__cs_mark } \cs_new:Npn \__cs_generate_variant_loop_base:N #1 { @@ -3633,46 +3643,45 @@ #1 \prg_do_nothing: #2#3#4 { #3 { #1 \__cs_generate_variant_same:N #2 } } \cs_new:Npn \__cs_generate_variant_loop_end:nwwwNNnn - #1#2 \q_mark #3 ~ #4 \q_stop #5#6#7#8 + #1#2 \s__cs_mark #3 ~ #4 \s__cs_stop #5#6#7#8 { \scan_stop: \scan_stop: \fi: - \exp_not:N \q_mark - \exp_not:N \q_stop + \s__cs_mark \s__cs_stop \exp_not:N #6 \exp_not:c { #7 : #8 #1 #3 } } -\cs_new:Npn \__cs_generate_variant_loop_long:wNNnn #1 \q_stop #2#3#4#5 +\cs_new:Npn \__cs_generate_variant_loop_long:wNNnn #1 \s__cs_stop #2#3#4#5 { \exp_not:n { - \q_mark + \s__cs_mark \__kernel_msg_error:nnxx { kernel } { variant-too-long } {#5} { \token_to_str:N #3 } \use_none:nnn - \q_stop + \s__cs_stop #3 #3 } } \cs_new:Npn \__cs_generate_variant_loop_invalid:NNwNNnn - #1#2 \fi: \fi: \fi: #3 \q_stop #4#5#6#7 + #1#2 \fi: \fi: \fi: #3 \s__cs_stop #4#5#6#7 { \fi: \fi: \fi: \exp_not:n { - \q_mark + \s__cs_mark \__kernel_msg_error:nnxxxx { kernel } { invalid-variant } {#7} { \token_to_str:N #5 } {#1} {#2} \use_none:nnn - \q_stop + \s__cs_stop #5 #5 } } \cs_new:Npn \__cs_generate_variant_loop_special:NNwNNnn - #1#2#3 \q_stop #4#5#6#7 + #1#2#3 \s__cs_stop #4#5#6#7 { - #3 \q_stop #4 #5 {#6} {#7} + #3 \s__cs_stop #4 #5 {#6} {#7} \exp_not:n { \__kernel_msg_error:nnxxxx @@ -3692,7 +3701,7 @@ \fi: } \cs_new_protected:Npn \__cs_generate_variant:wwNN - #1 \q_mark #2 \q_stop #3#4 + #1 \s__cs_mark #2 \s__cs_stop #3#4 { #2 \cs_if_free:NT #4 @@ -3706,20 +3715,20 @@ \cs_new_protected:Npx \__cs_generate_internal_variant:n #1 { \exp_not:N \__cs_generate_internal_variant:wwnNwn - #1 \exp_not:N \q_mark + #1 \s__cs_mark { \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npx } \cs_new_protected:cpn \use:x - \token_to_str:N x \exp_not:N \q_mark + \token_to_str:N x \s__cs_mark { } \cs_new:cpn \exp_not:N \tex_expanded:D - \exp_not:N \q_stop + \s__cs_stop {#1} } \exp_last_unbraced:NNNNo \cs_new_protected:Npn \__cs_generate_internal_variant:wwnNwn #1 - { \token_to_str:N x } #2 \q_mark #3#4#5#6 \q_stop #7 + { \token_to_str:N x } #2 \s__cs_mark #3#4#5#6 \s__cs_stop #7 { #3 \cs_if_free:cT { exp_args:N #7 } @@ -3738,7 +3747,7 @@ \exp_after:wN \__cs_generate_internal_test_aux:w \exp_after:wN #1 \fi: ##3 - \q_mark + \s__cs_mark { \use:x { @@ -3747,12 +3756,12 @@ } } #1 - \q_mark + \s__cs_mark { \exp_not:n { \__cs_generate_internal_one_go:NNn ##1 ##2 {##3} } } - \q_stop + \s__cs_stop } \cs_new_protected:Npn \__cs_generate_internal_test_aux:w - ##1 #1 ##2 \q_mark ##3 ##4 \q_stop {##3} + ##1 #1 ##2 \s__cs_mark ##3 ##4 \s__cs_stop {##3} \cs_if_exist:NTF \tex_expanded:D { \cs_new_eq:NN \__cs_generate_internal_test:Nw @@ -3837,20 +3846,20 @@ \if_meaning:w \c_false_bool #3 \__kernel_msg_error:nnx { kernel } { missing-colon } { \token_to_str:c {#1} } - \use_i_delimit_by_q_stop:nw + \__cs_use_i_delimit_by_s_stop:nw \fi: \exp_after:wN \__cs_generate_variant:w - \tl_to_str:n {#5} , \scan_stop: , \q_recursion_stop - \use_none_delimit_by_q_stop:w \q_mark {#1} {#2} {#4} \q_stop + \tl_to_str:n {#5} , \scan_stop: , \q__cs_recursion_stop + \__cs_use_none_delimit_by_s_stop:w \s__cs_mark {#1} {#2} {#4} \s__cs_stop } \cs_new_protected:Npn \__cs_generate_variant:w - #1 , #2 \q_mark #3#4#5 + #1 , #2 \s__cs_mark #3#4#5 { \if_meaning:w \scan_stop: #1 \scan_stop: - \if_meaning:w \q_nil #1 \q_nil + \if_meaning:w \q__cs_nil #1 \q__cs_nil \use_i:nnn \fi: - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w \else: \cs_if_exist_use:cTF { __cs_generate_variant_#1_form:nnn } { {#3} {#4} {#5} } @@ -3860,7 +3869,7 @@ {#1} { \token_to_str:c { #3 : #4 } } } \fi: - \__cs_generate_variant:w #2 \q_mark {#3} {#4} {#5} + \__cs_generate_variant:w #2 \s__cs_mark {#3} {#4} {#5} } \cs_new_protected:Npn \__cs_generate_variant_p_form:nnn #1#2 { \cs_generate_variant:cn { #1 _p : #2 } } @@ -3937,6 +3946,302 @@ \__cs_tmp:w { ccx } \__cs_tmp:w { cnx } \__cs_tmp:w { oox } +%% File: l3quark.dtx +\cs_new_protected:Npn \quark_new:N #1 + { + \__kernel_chk_if_free_cs:N #1 + \cs_gset_nopar:Npn #1 {#1} + } +\quark_new:N \q_nil +\quark_new:N \q_mark +\quark_new:N \q_no_value +\quark_new:N \q_stop +\quark_new:N \q_recursion_tail +\quark_new:N \q_recursion_stop +\cs_new_eq:NN \s__quark \scan_stop: +\quark_new:N \q__quark_nil +\cs_new:Npn \quark_if_recursion_tail_stop:N #1 + { + \if_meaning:w \q_recursion_tail #1 + \exp_after:wN \use_none_delimit_by_q_recursion_stop:w + \fi: + } +\cs_new:Npn \quark_if_recursion_tail_stop_do:Nn #1 + { + \if_meaning:w \q_recursion_tail #1 + \exp_after:wN \use_i_delimit_by_q_recursion_stop:nw + \else: + \exp_after:wN \use_none:n + \fi: + } +\cs_new:Npn \quark_if_recursion_tail_stop:n #1 + { + \tl_if_empty:oTF + { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } + { \use_none_delimit_by_q_recursion_stop:w } + { } + } +\cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1 + { + \tl_if_empty:oTF + { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } + { \use_i_delimit_by_q_recursion_stop:nw } + { \use_none:n } + } +\cs_new:Npn \__quark_if_recursion_tail:w + #1 \q_recursion_tail #2 ? #3 ?! { #1 #2 } +\cs_generate_variant:Nn \quark_if_recursion_tail_stop:n { o } +\cs_generate_variant:Nn \quark_if_recursion_tail_stop_do:nn { o } +\cs_new:Npn \quark_if_recursion_tail_break:NN #1#2 + { + \if_meaning:w \q_recursion_tail #1 + \exp_after:wN #2 + \fi: + } +\cs_new:Npn \quark_if_recursion_tail_break:nN #1#2 + { + \tl_if_empty:oT + { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } + {#2} + } +\prg_new_conditional:Npnn \quark_if_nil:N #1 { p, T , F , TF } + { + \if_meaning:w \q_nil #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\prg_new_conditional:Npnn \quark_if_no_value:N #1 { p, T , F , TF } + { + \if_meaning:w \q_no_value #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\prg_generate_conditional_variant:Nnn \quark_if_no_value:N + { c } { p , T , F , TF } +\prg_new_conditional:Npnn \quark_if_nil:n #1 { p, T , F , TF } + { + \__quark_if_empty_if:o + { \__quark_if_nil:w {} #1 {} ? ! \q_nil ? ? ! } + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new:Npn \__quark_if_nil:w #1 \q_nil #2 ? #3 ? ! { #1 #2 } +\prg_new_conditional:Npnn \quark_if_no_value:n #1 { p, T , F , TF } + { + \__quark_if_empty_if:o + { \__quark_if_no_value:w {} #1 {} ? ! \q_no_value ? ? ! } + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new:Npn \__quark_if_no_value:w #1 \q_no_value #2 ? #3 ? ! { #1 #2 } +\prg_generate_conditional_variant:Nnn \quark_if_nil:n + { V , o } { p , TF , T , F } +\cs_new:Npn \__quark_if_empty_if:o #1 + { + \exp_after:wN \if_meaning:w \exp_after:wN \q_nil + \__kernel_tl_to_str:w \exp_after:wN {#1} \q_nil + } +\cs_new_protected:Npn \__kernel_quark_new_test:N #1 + { \__quark_new_test_aux:Nx #1 { \__quark_module_name:N #1 } } +\cs_new_protected:Npn \__quark_new_test_aux:Nn #1 #2 + { + \if_meaning:w \q_nil #2 \q_nil + \__kernel_msg_error:nnx { kernel } { invalid-quark-function } + { \token_to_str:N #1 } + \else: + \__quark_new_test:Nccn #1 + { q__#2_recursion_tail } { q__#2_recursion_stop } { __#2 } + \fi: + } +\cs_generate_variant:Nn \__quark_new_test_aux:Nn { Nx } +\cs_new_protected:Npn \__quark_new_test:NNNn #1 + { + \exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn + { \cs_split_function:N #1 } + #1 { test } + } +\cs_generate_variant:Nn \__quark_new_test:NNNn { Ncc } +\cs_new_protected:Npn \__kernel_quark_new_conditional:Nn #1 + { + \__quark_new_conditional:Nxxn #1 + { \__quark_quark_conditional_name:N #1 } + { \__quark_module_name:N #1 } + } +\cs_new_protected:Npn \__quark_new_conditional:Nnnn #1#2#3#4 + { + \if_meaning:w \q_nil #2 \q_nil + \__kernel_msg_error:nnx { kernel } { invalid-quark-function } + { \token_to_str:N #1 } + \else: + \if_meaning:w \q_nil #3 \q_nil + \__kernel_msg_error:nnx { kernel } { invalid-quark-function } + { \token_to_str:N #1 } + \else: + \exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn + { \cs_split_function:N #1 } + #1 { conditional } + {#2} {#3} {#4} + \fi: + \fi: + } +\cs_generate_variant:Nn \__quark_new_conditional:Nnnn { Nxx } +\cs_new_protected:Npn \__quark_new_test_aux:nnNNnnnn #1 #2 #3 #4 #5 + { + \cs_if_exist_use:cTF { __quark_new_#5_#2:Nnnn } { #4 } + { + \__kernel_msg_error:nnxx { kernel } { invalid-quark-function } + { \token_to_str:N #4 } {#2} + \use_none:nnn + } + } +\cs_new_protected:Npn \__quark_new_test_n:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { none } { } { } { } + \__quark_new_test_define_tl:nNnNNn #1 { } + } +\cs_new_protected:Npn \__quark_new_test_nn:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { i } { n } {##1} {##2} + \__quark_new_test_define_tl:nNnNNn #1 { \use_none:n } + } +\cs_new_protected:Npn \__quark_new_test_nN:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { i } { n } {##1} {##2} + \__quark_new_test_define_break_tl:nNNNNn #1 { } + } +\cs_new_protected:Npn \__quark_new_test_N:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { none } { } { } { } + \__quark_new_test_define_ifx:nNnNNn #1 { } + } +\cs_new_protected:Npn \__quark_new_test_Nn:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { i } { n } {##1} {##2} + \__quark_new_test_define_ifx:nNnNNn #1 + { \else: \exp_after:wN \use_none:n } + } +\cs_new_protected:Npn \__quark_new_test_NN:Nnnn #1 #2 #3 #4 + { + \__quark_new_test_aux_do:nNNnnnnNNn {#4} #2 #3 { i } { n } {##1} {##2} + \__quark_new_test_define_break_ifx:nNNNNn #1 { } + } +\cs_new_protected:Npn \__quark_new_test_aux_do:nNNnnnnNNn #1 #2 #3 #4 #5 + { + \exp_args:Ncc \__quark_test_define_aux:NNNNnnNNn + { #1 _quark_recursion_tail:w } + { #1 _use_ #4 _delimit_by_q_recursion_stop: #5 w } + #2 #3 + } +\cs_new_protected:Npn \__quark_test_define_aux:NNNNnnNNn #1 #2 #3 #4 #5 #6 #7 + { + \cs_gset:Npn #1 ##1 #3 ##2 ? ##3 ?! { ##1 ##2 } + \cs_gset:Npn #2 ##1 #6 #4 {#5} + #7 {##1} #1 #2 #3 + } +\cs_new_protected:Npn \__quark_new_test_define_tl:nNnNNn #1 #2 #3 #4 #5 #6 + { + \cs_new:Npn #5 #1 + { + \tl_if_empty:oTF + { #2 {} ##1 {} ?! #4 ??! } + {#3} {#6} + } + } +\cs_new_protected:Npn \__quark_new_test_define_ifx:nNnNNn #1 #2 #3 #4 #5 #6 + { + \cs_new:Npn #5 #1 + { + \if_meaning:w #4 ##1 + \exp_after:wN #3 + #6 + \fi: + } + } +\cs_new_protected:Npn \__quark_new_test_define_break_tl:nNNNNn #1 #2 #3 + { \__quark_new_test_define_tl:nNnNNn {##1##2} #2 {##2} } +\cs_new_protected:Npn \__quark_new_test_define_break_ifx:nNNNNn #1 #2 #3 + { \__quark_new_test_define_ifx:nNnNNn {##1##2} #2 {##2} } +\cs_new_protected:Npn \__quark_new_conditional_n:Nnnn + { \__quark_new_conditional_aux_do:NNnnn \use_i:nn } +\cs_new_protected:Npn \__quark_new_conditional_N:Nnnn + { \__quark_new_conditional_aux_do:NNnnn \use_ii:nn } +\cs_new_protected:Npn \__quark_new_conditional_aux_do:NNnnn #1 #2 #3 #4 + { + \exp_args:Ncc \__quark_new_conditional_define:NNNNn + { __ #4 _if_quark_ #3 :w } { q__ #4 _ #3 } #2 #1 + } +\cs_new_protected:Npn \__quark_new_conditional_define:NNNNn #1 #2 #3 #4 #5 + { + #4 { \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1 ##2 } } { } + \exp_args:Nno \use:n { \prg_new_conditional:Npnn #3 ##1 {#5} } + { + #4 { \__quark_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! } } + { \if_meaning:w #2 ##1 } + \prg_return_true: \else: \prg_return_false: \fi: + } + } +\cs_set:Npn \__quark_tmp:w #1#2 + { + \cs_new:Npn \__quark_module_name:N ##1 + { + \exp_last_unbraced:Nf \__quark_module_name:w + { \cs_to_str:N ##1 } #1 \s__quark + } + \cs_new:Npn \__quark_module_name:w ##1 #1 ##2 \s__quark + { \__quark_module_name_loop:w ##1 #2 \use_none:n { } #2 \s__quark } + \cs_new:Npn \__quark_module_name_loop:w ##1 #2 + { + \use_i_ii:nnn \if_meaning:w \prg_do_nothing: + ##1 \prg_do_nothing: \prg_do_nothing: + \exp_after:wN \__quark_module_name_loop:w + \else: + \__quark_module_name_end:w ##1 + \fi: + } + \cs_new:Npn \__quark_module_name_end:w + ##1 \fi: ##2 \s__quark { \fi: ##1 } + } +\exp_after:wN \__quark_tmp:w \tl_to_str:n { : _ } +\cs_set:Npn \__quark_tmp:w #1 #2 \s__quark + { + \cs_new:Npn \__quark_quark_conditional_name:N ##1 + { + \exp_last_unbraced:Nf \__quark_quark_conditional_name:w + { \cs_to_str:N ##1 } #1 #2 #1 \s__quark + } + \cs_new:Npn \__quark_quark_conditional_name:w + ##1 #2 ##2 #1 ##3 \s__quark {##2} + } +\exp_after:wN \__quark_tmp:w \tl_to_str:n { : _quark_if_ } \s__quark +\cs_gset:Npn \g__scan_marks_tl { } +\cs_new_protected:Npn \scan_new:N #1 + { + \tl_if_in:NnTF \g__scan_marks_tl { #1 } + { + \__kernel_msg_error:nnx { kernel } { scanmark-already-defined } + { \token_to_str:N #1 } + } + { + \tl_gput_right:Nn \g__scan_marks_tl {#1} + \cs_new_eq:NN #1 \scan_stop: + } + } +\cs_new_eq:NN \s_stop \scan_stop: +\cs_gset_nopar:Npx \g__scan_marks_tl + { + \exp_not:o \g__scan_marks_tl + \s_stop + \s__quark + } +\cs_new:Npn \use_none_delimit_by_s_stop:w #1 \s_stop { } %% File: l3tl.dtx \cs_new_protected:Npn \tl_new:N #1 { @@ -4057,6 +4362,13 @@ \cs_generate_variant:Nn \tl_gput_right:NV { c } \cs_generate_variant:Nn \tl_gput_right:No { c } \cs_generate_variant:Nn \tl_gput_right:Nx { c } +\quark_new:N \q__tl_nil +\quark_new:N \q__tl_mark +\quark_new:N \q__tl_stop +\quark_new:N \q__tl_recursion_tail +\quark_new:N \q__tl_recursion_stop +\__kernel_quark_new_test:N \__tl_if_recursion_tail_break:nN +\__kernel_quark_new_conditional:Nn \__tl_quark_if_nil:n { TF } \tl_const:Nx \c__tl_rescan_marker_tl { : \token_to_str:N : } \cs_new_protected:Npn \tl_rescan:nn #1#2 { @@ -4138,9 +4450,9 @@ { #1 \use_none:n #2 #1 { \exp:w \__tl_set_rescan_single_aux:w } - \q_stop + \s__tl_stop } - \cs_set:Npn \__tl_rescan:NNw ##1##2##3 #2 #1 ##4 ##5 \q_stop + \cs_set:Npn \__tl_rescan:NNw ##1##2##3 #2 #1 ##4 ##5 \s__tl_stop { \group_end: ##1 ##2 { ##4 ##3 } @@ -4155,13 +4467,13 @@ \c__tl_rescan_marker_tl #2 { \use_i:nn \exp_end: #1 } \cs_new_protected:Npn \tl_replace_once:Nnn - { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_wrap:w \tl_set:Nx } + { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \tl_set:Nx } \cs_new_protected:Npn \tl_greplace_once:Nnn - { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_wrap:w \tl_gset:Nx } + { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \tl_gset:Nx } \cs_new_protected:Npn \tl_replace_all:Nnn - { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_next:w \tl_set:Nx } + { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \tl_set:Nx } \cs_new_protected:Npn \tl_greplace_all:Nnn - { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_next:w \tl_gset:Nx } + { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \tl_gset:Nx } \cs_generate_variant:Nn \tl_replace_once:Nnn { c } \cs_generate_variant:Nn \tl_greplace_once:Nnn { c } \cs_generate_variant:Nn \tl_replace_all:Nnn { c } @@ -4179,9 +4491,9 @@ \tl_if_in:nnTF {#6} {#1} { \exp_args:Nc \__tl_replace:NnNNNnn {#2} {#2?} } { - \quark_if_nil:nTF {#6} - { \__tl_replace_auxi:NnnNNNnn #5 {#1} { #1 \q_stop } } - { \__tl_replace_auxi:NnnNNNnn #5 {#1} { #1 \q_nil } } + \__tl_quark_if_nil:nTF {#6} + { \__tl_replace_auxi:NnnNNNnn #5 {#1} { #1 \q__tl_stop } } + { \__tl_replace_auxi:NnnNNNnn #5 {#1} { #1 \q__tl_nil } } } } { \__tl_replace_auxii:nNNNnn {#1} } @@ -4257,8 +4569,8 @@ { c } { p , T , F , TF } \prg_new_conditional:Npnn \tl_if_empty:n #1 { p , TF , T , F } { - \exp_after:wN \if_meaning:w \exp_after:wN \q_nil - \tl_to_str:n {#1} \q_nil + \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil + \tl_to_str:n {#1} \q__tl_nil \prg_return_true: \else: \prg_return_false: @@ -4268,8 +4580,8 @@ { V } { p , TF , T , F } \cs_new:Npn \__tl_if_empty_if:o #1 { - \exp_after:wN \if_meaning:w \exp_after:wN \q_nil - \__kernel_tl_to_str:w \exp_after:wN {#1} \q_nil + \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil + \__kernel_tl_to_str:w \exp_after:wN {#1} \q__tl_nil } \prg_new_conditional:Npnn \tl_if_empty:o #1 { p , TF , T , F } { @@ -4342,13 +4654,13 @@ { \if_catcode:w ^ \exp_after:wN \__tl_if_single:nnw \__kernel_tl_to_str:w - \exp_after:wN { \use_none:nn #1 ?? } ^ ? \q_stop + \exp_after:wN { \use_none:nn #1 ?? } ^ ? \s__tl_stop \prg_return_true: \else: \prg_return_false: \fi: } -\cs_new:Npn \__tl_if_single:nnw #1#2#3 \q_stop {#2} +\cs_new:Npn \__tl_if_single:nnw #1#2#3 \s__tl_stop {#2} \prg_new_conditional:Npnn \tl_if_single_token:n #1 { p , T , F , TF } { \tl_if_head_is_N_type:nTF {#1} @@ -4384,7 +4696,7 @@ \__tl_case:NnTF #1 {#2} } \cs_new:Npn \__tl_case:NnTF #1#2#3#4 - { \__tl_case:Nw #1 #2 #1 { } \q_mark {#3} \q_mark {#4} \q_stop } + { \__tl_case:Nw #1 #2 #1 { } \s__tl_mark {#3} \s__tl_mark {#4} \s__tl_stop } \cs_new:Npn \__tl_case:Nw #1#2#3 { \tl_if_eq:NNTF #1 #2 @@ -4394,19 +4706,19 @@ \cs_generate_variant:Nn \tl_case:Nn { c } \prg_generate_conditional_variant:Nnn \tl_case:Nn { c } { T , F , TF } -\cs_new:Npn \__tl_case_end:nw #1#2#3 \q_mark #4#5 \q_stop +\cs_new:Npn \__tl_case_end:nw #1#2#3 \s__tl_mark #4#5 \s__tl_stop { \exp_end: #1 #4 } \cs_new:Npn \tl_map_function:nN #1#2 { \__tl_map_function:Nn #2 #1 - \q_recursion_tail + \q__tl_recursion_tail \prg_break_point:Nn \tl_map_break: { } } \cs_new:Npn \tl_map_function:NN { \exp_args:No \tl_map_function:nN } \cs_new:Npn \__tl_map_function:Nn #1#2 { - \quark_if_recursion_tail_break:nN {#2} \tl_map_break: + \__tl_if_recursion_tail_break:nN {#2} \tl_map_break: #1 {#2} \__tl_map_function:Nn #1 } \cs_generate_variant:Nn \tl_map_function:NN { c } @@ -4417,7 +4729,7 @@ { __tl_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2} \exp_args:Nc \__tl_map_function:Nn { __tl_map_ \int_use:N \g__kernel_prg_map_int :w } - #1 \q_recursion_tail + #1 \q__tl_recursion_tail \prg_break_point:Nn \tl_map_break: { \int_gdecr:N \g__kernel_prg_map_int } } @@ -4427,7 +4739,7 @@ \cs_new:Npn \tl_map_tokens:nn #1#2 { \__tl_map_tokens:nn {#2} #1 - \q_recursion_tail + \q__tl_recursion_tail \prg_break_point:Nn \tl_map_break: { } } \cs_new:Npn \tl_map_tokens:Nn @@ -4435,21 +4747,21 @@ \cs_generate_variant:Nn \tl_map_tokens:Nn { c } \cs_new:Npn \__tl_map_tokens:nn #1#2 { - \quark_if_recursion_tail_break:nN {#2} \tl_map_break: + \__tl_if_recursion_tail_break:nN {#2} \tl_map_break: \use:n {#1} {#2} \__tl_map_tokens:nn {#1} } \cs_new_protected:Npn \tl_map_variable:nNn #1#2#3 { \__tl_map_variable:Nnn #2 {#3} #1 - \q_recursion_tail + \q__tl_recursion_tail \prg_break_point:Nn \tl_map_break: { } } \cs_new_protected:Npn \tl_map_variable:NNn { \exp_args:No \tl_map_variable:nNn } \cs_new_protected:Npn \__tl_map_variable:Nnn #1#2#3 { - \quark_if_recursion_tail_break:nN {#3} \tl_map_break: + \__tl_if_recursion_tail_break:nN {#3} \tl_map_break: \tl_set:Nn #1 {#3} \use:n {#2} \__tl_map_variable:Nnn #1 {#2} @@ -4503,24 +4815,24 @@ \cs_new:Npn \tl_reverse_items:n #1 { \__tl_reverse_items:nwNwn #1 ? - \q_mark \__tl_reverse_items:nwNwn - \q_mark \__tl_reverse_items:wn - \q_stop { } + \s__tl_mark \__tl_reverse_items:nwNwn + \s__tl_mark \__tl_reverse_items:wn + \s__tl_stop { } } -\cs_new:Npn \__tl_reverse_items:nwNwn #1 #2 \q_mark #3 #4 \q_stop #5 +\cs_new:Npn \__tl_reverse_items:nwNwn #1 #2 \s__tl_mark #3 #4 \s__tl_stop #5 { #3 #2 - \q_mark \__tl_reverse_items:nwNwn - \q_mark \__tl_reverse_items:wn - \q_stop { {#1} #5 } + \s__tl_mark \__tl_reverse_items:nwNwn + \s__tl_mark \__tl_reverse_items:wn + \s__tl_stop { {#1} #5 } } -\cs_new:Npn \__tl_reverse_items:wn #1 \q_stop #2 +\cs_new:Npn \__tl_reverse_items:wn #1 \s__tl_stop #2 { \exp_not:o { \use_none:nn #2 } } \cs_new:Npn \tl_trim_spaces:n #1 - { \__tl_trim_spaces:nn { \q_mark #1 } \exp_not:o } + { \__tl_trim_spaces:nn { \s__tl_mark #1 } \exp_not:o } \cs_generate_variant:Nn \tl_trim_spaces:n { o } \cs_new:Npn \tl_trim_spaces_apply:nN #1#2 - { \__tl_trim_spaces:nn { \q_mark #1 } { \exp_args:No #2 } } + { \__tl_trim_spaces:nn { \s__tl_mark #1 } { \exp_args:No #2 } } \cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o } \cs_new_protected:Npn \tl_trim_spaces:N #1 { \tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } } @@ -4534,40 +4846,40 @@ { \__tl_trim_spaces_auxi:w ##1 - \q_nil - \q_mark #1 { } - \q_mark \__tl_trim_spaces_auxii:w + \s__tl_nil + \s__tl_mark #1 { } + \s__tl_mark \__tl_trim_spaces_auxii:w \__tl_trim_spaces_auxiii:w - #1 \q_nil + #1 \s__tl_nil \__tl_trim_spaces_auxiv:w - \q_stop + \s__tl_stop } - \cs_new:Npn \__tl_trim_spaces_auxi:w ##1 \q_mark #1 ##2 \q_mark ##3 + \cs_new:Npn \__tl_trim_spaces_auxi:w ##1 \s__tl_mark #1 ##2 \s__tl_mark ##3 { ##3 \__tl_trim_spaces_auxi:w - \q_mark + \s__tl_mark ##2 - \q_mark #1 {##1} + \s__tl_mark #1 {##1} } \cs_new:Npn \__tl_trim_spaces_auxii:w - \__tl_trim_spaces_auxi:w \q_mark \q_mark ##1 + \__tl_trim_spaces_auxi:w \s__tl_mark \s__tl_mark ##1 { \__tl_trim_spaces_auxiii:w ##1 } - \cs_new:Npn \__tl_trim_spaces_auxiii:w ##1 #1 \q_nil ##2 + \cs_new:Npn \__tl_trim_spaces_auxiii:w ##1 #1 \s__tl_nil ##2 { ##2 - ##1 \q_nil + ##1 \s__tl_nil \__tl_trim_spaces_auxiii:w } - \cs_new:Npn \__tl_trim_spaces_auxiv:w ##1 \q_nil ##2 \q_stop ##3 + \cs_new:Npn \__tl_trim_spaces_auxiv:w ##1 \s__tl_nil ##2 \s__tl_stop ##3 { ##3 { \use_none:n ##1 } } } \__tl_tmp:w { ~ } -\cs_new_nopar:Npn \q__tl_act_mark { \q__tl_act_mark } -\cs_new_nopar:Npn \q__tl_act_stop { \q__tl_act_stop } +\quark_new:N \q__tl_act_mark +\quark_new:N \q__tl_act_stop \cs_new:Npn \__tl_act:NNNnn #1#2#3#4#5 { \group_align_safe_begin: @@ -4643,17 +4955,17 @@ \cs_new:Npn \tl_head:n #1 { \__kernel_exp_not:w - \if_false: { \fi: \__tl_head_auxi:nw #1 { } \q_stop } + \if_false: { \fi: \__tl_head_auxi:nw #1 { } \s__tl_stop } } -\cs_new:Npn \__tl_head_auxi:nw #1#2 \q_stop +\cs_new:Npn \__tl_head_auxi:nw #1#2 \s__tl_stop { \exp_after:wN \__tl_head_auxii:n \exp_after:wN { \if_false: } \fi: {#1} } \cs_new:Npn \__tl_head_auxii:n #1 { - \exp_after:wN \if_meaning:w \exp_after:wN \q_nil - \__kernel_tl_to_str:w \exp_after:wN { \use_none:n #1 } \q_nil + \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil + \__kernel_tl_to_str:w \exp_after:wN { \use_none:n #1 } \q__tl_nil \exp_after:wN \use_i:nn \else: \exp_after:wN \use_ii:nn @@ -4663,6 +4975,7 @@ } \cs_generate_variant:Nn \tl_head:n { V , v , f } \cs_new:Npn \tl_head:w #1#2 \q_stop {#1} +\cs_new:Npn \__tl_tl_head:w #1#2 \s__tl_stop {#1} \cs_new:Npn \tl_head:N { \exp_args:No \tl_head:n } \cs_new:Npn \tl_tail:n #1 { @@ -4680,7 +4993,7 @@ \tl_if_head_is_N_type:nTF { #1 ? } { \exp_after:wN \exp_not:N - \tl_head:w #1 { ? \use_none:nn } \q_stop + \__tl_tl_head:w #1 { ? \use_none:nn } \s__tl_stop } { \str_head:n {#1} } \prg_return_true: @@ -4697,7 +5010,7 @@ \tl_if_head_is_N_type:nTF { #1 ? } { \exp_after:wN \exp_not:N - \tl_head:w #1 { ? \use_none:nn } \q_stop + \__tl_tl_head:w #1 { ? \use_none:nn } \s__tl_stop } { \tl_if_head_is_group:nTF {#1} @@ -4721,7 +5034,7 @@ \cs_new:Npn \__tl_if_head_eq_meaning_normal:nN #1 #2 { \exp_after:wN \if_meaning:w - \tl_head:w #1 { ?? \use_none:nnn } \q_stop #2 + \__tl_tl_head:w #1 { ?? \use_none:nnn } \s__tl_stop #2 \prg_return_true: \else: \prg_return_false: @@ -4791,7 +5104,7 @@ \exp_args:Nf \__tl_item:nn { \exp_args:Nf \__tl_item_aux:nn { \int_eval:n {#2} } {#1} } #1 - \q_recursion_tail + \q__tl_recursion_tail \prg_break_point: } \cs_new:Npn \__tl_item_aux:nn #1#2 @@ -4802,7 +5115,7 @@ } \cs_new:Npn \__tl_item:nn #1#2 { - \quark_if_recursion_tail_break:nN {#2} \prg_break: + \__tl_if_recursion_tail_break:nN {#2} \prg_break: \int_compare:nNnTF {#1} = 1 { \prg_break:n { \exp_not:n {#2} } } { \exp_args:Nf \__tl_item:nn { \int_eval:n { #1 - 1 } } } @@ -4927,7 +5240,7 @@ { \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \__tl_show:n } \cs_new_protected:Npn \__tl_show:n #1 { - \tl_set:Nf \l__tl_internal_a_tl { \__tl_show:w #1 \q_stop } + \tl_set:Nf \l__tl_internal_a_tl { \__tl_show:w #1 \s__tl_stop } \__kernel_iow_with:Nnn \tex_newlinechar:D { 10 } { \__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 } @@ -4937,14 +5250,25 @@ } } } -\cs_new:Npn \__tl_show:w #1 > #2 . \q_stop {#2} +\cs_new:Npn \__tl_show:w #1 > #2 . \s__tl_stop {#2} \cs_new_protected:Npn \tl_log:n #1 { \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n } +\scan_new:N \s__tl_nil +\scan_new:N \s__tl_mark +\scan_new:N \s__tl_stop \tl_new:N \g_tmpa_tl \tl_new:N \g_tmpb_tl \tl_new:N \l_tmpa_tl \tl_new:N \l_tmpb_tl %% File: l3str.dtx +\scan_new:N \s__str_mark +\scan_new:N \s__str_stop +\cs_new:Npn \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop { } +\cs_new:Npn \__str_use_i_delimit_by_s_stop:nw #1 #2 \s__str_stop {#1} +\quark_new:N \q__str_recursion_tail +\quark_new:N \q__str_recursion_stop +\__kernel_quark_new_test:N \__str_if_recursion_tail_break:NN +\__kernel_quark_new_test:N \__str_if_recursion_tail_stop_do:Nn \group_begin: \cs_set_protected:Npn \__str_tmp:n #1 { @@ -5030,9 +5354,9 @@ { \__str_replace_next:w #4 - \use_none_delimit_by_q_stop:w + \__str_use_none_delimit_by_s_stop:w #5 - \q_stop + \s__str_stop } } \cs_new_eq:NN \__str_replace_next:w ? @@ -5135,7 +5459,7 @@ \__str_case:nnTF {#1} {#2} } \cs_new:Npn \__str_case:nnTF #1#2#3#4 - { \__str_case:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } + { \__str_case:nw {#1} #2 {#1} { } \s__str_mark {#3} \s__str_mark {#4} \s__str_stop } \cs_generate_variant:Nn \str_case:nn { V , o , nV , nv } \prg_generate_conditional_variant:Nnn \str_case:nn { V , o , nV , nv } { T , F , TF } @@ -5166,21 +5490,21 @@ \__str_case_e:nnTF {#1} {#2} } \cs_new:Npn \__str_case_e:nnTF #1#2#3#4 - { \__str_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } + { \__str_case_e:nw {#1} #2 {#1} { } \s__str_mark {#3} \s__str_mark {#4} \s__str_stop } \cs_new:Npn \__str_case_e:nw #1#2#3 { \str_if_eq:eeTF {#1} {#2} { \__str_case_end:nw {#3} } { \__str_case_e:nw {#1} } } -\cs_new:Npn \__str_case_end:nw #1#2#3 \q_mark #4#5 \q_stop +\cs_new:Npn \__str_case_end:nw #1#2#3 \s__str_mark #4#5 \s__str_stop { \exp_end: #1 #4 } \cs_new:Npn \str_map_function:nN #1#2 { \exp_after:wN \__str_map_function:w \exp_after:wN \__str_map_function:Nn \exp_after:wN #2 \__kernel_tl_to_str:w {#1} - \q_recursion_tail ? ~ + \q__str_recursion_tail ? ~ \prg_break_point:Nn \str_map_break: { } } \cs_new:Npn \str_map_function:NN @@ -5189,7 +5513,7 @@ { #1 { ~ { ~ } \__str_map_function:w } } \cs_new:Npn \__str_map_function:Nn #1#2 { - \if_meaning:w \q_recursion_tail #2 + \if_meaning:w \q__str_recursion_tail #2 \exp_after:wN \str_map_break: \fi: #1 #2 \__str_map_function:Nn #1 @@ -5206,7 +5530,7 @@ \exp_not:c { __str_map_ \int_use:N \g__kernel_prg_map_int :w } \__kernel_str_to_other_fast:n {#1} } - \q_recursion_tail + \q__str_recursion_tail \prg_break_point:Nn \str_map_break: { \int_gdecr:N \g__kernel_prg_map_int } } @@ -5215,7 +5539,7 @@ \cs_generate_variant:Nn \str_map_inline:Nn { c } \cs_new:Npn \__str_map_inline:NN #1#2 { - \quark_if_recursion_tail_break:NN #2 \str_map_break: + \__str_if_recursion_tail_break:NN #2 \str_map_break: \exp_args:No #1 { \token_to_str:N #2 } \__str_map_inline:NN #1 } @@ -5226,14 +5550,14 @@ \exp_not:n { \__str_map_variable:NnN #2 {#3} } \__kernel_str_to_other_fast:n {#1} } - \q_recursion_tail + \q__str_recursion_tail \prg_break_point:Nn \str_map_break: { } } \cs_new_protected:Npn \str_map_variable:NNn { \exp_args:No \str_map_variable:nNn } \cs_new_protected:Npn \__str_map_variable:NnN #1#2#3 { - \quark_if_recursion_tail_break:NN #3 \str_map_break: + \__str_if_recursion_tail_break:NN #3 \str_map_break: \str_set:Nn #1 {#3} \use:n {#2} \__str_map_variable:NnN #1 {#2} @@ -5246,7 +5570,7 @@ \cs_new:Npn \__kernel_str_to_other:n #1 { \exp_after:wN \__str_to_other_loop:w - \tl_to_str:n {#1} ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \q_mark \q_stop + \tl_to_str:n {#1} ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \s__str_mark \s__str_stop } \group_begin: \tex_lccode:D `\* = `\ % @@ -5255,21 +5579,21 @@ { \group_end: \cs_new:Npn \__str_to_other_loop:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 ~ #7 ~ #8 ~ #9 \q_stop + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 ~ #7 ~ #8 ~ #9 \s__str_stop { \if_meaning:w A #8 \__str_to_other_end:w \fi: \__str_to_other_loop:w - #9 #1 * #2 * #3 * #4 * #5 * #6 * #7 * #8 * \q_stop + #9 #1 * #2 * #3 * #4 * #5 * #6 * #7 * #8 * \s__str_stop } - \cs_new:Npn \__str_to_other_end:w \fi: #1 \q_mark #2 * A #3 \q_stop + \cs_new:Npn \__str_to_other_end:w \fi: #1 \s__str_mark #2 * A #3 \s__str_stop { \fi: #2 } } \cs_new:Npn \__kernel_str_to_other_fast:n #1 { \exp_after:wN \__str_to_other_fast_loop:w \tl_to_str:n {#1} ~ - A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \q_stop + A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \s__str_stop } \group_begin: \tex_lccode:D `\* = `\ % @@ -5286,7 +5610,7 @@ #1 * #2 * #3 * #4 * #5 * #6 * #7 * #8 * #9 \__str_to_other_fast_loop:w * } - \cs_new:Npn \__str_to_other_fast_end:w #1 * A #2 \q_stop {#1} + \cs_new:Npn \__str_to_other_fast_end:w #1 * A #2 \s__str_stop {#1} } \cs_new:Npn \str_item:Nn { \exp_args:No \str_item:nn } \cs_generate_variant:Nn \str_item:Nn { c } @@ -5305,25 +5629,25 @@ \exp_after:wN \__str_item:w \int_value:w \int_eval:n {#2} \exp_after:wN ; \int_value:w \__str_count:n {#1} ; - #1 \q_stop + #1 \s__str_stop } \cs_new:Npn \__str_item:w #1; #2; { \int_compare:nNnTF {#1} < 0 { \int_compare:nNnTF {#1} < {-#2} - { \use_none_delimit_by_q_stop:w } + { \__str_use_none_delimit_by_s_stop:w } { - \exp_after:wN \use_i_delimit_by_q_stop:nw + \exp_after:wN \__str_use_i_delimit_by_s_stop:nw \exp:w \exp_after:wN \__str_skip_exp_end:w \int_value:w \int_eval:n { #1 + #2 } ; } } { \int_compare:nNnTF {#1} > {#2} - { \use_none_delimit_by_q_stop:w } + { \__str_use_none_delimit_by_s_stop:w } { - \exp_after:wN \use_i_delimit_by_q_stop:nw + \exp_after:wN \__str_use_i_delimit_by_s_stop:nw \exp:w \__str_skip_exp_end:w #1 ; { } } } @@ -5367,7 +5691,7 @@ \int_value:w \__str_count:n {#1} \exp_after:wN ; \int_value:w \int_eval:n { (#2) - 1 } \exp_after:wN ; \int_value:w \int_eval:n {#3} ; - #1 \q_stop + #1 \s__str_stop } \cs_new:Npn \__str_range:w #1; #2; #3; { @@ -5424,7 +5748,7 @@ #1 \else: 0 \fi: \exp_stop_f: \or: \or: \or: \or: \or: \or: \fi: } -\cs_new:Npn \__str_collect_end:nnnnnnnnw #1#2#3#4#5#6#7#8 #9 \q_stop +\cs_new:Npn \__str_collect_end:nnnnnnnnw #1#2#3#4#5#6#7#8 #9 \s__str_stop { #1#2#3#4#5#6#7#8 } \cs_new:Npn \str_count_spaces:N { \exp_args:No \str_count_spaces:n } @@ -5436,13 +5760,13 @@ \exp_after:wN \__str_count_spaces_loop:w \tl_to_str:n {#1} ~ X 7 ~ X 6 ~ X 5 ~ X 4 ~ X 3 ~ X 2 ~ X 1 ~ X 0 ~ X -1 ~ - \q_stop + \s__str_stop } } \cs_new:Npn \__str_count_spaces_loop:w #1~#2~#3~#4~#5~#6~#7~#8~#9~ { \if_meaning:w X #9 - \use_i_delimit_by_q_stop:nw + \__str_use_i_delimit_by_s_stop:nw \fi: 9 + \__str_count_spaces_loop:w } @@ -5474,13 +5798,13 @@ { X 8 } { X 7 } { X 6 } { X 5 } { X 4 } { X 3 } { X 2 } { X 1 } { X 0 } - \q_stop + \s__str_stop } } \cs_new:Npn \__str_count_loop:NNNNNNNNN #1#2#3#4#5#6#7#8#9 { \if_meaning:w X #9 - \exp_after:wN \use_none_delimit_by_q_stop:w + \exp_after:wN \__str_use_none_delimit_by_s_stop:w \fi: 9 + \__str_count_loop:NNNNNNNNN } @@ -5490,14 +5814,14 @@ { \exp_after:wN \__str_head:w \tl_to_str:n {#1} - { { } } ~ \q_stop + { { } } ~ \s__str_stop } \cs_new:Npn \__str_head:w #1 ~ % - { \use_i_delimit_by_q_stop:nw #1 { ~ } } + { \__str_use_i_delimit_by_s_stop:nw #1 { ~ } } \cs_new:Npn \str_head_ignore_spaces:n #1 { - \exp_after:wN \use_i_delimit_by_q_stop:nw - \tl_to_str:n {#1} { } \q_stop + \exp_after:wN \__str_use_i_delimit_by_s_stop:nw + \tl_to_str:n {#1} { } \s__str_stop } \cs_new:Npn \str_tail:N { \exp_args:No \str_tail:n } \cs_generate_variant:Nn \str_tail:N { c } @@ -5505,15 +5829,15 @@ { \exp_after:wN \__str_tail_auxi:w \reverse_if:N \if_charcode:w - \scan_stop: \tl_to_str:n {#1} X X \q_stop + \scan_stop: \tl_to_str:n {#1} X X \s__str_stop } -\cs_new:Npn \__str_tail_auxi:w #1 X #2 \q_stop { \fi: #1 } +\cs_new:Npn \__str_tail_auxi:w #1 X #2 \s__str_stop { \fi: #1 } \cs_new:Npn \str_tail_ignore_spaces:n #1 { \exp_after:wN \__str_tail_auxii:w - \tl_to_str:n {#1} \q_mark \q_mark \q_stop + \tl_to_str:n {#1} \s__str_mark \s__str_mark \s__str_stop } -\cs_new:Npn \__str_tail_auxii:w #1 #2 \q_mark #3 \q_stop { #2 } +\cs_new:Npn \__str_tail_auxii:w #1 #2 \s__str_mark #3 \s__str_stop { #2 } \cs_new:Npn \str_foldcase:n #1 { \__str_change_case:nn {#1} { fold } } \cs_new:Npn \str_lowercase:n #1 { \__str_change_case:nn {#1} { lower } } \cs_new:Npn \str_uppercase:n #1 { \__str_change_case:nn {#1} { upper } } @@ -5527,7 +5851,7 @@ } \cs_new:Npn \__str_change_case_aux:nn #1#2 { - \__str_change_case_loop:nw {#2} #1 \q_recursion_tail \q_recursion_stop + \__str_change_case_loop:nw {#2} #1 \q__str_recursion_tail \q__str_recursion_stop \__str_change_case_result:n { } } \cs_new:Npn \__str_change_case_output:nw #1#2 \__str_change_case_result:n #3 @@ -5535,12 +5859,12 @@ \cs_generate_variant:Nn \__str_change_case_output:nw { f } \cs_new:Npn \__str_change_case_end:wn #1 \__str_change_case_result:n #2 { \tl_to_str:n {#2} } -\cs_new:Npn \__str_change_case_loop:nw #1#2 \q_recursion_stop +\cs_new:Npn \__str_change_case_loop:nw #1#2 \q__str_recursion_stop { \tl_if_head_is_space:nTF {#2} { \__str_change_case_space:n } { \__str_change_case_char:nN } - {#1} #2 \q_recursion_stop + {#1} #2 \q__str_recursion_stop } \exp_last_unbraced:NNNNo \cs_new:Npn \__str_change_case_space:n #1 \c_space_tl @@ -5550,7 +5874,7 @@ } \cs_new:Npn \__str_change_case_char:nN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__str_if_recursion_tail_stop_do:Nn #2 { \__str_change_case_end:wn } \__str_change_case_output:fw { \use:c { char_str_ #1 case:N } #2 } @@ -5578,124 +5902,10 @@ \cs_new_eq:NN \str_log:n \tl_log:n \cs_new_eq:NN \str_log:N \tl_log:N \cs_generate_variant:Nn \str_log:N { c } -%% File: l3quark.dtx -\cs_new_protected:Npn \quark_new:N #1 - { - \__kernel_chk_if_free_cs:N #1 - \cs_gset_nopar:Npn #1 {#1} - } -\quark_new:N \q_nil -\quark_new:N \q_mark -\quark_new:N \q_no_value -\quark_new:N \q_stop -\quark_new:N \q_recursion_tail -\quark_new:N \q_recursion_stop -\cs_new:Npn \quark_if_recursion_tail_stop:N #1 - { - \if_meaning:w \q_recursion_tail #1 - \exp_after:wN \use_none_delimit_by_q_recursion_stop:w - \fi: - } -\cs_new:Npn \quark_if_recursion_tail_stop_do:Nn #1 - { - \if_meaning:w \q_recursion_tail #1 - \exp_after:wN \use_i_delimit_by_q_recursion_stop:nw - \else: - \exp_after:wN \use_none:n - \fi: - } -\cs_new:Npn \quark_if_recursion_tail_stop:n #1 - { - \tl_if_empty:oTF - { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } - { \use_none_delimit_by_q_recursion_stop:w } - { } - } -\cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1 - { - \tl_if_empty:oTF - { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } - { \use_i_delimit_by_q_recursion_stop:nw } - { \use_none:n } - } -\cs_new:Npn \__quark_if_recursion_tail:w - #1 \q_recursion_tail #2 ? #3 ?! { #1 #2 } -\cs_generate_variant:Nn \quark_if_recursion_tail_stop:n { o } -\cs_generate_variant:Nn \quark_if_recursion_tail_stop_do:nn { o } -\cs_new:Npn \quark_if_recursion_tail_break:NN #1#2 - { - \if_meaning:w \q_recursion_tail #1 - \exp_after:wN #2 - \fi: - } -\cs_new:Npn \quark_if_recursion_tail_break:nN #1#2 - { - \tl_if_empty:oT - { \__quark_if_recursion_tail:w {} #1 {} ?! \q_recursion_tail ??! } - {#2} - } -\prg_new_conditional:Npnn \quark_if_nil:N #1 { p, T , F , TF } - { - \if_meaning:w \q_nil #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\prg_new_conditional:Npnn \quark_if_no_value:N #1 { p, T , F , TF } - { - \if_meaning:w \q_no_value #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\prg_generate_conditional_variant:Nnn \quark_if_no_value:N - { c } { p , T , F , TF } -\prg_new_conditional:Npnn \quark_if_nil:n #1 { p, T , F , TF } - { - \__quark_if_empty_if:o - { \__quark_if_nil:w {} #1 {} ? ! \q_nil ? ? ! } - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\cs_new:Npn \__quark_if_nil:w #1 \q_nil #2 ? #3 ? ! { #1 #2 } -\prg_new_conditional:Npnn \quark_if_no_value:n #1 { p, T , F , TF } - { - \__quark_if_empty_if:o - { \__quark_if_no_value:w {} #1 {} ? ! \q_no_value ? ? ! } - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\cs_new:Npn \__quark_if_no_value:w #1 \q_no_value #2 ? #3 ? ! { #1 #2 } -\prg_generate_conditional_variant:Nnn \quark_if_nil:n - { V , o } { p , TF , T , F } -\cs_new:Npn \__quark_if_empty_if:o #1 - { - \exp_after:wN \if_meaning:w \exp_after:wN \q_nil - \__kernel_tl_to_str:w \exp_after:wN {#1} \q_nil - } -\tl_new:N \g__scan_marks_tl -\cs_new_protected:Npn \scan_new:N #1 - { - \tl_if_in:NnTF \g__scan_marks_tl { #1 } - { - \__kernel_msg_error:nnx { kernel } { scanmark-already-defined } - { \token_to_str:N #1 } - } - { - \tl_gput_right:Nn \g__scan_marks_tl {#1} - \cs_new_eq:NN #1 \scan_stop: - } - } -\scan_new:N \s_stop -\cs_new:Npn \use_none_delimit_by_s_stop:w #1 \s_stop { } %% File: l3seq.dtx \scan_new:N \s__seq +\scan_new:N \s__seq_mark +\scan_new:N \s__seq_stop \cs_new:Npn \__seq_item:n { \__kernel_msg_expandable_error:nn { kernel } { misused-sequence } @@ -6002,10 +6212,10 @@ \tl_set:Nx #2 { \exp_after:wN \__seq_get_left:wnw - #1 \__seq_item:n { \q_no_value } \q_stop + #1 \__seq_item:n { \q_no_value } \s__seq_stop } } -\cs_new:Npn \__seq_get_left:wnw #1 \__seq_item:n #2#3 \q_stop +\cs_new:Npn \__seq_get_left:wnw #1 \__seq_item:n #2#3 \s__seq_stop { \exp_not:n {#2} } \cs_generate_variant:Nn \seq_get_left:NN { c } \cs_new_protected:Npn \seq_pop_left:NN @@ -6013,9 +6223,9 @@ \cs_new_protected:Npn \seq_gpop_left:NN { \__seq_pop:NNNN \__seq_pop_left:NNN \tl_gset:Nn } \cs_new_protected:Npn \__seq_pop_left:NNN #1#2#3 - { \exp_after:wN \__seq_pop_left:wnwNNN #2 \q_stop #1#2#3 } + { \exp_after:wN \__seq_pop_left:wnwNNN #2 \s__seq_stop #1#2#3 } \cs_new_protected:Npn \__seq_pop_left:wnwNNN - #1 \__seq_item:n #2#3 \q_stop #4#5#6 + #1 \__seq_item:n #2#3 \s__seq_stop #4#5#6 { #4 #5 { #1 #3 } \tl_set:Nn #6 {#2} @@ -6096,8 +6306,8 @@ \prg_generate_conditional_variant:Nnn \seq_gpop_right:NN { c } { T , F , TF } \cs_new:Npn \seq_item:Nn #1 - { \exp_after:wN \__seq_item:wNn #1 \q_stop #1 } -\cs_new:Npn \__seq_item:wNn \s__seq #1 \q_stop #2#3 + { \exp_after:wN \__seq_item:wNn #1 \s__seq_stop #1 } +\cs_new:Npn \__seq_item:wNn \s__seq #1 \s__seq_stop #2#3 { \exp_args:Nf \__seq_item:nwn { \exp_args:Nf \__seq_item:nN { \int_eval:n {#3} } #2 } @@ -6236,9 +6446,9 @@ } { \exp_after:wN \__seq_use_setup:w #1 \__seq_item:n - \q_mark { \__seq_use:nwwwwnwn {#3} } - \q_mark { \__seq_use:nwwn {#4} } - \q_stop { } + \s__seq_mark { \__seq_use:nwwwwnwn {#3} } + \s__seq_mark { \__seq_use:nwwn {#4} } + \s__seq_stop { } } } { @@ -6251,12 +6461,12 @@ \cs_new:Npn \__seq_use_setup:w \s__seq { \__seq_use:nwwwwnwn { } } \cs_new:Npn \__seq_use:nwwwwnwn #1 \__seq_item:n #2 \__seq_item:n #3 \__seq_item:n #4#5 - \q_mark #6#7 \q_stop #8 + \s__seq_mark #6#7 \s__seq_stop #8 { #6 \__seq_item:n {#3} \__seq_item:n {#4} #5 - \q_mark {#6} #7 \q_stop { #8 #1 #2 } + \s__seq_mark {#6} #7 \s__seq_stop { #8 #1 #2 } } -\cs_new:Npn \__seq_use:nwwn #1 \__seq_item:n #2 #3 \q_stop #4 +\cs_new:Npn \__seq_use:nwwn #1 \__seq_item:n #2 #3 \s__seq_stop #4 { \exp_not:n { #4 #1 #2 } } \cs_new:Npn \seq_use:Nn #1#2 { \seq_use:Nnnn #1 {#2} {#2} {#2} } @@ -6317,6 +6527,13 @@ \cs_new_eq:NN \__int_eval_end: \tex_relax:D \cs_new_eq:NN \if_int_odd:w \tex_ifodd:D \cs_new_eq:NN \if_case:w \tex_ifcase:D +\scan_new:N \s__int_mark +\scan_new:N \s__int_stop +\cs_new:Npn \__int_use_none_delimit_by_s_stop:w #1 \s__int_stop { } +\quark_new:N \q__int_recursion_tail +\quark_new:N \q__int_recursion_stop +\__kernel_quark_new_test:N \__int_if_recursion_tail_stop_do:Nn +\__kernel_quark_new_test:N \__int_if_recursion_tail_stop:N \cs_new:Npn \int_eval:n #1 { \int_value:w \__int_eval:w #1 \__int_eval_end: } \cs_new:Npn \int_eval:w { \int_value:w \__int_eval:w } @@ -6501,7 +6718,7 @@ \__int_compare_error: } \cs_new:Npn \__int_compare_error:Nw - #1#2 \q_stop + #1#2 \s__int_stop { { } \c_zero_int \fi: @@ -6517,15 +6734,15 @@ \cs_new:Npn \__int_compare:w #1 \__int_compare_error: { \exp_after:wN \if_false: \int_value:w - \__int_compare:Nw #1 e { = nd_ } \q_stop + \__int_compare:Nw #1 e { = nd_ } \s__int_stop } -\cs_new:Npn \__int_compare:Nw #1#2 \q_stop +\cs_new:Npn \__int_compare:Nw #1#2 \s__int_stop { \exp_after:wN \__int_compare:NNw - \__int_to_roman:w - 0 #2 \q_mark - #1#2 \q_stop + \__int_to_roman:w - 0 #2 \s__int_mark + #1#2 \s__int_stop } -\cs_new:Npn \__int_compare:NNw #1#2#3 \q_mark +\cs_new:Npn \__int_compare:NNw #1#2#3 \s__int_mark { \__kernel_exp_not:w \use:c @@ -6536,7 +6753,7 @@ } \__int_compare_error:Nw #1 } -\cs_new:cpn { __int_compare_end_=:NNw } #1#2#3 e #4 \q_stop +\cs_new:cpn { __int_compare_end_=:NNw } #1#2#3 e #4 \s__int_stop { {#3} \exp_stop_f: \prg_return_false: \else: \prg_return_true: \fi: @@ -6544,7 +6761,7 @@ \cs_new:Npn \__int_compare:nnN #1#2#3 { {#2} \exp_stop_f: - \prg_return_false: \exp_after:wN \use_none_delimit_by_q_stop:w + \prg_return_false: \exp_after:wN \__int_use_none_delimit_by_s_stop:w \fi: #1 #2 #3 \exp_after:wN \__int_compare:Nw \int_value:w \__int_eval:w } @@ -6591,14 +6808,14 @@ \exp_args:Nf \__int_case:nnTF { \int_eval:n {#1} } {#2} { } { } } \cs_new:Npn \__int_case:nnTF #1#2#3#4 - { \__int_case:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } + { \__int_case:nw {#1} #2 {#1} { } \s__int_mark {#3} \s__int_mark {#4} \s__int_stop } \cs_new:Npn \__int_case:nw #1#2#3 { \int_compare:nNnTF {#1} = {#2} { \__int_case_end:nw {#3} } { \__int_case:nw {#1} } } -\cs_new:Npn \__int_case_end:nw #1#2#3 \q_mark #4#5 \q_stop +\cs_new:Npn \__int_case_end:nw #1#2#3 \s__int_mark #4#5 \s__int_stop { \exp_end: #1 #4 } \prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF} { @@ -7002,19 +7219,19 @@ \exp_after:wN #1 \fi: } -\cs_new:Npn \__int_pass_signs_end:wn #1 \q_stop #2 { #2 #1 } +\cs_new:Npn \__int_pass_signs_end:wn #1 \s__int_stop #2 { #2 #1 } \cs_new:Npn \int_from_alph:n #1 { \int_eval:n { \exp_after:wN \__int_pass_signs:wn \tl_to_str:n {#1} - \q_stop { \__int_from_alph:nN { 0 } } - \q_recursion_tail \q_recursion_stop + \s__int_stop { \__int_from_alph:nN { 0 } } + \q__int_recursion_tail \q__int_recursion_stop } } \cs_new:Npn \__int_from_alph:nN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 {#1} + \__int_if_recursion_tail_stop_do:Nn #2 {#1} \exp_args:Nf \__int_from_alph:nN { \int_eval:n { #1 * 26 + \__int_from_alph:N #2 } } } @@ -7025,13 +7242,13 @@ \int_eval:n { \exp_after:wN \__int_pass_signs:wn \tl_to_str:n {#1} - \q_stop { \__int_from_base:nnN { 0 } {#2} } - \q_recursion_tail \q_recursion_stop + \s__int_stop { \__int_from_base:nnN { 0 } {#2} } + \q__int_recursion_tail \q__int_recursion_stop } } \cs_new:Npn \__int_from_base:nnN #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #3 {#1} + \__int_if_recursion_tail_stop_do:Nn #3 {#1} \exp_args:Nf \__int_from_base:nnN { \int_eval:n { #1 * #2 + \__int_from_base:N #3 } } {#2} @@ -7069,16 +7286,16 @@ ( 0 \exp_after:wN \__int_from_roman:NN \tl_to_str:n {#1} - \q_recursion_tail \q_recursion_tail \q_recursion_stop + \q__int_recursion_tail \q__int_recursion_tail \q__int_recursion_stop ) } } \cs_new:Npn \__int_from_roman:NN #1#2 { - \quark_if_recursion_tail_stop:N #1 + \__int_if_recursion_tail_stop:N #1 \int_if_exist:cF { c__int_from_roman_ #1 _int } { \__int_from_roman_error:w } - \quark_if_recursion_tail_stop_do:Nn #2 + \__int_if_recursion_tail_stop_do:Nn #2 { + \use:c { c__int_from_roman_ #1 _int } } \int_if_exist:cF { c__int_from_roman_ #2 _int } { \__int_from_roman_error:w } @@ -7096,7 +7313,7 @@ \__int_from_roman:NN #2 } } -\cs_new:Npn \__int_from_roman_error:w #1 \q_recursion_stop #2 +\cs_new:Npn \__int_from_roman_error:w #1 \q__int_recursion_stop #2 { #2 * 0 - 1 } \cs_new_eq:NN \int_show:N \__kernel_register_show:N \cs_generate_variant:Nn \int_show:N { c } @@ -7184,7 +7401,6 @@ \int_value:w \flag_height:n {#1} ; } %% File: l3prg.dtx -\cs_new_eq:NN \if_bool:N \tex_ifodd:D \cs_new_eq:NN \if_predicate:w \tex_ifodd:D \cs_new_protected:Npn \bool_new:N #1 { \cs_new_eq:NN #1 \c_false_bool } \cs_generate_variant:Nn \bool_new:N { c } @@ -7222,6 +7438,11 @@ } \cs_generate_variant:Nn \bool_set:Nn { c } \cs_generate_variant:Nn \bool_gset:Nn { c } +\quark_new:N \q__bool_recursion_tail +\quark_new:N \q__bool_recursion_stop +\cs_new:Npn \__bool_use_i_delimit_by_q_recursion_stop:nw + #1 #2 \q__bool_recursion_stop {#1} +\__kernel_quark_new_test:N \__bool_if_recursion_tail_stop_do:nn \prg_new_conditional:Npnn \bool_if:N #1 { p , T , F , TF } { \if_bool:N #1 @@ -7313,7 +7534,7 @@ \cs_new:cpn { __bool_|_1: } | { \__bool_get_next:NN \use_iii:nnnn } \cs_new:cpn { __bool_|_2: } | { \__bool_get_next:NN \use_iii:nnnn } \cs_new:Npn \bool_lazy_all_p:n #1 - { \__bool_lazy_all:n #1 \q_recursion_tail \q_recursion_stop } + { \__bool_lazy_all:n #1 \q__bool_recursion_tail \q__bool_recursion_stop } \prg_new_conditional:Npnn \bool_lazy_all:n #1 { T , F , TF } { \if_predicate:w \bool_lazy_all_p:n {#1} @@ -7324,9 +7545,9 @@ } \cs_new:Npn \__bool_lazy_all:n #1 { - \quark_if_recursion_tail_stop_do:nn {#1} { \c_true_bool } + \__bool_if_recursion_tail_stop_do:nn {#1} { \c_true_bool } \bool_if:nF {#1} - { \use_i_delimit_by_q_recursion_stop:nw { \c_false_bool } } + { \__bool_use_i_delimit_by_q_recursion_stop:nw { \c_false_bool } } \__bool_lazy_all:n } \prg_new_conditional:Npnn \bool_lazy_and:nn #1#2 { p , T , F , TF } @@ -7339,7 +7560,7 @@ \fi: } \cs_new:Npn \bool_lazy_any_p:n #1 - { \__bool_lazy_any:n #1 \q_recursion_tail \q_recursion_stop } + { \__bool_lazy_any:n #1 \q__bool_recursion_tail \q__bool_recursion_stop } \prg_new_conditional:Npnn \bool_lazy_any:n #1 { T , F , TF } { \if_predicate:w \bool_lazy_any_p:n {#1} @@ -7350,9 +7571,9 @@ } \cs_new:Npn \__bool_lazy_any:n #1 { - \quark_if_recursion_tail_stop_do:nn {#1} { \c_false_bool } + \__bool_if_recursion_tail_stop_do:nn {#1} { \c_false_bool } \bool_if:nT {#1} - { \use_i_delimit_by_q_recursion_stop:nw { \c_true_bool } } + { \__bool_use_i_delimit_by_q_recursion_stop:nw { \c_true_bool } } \__bool_lazy_any:n } \prg_new_conditional:Npnn \bool_lazy_or:nn #1#2 { p , T , F , TF } @@ -7810,6 +8031,14 @@ %% File: l3clist.dtx \cs_new_eq:NN \c_empty_clist \c_empty_tl \tl_new:N \l__clist_internal_clist +\scan_new:N \s__clist_mark +\scan_new:N \s__clist_stop +\cs_new:Npn \__clist_use_none_delimit_by_s_stop:w #1 \s__clist_stop { } +\cs_new:Npn \__clist_use_i_delimit_by_s_stop:nw #1 #2 \s__clist_stop {#1} +\quark_new:N \q__clist_recursion_tail +\quark_new:N \q__clist_recursion_stop +\__kernel_quark_new_test:N \__clist_if_recursion_tail_break:nN +\__kernel_quark_new_test:N \__clist_if_recursion_tail_stop:n \cs_new_protected:Npn \__clist_tmp:w { } \cs_new:Npn \__clist_trim_next:w #1 , { @@ -7821,11 +8050,11 @@ { \exp_after:wN \__clist_sanitize:Nn \exp_after:wN \c_empty_tl \exp:w \__clist_trim_next:w \prg_do_nothing: - #1 , \q_recursion_tail , \q_recursion_stop + #1 , \q__clist_recursion_tail , \q__clist_recursion_stop } \cs_new:Npn \__clist_sanitize:Nn #1#2 { - \quark_if_recursion_tail_stop:n {#2} + \__clist_if_recursion_tail_stop:n {#2} #1 \__clist_wrap_item:w #2 , \exp_after:wN \__clist_sanitize:Nn \exp_after:wN , \exp:w \__clist_trim_next:w \prg_do_nothing: @@ -7835,7 +8064,8 @@ \tl_if_empty:oTF { \__clist_if_wrap:w - \q_mark ? #1 ~ \q_mark ? ~ #1 \q_mark , ~ \q_mark #1 , + \s__clist_mark ? #1 ~ \s__clist_mark ? ~ #1 + \s__clist_mark , ~ \s__clist_mark #1 , } { \tl_if_head_is_group:nTF { #1 { } } @@ -7852,7 +8082,7 @@ } { \prg_return_true: } } -\cs_new:Npn \__clist_if_wrap:w #1 \q_mark ? ~ #2 ~ \q_mark #3 , { } +\cs_new:Npn \__clist_if_wrap:w #1 \s__clist_mark ? ~ #2 ~ \s__clist_mark #3 , { } \cs_new:Npn \__clist_wrap_item:w #1 , { \__clist_if_wrap:nTF {#1} { \exp_not:n { {#1} } } { \exp_not:n {#1} } } \cs_new_eq:NN \clist_new:N \tl_new:N @@ -7959,10 +8189,10 @@ \if_meaning:w #1 \c_empty_clist \tl_set:Nn #2 { \q_no_value } \else: - \exp_after:wN \__clist_get:wN #1 , \q_stop #2 + \exp_after:wN \__clist_get:wN #1 , \s__clist_stop #2 \fi: } -\cs_new_protected:Npn \__clist_get:wN #1 , #2 \q_stop #3 +\cs_new_protected:Npn \__clist_get:wN #1 , #2 \s__clist_stop #3 { \tl_set:Nn #3 {#1} } \cs_generate_variant:Nn \clist_get:NN { c } \cs_new_protected:Npn \clist_pop:NN @@ -7974,21 +8204,21 @@ \if_meaning:w #2 \c_empty_clist \tl_set:Nn #3 { \q_no_value } \else: - \exp_after:wN \__clist_pop:wwNNN #2 , \q_mark \q_stop #1#2#3 + \exp_after:wN \__clist_pop:wwNNN #2 , \s__clist_mark \s__clist_stop #1#2#3 \fi: } -\cs_new_protected:Npn \__clist_pop:wwNNN #1 , #2 \q_stop #3#4#5 +\cs_new_protected:Npn \__clist_pop:wwNNN #1 , #2 \s__clist_stop #3#4#5 { \tl_set:Nn #5 {#1} #3 #4 { \__clist_pop:wN \prg_do_nothing: #2 \exp_not:o - , \q_mark \use_none:n - \q_stop + , \s__clist_mark \use_none:n + \s__clist_stop } } -\cs_new:Npn \__clist_pop:wN #1 , \q_mark #2 #3 \q_stop { #2 {#1} } +\cs_new:Npn \__clist_pop:wN #1 , \s__clist_mark #2 #3 \s__clist_stop { #2 {#1} } \cs_generate_variant:Nn \clist_pop:NN { c } \cs_generate_variant:Nn \clist_gpop:NN { c } \prg_new_protected_conditional:Npnn \clist_get:NN #1#2 { T , F , TF } @@ -7996,7 +8226,7 @@ \if_meaning:w #1 \c_empty_clist \prg_return_false: \else: - \exp_after:wN \__clist_get:wN #1 , \q_stop #2 + \exp_after:wN \__clist_get:wN #1 , \s__clist_stop #2 \prg_return_true: \fi: } @@ -8010,7 +8240,7 @@ \if_meaning:w #2 \c_empty_clist \prg_return_false: \else: - \exp_after:wN \__clist_pop:wwNNN #2 , \q_mark \q_stop #1#2#3 + \exp_after:wN \__clist_pop:wwNNN #2 , \s__clist_mark \s__clist_stop #1#2#3 \prg_return_true: \fi: } @@ -8066,13 +8296,13 @@ \cs_set:Npn \__clist_tmp:w ##1 , #4 , { ##1 - , \q_mark , \use_none_delimit_by_q_stop:w , + , \s__clist_mark , \__clist_use_none_delimit_by_s_stop:w , \__clist_remove_all: } #2 #3 { \exp_after:wN \__clist_remove_all: - #3 , \q_mark , #4 , \q_stop + #3 , \s__clist_mark , #4 , \s__clist_stop } \clist_if_empty:NF #3 { @@ -8086,7 +8316,7 @@ } \cs_new:Npn \__clist_remove_all: { \exp_after:wN \__clist_remove_all:w \__clist_tmp:w , } -\cs_new:Npn \__clist_remove_all:w #1 , \q_mark , #2 , { \exp_not:n {#1} } +\cs_new:Npn \__clist_remove_all:w #1 , \s__clist_mark , #2 , { \exp_not:n {#1} } \cs_generate_variant:Nn \clist_remove_all:Nn { c } \cs_generate_variant:Nn \clist_gremove_all:Nn { c } \cs_new_protected:Npn \clist_reverse:N #1 @@ -8098,14 +8328,14 @@ \cs_new:Npn \clist_reverse:n #1 { \__clist_reverse:wwNww ? #1 , - \q_mark \__clist_reverse:wwNww ! , - \q_mark \__clist_reverse_end:ww - \q_stop ? \q_mark + \s__clist_mark \__clist_reverse:wwNww ! , + \s__clist_mark \__clist_reverse_end:ww + \s__clist_stop ? \s__clist_mark } \cs_new:Npn \__clist_reverse:wwNww - #1 , #2 \q_mark #3 #4 \q_stop ? #5 \q_mark - { #3 ? #2 \q_mark #3 #4 \q_stop #1 , #5 \q_mark } -\cs_new:Npn \__clist_reverse_end:ww #1 ! #2 , \q_mark + #1 , #2 \s__clist_mark #3 #4 \s__clist_stop ? #5 \s__clist_mark + { #3 ? #2 \s__clist_mark #3 #4 \s__clist_stop #1 , #5 \s__clist_mark } +\cs_new:Npn \__clist_reverse_end:ww #1 ! #2 , \s__clist_mark { \exp_not:o { \use_none:n #2 } } \prg_new_eq_conditional:NNn \clist_if_empty:N \tl_if_empty:N { p , T , F , TF } @@ -8114,9 +8344,9 @@ \prg_new_conditional:Npnn \clist_if_empty:n #1 { p , T , F , TF } { \__clist_if_empty_n:w ? #1 - , \q_mark \prg_return_false: - , \q_mark \prg_return_true: - \q_stop + , \s__clist_mark \prg_return_false: + , \s__clist_mark \prg_return_true: + \s__clist_stop } \cs_new:Npn \__clist_if_empty_n:w #1 , { @@ -8124,7 +8354,7 @@ { \__clist_if_empty_n:w ? } { \__clist_if_empty_n:wNw } } -\cs_new:Npn \__clist_if_empty_n:wNw #1 \q_mark #2#3 \q_stop {#2} +\cs_new:Npn \__clist_if_empty_n:wNw #1 \s__clist_mark #2#3 \s__clist_stop {#2} \prg_new_protected_conditional:Npnn \clist_if_in:Nn #1#2 { T , F , TF } { \exp_args:No \__clist_if_in_return:nnN #1 {#2} #1 @@ -8167,13 +8397,13 @@ \clist_if_empty:NF #1 { \exp_last_unbraced:NNo \__clist_map_function:Nw #2 #1 - , \q_recursion_tail , + , \q__clist_recursion_tail , \prg_break_point:Nn \clist_map_break: { } } } \cs_new:Npn \__clist_map_function:Nw #1#2 , { - \quark_if_recursion_tail_break:nN {#2} \clist_map_break: + \__clist_if_recursion_tail_break:nN {#2} \clist_map_break: #1 {#2} \__clist_map_function:Nw #1 } @@ -8181,12 +8411,12 @@ \cs_new:Npn \clist_map_function:nN #1#2 { \exp_after:wN \__clist_map_function_n:Nn \exp_after:wN #2 - \exp:w \__clist_trim_next:w \prg_do_nothing: #1 , \q_recursion_tail , + \exp:w \__clist_trim_next:w \prg_do_nothing: #1 , \q__clist_recursion_tail , \prg_break_point:Nn \clist_map_break: { } } \cs_new:Npn \__clist_map_function_n:Nn #1 #2 { - \quark_if_recursion_tail_break:nN {#2} \clist_map_break: + \__clist_if_recursion_tail_break:nN {#2} \clist_map_break: \__clist_map_unbrace:Nw #1 #2, \exp_after:wN \__clist_map_function_n:Nn \exp_after:wN #1 \exp:w \__clist_trim_next:w \prg_do_nothing: @@ -8201,7 +8431,7 @@ { __clist_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2} \exp_last_unbraced:Nco \__clist_map_function:Nw { __clist_map_ \int_use:N \g__kernel_prg_map_int :w } - #1 , \q_recursion_tail , + #1 , \q__clist_recursion_tail , \prg_break_point:Nn \clist_map_break: { \int_gdecr:N \g__kernel_prg_map_int } } @@ -8219,7 +8449,7 @@ \exp_args:Nno \use:nn { \__clist_map_variable:Nnw #2 {#3} } #1 - , \q_recursion_tail , \q_recursion_stop + , \q__clist_recursion_tail , \q__clist_recursion_stop \prg_break_point:Nn \clist_map_break: { } } } @@ -8230,7 +8460,7 @@ } \cs_new_protected:Npn \__clist_map_variable:Nnw #1#2#3, { - \quark_if_recursion_tail_stop:n {#3} + \__clist_if_recursion_tail_stop:n {#3} \tl_set:Nn #1 {#3} \use:n {#2} \__clist_map_variable:Nnw #1 {#2} @@ -8255,13 +8485,13 @@ { 0 \exp_not:N \__clist_count:w \c_space_tl - #1 \exp_not:n { , \q_recursion_tail , \q_recursion_stop } + #1 \exp_not:n { , \q__clist_recursion_tail , \q__clist_recursion_stop } } } \cs_new:Npn \__clist_count:n #1 { + 1 } \cs_new:Npx \__clist_count:w #1 , { - \exp_not:n { \exp_args:Nf \quark_if_recursion_tail_stop:n } {#1} + \exp_not:n { \exp_args:Nf \__clist_if_recursion_tail_stop:n } {#1} \exp_not:N \tl_if_blank:nF {#1} { + 1 } \exp_not:N \__clist_count:w \c_space_tl } @@ -8278,9 +8508,9 @@ { \exp_after:wN \__clist_use:nwwwwnwn \exp_after:wN { \exp_after:wN } #1 , - \q_mark , { \__clist_use:nwwwwnwn {#3} } - \q_mark , { \__clist_use:nwwn {#4} } - \q_stop { } + \s__clist_mark , { \__clist_use:nwwwwnwn {#3} } + \s__clist_mark , { \__clist_use:nwwn {#4} } + \s__clist_stop { } } } { @@ -8291,9 +8521,9 @@ \cs_generate_variant:Nn \clist_use:Nnnn { c } \cs_new:Npn \__clist_use:wwn #1 , #2 , #3 { \exp_not:n { #1 #3 #2 } } \cs_new:Npn \__clist_use:nwwwwnwn - #1#2 , #3 , #4 , #5 \q_mark , #6#7 \q_stop #8 - { #6 {#3} , {#4} , #5 \q_mark , {#6} #7 \q_stop { #8 #1 #2 } } -\cs_new:Npn \__clist_use:nwwn #1#2 , #3 \q_stop #4 + #1#2 , #3 , #4 , #5 \s__clist_mark , #6#7 \s__clist_stop #8 + { #6 {#3} , {#4} , #5 \s__clist_mark , {#6} #7 \s__clist_stop { #8 #1 #2 } } +\cs_new:Npn \__clist_use:nwwn #1#2 , #3 \s__clist_stop #4 { \exp_not:n { #4 #1 #2 } } \cs_new:Npn \clist_use:Nn #1#2 { \clist_use:Nnnn #1 {#2} {#2} {#2} } @@ -8311,21 +8541,21 @@ \int_compare:nNnTF {#2} < 0 { \int_compare:nNnTF {#2} < { - #1 } - { \use_none_delimit_by_q_stop:w } + { \__clist_use_none_delimit_by_s_stop:w } { \exp_args:Nf #4 { \int_eval:n { #2 + 1 + #1 } } } } { \int_compare:nNnTF {#2} > {#1} - { \use_none_delimit_by_q_stop:w } + { \__clist_use_none_delimit_by_s_stop:w } { #4 {#2} } } - { } , #3 , \q_stop + { } , #3 , \s__clist_stop } \cs_generate_variant:Nn \__clist_item:nnnN { ffo, ff } \cs_new:Npn \__clist_item_N_loop:nw #1 #2, { \int_compare:nNnTF {#1} = 0 - { \use_i_delimit_by_q_stop:nw { \exp_not:n {#2} } } + { \__clist_use_i_delimit_by_s_stop:nw { \exp_not:n {#2} } } { \exp_args:Nf \__clist_item_N_loop:nw { \int_eval:n { #1 - 1 } } } } \cs_generate_variant:Nn \clist_item:Nn { c } @@ -8353,7 +8583,7 @@ } } } -\cs_new:Npn \__clist_item_n_end:n #1 #2 \q_stop +\cs_new:Npn \__clist_item_n_end:n #1 #2 \s__clist_stop { \tl_trim_spaces_apply:nN {#1} \__clist_item_n_strip:n } \cs_new:Npn \__clist_item_n_strip:n #1 { \__clist_item_n_strip:w #1 , } \cs_new:Npn \__clist_item_n_strip:w #1 , { \exp_not:n {#1} } @@ -8396,6 +8626,9 @@ \clist_new:N \g_tmpa_clist \clist_new:N \g_tmpb_clist %% File: l3token.dtx +\scan_new:N \s__char_stop +\quark_new:N \q__char_no_value +\__kernel_quark_new_conditional:Nn \__char_quark_if_no_value:N { TF } \cs_new_protected:Npn \char_set_catcode:nn #1#2 { \tex_catcode:D \int_eval:n {#1} = \int_eval:n {#2} \exp_stop_f: } \cs_new:Npn \char_value_catcode:n #1 @@ -8735,12 +8968,12 @@ \exp_after:wN \exp_after:wN \exp_after:wN \__char_to_nfd:Nw \exp_after:wN \exp_after:wN \exp_after:wN #1 \cs:w c__char_nfd_ \token_to_str:N #1 _ tl \cs_end: - \q_stop + \s__char_stop } { \exp_not:n {#1} } } \cs_set_eq:NN \__char_to_nfd:n \char_to_nfd:N -\cs_new:Npn \__char_to_nfd:Nw #1#2#3 \q_stop +\cs_new:Npn \__char_to_nfd:Nw #1#2#3 \s__char_stop { \exp_args:Ne \__char_to_nfd:n { \char_generate:nn { `#2 } { \__char_change_case_catcode:N #1 } } @@ -8781,13 +9014,13 @@ { \char_generate:nn {#1} { \__char_change_case_catcode:N #2 } } } \cs_new:Npn \__char_change_case_multi:nN #1#2 - { \__char_change_case_multi:NNNNw #2 #1 \q_no_value \q_no_value \q_stop } + { \__char_change_case_multi:NNNNw #2 #1 \q__char_no_value \q__char_no_value \s__char_stop } \cs_generate_variant:Nn \__char_change_case_multi:nN { v } -\cs_new:Npn \__char_change_case_multi:NNNNw #1#2#3#4#5 \q_stop +\cs_new:Npn \__char_change_case_multi:NNNNw #1#2#3#4#5 \s__char_stop { - \quark_if_no_value:NTF #4 + \__char_quark_if_no_value:NTF #4 { - \quark_if_no_value:NTF #3 + \__char_quark_if_no_value:NTF #3 { \__char_change_case:NN #1 #2 } { \__char_change_case:NNN #1 #2#3 } } @@ -8872,6 +9105,7 @@ { \tl_to_str:n {#2} } } \tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } +\scan_new:N \s__token_stop \group_begin: \__kernel_chk_if_free_cs:N \c_group_begin_token \tex_global:D \tex_let:D \c_group_begin_token { @@ -8975,10 +9209,10 @@ { \exp_not:N \exp_after:wN \exp_not:N \__token_if_macro_p:w \exp_not:N \token_to_meaning:N ##1 \tl_to_str:n { ma : } - \exp_not:N \q_stop + \s__token_stop } \cs_new:Npn \exp_not:N \__token_if_macro_p:w - ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop + ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \s__token_stop } { \str_if_eq:nnTF { #2 } { cro } @@ -9008,7 +9242,7 @@ \use:x { \cs_new:Npn \exp_not:c { __token_delimit_by_ #1 :w } - ####1 \tl_to_str:n {#1} ####2 \exp_not:N \q_stop + ####1 \tl_to_str:n {#1} ####2 \s__token_stop { ####1 \tl_to_str:n {#1} } } } @@ -9042,7 +9276,7 @@ \exp_not:N \exp_after:wN \exp_not:c { __token_delimit_by_ #2 :w } \exp_not:N \token_to_meaning:N ####1 - ? \tl_to_str:n {#2} \exp_not:N \q_stop + ? \tl_to_str:n {#2} \s__token_stop } { \exp_not:n {#3} } { \exp_not:N \prg_return_true: } @@ -9079,17 +9313,17 @@ { \exp_not:N \exp_after:wN \exp_not:N \__token_if_primitive:NNw \exp_not:N \token_to_meaning:N ##1 - \tl_to_str:n { : : : } \exp_not:N \q_stop ##1 + \tl_to_str:n { : : : } \s__token_stop ##1 } } \cs_new:Npn \exp_not:N \__token_if_primitive:NNw - ##1##2 ##3 \c_colon_str ##4 \exp_not:N \q_stop + ##1##2 ##3 \c_colon_str ##4 \s__token_stop { \exp_not:N \tl_if_empty:oTF { \exp_not:N \__token_if_primitive_space:w ##3 ~ } { \exp_not:N \__token_if_primitive_loop:N ##3 - \c_colon_str \exp_not:N \q_stop + \c_colon_str \s__token_stop } { \exp_not:N \__token_if_primitive_nullfont:N } } @@ -9112,7 +9346,7 @@ \exp_after:wN \__token_if_primitive_loop:N \fi: } -\cs_new:Npn \__token_if_primitive:Nw #1 #2 \q_stop +\cs_new:Npn \__token_if_primitive:Nw #1 #2 \s__token_stop { \if:w : #1 \exp_after:wN \__token_if_primitive_undefined:N @@ -9137,6 +9371,9 @@ \cs_new:Npn \__peek_true_aux:w { } \cs_new:Npn \__peek_false:w { } \cs_new:Npn \__peek_tmp:w { } +\scan_new:N \s__peek_mark +\scan_new:N \s__peek_stop +\cs_new:Npn \__peek_use_none_delimit_by_s_stop:w #1 \s__peek_stop { } \cs_new_protected:Npn \peek_after:Nw { \tex_futurelet:D \l_peek_token } \cs_new_protected:Npn \peek_gafter:Nw @@ -9271,7 +9508,7 @@ } } \group_begin: - \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop + \cs_set_protected:Npn \__peek_tmp:w #1 \s__peek_stop { \cs_new_protected:Npn \__peek_execute_branches_N_type: { @@ -9282,18 +9519,18 @@ 1 \exp_stop_f: \exp_after:wN \__peek_N_type:w \token_to_meaning:N \l_peek_token - \q_mark \__peek_N_type_aux:nnw - #1 \q_mark \use_none_delimit_by_q_stop:w - \q_stop + \s__peek_mark \__peek_N_type_aux:nnw + #1 \s__peek_mark \__peek_use_none_delimit_by_s_stop:w + \s__peek_stop \exp_after:wN \__peek_true:w \else: \exp_after:wN \__peek_false:w \fi: } - \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \q_mark ##3 + \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \s__peek_mark ##3 { ##3 {##1} {##2} } } - \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \q_stop + \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \s__peek_stop \group_end: \cs_new_protected:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi: { @@ -9317,6 +9554,12 @@ { \__kernel_msg_expandable_error:nn { kernel } { misused-prop } } \tl_new:N \l__prop_internal_tl \tl_const:Nn \c_empty_prop { \s__prop } +\scan_new:N \s__prop_mark +\scan_new:N \s__prop_stop +\quark_new:N \q__prop_recursion_tail +\quark_new:N \q__prop_recursion_stop +\__kernel_quark_new_test:N \__prop_if_recursion_tail_stop:n +\cs_generate_variant:Nn \__prop_if_recursion_tail_stop:n { o } \cs_new_protected:Npn \prop_new:N #1 { \__kernel_chk_if_free_cs:N #1 @@ -9375,27 +9618,27 @@ \cs_new_protected:Npn \__prop_from_keyval:n #1 { \__prop_from_keyval_loop:w \prg_do_nothing: #1 , - \q_recursion_tail , \q_recursion_stop + \q__prop_recursion_tail , \q__prop_recursion_stop } \cs_new_protected:Npn \__prop_from_keyval_loop:w #1 , { - \quark_if_recursion_tail_stop:o {#1} + \__prop_if_recursion_tail_stop:o {#1} \__prop_from_keyval_split:Nw \__prop_from_keyval_key:n - #1 = = \q_stop {#1} + #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 \q_nil } -\cs_new_protected:Npn \__prop_from_keyval_key:w #1 \q_nil #2 \q_stop + { \__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 { \__prop_from_keyval_split:Nw \__prop_from_keyval_value:n - \prg_do_nothing: #2 \q_stop {#1} + \prg_do_nothing: #2 \s__prop_stop {#1} } \cs_new_protected:Npn \__prop_from_keyval_value:n #1 - { \__prop_from_keyval_value:w #1 \q_nil } -\cs_new_protected:Npn \__prop_from_keyval_value:w #1 \q_nil #2 \q_stop #3#4 + { \__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_empty:nF { #3 #1 #2 } { @@ -9412,10 +9655,10 @@ \cs_new_protected:Npn \__prop_split_aux:NnTF #1#2#3#4 { \cs_set:Npn \__prop_split_aux:w ##1 - \__prop_pair:wn #2 \s__prop ##2 ##3 \q_mark ##4 ##5 \q_stop + \__prop_pair:wn #2 \s__prop ##2 ##3 \s__prop_mark ##4 ##5 \s__prop_stop { ##4 {#3} {#4} } - \exp_after:wN \__prop_split_aux:w #1 \q_mark \use_i:nn - \__prop_pair:wn #2 \s__prop { } \q_mark \use_ii:nn \q_stop + \exp_after:wN \__prop_split_aux:w #1 \s__prop_mark \use_i:nn + \__prop_pair:wn #2 \s__prop { } \s__prop_mark \use_ii:nn \s__prop_stop } \cs_new:Npn \__prop_split_aux:w { } \cs_new_protected:Npn \prop_remove:Nn #1#2 @@ -9562,7 +9805,7 @@ { \exp_last_unbraced:Noo \__prop_if_in:nwwn { \tl_to_str:n {#2} } #1 \__prop_pair:wn \tl_to_str:n {#2} \s__prop { } - \q_recursion_tail + \q__prop_recursion_tail \prg_break_point: } \cs_new:Npn \__prop_if_in:nwwn #1#2 \__prop_pair:wn #3 \s__prop #4 @@ -9573,7 +9816,7 @@ } \cs_new:Npn \__prop_if_in:N #1 { - \if_meaning:w \q_recursion_tail #1 + \if_meaning:w \q__prop_recursion_tail #1 \prg_return_false: \else: \prg_return_true: @@ -9660,6 +9903,9 @@ \tl_new:N \l__msg_internal_tl \str_new:N \l__msg_name_str \str_new:N \l__msg_text_str +\scan_new:N \s__msg_mark +\scan_new:N \s__msg_stop +\cs_new:Npn \__msg_use_none_delimit_by_s_stop:w #1 \s__msg_stop { } \tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ } \tl_const:Nn \c__msg_more_text_prefix_tl { msg~extra~text~>~ } \prg_new_conditional:Npnn \msg_if_exist:nn #1#2 { p , T , F , TF } @@ -10004,15 +10250,15 @@ { \tl_if_in:nnTF { ^^J #1 } { ^^J > ~ } { - \tl_if_in:nnTF { #1 \q_mark } { . \q_mark } + \tl_if_in:nnTF { #1 \s__msg_mark } { . \s__msg_mark } { \__msg_show_dot:w } { \__msg_show:w } - ^^J #1 \q_stop + ^^J #1 \s__msg_stop } { \__msg_show:nn { ? #1 } { } } } - \cs_new:Npn \__msg_show_dot:w #1 ^^J > ~ #2 . \q_stop + \cs_new:Npn \__msg_show_dot:w #1 ^^J > ~ #2 . \s__msg_stop { \__msg_show:nn {#1} {#2} } - \cs_new:Npn \__msg_show:w #1 ^^J > ~ #2 \q_stop + \cs_new:Npn \__msg_show:w #1 ^^J > ~ #2 \s__msg_stop { \__msg_show:nn {#1} {#2} } \cs_new_protected:Npn \__msg_show:nn #1#2 { @@ -10069,16 +10315,16 @@ { \seq_clear:N \l__msg_hierarchy_seq \__msg_use_hierarchy:nwwN { } - #1 \q_mark \__msg_use_hierarchy:nwwN - / \q_mark \use_none_delimit_by_q_stop:w - \q_stop + #1 \s__msg_mark \__msg_use_hierarchy:nwwN + / \s__msg_mark \__msg_use_none_delimit_by_s_stop:w + \s__msg_stop \__msg_use_redirect_module:n { } } } -\cs_new_protected:Npn \__msg_use_hierarchy:nwwN #1#2 / #3 \q_mark #4 +\cs_new_protected:Npn \__msg_use_hierarchy:nwwN #1#2 / #3 \s__msg_mark #4 { \seq_put_left:Nn \l__msg_hierarchy_seq {#1} - #4 { #1 / #2 } #3 \q_mark #4 + #4 { #1 / #2 } #3 \s__msg_mark #4 } \cs_new_protected:Npn \__msg_use_redirect_module:n #1 { @@ -10378,6 +10624,18 @@ \__kernel_msg_new:nnnn { kernel } { quote-in-shell } { Quotes~in~shell~command~'#1'. } { Shell~commands~cannot~contain~quotes~("). } +\__kernel_msg_new:nnnn { kernel } { invalid-quark-function } + { Quark~test~function~'#1'~is~invalid. } + { + \c__msg_coding_error_text_tl + LaTeX~has~been~asked~to~create~quark~test~function~'#1'~ + \tl_if_empty:nTF {#2} + { but~that~name~ } + { with~signature~'#2',~but~that~signature~ } + is~not~valid. + } +\__kernel_msg_new:nnn { kernel } { invalid-quark } + { Invalid~quark~variable~'#1'. } \__kernel_msg_new:nnnn { kernel } { scanmark-already-defined } { Scan~mark~#1~already~defined. } { @@ -10797,6 +11055,10 @@ { \prop_gput:Nnn \g__iow_streams_prop {#1} { Reserved~by~format } } +\scan_new:N \s__iow_mark +\scan_new:N \s__iow_stop +\cs_new:Npn \__iow_use_i_delimit_by_s_stop:nw #1 #2 \s__iow_stop {#1} +\quark_new:N \q__iow_nil \cs_new_protected:Npn \iow_new:N #1 { \cs_new_eq:NN #1 \c_term_iow } \cs_generate_variant:Nn \iow_new:N { c } \iow_new:N \g_tmpa_iow @@ -10992,15 +11254,15 @@ \tl_set:Nx \l__iow_wrap_tl { \exp_after:wN \__iow_wrap_fix_newline:w \l__iow_wrap_tl - ^^J \q_nil ^^J \q_stop + ^^J \q__iow_nil ^^J \s__iow_stop } \exp_after:wN \__iow_wrap_start:w \l__iow_wrap_tl } \cs_new:Npn \__iow_wrap_fix_newline:w #1 ^^J #2 ^^J { #1 - \if_meaning:w \q_nil #2 - \use_i_delimit_by_q_stop:nw + \if_meaning:w \q__iow_nil #2 + \__iow_use_i_delimit_by_s_stop:nw \fi: \c__iow_wrap_newline_marker_tl \__iow_wrap_fix_newline:w #2 ^^J @@ -11033,7 +11295,7 @@ } { \__iow_wrap_line:nw { } ##1 ; } ##2 #1 - \__iow_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \q_stop + \__iow_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \s__iow_stop } } \cs_new_protected:Npn \__iow_wrap_next:nw ##1##2 #1 @@ -11091,7 +11353,7 @@ \__iow_wrap_next_line:w } \cs_new:Npn \__iow_wrap_end_chunk:w - #1 \int_eval:w #2 - #3 ; #4#5 \q_stop + #1 \int_eval:w #2 - #3 ; #4#5 \s__iow_stop { \if_false: { \fi: } \exp_args:Nf \__iow_wrap_next:nw { \int_eval:n { #2 - #4 } } @@ -11106,14 +11368,14 @@ \l__iow_line_part_tl #1 { ? \__iow_wrap_break_end:w } - \q_mark + \s__iow_mark } \cs_new:Npn \__iow_wrap_break_first:w ##1 #1 ##2 { \use_none:nn ##2 \__iow_wrap_break_none:w \__iow_wrap_break_loop:w ##1 #1 ##2 } - \cs_new:Npn \__iow_wrap_break_none:w ##1##2 #1 ##3 \q_mark ##4 #1 + \cs_new:Npn \__iow_wrap_break_none:w ##1##2 #1 ##3 \s__iow_mark ##4 #1 { \tl_if_empty:NTF \l__iow_line_tl { ##2 ##4 \__iow_wrap_line_end:nw { } } @@ -11125,11 +11387,11 @@ ##1 #1 \__iow_wrap_break_loop:w ##2 #1 ##3 } - \cs_new:Npn \__iow_wrap_break_end:w ##1 #1 ##2 ##3 #1 ##4 \q_mark + \cs_new:Npn \__iow_wrap_break_end:w ##1 #1 ##2 ##3 #1 ##4 \s__iow_mark { ##1 \__iow_wrap_line_end:nw { } ##3 } } \exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl -\cs_new_protected:Npn \__iow_wrap_next_line:w #1#2 \q_stop +\cs_new_protected:Npn \__iow_wrap_next_line:w #1#2 \s__iow_stop { \tl_clear:N \l__iow_line_tl \token_if_eq_meaning:NNTF #1 \__iow_wrap_end_chunk:w @@ -11142,7 +11404,7 @@ \__iow_wrap_line:nw { \l__iow_indent_tl } \l__iow_line_target_int - \l__iow_indent_int ; - #1 #2 \q_stop + #1 #2 \s__iow_stop } } \cs_new_protected:Npn \__iow_wrap_allow_break:n #1 @@ -11199,10 +11461,10 @@ \cs_set_protected:Npn \__iow_tmp:w #1 { \cs_new:Npn \__iow_wrap_trim:N ##1 - { \exp_after:wN \__iow_wrap_trim:w ##1 \q_mark #1 \q_mark \q_stop } - \cs_new:Npn \__iow_wrap_trim:w ##1 #1 \q_mark - { \__iow_wrap_trim_aux:w ##1 \q_mark } - \cs_new:Npn \__iow_wrap_trim_aux:w ##1 \q_mark ##2 \q_stop {##1} + { \exp_after:wN \__iow_wrap_trim:w ##1 \s__iow_mark #1 \s__iow_mark \s__iow_stop } + \cs_new:Npn \__iow_wrap_trim:w ##1 #1 \s__iow_mark + { \__iow_wrap_trim_aux:w ##1 \s__iow_mark } + \cs_new:Npn \__iow_wrap_trim_aux:w ##1 \s__iow_mark ##2 \s__iow_stop {##1} } \exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl \tl_new:N \l__file_internal_tl @@ -11215,12 +11477,12 @@ { \tl_if_blank:nTF {#1} { - \cs_set:Npn \__file_tmp:w ##1 " ##2 " ##3 \q_stop + \cs_set:Npn \__file_tmp:w ##1 " ##2 " ##3 \s__file_stop { { } {##2} { } } \seq_gput_right:Nx \g__file_stack_seq { \exp_after:wN \__file_tmp:w \tex_jobname:D - " \tex_jobname:D " \q_stop + " \tex_jobname:D " \s__file_stop } } { @@ -11242,6 +11504,13 @@ \str_new:N \l__file_name_str \seq_new:N \l_file_search_path_seq \seq_new:N \l__file_tmp_seq +\scan_new:N \s__file_stop +\quark_new:N \q__file_nil +\__kernel_quark_new_conditional:Nn \__file_quark_if_nil:n { TF } +\quark_new:N \q__file_recursion_tail +\quark_new:N \q__file_recursion_stop +\__kernel_quark_new_test:N \__file_if_recursion_tail_stop:N +\__kernel_quark_new_test:N \__file_if_recursion_tail_stop_do:nn \cs_new:Npn \__kernel_file_name_sanitize:n #1 { \exp_args:Ne \__kernel_file_name_trim_spaces:n @@ -11249,11 +11518,11 @@ \exp_args:Ne \__kernel_file_name_strip_quotes:n { \__kernel_file_name_expand_loop:w #1 - \q_recursion_tail \q_recursion_stop + \q__file_recursion_tail \q__file_recursion_stop } } } -\cs_new:Npn \__kernel_file_name_expand_loop:w #1 \q_recursion_stop +\cs_new:Npn \__kernel_file_name_expand_loop:w #1 \q__file_recursion_stop { \tl_if_head_is_N_type:nTF {#1} { \__kernel_file_name_expand_N_type:Nw } @@ -11262,11 +11531,11 @@ { \__kernel_file_name_expand_group:nw } { \__kernel_file_name_expand_space:w } } - #1 \q_recursion_stop + #1 \q__file_recursion_stop } \cs_new:Npn \__kernel_file_name_expand_N_type:Nw #1 { - \quark_if_recursion_tail_stop:N #1 + \__file_if_recursion_tail_stop:N #1 \bool_lazy_and:nnTF { \token_if_expandable_p:N #1 } { @@ -11302,11 +11571,11 @@ \cs_new:Npn \__kernel_file_name_strip_quotes:n #1 { \__kernel_file_name_strip_quotes:nnnw {#1} { 0 } { } - #1 " \q_recursion_tail " \q_recursion_stop + #1 " \q__file_recursion_tail " \q__file_recursion_stop } \cs_new:Npn \__kernel_file_name_strip_quotes:nnnw #1#2#3#4 " { - \quark_if_recursion_tail_stop_do:nn {#4} + \__file_if_recursion_tail_stop_do:nn {#4} { \__kernel_file_name_strip_quotes:nnn {#1} {#2} {#3} } \__kernel_file_name_strip_quotes:nnnw {#1} { #2 + 1 } { #3#4 } } @@ -11320,24 +11589,24 @@ #3 } \cs_new:Npn \__kernel_file_name_trim_spaces:n #1 - { \__kernel_file_name_trim_spaces:nw {#1} #1 . \q_nil . \q_stop } -\cs_new:Npn \__kernel_file_name_trim_spaces:nw #1#2 . #3 . #4 \q_stop + { \__kernel_file_name_trim_spaces:nw {#1} #1 . \q__file_nil . \s__file_stop } +\cs_new:Npn \__kernel_file_name_trim_spaces:nw #1#2 . #3 . #4 \s__file_stop { - \quark_if_nil:nTF {#3} + \__file_quark_if_nil:nTF {#3} { \exp_args:Ne \__kernel_file_name_trim_spaces_aux:n - { \tl_trim_spaces:n { #1 \s_stop } } + { \tl_trim_spaces:n { #1 \s__file_stop } } } { \tl_trim_spaces:n {#1} } } \cs_new:Npn \__kernel_file_name_trim_spaces_aux:n #1 { \__kernel_file_name_trim_spaces_aux:w #1 } -\cs_new:Npn \__kernel_file_name_trim_spaces_aux:w #1 \s_stop {#1} +\cs_new:Npn \__kernel_file_name_trim_spaces_aux:w #1 \s__file_stop {#1} \cs_new:Npn \__kernel_file_name_quote:n #1 - { \__kernel_file_name_quote:nw {#1} #1 ~ \q_nil \q_stop } -\cs_new:Npn \__kernel_file_name_quote:nw #1 #2 ~ #3 \q_stop + { \__kernel_file_name_quote:nw {#1} #1 ~ \q__file_nil \s__file_stop } +\cs_new:Npn \__kernel_file_name_quote:nw #1 #2 ~ #3 \s__file_stop { - \quark_if_nil:nTF {#3} + \__file_quark_if_nil:nTF {#3} { #1 } { "#1" } } @@ -11430,19 +11699,19 @@ \cs_new:Npn \__file_name_cleanup:w #1 \__file_name_end: { } \cs_new:Npn \__file_name_end: { } \cs_new:Npn \__file_ext_check:n #1 - { \__file_ext_check:nw { / } #1 / \q_nil / \q_stop } -\cs_new:Npn \__file_ext_check:nw #1 #2 / #3 / #4 \q_stop + { \__file_ext_check:nw { / } #1 / \q__file_nil / \s__file_stop } +\cs_new:Npn \__file_ext_check:nw #1 #2 / #3 / #4 \s__file_stop { - \quark_if_nil:nTF {#3} + \__file_quark_if_nil:nTF {#3} { \exp_args:No \__file_ext_check:nnw - { \use_none:n #1 } {#2} #2 . \q_nil . \q_stop + { \use_none:n #1 } {#2} #2 . \q__file_nil . \s__file_stop } - { \__file_ext_check:nw { #1 #2 / } #3 / #4 \q_stop } + { \__file_ext_check:nw { #1 #2 / } #3 / #4 \s__file_stop } } -\cs_new:Npx \__file_ext_check:nnw #1#2#3 . #4 . #5 \q_stop +\cs_new:Npx \__file_ext_check:nnw #1#2#3 . #4 . #5 \s__file_stop { - \exp_not:N \quark_if_nil:nTF {#4} + \exp_not:N \__file_quark_if_nil:nTF {#4} { \exp_not:N \__file_ext_check:nn { #1 #2 } { #1 #2 \tl_to_str:n { .tex } } @@ -11864,11 +12133,11 @@ \cs_new_protected:Npn \file_parse_full_name:nNNN #1#2#3#4 { \exp_after:wN \__file_parse_full_name_auxi:w - \tl_to_str:n { #1 " #1 " } \q_stop #2#3#4 + \tl_to_str:n { #1 " #1 " } \s__file_stop #2#3#4 } \cs_generate_variant:Nn \file_parse_full_name:nNNN { V } \cs_new_protected:Npn \__file_parse_full_name_auxi:w - #1 " #2 " #3 \q_stop #4#5#6 + #1 " #2 " #3 \s__file_stop #4#5#6 { \__file_parse_full_name_split:nNNNTF {#2} / #4 #5 { \str_if_empty:NT #4 { \str_set:Nn #4 { / } } } @@ -11882,7 +12151,7 @@ } \cs_new_protected:Npn \__file_parse_full_name_split:nNNNTF #1#2#3#4 { - \cs_set_protected:Npn \__file_tmp:w ##1 ##2 #2 ##3 \q_stop + \cs_set_protected:Npn \__file_tmp:w ##1 ##2 #2 ##3 \s__file_stop { \tl_if_empty:nTF {##3} { @@ -11897,9 +12166,9 @@ \use_i:nn } } - { \__file_tmp:w { ##1 #2 ##2 } ##3 \q_stop } + { \__file_tmp:w { ##1 #2 ##2 } ##3 \s__file_stop } } - \__file_tmp:w { } #1 #2 \q_stop + \__file_tmp:w { } #1 #2 \s__file_stop } \cs_new_protected:Npn \file_show_list: { \__file_list:N \msg_show:nnxxxx } \cs_new_protected:Npn \file_log_list: { \__file_list:N \msg_log:nnxxxx } @@ -11953,19 +12222,19 @@ \tl_set:Nn \ExplFileExtension { [unknown~extension] } \tl_set:Nn \ExplFileVersion {-1} } - { \__file_id_info_auxii:w #1 ~ \q_stop } + { \__file_id_info_auxii:w #1 ~ \s__file_stop } } \cs_new_protected:Npn \__file_id_info_auxii:w - #1 ~ #2.#3 ~ #4 ~ #5 ~ #6 \q_stop + #1 ~ #2.#3 ~ #4 ~ #5 ~ #6 \s__file_stop { \tl_set:Nn \ExplFileName {#2} \tl_set:Nn \ExplFileExtension {#3} \tl_set:Nn \ExplFileVersion {#4} \str_if_eq:nnTF {#4} {-1} { \tl_set:Nn \ExplFileDate { 0000/00/00 } } - { \__file_id_info_auxiii:w #5 - 0 - 0 - \q_stop } + { \__file_id_info_auxiii:w #5 - 0 - 0 - \s__file_stop } } -\cs_new_protected:Npn \__file_id_info_auxiii:w #1 - #2 - #3 - #4 \q_stop +\cs_new_protected:Npn \__file_id_info_auxiii:w #1 - #2 - #3 - #4 \s__file_stop { \tl_set:Nn \ExplFileDate { #1/#2/#3 } } \__kernel_msg_new:nnnn { kernel } { file-not-found } { File~'#1'~not~found. } @@ -12032,6 +12301,9 @@ \cs_new_eq:NN \if_dim:w \tex_ifdim:D \cs_new_eq:NN \__dim_eval:w \tex_dimexpr:D \cs_new_eq:NN \__dim_eval_end: \tex_relax:D +\scan_new:N \s__dim_mark +\scan_new:N \s__dim_stop +\cs_new:Npn \__dim_use_none_delimit_by_s_stop:w #1 \s__dim_stop { } \cs_new_protected:Npn \dim_new:N #1 { \__kernel_chk_if_free_cs:N #1 @@ -12137,7 +12409,7 @@ \cs_new:Npn \__dim_compare:w #1 \__dim_compare_error: { \exp_after:wN \if_false: \exp:w \exp_end_continue_f:w - \__dim_compare:wNN #1 ? { = \__dim_compare_end:w \else: } \q_stop + \__dim_compare:wNN #1 ? { = \__dim_compare_end:w \else: } \s__dim_stop } \exp_args:Nno \use:nn { \cs_new:Npn \__dim_compare:wNN #1 } { \tl_to_str:n {pt} #2#3 } @@ -12147,7 +12419,7 @@ \fi: #1 pt \exp_stop_f: \prg_return_false: - \exp_after:wN \use_none_delimit_by_q_stop:w + \exp_after:wN \__dim_use_none_delimit_by_s_stop:w \fi: \reverse_if:N \if_dim:w #1 pt #2 \exp_after:wN \__dim_compare:wNN @@ -12161,7 +12433,7 @@ #1 \reverse_if:N #2 < #3 = { #1 #2 > #3 } \cs_new:cpn { __dim_compare_ > :w } #1 \reverse_if:N #2 > #3 = { #1 #2 < #3 } -\cs_new:Npn \__dim_compare_end:w #1 \prg_return_false: #2 \q_stop +\cs_new:Npn \__dim_compare_end:w #1 \prg_return_false: #2 \s__dim_stop { #1 \prg_return_false: \else: \prg_return_true: \fi: } \cs_new_protected:Npn \__dim_compare_error: { @@ -12190,14 +12462,14 @@ \exp_args:Nf \__dim_case:nnTF { \dim_eval:n {#1} } {#2} { } { } } \cs_new:Npn \__dim_case:nnTF #1#2#3#4 - { \__dim_case:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } + { \__dim_case:nw {#1} #2 {#1} { } \s__dim_mark {#3} \s__dim_mark {#4} \s__dim_stop } \cs_new:Npn \__dim_case:nw #1#2#3 { \dim_compare:nNnTF {#1} = {#2} { \__dim_case_end:nw {#3} } { \__dim_case:nw {#1} } } -\cs_new:Npn \__dim_case_end:nw #1#2#3 \q_mark #4#5 \q_stop +\cs_new:Npn \__dim_case_end:nw #1#2#3 \s__dim_mark #4#5 \s__dim_stop { \exp_end: #1 #4 } \cs_new:Npn \dim_while_do:nn #1#2 { @@ -12373,6 +12645,7 @@ \dim_new:N \l_tmpb_dim \dim_new:N \g_tmpa_dim \dim_new:N \g_tmpb_dim +\scan_new:N \s__skip_stop \cs_new_protected:Npn \skip_new:N #1 { \__kernel_chk_if_free_cs:N #1 @@ -12433,9 +12706,9 @@ { \exp_after:wN \__skip_if_finite:wwNw \skip_use:N \tex_glueexpr:D ##1 ; \prg_return_false: - #1 ; \prg_return_true: \q_stop + #1 ; \prg_return_true: \s__skip_stop } - \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \q_stop {##3} + \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \s__skip_stop {##3} } \exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } } \cs_new:Npn \skip_eval:n #1 @@ -12541,9 +12814,7 @@ \cs_set_protected:Npn \__keyval_tmp:NN #1#2 { \cs_new:Npn \keyval_parse:NNn ##1 ##2 ##3 - { - \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark ##3 #1 \s__keyval_tail #1 - } + { \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark ##3 #1 \s__keyval_tail #1 } \cs_new:Npn \__keyval_loop_active:NNw ##1 ##2 ##3 #1 { \__keyval_if_recursion_tail:w ##3 @@ -12576,20 +12847,16 @@ \__keyval_loop_other:NNw ##1 ##2 \s__keyval_mark } \cs_new:Npn \__keyval_split_active:w ##1 #2 + { \__keyval_trim:nN { ##1 } \__keyval_split_active:nw \s__keyval_mark } + \cs_new:Npn \__keyval_split_active:nw ##1 ##2 #2 ##3 \s__keyval_stop { - \__keyval_trim:nN { ##1 } \__keyval_split_active:nw \s__keyval_mark + \__keyval_if_empty:w \s__keyval_mark ##3 \s__keyval_stop + \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn + { \__keyval_misplaced_equal_error: \use_none:n } + { \__keyval_trim:nN { ##2 } \__keyval_key_val:nnN { ##1 } } } - \cs_new:Npn \__keyval_split_active:nw ##1 ##2 #2 ##3 \s__keyval_stop - { - \__keyval_if_empty:w \s__keyval_mark ##3 \s__keyval_stop - \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn - { \__keyval_misplaced_equal_error: \use_none:n } - { \__keyval_trim:nN { ##2 } \__keyval_key_val:nnN { ##1 } } - } \cs_new:Npn \__keyval_if_has_equal_active:w ##1 #2 - { - \__keyval_if_empty:w \s__keyval_mark - } + { \__keyval_if_empty:w \s__keyval_mark } } \char_set_catcode_active:n { `\, } \char_set_catcode_active:n { `\= } @@ -12599,29 +12866,25 @@ \s__keyval_mark \s__keyval_tail \__keyval_loop_other:NNw #1 , \s__keyval_tail , \__keyval_loop_active:NNw #2 \s__keyval_mark - {} + { } \cs_new:Npn \__keyval_end_loop_other:w \s__keyval_mark \s__keyval_tail \__keyval_if_has_equal_other:w #1 = \s__keyval_stop \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn #2 \__keyval_loop_other:NNw #3 \s__keyval_mark - {} + { } \cs_new:Npn \__keyval_split_other:w #1 = + { \__keyval_trim:nN { #1 } \__keyval_split_other:nw \s__keyval_mark } +\cs_new:Npn \__keyval_split_other:nw #1 #2 = #3 \s__keyval_stop { - \__keyval_trim:nN { #1 } \__keyval_split_other:nw \s__keyval_mark + \__keyval_if_empty:w \s__keyval_mark #3 \s__keyval_stop + \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn + { \__keyval_misplaced_equal_error: \use_none:n } + { \__keyval_trim:nN { #2 } \__keyval_key_val:nnN { #1 } } } - \cs_new:Npn \__keyval_split_other:nw #1 #2 = #3 \s__keyval_stop - { - \__keyval_if_empty:w \s__keyval_mark #3 \s__keyval_stop - \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn - { \__keyval_misplaced_equal_error: \use_none:n } - { \__keyval_trim:nN { #2 } \__keyval_key_val:nnN { #1 } } - } \cs_new:Npn \__keyval_key:nN #1 #2 - { - \exp_not:n { #2 { #1 } } - } + { \exp_not:n { #2 { #1 } } } \cs_new:Npn \__keyval_key_val:nnN #1 #2 #3 { \__keyval_if_empty:w \s__keyval_mark #2 \s__keyval_stop @@ -12634,17 +12897,11 @@ \cs_new:Npn \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn #1 #2 { #2 } \cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \use:n #1 {} \cs_new:Npn \__keyval_empty_key:w \s__keyval_mark \s__keyval_stop \exp_not:n #1 - { - \__keyval_misplaced_equal_error: - } + { \__keyval_misplaced_equal_error: } \cs_new:Npn \__keyval_if_has_equal_other:w #1 = - { - \__keyval_if_empty:w \s__keyval_mark - } + { \__keyval_if_empty:w \s__keyval_mark } \cs_new:Npn \__keyval_misplaced_equal_error: - { - \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } - } + { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } } \__kernel_msg_new:nnn { kernel } { misplaced-equals-sign } { Misplaced~equals~sign~in~key-value~input~\msg_line_context: } \group_begin: @@ -12705,7 +12962,7 @@ \tl_new:N \l_keys_path_tl \str_new:N \l__keys_inherit_str \tl_new:N \l__keys_relative_tl -\tl_set:Nn \l__keys_relative_tl { \q_no_value } +\tl_set:Nn \l__keys_relative_tl { \q__keys_no_value } \str_new:N \l__keys_property_str \bool_new:N \l__keys_selective_bool \bool_new:N \l__keys_filtered_bool @@ -12715,6 +12972,14 @@ \bool_new:N \l__keys_tmp_bool \tl_new:N \l__keys_tmpa_tl \tl_new:N \l__keys_tmpb_tl +\scan_new:N \s__keys_stop +\quark_new:N \q__keys_nil +\quark_new:N \q__keys_no_value +\__kernel_quark_new_conditional:Nn \__keys_quark_if_nil:n { TF } +\__kernel_quark_new_conditional:Nn \__keys_quark_if_no_value:N { TF } +\quark_new:N \q__keys_recursion_tail +\quark_new:N \q__keys_recursion_stop +\__kernel_quark_new_test:N \__keys_if_recursion_tail_stop:n \cs_new_protected:Npn \keys_define:nn { \__keys_define:onn \l__keys_module_str } \cs_new_protected:Npn \__keys_define:nnn #1#2#3 @@ -12743,7 +13008,7 @@ \str_if_empty:NF \l__keys_property_str { \__kernel_msg_error:nnxx { kernel } { key-property-unknown } - { \l__keys_property_str } { \l_keys_path_str } + { \l__keys_property_str } { \l_keys_path_str } } } } @@ -12751,9 +13016,9 @@ { \str_set:Nx \l__keys_property_str { \__keys_trim_spaces:n {#1} } \exp_after:wN \__keys_property_find:w \l__keys_property_str . . - \q_stop {#1} + \s__keys_stop {#1} } -\cs_new_protected:Npn \__keys_property_find:w #1 . #2 . #3 \q_stop #4 +\cs_new_protected:Npn \__keys_property_find:w #1 . #2 . #3 \s__keys_stop #4 { \tl_if_blank:nTF {#3} { @@ -12767,18 +13032,18 @@ { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } - \tl_trim_spaces:n {#1} + \tl_trim_spaces:n {#1} } \str_set:Nn \l__keys_property_str { . #2 } } { \str_set:Nx \l_keys_path_str { \l__keys_module_str / #1 . #2 } - \__keys_property_search:w #3 \q_stop + \__keys_property_search:w #3 \s__keys_stop } \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str } } -\cs_new_protected:Npn \__keys_property_search:w #1 . #2 \q_stop +\cs_new_protected:Npn \__keys_property_search:w #1 . #2 \s__keys_stop { \str_if_eq:nnTF {#2} { . } { @@ -12787,7 +13052,7 @@ } { \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 } - \__keys_property_search:w #2 \q_stop + \__keys_property_search:w #2 \s__keys_stop } } \cs_new_protected:Npn \__keys_define_code:n #1 @@ -12795,18 +13060,18 @@ \bool_if:NTF \l__keys_no_value_bool { \exp_after:wN \__keys_define_code:w - \l__keys_property_str \q_stop + \l__keys_property_str \s__keys_stop { \use:c { \c__keys_props_root_str \l__keys_property_str } } { \__kernel_msg_error:nnxx { kernel } { key-property-requires-value } { \l__keys_property_str } { \l_keys_path_str } - } + } } { \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} } } \exp_last_unbraced:NNNNo - \cs_new:Npn \__keys_define_code:w #1 \c_colon_str #2 \q_stop + \cs_new:Npn \__keys_define_code:w #1 \c_colon_str #2 \s__keys_stop { \tl_if_empty:nTF {#2} } \cs_new_protected:Npn \__keys_bool_set:Nn #1#2 { @@ -12961,7 +13226,7 @@ \exp_after:wN \__keys_find_key_module:NNw \exp_after:wN \l__keys_tmpa_tl \exp_after:wN \l__keys_tmpb_tl - \l_keys_path_str / \q_stop + \l_keys_path_str / \s__keys_stop \__keys_cmd_set:nx { \l_keys_path_str } { \exp_not:c { prop_ #2 put:Nnn } @@ -13209,7 +13474,7 @@ \bool_set_false:N \exp_not:N \l__keys_filtered_bool \bool_set_false:N \exp_not:N \l__keys_selective_bool \tl_set:Nn \exp_not:N \l__keys_relative_tl - { \exp_not:N \q_no_value } + { \exp_not:N \q__keys_no_value } \__keys_set:nn \exp_not:n { {#1} {#2} } \bool_if:NT \l__keys_only_known_bool { \bool_set_true:N \exp_not:N \l__keys_only_known_bool } @@ -13233,7 +13498,7 @@ \cs_new_protected:Npn \keys_set_known:nnN #1#2#3 { \exp_args:No \__keys_set_known:nnnnN - \l__keys_unused_clist { \q_no_value } {#1} {#2} #3 + \l__keys_unused_clist { \q__keys_no_value } {#1} {#2} #3 } \cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no } \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4 @@ -13250,7 +13515,7 @@ \tl_set:Nn \l__keys_unused_clist {#1} } \cs_new_protected:Npn \keys_set_known:nn #1#2 - { \__keys_set_known:nnn { \q_no_value } {#1} {#2} } + { \__keys_set_known:nnn { \q__keys_no_value } {#1} {#2} } \cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } \cs_new_protected:Npn \__keys_set_known:nnn #1#2#3 { @@ -13275,7 +13540,7 @@ { \exp_args:No \__keys_set_filter:nnnnnN \l__keys_unused_clist - { \q_no_value } {#1} {#2} {#3} #4 + { \q__keys_no_value } {#1} {#2} {#3} #4 } \cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno } \cs_new_protected:Npn \keys_set_filter:nnnnN #1#2#3#4#5 @@ -13292,7 +13557,7 @@ \tl_set:Nn \l__keys_unused_clist {#1} } \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3 - {\__keys_set_filter:nnnn { \q_no_value } {#1} {#2} {#3} } + {\__keys_set_filter:nnnn { \q__keys_no_value } {#1} {#2} {#3} } \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } \cs_new_protected:Npn \__keys_set_filter:nnnn #1#2#3#4 { @@ -13321,7 +13586,7 @@ \bool_set_false:N \exp_not:N \l__keys_filtered_bool \bool_set_true:N \exp_not:N \l__keys_selective_bool \tl_set:Nn \exp_not:N \l__keys_relative_tl - { \exp_not:N \q_no_value } + { \exp_not:N \q__keys_no_value } \__keys_set_selective:nnn \exp_not:n { {#1} {#2} {#3} } \bool_if:NT \l__keys_only_known_bool { \bool_set_true:N \exp_not:N \l__keys_only_known_bool } @@ -13365,7 +13630,7 @@ \exp_after:wN \__keys_find_key_module:NNw \exp_after:wN \l__keys_module_str \exp_after:wN \l_keys_key_str - \l_keys_path_str / \q_stop + \l_keys_path_str / \s__keys_stop \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str \__keys_value_or_default:n {#3} \bool_if:NTF \l__keys_selective_bool @@ -13374,7 +13639,7 @@ \str_set:Nn \l__keys_module_str {#1} } \cs_generate_variant:Nn \__keys_set_keyval:nnn { o } -\cs_new_protected:Npn \__keys_find_key_module:NNw #1#2#3 / #4 \q_stop +\cs_new_protected:Npn \__keys_find_key_module:NNw #1#2#3 / #4 \s__keys_stop { \tl_if_blank:nTF {#4} { \str_set:Nn #2 {#3} } @@ -13384,7 +13649,7 @@ \str_if_empty:NF #1 { / } #3 } - \__keys_find_key_module:NNw #1#2 #4 \q_stop + \__keys_find_key_module:NNw #1#2 #4 \s__keys_stop } } \cs_new_protected:Npn \__keys_set_selective: @@ -13522,7 +13787,7 @@ } \cs_new_protected:Npn \__keys_store_unused: { - \quark_if_no_value:NTF \l__keys_relative_tl + \__keys_quark_if_no_value:NTF \l__keys_relative_tl { \clist_put_right:Nx \l__keys_unused_clist { @@ -13553,7 +13818,7 @@ \cs_set_protected:Npn \__keys_store_unused:w ####1 \l__keys_relative_tl / ####2 \l__keys_relative_tl / - ####3 \exp_not:N \q_stop + ####3 \s__keys_stop } { \tl_if_blank:nF {##1} @@ -13573,7 +13838,7 @@ { \__keys_store_unused:w \l_keys_path_str \l__keys_relative_tl / \l__keys_relative_tl / - \exp_not:N \q_stop + \s__keys_stop } } \cs_new_protected:Npn \__keys_store_unused:w { } @@ -13595,9 +13860,9 @@ \cs_new:Npn \__keys_multichoice_find:n #1 { \clist_map_function:nN {#1} \__keys_choice_find:n } \cs_new:Npn \__keys_parent:n #1 - { \__keys_parent:w #1 / / \q_stop { } } + { \__keys_parent:w #1 / / \s__keys_stop { } } \cs_generate_variant:Nn \__keys_parent:n { o } -\cs_new:Npn \__keys_parent:w #1 / #2 / #3 \q_stop #4 +\cs_new:Npn \__keys_parent:w #1 / #2 / #3 \s__keys_stop #4 { \tl_if_blank:nTF {#2} { @@ -13605,28 +13870,28 @@ { \use_none:n #4 } } { - \__keys_parent:w #2 / #3 \q_stop { #4 / #1 } + \__keys_parent:w #2 / #3 \s__keys_stop { #4 / #1 } } } \cs_new:Npn \__keys_trim_spaces:n #1 { \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n {#1} - / \q_nil \q_stop + / \q__keys_nil \s__keys_stop } -\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \q_stop +\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \s__keys_stop { - \quark_if_nil:nTF {#2} + \__keys_quark_if_nil:nTF {#2} { \tl_trim_spaces:n {#1} } { \__keys_trim_spaces_auxii:w #1 / #2 } } -\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / #2 / \q_nil +\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / #2 / \q__keys_nil { \tl_trim_spaces:n {#1} - \__keys_trim_spaces_auxiii:w #2 / \q_recursion_tail / \q_recursion_stop + \__keys_trim_spaces_auxiii:w #2 / \q__keys_recursion_tail / \q__keys_recursion_stop } \cs_set:Npn \__keys_trim_spaces_auxiii:w #1 / { - \quark_if_recursion_tail_stop:n {#1} + \__keys_if_recursion_tail_stop:n {#1} / \tl_trim_spaces:n { #1 } \__keys_trim_spaces_auxiii:w } @@ -13970,8 +14235,11 @@ \scan_new:N \s__fp \cs_new_protected:Npn \__fp_chk:w #1 ; { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } } +\scan_new:N \s__fp_expr_mark +\scan_new:N \s__fp_expr_stop \scan_new:N \s__fp_mark \scan_new:N \s__fp_stop +\cs_new:Npn \__fp_use_i_delimit_by_s_stop:nw #1 #2 \s__fp_stop {#1} \scan_new:N \s__fp_invalid \scan_new:N \s__fp_underflow \scan_new:N \s__fp_overflow @@ -14015,7 +14283,7 @@ \__fp_if_type_fp:NTwFw #1 \__fp_use_ii_until_s:nnw \s__fp { \__fp_use_i_until_s:nw 4 } - \q_stop + \s__fp_stop } \cs_new:Npn \__fp_sanitize:Nw #1 #2; { @@ -14091,7 +14359,7 @@ } \cs_new:Npn \__fp_tuple_count_loop:Nw #1#2; { \use_none:n #1 + 1 \__fp_tuple_count_loop:Nw } -\cs_new:Npn \__fp_if_type_fp:NTwFw #1 \s__fp #2 #3 \q_stop {#2} +\cs_new:Npn \__fp_if_type_fp:NTwFw #1 \s__fp #2 #3 \s__fp_stop {#2} \cs_new:Npn \__fp_array_if_all_fp:nTF #1 { \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } ; @@ -14102,24 +14370,24 @@ \__fp_if_type_fp:NTwFw #1 \__fp_array_if_all_fp_loop:w \s__fp { \prg_break:n \use_iii:nnn } - \q_stop + \s__fp_stop } \cs_new:Npn \__fp_type_from_scan:N #1 { \__fp_if_type_fp:NTwFw #1 { } \s__fp { \__fp_type_from_scan_other:N #1 } - \q_stop + \s__fp_stop } \cs_new:Npx \__fp_type_from_scan_other:N #1 { \exp_not:N \exp_after:wN \exp_not:N \__fp_type_from_scan:w - \exp_not:N \token_to_str:N #1 \exp_not:N \q_mark - \tl_to_str:n { s__fp _? } \exp_not:N \q_mark \exp_not:N \q_stop + \exp_not:N \token_to_str:N #1 \s__fp_mark + \tl_to_str:n { s__fp _? } \s__fp_mark \s__fp_stop } \exp_last_unbraced:NNNNo \cs_new:Npn \__fp_type_from_scan:w #1 - { \tl_to_str:n { s__fp } } #2 \q_mark #3 \q_stop {#2} + { \tl_to_str:n { s__fp } } #2 \s__fp_mark #3 \s__fp_stop {#2} \cs_new:Npn \__fp_change_func_type:NNN #1#2#3 { \__fp_if_type_fp:NTwFw @@ -14133,7 +14401,7 @@ \cs_end: #2 #3 } - \q_stop + \s__fp_stop } \exp_last_unbraced:NNNNo \cs_new:Npn \__fp_change_func_type_aux:w #1 { \tl_to_str:n { __fp } } { } @@ -14152,10 +14420,10 @@ \__fp_if_type_fp:NTwFw #2 \__fp_exp_after_f:nw \s__fp { \__fp_exp_after_any_f:Nnw #2 } - \q_stop + \s__fp_stop {#1} #2 } -\cs_new_eq:NN \__fp_exp_after_stop_f:nw \use_none:nn +\cs_new_eq:NN \__fp_exp_after_expr_stop_f:nw \use_none:nn \cs_new:Npn \__fp_exp_after_tuple_o:w { \__fp_exp_after_tuple_f:nw { \exp_after:wN \exp_stop_f: } } \cs_new:Npn \__fp_exp_after_tuple_f:nw @@ -14165,7 +14433,7 @@ \exp_after:wN \__fp_tuple_chk:w \exp_after:wN { \exp:w \exp_end_continue_f:w - \__fp_exp_after_array_f:w #2 \s__fp_stop + \__fp_exp_after_array_f:w #2 \s__fp_expr_stop \exp_after:wN } \exp_after:wN ; \exp:w \exp_end_continue_f:w #1 @@ -14882,7 +15150,7 @@ \exp_after:wN #1 \exp:w \__fp_parse_expand:w } } -\cs_new:Npn \__fp_exp_after_mark_f:nw #1 +\cs_new:Npn \__fp_exp_after_expr_mark_f:nw #1 { \int_case:nnF { \exp_after:wN \use_i:nnn \use_none:nnn #1 } { @@ -14952,11 +15220,11 @@ ; \exp_not:N \__fp_parse_one_register_dim:ww \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_mu:www . \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_int:www - \exp_not:N \q_stop + \s__fp_stop } \exp_args:Nno \use:nn { \cs_new:Npn \__fp_parse_one_register_auxii:wwwNw #1 . #2 } - { \tl_to_str:n { pt } #3 ; #4#5 \q_stop } + { \tl_to_str:n { pt } #3 ; #4#5 \s__fp_stop } { #4 #1.#2; } \exp_args:Nno \use:nn { \cs_new:Npn \__fp_parse_one_register_mu:www #1 } @@ -15463,12 +15731,12 @@ } \cs_new:Npn \__fp_parse_apply_unary:NNNwN #1#2#3#4@#5 { - \__fp_parse_apply_unary_chk:NwNw #4 @ ; . \q_stop + \__fp_parse_apply_unary_chk:NwNw #4 @ ; . \s__fp_stop \__fp_parse_apply_unary_type:NNN #3 #2 #4 @ \exp:w \exp_end_continue_f:w #5 #1 } -\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 ; #3#4 \q_stop +\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 ; #3#4 \s__fp_stop { \if_meaning:w @ #3 \else: \token_if_eq_meaning:NNTF . #3 @@ -15533,7 +15801,7 @@ \exp_not:N \token_if_eq_meaning:NNTF #3 \exp_not:c { __fp_parse_infix_):N } { - \exp_not:N \__fp_exp_after_array_f:w #2 \s__fp_stop + \exp_not:N \__fp_exp_after_array_f:w #2 \s__fp_expr_stop \exp_not:N \exp_after:wN \exp_not:N \__fp_parse_infix_after_paren:NN \exp_not:N \exp_after:wN #1 @@ -15631,12 +15899,12 @@ \exp:w \__fp_parse_operand:Nw \c__fp_prec_end_int \__fp_parse_expand:w #1 - \s__fp_mark \__fp_parse_infix_end:N - \s__fp_stop + \s__fp_expr_mark \__fp_parse_infix_end:N + \s__fp_expr_stop \exp_end: } \cs_new:Npn \__fp_parse_after:ww - #1@ \__fp_parse_infix_end:N \s__fp_stop #2 { #2 #1 } + #1@ \__fp_parse_infix_end:N \s__fp_expr_stop #2 { #2 #1 } \cs_new:Npn \__fp_parse_o:n #1 { \exp:w @@ -15644,8 +15912,8 @@ \exp:w \__fp_parse_operand:Nw \c__fp_prec_end_int \__fp_parse_expand:w #1 - \s__fp_mark \__fp_parse_infix_end:N - \s__fp_stop + \s__fp_expr_mark \__fp_parse_infix_end:N + \s__fp_expr_stop { \exp_end_continue_f:w \__fp_exp_after_any_f:nw { \exp_after:wN \exp_stop_f: } @@ -15726,7 +15994,7 @@ { \if_catcode:w \scan_stop: \exp_not:N #2 \if_int_compare:w - \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 } + \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 } = 0 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_infix_mark:NNN @@ -15770,7 +16038,7 @@ { \if_catcode:w \scan_stop: \exp_not:N #2 \if_int_compare:w - \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 } + \__fp_str_if_eq:nn { \s__fp_expr_mark } { \exp_not:N #2 } = 0 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_infix_mark:NNN @@ -16068,7 +16336,7 @@ \cs_new:Npn \__fp_parse_function_one_two:nnw #1#2#3 { \__fp_if_type_fp:NTwFw - #3 { } \s__fp \__fp_parse_function_one_two_error_o:w \q_stop + #3 { } \s__fp \__fp_parse_function_one_two_error_o:w \s__fp_stop \__fp_parse_function_one_two_aux:nnw {#1} {#2} #3 } \cs_new:Npn \__fp_parse_function_one_two_error_o:w #1#2#3#4 @ @@ -16090,7 +16358,7 @@ \fi: \__fp_parse_function_one_two_error_o:w } - \q_stop + \s__fp_stop \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3; #4 } \cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3; #4; #5 @@ -16255,8 +16523,8 @@ { \if_charcode:w 0 \__fp_if_type_fp:NTwFw - #1 { \use_i_delimit_by_q_stop:nw #3 \q_stop } - \s__fp 1 \q_stop + #1 { \__fp_use_i_delimit_by_s_stop:nw #3 \s__fp_stop } + \s__fp 1 \s__fp_stop \prg_return_false: \else: \prg_return_true: @@ -16281,8 +16549,8 @@ \cs_new:Npn \__fp_compare_back_any:ww #1#2; #3 { \__fp_if_type_fp:NTwFw - #1 { \__fp_if_type_fp:NTwFw #3 \use_i:nn \s__fp \use_ii:nn \q_stop } - \s__fp \use_ii:nn \q_stop + #1 { \__fp_if_type_fp:NTwFw #3 \use_i:nn \s__fp \use_ii:nn \s__fp_stop } + \s__fp \use_ii:nn \s__fp_stop \__fp_compare_back:ww { \cs:w @@ -16438,9 +16706,9 @@ \cs_generate_variant:Nn \fp_step_function:nnnN { nnnc } \cs_new:Npn \__fp_step:wwwN #1#2; #3#4; #5#6; #7 { - \__fp_if_type_fp:NTwFw #1 { } \s__fp \prg_break: \q_stop - \__fp_if_type_fp:NTwFw #3 { } \s__fp \prg_break: \q_stop - \__fp_if_type_fp:NTwFw #5 { } \s__fp \prg_break: \q_stop + \__fp_if_type_fp:NTwFw #1 { } \s__fp \prg_break: \s__fp_stop + \__fp_if_type_fp:NTwFw #3 { } \s__fp \prg_break: \s__fp_stop + \__fp_if_type_fp:NTwFw #5 { } \s__fp \prg_break: \s__fp_stop \use_i:nnnn { \__fp_step_fp:wwwN #1#2; #3#4; #5#6; #7 } \prg_break_point: \use:n @@ -16607,15 +16875,15 @@ \if_meaning:w \__fp_parse_infix_::N #5 \if_charcode:w 0 \__fp_if_type_fp:NTwFw - #2 { \use_i:nn \use_i_delimit_by_q_stop:nw #3 \q_stop } - \s__fp 1 \q_stop + #2 { \use_i:nn \__fp_use_i_delimit_by_s_stop:nw #3 \s__fp_stop } + \s__fp 1 \s__fp_stop \exp_after:wN \exp_after:wN \exp_after:wN \__fp_ternary_auxii:NwwN \else: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_ternary_auxi:NwwN \fi: \exp_after:wN #1 \exp:w \exp_end_continue_f:w - \__fp_exp_after_array_f:w #4 \s__fp_stop + \__fp_exp_after_array_f:w #4 \s__fp_expr_stop \exp_after:wN @ \exp:w \__fp_parse_operand:Nw \c__fp_prec_colon_int @@ -16626,7 +16894,7 @@ \exp_after:wN \__fp_parse_continue:NwN \exp_after:wN #1 \exp:w \exp_end_continue_f:w - \__fp_exp_after_array_f:w #4 \s__fp_stop + \__fp_exp_after_array_f:w #4 \s__fp_expr_stop \exp_after:wN #5 \exp_after:wN #1 \fi: @@ -16636,7 +16904,7 @@ \exp_after:wN \__fp_parse_continue:NwN \exp_after:wN #1 \exp:w \exp_end_continue_f:w - \__fp_exp_after_array_f:w #2 \s__fp_stop + \__fp_exp_after_array_f:w #2 \s__fp_expr_stop #4 #1 } \cs_new:Npn \__fp_ternary_auxii:NwwN #1#2@#3@#4 @@ -16644,7 +16912,7 @@ \exp_after:wN \__fp_parse_continue:NwN \exp_after:wN #1 \exp:w \exp_end_continue_f:w - \__fp_exp_after_array_f:w #3 \s__fp_stop + \__fp_exp_after_array_f:w #3 \s__fp_expr_stop #4 #1 } %% File: l3fp-basics.dtx @@ -18222,7 +18490,7 @@ ; #2#3#4 0000 0000 ; } \cs_new:Npn \__fp_exp_Taylor_ii:ww #1; #2; - { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s_stop } + { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__fp_stop } \cs_new:Npn \__fp_exp_Taylor_loop:www #1; #2; #3; { \if_int_compare:w #1 = 1 \exp_stop_f: @@ -18237,7 +18505,7 @@ #2 ; } } -\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2; #3 \s_stop +\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2; #3 \s__fp_stop { \__fp_fixed_add_one:wN #2 ; } \intarray_const_from_clist:Nn \c__fp_exp_intarray { @@ -19553,11 +19821,11 @@ \cs_new:Npn \__fp_trim_zeros:w #1 ; { \__fp_trim_zeros_loop:w #1 - ; \__fp_trim_zeros_loop:w 0; \__fp_trim_zeros_dot:w .; \s_stop + ; \__fp_trim_zeros_loop:w 0; \__fp_trim_zeros_dot:w .; \s__fp_stop } \cs_new:Npn \__fp_trim_zeros_loop:w #1 0; #2 { #2 #1 ; #2 } \cs_new:Npn \__fp_trim_zeros_dot:w #1 .; { \__fp_trim_zeros_end:w #1 ; } -\cs_new:Npn \__fp_trim_zeros_end:w #1 ; #2 \s_stop { #1 } +\cs_new:Npn \__fp_trim_zeros_end:w #1 ; #2 \s__fp_stop { #1 } \cs_new:Npn \fp_to_scientific:N #1 { \exp_after:wN \__fp_to_scientific_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_scientific:N { c } @@ -20314,6 +20582,8 @@ \int_new:N \l__sort_A_int \int_new:N \l__sort_B_int \int_new:N \l__sort_C_int +\scan_new:N \s__sort_mark +\scan_new:N \s__sort_stop \cs_new_protected:Npn \__sort_shrink_range: { \int_set:Nn \l__sort_A_int @@ -20507,30 +20777,30 @@ \prg_do_nothing: \__sort_return_mark:w \__sort_return_mark:w - \q_mark + \s__sort_mark \__sort_return_none_error: } \cs_new_protected:Npn \sort_return_same: - #1 \__sort_return_mark:w #2 \q_mark + #1 \__sort_return_mark:w #2 \s__sort_mark { #1 #2 \__sort_return_two_error: \__sort_return_mark:w - \q_mark + \s__sort_mark \__sort_return_same:w } \cs_new_protected:Npn \sort_return_swapped: - #1 \__sort_return_mark:w #2 \q_mark + #1 \__sort_return_mark:w #2 \s__sort_mark { #1 #2 \__sort_return_two_error: \__sort_return_mark:w - \q_mark + \s__sort_mark \__sort_return_swapped:w } -\cs_new_protected:Npn \__sort_return_mark:w #1 \q_mark { } +\cs_new_protected:Npn \__sort_return_mark:w #1 \s__sort_mark { } \cs_new_protected:Npn \__sort_return_none_error: { \__kernel_msg_error:nnxx { kernel } { return-none } @@ -20583,7 +20853,7 @@ \__sort_quick_prepare:Nnnn #2 { } { } #1 { \prg_break_point: \__sort_quick_prepare_end:NNNnw } - \q_stop + \s__sort_stop } } } @@ -20592,13 +20862,13 @@ \prg_break: #4 \prg_break_point: \__sort_quick_prepare:Nnnn #1 { #2 #3 } { #1 {#4} } } -\cs_new:Npn \__sort_quick_prepare_end:NNNnw #1#2#3#4#5 \q_stop +\cs_new:Npn \__sort_quick_prepare_end:NNNnw #1#2#3#4#5 \s__sort_stop { \__sort_quick_split:NnNn #4 \__sort_quick_end:nnTFNn { } - \q_mark { \__sort_quick_cleanup:w \exp_stop_f: } - \s_stop \q_stop + \s__sort_mark { \__sort_quick_cleanup:w \exp_stop_f: } + \s__sort_mark \s__sort_stop } -\cs_new:Npn \__sort_quick_cleanup:w #1 \s_stop \q_stop {#1} +\cs_new:Npn \__sort_quick_cleanup:w #1 \s__sort_mark \s__sort_stop {#1} \cs_new:Npn \__sort_quick_split:NnNn #1#2#3#4 { #3 {#2} {#4} \__sort_quick_only_ii:NnnnnNn @@ -20635,30 +20905,30 @@ { #6 {#7} } {#3} { #4 #2 } {#5} } \cs_new:Npn \__sort_quick_end:nnTFNn #1#2#3#4#5#6 {#5} -\cs_new:Npn \__sort_quick_single_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop - { #5 {#3} #6 \q_stop } -\cs_new:Npn \__sort_quick_only_i_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop +\cs_new:Npn \__sort_quick_single_end:nnnwnw #1#2#3#4 \s__sort_mark #5#6 \s__sort_stop + { #5 {#3} #6 \s__sort_stop } +\cs_new:Npn \__sort_quick_only_i_end:nnnwnw #1#2#3#4 \s__sort_mark #5#6 \s__sort_stop { \__sort_quick_split:NnNn #1 - \__sort_quick_end:nnTFNn { } \q_mark {#5} + \__sort_quick_end:nnTFNn { } \s__sort_mark {#5} {#3} - #6 \q_stop + #6 \s__sort_stop } -\cs_new:Npn \__sort_quick_only_ii_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop +\cs_new:Npn \__sort_quick_only_ii_end:nnnwnw #1#2#3#4 \s__sort_mark #5#6 \s__sort_stop { \__sort_quick_split:NnNn #2 - \__sort_quick_end:nnTFNn { } \q_mark { #5 {#3} } - #6 \q_stop + \__sort_quick_end:nnTFNn { } \s__sort_mark { #5 {#3} } + #6 \s__sort_stop } -\cs_new:Npn \__sort_quick_split_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop +\cs_new:Npn \__sort_quick_split_end:nnnwnw #1#2#3#4 \s__sort_mark #5#6 \s__sort_stop { - \__sort_quick_split:NnNn #2 \__sort_quick_end:nnTFNn { } \q_mark + \__sort_quick_split:NnNn #2 \__sort_quick_end:nnTFNn { } \s__sort_mark { \__sort_quick_split:NnNn #1 - \__sort_quick_end:nnTFNn { } \q_mark {#5} + \__sort_quick_end:nnTFNn { } \s__sort_mark {#5} {#3} } - #6 \q_stop + #6 \s__sort_stop } \cs_new_protected:Npn \__sort_error: { @@ -20723,6 +20993,8 @@ \tl_new:N \g__str_result_tl \int_const:Nn \c__str_replacement_char_int { "FFFD } \int_const:Nn \c__str_max_byte_int { 255 } +\scan_new:N \s__str +\quark_new:N \q__str_nil \prop_new:N \g__str_alias_prop \prop_gput:Nnn \g__str_alias_prop { latin1 } { iso88591 } \prop_gput:Nnn \g__str_alias_prop { latin2 } { iso88592 } @@ -20857,13 +21129,13 @@ { \exp_after:wN \__str_convert_gmap_internal_loop:Nww \exp_after:wN #1 - \g__str_result_tl \s__tl \q_stop \prg_break: \s__tl + \g__str_result_tl \s__str \s__str_stop \prg_break: \s__str \prg_break_point: } } -\cs_new:Npn \__str_convert_gmap_internal_loop:Nww #1 #2 \s__tl #3 \s__tl +\cs_new:Npn \__str_convert_gmap_internal_loop:Nww #1 #2 \s__str #3 \s__str { - \use_none_delimit_by_q_stop:w #3 \q_stop + \__str_use_none_delimit_by_s_stop:w #3 \s__str_stop #1 {#3} \__str_convert_gmap_internal_loop:Nww #1 } @@ -20905,12 +21177,12 @@ #1 \tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} } \exp_after:wN \__str_convert:wwwnn - \tl_to_str:n {#5} /// \q_stop + \tl_to_str:n {#5} /// \s__str_stop { decode } { unescape } \prg_do_nothing: \__str_convert_decode_: \exp_after:wN \__str_convert:wwwnn - \tl_to_str:n {#6} /// \q_stop + \tl_to_str:n {#6} /// \s__str_stop { encode } { escape } \use_ii_i:nn \__str_convert_encode_: @@ -20918,7 +21190,7 @@ #2 #3 \g__str_result_tl } \cs_new_protected:Npn \__str_convert:wwwnn - #1 / #2 // #3 \q_stop #4#5 + #1 / #2 // #3 \s__str_stop #4#5 { \__str_convert:nnn {enc} {#4} {#1} \__str_convert:nnn {esc} {#5} {#2} @@ -21061,7 +21333,7 @@ \cs_new_protected:Npn \__str_convert_decode_: { \__str_convert_gmap:N \__str_decode_native_char:N } \cs_new:Npn \__str_decode_native_char:N #1 - { #1 \s__tl \int_value:w `#1 \s__tl } + { #1 \s__str \int_value:w `#1 \s__str } \bool_lazy_any:nTF { \sys_if_engine_luatex_p: @@ -21108,7 +21380,7 @@ } } \cs_new:Npn \__str_decode_clist_char:n #1 - { #1 \s__tl \int_eval:n {#1} \s__tl } + { #1 \s__str \int_eval:n {#1} \s__str } \cs_new_protected:Npn \__str_convert_encode_clist: { \__str_convert_gmap_internal:N \__str_encode_clist_char:n @@ -21131,11 +21403,11 @@ \int_zero:N \l__str_internal_int \exp_last_unbraced:Nx \__str_decode_eight_bit_load:nn { \tl_use:c { c__str_encoding_#1_tl } } - { \q_stop \prg_break: } { } + { \s__str_stop \prg_break: } { } \prg_break_point: \exp_last_unbraced:Nx \__str_decode_eight_bit_load_missing:n { \tl_use:c { c__str_encoding_#1_missing_tl } } - { \q_stop \prg_break: } + { \s__str_stop \prg_break: } \prg_break_point: \flag_clear:n { str_error } \__str_convert_gmap:N \__str_decode_eight_bit_char:N @@ -21144,7 +21416,7 @@ } \cs_new_protected:Npn \__str_decode_eight_bit_load:nn #1#2 { - \use_none_delimit_by_q_stop:w #1 \q_stop + \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop: \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop: \tex_toks:D \l__str_internal_int \exp_after:wN { \int_value:w "#2 } @@ -21153,7 +21425,7 @@ } \cs_new_protected:Npn \__str_decode_eight_bit_load_missing:n #1 { - \use_none_delimit_by_q_stop:w #1 \q_stop + \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop: \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop: \tex_toks:D \l__str_internal_int \exp_after:wN @@ -21163,13 +21435,13 @@ } \cs_new:Npn \__str_decode_eight_bit_char:N #1 { - #1 \s__tl + #1 \s__str \if_int_compare:w \tex_dimen:D `#1 < \l__str_internal_int \if_int_compare:w \tex_skip:D \tex_dimen:D `#1 = `#1 \exp_stop_f: \tex_the:D \tex_toks:D \tex_dimen:D \fi: \fi: - \int_value:w `#1 \s__tl + \int_value:w `#1 \s__str } \cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1 { @@ -21177,7 +21449,7 @@ \int_zero:N \l__str_internal_int \exp_last_unbraced:Nx \__str_encode_eight_bit_load:nn { \tl_use:c { c__str_encoding_#1_tl } } - { \q_stop \prg_break: } { } + { \s__str_stop \prg_break: } { } \prg_break_point: \flag_clear:n { str_error } \__str_convert_gmap_internal:N \__str_encode_eight_bit_char:n @@ -21186,7 +21458,7 @@ } \cs_new_protected:Npn \__str_encode_eight_bit_load:nn #1#2 { - \use_none_delimit_by_q_stop:w #1 \q_stop + \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop \tex_dimen:D "#2 = \l__str_internal_int sp \scan_stop: \tex_skip:D \l__str_internal_int = "#2 sp \scan_stop: \exp_args:NNf \tex_toks:D \l__str_internal_int @@ -21535,17 +21807,17 @@ { 32 } { 192 } { 16 } { 224 } { 8 } { 240 } - \q_stop + \s__str_stop } -\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \q_stop +\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \s__str_stop { \if_int_compare:w #1 < #3 \exp_stop_f: \__str_output_byte:n { #1 + #4 } - \exp_after:wN \use_none_delimit_by_q_stop:w + \exp_after:wN \__str_use_none_delimit_by_s_stop:w \fi: \exp_after:wN \__str_encode_utf_viii_loop:wwnnw \int_value:w \int_div_truncate:nn {#1} {64} ; #1 ; - #5 \q_stop + #5 \s__str_stop \__str_output_byte:n { #2 - 64 * ( #1 - 2 ) } } \flag_clear_new:n { str_missing } @@ -21618,7 +21890,7 @@ { #1 \if_int_compare:w `#1 < "C0 \exp_stop_f: - \s__tl + \s__str \if_int_compare:w `#1 < "80 \exp_stop_f: \int_value:w `#1 \else: @@ -21630,12 +21902,12 @@ \exp_after:wN \__str_decode_utf_viii_continuation:wwN \int_value:w \int_eval:n { `#1 - "C0 } \exp_after:wN \fi: - \s__tl - \use_none_delimit_by_q_stop:w {"80} {"800} {"10000} {"110000} \q_stop + \s__str + \__str_use_none_delimit_by_s_stop:w {"80} {"800} {"10000} {"110000} \s__str_stop \__str_decode_utf_viii_start:N } \cs_new:Npn \__str_decode_utf_viii_continuation:wwN - #1 \s__tl #2 \__str_decode_utf_viii_start:N #3 + #1 \s__str #2 \__str_decode_utf_viii_start:N #3 { \use_none:n #3 \if_int_compare:w `#3 < @@ -21645,20 +21917,20 @@ \exp_after:wN \__str_decode_utf_viii_aux:wNnnwN \int_value:w \int_eval:n { #1 * "40 + `#3 - "80 } \exp_after:wN \else: - \s__tl + \s__str \flag_raise:n { str_missing } \flag_raise:n { str_error } \int_use:N \c__str_replacement_char_int \fi: - \s__tl + \s__str #2 \__str_decode_utf_viii_start:N #3 } \cs_new:Npn \__str_decode_utf_viii_aux:wNnnwN - #1 \s__tl #2#3#4 #5 \__str_decode_utf_viii_start:N #6 + #1 \s__str #2#3#4 #5 \__str_decode_utf_viii_start:N #6 { \if_int_compare:w #1 < #4 \exp_stop_f: - \s__tl + \s__str \if_int_compare:w #1 < #3 \exp_stop_f: \flag_raise:n { str_overlong } \flag_raise:n { str_error } @@ -21667,13 +21939,13 @@ #1 \fi: \else: - \if_meaning:w \q_stop #5 + \if_meaning:w \s__str_stop #5 \__str_decode_utf_viii_overflow:w #1 \fi: \exp_after:wN \__str_decode_utf_viii_continuation:wwN \int_value:w \int_eval:n { #1 - #4 } \exp_after:wN \fi: - \s__tl + \s__str #2 {#4} #5 \__str_decode_utf_viii_start:N } @@ -21686,10 +21958,10 @@ } \cs_new:Npn \__str_decode_utf_viii_end: { - \s__tl + \s__str \flag_raise:n { str_missing } \flag_raise:n { str_error } - \int_use:N \c__str_replacement_char_int \s__tl + \int_use:N \c__str_replacement_char_int \s__str \prg_break: } \group_begin: @@ -21781,13 +22053,13 @@ } } \cs_new_protected:cpn { __str_convert_decode_utf16be: } - { \__str_decode_utf_xvi:Nw 1 \g__str_result_tl \s_stop } + { \__str_decode_utf_xvi:Nw 1 \g__str_result_tl \s__str_stop } \cs_new_protected:cpn { __str_convert_decode_utf16le: } - { \__str_decode_utf_xvi:Nw 2 \g__str_result_tl \s_stop } + { \__str_decode_utf_xvi:Nw 2 \g__str_result_tl \s__str_stop } \cs_new_protected:cpn { __str_convert_decode_utf16: } { \exp_after:wN \__str_decode_utf_xvi_bom:NN - \g__str_result_tl \s_stop \s_stop \s_stop + \g__str_result_tl \s__str_stop \s__str_stop \s__str_stop } \cs_new_protected:Npn \__str_decode_utf_xvi_bom:NN #1#2 { @@ -21799,7 +22071,7 @@ { \__str_decode_utf_xvi:Nw 1 #1#2 } } } - \cs_new_protected:Npn \__str_decode_utf_xvi:Nw #1#2 \s_stop + \cs_new_protected:Npn \__str_decode_utf_xvi:Nw #1#2 \s__str_stop { \flag_clear:n { str_error } \flag_clear:n { str_missing } @@ -21809,14 +22081,14 @@ \tl_gset:Nx \g__str_result_tl { \exp_after:wN \__str_decode_utf_xvi_pair:NN - #2 \q_nil \q_nil + #2 \q__str_nil \q__str_nil \prg_break_point: } \__str_if_flag_error:nnx { str_error } { utf16-decode } { } } \cs_new:Npn \__str_decode_utf_xvi_pair:NN #1#2 { - \if_meaning:w \q_nil #2 + \if_meaning:w \q__str_nil #2 \__str_decode_utf_xvi_pair_end:Nw #1 \fi: \if_case:w @@ -21824,14 +22096,14 @@ \or: \exp_after:wN \__str_decode_utf_xvi_quad:NNwNN \or: \exp_after:wN \__str_decode_utf_xvi_extra:NNw \fi: - #1#2 \s__tl - \int_eval:n { "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 } \s__tl + #1#2 \s__str + \int_eval:n { "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 } \s__str \__str_decode_utf_xvi_pair:NN } \cs_new:Npn \__str_decode_utf_xvi_quad:NNwNN #1#2 #3 \__str_decode_utf_xvi_pair:NN #4#5 { - \if_meaning:w \q_nil #5 + \if_meaning:w \q__str_nil #5 \__str_decode_utf_xvi_error:nNN { missing } #1#2 \__str_decode_utf_xvi_pair_end:Nw #4 \fi: @@ -21842,13 +22114,13 @@ \__str_tmp:w #4#5 < "E0 \fi: \exp_stop_f: - #1 #2 #4 #5 \s__tl + #1 #2 #4 #5 \s__str \int_eval:n { ( "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 - "D7F7 ) * "400 + "100 * \__str_tmp:w #4#5 + \__str_tmp:w #5#4 } - \s__tl + \s__str \exp_after:wN \use_i:nnn \else: \__str_decode_utf_xvi_error:nNN { missing } #1#2 @@ -21858,20 +22130,20 @@ \cs_new:Npn \__str_decode_utf_xvi_pair_end:Nw #1 \fi: { \fi: - \if_meaning:w \q_nil #1 + \if_meaning:w \q__str_nil #1 \else: \__str_decode_utf_xvi_error:nNN { end } #1 \prg_do_nothing: \fi: \prg_break: } - \cs_new:Npn \__str_decode_utf_xvi_extra:NNw #1#2 \s__tl #3 \s__tl + \cs_new:Npn \__str_decode_utf_xvi_extra:NNw #1#2 \s__str #3 \s__str { \__str_decode_utf_xvi_error:nNN { extra } #1#2 } \cs_new:Npn \__str_decode_utf_xvi_error:nNN #1#2#3 { \flag_raise:n { str_error } \flag_raise:n { str_#1 } - #2 #3 \s__tl - \int_use:N \c__str_replacement_char_int \s__tl + #2 #3 \s__str + \int_use:N \c__str_replacement_char_int \s__str } \group_end: \group_begin: @@ -21939,13 +22211,13 @@ } } \cs_new_protected:cpn { __str_convert_decode_utf32be: } - { \__str_decode_utf_xxxii:Nw 1 \g__str_result_tl \s_stop } + { \__str_decode_utf_xxxii:Nw 1 \g__str_result_tl \s__str_stop } \cs_new_protected:cpn { __str_convert_decode_utf32le: } - { \__str_decode_utf_xxxii:Nw 2 \g__str_result_tl \s_stop } + { \__str_decode_utf_xxxii:Nw 2 \g__str_result_tl \s__str_stop } \cs_new_protected:cpn { __str_convert_decode_utf32: } { \exp_after:wN \__str_decode_utf_xxxii_bom:NNNN \g__str_result_tl - \s_stop \s_stop \s_stop \s_stop \s_stop + \s__str_stop \s__str_stop \s__str_stop \s__str_stop \s__str_stop } \cs_new_protected:Npn \__str_decode_utf_xxxii_bom:NNNN #1#2#3#4 { @@ -21957,7 +22229,7 @@ { \__str_decode_utf_xxxii:Nw 1 #1#2#3#4 } } } - \cs_new_protected:Npn \__str_decode_utf_xxxii:Nw #1#2 \s_stop + \cs_new_protected:Npn \__str_decode_utf_xxxii:Nw #1#2 \s__str_stop { \flag_clear:n { str_overflow } \flag_clear:n { str_end } @@ -21966,17 +22238,17 @@ \tl_gset:Nx \g__str_result_tl { \exp_after:wN \__str_decode_utf_xxxii_loop:NNNN - #2 \s_stop \s_stop \s_stop \s_stop + #2 \s__str_stop \s__str_stop \s__str_stop \s__str_stop \prg_break_point: } \__str_if_flag_error:nnx { str_error } { utf32-decode } { } } \cs_new:Npn \__str_decode_utf_xxxii_loop:NNNN #1#2#3#4 { - \if_meaning:w \s_stop #4 + \if_meaning:w \s__str_stop #4 \exp_after:wN \__str_decode_utf_xxxii_end:w \fi: - #1#2#3#4 \s__tl + #1#2#3#4 \s__str \if_int_compare:w \__str_tmp:w #1#4 > 0 \exp_stop_f: \flag_raise:n { str_overflow } \flag_raise:n { str_error } @@ -21991,17 +22263,17 @@ { \__str_tmp:w #2#3*"10000 + \__str_tmp:w #3#2*"100 + \__str_tmp:w #4#1 } \fi: \fi: - \s__tl + \s__str \__str_decode_utf_xxxii_loop:NNNN } - \cs_new:Npn \__str_decode_utf_xxxii_end:w #1 \s_stop + \cs_new:Npn \__str_decode_utf_xxxii_end:w #1 \s__str_stop { \tl_if_empty:nF {#1} { \flag_raise:n { str_end } \flag_raise:n { str_error } - #1 \s__tl - \int_use:N \c__str_replacement_char_int \s__tl + #1 \s__str + \int_use:N \c__str_replacement_char_int \s__str } \prg_break: } @@ -22499,6 +22771,13 @@ \int_const:Nn \c__regex_ascii_max_control_int { 31 } \int_const:Nn \c__regex_ascii_max_int { 127 } \int_const:Nn \c__regex_ascii_lower_int { `a - `A } +\quark_new:N \q__regex_recursion_stop +\cs_new:Npn \__regex_use_none_delimit_by_q_recursion_stop:w + #1 \q__regex_recursion_stop { } +\cs_new:Npn \__regex_use_i_delimit_by_q_recursion_stop:nw + #1 #2 \q__regex_recursion_stop {#1} +\quark_new:N \q__regex_nil +\__kernel_quark_new_conditional:Nn \__regex_quark_if_nil:N { F } \cs_new_protected:Npn \__regex_break_true:w #1 \__regex_break_point:TF #2 #3 {#2} \cs_new_protected:Npn \__regex_break_point:TF #1 #2 { #2 } @@ -23742,7 +24021,7 @@ \tl_set:Nx \l__regex_internal_a_tl { \exp_after:wN \__regex_compile_cs_aux:Nn \l__regex_internal_regex - \q_nil \q_nil \q_recursion_stop + \q__regex_nil \q__regex_nil \q__regex_recursion_stop } \exp_args:Nx \__regex_compile_one:n { @@ -23760,12 +24039,13 @@ { \scan_stop: \__regex_compile_cs_aux:NNnnnN #2 - \q_nil \q_nil \q_nil \q_nil \q_nil \q_nil \q_recursion_stop + \q__regex_nil \q__regex_nil \q__regex_nil + \q__regex_nil \q__regex_nil \q__regex_nil \q__regex_recursion_stop \__regex_compile_cs_aux:Nn } { - \quark_if_nil:NF #1 { \flag_raise_if_clear:n { __regex_cs } } - \use_none_delimit_by_q_recursion_stop:w + \__regex_quark_if_nil:NF #1 { \flag_raise_if_clear:n { __regex_cs } } + \__regex_use_none_delimit_by_q_recursion_stop:w } } \cs_new:Npn \__regex_compile_cs_aux:NNnnnN #1#2#3#4#5#6 @@ -23784,12 +24064,12 @@ \__regex_compile_cs_aux:NNnnnN } { - \quark_if_nil:NF #1 + \__regex_quark_if_nil:NF #1 { \flag_raise_if_clear:n { __regex_cs } - \use_i_delimit_by_q_recursion_stop:nw + \__regex_use_i_delimit_by_q_recursion_stop:nw } - \use_none_delimit_by_q_recursion_stop:w + \__regex_use_none_delimit_by_q_recursion_stop:w } } \cs_new_protected:cpn { __regex_compile_/u: } #1#2 @@ -26319,18 +26599,19 @@ \__color_backend_pickup:N \l__color_current_tl \__color_select:V \l__color_current_tl } +\scan_new:N \s__color_stop \cs_new_protected:Npn \__color_select:n #1 - { \__color_select:w #1 \q_stop } + { \__color_select:w #1 \s__color_stop } \cs_generate_variant:Nn \__color_select:n { V } -\cs_new_protected:Npn \__color_select:w #1 ~ #2 \q_stop - { \use:c { __color_select_ #1 :w } #2 \q_stop } -\cs_new_protected:Npn \__color_select_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop +\cs_new_protected:Npn \__color_select:w #1 ~ #2 \s__color_stop + { \use:c { __color_select_ #1 :w } #2 \s__color_stop } +\cs_new_protected:Npn \__color_select_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop { \__color_backend_cmyk:nnnn {#1} {#2} {#3} {#4} } -\cs_new_protected:Npn \__color_select_gray:w #1 \q_stop +\cs_new_protected:Npn \__color_select_gray:w #1 \s__color_stop { \__color_backend_gray:n {#1} } -\cs_new_protected:Npn \__color_select_rgb:w #1 ~ #2 ~ #3 \q_stop +\cs_new_protected:Npn \__color_select_rgb:w #1 ~ #2 ~ #3 \s__color_stop { \__color_backend_rgb:nnn {#1} {#2} {#3} } -\cs_new_protected:Npn \__color_select_spot:w #1 ~ #2 \q_stop +\cs_new_protected:Npn \__color_select_spot:w #1 ~ #2 \s__color_stop { \__color_backend_spot:nn {#1} {#2} } \tl_new:N \l__color_current_tl \tl_set:Nn \l__color_current_tl { gray~0 } @@ -27765,6 +28046,14 @@ \group_end: } %% File: l3text.dtx +\scan_new:N \s__text_stop +\quark_new:N \q__text_nil +\__kernel_quark_new_conditional:Nn \__text_quark_if_nil:n { TF } +\quark_new:N \q__text_recursion_tail +\quark_new:N \q__text_recursion_stop +\cs_new:Npn \__text_use_i_delimit_by_q_recursion_stop:nw + #1 #2 \q__text_recursion_stop {#1} +\__kernel_quark_new_test:N \__text_if_recursion_tail_stop_do:Nn \group_begin: \char_set_catcode_active:n { 0 } \cs_new:Npn \__text_token_to_explicit:N #1 @@ -27832,9 +28121,9 @@ \if_catcode:w + #1 12 \else: 4 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \exp_after:wN ; - \token_to_meaning:N #1 \q_stop + \token_to_meaning:N #1 \s__text_stop } -\cs_new:Npn \__text_token_to_explicit_auxi:w #1 ; #2 \q_stop +\cs_new:Npn \__text_token_to_explicit_auxi:w #1 ; #2 \s__text_stop { \char_generate:nn { @@ -27890,7 +28179,7 @@ { { \token_if_protected_macro_p:N #1 } { \token_if_protected_long_macro_p:N #1 } - { \token_if_eq_meaning_p:NN \q_recursion_tail #1 } + { \token_if_eq_meaning_p:NN \q__text_recursion_tail #1 } } { \prg_return_false: } { \prg_return_true: } @@ -27943,7 +28232,7 @@ { \group_align_safe_begin: \__text_expand_loop:w #1 - \q_recursion_tail \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_stop \__text_expand_result:n { } } \cs_new:Npn \__text_expand_store:n #1 @@ -27957,7 +28246,7 @@ \exp_end: #2 } -\cs_new:Npn \__text_expand_loop:w #1 \q_recursion_stop +\cs_new:Npn \__text_expand_loop:w #1 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#1} { \__text_expand_N_type:N } @@ -27966,7 +28255,7 @@ { \__text_expand_group:n } { \__text_expand_space:w } } - #1 \q_recursion_stop + #1 \q__text_recursion_stop } \cs_new:Npn \__text_expand_group:n #1 { @@ -27987,7 +28276,7 @@ } \cs_new:Npx \__text_expand_N_type:N #1 { - \exp_not:N \quark_if_recursion_tail_stop_do:Nn #1 + \exp_not:N \__text_if_recursion_tail_stop_do:Nn #1 { \exp_not:N \__text_expand_end:w } \exp_not:N \bool_lazy_any:nTF { @@ -28044,16 +28333,16 @@ { \exp_after:wN \__text_expand_math_search:NNN \exp_after:wN #1 \l_text_math_delims_tl - \q_recursion_tail \q_recursion_tail - \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_tail + \q__text_recursion_stop } \cs_new:Npn \__text_expand_math_search:NNN #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_expand_explicit:N #1 } \token_if_eq_meaning:NNTF #1 #2 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_expand_store:n {#1} \__text_expand_math_loop:Nw #3 @@ -28061,7 +28350,7 @@ } { \__text_expand_math_search:NNN #1 } } -\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \q_recursion_stop +\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#2} { \__text_expand_math_N_type:NN } @@ -28070,11 +28359,11 @@ { \__text_expand_math_group:Nn } { \__text_expand_math_space:Nw } } - #1#2 \q_recursion_stop + #1#2 \q__text_recursion_stop } \cs_new:Npn \__text_expand_math_N_type:NN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_expand_end:w } \__text_expand_store:n {#2} \token_if_eq_meaning:NNTF #2 #1 @@ -28114,15 +28403,15 @@ \cs_new:Npn \__text_expand_exclude:nN #1#2 { \__text_expand_exclude:NN #2 #1 - \q_recursion_tail \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_stop } \cs_new:Npn \__text_expand_exclude:NN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_expand_letterlike:N #1 } \cs_if_eq:NNTF #2 #1 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_expand_exclude:Nn #1 } } { \__text_expand_exclude:NN #1 } @@ -28136,15 +28425,15 @@ { \exp_after:wN \__text_expand_letterlike:NN \exp_after:wN #1 \l_text_letterlike_tl - \q_recursion_tail \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_stop } \cs_new:Npn \__text_expand_letterlike:NN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_expand_cs:N #1 } \cs_if_eq:NNTF #2 #1 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_expand_store:n {#1} \__text_expand_loop:w @@ -28168,10 +28457,10 @@ { \cs_to_str:N #1 } #1 } \cs_new:Npn \__text_expand_protect:nN #1#2 - { \__text_expand_protect:Nw #2 #1 \q_nil #1 ~ \q_nil \q_nil \q_stop } -\cs_new:Npn \__text_expand_protect:Nw #1 #2 ~ \q_nil #3 \q_nil #4 \q_stop + { \__text_expand_protect:Nw #2 #1 \q__text_nil #1 ~ \q__text_nil \q__text_nil \s__text_stop } +\cs_new:Npn \__text_expand_protect:Nw #1 #2 ~ \q__text_nil #3 \q__text_nil #4 \s__text_stop { - \quark_if_nil:nTF {#4} + \__text_quark_if_nil:nTF {#4} { \cs_if_exist:cTF {#2} { \exp_args:Ne \__text_expand_store:n { \exp_not:c {#2} } } @@ -28269,7 +28558,7 @@ { \group_align_safe_begin: \__text_change_case_loop:nnw {#2} {#3} #1 - \q_recursion_tail \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_stop \__text_change_case_result:n { } } \cs_new:Npn \__text_change_case_store:n #1 @@ -28283,7 +28572,7 @@ \exp_end: #2 } -\cs_new:Npn \__text_change_case_loop:nnw #1#2#3 \q_recursion_stop +\cs_new:Npn \__text_change_case_loop:nnw #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_change_case_N_type:nnN } @@ -28292,9 +28581,9 @@ { \use:c { __text_change_case_group_ #1 :nnn } } { \__text_change_case_space:nnw } } - {#1} {#2} #3 \q_recursion_stop + {#1} {#2} #3 \q__text_recursion_stop } -\cs_new:Npn \__text_change_case_break:w #1 \q_recursion_tail \q_recursion_stop +\cs_new:Npn \__text_change_case_break:w #1 \q__text_recursion_tail \q__text_recursion_stop { \__text_change_case_store:n {#1} \__text_change_case_end:w @@ -28347,7 +28636,7 @@ } \cs_new:Npn \__text_change_case_N_type:nnN #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #3 + \__text_if_recursion_tail_stop_do:Nn #3 { \__text_change_case_end:w } \__text_change_case_N_type_aux:nnN {#1} {#2} #3 } @@ -28359,16 +28648,16 @@ \cs_new:Npn \__text_change_case_N_type:nnnN #1#2#3#4 { \__text_change_case_math_search:nnNNN {#2} {#3} #4 #1 - \q_recursion_tail \q_recursion_tail - \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_tail + \q__text_recursion_stop } \cs_new:Npn \__text_change_case_math_search:nnNNN #1#2#3#4#5 { - \quark_if_recursion_tail_stop_do:Nn #4 + \__text_if_recursion_tail_stop_do:Nn #4 { \__text_change_case_cs_check:nnN {#1} {#2} #3 } \token_if_eq_meaning:NNTF #3 #4 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_change_case_store:n {#3} \__text_change_case_math_loop:nnNw {#1} {#2} #5 @@ -28376,7 +28665,7 @@ } { \__text_change_case_math_search:nnNNN {#1} {#2} #3 } } -\cs_new:Npn \__text_change_case_math_loop:nnNw #1#2#3#4 \q_recursion_stop +\cs_new:Npn \__text_change_case_math_loop:nnNw #1#2#3#4 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#4} { \__text_change_case_math_N_type:nnNN } @@ -28385,11 +28674,11 @@ { \__text_change_case_math_group:nnNn } { \__text_change_case_math_space:nnNw } } - {#1} {#2} #3 #4 \q_recursion_stop + {#1} {#2} #3 #4 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_math_N_type:nnNN #1#2#3#4 { - \quark_if_recursion_tail_stop_do:Nn #4 + \__text_if_recursion_tail_stop_do:Nn #4 { \__text_change_case_end:w } \__text_change_case_store:n {#4} \token_if_eq_meaning:NNTF #4 #3 @@ -28429,15 +28718,15 @@ \cs_new:Npn \__text_change_case_exclude:nnnN #1#2#3#4 { \__text_change_case_exclude:nnNN {#2} {#3} #4 #1 - \q_recursion_tail \q_recursion_stop + \q__text_recursion_tail \q__text_recursion_stop } \cs_new:Npn \__text_change_case_exclude:nnNN #1#2#3#4 { - \quark_if_recursion_tail_stop_do:Nn #4 + \__text_if_recursion_tail_stop_do:Nn #4 { \use:c { __text_change_case_letterlike_ #1 :nnN } {#1} {#2} #3 } \cs_if_eq:NNTF #3 #4 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_change_case_exclude:nnNn {#1} {#2} #3 } } { \__text_change_case_exclude:nnNN {#1} {#2} #3 } @@ -28503,7 +28792,7 @@ { \__text_change_case_lower_sigma:nnNw {#2} {#3} #4 } { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 } } - \cs_new:Npn \__text_change_case_lower_sigma:nnNw #1#2#3#4 \q_recursion_stop + \cs_new:Npn \__text_change_case_lower_sigma:nnNw #1#2#3#4 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#4} { \__text_change_case_lower_sigma:NnnN #3 } @@ -28512,7 +28801,7 @@ { \char_generate:nn { "03C2 } { \__text_char_catcode:N #3 } } \__text_change_case_loop:nnw } - {#1} {#2} #4 \q_recursion_stop + {#1} {#2} #4 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_lower_sigma:NnnN #1#2#3#4 { @@ -28674,12 +28963,12 @@ \__text_change_case_upper_el_loop:nnw {#2} {#3} } \cs_new:Npn \__text_change_case_upper_el_loop:nnw - #1#2#3 \q_recursion_stop + #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_change_case_upper_el:nnN } { \__text_change_case_loop:nnw } - {#1} {#2} #3 \q_recursion_stop + {#1} {#2} #3 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_upper_el:nnN #1#2#3 { @@ -28806,12 +29095,12 @@ \__text_change_case_lower_lt:nnw {#2} {#3} } } - \cs_new:Npn \__text_change_case_lower_lt:nnw #1#2#3 \q_recursion_stop + \cs_new:Npn \__text_change_case_lower_lt:nnw #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_change_case_lower_lt:nnN } { \__text_change_case_loop:nnw } - {#1} {#2} #3 \q_recursion_stop + {#1} {#2} #3 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_lower_lt:nnN #1#2#3 { @@ -28859,12 +29148,12 @@ \__text_change_case_upper_lt:nnw {#2} {#3} } } - \cs_new:Npn \__text_change_case_upper_lt:nnw #1#2#3 \q_recursion_stop + \cs_new:Npn \__text_change_case_upper_lt:nnw #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_change_case_upper_lt:nnN } { \use:c { __text_change_case_char_next_ #1 :nn } } - {#1} {#2} #3 \q_recursion_stop + {#1} {#2} #3 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_upper_lt:nnN #1#2#3 { @@ -28887,12 +29176,12 @@ } { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 } } -\cs_new:Npn \__text_change_case_title_nl:nnw #1#2#3 \q_recursion_stop +\cs_new:Npn \__text_change_case_title_nl:nnw #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_change_case_title_nl:nnN } { \use:c { __text_change_case_char_next_ #1 :nn } } - {#1} {#2} #3 \q_recursion_stop + {#1} {#2} #3 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_title_nl:nnN #1#2#3 { @@ -28928,7 +29217,7 @@ { \__text_change_case_lower_sigma:nnnN {#1} {#2} {#3} #4 } } } - \cs_new:Npn \__text_change_case_lower_tr:nnNw #1#2#3#4 \q_recursion_stop + \cs_new:Npn \__text_change_case_lower_tr:nnNw #1#2#3#4 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#4} { \__text_change_case_lower_tr:NnnN #3 } @@ -28937,7 +29226,7 @@ { \char_generate:nn { "0131 } { \__text_char_catcode:N #3 } } \__text_change_case_loop:nnw } - {#1} {#2} #4 \q_recursion_stop + {#1} {#2} #4 \q__text_recursion_stop } \cs_new:Npn \__text_change_case_lower_tr:NnnN #1#2#3#4 { @@ -29358,6 +29647,7 @@ } } %% File: l3text-purify.dtx +\__kernel_quark_new_test:N \__text_if_recursion_tail_stop:N \cs_new:Npn \text_purify:n #1 { \group_align_safe_begin: @@ -29366,8 +29656,8 @@ \group_align_safe_end: } \cs_new:Npn \__text_purify:n #1 - { \__text_purify_loop:w #1 \q_recursion_tail \q_recursion_stop } -\cs_new:Npn \__text_purify_loop:w #1 \q_recursion_stop + { \__text_purify_loop:w #1 \q__text_recursion_tail \q__text_recursion_stop } +\cs_new:Npn \__text_purify_loop:w #1 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#1} { \__text_purify_N_type:N } @@ -29376,7 +29666,7 @@ { \__text_purify_group:n } { \__text_purify_space:w } } - #1 \q_recursion_stop + #1 \q__text_recursion_stop } \cs_new:Npn \__text_purify_group:n #1 { \__text_purify_loop:w #1 } \exp_last_unbraced:NNo \cs_new:Npn \__text_purify_space:w \c_space_tl @@ -29386,30 +29676,30 @@ } \cs_new:Npn \__text_purify_N_type:N #1 { - \quark_if_recursion_tail_stop:N #1 + \__text_if_recursion_tail_stop:N #1 \__text_purify_N_type_aux:N #1 } \cs_new:Npn \__text_purify_N_type_aux:N #1 { \exp_after:wN \__text_purify_math_search:NNN \exp_after:wN #1 \l_text_math_delims_tl - \q_recursion_tail ? - \q_recursion_stop + \q__text_recursion_tail ? + \q__text_recursion_stop } \cs_new:Npn \__text_purify_math_search:NNN #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_purify_math_cmd:N #1 } \token_if_eq_meaning:NNTF #1 #2 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_purify_math_start:NNw #2 #3 } } { \__text_purify_math_search:NNN #1 } } -\cs_new:Npn \__text_purify_math_start:NNw #1#2#3 \q_recursion_stop +\cs_new:Npn \__text_purify_math_start:NNw #1#2#3 \q__text_recursion_stop { - \__text_purify_math_loop:NNw #1#2#3 \q_recursion_stop + \__text_purify_math_loop:NNw #1#2#3 \q__text_recursion_stop \__text_purify_math_result:n { } } \cs_new:Npn \__text_purify_math_store:n #1 @@ -29423,7 +29713,7 @@ } \cs_new:Npn \__text_purify_math_stop:Nw #1 \__text_purify_math_result:n #2 { \exp_not:n {#1#2} } -\cs_new:Npn \__text_purify_math_loop:NNw #1#2#3 \q_recursion_stop +\cs_new:Npn \__text_purify_math_loop:NNw #1#2#3 \q__text_recursion_stop { \tl_if_head_is_N_type:nTF {#3} { \__text_purify_math_N_type:NNN } @@ -29432,11 +29722,11 @@ { \__text_purify_math_group:NNn } { \__text_purify_math_space:NNw } } - #1#2#3 \q_recursion_stop + #1#2#3 \q__text_recursion_stop } \cs_new:Npn \__text_purify_math_N_type:NNN #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #3 + \__text_if_recursion_tail_stop_do:Nn #3 { \__text_purify_math_stop:Nw #1 } \token_if_eq_meaning:NNTF #3 #2 { \__text_purify_math_end:w } @@ -29460,15 +29750,15 @@ \cs_new:Npn \__text_purify_math_cmd:N #1 { \exp_after:wN \__text_purify_math_cmd:NN \exp_after:wN #1 - \l_text_math_arg_tl \q_recursion_tail \q_recursion_stop + \l_text_math_arg_tl \q__text_recursion_tail \q__text_recursion_stop } \cs_new:Npn \__text_purify_math_cmd:NN #1#2 { - \quark_if_recursion_tail_stop_do:Nn #2 + \__text_if_recursion_tail_stop_do:Nn #2 { \__text_purify_replace:N #1 } \cs_if_eq:NNTF #2 #1 { - \use_i_delimit_by_q_recursion_stop:nw + \__text_use_i_delimit_by_q_recursion_stop:nw { \__text_purify_math_cmd:n } } { \__text_purify_math_cmd:NN #1 } @@ -29510,7 +29800,7 @@ } \cs_new:Npn \__text_purify_protect:N #1 { - \quark_if_recursion_tail_stop:N #1 + \__text_if_recursion_tail_stop:N #1 \__text_purify_loop:w } \cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2 @@ -30082,8 +30372,8 @@ \cs_new:Npn \__msg_expandable_error_module:nn #1#2 { \exp_after:wN \exp_after:wN - \exp_after:wN \use_none_delimit_by_q_stop:w - \use:n { \::error ! ~ #2 : ~ #1 } \q_stop + \exp_after:wN \__msg_use_none_delimit_by_s_stop:w + \use:n { \::error ! ~ #2 : ~ #1 } \s__msg_stop } \cs_new_protected:Npn \msg_show_eval:Nn #1#2 { \exp_args:Nf \__msg_show_eval:nnN { #1 {#2} } {#2} \tl_show:n } @@ -30114,6 +30404,8 @@ \cs_new_protected:Npn \bool_gset_inverse:N #1 { \bool_if:NTF #1 { \bool_gset_false:N } { \bool_gset_true:N } #1 } \cs_generate_variant:Nn \bool_gset_inverse:N { c } +\scan_new:N \s__bool_mark +\scan_new:N \s__bool_stop \cs_new:Npn \bool_case_true:nTF { \exp:w \__bool_case:NnTF \c_true_bool } \cs_new:Npn \bool_case_true:nT #1#2 @@ -30133,7 +30425,7 @@ \cs_new:Npn \__bool_case:NnTF #1#2#3#4 { \bool_if:NTF #1 \__bool_case_true:w \__bool_case_false:w - #2 #1 { } \q_mark {#3} \q_mark {#4} \q_stop + #2 #1 { } \s__bool_mark {#3} \s__bool_mark {#4} \s__bool_stop } \cs_new:Npn \__bool_case_true:w #1#2 { @@ -30147,45 +30439,46 @@ { \__bool_case_false:w } { \__bool_case_end:nw {#2} } } -\cs_new:Npn \__bool_case_end:nw #1#2#3 \q_mark #4#5 \q_stop +\cs_new:Npn \__bool_case_end:nw #1#2#3 \s__bool_mark #4#5 \s__bool_stop { \exp_end: #1 #4 } +\cs_new:Npn \__prop_use_i_delimit_by_s_stop:nw #1 #2 \s__prop_stop {#1} \cs_new:Npn \prop_rand_key_value:N #1 { \prop_if_empty:NF #1 { \exp_after:wN \__prop_rand_item:w \int_value:w \int_rand:nn { 1 } { \prop_count:N #1 } - #1 \q_stop + #1 \s__prop_stop } } \cs_generate_variant:Nn \prop_rand_key_value:N { c } \cs_new:Npn \__prop_rand_item:w #1 \s__prop \__prop_pair:wn #2 \s__prop #3 { \int_compare:nNnF {#1} > 1 - { \use_i_delimit_by_q_stop:nw { \exp_not:n { {#2} {#3} } } } + { \__prop_use_i_delimit_by_s_stop:nw { \exp_not:n { {#2} {#3} } } } \exp_after:wN \__prop_rand_item:w \int_value:w \int_eval:n { #1 - 1 } \s__prop } \cs_new:Npn \seq_mapthread_function:NNN #1#2#3 - { \exp_after:wN \__seq_mapthread_function:wNN #2 \q_stop #1 #3 } -\cs_new:Npn \__seq_mapthread_function:wNN \s__seq #1 \q_stop #2#3 + { \exp_after:wN \__seq_mapthread_function:wNN #2 \s__seq_stop #1 #3 } +\cs_new:Npn \__seq_mapthread_function:wNN \s__seq #1 \s__seq_stop #2#3 { - \exp_after:wN \__seq_mapthread_function:wNw #2 \q_stop #3 + \exp_after:wN \__seq_mapthread_function:wNw #2 \s__seq_stop #3 #1 { ? \prg_break: } { } \prg_break_point: } -\cs_new:Npn \__seq_mapthread_function:wNw \s__seq #1 \q_stop #2 +\cs_new:Npn \__seq_mapthread_function:wNw \s__seq #1 \s__seq_stop #2 { \__seq_mapthread_function:Nnnwnn #2 #1 { ? \prg_break: } { } - \q_stop + \s__seq_stop } -\cs_new:Npn \__seq_mapthread_function:Nnnwnn #1#2#3#4 \q_stop #5#6 +\cs_new:Npn \__seq_mapthread_function:Nnnwnn #1#2#3#4 \s__seq_stop #5#6 { \use_none:n #2 \use_none:n #5 #1 {#3} {#6} - \__seq_mapthread_function:Nnnwnn #1 #4 \q_stop + \__seq_mapthread_function:Nnnwnn #1 #4 \s__seq_stop } \cs_generate_variant:Nn \seq_mapthread_function:NNN { Nc , c , cc } \cs_new_protected:Npn \seq_set_filter:NNn @@ -30526,10 +30819,12 @@ } %% File: l3deprecation.dtx \bool_new:N \l__deprecation_grace_period_bool +\scan_new:N \s__deprecation_mark +\scan_new:N \s__deprecation_stop \cs_new:Npn \__deprecation_date_compare:nNnTF #1#2#3 - { \__deprecation_date_compare_aux:w #1 -0-0- \q_mark #2 #3 -0-0- \q_stop } + { \__deprecation_date_compare_aux:w #1 -0-0- \s__deprecation_mark #2 #3 -0-0- \s__deprecation_stop } \cs_new:Npn \__deprecation_date_compare_aux:w - #1 - #2 - #3 - #4 \q_mark #5 #6 - #7 - #8 - #9 \q_stop + #1 - #2 - #3 - #4 \s__deprecation_mark #5 #6 - #7 - #8 - #9 \s__deprecation_stop { \int_compare:nNnTF {#1} = {#6} { @@ -30549,7 +30844,7 @@ \exp_args:Nf \__deprecation_date_compare:nNnTF { \exp_after:wN \__deprecation_minus_six_months:w - \ExplLoaderFileDate -0-0- \q_stop + \ExplLoaderFileDate -0-0- \s__deprecation_stop } < {#1} { \bool_set_true:N \l__deprecation_grace_period_bool @@ -30558,7 +30853,7 @@ { \use_ii:nn } } } -\cs_new:Npn \__deprecation_minus_six_months:w #1 - #2 - #3 - #4 \q_stop +\cs_new:Npn \__deprecation_minus_six_months:w #1 - #2 - #3 - #4 \s__deprecation_stop { \int_compare:nNnTF {#2} > 6 { #1 - \int_eval:n { #2 - 6 } - #3 } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index e90fd568615..ca20bd595a7 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/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{2020-05-05}% +\def\ExplFileDate{2020-05-11}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx index 3308eb7f937..0cf5f0fd3a1 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-05-05}% +\def\ExplFileDate{2020-05-11}% \let\ExplLoaderFileDate\ExplFileDate \everyjob\expandafter{\the\everyjob \message{L3 programming layer <\ExplFileDate>}% @@ -104,6 +104,9 @@ } } { \sys_everyjob: } +\reverse_if:N \if_cs_exist:N \s__expl_stop + \scan_new:N \s__expl_stop +\fi: \tl_put_left:Nn \@pushfilename { \exp_args:Nx \__kernel_file_input_push:n @@ -130,9 +133,9 @@ \__kernel_file_input_pop: \tl_if_empty:NTF \l__expl_status_stack_tl { \ExplSyntaxOff } - { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop } + { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \s__expl_stop } } -\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \q_stop +\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \s__expl_stop { \tl_set:Nn \l__expl_status_stack_tl {#2} \int_if_odd:nTF {#1} diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 0817fbd604a..b962ab36e6e 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-05-05}% +\def\ExplFileDate{2020-05-11}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% @@ -121,6 +121,9 @@ } } { \sys_everyjob: } +\reverse_if:N \if_cs_exist:N \s__expl_stop + \scan_new:N \s__expl_stop +\fi: \tl_put_left:Nn \@pushfilename { \exp_args:Nx \__kernel_file_input_push:n @@ -147,9 +150,9 @@ \__kernel_file_input_pop: \tl_if_empty:NTF \l__expl_status_stack_tl { \ExplSyntaxOff } - { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop } + { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \s__expl_stop } } -\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \q_stop +\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \s__expl_stop { \tl_set:Nn \l__expl_status_stack_tl {#2} \int_if_odd:nTF {#1} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def index cfe9bcf7de7..8f0b6e73e4d 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def @@ -20,6 +20,13 @@ %% %% File: l3debug.dtx \ProvidesExplFile{l3debug.def}{2019-04-06}{}{L3 Debugging support} +\scan_new:N \s__debug_stop +\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1} +\quark_new:N \q__debug_recursion_tail +\quark_new:N \q__debug_recursion_stop +\cs_new:Npn \__debug_use_none_delimit_by_q_recursion_stop:w + #1 \q__debug_recursion_stop { } +\__kernel_quark_new_test:N \__debug_if_recursion_tail_stop:N \cs_set_protected:Npn \debug_on:n #1 { \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} } @@ -139,9 +146,9 @@ { \exp_args:NNf \__debug_chk_var_scope_aux:Nn #1 { \cs_to_str:N #2 } } \cs_new_protected:Npn \__debug_chk_var_scope_aux:Nn #1#2 { - \if:w _ \use_i:nn \use_i_delimit_by_q_stop:nw #2 ? ? \q_stop + \if:w _ \use_i:nn \__debug_use_i_delimit_by_s_stop:nw #2 ? ? \s__debug_stop \exp_after:wN \__debug_chk_var_scope_aux:NNn - \use_i_delimit_by_q_stop:nw #2 ? \q_stop + \__debug_use_i_delimit_by_s_stop:nw #2 ? \s__debug_stop #1 {#2} \else: \exp_args:Nc \__debug_chk_var_scope_aux:NNn @@ -216,16 +223,16 @@ \cs_new:Npn \__debug_build_parm_text:n #1 { \__debug_arg_list_from_signature:nNN { 1 } \c_false_bool #1 - \q_recursion_tail \q_recursion_stop + \q__debug_recursion_tail \q__debug_recursion_stop } \cs_new:Npn \__debug_build_arg_list:n #1 { \__debug_arg_list_from_signature:nNN { 1 } \c_true_bool #1 - \q_recursion_tail \q_recursion_stop + \q__debug_recursion_tail \q__debug_recursion_stop } \cs_new:Npn \__debug_arg_list_from_signature:nNN #1 #2 #3 { - \quark_if_recursion_tail_stop:N #3 + \__debug_if_recursion_tail_stop:N #3 \__debug_arg_check_invalid:N #3 \bool_if:NT #2 { \__debug_arg_if_braced:NT #3 { \use_none:n } } \use:n { \c_hash_str \int_eval:n {#1} } @@ -246,7 +253,7 @@ \exp_end: } \cs_new:Npn \__debug_parm_terminate:w - { \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \exp:w } + { \exp_after:wN \__debug_use_none_delimit_by_q_recursion_stop:w \exp:w } \prg_new_conditional:Npnn \__debug_arg_if_braced:N #1 { T } { \exp_args:Nf \__debug_arg_if_braced:n { \__debug_get_base_form:N #1 } } \cs_new:Npn \__debug_arg_if_braced:n #1 @@ -332,7 +339,7 @@ ####2 \tl_to_str:n { -> } ####3 \c_backslash_str \tl_to_str:n { __debug_ } \cs_to_str:N #1 - ####4 \exp_not:N \q_mark + ####4 \s__debug_stop { \exp_not:N \exp_args:Nx \exp_not:N \tex_scantokens:D { @@ -346,7 +353,7 @@ } } } - \exp_after:wN \__debug_tmp:w \cs_meaning:N #1 \q_mark + \exp_after:wN \__debug_tmp:w \cs_meaning:N #1 \s__debug_stop } \cs_set_protected:Npn \__kernel_patch_weird:nnn { @@ -943,7 +950,7 @@ \__kernel_chk_expr:nNnN {##1} \tex_glueexpr:D { } \skip_if_finite:n ; \prg_return_false: - #1 ; \prg_return_true: \q_stop + #1 ; \prg_return_true: \s__skip_stop } } \exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } } -- cgit v1.2.3