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/tex | |
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/tex')
23 files changed, 750 insertions, 580 deletions
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty index a719b42e7a4..21c29315228 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{expl3} -\GetIdInfo$Id: l3sort.dtx 3991 2012-07-16 19:00:35Z joseph $ +\GetIdInfo$Id: l3sort.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Experimental sorting functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -60,32 +60,32 @@ \int_new:N \l__sort_A_int \int_new:N \l__sort_B_int \int_new:N \l__sort_C_int -\cs_new:Npn \tl_sort:nN #1#2 { \__sort_quick_i:nNn {#1} #2 { } } -\cs_new:Npn \__sort_quick_i:nNn #1#2 +\cs_new:Npn \tl_sort:nN #1#2 { \__sort_quick:nNn {#1} #2 { } } +\cs_new:Npn \__sort_quick:nNn #1#2 { - \exp_after:wN \__sort_quick_ii:wn + \exp_after:wN \__sort_quick:wn \use_none:n #1 \__prg_break_point: - \__sort_quick_iii:nnNnn { } { } #2 + \__sort_quick:nnNnn { } { } #2 #1 { \__prg_break_point: } \__prg_break_point: } -\cs_new:Npn \__sort_quick_ii:wn #1 \__prg_break_point: #2 {#2} -\cs_new:Npn \__sort_quick_iii:nnNnn #1#2#3#4#5 +\cs_new:Npn \__sort_quick:wn #1 \__prg_break_point: #2 {#2} +\cs_new:Npn \__sort_quick:nnNnn #1#2#3#4#5 { \__prg_break: #5 - \__sort_quick_iv:nnNnwn {#1} {#2} + \__sort_quick:nnNnwn {#1} {#2} \__prg_break_point: #3 {#4} {#5} - { \__sort_quick_iii:nnNnn {#1} { #2 {#5} } } - { \__sort_quick_iii:nnNnn { #1 {#5} } {#2} } + { \__sort_quick:nnNnn {#1} { #2 {#5} } } + { \__sort_quick:nnNnn { #1 {#5} } {#2} } #3 {#4} } -\cs_new:Npn \__sort_quick_iv:nnNnwn +\cs_new:Npn \__sort_quick:nnNnwn #1#2 \__prg_break_point: #3#4 #5 \__prg_break_point: #6 { - \__sort_quick_i:nNn {#2} #3 - { \__sort_quick_i:nNn {#1} #3 {#6} {#4} } + \__sort_quick:nNn {#2} #3 + { \__sort_quick:nNn {#1} #3 {#6} {#4} } } \cs_new_protected:Npn \__sort_main:NNNnNn #1#2#3#4#5#6 { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty index 156d2c1393f..ccb695c0f0e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \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} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -366,22 +366,22 @@ \if_charcode:w \c_space_token #1 \exp_after:wN \__regex_escape_x_test:N \else: - \exp_after:wN \__regex_escape_x_test_ii:N + \exp_after:wN \__regex_escape_x_test_two:N \exp_after:wN #1 \fi: } } -\cs_new:Npn \__regex_escape_x_test_ii:N #1 +\cs_new:Npn \__regex_escape_x_test_two:N #1 { \if_charcode:w \c_lbrace_str #1 \exp_after:wN \__regex_escape_x_loop:N \else: \__str_hexadecimal_use:NTF #1 - { \exp_after:wN \__regex_escape_x_ii:N } + { \exp_after:wN \__regex_escape_x:N } { ; \exp_after:wN \__regex_escape_loop:N \exp_after:wN #1 } \fi: } -\cs_new:Npn \__regex_escape_x_ii:N #1 +\cs_new:Npn \__regex_escape_x:N #1 { \str_if_eq_x:nnTF {#1} { break } { ; } { @@ -701,10 +701,10 @@ \cs_new_protected:cpn { __regex_compile_quantifier_ \c_lbrace_str :w } { \__regex_get_digits:NTFw \l__regex_internal_a_int - { \__regex_compile_quantifier_braced_i:w } + { \__regex_compile_quantifier_braced_auxi:w } { \__regex_compile_quantifier_abort:xNN { \c_lbrace_str } } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_i:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxi:w #1#2 { \str_case_x:nnn { #1 #2 } { @@ -716,8 +716,8 @@ { \__regex_compile_special:N , } { \__regex_get_digits:NTFw \l__regex_internal_b_int - { \__regex_compile_quantifier_braced_iii:w } - { \__regex_compile_quantifier_braced_ii:w } + { \__regex_compile_quantifier_braced_auxiii:w } + { \__regex_compile_quantifier_braced_auxii:w } } } { @@ -726,7 +726,7 @@ #1 #2 } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_ii:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \__regex_compile_special:N \c_rbrace_str } @@ -740,7 +740,7 @@ #1 #2 } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_iii:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxiii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \__regex_compile_special:N \c_rbrace_str } @@ -957,14 +957,14 @@ \str_if_eq:nnTF { #3 #4 } { \__regex_compile_special:N ^ } { \__tl_build_one:n { #2 { \if_false: } \fi: } - \__regex_compile_class_ii:NN + \__regex_compile_class:NN } { \__tl_build_one:n { #1 { \if_false: } \fi: } - \__regex_compile_class_ii:NN #3 #4 + \__regex_compile_class:NN #3 #4 } } -\cs_new_protected:Npn \__regex_compile_class_ii:NN #1#2 +\cs_new_protected:Npn \__regex_compile_class:NN #1#2 { \token_if_eq_charcode:NNTF #2 ] { \__regex_compile_raw:N #2 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty index eba57ade74e..5273399d7be 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \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} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -364,22 +364,22 @@ \if_charcode:w \c_space_token #1 \exp_after:wN \__regex_escape_x_test:N \else: - \exp_after:wN \__regex_escape_x_test_ii:N + \exp_after:wN \__regex_escape_x_test_two:N \exp_after:wN #1 \fi: } } -\cs_new:Npn \__regex_escape_x_test_ii:N #1 +\cs_new:Npn \__regex_escape_x_test_two:N #1 { \if_charcode:w \c_lbrace_str #1 \exp_after:wN \__regex_escape_x_loop:N \else: \__str_hexadecimal_use:NTF #1 - { \exp_after:wN \__regex_escape_x_ii:N } + { \exp_after:wN \__regex_escape_x:N } { ; \exp_after:wN \__regex_escape_loop:N \exp_after:wN #1 } \fi: } -\cs_new:Npn \__regex_escape_x_ii:N #1 +\cs_new:Npn \__regex_escape_x:N #1 { \str_if_eq_x:nnTF {#1} { break } { ; } { @@ -699,10 +699,10 @@ \cs_new_protected:cpn { __regex_compile_quantifier_ \c_lbrace_str :w } { \__regex_get_digits:NTFw \l__regex_internal_a_int - { \__regex_compile_quantifier_braced_i:w } + { \__regex_compile_quantifier_braced_auxi:w } { \__regex_compile_quantifier_abort:xNN { \c_lbrace_str } } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_i:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxi:w #1#2 { \str_case_x:nnn { #1 #2 } { @@ -714,8 +714,8 @@ { \__regex_compile_special:N , } { \__regex_get_digits:NTFw \l__regex_internal_b_int - { \__regex_compile_quantifier_braced_iii:w } - { \__regex_compile_quantifier_braced_ii:w } + { \__regex_compile_quantifier_braced_auxiii:w } + { \__regex_compile_quantifier_braced_auxii:w } } } { @@ -724,7 +724,7 @@ #1 #2 } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_ii:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \__regex_compile_special:N \c_rbrace_str } @@ -738,7 +738,7 @@ #1 #2 } } -\cs_new_protected:Npn \__regex_compile_quantifier_braced_iii:w #1#2 +\cs_new_protected:Npn \__regex_compile_quantifier_braced_auxiii:w #1#2 { \str_if_eq_x:nnTF { #1 #2 } { \__regex_compile_special:N \c_rbrace_str } @@ -955,14 +955,14 @@ \str_if_eq:nnTF { #3 #4 } { \__regex_compile_special:N ^ } { \__tl_build_one:n { #2 { \if_false: } \fi: } - \__regex_compile_class_ii:NN + \__regex_compile_class:NN } { \__tl_build_one:n { #1 { \if_false: } \fi: } - \__regex_compile_class_ii:NN #3 #4 + \__regex_compile_class:NN #3 #4 } } -\cs_new_protected:Npn \__regex_compile_class_ii:NN #1#2 +\cs_new_protected:Npn \__regex_compile_class:NN #1#2 { \token_if_eq_charcode:NNTF #2 ] { \__regex_compile_raw:N #2 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 902d147cd3f..57e71f04988 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -63,51 +63,51 @@ \cs_generate_variant:Nn \__str_format_put:nw { o , f } \cs_new:Npn \__str_format_parse:n #1 { - \exp_last_unbraced:Nf \__str_format_parse_i:NN + \exp_last_unbraced:Nf \__str_format_parse_auxi:NN \__str_to_other:n {#1} \s__stop \s__stop {#1} } -\cs_new:Npx \__str_format_parse_i:NN #1#2 +\cs_new:Npx \__str_format_parse_auxi:NN #1#2 { \exp_not:N \__str_if_contains_char:nNTF { < > = ^ } #2 - { \exp_not:N \__str_format_parse_iii:nN { #1 #2 } } + { \exp_not:N \__str_format_parse_auxiii:nN { #1 #2 } } { - \exp_not:N \__str_format_parse_ii:nN + \exp_not:N \__str_format_parse_auxii:nN { \c_catcode_other_space_tl } #1 #2 } } -\cs_new:Npn \__str_format_parse_ii:nN #1#2 +\cs_new:Npn \__str_format_parse_auxii:nN #1#2 { \__str_if_contains_char:nNTF { < > = ^ } #2 - { \__str_format_parse_iii:nN { #1 #2 } } - { \__str_format_parse_iii:nN { #1 ? } #2 } + { \__str_format_parse_auxiii:nN { #1 #2 } } + { \__str_format_parse_auxiii:nN { #1 ? } #2 } } -\cs_new:Npx \__str_format_parse_iii:nN #1#2 +\cs_new:Npx \__str_format_parse_auxiii:nN #1#2 { \exp_not:N \__str_if_contains_char:nNTF { + - \c_catcode_other_space_tl } #2 - { \exp_not:N \__str_format_parse_iv:nwN { #1 #2 } ; } - { \exp_not:N \__str_format_parse_iv:nwN { #1 ? } ; #2 } + { \exp_not:N \__str_format_parse_auxiv:nwN { #1 #2 } ; } + { \exp_not:N \__str_format_parse_auxiv:nwN { #1 ? } ; #2 } } -\cs_new:Npn \__str_format_parse_iv:nwN #1#2; #3 +\cs_new:Npn \__str_format_parse_auxiv:nwN #1#2; #3 { \__str_format_if_digit:NTF #3 - { \__str_format_parse_iv:nwN {#1} #2 #3 ; } - { \__str_format_parse_v:nN { #1 {#2} } #3 } + { \__str_format_parse_auxiv:nwN {#1} #2 #3 ; } + { \__str_format_parse_auxv:nN { #1 {#2} } #3 } } -\cs_new:Npn \__str_format_parse_v:nN #1#2 +\cs_new:Npn \__str_format_parse_auxv:nN #1#2 { \token_if_eq_charcode:NNTF . #2 - { \__str_format_parse_vi:nwN {#1} 0 ; } - { \__str_format_parse_vii:nN { #1 { } } #2 } + { \__str_format_parse_auxvi:nwN {#1} 0 ; } + { \__str_format_parse_auxvii:nN { #1 { } } #2 } } -\cs_new:Npn \__str_format_parse_vi:nwN #1#2; #3 +\cs_new:Npn \__str_format_parse_auxvi:nwN #1#2; #3 { \__str_format_if_digit:NTF #3 - { \__str_format_parse_vi:nwN {#1} #2 #3 ; } - { \__str_format_parse_vii:nN { #1 {#2} } #3 } + { \__str_format_parse_auxvi:nwN {#1} #2 #3 ; } + { \__str_format_parse_auxvii:nN { #1 {#2} } #3 } } -\cs_new:Npn \__str_format_parse_vii:nN #1#2 +\cs_new:Npn \__str_format_parse_auxvii:nN #1#2 { \token_if_eq_meaning:NNTF \s__stop #2 { \__str_format_parse_end:nwn { #1 ? } #2 } @@ -367,12 +367,12 @@ {3} { nan } } { - \exp_last_unbraced:Nf \__str_format_fp_e_ii:wn + \exp_last_unbraced:Nf \__str_format_fp_e_aux:wn \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } {#4} } } - \cs_new:Npn \__str_format_fp_e_ii:wn + \cs_new:Npn \__str_format_fp_e_aux:wn \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 { \__str_format_put:fw { \int_eval:n { #3 - 1 } } @@ -399,14 +399,14 @@ {3} { nan } } { - \exp_last_unbraced:Nf \__str_format_fp_f_ii:wwwn + \exp_last_unbraced:Nf \__str_format_fp_f_aux:wwwn \fp_to_decimal:n { abs ( round ( \s__fp \__fp_chk:w #1#2#3 ; , #4 ) ) } . . ; {#4} } } -\cs_new:Npn \__str_format_fp_f_ii:wwwn #1 . #2 . #3 ; #4 +\cs_new:Npn \__str_format_fp_f_aux:wwwn #1 . #2 . #3 ; #4 { \use:nf { #1 . #2 } @@ -421,13 +421,13 @@ {3} { nan } } { - \exp_last_unbraced:Nf \__str_format_fp_g_ii:wn + \exp_last_unbraced:Nf \__str_format_fp_g_aux:wn \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2 ; { \int_max:nn {1} {#3} } { \int_max:nn {1} {#3} } } } -\cs_new:Npn \__str_format_fp_g_ii:wn #1; #2 +\cs_new:Npn \__str_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/tex/latex/l3experimental/l3str/l3str.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty index 05cd375a84d..8fb7f22b337 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \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} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -231,17 +231,17 @@ \cs_new_nopar:Npn \str_tail:N { \exp_args:No \str_tail:n } \cs_set:Npn \str_tail:n #1 { - \exp_after:wN \__str_tail:w + \exp_after:wN \__str_tail_auxi:w \reverse_if:N \if_charcode:w \scan_stop: \tl_to_str:n {#1} X X \q_stop } -\cs_set:Npn \__str_tail:w #1 X #2 \q_stop { \fi: #1 } +\cs_set:Npn \__str_tail_auxi:w #1 X #2 \q_stop { \fi: #1 } \cs_new:Npn \str_tail_ignore_spaces:n #1 { - \exp_after:wN \__str_tail_ii:w + \exp_after:wN \__str_tail_auxii:w \tl_to_str:n {#1} X X \q_stop } -\cs_new:Npn \__str_tail_ii:w #1 #2 X #3 \q_stop { #2 } +\cs_new:Npn \__str_tail_auxii:w #1 #2 X #3 \q_stop { #2 } \cs_new:Npn \__str_skip_c_zero:w #1; { \if_int_compare:w \__int_eval:w #1 > \c_eight @@ -256,11 +256,11 @@ { \exp_after:wN \__str_skip_c_zero:w \int_use:N \__int_eval:w #1 - \c_eight ; } \cs_new:Npn \__str_skip_end:w #1 ; { - \exp_after:wN \__str_skip_end_ii:NNNNNNNN + \exp_after:wN \__str_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 \__str_skip_end_ii:NNNNNNNN #1#2#3#4#5#6#7#8 { \fi: \c_zero } +\cs_new:Npn \__str_skip_end:NNNNNNNN #1#2#3#4#5#6#7#8 { \fi: \c_zero } \cs_new:Npn \__str_collect_delimit_by_q_stop:w #1; { \exp_after:wN \__str_collect_loop:wn @@ -270,13 +270,13 @@ \cs_new:Npn \__str_collect_loop:wn #1 ; { \if_int_compare:w #1 > \c_seven - \exp_after:wN \__str_collect_loop_ii:wnNNNNNNN + \exp_after:wN \__str_collect_loop:wnNNNNNNN \else: \exp_after:wN \__str_collect_end:wn \fi: #1 ; } -\cs_new:Npn \__str_collect_loop_ii:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 +\cs_new:Npn \__str_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 { \exp_after:wN \__str_collect_loop:wn \int_use:N \__int_eval:w #1 - \c_seven ; @@ -284,11 +284,11 @@ } \cs_new:Npn \__str_collect_end:wn #1 ; { - \exp_after:wN \__str_collect_end_ii:nnnnnnnnw + \exp_after:wN \__str_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 \__str_collect_end_ii: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 \q_stop { #1#2#3#4#5#6#7#8 } \cs_new_nopar:Npn \str_item:Nn { \exp_args:No \str_item:nn } \cs_new:Npn \str_item:nn #1#2 @@ -342,23 +342,23 @@ { \exp_args:No \__str_substr_unsafe:nnn { \tl_to_str:n {#1} } } \cs_new:Npn \__str_substr_unsafe:nnn #1#2#3 { - \exp_after:wN \__str_substr_ii:www + \exp_after:wN \__str_substr:www \__int_value:w \__str_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 \__str_substr_i:nN {#3} \c_max_int ; + \exp_args:Nf \__str_substr:nN {#3} \c_max_int ; { } #1 \q_stop } -\cs_new:Npn \__str_substr_i:nN #1 #2 +\cs_new:Npn \__str_substr:nN #1 #2 { \tl_if_empty:nTF {#1} {#2} {#1} } -\cs_new:Npn \__str_substr_ii:www #1; #2; #3; +\cs_new:Npn \__str_substr:www #1; #2; #3; { - \exp_args:Nf \__str_substr_iii:nnw + \exp_args:Nf \__str_substr:nnw { \__str_substr_normalize_range:nn {#2} {#1} } { \__str_substr_normalize_range:nn {#3} {#1} } } -\cs_new:Npn \__str_substr_iii:nnw #1#2 +\cs_new:Npn \__str_substr:nnw #1#2 { \exp_after:wN \__str_collect_delimit_by_q_stop:w \int_use:N \__int_eval:w #2 + \c_one - #1 \exp_after:wN ; @@ -539,14 +539,14 @@ \cs_new_protected:Npn \__str_if_flag_times:nT #1#2 { \flag_if_raised:nT {#1} { #2~(x \flag_height:n {#1} ) } } \cs_new_protected_nopar:Npn \str_set_convert:Nnnn - { \__str_convert_i:nNNnnn { } \tl_set_eq:NN } + { \__str_convert:nNNnnn { } \tl_set_eq:NN } \cs_new_protected_nopar:Npn \str_gset_convert:Nnnn - { \__str_convert_i:nNNnnn { } \tl_gset_eq:NN } + { \__str_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__str_error_bool - \__str_convert_i:nNNnnn + \__str_convert:nNNnnn { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx } \tl_set_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true: @@ -555,22 +555,22 @@ \str_gset_convert:Nnnn #1#2#3#4 { T , F , TF } { \bool_gset_false:N \g__str_error_bool - \__str_convert_i:nNNnnn + \__str_convert:nNNnnn { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx } \tl_gset_eq:NN #1 {#2} {#3} {#4} \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true: } -\cs_new_protected:Npn \__str_convert_i:nNNnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \__str_convert:nNNnnn #1#2#3#4#5#6 { \group_begin: #1 \__str_gset_other:Nn \g__str_result_tl {#4} - \exp_after:wN \__str_convert_ii:wwwnn + \exp_after:wN \__str_convert:wwwnn \tl_to_str:n {#5} /// \q_stop { decode } { unescape } \prg_do_nothing: \__str_convert_decode_: - \exp_after:wN \__str_convert_ii:wwwnn + \exp_after:wN \__str_convert:wwwnn \tl_to_str:n {#6} /// \q_stop { encode } { escape } \use_ii_i:nn @@ -578,15 +578,15 @@ \group_end: #2 #3 \g__str_result_tl } -\cs_new_protected:Npn \__str_convert_ii:wwwnn +\cs_new_protected:Npn \__str_convert:wwwnn #1 / #2 // #3 \q_stop #4#5 { - \__str_convert_iv:nnn {enc} {#4} {#1} - \__str_convert_iv:nnn {esc} {#5} {#2} - \exp_args:Ncc \__str_convert_iii:NNnNN + \__str_convert:nnn {enc} {#4} {#1} + \__str_convert:nnn {esc} {#5} {#2} + \exp_args:Ncc \__str_convert:NNnNN { __str_convert_#4_#1: } { __str_convert_#5_#2: } {#2} } -\cs_new_protected:Npn \__str_convert_iii:NNnNN #1#2#3#4#5 +\cs_new_protected:Npn \__str_convert:NNnNN #1#2#3#4#5 { \if_meaning:w #1 #5 \tl_if_empty:nF {#3} @@ -596,16 +596,16 @@ #4 #2 #1 \fi: } -\cs_new_protected:Npn \__str_convert_iv:nnn #1#2#3 +\cs_new_protected:Npn \__str_convert:nnn #1#2#3 { \cs_if_exist:cF { __str_convert_#2_#3: } { - \exp_args:Nx \__str_convert_v:nnnn + \exp_args:Nx \__str_convert:nnnn { \__str_convert_lowercase_alphanum:n {#3} } {#1} {#2} {#3} } } -\cs_new_protected:Npn \__str_convert_v:nnnn #1#2#3#4 +\cs_new_protected:Npn \__str_convert:nnnn #1#2#3#4 { \cs_if_exist:cF { __str_convert_#3_#1: } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty index eb4a612e028..134eeed9815 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty @@ -87,8 +87,8 @@ \group_begin: \group_align_safe_begin: \__tl_analysis_setup:n {#1} - \__tl_analysis_i:n {#1} - \__tl_analysis_ii:n {#1} + \__tl_analysis_a:n {#1} + \__tl_analysis_b:n {#1} \group_align_safe_end: \group_end: } @@ -108,18 +108,18 @@ \__tl_analysis_disable_loop:N } \group_end: -\cs_new_protected:Npn \__tl_analysis_i:n #1 +\cs_new_protected:Npn \__tl_analysis_a:n #1 { \int_set:Nn \tex_escapechar:D { 92 } \int_zero:N \l__tl_analysis_normal_int \int_zero:N \l__tl_analysis_index_int \int_zero:N \l__tl_analysis_nesting_int - \if_false: { \fi: \__tl_analysis_i_loop:w #1 } + \if_false: { \fi: \__tl_analysis_a_loop:w #1 } \int_decr:N \l__tl_analysis_index_int } -\cs_new_protected_nopar:Npn \__tl_analysis_i_loop:w - { \tex_futurelet:D \l__tl_analysis_token \__tl_analysis_i_type:w } -\cs_new_protected_nopar:Npn \__tl_analysis_i_type:w +\cs_new_protected_nopar:Npn \__tl_analysis_a_loop:w + { \tex_futurelet:D \l__tl_analysis_token \__tl_analysis_a_type:w } +\cs_new_protected_nopar:Npn \__tl_analysis_a_type:w { \l__tl_analysis_type_int = \if_meaning:w \l__tl_analysis_token \c_space_token @@ -136,61 +136,61 @@ \fi: \fi: \if_case:w \l__tl_analysis_type_int - \exp_after:wN \__tl_analysis_i_space:w - \or: \exp_after:wN \__tl_analysis_i_bgroup:w - \or: \exp_after:wN \__tl_analysis_i_safe:N - \else: \exp_after:wN \__tl_analysis_i_egroup:w + \exp_after:wN \__tl_analysis_a_space:w + \or: \exp_after:wN \__tl_analysis_a_bgroup:w + \or: \exp_after:wN \__tl_analysis_a_safe:N + \else: \exp_after:wN \__tl_analysis_a_egroup:w \fi: } -\cs_new_protected_nopar:Npn \__tl_analysis_i_space:w +\cs_new_protected_nopar:Npn \__tl_analysis_a_space:w { - \tex_afterassignment:D \__tl_analysis_i_space_test:w + \tex_afterassignment:D \__tl_analysis_a_space_test:w \exp_after:wN \cs_set_eq:NN \exp_after:wN \l__tl_analysis_char_token \token_to_str:N } -\cs_new_protected_nopar:Npn \__tl_analysis_i_space_test:w +\cs_new_protected_nopar:Npn \__tl_analysis_a_space_test:w { \if_meaning:w \l__tl_analysis_char_token \c_space_token \tex_toks:D \l__tl_analysis_index_int { \exp_not:n { ~ } } - \__tl_analysis_i_store: + \__tl_analysis_a_store: \else: \int_incr:N \l__tl_analysis_normal_int \fi: - \__tl_analysis_i_loop:w + \__tl_analysis_a_loop:w } \group_begin: \char_set_catcode_group_begin:N \^^@ \char_set_catcode_group_end:N \^^E - \cs_new_protected_nopar:Npn \__tl_analysis_i_bgroup:w - { \__tl_analysis_i_group:nw { \exp_after:wN ^^@ \if_false: ^^E \fi: } } + \cs_new_protected_nopar:Npn \__tl_analysis_a_bgroup:w + { \__tl_analysis_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 \__tl_analysis_i_egroup:w - { \__tl_analysis_i_group:nw { \if_false: ^^B \fi: ^^@ } } + \cs_new_protected_nopar:Npn \__tl_analysis_a_egroup:w + { \__tl_analysis_a_group:nw { \if_false: ^^B \fi: ^^@ } } \group_end: -\cs_new_protected:Npn \__tl_analysis_i_group:nw #1 +\cs_new_protected:Npn \__tl_analysis_a_group:nw #1 { \tex_lccode:D \c_zero = \__tl_analysis_extract_charcode: \scan_stop: \tl_to_lowercase:n { \tex_toks:D \l__tl_analysis_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 \__tl_analysis_i_group_test:w + \tex_afterassignment:D \__tl_analysis_a_group_test:w \exp_after:wN \cs_set_eq:NN \exp_after:wN \l__tl_analysis_char_token \token_to_str:N } -\cs_new_protected_nopar:Npn \__tl_analysis_i_group_test:w +\cs_new_protected_nopar:Npn \__tl_analysis_a_group_test:w { \if_charcode:w \l__tl_analysis_token \l__tl_analysis_char_token - \__tl_analysis_i_store: + \__tl_analysis_a_store: \else: \int_incr:N \l__tl_analysis_normal_int \fi: - \__tl_analysis_i_loop:w + \__tl_analysis_a_loop:w } -\cs_new_protected_nopar:Npn \__tl_analysis_i_store: +\cs_new_protected_nopar:Npn \__tl_analysis_a_store: { \tex_advance:D \l__tl_analysis_nesting_int \l__tl_analysis_type_int \if_int_compare:w \tex_lccode:D \c_zero = \c_thirty_two @@ -201,10 +201,10 @@ \int_incr:N \l__tl_analysis_index_int \int_zero:N \l__tl_analysis_normal_int \if_int_compare:w \l__tl_analysis_nesting_int = \c_minus_one - \cs_set_eq:NN \__tl_analysis_i_loop:w \scan_stop: + \cs_set_eq:NN \__tl_analysis_a_loop:w \scan_stop: \fi: } -\cs_new_protected:Npn \__tl_analysis_i_safe:N #1 +\cs_new_protected:Npn \__tl_analysis_a_safe:N #1 { \if_charcode:w \scan_stop: @@ -212,11 +212,11 @@ \scan_stop: \int_incr:N \l__tl_analysis_normal_int \else: - \__tl_analysis_cs_space_count:NN \__tl_analysis_i_cs:ww #1 + \__tl_analysis_cs_space_count:NN \__tl_analysis_a_cs:ww #1 \fi: - \__tl_analysis_i_loop:w + \__tl_analysis_a_loop:w } -\cs_new_protected:Npn \__tl_analysis_i_cs:ww #1; #2; +\cs_new_protected:Npn \__tl_analysis_a_cs:ww #1; #2; { \if_int_compare:w #1 > \c_zero \tex_skip:D \l__tl_analysis_index_int @@ -227,36 +227,36 @@ \tex_advance:D \l__tl_analysis_normal_int #2 \exp_stop_f: \fi: } -\cs_new_protected:Npn \__tl_analysis_ii:n #1 +\cs_new_protected:Npn \__tl_analysis_b:n #1 { \tl_gset:Nx \g__tl_analysis_result_tl { - \__tl_analysis_ii_loop:w 0; #1 + \__tl_analysis_b_loop:w 0; #1 \__prg_break_point: } } -\cs_new:Npn \__tl_analysis_ii_loop:w #1; +\cs_new:Npn \__tl_analysis_b_loop:w #1; { - \exp_after:wN \__tl_analysis_ii_normals:ww + \exp_after:wN \__tl_analysis_b_normals:ww \__int_value:w \tex_skip:D #1 ; #1 ; } -\cs_new:Npn \__tl_analysis_ii_normals:ww #1; +\cs_new:Npn \__tl_analysis_b_normals:ww #1; { \if_int_compare:w #1 = \c_zero - \__tl_analysis_ii_special:w + \__tl_analysis_b_special:w \fi: - \__tl_analysis_ii_normal:wwN #1; + \__tl_analysis_b_normal:wwN #1; } -\cs_new:Npn \__tl_analysis_ii_normal:wwN #1; #2; #3 +\cs_new:Npn \__tl_analysis_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 \__tl_analysis_ii_char:Nww + \exp_after:wN \__tl_analysis_b_char:Nww \else: - \exp_after:wN \__tl_analysis_ii_cs:Nww + \exp_after:wN \__tl_analysis_b_cs:Nww \fi: #3 #1; #2; } @@ -267,7 +267,7 @@ \char_set_uccode:nn { `? } { `D } \tl_to_uppercase:n { - \cs_new:Npn \__tl_analysis_ii_char:Nww #1 + \cs_new:Npn \__tl_analysis_b_char:Nww #1 { \if_meaning:w #1 \c_undefined:D ? \else: \if_catcode:w #1 \c_catcode_other_token C \else: @@ -280,19 +280,19 @@ 6 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \__int_value:w `#1 \s__tl - \exp_after:wN \__tl_analysis_ii_normals:ww + \exp_after:wN \__tl_analysis_b_normals:ww \int_use:N \__int_eval:w \c_minus_one + } } \group_end: -\cs_new:Npn \__tl_analysis_ii_cs:Nww #1 +\cs_new:Npn \__tl_analysis_b_cs:Nww #1 { 0 -1 \s__tl - \__tl_analysis_cs_space_count:NN \__tl_analysis_ii_cs_test:ww #1 + \__tl_analysis_cs_space_count:NN \__tl_analysis_b_cs_test:ww #1 } -\cs_new:Npn \__tl_analysis_ii_cs_test:ww #1 ; #2 ; #3 ; #4 ; +\cs_new:Npn \__tl_analysis_b_cs_test:ww #1 ; #2 ; #3 ; #4 ; { - \exp_after:wN \__tl_analysis_ii_normals:ww + \exp_after:wN \__tl_analysis_b_normals:ww \int_use:N \__int_eval:w \if_int_compare:w #1 = \c_zero #3 @@ -305,8 +305,8 @@ } \group_begin: \char_set_catcode_other:N A - \cs_new:Npn \__tl_analysis_ii_special:w - \fi: \__tl_analysis_ii_normal:wwN 0 ; #1 ; + \cs_new:Npn \__tl_analysis_b_special:w + \fi: \__tl_analysis_b_normal:wwN 0 ; #1 ; { \fi: \if_int_compare:w #1 = \l__tl_analysis_index_int @@ -320,23 +320,23 @@ \else: 2 \fi: \if_int_odd:w \etex_gluestretch:D \tex_skip:D #1 \exp_stop_f: - \exp_after:wN \__tl_analysis_ii_special_char:wN \int_use:N + \exp_after:wN \__tl_analysis_b_special_char:wN \int_use:N \else: - \exp_after:wN \__tl_analysis_ii_special_space:w \int_use:N + \exp_after:wN \__tl_analysis_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 \__tl_analysis_ii_special_char:wN #1 ; #2 +\cs_new:Npn \__tl_analysis_b_special_char:wN #1 ; #2 { \__int_value:w `#2 \s__tl - \__tl_analysis_ii_loop:w #1 ; + \__tl_analysis_b_loop:w #1 ; } -\cs_new:Npn \__tl_analysis_ii_special_space:w #1 ; ~ +\cs_new:Npn \__tl_analysis_b_special_space:w #1 ; ~ { 32 \s__tl - \__tl_analysis_ii_loop:w #1 ; + \__tl_analysis_b_loop:w #1 ; } \cs_new_protected:Npn \__tl_analysis_map_inline:nn #1 { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index 30c72196f57..a16079a1428 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -48,16 +48,18 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{xparse} -\GetIdInfo$Id: l3galley.dtx 4155 2012-08-29 10:29:58Z joseph $ +\GetIdInfo$Id: l3galley.dtx 4388 2012-12-20 22:15:35Z joseph $ {L3 Experimental galley code} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} -\clist_new:N \l__galley_parshape_left_indent_clist -\clist_new:N \l__galley_parshape_right_indent_clist +\cs_generate_variant:Nn \seq_map_function:NN { Nc } +\int_new:N \l__galley_tmp_int +\seq_new:N \l__galley_tmpa_seq +\seq_new:N \l__galley_tmpb_seq +\tl_new:N \l__galley_tmp_tl \bool_new:N \l__galley_parshape_multipar_bool -\bool_new:N \l__galley_parshape_resume_std_bool -\bool_new:N \l__galley_parshape_fixed_lines_bool -\int_new:N \l_galley_parshape_std_lines_int +\seq_new:N \l__galley_parshape_left_indent_seq +\seq_new:N \l__galley_parshape_right_indent_seq \cs_new_eq:NN \l_galley_text_width_dim \linewidth \cs_new_eq:NN \l_galley_total_left_margin_dim \@totalleftmargin \dim_new:N \l_galley_total_right_margin_dim @@ -66,20 +68,24 @@ \cs_new_eq:NN \l_galley_width_dim \tex_hsize:D \bool_new:N \g__galley_begin_level_bool \bool_new:N \l__galley_begin_level_bool +\seq_new:N \g__galley_cutout_left_seq +\seq_new:N \l__galley_cutout_left_seq +\seq_new:N \g__galley_cutout_right_seq +\seq_new:N \l__galley_cutout_right_seq \bool_new:N \g_galley_omit_next_indent_bool \bool_new:N \l__galley_omit_next_indent_bool -\bool_new:N \g__galley_parshape_set_bool -\bool_new:N \l__galley_parshape_set_bool \bool_new:N \g_galley_no_break_next_bool \bool_new:N \l__galley_no_break_next_bool \tl_new:N \g_galley_par_begin_hook_tl -\tl_new:N \l__galley_galley_par_begin_hook_tl +\tl_new:N \l__galley_par_begin_hook_tl \tl_new:N \g_galley_par_end_hook_tl -\tl_new:N \l__galley_galley_par_end_hook_tl -\tl_new:N \g_galley_par_after_hook_tl -\tl_new:N \l__galley_par_after_hook_tl +\tl_new:N \l__galley_par_end_hook_tl +\tl_new:N \g_galley_par_reset_hook_tl +\tl_new:N \l__galley_par_reset_hook_tl \int_new:N \g_galley_previous_par_lines_int \int_new:N \l__galley_previous_par_lines_int +\int_new:N \g__galley_current_par_lines_int +\int_new:N \l__galley_current_par_lines_int \tl_new:N \g_galley_restore_running_tl \tl_new:N \l__galley_restore_running_tl \tl_new:N \g_galley_whatsit_next_tl @@ -93,14 +99,16 @@ \cs_new_protected_nopar:Npn \__galley_initialise_variables: { \bool_gset_true:N \g__galley_begin_level_bool + \seq_gclear:N \g__galley_cutout_left_seq + \seq_gclear:N \g__galley_cutout_right_seq \tl_gclear:N \g__galley_interpar_penalty_user_tl \tl_gclear:N \g__galley_interpar_vspace_user_tl \bool_gset_true:N \g_galley_omit_next_indent_bool \bool_gset_false:N \g_galley_no_break_next_bool \tl_gclear:N \g_galley_par_begin_hook_tl \tl_gclear:N \g_galley_par_end_hook_tl - \tl_gclear:N \g_galley_par_after_hook_tl - \bool_gset_false:N \g__galley_parshape_set_bool + \tl_gclear:N \g_galley_par_reset_hook_tl + \int_gzero:N \g__galley_current_par_lines_int \int_gzero:N \g_galley_previous_par_lines_int \tl_gclear:N \g_galley_restore_running_tl \tl_gclear:N \g_galley_whatsit_previous_tl @@ -117,6 +125,10 @@ { \bool_set_eq:NN \l__galley_begin_level_bool \g__galley_begin_level_bool + \seq_set_eq:NN \l__galley_cutout_left_seq + \g__galley_cutout_left_seq + \seq_set_eq:NN \l__galley_cutout_right_seq + \g__galley_cutout_right_seq \tl_set_eq:NN \l__galley_interpar_penalty_user_tl \g__galley_interpar_penalty_user_tl \tl_set_eq:NN \l__galley_interpar_vspace_user_tl @@ -125,14 +137,14 @@ \g_galley_omit_next_indent_bool \bool_set_eq:NN \l__galley_no_break_next_bool \g_galley_no_break_next_bool - \tl_set_eq:NN \l__galley_galley_par_begin_hook_tl + \tl_set_eq:NN \l__galley_par_begin_hook_tl \g_galley_par_begin_hook_tl - \tl_set_eq:NN \l__galley_galley_par_end_hook_tl + \tl_set_eq:NN \l__galley_par_end_hook_tl \g_galley_par_end_hook_tl - \tl_set_eq:NN \l__galley_par_after_hook_tl - \g_galley_par_after_hook_tl - \bool_set_eq:NN \l__galley_parshape_set_bool - \g__galley_parshape_set_bool + \tl_set_eq:NN \l__galley_par_reset_hook_tl + \g_galley_par_reset_hook_tl + \int_set_eq:NN \l__galley_current_par_lines_int + \g__galley_current_par_lines_int \int_set_eq:NN \l__galley_previous_par_lines_int \g_galley_previous_par_lines_int \tl_set_eq:NN \l__galley_restore_running_tl @@ -146,6 +158,10 @@ { \bool_gset_eq:NN \g__galley_begin_level_bool \l__galley_begin_level_bool + \seq_gset_eq:NN \g__galley_cutout_left_seq + \l__galley_cutout_left_seq + \seq_gset_eq:NN \g__galley_cutout_right_seq + \l__galley_cutout_right_seq \tl_gset_eq:NN \g__galley_interpar_penalty_user_tl \l__galley_interpar_penalty_user_tl \tl_gset_eq:NN \g__galley_interpar_vspace_user_tl @@ -155,13 +171,13 @@ \bool_gset_eq:NN \g_galley_no_break_next_bool \l__galley_no_break_next_bool \tl_gset_eq:NN \g_galley_par_begin_hook_tl - \l__galley_galley_par_begin_hook_tl + \l__galley_par_begin_hook_tl \tl_gset_eq:NN \g_galley_par_end_hook_tl - \l__galley_galley_par_end_hook_tl - \tl_gset_eq:NN \g_galley_par_after_hook_tl - \l__galley_par_after_hook_tl - \bool_gset_eq:NN \g__galley_parshape_set_bool - \l__galley_parshape_set_bool + \l__galley_par_end_hook_tl + \tl_gset_eq:NN \g_galley_par_reset_hook_tl + \l__galley_par_reset_hook_tl + \int_gset_eq:NN \g__galley_current_par_lines_int + \l__galley_current_par_lines_int \int_gset_eq:NN \g_galley_previous_par_lines_int \l__galley_previous_par_lines_int \tl_gset_eq:NN \g_galley_restore_running_tl @@ -186,52 +202,58 @@ \group_end: } \__scan_new:N \s__par_omit -\cs_new_protected_nopar:Npn \__galley_std_par: +\cs_new_protected_nopar:Npn \galley_par: { \s__par_omit - \exp_after:wN \__galley_std_par_aux_i: \tex_romannumeral:D - `0 + \exp_after:wN \__galley_par_auxi: \tex_romannumeral:D - `0 } -\cs_new_protected:Npn \__galley_std_par_aux_i: +\cs_new_protected:Npn \__galley_par_auxi: { \peek_meaning:NTF \s__par_omit - { \__galley_std_par_aux:N } - { \__galley_std_par_aux_ii: } + { \__galley_par_aux:N } + { \__galley_par_auxii: } } -\cs_new_protected:Npn \__galley_std_par_aux:N #1 +\cs_new_protected:Npn \__galley_par_aux:N #1 { \str_if_eq_x:nnF {#1} { \s__par_omit } { - \__galley_std_par_aux_ii: + \__galley_par_auxii: #1 } } -\cs_new_protected_nopar:Npn \__galley_std_par_aux_ii: +\cs_new_protected_nopar:Npn \__galley_par_auxii: { \mode_if_vertical:TF - { \tex_par:D } + { + \group_begin: + \tex_par:D + \group_end: + } { \g_galley_par_end_hook_tl - \__galley_set_measure_and_parshape: \group_begin: \tex_par:D \group_end: - \int_gadd:Nn \g_galley_previous_par_lines_int \tex_prevgraf:D + \int_gset:Nn \g_galley_previous_par_lines_int + { \tex_prevgraf:D + \g__galley_current_par_lines_int } + \__galley_parshape_reset: + \int_gzero:N \g__galley_current_par_lines_int } - \g_galley_par_after_hook_tl - \tl_gclear:N \g_galley_par_after_hook_tl + \g_galley_par_reset_hook_tl + \tl_gclear:N \g_galley_par_reset_hook_tl \tex_penalty:D \c_ten_thousand } -\cs_new_protected:Npn \__galley_end_par:n #1 +\cs_new_protected:Npn \galley_par:n #1 { \s__par_omit \bool_if:nF \g__galley_begin_level_bool { #1 - \__galley_std_par: + \galley_par: } } -\cs_set_protected_nopar:Npn \par { \__galley_std_par: } -\tl_set:Nn \@par { \__galley_std_par: } +\cs_set_protected_nopar:Npn \par { \galley_par: } +\tl_set:Nn \@par { \galley_par: } \cs_new_protected_nopar:Npn \galley_display_begin: { \group_begin: @@ -285,7 +307,7 @@ } \cs_new_protected_nopar:Npn \__galley_display_par: { - \cs_set_eq:NN \par \__galley_std_par: + \cs_set_eq:NN \par \galley_par: \mode_if_vertical:TF { \par @@ -294,11 +316,10 @@ \__galley_display_vspace:N \l_galley_display_end_par_vspace_tl } { - \__galley_set_measure_and_parshape: \group_begin: \tex_par:D \group_end: - \int_gadd:Nn \g_galley_previous_par_lines_int \tex_prevgraf:D + \int_gadd:Nn \g__galley_current_par_lines_int \tex_prevgraf:D \__galley_display_penalty:N \l_galley_display_end_penalty_tl \__galley_display_vspace:N \l_galley_display_end_vspace_tl } @@ -325,7 +346,6 @@ \tex_everypar:D { } \tex_noindent:D \group_end: - \int_gzero:N \g_galley_previous_par_lines_int \__galley_insert_horizontal_items: \__galley_restore_running_parameters: } @@ -391,8 +411,11 @@ \g_galley_restore_running_tl \tl_gclear:N \g_galley_restore_running_tl } +\dim_new:N \l__galley_total_left_margin_dim +\dim_new:N \l__galley_total_right_margin_dim \cs_new_protected:Npn \galley_margins_set_absolute:nn #1#2 { + \__galley_save_margins: \dim_set:Nn \l_galley_total_left_margin_dim {#1} \dim_set:Nn \l_galley_total_right_margin_dim {#2} \dim_set:Nn \l_galley_text_width_dim @@ -401,9 +424,11 @@ - \l_galley_total_left_margin_dim - \l_galley_total_right_margin_dim } + \__galley_set_measure: } \cs_new_protected:Npn \galley_margins_set_relative:nn #1#2 { + \__galley_save_margins: \dim_add:Nn \l_galley_total_left_margin_dim {#1} \dim_add:Nn \l_galley_total_right_margin_dim {#2} \dim_set:Nn \l_galley_text_width_dim @@ -412,144 +437,241 @@ - \l_galley_total_left_margin_dim - \l_galley_total_right_margin_dim } + \__galley_set_measure: } -\cs_new_protected:Npn \galley_parshape_fixed_lines:nnn #1#2#3 +\cs_new_protected_nopar:Npn \__galley_save_margins: { - \bool_gset_true:N \g__galley_parshape_set_bool - \bool_set_true:N \l__galley_parshape_fixed_lines_bool - \int_set:Nn \l_galley_parshape_std_lines_int {#1} - \clist_set:Nn \l__galley_parshape_left_indent_clist {#2} - \clist_set:Nn \l__galley_parshape_right_indent_clist {#3} - \bool_set_true:N \l__galley_parshape_resume_std_bool + \dim_set_eq:NN \l__galley_total_left_margin_dim + \l_galley_total_left_margin_dim + \dim_set_eq:NN \l__galley_total_right_margin_dim + \l_galley_total_right_margin_dim } -\cs_new_protected:Npn \galley_parshape_multi_par:nnnN #1#2#3#4 +\cs_new_protected_nopar:Npn \__galley_set_measure: { - \bool_gset_true:N \g__galley_parshape_set_bool - \bool_set_true:N \l__galley_parshape_multipar_bool - \bool_set_false:N \l__galley_parshape_fixed_lines_bool - \int_set:Nn \l_galley_parshape_std_lines_int {#1} - \clist_set:Nn \l__galley_parshape_left_indent_clist {#2} - \clist_set:Nn \l__galley_parshape_right_indent_clist {#3} - \bool_set_eq:NN \l__galley_parshape_resume_std_bool #4 + \int_compare:nNnTF \tex_parshape:D = \c_zero + { \__galley_parshape_measure: } + { + \dim_sub:Nn \l__galley_total_left_margin_dim + \l_galley_total_left_margin_dim + \dim_sub:Nn \l__galley_total_right_margin_dim + \l_galley_total_right_margin_dim + \tex_parshape:D + \tex_parshape:D + \int_step_function:nnnN + \c_one \c_one \tex_parshape:D + \__galley_set_measure_aux:n + } } -\cs_new_protected:Npn \galley_parshape_single_par:nnnN #1#2#3#4 +\cs_new:Npn \__galley_set_measure_aux:n #1 { - \bool_gset_true:N \g__galley_parshape_set_bool - \bool_set_false:N \l__galley_parshape_multipar_bool - \bool_set_false:N \l__galley_parshape_fixed_lines_bool - \int_set:Nn \l_galley_parshape_std_lines_int {#1} - \clist_set:Nn \l__galley_parshape_left_indent_clist {#2} - \clist_set:Nn \l__galley_parshape_right_indent_clist {#3} - \bool_set_eq:NN \l__galley_parshape_resume_std_bool #4 + \__dim_eval:w + \etex_parshapeindent:D #1 - \l__galley_total_left_margin_dim + \__dim_eval_end: + \__dim_eval:w + \etex_parshapelength:D #1 + + \l__galley_total_left_margin_dim + \l__galley_total_right_margin_dim + \__dim_eval_end: } -\cs_generate_variant:Nn \galley_parshape_fixed_lines:nnn { nVV } -\cs_generate_variant:Nn \galley_parshape_multi_par:nnnN { nVV } -\cs_generate_variant:Nn \galley_parshape_single_par:nnnN { nVV } -\cs_new_protected_nopar:Npn \__galley_set_measure_and_parshape: +\cs_new_protected_nopar:Npn \__galley_parshape_reset: { - \bool_if:NTF \g__galley_parshape_set_bool + \int_compare:nNnF \tex_parshape:D = \c_zero { - \bool_if:NTF \l__galley_parshape_fixed_lines_bool + \bool_if:nTF + { + \seq_if_empty_p:N \g__galley_cutout_left_seq + && \seq_if_empty_p:N \g__galley_cutout_right_seq + } { - \int_compare:nNnTF \g_galley_previous_par_lines_int > \c_zero - { \__galley_generate_parshape_lines: } - { \__galley_generate_parshape: } + \bool_if:NF \l__galley_parshape_multipar_bool + { \__galley_parshape_measure: } } { - \bool_gset_eq:NN \g__galley_parshape_set_bool - \l__galley_parshape_multipar_bool - \__galley_generate_parshape: + \prg_replicate:nn \g__galley_previous_par_lines_int + { + \seq_gpop:NN \g__galley_cutout_left_seq \l__galley_tmp_tl + \seq_gpop:NN \g__galley_cutout_right_seq \l__galley_tmp_tl + } + \bool_if:NTF \l__galley_parshape_multipar_bool + { \__galley_parshape_set: } + { \__galley_parshape_measure: } + \__galley_cutout_set:Nn \g__galley_cutout_left_seq { left } + \__galley_cutout_set:Nn \g__galley_cutout_right_seq { right } } } + } +\cs_new_protected_nopar:Npn \__galley_parshape_measure: + { + \tex_parshape:D + \c_one + \l_galley_total_left_margin_dim + \l_galley_text_width_dim + } +\cs_new_protected_nopar:Npn \galley_parshape_set_multi:nnnN + { + \bool_set_true:N \l__galley_parshape_multipar_bool + \__galley_parshape_set:nnnN + } +\cs_new_protected_nopar:Npn \galley_parshape_set_single:nnnN + { + \bool_set_false:N \l__galley_parshape_multipar_bool + \__galley_parshape_set:nnnN + } +\cs_generate_variant:Nn \galley_parshape_set_multi:nnnN { nVV } +\cs_generate_variant:Nn \galley_parshape_set_single:nnnN { nVV } +\cs_new_protected:Npn \__galley_parshape_set:nnnN #1#2#3#4 + { + \seq_set_from_clist:Nn \l__galley_parshape_left_indent_seq {#2} + \seq_set_from_clist:Nn \l__galley_parshape_right_indent_seq {#3} + \prg_replicate:nn {#1} + { + \seq_put_left:Nn \l__galley_parshape_left_indent_seq { 0 pt } + \seq_put_left:Nn \l__galley_parshape_right_indent_seq { 0 pt } + } + \bool_if:NT #4 { - \tex_global:D \tex_parshape:D - \c_one - \dim_use:N \l_galley_total_left_margin_dim - \c_space_tl - \dim_use:N \l_galley_text_width_dim + \seq_put_right:Nn \l__galley_parshape_left_indent_seq { 0 pt } + \seq_put_right:Nn \l__galley_parshape_right_indent_seq { 0 pt } } + \__galley_parshape_set: } -\cs_new_protected_nopar:Npn \__galley_generate_parshape: +\cs_new_protected_nopar:Npn \__galley_parshape_set: { - \tex_global:D \tex_parshape:D + \tex_parshape:D \__int_eval:w - \l_galley_parshape_std_lines_int + - \int_min:nn - { \clist_count:N \l__galley_parshape_left_indent_clist } - { \clist_count:N \l__galley_parshape_right_indent_clist } - \bool_if:NT \l__galley_parshape_resume_std_bool { + 1 } + \int_min:nn + { \seq_count:N \l__galley_parshape_left_indent_seq } + { \seq_count:N \l__galley_parshape_right_indent_seq } \__int_eval_end: - \prg_replicate:nn \l_galley_parshape_std_lines_int - { - \dim_use:N \l_galley_total_left_margin_dim - \c_space_tl - \dim_use:N \l_galley_text_width_dim - \c_space_tl - } - \__galley_set_parshape_map:oo - \l__galley_parshape_left_indent_clist - \l__galley_parshape_right_indent_clist - \bool_if:NT \l__galley_parshape_resume_std_bool - { - \c_space_tl - \dim_use:N \l_galley_total_left_margin_dim - \c_space_tl - \dim_use:N \l_galley_text_width_dim - } + \seq_mapthread_function:NNN + \l__galley_parshape_left_indent_seq + \l__galley_parshape_right_indent_seq + \__galley_parshape_set:nn + } +\cs_new:Npn \__galley_parshape_set:nn #1#2 + { + \__dim_eval:w \l_galley_total_left_margin_dim + ( #1 ) \__dim_eval_end: + \__dim_eval:w + \l_galley_text_width_dim - ( ( #1 ) + ( #2 ) ) + \__dim_eval_end: + } +\cs_new_protected_nopar:Npn \galley_cutout_left:nn + { \__galley_cutout:nnn { left } } +\cs_new_protected_nopar:Npn \galley_cutout_right:nn + { \__galley_cutout:nnn { right } } +\cs_new_protected:Npn \__galley_cutout:nnn #1#2#3 + { + \seq_set_from_clist:Nn \l__galley_tmpa_seq {#3} + \prg_replicate:nn {#2} + { \seq_put_left:Nn \l__galley_tmpa_seq { 0 pt } } + \__galley_cutout_set:Nn \l__galley_tmpa_seq {#1} + \seq_clear:N \l__galley_tmpb_seq + \int_compare:nNnTF + { \seq_count:N \l__galley_tmpa_seq } > + { \seq_count:c { g__galley_cutout_ #1 _ seq } } + { + \seq_map_inline:Nn \l__galley_tmpa_seq + { + \__galley_cutout_store:nn + { \seq_gpop:cNF { g__galley_cutout_ #1 _ seq } } + {##1} + } + } + { + \seq_map_inline:cn { g__galley_cutout_ #1 _ seq } + { + \__galley_cutout_store:nn + { \seq_pop:NNF \l__galley_tmpa_seq } + {##1} + } + } + \seq_gset_eq:cN { g__galley_cutout_ #1 _ seq } \l__galley_tmpb_seq + } +\cs_new_protected:Npn \__galley_cutout_store:nn #1#2 + { + #1 \l__galley_tmp_tl + { \tl_set:Nn \l__galley_tmp_tl { 0 pt } } + \seq_put_right:Nx \l__galley_tmpb_seq + { \dim_eval:n { \l__galley_tmp_tl + #2 } } } -\cs_new:Npn \__galley_set_parshape_map:nn #1#2 - { \__galley_set_parshape_map_aux:nw { } #1 , \q_mark #2 , \q_stop } -\cs_generate_variant:Nn \__galley_set_parshape_map:nn { oo } -\cs_new:Npn \__galley_set_parshape_map_aux:nw #1#2 , #3 \q_mark #4 , #5 \q_stop +\cs_new_protected:Npn \__galley_cutout_set:Nn #1#2 { - \bool_if:nTF { \tl_if_empty_p:n {#3} || \tl_if_empty_p:n {#5} } + \int_zero:N \l__galley_tmp_int + \tl_clear:N \l__galley_tmp_tl + \seq_map_function:Nc #1 { __galley_cutout_ #2 :n } + \int_compare:nNnTF \tex_parshape:D > \l__galley_tmp_int { - #1 - \dim_eval:n { \l_galley_total_left_margin_dim + ( #2 ) } - \c_space_tl - \dim_eval:n { \l_galley_text_width_dim - ( ( #2 ) + ( #4 ) ) } + \int_step_function:nnnN + { \l__galley_tmp_int + \c_one } + \c_one + \tex_parshape:D + \__galley_cutout_end:n } { - \__galley_set_parshape_map_aux:nw + \int_incr:N \l__galley_tmp_int + \int_compare:nNnTF \tex_parshape:D = \c_zero { - #1 - \dim_eval:n { \l_galley_total_left_margin_dim + ( #2 ) } - \c_space_tl - \dim_eval:n { \l_galley_text_width_dim - ( ( #2 ) + ( #4 ) ) } - \c_space_tl + \tl_put_right:Nn \l__galley_tmp_tl + { \l__galley_total_left_margin_dim \l__galley_text_width_dim } + } + { + \tl_put_right:Nx \l__galley_tmp_tl + { + \dim_eval:n { \etex_parshapeindent:D \tex_parshape:D } + \c_space_tl + \dim_eval:n { \etex_parshapelength:D \tex_parshape:D } + \c_space_tl + } } - #3 \q_mark #5 \q_stop } + \tex_parshape:D + \l__galley_tmp_int + \l__galley_tmp_tl } -\cs_new_protected_nopar:Npn \__galley_generate_parshape_lines: +\cs_new_protected:Npn \__galley_cutout_left:n #1 { - \int_compare:nNnTF \tex_parshape:D > \g_galley_previous_par_lines_int + \int_incr:N \l__galley_tmp_int + \tl_put_right:Nx \l__galley_tmp_tl { - \tex_global:D \tex_parshape:D - \__int_eval:w \tex_parshape:D - \g_galley_previous_par_lines_int - \__int_eval_end: - \int_step_function:nnnN - { \g_galley_previous_par_lines_int + \c_one } - \c_one \tex_parshape:D \__galley_generate_parshape_lines:n + \int_compare:nNnTF \l__galley_tmp_int > \tex_parshape:D + { + \dim_eval:n { \l__galley_total_left_margin_dim + ( #1 ) } + \c_space_tl + \dim_eval:n { \l__galley_text_width_dim - ( #1 ) } + \c_space_tl + } + { + \dim_eval:n { \etex_parshapeindent:D \l__galley_tmp_int + ( #1 ) } + \c_space_tl + \dim_eval:n { \etex_parshapelength:D \l__galley_tmp_int - ( #1 ) } + \c_space_tl + } } + } +\cs_new_protected:Npn \__galley_cutout_right:n #1 + { + \int_incr:N \l__galley_tmp_int + \tl_put_right:Nx \l__galley_tmp_tl { - \bool_gset_false:N \g__galley_parshape_set_bool - \tex_global:D \tex_parshape:D - \c_one - \dim_use:N \l_galley_total_left_margin_dim - \c_space_tl - \dim_use:N \l_galley_text_width_dim + \dim_eval:n { \etex_parshapeindent:D \l__galley_tmp_int } + \c_space_tl + \dim_eval:n { \etex_parshapelength:D \l__galley_tmp_int - ( #1 ) } + \c_space_tl } } -\cs_new:Npn \__galley_generate_parshape_lines:n #1 +\cs_new_protected:Npn \__galley_cutout_end:n #1 { - \etex_parshapeindent:D #1 - ~ - \etex_parshapelength:D #1 + \int_incr:N \l__galley_tmp_int + \tl_put_right:Nx \l__galley_tmp_tl + { + \dim_eval:n { \etex_parshapeindent:D #1 } + \c_space_tl + \dim_eval:n { \etex_parshapelength:D #1 } + \c_space_tl + } } -\cs_new_protected:Npn \galley_set_user_penalty:n #1 +\cs_new_protected:Npn \galley_penalty_set_single:n #1 { \tl_gset:Nx \g__galley_interpar_penalty_user_tl { \int_eval:n {#1} } } -\cs_new_protected:Npn \galley_set_user_vspace:n #1 +\cs_new_protected:Npn \galley_vspace_set_single:n #1 { \tl_gset:Nx \g__galley_interpar_vspace_user_tl { \skip_eval:n {#1} } } \dim_set:Nn \parskip \c_zero_dim \cs_undefine:N \parskip @@ -560,7 +682,7 @@ \cs_new_eq:NN \l_galley_par_end_skip \tex_parfillskip:D \cs_new_eq:NN \l_galley_par_indent_dim \tex_parindent:D \cs_new_eq:NN \l_galley_last_line_fit_int \etex_lastlinefit:D -\cs_new_protected:Npn \galley_set_interword_spacing:N #1 +\cs_new_protected:Npn \galley_interword_spacing_set:N #1 { \bool_if:NTF #1 { % TODO Hook for font changes required! @@ -607,45 +729,45 @@ \cs_new_eq:NN \l_galley_pre_display_penalty_int \tex_predisplaypenalty:D \clist_new:N \l_galley_club_penalties_clist \clist_new:N \l_galley_line_penalties_clist -\cs_new_protected:Npn \galley_set_display_widow_penalties:n #1 +\cs_new_protected:Npn \galley_display_widow_penalties_set:n #1 { \etex_displaywidowpenalties:D \__int_eval:w \clist_count:n {#1} + \c_one \__int_eval_end: - \clist_map_function:nN {#1} \galley_set_aux:n + \clist_map_function:nN {#1} \__galley_set_aux:n \c_zero } -\cs_generate_variant:Nn \galley_set_display_widow_penalties:n { V , v } -\cs_new_protected:Npn \galley_set_widow_penalties:n #1 +\cs_generate_variant:Nn \galley_display_widow_penalties_set:n { V , v } +\cs_new_protected:Npn \galley_widow_penalties_set:n #1 { \etex_widowpenalties:D \__int_eval:w \clist_count:n {#1} + \c_one \__int_eval_end: - \clist_map_function:nN {#1} \galley_set_aux:n + \clist_map_function:nN {#1} \__galley_set_aux:n \c_zero } -\cs_generate_variant:Nn \galley_set_widow_penalties:n { V , v } -\cs_new:Npn \galley_set_aux:n #1 { #1 ~ } -\cs_new_protected:Npn \galley_set_club_penalties:n #1 +\cs_generate_variant:Nn \galley_widow_penalties_set:n { V , v } +\cs_new:Npn \__galley_set_aux:n #1 { \int_eval:n {#1} ~ } +\cs_new_protected:Npn \galley_club_penalties_set:n #1 { \clist_set:Nn \l_galley_club_penalties_clist {#1} \__galley_calc_interline_penalties: } -\cs_generate_variant:Nn \galley_set_club_penalties:n { V , v } -\cs_new_protected:Npn \galley_set_interline_penalties:n #1 +\cs_generate_variant:Nn \galley_club_penalties_set:n { V , v } +\cs_new_protected:Npn \galley_interline_penalties_set:n #1 { \clist_set:Nn \l_galley_line_penalties_clist {#1} \__galley_calc_interline_penalties: } -\cs_generate_variant:Nn \galley_set_interline_penalties:n { V , v } -\cs_new_protected:Npn \galley_set_display_club_penalties:n #1 +\cs_generate_variant:Nn \galley_interline_penalties_set:n { V , v } +\cs_new_protected:Npn \galley_display_club_penalties_set:n #1 { \etex_clubpenalties:D \__int_eval:w \clist_count:n {#1} + \c_one \__int_eval_end: - \clist_map_function:nN {#1} \galley_set_aux:n + \clist_map_function:nN {#1} \__galley_set_aux:n \c_zero \__galley_calc_interline_penalties: } -\cs_generate_variant:Nn \galley_set_display_club_penalties:n { V , v } -\cs_new_protected:Npn \galley_set_interline_penalty:n #1 +\cs_generate_variant:Nn \galley_display_club_penalties_set:n { V , v } +\cs_new_protected:Npn \galley_interline_penalty_set:n #1 { \int_compare:nNnTF { \etex_interlinepenalties:D \c_zero } = \c_zero { @@ -653,7 +775,7 @@ \__galley_calc_interline_penalties: } { - \cs_set:Npn \__galley_set_interline_penalty_ii:n ##1 + \cs_set:Npn \__galley_set_interline_penalty_auxii:n ##1 { \__int_eval:w \etex_interlinepenalties:D ##1 @@ -670,34 +792,31 @@ \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero \int_step_function:nnnN \c_one \c_one {#1} - \__galley_set_interline_penalty_i:n + \__galley_set_interline_penalty_auxi:n \int_step_function:nnnN { #1 + \c_one } \c_one { \etex_interlinepenalties:D \c_zero - \c_one } - \__galley_set_interline_penalty_ii:n + \__galley_set_interline_penalty_auxii:n \__int_eval:w #2 \__int_eval_end: } -\cs_new:Npn \__galley_set_interline_penalty_i:n #1 +\cs_new:Npn \__galley_set_interline_penalty_auxi:n #1 { \etex_interlinepenalties:D \__int_eval:w #1 \__int_eval_end: } -\cs_new:Npn \__galley_set_interline_penalty_ii:n #1 { } +\cs_new:Npn \__galley_set_interline_penalty_auxii:n #1 { } \cs_new_protected_nopar:Npn \__galley_calc_interline_penalties: { \exp_args:Nff \__galley_calc_interline_penalties:nn { - \int_eval:n + \int_max:nn + { + \clist_count:N \l_galley_club_penalties_clist + + \c_one + } { \int_max:nn { - \clist_count:N \l_galley_club_penalties_clist + \clist_count:N \l_galley_line_penalties_clist + \c_one } - { - \int_max:nn - { - \clist_count:N \l_galley_line_penalties_clist - + \c_one - } - { \etex_clubpenalties:D \c_zero } - } + { \etex_clubpenalties:D \c_zero } } } { \clist_count:N \l_galley_line_penalties_clist } @@ -706,12 +825,12 @@ { \etex_interlinepenalties:D #1 ~ \int_step_function:nnnN \c_one \c_one {#2} - \__galley_calc_interline_penalties_i:n + \__galley_calc_interline_penalties_auxi:n \int_step_function:nnnN { #2 + \c_one } \c_one { #1 - \c_one } - \__galley_calc_interline_penalties_ii:n + \__galley_calc_interline_penalties_auxii:n \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } -\cs_new:Npn \__galley_calc_interline_penalties_i:n #1 +\cs_new:Npn \__galley_calc_interline_penalties_auxi:n #1 { \__int_eval:w \clist_item:Nn \l_galley_line_penalties_clist {#1} @@ -719,7 +838,7 @@ - \etex_clubpenalties:D #1 ~ \__int_eval_end: } -\cs_new:Npn \__galley_calc_interline_penalties_ii:n #1 +\cs_new:Npn \__galley_calc_interline_penalties_auxii:n #1 { \__int_eval:w \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero @@ -737,21 +856,21 @@ { \int_step_function:nnnN \c_one \c_one { \etex_clubpenalties:D \c_zero - \c_one } - \galley_save_display_club_penalties:_aux:n + \__galley_save_display_club_penalties:n } } -\cs_new:Npn \galley_save_display_club_penalties:_aux:n #1 - { \int_use:N \etex_clubpenaltes:D \__int_eval:w #1 \__int_eval_end: , } +\cs_new:Npn \__galley_save_display_club_penalties:n #1 + { \int_use:N \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1 { \clist_set:Nx #1 { \int_step_function:nnnN \c_one \c_one { \etex_displaywidowpenalties:D \c_zero - \c_one } - \galley_save_display_widow_penalties:_aux:n + \__galley_save_display_widow_penalties:n } } -\cs_new:Npn \galley_save_display_widow_penalties:_aux:n #1 +\cs_new:Npn \__galley_save_display_widow_penalties:n #1 { \int_use:N \etex_displaywidowpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_widow_penalties:N #1 { @@ -759,10 +878,10 @@ { \int_step_function:nnnN \c_one \c_one { \etex_widowpenalties:D \c_zero - \c_one } - \galley_save_widow_penalties:_aux:n + \__galley_save_widow_penalties:n } } -\cs_new:Npn \galley_save_widow_penalties:_aux:n #1 +\cs_new:Npn \__galley_save_widow_penalties:n #1 { \int_use:N \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected_nopar:Npn \galley_interline_penalty: { \int_use:N \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } @@ -782,7 +901,7 @@ \tl_gput_right:Nn \g_galley_whatsit_next_tl { \iow_shipout:Nx \c_minus_one { } } \tex_vbox:D { } - \galley_set_user_penalty:n { -\@Mi } + \galley_penalty_set_single:n { -\@Mi } } \RenewDocumentCommand \nobreak { } { \bool_gset_true:N \g_galley_no_break_next_bool } @@ -794,20 +913,20 @@ \RenewDocumentCommand \vspace { s m } { \IfBooleanTF #1 - { \galley_set_user_vspace:n {#2} } - { \galley_set_user_vspace:n {#2} } + { \galley_vspace_set_single:n {#2} } + { \galley_vspace_set_single:n {#2} } } \RenewDocumentCommand \\ { s O { 0 pt } } { \galley_break_line:Nn #1 {#2} } \RenewDocumentCommand \newline { } { \galley_break_line:Nn \c_true_bool { 0 pt } } -\cs_set_eq:NN \__galleypar \__galley_std_par: +\cs_set_eq:cN { @ @ par } \galley_par: \cs_set_protected_nopar:Npn \@afterheading { \bool_gset_true:N \g_galley_no_break_next_bool \if@afterindent \else - \bool_gset_true:N \galley_omit_next_indent_bool + \bool_gset_true:N \g_galley_omit_next_indent_bool \fi } \cs_set_protected:Npn \@hangfrom #1 @@ -815,7 +934,7 @@ \bool_gset_true:N \g_galley_omit_next_indent_bool \leavevmode \setbox \@tempboxa = \hbox { {#1} } - \galley_parshape_single_par:nnnN + \galley_parshape_set_single:nnnN \c_one { \box_wd:N \@tempboxa } \c_zero_dim diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index f8552f3f8e4..f736e2b74a6 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -48,7 +48,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{expl3} -\GetIdInfo$Id: xgalley.dtx 4253 2012-11-01 21:01:54Z joseph $ +\GetIdInfo$Id: xgalley.dtx 4373 2012-12-17 16:41:59Z joseph $ {L3 Experimental galley} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -111,14 +111,14 @@ \AssignTemplateKeys \bool_if:NTF \l__galley_parshape_on_left_bool { - \galley_parshape_single_par:nVVN + \galley_parshape_set_single:nVVN \l__galley_parshape_lines_int \l__galley_parshape_indent_dim \c_zero_dim \c_false_bool } { - \galley_parshape_single_par:nVVN + \galley_parshape_set_single:nVVN \l__galley_parshape_lines_int \c_zero_dim \l__galley_parshape_indent_dim @@ -144,14 +144,14 @@ } \bool_if:NTF \l__galley_parshape_on_left_bool { - \galley_parshape_single_par:nVVN + \galley_parshape_set_single:nVVN \c_zero \l__galley_tmpa_clist \l__galley_tmpb_clist \c_true_bool } { - \galley_parshape_single_par:nVVN + \galley_parshape_set_single:nVVN \c_zero \l__galley_tmpb_clist \l__galley_tmpa_clist @@ -242,7 +242,7 @@ { \AssignTemplateKeys \tl_clear:N \l__galley_justification_other_tl - \galley_set_interword_spacing:N \l_galley_fixed_spacing_bool + \galley_interword_spacing_set:N \l_galley_fixed_spacing_bool \bool_if:NTF \l_galley_par_stretch_last_bool { \int_set_eq:NN \l_galley_last_line_fit_int \c_one_thousand } { \int_zero:N \l_galley_last_line_fit_int } @@ -266,7 +266,7 @@ \bool_if:NTF \l_galley_fixed_spacing_bool { \bool_set_true:N \exp_not:N \l_galley_fixed_spacing_bool } { \bool_set_false:N \exp_not:N \l_galley_fixed_spacing_bool } - \galley_set_interword_spacing:N + \galley_interword_spacing_set:N \exp_not:N \l_galley_fixed_spacing_bool \dim_set:Nn \exp_not:N \l_galley_par_indent_dim { \dim_use:N \l_galley_par_indent_dim } @@ -284,7 +284,7 @@ \tl_gput_right:Nn \g_galley_restore_running_tl { \l__galley_justification_other_tl } \AssignTemplateKeys - \galley_set_interword_spacing:N \l_galley_fixed_spacing_bool + \galley_interword_spacing_set:N \l_galley_fixed_spacing_bool \bool_if:NTF \l_galley_par_stretch_last_bool { \int_set_eq:NN \l_galley_last_line_fit_int \c_one_thousand } { \int_zero:N \l_galley_last_line_fit_int } @@ -401,11 +401,11 @@ } { \AssignTemplateKeys - \galley_set_club_penalties:V \l__galley_club_penalty_int - \galley_set_display_club_penalties:V \l__galley_display_club_penalty_int - \galley_set_display_widow_penalties:V \l__galley_display_widow_penalty_int - \galley_set_interline_penalty:n \l__galley_interline_penalty_int - \galley_set_widow_penalties:V \l__galley_widow_penalty_int + \galley_club_penalties_set:V \l__galley_club_penalty_int + \galley_display_club_penalties_set:V \l__galley_display_club_penalty_int + \galley_display_widow_penalties_set:V \l__galley_display_widow_penalty_int + \galley_interline_penalty_set:n \l__galley_interline_penalty_int + \galley_widow_penalties_set:V \l__galley_widow_penalty_int } \DeclareInstance { paragraph-breaking } { std } { std } { } \UseInstance { paragraph-breaking } { std } @@ -451,7 +451,7 @@ \AssignTemplateKeys \tl_if_empty:NF \l__galley_interline_penalty_tl { - \tl_gput_right:Nx \g_galley_par_after_hook_tl + \tl_gput_right:Nx \g_galley_par_reset_hook_tl { \int_set:Nn \exp_not:N \l__galley_interline_penalty_int { \galley_interline_penalty: } @@ -461,7 +461,7 @@ } \tl_if_empty:NF \l__galley_parbreak_fuzz_tl { - \tl_gput_right:Nx \g_galley_par_after_hook_tl + \tl_gput_right:Nx \g_galley_par_reset_hook_tl { \dim_set:Nn \exp_not:N \l_galley_parbreak_fuzz_dim { \dim_use:N \l_galley_parbreak_fuzz_dim } @@ -472,7 +472,7 @@ { \tl_if_empty:cF { l_galley_ ##1 _tl } { - \tl_gput_right:Nx \g_galley_par_after_hook_tl + \tl_gput_right:Nx \g_galley_par_reset_hook_tl { \int_set:Nn \exp_not:c { l_galley_ ##1 _int } { \int_use:c { l_galley_ ##1 _int } } @@ -486,7 +486,7 @@ \tl_if_empty:cF { l_galley_ ##1 _tl } { \use:c { galley_save_ ##1 :N } \l__galley_tmpa_clist - \tl_gput_right:Nx \g_galley_par_after_hook_tl + \tl_gput_right:Nx \g_galley_par_reset_hook_tl { \exp_not:c { galley_set_ ##1 :n } { \exp_not:o \l__galley_tmpa_clist } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 268d2cd285d..653499b0ca4 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -45,8 +45,8 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\RequirePackage{l3names}[2012/07/15] -\@ifpackagelater{l3names}{2012/07/15} +\RequirePackage{l3names}[2012/12/07] +\@ifpackagelater{l3names}{2012/12/07} {} {% \PackageError{expl3}{Mismatched LaTeX3 packages detected.} @@ -60,9 +60,10 @@ } \def\ExplFileName{expl3} \def\ExplFileDescription{L3 Experimental code bundle wrapper} -\def\ExplFileDate{2012/11/21} -\def\ExplFileVersion{4332} +\def\ExplFileDate{2012/12/21} +\def\ExplFileVersion{4390} \RequirePackage{etex} +\relax \reserveinserts{32} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty index 318c7d9bcb2..bc53602f68f 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3basics.dtx 4306 2012-11-10 12:57:20Z joseph $ +\GetIdInfo$Id: l3basics.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Basic definitions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -364,14 +364,14 @@ \cs_set:Npn \__cs_split_function:NN #1 { \exp_after:wN \exp_after:wN - \exp_after:wN \__cs_split_function_i:w + \exp_after:wN \__cs_split_function_auxi:w \cs_to_str:N #1 \q_mark \c_true_bool @ \q_mark \c_false_bool \q_stop } - \cs_set:Npn \__cs_split_function_i:w #1 @ #2 \q_mark #3#4 \q_stop #5 - { \__cs_split_function_ii:w #5 #1 \q_mark \q_stop {#2} #3 } - \cs_set:Npn \__cs_split_function_ii:w #1#2 \q_mark #3 \q_stop + \cs_set:Npn \__cs_split_function_auxi:w #1 @ #2 \q_mark #3#4 \q_stop #5 + { \__cs_split_function_auxii:w #5 #1 \q_mark \q_stop {#2} #3 } + \cs_set:Npn \__cs_split_function_auxii:w #1#2 \q_mark #3 \q_stop { #1 {#2} } } \cs_set:Npn \__cs_get_function_name:N #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty index a9e84331634..56016c45566 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3box.dtx 4259 2012-11-04 17:15:11Z joseph $ +\GetIdInfo$Id: l3box.dtx 4347 2012-12-08 09:11:29Z joseph $ {L3 Experimental boxes} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -210,7 +210,7 @@ \cs_new_eq:NN \hbox_gset_inline_end: \hbox_gset_end: \cs_new_protected:Npn \hbox_to_wd:nn #1#2 { \tex_hbox:D to \__dim_eval:w #1 \__dim_eval_end: {#2} } -\cs_new_protected:Npn \hbox_to_zero:n #1 { \tex_hbox:D to \c_zero_skip {#1} } +\cs_new_protected:Npn \hbox_to_zero:n #1 { \tex_hbox:D to \c_zero_dim {#1} } \cs_new_protected:Npn \hbox_overlap_left:n #1 { \hbox_to_zero:n { \tex_hss:D #1 } } \cs_new_protected:Npn \hbox_overlap_right:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty index cee29baf26e..65919abf3ec 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3candidates.dtx 4298 2012-11-09 13:34:43Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 4383 2012-12-20 15:10:48Z bruno $ {L3 Experimental additions to l3kernel} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -502,20 +502,20 @@ { 2 } { \exp_after:wN \__clist_use:wwn #1 , {#2} } } { - \exp_after:wN \__clist_use_ii:nwwwwnwn + \exp_after:wN \__clist_use:nwwwwnwn \exp_after:wN { \exp_after:wN } #1 , - \q_mark , { \__clist_use_ii:nwwwwnwn {#3} } - \q_mark , { \__clist_use_iii:nwwn {#4} } + \q_mark , { \__clist_use:nwwwwnwn {#3} } + \q_mark , { \__clist_use:nwwn {#4} } \q_stop { } } } { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} } } \cs_new:Npn \__clist_use:wwn #1 , #2 , #3 { \exp_not:n { #1 #3 #2 } } -\cs_new:Npn \__clist_use_ii:nwwwwnwn +\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_iii:nwwn #1#2 , #3 \q_stop #4 +\cs_new:Npn \__clist_use:nwwn #1#2 , #3 \q_stop #4 { \exp_not:n { #4 #1 #2 } } \fp_new:N \l__coffin_sin_fp \fp_new:N \l__coffin_cos_fp @@ -935,10 +935,10 @@ { 2 } { \exp_after:wN \__seq_use:NnNnn #1 {#2} } } { - \exp_after:wN \__seq_use_ii:nwwwwnwn + \exp_after:wN \__seq_use:nwwwwnwn \exp_after:wN { \exp_after:wN } #1 \__seq_item:n - \q_mark { \__seq_use_ii:nwwwwnwn {#3} } - \q_mark { \__seq_use_iii:nwwn {#4} } + \q_mark { \__seq_use:nwwwwnwn {#3} } + \q_mark { \__seq_use:nwwn {#4} } \q_stop { } } } @@ -946,14 +946,14 @@ } \cs_new:Npn \__seq_use:NnNnn \__seq_item:n #1 \__seq_item:n #2#3 { \exp_not:n { #1 #3 #2 } } -\cs_new:Npn \__seq_use_ii: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 { #6 \__seq_item:n {#3} \__seq_item:n {#4} #5 \q_mark {#6} #7 \q_stop { #8 #1 #2 } } -\cs_new:Npn \__seq_use_iii:nwwn #1 \__seq_item:n #2 #3 \q_stop #4 +\cs_new:Npn \__seq_use:nwwn #1 \__seq_item:n #2 #3 \q_stop #4 { \exp_not:n { #4 #1 #2 } } \cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4 { @@ -1104,16 +1104,41 @@ \char_tmp:NN \char_set_active_eq:NN \cs_set_eq:NN \char_tmp:NN \char_gset_active_eq:NN \cs_gset_eq:NN \group_end: -\cs_new_protected_nopar:Npn \__peek_execute_branches_N_type: +\group_begin: + \char_set_catcode_other:N \O + \char_set_catcode_other:N \U + \char_set_catcode_other:N \T + \char_set_catcode_other:N \E + \char_set_catcode_other:N \R + \tl_to_lowercase:n + { + \cs_new_protected_nopar:Npn \__peek_execute_branches_N_type: + { + \if_int_odd:w + \if_catcode:w \exp_not:N \l_peek_token { \c_two \fi: + \if_catcode:w \exp_not:N \l_peek_token } \c_two \fi: + \if_meaning:w \l_peek_token \c_space_token \c_two \fi: + \c_one + \exp_after:wN \__peek_N_type:w + \token_to_meaning:N \l_peek_token + \q_mark \__peek_N_type_aux:nnw + OUTER \q_mark \use_none_delimit_by_q_stop:w + \q_stop + \exp_after:wN \__peek_true:w + \else: + \exp_after:wN \__peek_false:w + \fi: + } + \cs_new_protected_nopar:Npn \__peek_N_type:w #1 OUTER #2 \q_mark #3 + { #3 {#1} {#2} } + } +\group_end: +\cs_new_protected_nopar:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi: { - \bool_if:nTF - { - \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token || - \token_if_eq_catcode_p:NN \l_peek_token \c_group_end_token || - \token_if_eq_meaning_p:NN \l_peek_token \c_space_token - } - { \__peek_false:w } + \fi: + \tl_if_in:noTF {#1} { \tl_to_str:n {ma} } { \__peek_true:w } + { \tl_if_empty:nTF {#2} { \__peek_true:w } { \__peek_false:w } } } \cs_new_protected_nopar:Npn \peek_N_type:TF { \__peek_token_generic:NNTF \__peek_execute_branches_N_type: \scan_stop: } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty index 284830694db..6edd2295361 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty @@ -48,7 +48,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3clist.dtx 4212 2012-09-09 12:24:04Z bruno $ +\GetIdInfo$Id: l3clist.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Comma separated lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -106,22 +106,22 @@ \cs_new:Npn \__clist_trim_spaces:n #1 { \__clist_trim_spaces_generic:nw - { \__clist_trim_spaces_ii:nn { } } + { \__clist_trim_spaces:nn { } } \q_mark #1 , \q_recursion_tail, \q_recursion_stop } -\cs_new:Npn \__clist_trim_spaces_ii:nn #1 #2 +\cs_new:Npn \__clist_trim_spaces:nn #1 #2 { \quark_if_recursion_tail_stop:n {#2} \tl_if_empty:nTF {#2} { \__clist_trim_spaces_generic:nw - { \__clist_trim_spaces_ii:nn {#1} } \q_mark + { \__clist_trim_spaces:nn {#1} } \q_mark } { #1 \exp_not:n {#2} \__clist_trim_spaces_generic:nw - { \__clist_trim_spaces_ii:nn { , } } \q_mark + { \__clist_trim_spaces:nn { , } } \q_mark } } \cs_new_protected:Npn \clist_set:Nn #1#2 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty index b3c04f68873..b1a119b7fd3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3file.dtx 4212 2012-09-09 12:24:04Z bruno $ +\GetIdInfo$Id: l3file.dtx 4377 2012-12-20 11:13:29Z bruno $ {L3 File and I/O operations} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -131,12 +131,11 @@ } \cs_new_protected:Npn \__file_input:n #1 { - \quark_if_nil:oTF { \__file_input_aux:w #1 . \q_nil . \q_stop } - { \__file_input_aux:o { \tl_to_str:n { #1 .tex } } } + \tl_if_in:nnTF {#1} { . } { \__file_input_aux:n {#1} } + { \__file_input_aux:o { \tl_to_str:n { #1 . tex } } } } \cs_generate_variant:Nn \__file_input:n { V } -\cs_new:Npn \__file_input_aux:w #1 . #2 . #3 \q_stop { #2 } \cs_new_protected:Npn \__file_input_aux:n #1 { \clist_if_exist:NTF \@filelist diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty index 4754b592c0c..ec67d73f5d5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty @@ -286,8 +286,8 @@ \__fp_tmp:w {xv} {\use_none:n #2#3+#4#5} { 000{0000}0000{0000}#2 #3 #4 #5 } \__fp_tmp:w {xvi} { #2#3+#4#5} {{0000}0000{0000}0000 #2 #3 #4 #5 } \cs_new:Npn \__fp_decimate_pack:nnnnnnnnnnw #1#2#3#4#5 - { \__fp_decimate_pack_ii:nnnnnnw { #1#2#3#4#5 } } -\cs_new:Npn \__fp_decimate_pack_ii:nnnnnnw #1 #2#3#4#5#6 + { \__fp_decimate_pack:nnnnnnw { #1#2#3#4#5 } } +\cs_new:Npn \__fp_decimate_pack:nnnnnnw #1 #2#3#4#5#6 { {#1} {#2#3#4#5#6} } \cs_new:Npn \__fp_case_use:nw #1#2 \fi: #3 \s__fp { \fi: #1 \s__fp } \cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 ; { \fi: #1 } @@ -715,11 +715,11 @@ \cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5; { \__fp_decimate:nNnnnn { \c_sixteen - #4 - #2 } - \__fp_round_normal_ii:NnnwNNnn #5 #1 #3 {#4} {#2} + \__fp_round_normal:NnnwNNnn #5 #1 #3 {#4} {#2} } -\cs_new:Npn \__fp_round_normal_ii:NnnwNNnn #1#2#3#4; #5#6 +\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6 { - \exp_after:wN \__fp_round_normal_iii:NNwNnn + \exp_after:wN \__fp_round_normal:NNwNnn \int_use:N \__int_eval:w \if_int_compare:w #2 > \c_zero 1 \__int_value:w #2 @@ -739,7 +739,7 @@ } \cs_new:Npn \__fp_round_pack:Nw #1 { \if_meaning:w 2 #1 + \c_one \fi: \__int_eval_end: } -\cs_new:Npn \__fp_round_normal_iii:NNwNnn #1 #2 +\cs_new:Npn \__fp_round_normal:NNwNnn #1 #2 { \if_meaning:w 0 #2 \exp_after:wN \__fp_round_special:NwwNnn @@ -1174,14 +1174,14 @@ \cs_new:Npn \__fp_parse_exponent:N #1 { \if:w e #1 - \exp_after:wN \__fp_parse_exponent_ii:N + \exp_after:wN \__fp_parse_exponent_aux:N \tex_romannumeral:D \else: 0 \__fp_parse_return_semicolon:w #1 \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_exponent_ii:N #1 +\cs_new:Npn \__fp_parse_exponent_aux:N #1 { \if_int_compare:w \if_catcode:w \tex_relax:D #1 \c_zero \else: `#1 \fi: > `9 \exp_stop_f: @@ -1321,7 +1321,7 @@ \cs_new:Npn \__fp_parse_large_round_after:wNN #1 ; #2 #3 { \if:w . #3 - \exp_after:wN \__fp_parse_large_round_after_ii:wN + \exp_after:wN \__fp_parse_large_round_after_aux:wN \int_use:N \__int_eval:w #1 + \c_zero * \__int_eval:w \c_zero \exp_after:wN \__fp_cfs_round_loop:N @@ -1334,7 +1334,7 @@ \exp_after:wN #3 \fi: } -\cs_new:Npn \__fp_parse_large_round_after_ii:wN #1 ; #2 +\cs_new:Npn \__fp_parse_large_round_after_aux:wN #1 ; #2 { + #2 \exp_after:wN ; @@ -1809,7 +1809,7 @@ \__msg_kernel_expandable_error:nnnn { kernel } { fp-missing } { ? } { ~for~?: } \exp_after:wN @ - \exp_after:wN \__fp_ternary_ii:NwwN + \exp_after:wN \__fp_ternary_auxii:NwwN \tex_romannumeral:D \__fp_parse_until:Nw \c_two \exp_after:wN \__fp_parse_expand:w @@ -2079,9 +2079,9 @@ { \if_meaning:w 3 #4 \if_meaning:w 3 #2 - \__fp_minmax_i:ww + \__fp_minmax_auxi:ww \else: - \__fp_minmax_ii:ww + \__fp_minmax_auxii:ww \fi: \else: \if_int_compare:w @@ -2089,18 +2089,18 @@ \s__fp \__fp_chk:w #4#5; \s__fp \__fp_chk:w #2#3; = #1 - \__fp_minmax_ii:ww + \__fp_minmax_auxii:ww \else: - \__fp_minmax_i:ww + \__fp_minmax_auxi:ww \fi: \fi: \__fp_minmax_loop:Nww #1 \s__fp \__fp_chk:w #2#3; \s__fp \__fp_chk:w #4#5; } -\cs_new:Npn \__fp_minmax_i:ww #1 \fi: \fi: #2 \s__fp #3 ; \s__fp #4; +\cs_new:Npn \__fp_minmax_auxi:ww #1 \fi: \fi: #2 \s__fp #3 ; \s__fp #4; { \fi: \fi: #2 \s__fp #3 ; } -\cs_new:Npn \__fp_minmax_ii:ww #1 \fi: \fi: #2 \s__fp #3 ; +\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 ; { \fi: \fi: #2 } \cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3; #4; { \fi: \__fp_exp_after_o:w \s__fp #3; } @@ -2131,7 +2131,7 @@ \__fp_ternary_loop:Nw #2 \s__fp \__fp_chk:w { \__fp_ternary_loop_break:w } ; - \__fp_ternary_break_point:n { \exp_after:wN \__fp_ternary_i:NwwN } + \__fp_ternary_break_point:n { \exp_after:wN \__fp_ternary_auxi:NwwN } \exp_after:wN #1 \tex_romannumeral:D -`0 \__fp_exp_after_array_f:w #3 \s__fp_stop @@ -2153,7 +2153,7 @@ \cs_new:Npn \__fp_ternary_loop_break:w #1 \fi: #2 \__fp_ternary_break_point:n #3 { \c_zero = \c_zero \fi: - \exp_after:wN \__fp_ternary_ii:NwwN + \exp_after:wN \__fp_ternary_auxii:NwwN } \cs_new:Npn \__fp_ternary_loop:Nw \s__fp \__fp_chk:w #1#2; { @@ -2163,7 +2163,7 @@ \__fp_ternary_loop:Nw } \cs_new:Npn \__fp_ternary_map_break: #1 \__fp_ternary_break_point:n #2 {#2} -\cs_new:Npn \__fp_ternary_i:NwwN #1#2@#3@#4 +\cs_new:Npn \__fp_ternary_auxi:NwwN #1#2@#3@#4 { \exp_after:wN \__fp_parse_until_test:NwN \exp_after:wN #1 @@ -2171,7 +2171,7 @@ \__fp_exp_after_array_f:w #2 \s__fp_stop #4 #1 } -\cs_new:Npn \__fp_ternary_ii:NwwN #1#2@#3@#4 +\cs_new:Npn \__fp_ternary_auxii:NwwN #1#2@#3@#4 { \exp_after:wN \__fp_parse_until_test:NwN \exp_after:wN #1 @@ -2850,43 +2850,43 @@ \exp_after:wN \__fp_fixed_div_int_after:Nw \exp_after:wN #8 \int_use:N \__int_eval:w \c_minus_one - \__fp_fixed_div_int_i:wnN - #1; {#7} \__fp_fixed_div_int_ii:wnn - #2; {#7} \__fp_fixed_div_int_ii:wnn - #3; {#7} \__fp_fixed_div_int_ii:wnn - #4; {#7} \__fp_fixed_div_int_ii:wnn - #5; {#7} \__fp_fixed_div_int_ii:wnn - #6; {#7} \__fp_fixed_div_int_iii:wnn ; + \__fp_fixed_div_int:wnN + #1; {#7} \__fp_fixed_div_int_auxi:wnn + #2; {#7} \__fp_fixed_div_int_auxi:wnn + #3; {#7} \__fp_fixed_div_int_auxi:wnn + #4; {#7} \__fp_fixed_div_int_auxi:wnn + #5; {#7} \__fp_fixed_div_int_auxi:wnn + #6; {#7} \__fp_fixed_div_int_auxii:wnn ; } -\cs_new:Npn \__fp_fixed_div_int_i:wnN #1; #2 #3 +\cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3 { \exp_after:wN #3 \int_use:N \__int_eval:w #1 / #2 - \c_one ; {#2} {#1} } -\cs_new:Npn \__fp_fixed_div_int_ii:wnn #1; #2 #3 +\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1; #2 #3 { + #1 \exp_after:wN \__fp_fixed_div_int_pack:Nw \int_use:N \__int_eval:w 9999 - \exp_after:wN \__fp_fixed_div_int_i:wnN + \exp_after:wN \__fp_fixed_div_int:wnN \int_use:N \__int_eval:w #3 - #1*#2 \__int_eval_end: } -\cs_new:Npn \__fp_fixed_div_int_iii:wnn #1; #2 #3 { + #1 + \c_two ; } +\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + \c_two ; } \cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} } \cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2; { #1 {#2} } -\cs_new_nopar:Npn \__fp_fixed_add:wwn { \__fp_fixed_add_i:Nnnnnwnn + } -\cs_new_nopar:Npn \__fp_fixed_sub:wwn { \__fp_fixed_add_i:Nnnnnwnn - } -\cs_new:Npn \__fp_fixed_add_i:Nnnnnwnn #1 #2#3#4#5 #6; #7#8 +\cs_new_nopar:Npn \__fp_fixed_add:wwn { \__fp_fixed_add:Nnnnnwnn + } +\cs_new_nopar:Npn \__fp_fixed_sub:wwn { \__fp_fixed_add:Nnnnnwnn - } +\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8 { \exp_after:wN \__fp_fixed_add_after:NNNNNwn \int_use:N \__int_eval:w 9 9999 9998 + #2#3 #1 #7#8 \exp_after:wN \__fp_fixed_add_pack:NNNNNwn \int_use:N \__int_eval:w 1 9999 9998 + #4#5 - \__fp_fixed_add_ii:nnNnnnwn #6 #1 + \__fp_fixed_add:nnNnnnwn #6 #1 } -\cs_new:Npn \__fp_fixed_add_ii:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8 +\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8 { #3 #4#5 \exp_after:wN \__fp_fixed_add_pack:NNNNNwn @@ -2916,9 +2916,9 @@ \int_use:N \__int_eval:w \c__fp_trailing_shift_int + #2*#9 + #3*#8 + #4*#7 + ( #3*#9 + #4*#8 - + \__fp_fixed_mul_i:nnnnnnnwn #5 {#6}{#7} {#1}{#2} + + \__fp_fixed_mul:nnnnnnnwn #5 {#6}{#7} {#1}{#2} } -\cs_new:Npn \__fp_fixed_mul_i:nnnnnnnwn #1#2 #3#4 #5#6 #7#8 ; #9 +\cs_new:Npn \__fp_fixed_mul:nnnnnnnwn #1#2 #3#4 #5#6 #7#8 ; #9 { #1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c_ten_thousand + #1*#3 + #5*#7 ; @@ -2930,7 +2930,7 @@ \int_use:N \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNwn \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 - \__fp_fixed_mul_add_i:Nwnnnwnnn + + \__fp_fixed_mul_add:Nwnnnwnnn + + #5 #6 ; #2 ; #1 ; #2 ; + + #7 #8 ; {#9} ; } @@ -2940,7 +2940,7 @@ \int_use:N \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNwn \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 - \__fp_fixed_mul_add_i:Nwnnnwnnn - + \__fp_fixed_mul_add:Nwnnnwnnn - + #5 #6 ; #2 ; #1 ; #2 ; - + #7 #8 ; {#9} ; } @@ -2950,11 +2950,11 @@ \int_use:N \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNwn \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + 1 0000 0000 - \__fp_fixed_mul_add_i:Nwnnnwnnn - + \__fp_fixed_mul_add:Nwnnnwnnn - ; #2 ; #1 ; #2 ; - ; {#3} ; } -\cs_new:Npn \__fp_fixed_mul_add_i:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9 +\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9 { #1 #7*#3 \exp_after:wN \__fp_pack_big:NNNNNNwn @@ -2965,20 +2965,20 @@ #1 #7*#5 #1 #8*#4 #1 #9*#3 #2 \exp_after:wN \__fp_pack_big:NNNNNNwn \int_use:N \__int_eval:w \c__fp_big_middle_shift_int - #1 \__fp_fixed_mul_add_ii:nnnnwnnnn {#7}{#8}{#9} + #1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9} } -\cs_new:Npn \__fp_fixed_mul_add_ii:nnnnwnnnn #1#2#3#4#5; #6#7#8#9 +\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9 { ( #1*#9 + #2*#8 + #3*#7 + #4*#6 ) \exp_after:wN \__fp_pack_big:NNNNNNwn \int_use:N \__int_eval:w \c__fp_big_trailing_shift_int - \__fp_fixed_mul_add_iii:nnnnwnnwN + \__fp_fixed_mul_add:nnnnwnnwN { #6 + #4*#7 + #3*#8 + #2*#9 + #1 } { #7 + #4*#8 + #3*#9 + #2 } {#1} #5; {#6} } -\cs_new:Npn \__fp_fixed_mul_add_iii:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9 +\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9 { #9 (#4* #1 *#7) #9 (#5*#6+#4* #2 *#7+#3*#8) / \c_ten_thousand @@ -3092,32 +3092,32 @@ #2 \c_two * \c__fp_max_exponent_int \use_i_ii:nnn \fi: - \__fp_fixed_dtf_zeros_ii:ww + \__fp_fixed_dtf_zeros_auxi:ww #1#3 0000 0000 0000 0000 0000 0000 ; } -\cs_new:Npn \__fp_fixed_dtf_zeros_ii:ww +\cs_new:Npn \__fp_fixed_dtf_zeros_auxi:ww { \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN - \__fp_fixed_dtf_zeros_iii:ww + \__fp_fixed_dtf_zeros_auxii:ww ; } -\cs_new:Npn \__fp_fixed_dtf_zeros_iii:ww #1; #2; #3 { #3 #1; } +\cs_new:Npn \__fp_fixed_dtf_zeros_auxii:ww #1; #2; #3 { #3 #1; } \cs_new:Npn \__fp_fixed_dtf_approx:n #1 { - \exp_after:wN \__fp_fixed_dtf_approx_ii:wnn + \exp_after:wN \__fp_fixed_dtf_approx:wnn \int_use:N \__int_eval:w 10 0000 0000 / ( #1 + \c_one ) ; {#1} } -\cs_new:Npn \__fp_fixed_dtf_approx_ii:wnn #1; #2#3 +\cs_new:Npn \__fp_fixed_dtf_approx:wnn #1; #2#3 { - \exp_after:wN \__fp_fixed_dtf_approx_iii:NNNNNw + \exp_after:wN \__fp_fixed_dtf_approx:NNNNNw \int_use:N \__int_eval:w 10 0000 0000 - 1750 + #1000 + (10 0000 0000/#2-#1) * (1000-#3/10) ; {#2}{#3} } -\cs_new:Npn \__fp_fixed_dtf_approx_iii:NNNNNw 1#1#2#3#4#5#6; #7; #8; +\cs_new:Npn \__fp_fixed_dtf_approx:NNNNNw 1#1#2#3#4#5#6; #7; #8; { + \c_four % because of the line below "dtf_epsilon" here. \__fp_fixed_mul:wwn {000#1}{#2#3#4#5}{#6}{0000}{0000}{0000} ; #7; @@ -3128,14 +3128,14 @@ } \cs_new:Npn \__fp_fixed_dtf_epsilon:wN #1#2#3#4#5#6; { - \exp_after:wN \__fp_fixed_dtf_epsilon_ii:NNNNNww + \exp_after:wN \__fp_fixed_dtf_epsilon:NNNNNww \int_use:N \__int_eval:w 1 9999 9998 - #3#4 + \exp_after:wN \__fp_fixed_dtf_epsilon_pack:NNNNNw \int_use:N \__int_eval:w 2 0000 0000 - #5#6 ; {0000} ; } \cs_new:Npn \__fp_fixed_dtf_epsilon_pack:NNNNNw #1#2#3#4#5#6; { #1 ; {#2#3#4#5} {#6} } -\cs_new:Npn \__fp_fixed_dtf_epsilon_ii:NNNNNww #1#2#3#4#5#6; #7; +\cs_new:Npn \__fp_fixed_dtf_epsilon:NNNNNww #1#2#3#4#5#6; #7; { \__fp_fixed_mul:wwn %^^A todo: optimize to use \__fp_mul_significand. {0000} {#2#3#4#5} {#6} #7 ; @@ -4020,19 +4020,19 @@ \prg_replicate:nn { - #1 } { 0 } #2#3#4#5 0000 0000 ; } \cs_new:Npn \__fp_trig_large:ww #1; #2#3; - { \__fp_trig_large_i:www #2; #3 ; #1; } -\cs_new:Npn \__fp_trig_large_i:www #1; #2; #3; + { \__fp_trig_large:www #2; #3 ; #1; } +\cs_new:Npn \__fp_trig_large:www #1; #2; #3; { \if_meaning:w 0 #3 \__fp_trig_large_break:w \fi: - \exp_after:wN \__fp_trig_large_ii_o:wnnnn + \exp_after:wN \__fp_trig_large_o:wnnnn \int_use:N \__int_eval:w ( #1 - 3141 ) / 6283 ; {#1} #2 \exp_after:wN ; \int_use:N \__int_eval:w \c_minus_one + #3; } -\cs_new:Npn \__fp_trig_large_ii_o:wnnnn #1; #2#3#4#5 +\cs_new:Npn \__fp_trig_large_o:wnnnn #1; #2#3#4#5 { - \exp_after:wN \__fp_trig_large_i:www + \exp_after:wN \__fp_trig_large:www \int_use:N \__int_eval:w \c__fp_leading_shift_int + #20 - #1*62831 \exp_after:wN \__fp_pack:NNNNNw \int_use:N \__int_eval:w \c__fp_middle_shift_int + #30 - #1*8530 @@ -4403,12 +4403,12 @@ } \cs_new:Npn \__fp_from_dim:Nw #1 #2; { - \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim_ii:wNNnnnnnn ; + \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn ; #2 000 0000 00 {10}987654321; #1 } -\cs_new:Npn \__fp_from_dim_ii:wNNnnnnnn #1; #2#3#4#5#6#7#8#9 - { \__fp_from_dim_iii:wnnnnwN #1 {#2#300} {0000} ; } -\cs_new:Npn \__fp_from_dim_iii:wnnnnwN #1; #2#3#4#5#6; #7 +\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1; #2#3#4#5#6#7#8#9 + { \__fp_from_dim:wnnnnwN #1 {#2#300} {0000} ; } +\cs_new:Npn \__fp_from_dim:wnnnnwN #1; #2#3#4#5#6; #7 { \__fp_mul_npos_o:Nww #7 \s__fp \__fp_chk:w 1 #7 {#5} #1 ; diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty index 7c12c601af2..a1cc3246ef6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap}[2012/07/15] -\GetIdInfo$Id: l3names.dtx 4230 2012-09-24 21:44:28Z joseph $ +\GetIdInfo$Id: l3names.dtx 4346 2012-12-07 13:46:13Z joseph $ {L3 Namespace for primitives} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -475,6 +475,11 @@ \__expl_primitive:NN \latelua \luatex_latelua:D \__expl_primitive:NN \luatexversion \luatex_luatexversion:D \__expl_primitive:NN \savecatcodetable \luatex_savecatcodetable:D + \__expl_primitive:NN \bodydir \luatex_bodydir:D + \__expl_primitive:NN \mathdir \luatex_mathdir:D + \__expl_primitive:NN \pagedir \luatex_pagedir:D + \__expl_primitive:NN \pardir \luatex_pardir:D + \__expl_primitive:NN \textdir \luatex_textdir:D \tex_endgroup:D \tex_let:D \tex_end:D \@@end \tex_let:D \tex_everydisplay:D \frozen@everydisplay @@ -487,6 +492,11 @@ \tex_let:D \luatex_initcatcodetable:D \luatexinitcatcodetable \tex_let:D \luatex_latelua:D \luatexlatelua \tex_let:D \luatex_savecatcodetable:D \luatexsavecatcodetable +\tex_let:D \luatex_bodydir:D \luatexbodydir +\tex_let:D \luatex_mathdir:D \luatexmathdir +\tex_let:D \luatex_pagedir:D \luatexpagedir +\tex_let:D \luatex_pardir:D \luatexpardir +\tex_let:D \luatex_textdir:D \luatextextdir %% %% %% End of file `l3names.sty'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty index 0b719688663..4a544ab6720 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3prg.dtx 4212 2012-09-09 12:24:04Z bruno $ +\GetIdInfo$Id: l3prg.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Control structures} %% \ProvidesExplPackage @@ -184,24 +184,24 @@ \cs_new_nopar:cpn { __bool_S_1:w } { \group_align_safe_end: \c_true_bool } \cs_new_nopar:cpn { __bool_&_1:w } & { \__bool_get_next:NN \use_i:nn } \cs_new_nopar:cpn { __bool_|_0:w } | { \__bool_get_next:NN \use_i:nn } -\cs_new_nopar:cpn { __bool_&_0:w } & { \__bool_eval_skip_to_end:Nw \c_false_bool } -\cs_new_nopar:cpn { __bool_|_1:w } | { \__bool_eval_skip_to_end:Nw \c_true_bool } +\cs_new_nopar:cpn { __bool_&_0:w } & { \__bool_eval_skip_to_end_auxi:Nw \c_false_bool } +\cs_new_nopar:cpn { __bool_|_1:w } | { \__bool_eval_skip_to_end_auxi:Nw \c_true_bool } %% ( -\cs_new:Npn \__bool_eval_skip_to_end:Nw #1#2 ) +\cs_new:Npn \__bool_eval_skip_to_end_auxi:Nw #1#2 ) { - \__bool_eval_skip_to_end_ii:Nw #1#2 ( % ) + \__bool_eval_skip_to_end_auxii:Nw #1#2 ( % ) \q_no_value \q_stop {#2} } -\cs_new:Npn \__bool_eval_skip_to_end_ii:Nw #1#2 ( #3#4 \q_stop #5 % ) +\cs_new:Npn \__bool_eval_skip_to_end_auxii:Nw #1#2 ( #3#4 \q_stop #5 % ) { \quark_if_no_value:NTF #3 {#1} - { \__bool_eval_skip_to_end_iii:Nw #1 #5 } + { \__bool_eval_skip_to_end_auxiii:Nw #1 #5 } } -\cs_new:Npn \__bool_eval_skip_to_end_iii:Nw #1#2 ( #3 ) +\cs_new:Npn \__bool_eval_skip_to_end_auxiii:Nw #1#2 ( #3 ) { % ( - \__bool_eval_skip_to_end:Nw #1#3 ) + \__bool_eval_skip_to_end_auxi:Nw #1#3 ) } \cs_new:Npn \bool_not_p:n #1 { \bool_if_p:n { ! ( #1 ) } } \cs_new:Npn \bool_xor_p:nn #1#2 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty index 1a59d7c4911..55cb5f18fb0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3seq.dtx 4212 2012-09-09 12:24:04Z bruno $ +\GetIdInfo$Id: l3seq.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Sequences and stacks} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -88,26 +88,26 @@ { \tl_set:Nn \l__seq_internal_a_tl { - \__seq_set_split_i:w \prg_do_nothing: + \__seq_set_split_auxi:w \prg_do_nothing: #4 \__seq_set_split_end: } \tl_replace_all:Nnn \l__seq_internal_a_tl { #3 } { \__seq_set_split_end: - \__seq_set_split_i:w \prg_do_nothing: + \__seq_set_split_auxi:w \prg_do_nothing: } \tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl } #1 #2 { \l__seq_internal_a_tl } } } -\cs_new:Npn \__seq_set_split_i:w #1 \__seq_set_split_end: +\cs_new:Npn \__seq_set_split_auxi:w #1 \__seq_set_split_end: { - \exp_not:N \__seq_set_split_ii:w + \exp_not:N \__seq_set_split_auxii:w \exp_args:No \tl_trim_spaces:n {#1} \exp_not:N \__seq_set_split_end: } -\cs_new:Npn \__seq_set_split_ii:w #1 \__seq_set_split_end: +\cs_new:Npn \__seq_set_split_auxii:w #1 \__seq_set_split_end: { \__seq_wrap_item:n {#1} } \cs_generate_variant:Nn \seq_set_split:Nnn { NnV } \cs_generate_variant:Nn \seq_gset_split:Nnn { NnV } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty index ef644d3dfd6..6035dfe2f07 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3tl.dtx 4244 2012-09-28 22:46:36Z bruno $ +\GetIdInfo$Id: l3tl.dtx 4339 2012-11-24 19:16:43Z joseph $ {L3 Token lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -484,37 +484,37 @@ { \cs_new:Npn \__tl_trim_spaces:nn ##1 { - \__tl_trim_spaces_i:w + \__tl_trim_spaces_auxi:w ##1 \q_nil \q_mark #1 { } - \q_mark \__tl_trim_spaces_ii:w - \__tl_trim_spaces_iii:w + \q_mark \__tl_trim_spaces_auxii:w + \__tl_trim_spaces_auxiii:w #1 \q_nil - \__tl_trim_spaces_iv:w + \__tl_trim_spaces_auxiv:w \q_stop } - \cs_new:Npn \__tl_trim_spaces_i:w ##1 \q_mark #1 ##2 \q_mark ##3 + \cs_new:Npn \__tl_trim_spaces_auxi:w ##1 \q_mark #1 ##2 \q_mark ##3 { ##3 - \__tl_trim_spaces_i:w + \__tl_trim_spaces_auxi:w \q_mark ##2 \q_mark #1 {##1} } - \cs_new:Npn \__tl_trim_spaces_ii:w - \__tl_trim_spaces_i:w \q_mark \q_mark ##1 + \cs_new:Npn \__tl_trim_spaces_auxii:w + \__tl_trim_spaces_auxi:w \q_mark \q_mark ##1 { - \__tl_trim_spaces_iii:w + \__tl_trim_spaces_auxiii:w ##1 } - \cs_new:Npn \__tl_trim_spaces_iii:w ##1 #1 \q_nil ##2 + \cs_new:Npn \__tl_trim_spaces_auxiii:w ##1 #1 \q_nil ##2 { ##2 ##1 \q_nil - \__tl_trim_spaces_iii:w + \__tl_trim_spaces_auxiii:w } - \cs_new:Npn \__tl_trim_spaces_iv:w ##1 \q_nil ##2 \q_stop ##3 + \cs_new:Npn \__tl_trim_spaces_auxiv:w ##1 \q_nil ##2 \q_stop ##3 { ##3 { \use_none:n ##1 } } } \__tl_tmp:w { ~ } @@ -593,11 +593,11 @@ \cs_new:Npn \tl_head:n #1 { \etex_unexpanded:D - \if_false: { \fi: \__tl_head_i:nw #1 { } \q_stop } + \if_false: { \fi: \__tl_head_auxi:nw #1 { } \q_stop } } -\cs_new:Npn \__tl_head_i:nw #1#2 \q_stop - { \exp_after:wN \__tl_head_ii:nw \exp_after:wN { \if_false: } \fi: {#1} } -\cs_new:Npn \__tl_head_ii:nw #1 +\cs_new:Npn \__tl_head_auxi:nw #1#2 \q_stop + { \exp_after:wN \__tl_head_auxii:nw \exp_after:wN { \if_false: } \fi: {#1} } +\cs_new:Npn \__tl_head_auxii:nw #1 { \exp_after:wN \if_meaning:w \exp_after:wN \q_nil \tl_to_str:n \exp_after:wN { \use_none:n #1 } \q_nil @@ -606,7 +606,7 @@ \exp_after:wN \use_ii:nn \fi: {#1} - { \if_false: { \fi: \__tl_head_i:nw #1 } } + { \if_false: { \fi: \__tl_head_auxi:nw #1 } } } \cs_generate_variant:Nn \tl_head:n { V , v , f } \cs_new:Npn \tl_head:w #1#2 \q_stop {#1} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty index a95678f3d6c..c4b3a28e6a5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3token.dtx 4251 2012-11-01 16:30:06Z joseph $ +\GetIdInfo$Id: l3token.dtx 4384 2012-12-20 15:47:56Z bruno $ {L3 Experimental token manipulation} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -573,54 +573,56 @@ { \__peek_token_remove_generic:NNTF #1 #2 {#3} { } } \cs_new_protected:Npn \__peek_token_remove_generic:NNF #1#2#3 { \__peek_token_remove_generic:NNTF #1 #2 { } {#3} } -\cs_new_nopar:Npn \__peek_execute_branches_catcode: +\cs_new_nopar:Npn \__peek_execute_branches_meaning: { - \if_catcode:w - \exp_not:N \l_peek_token \exp_not:N \l__peek_search_token + \if_meaning:w \l_peek_token \l__peek_search_token \exp_after:wN \__peek_true:w \else: \exp_after:wN \__peek_false:w \fi: } -\cs_new_nopar:Npn \__peek_execute_branches_meaning: +\cs_new_nopar:Npn \__peek_execute_branches_catcode: + { \if_catcode:w \__peek_execute_branches_catcode_aux: } +\cs_new_nopar:Npn \__peek_execute_branches_charcode: + { \if_charcode:w \__peek_execute_branches_catcode_aux: } +\cs_new_nopar:Npn \__peek_execute_branches_catcode_aux: { - \if_meaning:w \l_peek_token \l__peek_search_token + \if_catcode:w \exp_not:N \l_peek_token \scan_stop: + \exp_after:wN \exp_after:wN + \exp_after:wN \__peek_execute_branches_catcode_auxii:N + \exp_after:wN \exp_not:N + \else: + \exp_after:wN \__peek_execute_branches_catcode_auxiii: + \fi: + } +\cs_new:Npn \__peek_execute_branches_catcode_auxii:N #1 + { + \exp_not:N #1 + \exp_after:wN \exp_not:N \l__peek_search_tl \exp_after:wN \__peek_true:w \else: \exp_after:wN \__peek_false:w \fi: + #1 } -\cs_new_nopar:Npn \__peek_execute_branches_charcode: +\cs_new_nopar:Npn \__peek_execute_branches_catcode_auxiii: { - \bool_if:nTF - { - \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token - || \token_if_eq_catcode_p:NN \l_peek_token \c_group_end_token - || \token_if_eq_meaning_p:NN \l_peek_token \c_space_token - } - { \__peek_false:w } - { - \exp_after:wN \__peek_execute_branches_charcode_aux:NN - \l__peek_search_tl - } - } -\cs_new:Npn \__peek_execute_branches_charcode_aux:NN #1#2 - { - \if:w \exp_not:N #1 \exp_not:N #2 + \exp_not:N \l_peek_token + \exp_after:wN \exp_not:N \l__peek_search_tl \exp_after:wN \__peek_true:w \else: \exp_after:wN \__peek_false:w \fi: - #2 } \cs_new_protected_nopar:Npn \__peek_ignore_spaces_execute_branches: { - \token_if_eq_meaning:NNTF \l_peek_token \c_space_token - { - \tex_afterassignment:D \__peek_ignore_spaces_execute_branches_aux: - \cs_set_eq:NN \__peek_tmp:w - } - { \__peek_execute_branches: } + \if_meaning:w \l_peek_token \c_space_token + \tex_afterassignment:D \__peek_ignore_spaces_execute_branches_aux: + \exp_after:wN \cs_set_eq:NN + \exp_after:wN \__peek_tmp:w + \else: + \exp_after:wN \__peek_execute_branches: + \fi: } \cs_new_protected_nopar:Npn \__peek_ignore_spaces_execute_branches_aux: { \peek_after:Nw \__peek_ignore_spaces_execute_branches: } diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index 365837076f4..7411941082b 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -46,19 +46,20 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2012/11/21] -\@ifpackagelater{expl3}{2012/11/21} +\RequirePackage{expl3}[2012/12/21] +\@ifpackagelater{expl3}{2012/12/21} {} {% - \PackageError{l3keys2e}{Support package l3kernel too old.} + \PackageError{l3keys2e}{Support package l3kernel too old} {% - Please install an up to date version of l3kernel - using your TeX package manager or from CTAN.\\ \\ + Please install an up to date version of l3kernel\MessageBreak + using your TeX package manager or from CTAN.\MessageBreak + \MessageBreak Loading l3keys2e will abort!% }% \endinput } -\GetIdInfo$Id: l3keys2e.dtx 4332 2012-11-21 21:40:31Z joseph $ +\GetIdInfo$Id: l3keys2e.dtx 4390 2012-12-21 06:59:20Z joseph $ {LaTeX2e option processing using LaTeX3 keys} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index f1a144b2e16..16f16a26a13 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -50,19 +50,20 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2012/11/21] -\@ifpackagelater{expl3}{2012/11/21} +\RequirePackage{expl3}[2012/12/21] +\@ifpackagelater{expl3}{2012/12/21} {} {% - \PackageError{xparse}{Support package l3kernel too old.} + \PackageError{xparse}{Support package l3kernel too old} {% - Please install an up to date version of l3kernel - using your TeX package manager or from CTAN.\\ \\ + Please install an up to date version of l3kernel\MessageBreak + using your TeX package manager or from CTAN.\MessageBreak + \MessageBreak Loading xparse will abort!% }% \endinput } -\GetIdInfo$Id: xparse.dtx 4332 2012-11-21 21:40:31Z joseph $ +\GetIdInfo$Id: xparse.dtx 4390 2012-12-21 06:59:20Z joseph $ {L3 Experimental document command parser} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -206,6 +207,7 @@ {#1} { \tl_to_str:n {#2} } } \prop_put:Nnn \l__xparse_environment_arg_specs_prop {#1} {#2} + \bool_set_false:N \l__xparse_expandable_bool \bool_set_true:N \l__xparse_environment_bool \__xparse_declare_env_internal:nnnn {#1} {#2} } @@ -629,8 +631,8 @@ { \__msg_kernel_error:nn { xparse } { inconsistent-long } } } \cs_new_protected:Npn \__xparse_grab_arg:w { } -\cs_new_protected:Npn \__xparse_grab_arg_aux_i:w { } -\cs_new_protected:Npn \__xparse_grab_arg_aux_ii:w { } +\cs_new_protected:Npn \__xparse_grab_arg_auxi:w { } +\cs_new_protected:Npn \__xparse_grab_arg_auxii:w { } \cs_new_protected:Npn \__xparse_grab_D:w #1#2#3#4 \l__xparse_args_tl { \__xparse_grab_D_aux:NNnnNn #1 #2 {#3} {#4} \cs_set_protected_nopar:Npn @@ -972,10 +974,10 @@ \cs_new_protected:Npn \__xparse_grab_v_aux_loop:N #1 { \peek_N_type:TF - { \__xparse_grab_v_aux_loop_ii:NN #1 } + { \__xparse_grab_v_aux_loop:NN #1 } { \__xparse_grab_v_aux_abort: } } -\cs_new_protected:Npn \__xparse_grab_v_aux_loop_ii:NN #1 #2 +\cs_new_protected:Npn \__xparse_grab_v_aux_loop:NN #1 #2 { \__xparse_grab_v_token_if_char:NTF #2 { @@ -1005,10 +1007,10 @@ \cs_new_protected:Npn \__xparse_grab_v_bgroup_loop: { \peek_N_type:TF - { \__xparse_grab_v_bgroup_loop_ii:N } + { \__xparse_grab_v_bgroup_loop:N } { \__xparse_grab_v_aux_abort: } } -\cs_new_protected:Npn \__xparse_grab_v_bgroup_loop_ii:N #1 +\cs_new_protected:Npn \__xparse_grab_v_bgroup_loop:N #1 { \__xparse_grab_v_token_if_char:NTF #1 { @@ -1044,9 +1046,9 @@ { \__xparse_grab_v_group_end: \__xparse_add_arg:o \c__xparse_no_value_tl - \exp_after:wN \__xparse_grab_v_aux_abort_ii:w \l__xparse_args_tl \q_stop + \exp_after:wN \__xparse_grab_v_aux_abort:w \l__xparse_args_tl \q_stop } -\cs_new_protected:Npn \__xparse_grab_v_aux_abort_ii:w #1 #2 \q_stop +\cs_new_protected:Npn \__xparse_grab_v_aux_abort:w #1 #2 \q_stop { \group_begin: \char_set_lccode:nn { `\# } { \tex_endlinechar:D } @@ -1103,28 +1105,28 @@ } \cs_generate_variant:Nn \__xparse_add_arg_aux:n { V } \cs_new:Npn \__xparse_expandable_grab_D:w #1 \q__xparse #2 - { #2 { \__xparse_expandable_grab_D_i:NNNnwNn #1 \q__xparse #2 } } -\cs_new:Npn \__xparse_expandable_grab_D_i:NNNnwNn #1#2#3#4#5 \q__xparse #6#7 + { #2 { \__xparse_expandable_grab_D:NNNnwNn #1 \q__xparse #2 } } +\cs_new:Npn \__xparse_expandable_grab_D:NNNnwNn #1#2#3#4#5 \q__xparse #6#7 { \str_if_eq:onTF { #1 { } { } #7 #2 \q__xparse #3 } { { } { #2 } { } } { #1 - { \__xparse_expandable_grab_D_ii:NNNwNnnn #1#2#3#5 \q__xparse #6 } + { \__xparse_expandable_grab_D:NNNwNnnn #1#2#3#5 \q__xparse #6 } \q_nil { } #2 \ERROR \q__xparse \ERROR } { #5 {#4} \q__xparse #6 {#7} } } -\cs_new:Npn \__xparse_expandable_grab_D_ii:NNNwNnnn #1#2#3#4 \q__xparse #5#6#7#8 +\cs_new:Npn \__xparse_expandable_grab_D:NNNwNnnn #1#2#3#4 \q__xparse #5#6#7#8 { - \exp_args:Nof \__xparse_expandable_grab_D_iv:nnNNNwN + \exp_args:Nof \__xparse_expandable_grab_D:nnNNNwN { \use_ii:nn #6 #2 } - { \__xparse_expandable_grab_D_iii:Nw #3 \exp_stop_f: #7 #8 } + { \__xparse_expandable_grab_D:Nw #3 \exp_stop_f: #7 #8 } #1#2#3 #4 \q__xparse #5 } -\cs_new:Npn \__xparse_expandable_grab_D_iii:Nw #1#2 \ERROR \ERROR { #2 #1 } -\cs_new:Npn \__xparse_expandable_grab_D_iv:nnNNNwN #1#2#3#4#5#6 \q__xparse #7 +\cs_new:Npn \__xparse_expandable_grab_D:Nw #1#2 \ERROR \ERROR { #2 #1 } +\cs_new:Npn \__xparse_expandable_grab_D:nnNNNwN #1#2#3#4#5#6 \q__xparse #7 { \exp_args:No \tl_if_empty:oTF { #3 { \use_none:nnn } #2 \q__xparse #5 #4 \q__xparse #5 } @@ -1134,25 +1136,25 @@ } { #3 - { \__xparse_expandable_grab_D_ii:NNNwNnnn #3#4#5#6 \q__xparse #7 } + { \__xparse_expandable_grab_D:NNNwNnnn #3#4#5#6 \q__xparse #7 } \q_nil {#1} #2 \ERROR \q__xparse \ERROR } } \cs_new:Npn \__xparse_expandable_grab_D_alt:w #1 \q__xparse #2 - { #2 { \__xparse_expandable_grab_D_alt_i:NNnwNn #1 \q__xparse #2 } } -\cs_new:Npn \__xparse_expandable_grab_D_alt_i:NNnwNn #1#2#3#4 \q__xparse #5#6 + { #2 { \__xparse_expandable_grab_D_alt:NNnwNn #1 \q__xparse #2 } } +\cs_new:Npn \__xparse_expandable_grab_D_alt:NNnwNn #1#2#3#4 \q__xparse #5#6 { \str_if_eq:onTF { #1 { } #6 #2 #2 } { { } #2 } { #1 - { \__xparse_expandable_grab_D_alt_ii:Nwn #5 #4 \q__xparse } + { \__xparse_expandable_grab_D_alt:Nwn #5 #4 \q__xparse } #6 \ERROR } { #4 {#3} \q__xparse #5 {#6} } } -\cs_new:Npn \__xparse_expandable_grab_D_alt_ii:Nwn #1#2 \q__xparse #3 +\cs_new:Npn \__xparse_expandable_grab_D_alt:Nwn #1#2 \q__xparse #3 { \__xparse_put_arg_expandable:ow { \use_none:n #3 } #2 \q__xparse #1 } \cs_new:Npn \__xparse_expandable_grab_m:w #1 \q__xparse #2 { #2 { \__xparse_expandable_grab_m_aux:wNn #1 \q__xparse #2 } } @@ -1167,7 +1169,7 @@ { { } { #2 } { } } { #1 - { \__xparse_expandable_grab_D_ii:NNNwNnnn #1#2#3#5 \q__xparse #6 } + { \__xparse_expandable_grab_D:NNNwNnnn #1#2#3#5 \q__xparse #6 } \q_nil { } #2 \ERROR \q__xparse \ERROR } { @@ -1185,7 +1187,7 @@ { { } #2 } { #1 - { \__xparse_expandable_grab_D_alt_ii:Nwn #5 #4 \q__xparse } + { \__xparse_expandable_grab_D_alt:Nwn #5 #4 \q__xparse } #6 \ERROR } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index c2fa5195eba..7c33f8c0803 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -50,19 +50,20 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2012/11/21] -\@ifpackagelater{expl3}{2012/11/21} +\RequirePackage{expl3}[2012/12/21] +\@ifpackagelater{expl3}{2012/12/21} {} {% - \PackageError{xtemplate}{Support package l3kernel too old.} + \PackageError{xtemplate}{Support package l3kernel too old} {% - Please install an up to date version of l3kernel - using your TeX package manager or from CTAN.\\ \\ + Please install an up to date version of l3kernel\MessageBreak + using your TeX package manager or from CTAN.\MessageBreak + \MessageBreak Loading xtemplate will abort!% }% \endinput } -\GetIdInfo$Id: xtemplate.dtx 4332 2012-11-21 21:40:31Z joseph $ +\GetIdInfo$Id: xtemplate.dtx 4390 2012-12-21 06:59:20Z joseph $ {L3 Experimental prototype document functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -843,12 +844,22 @@ } \cs_new_protected_nopar:Npn \__xtemplate_assign_boolean_aux:n #1 { - \__xtemplate_if_key_value:oT \l__xtemplate_value_tl - { \__xtemplate_key_to_value: } - \tl_put_right:Nx \l__xtemplate_assignments_tl + \__xtemplate_if_key_value:oTF \l__xtemplate_value_tl { - \exp_not:c { #1 _ \l__xtemplate_value_tl :N } - \exp_not:o \l__xtemplate_var_tl + \__xtemplate_key_to_value: + \tl_put_right:Nx \l__xtemplate_assignments_tl + { + \exp_not:c { #1 _eq:NN } + \exp_not:o \l__xtemplate_var_tl + \exp_not:o \l__xtemplate_value_tl + } + } + { + \tl_put_right:Nx \l__xtemplate_assignments_tl + { + \exp_not:c { #1 _ \l__xtemplate_value_tl :N } + \exp_not:o \l__xtemplate_var_tl + } } } \cs_new_protected_nopar:Npn \__xtemplate_assign_choice: |