diff options
author | Karl Berry <karl@freefriends.org> | 2012-12-21 23:31:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-12-21 23:31:35 +0000 |
commit | 8bcf0c7ef3cd19666c206271cea9280846b5c7e6 (patch) | |
tree | ee538c7e2a14ad105a169fdd2e745356147577cc /Master/texmf-dist/source/latex/l3experimental/l3str | |
parent | ef0453041a9700a2d974c3c76e3398e40c4e4aeb (diff) |
l3 (21dec12)
git-svn-id: svn://tug.org/texlive/trunk@28608 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental/l3str')
4 files changed, 198 insertions, 198 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx index ce26a6098ba..3d25a841a80 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{expl3} -\GetIdInfo$Id: l3regex.dtx 4219 2012-09-09 13:28:51Z bruno $ +\GetIdInfo$Id: l3regex.dtx 4341 2012-11-27 08:39:42Z bruno $ {L3 Experimental regular expressions} %</driver|package> %<*driver> @@ -1398,7 +1398,7 @@ % number of hexadecimal digits), or not (allowing up to two % hexadecimal digits). We need to check for the end-of-string marker. % Eventually, call either \cs{@@_escape_x_loop:N} or -% \cs{@@_escape_x_ii:N}. +% \cs{@@_escape_x:N}. % \begin{macrocode} \cs_new:Npn \@@_escape_x_test:N #1 { @@ -1407,28 +1407,28 @@ \if_charcode:w \c_space_token #1 \exp_after:wN \@@_escape_x_test:N \else: - \exp_after:wN \@@_escape_x_test_ii:N + \exp_after:wN \@@_escape_x_test_two:N \exp_after:wN #1 \fi: } } -\cs_new:Npn \@@_escape_x_test_ii:N #1 +\cs_new:Npn \@@_escape_x_test_two:N #1 { \if_charcode:w \c_lbrace_str #1 \exp_after:wN \@@_escape_x_loop:N \else: \__str_hexadecimal_use:NTF #1 - { \exp_after:wN \@@_escape_x_ii:N } + { \exp_after:wN \@@_escape_x:N } { ; \exp_after:wN \@@_escape_loop:N \exp_after:wN #1 } \fi: } % \end{macrocode} % \end{macro} % -% \begin{macro}[aux]{\@@_escape_x_ii:N} +% \begin{macro}[aux]{\@@_escape_x:N} % This looks for the second digit in the unbraced case. % \begin{macrocode} -\cs_new:Npn \@@_escape_x_ii:N #1 +\cs_new:Npn \@@_escape_x:N #1 { \str_if_eq_x:nnTF {#1} { break } { ; } { @@ -2096,9 +2096,9 @@ % \begin{macro}[aux]+\@@_compile_quantifier_{:w+ ^^A} % \begin{macro}[aux] % { -% \@@_compile_quantifier_braced_i:w, -% \@@_compile_quantifier_braced_ii:w, -% \@@_compile_quantifier_braced_iii:w, +% \@@_compile_quantifier_braced_auxi:w, +% \@@_compile_quantifier_braced_auxii:w, +% \@@_compile_quantifier_braced_auxiii:w, % } % Three possible syntaxes: \texttt{\{\meta{int}\}}, % \texttt{\{\meta{int},\}}, or \texttt{\{\meta{int},\meta{int}\}}. Any @@ -2114,10 +2114,10 @@ \cs_new_protected:cpn { @@_compile_quantifier_ \c_lbrace_str :w } { \@@_get_digits:NTFw \l_@@_internal_a_int - { \@@_compile_quantifier_braced_i:w } + { \@@_compile_quantifier_braced_auxi:w } { \@@_compile_quantifier_abort:xNN { \c_lbrace_str } } } -\cs_new_protected:Npn \@@_compile_quantifier_braced_i:w #1#2 +\cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2 { \str_case_x:nnn { #1 #2 } { @@ -2129,8 +2129,8 @@ { \@@_compile_special:N , } { \@@_get_digits:NTFw \l_@@_internal_b_int - { \@@_compile_quantifier_braced_iii:w } - { \@@_compile_quantifier_braced_ii:w } + { \@@_compile_quantifier_braced_auxiii:w } + { \@@_compile_quantifier_braced_auxii:w } } } { @@ -2139,7 +2139,7 @@ #1 #2 } } -\cs_new_protected:Npn \@@_compile_quantifier_braced_ii:w #1#2 +\cs_new_protected:Npn \@@_compile_quantifier_braced_auxii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \@@_compile_special:N \c_rbrace_str } @@ -2153,7 +2153,7 @@ #1 #2 } } -\cs_new_protected:Npn \@@_compile_quantifier_braced_iii:w #1#2 +\cs_new_protected:Npn \@@_compile_quantifier_braced_auxiii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \@@_compile_special:N \c_rbrace_str } @@ -2495,7 +2495,7 @@ % \end{macro} % % \begin{macro}[aux] -% {\@@_compile_class:TFNN, \@@_compile_class_ii:NN} +% {\@@_compile_class:TFNN, \@@_compile_class:NN} % If the first character is |^|, then the class is negative (use % |#2|), otherwise it is positive (use |#1|). If the next character % is a right bracket, then it should be changed to a raw one. @@ -2506,14 +2506,14 @@ \str_if_eq:nnTF { #3 #4 } { \@@_compile_special:N ^ } { \__tl_build_one:n { #2 { \if_false: } \fi: } - \@@_compile_class_ii:NN + \@@_compile_class:NN } { \__tl_build_one:n { #1 { \if_false: } \fi: } - \@@_compile_class_ii:NN #3 #4 + \@@_compile_class:NN #3 #4 } } -\cs_new_protected:Npn \@@_compile_class_ii:NN #1#2 +\cs_new_protected:Npn \@@_compile_class:NN #1#2 { \token_if_eq_charcode:NNTF #2 ] { \@@_compile_raw:N #2 } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index 792cdcb105f..ea6c38e6564 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -227,13 +227,13 @@ % \begin{macro}[aux, EXP]{\@@_format_parse:n} % \begin{macro}[aux, EXP] % { -% \@@_format_parse_i:NN, -% \@@_format_parse_ii:nN, -% \@@_format_parse_iii:nN, -% \@@_format_parse_iv:nwN, -% \@@_format_parse_v:nN, -% \@@_format_parse_vi:nwN, -% \@@_format_parse_vii:nN, +% \@@_format_parse_auxi:NN, +% \@@_format_parse_auxii:nN, +% \@@_format_parse_auxiii:nN, +% \@@_format_parse_auxiv:nwN, +% \@@_format_parse_auxv:nN, +% \@@_format_parse_auxvi:nwN, +% \@@_format_parse_auxvii:nN, % \@@_format_parse_end:nwn, % } % The goal is to parse @@ -244,51 +244,51 @@ % \begin{macrocode} \cs_new:Npn \@@_format_parse:n #1 { - \exp_last_unbraced:Nf \@@_format_parse_i:NN + \exp_last_unbraced:Nf \@@_format_parse_auxi:NN \@@_to_other:n {#1} \s__stop \s__stop {#1} } -\cs_new:Npx \@@_format_parse_i:NN #1#2 +\cs_new:Npx \@@_format_parse_auxi:NN #1#2 { \exp_not:N \@@_if_contains_char:nNTF { < > = ^ } #2 - { \exp_not:N \@@_format_parse_iii:nN { #1 #2 } } + { \exp_not:N \@@_format_parse_auxiii:nN { #1 #2 } } { - \exp_not:N \@@_format_parse_ii:nN + \exp_not:N \@@_format_parse_auxii:nN { \c_catcode_other_space_tl } #1 #2 } } -\cs_new:Npn \@@_format_parse_ii:nN #1#2 +\cs_new:Npn \@@_format_parse_auxii:nN #1#2 { \@@_if_contains_char:nNTF { < > = ^ } #2 - { \@@_format_parse_iii:nN { #1 #2 } } - { \@@_format_parse_iii:nN { #1 ? } #2 } + { \@@_format_parse_auxiii:nN { #1 #2 } } + { \@@_format_parse_auxiii:nN { #1 ? } #2 } } -\cs_new:Npx \@@_format_parse_iii:nN #1#2 +\cs_new:Npx \@@_format_parse_auxiii:nN #1#2 { \exp_not:N \@@_if_contains_char:nNTF { + - \c_catcode_other_space_tl } #2 - { \exp_not:N \@@_format_parse_iv:nwN { #1 #2 } ; } - { \exp_not:N \@@_format_parse_iv:nwN { #1 ? } ; #2 } + { \exp_not:N \@@_format_parse_auxiv:nwN { #1 #2 } ; } + { \exp_not:N \@@_format_parse_auxiv:nwN { #1 ? } ; #2 } } -\cs_new:Npn \@@_format_parse_iv:nwN #1#2; #3 +\cs_new:Npn \@@_format_parse_auxiv:nwN #1#2; #3 { \@@_format_if_digit:NTF #3 - { \@@_format_parse_iv:nwN {#1} #2 #3 ; } - { \@@_format_parse_v:nN { #1 {#2} } #3 } + { \@@_format_parse_auxiv:nwN {#1} #2 #3 ; } + { \@@_format_parse_auxv:nN { #1 {#2} } #3 } } -\cs_new:Npn \@@_format_parse_v:nN #1#2 +\cs_new:Npn \@@_format_parse_auxv:nN #1#2 { \token_if_eq_charcode:NNTF . #2 - { \@@_format_parse_vi:nwN {#1} 0 ; } - { \@@_format_parse_vii:nN { #1 { } } #2 } + { \@@_format_parse_auxvi:nwN {#1} 0 ; } + { \@@_format_parse_auxvii:nN { #1 { } } #2 } } -\cs_new:Npn \@@_format_parse_vi:nwN #1#2; #3 +\cs_new:Npn \@@_format_parse_auxvi:nwN #1#2; #3 { \@@_format_if_digit:NTF #3 - { \@@_format_parse_vi:nwN {#1} #2 #3 ; } - { \@@_format_parse_vii:nN { #1 {#2} } #3 } + { \@@_format_parse_auxvi:nwN {#1} #2 #3 ; } + { \@@_format_parse_auxvii:nN { #1 {#2} } #3 } } -\cs_new:Npn \@@_format_parse_vii:nN #1#2 +\cs_new:Npn \@@_format_parse_auxvii:nN #1#2 { \token_if_eq_meaning:NNTF \s__stop #2 { \@@_format_parse_end:nwn { #1 ? } #2 } @@ -791,7 +791,7 @@ % \end{macro} % % \begin{macro}[aux, EXP]{\@@_format_fp_e:wn} -% \begin{macro}[aux, EXP]{\@@_format_fp_e_ii:wn} +% \begin{macro}[aux, EXP]{\@@_format_fp_e_aux:wn} % With the |e| type, first filter out special cases. In the normal % case, round to |#4+1| significant figures (one before the decimal % separator, |#4| after). @@ -810,12 +810,12 @@ {3} { nan } } { - \exp_last_unbraced:Nf \@@_format_fp_e_ii:wn + \exp_last_unbraced:Nf \@@_format_fp_e_aux:wn \@@_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } {#4} } } - \cs_new:Npn \@@_format_fp_e_ii:wn + \cs_new:Npn \@@_format_fp_e_aux:wn \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 { \@@_format_put:fw { \int_eval:n { #3 - 1 } } @@ -838,7 +838,7 @@ % \end{macro} % % \begin{macro}[aux, EXP]{\@@_format_fp_f:wn} -% \begin{macro}[aux, EXP]{\@@_format_fp_f_ii:wwn} +% \begin{macro}[aux, EXP]{\@@_format_fp_f_aux:wwwn} % With the |f| type, first filter out special cases. In the normal % case, round to |#4| (absolute) decimal places. % \begin{macrocode} @@ -851,14 +851,14 @@ {3} { nan } } { - \exp_last_unbraced:Nf \@@_format_fp_f_ii:wwwn + \exp_last_unbraced:Nf \@@_format_fp_f_aux:wwwn \fp_to_decimal:n { abs ( round ( \s__fp \__fp_chk:w #1#2#3 ; , #4 ) ) } . . ; {#4} } } -\cs_new:Npn \@@_format_fp_f_ii:wwwn #1 . #2 . #3 ; #4 +\cs_new:Npn \@@_format_fp_f_aux:wwwn #1 . #2 . #3 ; #4 { \use:nf { #1 . #2 } @@ -869,7 +869,7 @@ % \end{macro} % % \begin{macro}[aux, EXP]{\@@_format_fp_g:wn} -% \begin{macro}[aux, EXP]{\@@_format_fp_g_ii:wn} +% \begin{macro}[aux, EXP]{\@@_format_fp_g_aux:wn} % With the |g| type, first filter out special cases. In the normal % case, round to |#4| significant figures, then test the exponent: if % $-4\leq \meta{exponent} < \meta{precision}$, use the presentation @@ -889,13 +889,13 @@ {3} { nan } } { - \exp_last_unbraced:Nf \@@_format_fp_g_ii:wn + \exp_last_unbraced:Nf \@@_format_fp_g_aux:wn \@@_format_fp_round:wn \s__fp \__fp_chk:w #1#2 ; { \int_max:nn {1} {#3} } { \int_max:nn {1} {#3} } } } -\cs_new:Npn \@@_format_fp_g_ii:wn #1; #2 +\cs_new:Npn \@@_format_fp_g_aux:wn #1; #2 { \int_compare:nNnTF { \__fp_exponent:w #1; } < { -3 } { \fp_to_scientific:n } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.dtx index 7e8f00ef923..301682c64be 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{expl3} -\GetIdInfo$Id: l3str.dtx 4119 2012-08-16 22:35:59Z bruno $ +\GetIdInfo$Id: l3str.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Experimental strings} %</driver|package> %<*driver> @@ -1031,8 +1031,8 @@ % \begin{macro}[EXP]{\str_tail:N} % \begin{macro}[EXP]{\str_tail:n} % \begin{macro}[EXP]{\str_tail_ignore_spaces:n} -% \begin{macro}[EXP,aux]{\@@_tail:w} -% \begin{macro}[EXP,aux]{\@@_tail_ii:w} +% \begin{macro}[EXP,aux]{\@@_tail_auxi:w} +% \begin{macro}[EXP,aux]{\@@_tail_auxii:w} % As when fetching the head of a string, the \texttt{_ignore_spaces} % variant is similar to \cs{tl_tail:n}. The more commonly used % \cs{str_tail:n} function is a little bit more convoluted: hitting @@ -1046,17 +1046,17 @@ \cs_new_nopar:Npn \str_tail:N { \exp_args:No \str_tail:n } \cs_set:Npn \str_tail:n #1 { - \exp_after:wN \@@_tail:w + \exp_after:wN \@@_tail_auxi:w \reverse_if:N \if_charcode:w \scan_stop: \tl_to_str:n {#1} X X \q_stop } -\cs_set:Npn \@@_tail:w #1 X #2 \q_stop { \fi: #1 } +\cs_set:Npn \@@_tail_auxi:w #1 X #2 \q_stop { \fi: #1 } \cs_new:Npn \str_tail_ignore_spaces:n #1 { - \exp_after:wN \@@_tail_ii:w + \exp_after:wN \@@_tail_auxii:w \tl_to_str:n {#1} X X \q_stop } -\cs_new:Npn \@@_tail_ii:w #1 #2 X #3 \q_stop { #2 } +\cs_new:Npn \@@_tail_auxii:w #1 #2 X #3 \q_stop { #2 } % \end{macrocode} % \end{macro} % \end{macro} @@ -1066,16 +1066,16 @@ % % \begin{macro}[EXP, int]{\@@_skip_c_zero:w} % \begin{macro}[EXP, aux]{\@@_skip_loop:wNNNNNNNN} -% \begin{macro}[EXP, aux]{\@@_skip_end:w, \@@_skip_end_ii:NNNNNNNN} +% \begin{macro}[EXP, aux]{\@@_skip_end:w, \@@_skip_end:NNNNNNNN} % Removes |max(#1,0)| characters from the input stream, and then % leaves \cs{c_zero}. This should be expanded using % \cs{tex_romannumeral:D}. We remove characters $8$ at a time until % there are at most $8$ to remove. Then we do a dirty trick: the % \cs{if_case:w} construction leaves between $0$ and $8$ times the % \cs{or:} control sequence, and those \cs{or:} become arguments of -% \cs{@@_skip_end_ii:NNNNNNNN}. If the number of characters to remove +% \cs{@@_skip_end:NNNNNNNN}. If the number of characters to remove % is $6$, say, then there are two \cs{or:} left, and the $8$ arguments -% of \cs{@@_skip_end_ii:NNNNNNNN} are the two \cs{or:}, and $6$ +% of \cs{@@_skip_end:NNNNNNNN} are the two \cs{or:}, and $6$ % characters from the input stream, exactly what we wanted to % remove. Then close the \cs{if_case:w} conditional with \cs{fi:}, and % stop the initial expansion with \cs{c_zero} (see places where @@ -1095,25 +1095,25 @@ { \exp_after:wN \@@_skip_c_zero:w \int_use:N \__int_eval:w #1 - \c_eight ; } \cs_new:Npn \@@_skip_end:w #1 ; { - \exp_after:wN \@@_skip_end_ii:NNNNNNNN + \exp_after:wN \@@_skip_end:NNNNNNNN \if_case:w \if_int_compare:w #1 > \c_zero #1 \else: 0 \fi: \exp_stop_f: \or: \or: \or: \or: \or: \or: \or: \or: } -\cs_new:Npn \@@_skip_end_ii:NNNNNNNN #1#2#3#4#5#6#7#8 { \fi: \c_zero } +\cs_new:Npn \@@_skip_end:NNNNNNNN #1#2#3#4#5#6#7#8 { \fi: \c_zero } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}[EXP,int]{\@@_collect_delimit_by_q_stop:w} -% \begin{macro}[EXP,aux]{\@@_collect_loop:wn, \@@_collect_loop_ii:wnNNNNNNN} +% \begin{macro}[EXP,aux]{\@@_collect_loop:wn, \@@_collect_loop:wnNNNNNNN} % \begin{macro}[EXP,aux] -% {\@@_collect_end:wn, \@@_collect_end_ii:nnnnnnnnw} Collects +% {\@@_collect_end:wn, \@@_collect_end:nnnnnnnnw} Collects % |max(#1,0)| characters, and removes everything else until % \cs{q_stop}. This is somewhat similar to \cs{@@_skip_c_zero:w}, but % this time we can only grab $7$ characters at a time. At the end, we % use an \cs{if_case:w} trick again, so that the $8$ first arguments -% of \cs{@@_collect_end_ii:nnnnnnnnw} are some \cs{or:}, followed by +% of \cs{@@_collect_end:nnnnnnnnw} are some \cs{or:}, followed by % an \cs{fi:}, followed by |#1| characters from the input % stream. Simply leaving this in the input stream will close the % conditional properly and the \cs{or:} disappear. @@ -1127,13 +1127,13 @@ \cs_new:Npn \@@_collect_loop:wn #1 ; { \if_int_compare:w #1 > \c_seven - \exp_after:wN \@@_collect_loop_ii:wnNNNNNNN + \exp_after:wN \@@_collect_loop:wnNNNNNNN \else: \exp_after:wN \@@_collect_end:wn \fi: #1 ; } -\cs_new:Npn \@@_collect_loop_ii:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 +\cs_new:Npn \@@_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 { \exp_after:wN \@@_collect_loop:wn \int_use:N \__int_eval:w #1 - \c_seven ; @@ -1141,11 +1141,11 @@ } \cs_new:Npn \@@_collect_end:wn #1 ; { - \exp_after:wN \@@_collect_end_ii:nnnnnnnnw + \exp_after:wN \@@_collect_end:nnnnnnnnw \if_case:w \if_int_compare:w #1 > \c_zero #1 \else: 0 \fi: \exp_stop_f: \or: \or: \or: \or: \or: \or: \fi: } -\cs_new:Npn \@@_collect_end_ii:nnnnnnnnw #1#2#3#4#5#6#7#8 #9 \q_stop +\cs_new:Npn \@@_collect_end:nnnnnnnnw #1#2#3#4#5#6#7#8 #9 \q_stop { #1#2#3#4#5#6#7#8 } % \end{macrocode} % \end{macro} @@ -1217,9 +1217,9 @@ % \begin{macro}[EXP,aux] % { % \@@_substr_unsafe:nnn, -% \@@_substr_i:nN, -% \@@_substr_ii:www, -% \@@_substr_iii:nnw, +% \@@_substr:nN, +% \@@_substr:www, +% \@@_substr:nnw, % \@@_substr_normalize_range:nn % } % Sanitize the string. Then evaluate the arguments, replacing them by @@ -1242,23 +1242,23 @@ { \exp_args:No \@@_substr_unsafe:nnn { \tl_to_str:n {#1} } } \cs_new:Npn \@@_substr_unsafe:nnn #1#2#3 { - \exp_after:wN \@@_substr_ii:www + \exp_after:wN \@@_substr:www \__int_value:w \@@_count_unsafe:n {#1} \exp_after:wN ; \int_use:N \__int_eval:w #2 + \c_zero \exp_after:wN ; \int_use:N \__int_eval:w - \exp_args:Nf \@@_substr_i:nN {#3} \c_max_int ; + \exp_args:Nf \@@_substr:nN {#3} \c_max_int ; { } #1 \q_stop } -\cs_new:Npn \@@_substr_i:nN #1 #2 +\cs_new:Npn \@@_substr:nN #1 #2 { \tl_if_empty:nTF {#1} {#2} {#1} } -\cs_new:Npn \@@_substr_ii:www #1; #2; #3; +\cs_new:Npn \@@_substr:www #1; #2; #3; { - \exp_args:Nf \@@_substr_iii:nnw + \exp_args:Nf \@@_substr:nnw { \@@_substr_normalize_range:nn {#2} {#1} } { \@@_substr_normalize_range:nn {#3} {#1} } } -\cs_new:Npn \@@_substr_iii:nnw #1#2 +\cs_new:Npn \@@_substr:nnw #1#2 { \exp_after:wN \@@_collect_delimit_by_q_stop:w \int_use:N \__int_eval:w #2 + \c_one - #1 \exp_after:wN ; @@ -1647,7 +1647,7 @@ % % \begin{macro}{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} % \begin{macro}[TF]{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} -% \begin{macro}[aux]{\@@_convert_i:nNNnnn} +% \begin{macro}[aux]{\@@_convert:nNNnnn} % The input string is stored in \cs{g_@@_result_tl}, then we: % unescape and decode; encode and escape; exit the group and store the % result in the user's variable. The various conversion functions all @@ -1655,14 +1655,14 @@ % functions by redefining \cs{@@_if_flag_error:nnx} locally. % \begin{macrocode} \cs_new_protected_nopar:Npn \str_set_convert:Nnnn - { \@@_convert_i:nNNnnn { } \tl_set_eq:NN } + { \@@_convert:nNNnnn { } \tl_set_eq:NN } \cs_new_protected_nopar:Npn \str_gset_convert:Nnnn - { \@@_convert_i:nNNnnn { } \tl_gset_eq:NN } + { \@@_convert:nNNnnn { } \tl_gset_eq:NN } \prg_new_protected_conditional:Npnn \str_set_convert:Nnnn #1#2#3#4 { T , F , TF } { \bool_gset_false:N \g_@@_error_bool - \@@_convert_i:nNNnnn + \@@_convert:nNNnnn { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx } \tl_set_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true: @@ -1671,22 +1671,22 @@ \str_gset_convert:Nnnn #1#2#3#4 { T , F , TF } { \bool_gset_false:N \g_@@_error_bool - \@@_convert_i:nNNnnn + \@@_convert:nNNnnn { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx } \tl_gset_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true: } -\cs_new_protected:Npn \@@_convert_i:nNNnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \@@_convert:nNNnnn #1#2#3#4#5#6 { \group_begin: #1 \@@_gset_other:Nn \g_@@_result_tl {#4} - \exp_after:wN \@@_convert_ii:wwwnn + \exp_after:wN \@@_convert:wwwnn \tl_to_str:n {#5} /// \q_stop { decode } { unescape } \prg_do_nothing: \@@_convert_decode_: - \exp_after:wN \@@_convert_ii:wwwnn + \exp_after:wN \@@_convert:wwwnn \tl_to_str:n {#6} /// \q_stop { encode } { escape } \use_ii_i:nn @@ -1699,11 +1699,11 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_convert_ii:wwwnn} -% \begin{macro}[aux]{\@@_convert_iii:NNnNN} -% The task of \cs{@@_convert_ii:wwwnn} is to split +% \begin{macro}[aux]{\@@_convert:wwwnn} +% \begin{macro}[aux]{\@@_convert:NNnNN} +% The task of \cs{@@_convert:wwwnn} is to split % \meta{encoding}/\meta{escaping} pairs into their components, |#1| -% and |#2|. Calls to \cs{@@_convert_iv:nnn} ensure that the +% and |#2|. Calls to \cs{@@_convert:nnn} ensure that the % corresponding conversion functions are defined. The third auxiliary % does the main work. % \begin{itemize} @@ -1723,15 +1723,15 @@ % (native), then the escaping should be ignored, with an error if any % was given, and only the encoding, |#1|, should be performed. % \begin{macrocode} -\cs_new_protected:Npn \@@_convert_ii:wwwnn +\cs_new_protected:Npn \@@_convert:wwwnn #1 / #2 // #3 \q_stop #4#5 { - \@@_convert_iv:nnn {enc} {#4} {#1} - \@@_convert_iv:nnn {esc} {#5} {#2} - \exp_args:Ncc \@@_convert_iii:NNnNN + \@@_convert:nnn {enc} {#4} {#1} + \@@_convert:nnn {esc} {#5} {#2} + \exp_args:Ncc \@@_convert:NNnNN { @@_convert_#4_#1: } { @@_convert_#5_#2: } {#2} } -\cs_new_protected:Npn \@@_convert_iii:NNnNN #1#2#3#4#5 +\cs_new_protected:Npn \@@_convert:NNnNN #1#2#3#4#5 { \if_meaning:w #1 #5 \tl_if_empty:nF {#3} @@ -1745,15 +1745,15 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_convert_iv:nnn} -% \begin{macro}[aux]{\@@_convert_v:nnnn} -% The arguments of \cs{@@_convert_iv:nnn} are: \texttt{enc} or +% \begin{macro}[aux]{\@@_convert:nnn} +% \begin{macro}[aux]{\@@_convert:nnnn} +% The arguments of \cs{@@_convert:nnn} are: \texttt{enc} or % \texttt{esc}, used to build filenames, the type of the conversion % (unescape, decode, encode, escape), and the encoding or escaping % name. If the function is already defined, no need to do anything. % Otherwise, filter out all non-alphanumerics in the name, and % lowercase it. Feed that, and the same three arguments, to -% \cs{@@_convert_v:nnnn}. The task is then to make sure that the +% \cs{@@_convert:nnnn}. The task is then to make sure that the % conversion function |#3_#1| corresponding to the type |#3| and % filtered name |#1| is defined, then set our initial conversion % function |#3_#4| equal to that. @@ -1781,16 +1781,16 @@ % from the \cs{l_@@_internal_tl}-based function: we mustn't clobber % that different definition. % \begin{macrocode} -\cs_new_protected:Npn \@@_convert_iv:nnn #1#2#3 +\cs_new_protected:Npn \@@_convert:nnn #1#2#3 { \cs_if_exist:cF { @@_convert_#2_#3: } { - \exp_args:Nx \@@_convert_v:nnnn + \exp_args:Nx \@@_convert:nnnn { \@@_convert_lowercase_alphanum:n {#3} } {#1} {#2} {#3} } } -\cs_new_protected:Npn \@@_convert_v:nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_convert:nnnn #1#2#3#4 { \cs_if_exist:cF { @@_convert_#3_#1: } { @@ -2317,8 +2317,8 @@ % \subsubsection{Unescape methods} % % \begin{macro}[int]{\@@_convert_unescape_hex:} -% \begin{macro}[aux, rEXP]{\@@_unescape_hex_i:N} -% \begin{macro}[aux, rEXP]{\@@_unescape_hex_ii:N} +% \begin{macro}[aux, rEXP]{\@@_unescape_hex_auxi:N} +% \begin{macro}[aux, rEXP]{\@@_unescape_hex_auxii:N} % Take chars two by two, and interpret each pair as the hexadecimal % code for a byte. Anything else than hexadecimal digits is ignored, % raising the flag. A string which contains an odd number of @@ -2334,7 +2334,7 @@ \tl_gset:Nx \g_@@_result_tl { \@@_output_byte:w " - \exp_last_unbraced:Nf \@@_unescape_hex_i:N + \exp_last_unbraced:Nf \@@_unescape_hex_auxi:N { \tl_to_str:N \g_@@_result_tl } 0 { ? 0 - \c_one \__prg_break: } \__prg_break_point: @@ -2343,27 +2343,27 @@ \@@_if_flag_error:nnx { str_error } { unescape-hex } { } \group_end: } -\cs_new:Npn \@@_unescape_hex_i:N #1 +\cs_new:Npn \@@_unescape_hex_auxi:N #1 { \use_none:n #1 \@@_hexadecimal_use:NTF #1 - { \@@_unescape_hex_ii:N } + { \@@_unescape_hex_auxii:N } { \flag_raise:n { str_error } - \@@_unescape_hex_i:N + \@@_unescape_hex_auxi:N } } -\cs_new:Npn \@@_unescape_hex_ii:N #1 +\cs_new:Npn \@@_unescape_hex_auxii:N #1 { \use_none:n #1 \@@_hexadecimal_use:NTF #1 { \@@_output_end: - \@@_output_byte:w " \@@_unescape_hex_i:N + \@@_output_byte:w " \@@_unescape_hex_auxi:N } { \flag_raise:n { str_error } - \@@_unescape_hex_ii:N + \@@_unescape_hex_auxii:N } } \__msg_kernel_new:nnnn { str } { unescape-hex } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx index b6d28da057f..4ceef260a99 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx @@ -388,8 +388,8 @@ \group_begin: \group_align_safe_begin: \@@_setup:n {#1} - \@@_i:n {#1} - \@@_ii:n {#1} + \@@_a:n {#1} + \@@_b:n {#1} \group_align_safe_end: \group_end: } @@ -467,34 +467,34 @@ % \cs{str_tail:n} \Arg{token} is non-empty, because the % escape character is printable. % -% \begin{macro}[int]{\@@_i:n} +% \begin{macro}[int]{\@@_a:n} % We read tokens one by one using \tn{futurelet}. % While performing the loop, we keep track of the number of % true begin-group characters minus the number of % true end-group characters in \cs{l_@@_nesting_int}. % This reaches $-1$ when we read the closing brace. % \begin{macrocode} -\cs_new_protected:Npn \@@_i:n #1 +\cs_new_protected:Npn \@@_a:n #1 { \int_set:Nn \tex_escapechar:D { 92 } \int_zero:N \l_@@_normal_int \int_zero:N \l_@@_index_int \int_zero:N \l_@@_nesting_int - \if_false: { \fi: \@@_i_loop:w #1 } + \if_false: { \fi: \@@_a_loop:w #1 } \int_decr:N \l_@@_index_int } % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_i_loop:w} +% \begin{macro}[int]{\@@_a_loop:w} % Read one character and check its type. % \begin{macrocode} -\cs_new_protected_nopar:Npn \@@_i_loop:w - { \tex_futurelet:D \l_@@_token \@@_i_type:w } +\cs_new_protected_nopar:Npn \@@_a_loop:w + { \tex_futurelet:D \l_@@_token \@@_a_type:w } % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_i_type:w} +% \begin{macro}[int]{\@@_a_type:w} % At this point, \cs{l_@@_token} holds the meaning % of the following token. We store in \cs{l_@@_type_int} % the meaning of the token ahead: @@ -511,7 +511,7 @@ % over \cs{l_@@_token} if it matches with one of the % character tokens (hence is not a primitive conditional). % \begin{macrocode} -\cs_new_protected_nopar:Npn \@@_i_type:w +\cs_new_protected_nopar:Npn \@@_a_type:w { \l_@@_type_int = \if_meaning:w \l_@@_token \c_space_token @@ -528,25 +528,25 @@ \fi: \fi: \if_case:w \l_@@_type_int - \exp_after:wN \@@_i_space:w - \or: \exp_after:wN \@@_i_bgroup:w - \or: \exp_after:wN \@@_i_safe:N - \else: \exp_after:wN \@@_i_egroup:w + \exp_after:wN \@@_a_space:w + \or: \exp_after:wN \@@_a_bgroup:w + \or: \exp_after:wN \@@_a_safe:N + \else: \exp_after:wN \@@_a_egroup:w \fi: } % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_i_space:w} -% \begin{macro}[aux]{\@@_i_space_test:w} +% \begin{macro}[int]{\@@_a_space:w} +% \begin{macro}[aux]{\@@_a_space_test:w} % In this branch, the following token's meaning is a blank space. % Apply \tn{string} to that token: if it is a control sequence % the result starts with the escape character; otherwise it is % a true blank space, whose string representation is also a blank space. -% We test for that in \cs{@@_i_space_test:w}, +% We test for that in \cs{@@_a_space_test:w}, % after grabbing as \cs{l_@@_char_token} the first character % of the string representation. -% Also, since \cs{@@_i_store:} expects the special token to be +% Also, since \cs{@@_a_store:} expects the special token to be % stored in the relevant \tn{toks} register, we do that. The extra % \cs{exp_not:n} is unnecessary of course, but it makes the treatment % of all tokens more homogeneous. @@ -559,30 +559,30 @@ % so that the second pass does not need to test the meaning of tokens, % only strings. % \begin{macrocode} -\cs_new_protected_nopar:Npn \@@_i_space:w +\cs_new_protected_nopar:Npn \@@_a_space:w { - \tex_afterassignment:D \@@_i_space_test:w + \tex_afterassignment:D \@@_a_space_test:w \exp_after:wN \cs_set_eq:NN \exp_after:wN \l_@@_char_token \token_to_str:N } -\cs_new_protected_nopar:Npn \@@_i_space_test:w +\cs_new_protected_nopar:Npn \@@_a_space_test:w { \if_meaning:w \l_@@_char_token \c_space_token \tex_toks:D \l_@@_index_int { \exp_not:n { ~ } } - \@@_i_store: + \@@_a_store: \else: \int_incr:N \l_@@_normal_int \fi: - \@@_i_loop:w + \@@_a_loop:w } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_i_bgroup:w, \@@_i_egroup:w} -% \begin{macro}[aux]{\@@_i_group:nw} -% \begin{macro}[aux]{\@@_i_group_test:w} +% \begin{macro}[int]{\@@_a_bgroup:w, \@@_a_egroup:w} +% \begin{macro}[aux]{\@@_a_group:nw} +% \begin{macro}[aux]{\@@_a_group_test:w} % The token might be either a true character token with % catcode $1$ or $2$, or it could be a control sequence. % The only tricky case is if the character code happens @@ -598,40 +598,40 @@ \group_begin: \char_set_catcode_group_begin:N \^^@ \char_set_catcode_group_end:N \^^E - \cs_new_protected_nopar:Npn \@@_i_bgroup:w - { \@@_i_group:nw { \exp_after:wN ^^@ \if_false: ^^E \fi: } } + \cs_new_protected_nopar:Npn \@@_a_bgroup:w + { \@@_a_group:nw { \exp_after:wN ^^@ \if_false: ^^E \fi: } } \char_set_catcode_group_begin:N \^^B \char_set_catcode_group_end:N \^^@ - \cs_new_protected_nopar:Npn \@@_i_egroup:w - { \@@_i_group:nw { \if_false: ^^B \fi: ^^@ } } + \cs_new_protected_nopar:Npn \@@_a_egroup:w + { \@@_a_group:nw { \if_false: ^^B \fi: ^^@ } } \group_end: -\cs_new_protected:Npn \@@_i_group:nw #1 +\cs_new_protected:Npn \@@_a_group:nw #1 { \tex_lccode:D \c_zero = \@@_extract_charcode: \scan_stop: \tl_to_lowercase:n { \tex_toks:D \l_@@_index_int {#1} } \if_int_compare:w \tex_lccode:D \c_zero = \tex_escapechar:D \int_set:Nn \tex_escapechar:D { 139 - \tex_escapechar:D } \fi: - \tex_afterassignment:D \@@_i_group_test:w + \tex_afterassignment:D \@@_a_group_test:w \exp_after:wN \cs_set_eq:NN \exp_after:wN \l_@@_char_token \token_to_str:N } -\cs_new_protected_nopar:Npn \@@_i_group_test:w +\cs_new_protected_nopar:Npn \@@_a_group_test:w { \if_charcode:w \l_@@_token \l_@@_char_token - \@@_i_store: + \@@_a_store: \else: \int_incr:N \l_@@_normal_int \fi: - \@@_i_loop:w + \@@_a_loop:w } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_i_store:} +% \begin{macro}[int]{\@@_a_store:} % This function is called each time we meet a special token; % at this point, the \tn{toks} register \cs{l_@@_index_int} % holds a token list which expands to the given special token. @@ -661,7 +661,7 @@ % Finally, we check whether we reached the last closing brace, in which % case we stop by disabling the looping function (locally). % \begin{macrocode} -\cs_new_protected_nopar:Npn \@@_i_store: +\cs_new_protected_nopar:Npn \@@_a_store: { \tex_advance:D \l_@@_nesting_int \l_@@_type_int \if_int_compare:w \tex_lccode:D \c_zero = \c_thirty_two @@ -672,14 +672,14 @@ \int_incr:N \l_@@_index_int \int_zero:N \l_@@_normal_int \if_int_compare:w \l_@@_nesting_int = \c_minus_one - \cs_set_eq:NN \@@_i_loop:w \scan_stop: + \cs_set_eq:NN \@@_a_loop:w \scan_stop: \fi: } % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_i_safe:N} -% \begin{macro}[aux]{\@@_i_cs:ww} +% \begin{macro}[int]{\@@_a_safe:N} +% \begin{macro}[aux]{\@@_a_cs:ww} % This should be the simplest case: since the upcoming token is safe, % we can simply grab it in a second pass. However, other branches of % the code must pass their tokens through \tn{string}, hence we do it @@ -698,7 +698,7 @@ % all characters after the last space should be counted in the % following sequence of \enquote{normal} tokens. % \begin{macrocode} -\cs_new_protected:Npn \@@_i_safe:N #1 +\cs_new_protected:Npn \@@_a_safe:N #1 { \if_charcode:w \scan_stop: @@ -706,11 +706,11 @@ \scan_stop: \int_incr:N \l_@@_normal_int \else: - \@@_cs_space_count:NN \@@_i_cs:ww #1 + \@@_cs_space_count:NN \@@_a_cs:ww #1 \fi: - \@@_i_loop:w + \@@_a_loop:w } -\cs_new_protected:Npn \@@_i_cs:ww #1; #2; +\cs_new_protected:Npn \@@_a_cs:ww #1; #2; { \if_int_compare:w #1 > \c_zero \tex_skip:D \l_@@_index_int @@ -731,32 +731,32 @@ % All the necessary information is stored in \tn{skip} % and \tn{toks} registers. % -% \begin{macro}[int]{\@@_ii:n} -% \begin{macro}[int, EXP]{\@@_ii_loop:w} +% \begin{macro}[int]{\@@_b:n} +% \begin{macro}[int, EXP]{\@@_b_loop:w} % Start the loop with the index $0$. No need for an end-marker: % the loop will stop by itself when the last index is read. % We will repeatedly oscillate between reading long stretches % of normal tokens, and reading special tokens. % \begin{macrocode} -\cs_new_protected:Npn \@@_ii:n #1 +\cs_new_protected:Npn \@@_b:n #1 { \tl_gset:Nx \g_@@_result_tl { - \@@_ii_loop:w 0; #1 + \@@_b_loop:w 0; #1 \__prg_break_point: } } -\cs_new:Npn \@@_ii_loop:w #1; +\cs_new:Npn \@@_b_loop:w #1; { - \exp_after:wN \@@_ii_normals:ww + \exp_after:wN \@@_b_normals:ww \__int_value:w \tex_skip:D #1 ; #1 ; } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[int, EXP]{\@@_ii_normals:ww} -% \begin{macro}[aux, EXP]{\@@_ii_normal:wwN} +% \begin{macro}[int, EXP]{\@@_b_normals:ww} +% \begin{macro}[aux, EXP]{\@@_b_normal:wwN} % The first argument is the number of normal tokens which remain % to be read, and the second argument is the index in the array % produced in the first step. @@ -768,23 +768,23 @@ % rather than \cs{exp_not:N} because |#3| could be \cs{s__tl}, % hence must be hidden behind braces in the result. % \begin{macrocode} -\cs_new:Npn \@@_ii_normals:ww #1; +\cs_new:Npn \@@_b_normals:ww #1; { \if_int_compare:w #1 = \c_zero - \@@_ii_special:w + \@@_b_special:w \fi: - \@@_ii_normal:wwN #1; + \@@_b_normal:wwN #1; } -\cs_new:Npn \@@_ii_normal:wwN #1; #2; #3 +\cs_new:Npn \@@_b_normal:wwN #1; #2; #3 { \exp_not:n { \exp_not:n { #3 } } \s__tl \if_charcode:w \scan_stop: \exp_after:wN \use_none:n \token_to_str:N #3 \prg_do_nothing: \scan_stop: - \exp_after:wN \@@_ii_char:Nww + \exp_after:wN \@@_b_char:Nww \else: - \exp_after:wN \@@_ii_cs:Nww + \exp_after:wN \@@_b_cs:Nww \fi: #3 #1; #2; } @@ -792,10 +792,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, EXP]{\@@_ii_char:Nww} +% \begin{macro}[int, EXP]{\@@_b_char:Nww} % If the normal token we grab is a character, leave % \meta{catcode} \meta{charcode} followed by \cs{s__tl} -% in the input stream, and call \cs{@@_ii_normals:ww} +% in the input stream, and call \cs{@@_b_normals:ww} % with its first argument decremented. % \begin{macrocode} \group_begin: @@ -805,7 +805,7 @@ \char_set_uccode:nn { `? } { `D } \tl_to_uppercase:n { - \cs_new:Npn \@@_ii_char:Nww #1 + \cs_new:Npn \@@_b_char:Nww #1 { \if_meaning:w #1 \c_undefined:D ? \else: \if_catcode:w #1 \c_catcode_other_token C \else: @@ -818,7 +818,7 @@ 6 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \__int_value:w `#1 \s__tl - \exp_after:wN \@@_ii_normals:ww + \exp_after:wN \@@_b_normals:ww \int_use:N \__int_eval:w \c_minus_one + } } @@ -826,21 +826,21 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int, EXP]{\@@_ii_cs:Nww} -% \begin{macro}[aux, EXP]{\@@_ii_cs_test:ww} +% \begin{macro}[int, EXP]{\@@_b_cs:Nww} +% \begin{macro}[aux, EXP]{\@@_b_cs_test:ww} % If the token we grab is a control sequence, leave % |0 -1| (as category code and character code) in the input stream, % followed by \cs{s__tl}, -% and call \cs{@@_ii_normals:ww} with updated arguments. +% and call \cs{@@_b_normals:ww} with updated arguments. % \begin{macrocode} -\cs_new:Npn \@@_ii_cs:Nww #1 +\cs_new:Npn \@@_b_cs:Nww #1 { 0 -1 \s__tl - \@@_cs_space_count:NN \@@_ii_cs_test:ww #1 + \@@_cs_space_count:NN \@@_b_cs_test:ww #1 } -\cs_new:Npn \@@_ii_cs_test:ww #1 ; #2 ; #3 ; #4 ; +\cs_new:Npn \@@_b_cs_test:ww #1 ; #2 ; #3 ; #4 ; { - \exp_after:wN \@@_ii_normals:ww + \exp_after:wN \@@_b_normals:ww \int_use:N \__int_eval:w \if_int_compare:w #1 = \c_zero #3 @@ -855,9 +855,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, EXP]{\@@_ii_special:w} -% \begin{macro}[aux, EXP]{\@@_ii_special_char:wN} -% \begin{macro}[aux, EXP]{\@@_ii_special_space:w} +% \begin{macro}[int, EXP]{\@@_b_special:w} +% \begin{macro}[aux, EXP]{\@@_b_special_char:wN} +% \begin{macro}[aux, EXP]{\@@_b_special_space:w} % Here, |#1| is the current index in the array built in the first pass. % Check now whether we reached the end (we shouldn't keep the trailing % end-group character that marked the end of the token list in the @@ -865,12 +865,12 @@ % Unpack the \tn{toks} register: when \texttt{x}-expanding again, % we will get the special token. % Then leave the category code in the input stream, followed by -% the character code, and call \cs{@@_ii_loop:w} with the next index. +% the character code, and call \cs{@@_b_loop:w} with the next index. % \begin{macrocode} \group_begin: \char_set_catcode_other:N A - \cs_new:Npn \@@_ii_special:w - \fi: \@@_ii_normal:wwN 0 ; #1 ; + \cs_new:Npn \@@_b_special:w + \fi: \@@_b_normal:wwN 0 ; #1 ; { \fi: \if_int_compare:w #1 = \l_@@_index_int @@ -884,23 +884,23 @@ \else: 2 \fi: \if_int_odd:w \etex_gluestretch:D \tex_skip:D #1 \exp_stop_f: - \exp_after:wN \@@_ii_special_char:wN \int_use:N + \exp_after:wN \@@_b_special_char:wN \int_use:N \else: - \exp_after:wN \@@_ii_special_space:w \int_use:N + \exp_after:wN \@@_b_special_space:w \int_use:N \fi: \__int_eval:w \c_one + #1 \exp_after:wN ; \token_to_str:N } \group_end: -\cs_new:Npn \@@_ii_special_char:wN #1 ; #2 +\cs_new:Npn \@@_b_special_char:wN #1 ; #2 { \__int_value:w `#2 \s__tl - \@@_ii_loop:w #1 ; + \@@_b_loop:w #1 ; } -\cs_new:Npn \@@_ii_special_space:w #1 ; ~ +\cs_new:Npn \@@_b_special_space:w #1 ; ~ { 32 \s__tl - \@@_ii_loop:w #1 ; + \@@_b_loop:w #1 ; } % \end{macrocode} % \end{macro} |