diff options
author | Karl Berry <karl@freefriends.org> | 2010-03-31 00:05:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-03-31 00:05:09 +0000 |
commit | a41411cfff0a41be6e8d9b793009b47e67d6f9b3 (patch) | |
tree | c10afd18e4e8e6bd3f6ea04d6da79bdec787b1e0 /Master/texmf-dist/tex/latex/xpackages | |
parent | 3ab55a61f6f8d2218a8f3175bc7481ce162b60d3 (diff) |
xpackages 1881 (30mar10)
git-svn-id: svn://tug.org/texlive/trunk@17632 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/xpackages')
-rw-r--r-- | Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty | 370 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty | 349 |
2 files changed, 360 insertions, 359 deletions
diff --git a/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty b/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty index 9b542606a88..a5204eeef15 100644 --- a/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty +++ b/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty @@ -57,7 +57,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3names} -\GetIdInfo$Id: xparse.dtx 1727 2009-11-06 22:58:32Z joseph $ +\GetIdInfo$Id: xparse.dtx 1876 2010-03-27 07:20:51Z joseph $ {Generic document command parser} \ProvidesExplPackage {\filename}{\filedate}{\fileversion}{\filedescription} @@ -66,27 +66,25 @@ \prop_put:Nnn \c_xparse_shorthands_prop { o } { d[] } \prop_put:Nnn \c_xparse_shorthands_prop { O } { D[] } \prop_put:Nnn \c_xparse_shorthands_prop { s } { t* } -\toks_new:N \l_xparse_arg_toks -\toks_new:N \l_xparse_args_toks -\toks_new:N \l_xparse_environment_args_toks +\tl_new:N \l_xparse_arg_tl +\tl_new:N \l_xparse_args_tl +\tl_new:N \l_xparse_environment_args_tl \bool_new:N \l_xparse_environment_bool \bool_new:N \l_xparse_error_bool \tl_new:N \l_xparse_function_tl -\toks_new:N \l_xparse_last_arg_tl +\tl_new:N \l_xparse_last_arg_tl \bool_new:N \l_xparse_long_bool \int_new:N \l_xparse_m_args_int \bool_new:N \l_xparse_m_only_bool \int_new:N \l_xparse_mandatory_args_int -\int_new:N \l_xparse_nested_int -\toks_new:N \l_xparse_nested_toks \bool_new:N \l_xparse_processor_bool \int_new:N \l_xparse_processor_int -\toks_new:N \l_xparse_signature_toks +\tl_new:N \l_xparse_signature_tl \tl_new:N \l_xparse_tmp_tl \int_new:N \l_xparse_total_args_int \quark_new:N \q_xparse_stop \cs_new_nopar:Npn \xparse_add_grabber_mandatory:N #1 { - \toks_put_right:Nx \l_xparse_signature_toks { + \tl_put_right:Nx \l_xparse_signature_tl { \exp_not:c { xparse_grab_ #1 \bool_if:NT \l_xparse_long_bool { _long } :w } @@ -95,7 +93,7 @@ \int_decr:N \l_xparse_mandatory_args_int } \cs_new_nopar:Npn \xparse_add_grabber_optional:N #1 { - \toks_put_right:Nx \l_xparse_signature_toks { + \tl_put_right:Nx \l_xparse_signature_tl { \exp_not:c { xparse_grab_ #1 \bool_if:NT \l_xparse_long_bool { _long } @@ -118,7 +116,7 @@ \bool_set_true:N \l_xparse_processor_bool \xparse_flush_m_args: \int_decr:N \l_xparse_total_args_int - \toks_put_right:Nn \l_xparse_signature_toks { + \tl_put_right:Nn \l_xparse_signature_tl { \xparse_process_arg:n {#1} } \xparse_prepare_signature_aux:N @@ -129,7 +127,7 @@ \cs_new:Npn \xparse_add_type_D:w #1#2#3 { \xparse_flush_m_args: \xparse_add_grabber_optional:N D - \toks_put_right:Nn \l_xparse_signature_toks { #1 #2 {#3} } + \tl_put_right:Nn \l_xparse_signature_tl { #1 #2 {#3} } \xparse_prepare_signature:N } \cs_new_nopar:Npn \xparse_add_type_g:w { @@ -138,7 +136,7 @@ \cs_new:Npn \xparse_add_type_G:w #1 { \xparse_flush_m_args: \xparse_add_grabber_optional:N G - \toks_put_right:Nn \l_xparse_signature_toks { {#1} } + \tl_put_right:Nn \l_xparse_signature_tl { {#1} } \xparse_prepare_signature:N } \cs_new_nopar:Npn \xparse_add_type_l:w { @@ -160,13 +158,13 @@ \cs_new:Npn \xparse_add_type_t:w #1 { \xparse_flush_m_args: \xparse_add_grabber_optional:N t - \toks_put_right:Nn \l_xparse_signature_toks { #1 } + \tl_put_right:Nn \l_xparse_signature_tl { #1 } \xparse_prepare_signature:N } \cs_new:Npn \xparse_add_type_u:w #1 { \xparse_flush_m_args: \xparse_add_grabber_mandatory:N u - \toks_put_right:Nn \l_xparse_signature_toks { {#1} } + \tl_put_right:Nn \l_xparse_signature_tl { {#1} } \xparse_prepare_signature:N } \cs_new_nopar:Npn \xparse_check_and_add:N #1 { @@ -235,11 +233,11 @@ \cs_if_exist:NTF #1 { \msg_kernel_warning:nnxx { xparse } { redefine-command } - { \exp_not:N #1 } { \exp_not:n {#2} } + { \token_to_str:N #1 } { \exp_not:n {#2} } } { \msg_kernel_info:nnxx { xparse } { define-command } - { \exp_not:N #1 } { \exp_not:n {#2} } + { \token_to_str:N #1 } { \exp_not:n {#2} } } \xparse_declare_cmd_aux:Nnn #1 {#2} } @@ -261,10 +259,10 @@ \cs_set_protected_nopar:Npx #1 { \exp_not:n { \int_zero:N \l_xparse_processor_int - \toks_set:Nn \l_xparse_args_toks + \tl_set:Nn \l_xparse_args_tl } { \exp_not:c { \token_to_str:N #1 } } - \toks_use:N \l_xparse_signature_toks - \exp_not:n{ \toks_use:N \l_xparse_args_toks } + \exp_not:V \l_xparse_signature_tl + \exp_not:N \l_xparse_args_tl } \cs_generate_from_arg_count:cNnn { \token_to_str:N #1 } \cs_set:Npn \l_xparse_total_args_int {#2} @@ -292,10 +290,10 @@ \cs_set_protected_nopar:Npx #1 { \exp_not:n { \int_zero:N \l_xparse_processor_int - \toks_set:Nn \l_xparse_args_toks + \tl_set:Nn \l_xparse_args_tl } { \exp_not:c { \token_to_str:N #1 } } - \toks_use:N \l_xparse_signature_toks - \exp_not:n{ \toks_use:N \l_xparse_args_toks } + \exp_not:V \l_xparse_signature_tl + \exp_not:N \l_xparse_args_tl } \cs_generate_from_arg_count:cNnn { \token_to_str:N #1 } \cs_set:Npn \l_xparse_total_args_int @@ -314,15 +312,14 @@ } \xparse_declare_cmd_aux:cnn { environment_begin_ #1 :w } {#2} { \group_begin: - \toks_set_eq:NN \l_xparse_environment_args_toks - \l_xparse_args_toks + \tl_set_eq:NN \l_xparse_environment_args_tl \l_xparse_args_tl #3 } \bool_set_false:N \l_xparse_environment_bool \cs_set_nopar:cpx { environment_end_ #1 :w } { \exp_not:N \exp_last_unbraced:NV \exp_not:c { environment_end_ #1 _aux:N } - \exp_not:N \l_xparse_environment_args_toks + \exp_not:N \l_xparse_environment_args_tl \exp_not:N \group_end: } \cs_set_nopar:cpx { environment_end_ #1 _aux:N } ##1 { @@ -338,7 +335,7 @@ \cs_if_exist:cT { xparse_grab_m_ \int_use:N \l_xparse_m_args_int :w } { - \toks_put_right:Nx \l_xparse_signature_toks { + \tl_put_right:Nx \l_xparse_signature_tl { \exp_not:c { xparse_grab_m_ \int_use:N \l_xparse_m_args_int :w } } \int_set:Nn \l_xparse_mandatory_args_int { @@ -364,7 +361,7 @@ \bool_set_true:N \l_xparse_m_only_bool } \bool_set_false:N \l_xparse_processor_bool - \toks_clear:N \l_xparse_signature_toks + \tl_clear:N \l_xparse_signature_tl \int_zero:N \l_xparse_total_args_int \xparse_prepare_signature:N #1 \q_nil } @@ -396,11 +393,11 @@ } \cs_new:Npn \xparse_add_arg:n #1 { \intexpr_compare:nTF { \l_xparse_processor_int = \c_zero } { - \toks_put_right:Nn \l_xparse_args_toks { {#1} } + \tl_put_right:Nn \l_xparse_args_tl { {#1} } }{ \xparse_if_no_value:nTF {#1} { \int_zero:N \l_xparse_processor_int - \toks_put_right:Nn \l_xparse_args_toks { {#1} } + \tl_put_right:Nn \l_xparse_args_tl { {#1} } }{ \xparse_add_arg_aux:n {#1} } @@ -408,12 +405,12 @@ } \cs_generate_variant:Nn \xparse_add_arg:n { V } \cs_new:Npn \xparse_add_arg_aux:n #1 { - \cs_set_eq:NN \ProcessedArgument \l_xparse_arg_toks + \tl_set_eq:NN \ProcessedArgument \l_xparse_arg_tl \use:c { xparse_processor_ \int_use:N \l_xparse_processor_int :n } {#1} \int_decr:N \l_xparse_processor_int \intexpr_compare:nTF { \l_xparse_processor_int = \c_zero } { - \toks_put_right:Nx \l_xparse_args_toks { + \tl_put_right:Nx \l_xparse_args_tl { { \exp_not:V \ProcessedArgument } } }{ @@ -424,19 +421,19 @@ \cs_new:Npn \xparse_grab_arg:w { } \cs_new:Npn \xparse_grab_arg_aux_i:w { } \cs_new:Npn \xparse_grab_arg_aux_ii:w { } -\cs_new:Npn \xparse_grab_D:w #1#2#3#4 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_D:w #1#2#3#4 \l_xparse_args_tl { \xparse_grab_D_aux:NNnnNn #1 #2 {#3} {#4} \cs_set_nopar:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_D_long:w #1#2#3#4 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_D_long:w #1#2#3#4 \l_xparse_args_tl { \xparse_grab_D_aux:NNnnNn #1 #2 {#3} {#4} \cs_set:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_D_trailing:w #1#2#3#4 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_D_trailing:w #1#2#3#4 \l_xparse_args_tl { \xparse_grab_D_aux:NNnnNn #1 #2 {#3} {#4} \cs_set_nopar:Npn { } } \cs_new:Npn \xparse_grab_D_long_trailing:w #1#2#3#4 - \l_xparse_args_toks { + \l_xparse_args_tl { \xparse_grab_D_aux:NNnnNn #1 #2 {#3} {#4} \cs_set:Npn { } } \cs_new:Npn \xparse_grab_D_aux:NNnnNn #1#2#3#4#5#6 { @@ -456,197 +453,204 @@ } #5 \xparse_grab_arg_aux_ii:w ##1 #2 { \tl_if_in:nnTF {##1} {#1} { - \xparse_grab_D_nested:NNnNn #1 #2 {#4} #5 {##1} + \xparse_grab_D_nested:NNNnn #1 #2 {##1} {#4} #5 }{ \xparse_add_arg:n {##1} - #4 \l_xparse_args_toks + #4 \l_xparse_args_tl } } \use:c { peek_charcode #6 :NTF } #1 { \xparse_grab_arg:w }{ \xparse_add_arg:n {#3} - #4 \l_xparse_args_toks + #4 \l_xparse_args_tl } } -\cs_new:Npn \xparse_grab_D_nested:NNnNn #1#2#3#4#5 { - \int_zero:N \l_xparse_nested_int - \toks_set:Nn \l_xparse_nested_toks { #5 #2 } - \cs_set:Npn \xparse_grab_D_nested_aux:n ##1 { - \tl_if_eq:nnT {#1} {##1} { - \int_incr:N \l_xparse_nested_int - } - } - \tl_map_function:nN {#5} \xparse_grab_D_nested_aux:n - #4 \xparse_grab_arg:w ##1 #2 { - \int_decr:N \l_xparse_nested_int - \tl_map_function:nN {##1} \xparse_grab_D_nested_aux:n - \intexpr_compare:nTF { \l_xparse_nested_int = \c_zero } { - \toks_put_right:Nn \l_xparse_nested_toks {##1} - \xparse_add_arg:V \l_xparse_nested_toks - #3 \l_xparse_args_toks - }{ - \toks_put_right:Nn \l_xparse_nested_toks { ##1 #2 } - \xparse_grab_arg:w +\tl_new:N \_l_xparse_nesting_a_tl +\tl_new:N \_l_xparse_nesting_b_tl +\quark_new:N \_q_xparse +\cs_new_protected:Npn \xparse_grab_D_nested:NNNnn #1#2#3#4#5 { + \tl_clear:N \_l_xparse_nesting_a_tl + \tl_clear:N \_l_xparse_nesting_b_tl + #5 \xparse_grab_arg:w ##1 #1 ##2 \_q_xparse ##3 #2 + { + \tl_put_right:Nn \_l_xparse_nesting_a_tl { ##1 #1 } + \tl_put_right:Nn \_l_xparse_nesting_b_tl { #2 ##3 } + \tl_if_in:nnTF {##2} {#1} + { \xparse_grab_arg:w ##2 \_q_xparse } + { + \tl_if_in:NnTF \_l_xparse_nesting_b_tl {#1} + { + \tl_set_eq:NN \l_xparse_tmp_tl \_l_xparse_nesting_b_tl + \tl_clear:N \_l_xparse_nesting_b_tl + \exp_last_unbraced:NV \xparse_grab_arg:w + \l_xparse_tmp_tl \_q_xparse + } + { + \tl_put_right:Nn \_l_xparse_nesting_a_tl {##2} + \tl_put_right:NV \_l_xparse_nesting_a_tl + \_l_xparse_nesting_b_tl + \xparse_add_arg:V \_l_xparse_nesting_a_tl + #4 \l_xparse_args_tl + } + } } - } - \xparse_grab_arg:w + \xparse_grab_arg:w #3 \_q_xparse } -\cs_new:Npn \xparse_grab_D_nested_aux:n #1 { } -\cs_new:Npn \xparse_grab_G:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_G:w #1#2 \l_xparse_args_tl { \xparse_grab_G_aux:nnNn {#1} {#2} \cs_set_nopar:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_G_long:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_G_long:w #1#2 \l_xparse_args_tl { \xparse_grab_G_aux:nnNn {#1} {#2} \cs_set:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_G_trailing:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_G_trailing:w #1#2 \l_xparse_args_tl { \xparse_grab_G_aux:nnNn {#1} {#2} \cs_set_nopar:Npn { } } -\cs_new:Npn \xparse_grab_G_long_trailing:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_G_long_trailing:w #1#2 \l_xparse_args_tl { \xparse_grab_G_aux:nnNn {#1} {#2} \cs_set:Npn { } } \cs_set:Npn \xparse_grab_G_aux:nnNn #1#2#3#4 { #3 \xparse_grab_arg:w ##1 { \xparse_add_arg:n {##1} - #2 \l_xparse_args_toks + #2 \l_xparse_args_tl } \use:c { peek_meaning #4 :NTF } \c_group_begin_token { \xparse_grab_arg:w }{ \xparse_add_arg:n {#1} - #2 \l_xparse_args_toks + #2 \l_xparse_args_tl } } -\cs_new:Npn \xparse_grab_l:w #1 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_l:w #1 \l_xparse_args_tl { \xparse_grab_l_aux:nN {#1} \cs_set_nopar:Npn } -\cs_new:Npn \xparse_grab_l_long:w #1 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_l_long:w #1 \l_xparse_args_tl { \xparse_grab_l_aux:nN {#1} \cs_set:Npn } \cs_new:Npn \xparse_grab_l_aux:nN #1#2 { #2 \xparse_grab_arg:w ##1## { \xparse_add_arg:n {##1} - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:Npn \xparse_grab_m:w #1 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_m:w #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1 { \xparse_add_arg:n {##1} - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:Npn \xparse_grab_m_long:w #1 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_m_long:w #1 \l_xparse_args_tl { \cs_set:Npn \xparse_grab_arg:w ##1 { \xparse_add_arg:n {##1} - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_1:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_1:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1 { - \toks_put_right:Nn \l_xparse_args_toks { {##1} } - #1 \l_xparse_args_toks + \tl_put_right:Nn \l_xparse_args_tl { {##1} } + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_2:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_2:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2 { - \toks_put_right:Nn \l_xparse_args_toks { {##1} {##2} } - #1 \l_xparse_args_toks + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} } + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_3:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_3:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3 { - \toks_put_right:Nn \l_xparse_args_toks { {##1} {##2} {##3} } - #1 \l_xparse_args_toks + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} } + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_4:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_4:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3##4 { - \toks_put_right:Nn \l_xparse_args_toks { {##1} {##2} {##3} {##4} } - #1 \l_xparse_args_toks + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} {##4} } + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_5:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_5:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3##4##5 { - \toks_put_right:Nn \l_xparse_args_toks { + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} {##4} {##5} } - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_6:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_6:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3##4##5##6 { - \toks_put_right:Nn \l_xparse_args_toks { + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} {##4} {##5} {##6} } - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_7:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_7:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3##4##5##6##7 { - \toks_put_right:Nn \l_xparse_args_toks { + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} {##4} {##5} {##6} {##7} } - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:cpn { xparse_grab_m_8:w } #1 \l_xparse_args_toks { +\cs_new:cpn { xparse_grab_m_8:w } #1 \l_xparse_args_tl { \cs_set_nopar:Npn \xparse_grab_arg:w ##1##2##3##4##5##6##7##8 { - \toks_put_right:Nn \l_xparse_args_toks { + \tl_put_right:Nn \l_xparse_args_tl { {##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8} } - #1 \l_xparse_args_toks + #1 \l_xparse_args_tl } \xparse_grab_arg:w } -\cs_new:Npn \xparse_grab_t:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_t:w #1#2 \l_xparse_args_tl { \xparse_grab_t_aux:NnNn #1 {#2} \cs_set_nopar:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_t_long:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_t_long:w #1#2 \l_xparse_args_tl { \xparse_grab_t_aux:NnNn #1 {#2} \cs_set:Npn { _ignore_spaces } } -\cs_new:Npn \xparse_grab_t_trailing:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_t_trailing:w #1#2 \l_xparse_args_tl { \xparse_grab_t_aux:NnNn #1 {#2} \cs_set_nopar:Npn { } } -\cs_new:Npn \xparse_grab_t_long_trailing:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_t_long_trailing:w #1#2 \l_xparse_args_tl { \xparse_grab_t_aux:NnNn #1 {#2} \cs_set:Npn { } } \cs_new:Npn \xparse_grab_t_aux:NnNn #1#2#3#4 { #3 \xparse_grab_arg:w { \use:c { peek_charcode_remove #4 :NTF } #1 { \xparse_add_arg:n { \BooleanTrue } - #2 \l_xparse_args_toks + #2 \l_xparse_args_tl }{ \xparse_add_arg:n { \BooleanFalse } - #2 \l_xparse_args_toks + #2 \l_xparse_args_tl } } \xparse_grab_arg:w } -\cs_new:Npn \xparse_grab_u:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_u:w #1#2 \l_xparse_args_tl { \xparse_grab_u_aux:NnN {#1} {#2} \cs_set_nopar:Npn } -\cs_new:Npn \xparse_grab_u_long:w #1#2 \l_xparse_args_toks { +\cs_new:Npn \xparse_grab_u_long:w #1#2 \l_xparse_args_tl { \xparse_grab_u_aux:NnN {#1} {#2} \cs_set:Npn } \cs_new:Npn \xparse_grab_u_aux:NnN #1#2#3 { #3 \xparse_grab_arg:w ##1 #1 { \xparse_add_arg:n {##1} - #2 \l_xparse_args_toks + #2 \l_xparse_args_tl } \xparse_grab_arg:w } \cs_new:Npn \xparse_process_to_str:n #1 { - \toks_set:Nx \ProcessedArgument { + \tl_set:Nx \ProcessedArgument { \tl_to_str:n {#1} } } @@ -654,30 +658,30 @@ \tl_if_in:nnTF {#1} { , } { \xparse_process_comma_split_aux:w #1 \q_stop }{ - \toks_set:Nn \ProcessedArgument { {#1} { \NoValue } } + \tl_set:Nn \ProcessedArgument { {#1} { \NoValue } } } } \cs_new:Npn \xparse_process_comma_split_aux:w #1 , #2 \q_stop { - \toks_set:Nn \ProcessedArgument { {#1} {#2} } + \tl_set:Nn \ProcessedArgument { {#1} {#2} } } \cs_new:Npn \xparse_exp_add_type_d:w #1#2 { \xparse_exp_add_type_D:w #1 #2 { \NoValue } } \cs_new:Npn \xparse_exp_add_type_D:w #1#2#3 { - \tl_set:Nx \l_xparse_tmpa_tl { + \tl_set:Nx \l_xparse_tmp_tl { \exp_after:wN \token_to_str:N \l_xparse_function_tl \int_use:N \l_xparse_total_args_int } - \xparse_exp_set:cpx { \l_xparse_tmpa_tl } ##1 \q_xparse_stop ##2 { + \xparse_exp_set:cpx { \l_xparse_tmp_tl } ##1 \q_xparse_stop ##2 { \exp_not:N \tl_if_head_eq_charcode:nNTF {##2} #1 { - \exp_not:c { \l_xparse_tmpa_tl aux } + \exp_not:c { \l_xparse_tmp_tl aux } ##1 \exp_not:N \q_xparse_stop }{ - \exp_not:c { \l_xparse_tmpa_tl aux } + \exp_not:c { \l_xparse_tmp_tl aux } ##1 \exp_not:N \q_xparse_stop #3 #2 {##2} } } - \xparse_exp_set:cpx { \l_xparse_tmpa_tl aux} + \xparse_exp_set:cpx { \l_xparse_tmp_tl aux} ##1 \q_xparse_stop ##2 #2 { \exp_not:c { \exp_after:wN \token_to_str:N \l_xparse_function_tl @@ -714,7 +718,7 @@ \xparse_exp_prepare_function:N } \cs_new:Npn \xparse_exp_add_type_t:w #1 { - \tl_set:Nx \l_xparse_tmpa_tl { + \tl_set:Nx \l_xparse_tmp_tl { \exp_after:wN \token_to_str:N \l_xparse_function_tl \intexpr_eval:n { \l_xparse_total_args_int + 1 } } @@ -723,10 +727,10 @@ \int_use:N \l_xparse_total_args_int } ##1 \q_xparse_stop ##2 { \exp_not:N \tl_if_head_eq_charcode:nNTF {##2} #1 { - \exp_not:c { \l_xparse_tmpa_tl } + \exp_not:c { \l_xparse_tmp_tl } ##1 \exp_not:n { { \BooleanTrue } \q_xparse_stop } }{ - \exp_not:c { \l_xparse_tmpa_tl } + \exp_not:c { \l_xparse_tmp_tl } ##1 \exp_not:n { { \BooleanFalse } \q_xparse_stop {##2} } } } @@ -759,11 +763,11 @@ \cs_if_exist:NTF #1 { \msg_kernel_warning:nnxx { xparse } { redefine-command } - { \exp_not:N #1 } { \exp_not:n {#2} } + { \token_to_str:N #1 } { \exp_not:n {#2} } } { \msg_kernel_info:nnxx { xparse } { define-command } - { \exp_not:N #1 } { \exp_not:n {#2} } + { \token_to_str:N #1 } { \exp_not:n {#2} } } \tl_set:Nn \l_xparse_function_tl {#1} \xparse_exp_prepare_function:n {#2} @@ -869,96 +873,96 @@ } \cs_new_eq:NN \xparse_exp_set:cpx \cs_set_nopar:cpx \msg_kernel_new:nnnn { xparse } { command-already-defined } - {Command `#1' already defined!} - {% - You have used \token_to_str:N \NewDocumentCommand\\% - with a command that already has a definition.\\% - Perhaps you meant \token_to_str:N \RenewDocumentCommand.% + { Command~'#1'~already~defined! } + { + You~have~used~\token_to_str:N \NewDocumentCommand \\ + with~a~command~that~already~has~a~definition.\\ + Perhaps~you~meant~\token_to_str:N \RenewDocumentCommand. } \msg_kernel_new:nnnn { xparse } { command-not-yet-defined } - {Command `#1' not yet defined!} - {% - You have used \token_to_str:N \RenewDocumentCommand\\% - with a command that was never defined.\\% - Perhaps you meant \token_to_str:N \NewDocumentCommand.% + { Command ~'#1'~not~yet~defined! } + { + You~have~used~\token_to_str:N \RenewDocumentCommand \\ + with~a~command~that~was~never~defined.\\ + Perhaps~you~meant~\token_to_str:N \NewDocumentCommand. } \msg_kernel_new:nnnn { xparse } { environment-already-defined } - {Environment `#1' already defined!} - {% - You have used \token_to_str:N \NewDocumentEnvironment\\% - with a command that already has a definition.\\% - Perhaps you meant \token_to_str:N \RenewDocumentEnvironment.% + { Environment~'#1'~already~defined! } + { + You~have~used~\token_to_str:N \NewDocumentEnvironment \\ + with~a~command~that~already~has~a~definition.\\ + Perhaps~you~meant~\token_to_str:N \RenewDocumentEnvironment. } \msg_kernel_new:nnnn { xparse } { environment-not-yet-defined } - {Environment `#1' not yet defined!} - {% - You have used \token_to_str:N \RenewDocumentEnvironment\\% - with a command that was never defined.\\% - Perhaps you meant \token_to_str:N \NewDocumentEnvironment.% + {Environment~'#1'~not~yet~defined! } + { + You~have~used~\token_to_str:N \RenewDocumentEnvironment \\ + with~a command~that~was~never~defined.\\ + Perhaps~you~meant~\token_to_str:N \NewDocumentEnvironment. } \msg_kernel_new:nnnn { xparse } { expandable-ending-optional } - {% - Signature for expandable command ends with \\% - optional argument \msg_line_context:.% + { + Signature~for~expandable~command~ends~with \\ + optional~argument~\msg_line_context:. } - {% - Expandable commands must have a final mandatory argument\\% - (or no arguments at all). You cannot have a terminal optional\\% - argument with expandable commands.% + { + Expandable~commands~must~have~a~final~mandatory~argument \\ + (or~no arguments~at all).~You~cannot~have~a~terminal~optional \\ + argument~with~expandable~commands. } \msg_kernel_new:nnnn { xparse } { expandable-inconsistent-long } - {% - Inconsistent handling of long arguments for\\% - expandable command \msg_line_context:.% + { + Inconsistent~handling~of~long~arguments~for \\ + expandable~command~\msg_line_context:. } - {% - The arguments for an expandable command must either all be\\% - short or all be long. You have tried to mix the two types.% + { + The~arguments~for~an~expandable~command~must~either~all~be \\ + short~or~all~be~long.~You~have~tried~to mix~the~two~types. } \msg_kernel_new:nnnn { xparse } { grouped-in-expandable } {% - Argument specifier `#1' forbidden in expandable commands - \msg_line_context:.% + Argument~specifier~'#1'~forbidden~in~expandable~commands~ + \msg_line_context:. } - {% - Argument specification `#2' contains the optional grouped - argument `#1':\\% - this is only supported for standard robust functions.% + { + Argument~specification~'#2'~contains~the~optional~grouped~ + argument~#1':\\ + this~is only~supported~for~standard~robust~functions. } \msg_kernel_new:nnnn { xparse } { processor-in-expandable } - {% - Argument processors cannot be used\\% - with expandable functions \msg_line_context:.% + { + Argument~processors~cannot~be~used \\ + with~expandable~functions~\msg_line_context:. } - {% - Argument specification `#1' contains a processor function:\\% - this is only supported for standard robust functions.% + { + Argument~specification~'#1'~contains~a~processor~function:\\ + this~is~only~supported~for~standard~robust~functions. } \msg_kernel_new:nnnn { xparse } { unknown-argument-type } - {Unknown argument type `#1' replaced by `m'. Fingers crossed ...} - {% - The letter `#1' does not specify a known argument type.\\% - I'm assuming you want a standard mandatory argument (type `m').% + { Unknown~argument~type~'#1'~replaced~by~'m'.~Fingers~crossed~... } + { + The~letter~#1'~does~not~specify~a~known~argument~type.\\ + I'm~assuming~you~want~a~standard~mandatory~argument~(type~'m'). } \msg_kernel_new:nnn { xparse } { define-command } - {% - Defining document command #1\\% - with arg. spec. `#2' \msg_line_context:.% + { + Defining~document~command~#1\\ + with~arg.~spec.~'#2'~\msg_line_context:. } \msg_kernel_new:nnn { xparse } { define-environment } - {% - Defining document environment `#1'\\% - with arg. spec. `#2' \msg_line_context:.% + { + Defining~document~environment~'#1'\\ + with~arg.~spec.~'#2'~\msg_line_context:. } \msg_kernel_new:nnn { xparse } { redefine-command } - {% - Redefining document command #1\\% - with arg. spec. `#2' \msg_line_context:.% + { + Redefining~document~command~#1\\ + with~arg.~spec.~'#2'~\msg_line_context:. } \msg_kernel_new:nnn { xparse } { redefine-environment } - {% - Redefining document environment `#1'\\% - with arg. spec. `#2' \msg_line_context:.% + { + Redefining~document~environment~'#1'\\ + with~arg.~spec.~'#2'~\msg_line_context:. } \cs_new_eq:NN \BooleanFalse \c_false_bool \cs_new_eq:NN \BooleanTrue \c_true_bool @@ -968,7 +972,7 @@ \cs_new_protected:Npn \NewDocumentCommand #1#2#3 { \cs_if_exist:NTF #1 { \msg_kernel_error:nnx { xparse } { command-already-defined } - { \exp_not:N #1 } + { \token_to_str:N #1 } }{ \xparse_declare_cmd:Nnn #1 {#2} {#3} } @@ -978,7 +982,7 @@ \xparse_declare_cmd:Nnn #1 {#2} {#3} }{ \msg_kernel_error:nnx { xparse } { command-not-yet-defined } - { \exp_not:N #1 } + { \token_to_str:N #1 } } } \cs_new_protected:Npn \ProvideDocumentCommand #1#2#3 { diff --git a/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty b/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty index 467b9722af2..b2dbada94c7 100644 --- a/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty @@ -20,7 +20,7 @@ %% ====================================================================== %% %% File: xtemplate.dtx (C) Copyright 1999-2001 David Carlisle, Frank Mittelbach -%% (C) Copyright 2004-2009 Frank Mittelbach, LaTeX3 Project +%% (C) Copyright 2004-2010 Frank Mittelbach, LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -54,14 +54,14 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3names} -\GetIdInfo$Id: xtemplate.dtx 1746 2009-11-16 01:34:59Z will $ +\GetIdInfo$Id: xtemplate.dtx 1879 2010-03-29 17:48:38Z mittelba $ {Prototype document functions} \ProvidesExplPackage {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{expl3} -\tl_new:Nn \c_xtemplate_code_root_tl { xtemplate_code > } +\tl_const:Nn \c_xtemplate_code_root_tl { xtemplate_code > } \tl_new:Nn \c_xtemplate_defaults_root_tl { xtemplate_defaults > } \tl_new:Nn \c_xtemplate_instances_root_tl { xtemplate_instances > } \tl_new:Nn \c_xtemplate_keytypes_root_tl { xtemplate_keytypes > } @@ -74,14 +74,14 @@ \clist_put_right:Nn \c_xtemplate_keytypes_arg_clist { function } \clist_put_right:Nn \c_xtemplate_keytypes_arg_clist { instance } \prop_new:N \g_xtemplate_object_type_prop -\toks_new:N \l_xtemplate_assignments_toks +\tl_new:N \l_xtemplate_assignments_tl \tl_new:N \l_xtemplate_collection_tl \prop_new:N \l_xtemplate_collections_prop \tl_new:N \l_xtemplate_default_tl \bool_new:N \l_xtemplate_error_bool \bool_new:N \l_xtemplate_global_bool \bool_new:N \l_xtemplate_restrict_bool -\clist_new:N \l_xtemplate_restricted_clist +\clist_new:N \l_xtemplate_restrict_clist \tl_new:N \l_xtemplate_key_name_tl \tl_new:N \l_xtemplate_keytype_tl \tl_new:N \l_xtemplate_keytype_arg_tl @@ -96,7 +96,6 @@ \int_new:N \l_xtemplate_tmp_int \skip_new:N \l_xtemplate_tmp_skip \tl_new:N \l_xtemplate_tmp_tl -\cs_new_eq:NN \xtemplate_space: \iow_space: \cs_new:Npn \xtemplate_execute_if_arg_agree:nnT #1#2#3 { \prop_get:NnN \g_xtemplate_object_type_prop {#1} \l_xtemplate_tmp_tl \intexpr_compare:nTF { #2 = \l_xtemplate_tmp_tl } @@ -191,6 +190,9 @@ \l_xtemplate_values_prop } \cs_new:Npn \xtemplate_store_restrictions:n #1 { + \cs_if_free:cT { g_ \c_xtemplate_restrict_root_tl #1 _clist } { + \clist_new:c { g_ \c_xtemplate_restrict_root_tl #1 _clist } + } \clist_gset_eq:cN { g_ \c_xtemplate_restrict_root_tl #1 _clist } \l_xtemplate_restrict_clist } @@ -215,6 +217,9 @@ { g_ \c_xtemplate_keytypes_root_tl #1 _prop } } \cs_new:Npn \xtemplate_recover_restrictions:n #1 { + \cs_if_free:cT { g_ \c_xtemplate_restrict_root_tl #1 _clist } { + \clist_new:c { g_ \c_xtemplate_restrict_root_tl #1 _clist } + } \clist_set_eq:Nc \l_xtemplate_restrict_clist { g_ \c_xtemplate_restrict_root_tl #1 _clist } } @@ -256,9 +261,8 @@ \prop_clear:N \l_xtemplate_values_prop \prop_clear:N \l_xtemplate_keytypes_prop \seq_clear:N \l_xtemplate_key_seq - \cs_set_eq:NN \KV_key_no_value_elt:n \xtemplate_parse_keys_elt:n - \cs_set_eq:NN \KV_key_value_elt:nn \xtemplate_parse_keys_elt:nn - \KV_parse_space_removal_sanitize:n {#4} + \KV_process_space_removal_sanitize:NNn + \xtemplate_parse_keys_elt:n \xtemplate_parse_keys_elt:nn {#4} \prop_put:NVV \l_xtemplate_keytypes_prop \c_xtemplate_key_order_tl \l_xtemplate_key_seq \xtemplate_store_defaults:n { #1 / #2 } @@ -327,11 +331,11 @@ \group_end: \cs_new:Npn \xtemplate_split_keytype:n #1 { \bool_set_false:N \l_xtemplate_error_bool - \tl_set:Nn \l_xtemplate_tmpa_tl {#1} - \tl_replace_all_in:Nnn \l_xtemplate_tmpa_tl { ~ } { } - \tl_replace_all_in:Nnn \l_xtemplate_tmpa_tl { : } { @ } - \tl_if_in:VnTF \l_xtemplate_tmpa_tl { @ } { - \exp_after:wN \xtemplate_split_keytype_aux:w \l_xtemplate_tmpa_tl + \tl_set:Nn \l_xtemplate_tmp_tl {#1} + \tl_replace_all_in:Nnn \l_xtemplate_tmp_tl { ~ } { } + \tl_replace_all_in:Nnn \l_xtemplate_tmp_tl { : } { @ } + \tl_if_in:VnTF \l_xtemplate_tmp_tl { @ } { + \exp_after:wN \xtemplate_split_keytype_aux:w \l_xtemplate_tmp_tl \q_stop }{ \bool_set_true:N \l_xtemplate_error_bool @@ -383,12 +387,12 @@ } \cs_new:Npn \xtemplate_store_value_choice:n #1 { \tl_set:Nx \l_xtemplate_tmp_tl - { \l_xtemplate_key_name_tl \xtemplate_space: #1 } + { \l_xtemplate_key_name_tl \c_space_tl #1 } \prop_if_in:NVTF \l_xtemplate_vars_prop \l_xtemplate_tmp_tl { \xtemplate_store_value_choice_aux:V \l_xtemplate_tmp_tl }{ \tl_set:Nx \l_xtemplate_tmp_tl - { \l_xtemplate_key_name_tl \xtemplate_space: unknown } + { \l_xtemplate_key_name_tl \c_space_tl unknown } \prop_if_in:NVTF \l_xtemplate_vars_prop \l_xtemplate_tmp_tl { \xtemplate_store_value_choice_aux:V \l_xtemplate_tmp_tl }{ @@ -412,7 +416,7 @@ \cs_generate_variant:Nn \xtemplate_store_value_choice_aux:n { V } \cs_new:Npn \xtemplate_store_value_choice_name:n #1 { \tl_set:Nx \l_xtemplate_tmp_tl - { \l_xtemplate_key_name_tl \xtemplate_space: default } + { \l_xtemplate_key_name_tl \c_space_tl default } \prop_put:NVn \l_xtemplate_values_prop \l_xtemplate_tmp_tl {#1} } \cs_new:Npn \xtemplate_store_value_code:n #1 { @@ -476,9 +480,8 @@ \xtemplate_recover_defaults:n { #1 / #2 } \xtemplate_recover_keytypes:n { #1 / #2 } \prop_clear:N \l_xtemplate_vars_prop - \cs_set_eq:NN \KV_key_no_value_elt:n \xtemplate_parse_vars_elt:n - \cs_set_eq:NN \KV_key_value_elt:nn \xtemplate_parse_vars_elt:nn - \KV_parse_space_removal_sanitize:n {#3} + \KV_process_space_removal_sanitize:NNn + \xtemplate_parse_vars_elt:n \xtemplate_parse_vars_elt:nn {#3} \xtemplate_store_defaults:n { #1 / #2 } \xtemplate_store_vars:n { #1 / #2 } \clist_clear:N \l_xtemplate_restrict_clist @@ -509,9 +512,7 @@ } \cs_new:Npn \xtemplate_parse_vars_elt_aux:n #1 { \tl_if_eq:VnTF \l_xtemplate_keytype_tl { choice } - { - \xtemplate_implement_choices:n {#1} - } + { \xtemplate_implement_choices:n {#1} } { \tl_if_eq:VnTF \l_xtemplate_keytype_tl { code } { @@ -571,14 +572,12 @@ } \cs_new:Npn \xtemplate_implement_choices:n #1 { \clist_set_eq:NN \l_xtemplate_tmp_clist \l_xtemplate_keytype_arg_tl - \cs_set_eq:NN \KV_key_no_value_elt:n \xtemplate_implement_choice_elt:n - \cs_set_eq:NN \KV_key_value_elt:nn \xtemplate_implement_choice_elt:nn \prop_put:NVn \l_xtemplate_vars_prop \l_xtemplate_key_name_tl { } - \KV_parse_space_removal_sanitize:n {#1} - \cs_set_eq:NN \KV_key_no_value_elt:n \xtemplate_parse_vars_elt:n - \cs_set_eq:NN \KV_key_value_elt:nn \xtemplate_parse_vars_elt:nn + \KV_process_space_removal_sanitize:NNn + \xtemplate_implement_choice_elt:n \xtemplate_implement_choice_elt:nn + {#1} \tl_set:Nx \l_xtemplate_tmp_tl - { \l_xtemplate_key_name_tl \xtemplate_space: default } + { \l_xtemplate_key_name_tl \c_space_tl default } \prop_if_in:NVT \l_xtemplate_values_prop \l_xtemplate_tmp_tl { \prop_get:NVN \l_xtemplate_values_prop \l_xtemplate_tmp_tl \l_xtemplate_tmp_tl @@ -620,7 +619,7 @@ \cs_new:Npn \xtemplate_implement_choice_elt:nn #1#2 { \xtemplate_implement_choice_elt:n {#1} \tl_set:Nx \l_xtemplate_tmp_tl - { \l_xtemplate_key_name_tl \xtemplate_space: #1 } + { \l_xtemplate_key_name_tl \c_space_tl #1 } \prop_put:NVn \l_xtemplate_vars_prop \l_xtemplate_tmp_tl {#2} } \cs_new:Npn \xtemplate_declare_restricted:nnnn #1#2#3#4 { @@ -647,10 +646,9 @@ } \cs_new:Npn \xtemplate_parse_values:nn #1#2 { \xtemplate_recover_keytypes:n {#1} - \clist_clear:N \l_xtemplate_restricted_clist - \cs_set_eq:NN \KV_key_no_value_elt:n \xtemplate_parse_values_elt:n - \cs_set_eq:NN \KV_key_value_elt:nn \xtemplate_parse_values_elt:nn - \KV_parse_space_removal_sanitize:n {#2} + \clist_clear:N \l_xtemplate_restrict_clist + \KV_process_space_removal_sanitize:NNn + \xtemplate_parse_values_elt:n \xtemplate_parse_values_elt:nn {#2} } \cs_new:Npn \xtemplate_parse_values_elt:n #1 { \bool_set_true:N \l_xtemplate_error_bool @@ -661,7 +659,7 @@ \tl_replace_all_in:Nnn \l_xtemplate_key_name_tl { ~ } { } \prop_if_in:NVTF \l_xtemplate_keytypes_prop \l_xtemplate_key_name_tl { \bool_if:NTF \l_xtemplate_restrict_bool { - \clist_if_in:NVF \l_xtemplate_restricted_clist + \clist_if_in:NVF \l_xtemplate_restrict_clist \l_xtemplate_key_name_tl { \xtemplate_parse_values_elt_aux:Vn \l_xtemplate_key_name_tl {#2} } @@ -674,7 +672,7 @@ } } \cs_new:Npn \xtemplate_parse_values_elt_aux:nn #1#2 { - \clist_put_right:Nn \l_xtemplate_restricted_clist {#1} + \clist_put_right:Nn \l_xtemplate_restrict_clist {#1} \prop_get:NnN \l_xtemplate_keytypes_prop {#1} \l_xtemplate_tmp_tl \xtemplate_split_keytype_arg:V \l_xtemplate_tmp_tl \use:c { xtemplate_store_value_ \l_xtemplate_keytype_tl :n } {#2} @@ -707,7 +705,7 @@ \xtemplate_convert_to_assignments: \cs_set:cpx { \c_xtemplate_instances_root_tl #1 / #3 / #4 :w } { \exp_not:N \xtemplate_assignments_push:n { - \exp_not:V \l_xtemplate_assignments_toks + \exp_not:V \l_xtemplate_assignments_tl } \exp_not:c { \c_xtemplate_code_root_tl #1 / #2 :w } } @@ -738,7 +736,7 @@ } \cs_generate_variant:Nn \xtemplate_edit_instance_aux:nnnnn { nV } \cs_new_nopar:Npn \xtemplate_convert_to_assignments: { - \toks_clear:N \l_xtemplate_assignments_toks + \tl_clear:N \l_xtemplate_assignments_tl \prop_get:NVN \l_xtemplate_keytypes_prop \c_xtemplate_key_order_tl \l_xtemplate_key_seq \seq_map_function:NN \l_xtemplate_key_seq @@ -794,16 +792,16 @@ \xtemplate_if_key_value:VT \l_xtemplate_value_tl { \xtemplate_key_to_value: } - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:c { #1 _ \l_xtemplate_value_tl :N } \exp_not:V \l_xtemplate_var_tl } } \cs_new_nopar:Npn \xtemplate_assign_choice: { - \toks_put_left:NV \l_xtemplate_assignments_toks \l_xtemplate_value_tl + \tl_put_left:NV \l_xtemplate_assignments_tl \l_xtemplate_value_tl } \cs_new_nopar:Npn \xtemplate_assign_code: { - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:N \cs_set:Npn \exp_not:N \xtemplate_assign_code:n ##1 { \exp_not:V \l_xtemplate_var_tl } @@ -820,7 +818,7 @@ } } \cs_new_nopar:Npn \xtemplate_assign_function_aux:N #1 { - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:N \cs_generate_from_arg_count:NNnn \exp_not:V \l_xtemplate_var_tl \exp_not:N #1 @@ -836,7 +834,7 @@ } } \cs_new_nopar:Npn \xtemplate_assign_instance_aux:N #1 { - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:N #1 \exp_not:V \l_xtemplate_var_tl { \exp_not:N \xtemplate_use_instance:nn { \exp_not:V \l_xtemplate_keytype_arg_tl } @@ -875,7 +873,7 @@ \cs_new_eq:NN \xtemplate_assign_commalist: \xtemplate_assign_tokenlist: \cs_new_nopar:Npn \xtemplate_assign_tokenlist_aux:N #1 { - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:N #1 \exp_not:V \l_xtemplate_var_tl { \exp_not:V \l_xtemplate_value_tl } } @@ -884,7 +882,7 @@ \xtemplate_if_key_value:VT \l_xtemplate_value_tl { \xtemplate_key_to_value: } - \toks_put_left:Nx \l_xtemplate_assignments_toks { + \tl_put_left:Nx \l_xtemplate_assignments_tl { \exp_not:N #1 \exp_not:V \l_xtemplate_var_tl { \exp_not:V \l_xtemplate_value_tl } } @@ -946,10 +944,10 @@ } } \cs_new_nopar:Npn \xtemplate_assignments_pop: { - \toks_use:N \l_xtemplate_assignments_toks + \tl_use:N \l_xtemplate_assignments_tl } \cs_new:Npn \xtemplate_assignments_push:n #1 { - \toks_set:Nn \l_xtemplate_assignments_toks {#1} + \tl_set:Nn \l_xtemplate_assignments_tl {#1} } \cs_new:Npn \xtemplate_show_code:nn #1#2 { \xtemplate_execute_if_code_exist:nnT {#1} {#2} @@ -988,190 +986,189 @@ } } \msg_kernel_new:nnnn { xtemplate } { argument-number-mismatch } - {Object type `#1' takes `#2' not `#3' argument(s).} - {% - Objects of type `#1' require `#2' arguments.\\% - You have tried to make a template for `#1'\\% - with `#3' arguments, which is not possible:\\% - the number of arguments must agree.% + { Object~type~'#1'~takes~'#2' ~not~'#3'~argument(s). } + { + Objects~of~type~'#1'~require~'#2'~arguments.\\ + You~have~tried~to~make~a~template~for~'#1'\\ + with~'#3'~arguments,~which~is~not~possible:\\ + the~number~of~arguments~must~agree.% } \msg_kernel_new:nnnn { xtemplate } { bad-number-of-arguments } - {% - Impossible number of arguments declared for\\% - object type `#1'.% + { + Impossible~number~of~arguments~declared~for \\ + object~type~'#1'. } - {% - An object may accept between 0 and 9 arguments.\\% - You asked to use #2 arguments: this is not supported.% + { + An~object~may~accept~between~0~and~9~arguments.\\ + You~asked~to~use~#2~arguments:~this~is~not~supported. } \msg_kernel_new:nnnn { xtemplate } { bad-variable } - {Incorrect variable description \msg_line_context:.} - {% - The argument `#1'\\% - is not of the form `<variable>' or `global <variable>'.\\% - It must be given in one of these formats to be used in a template.% + { Incorrect~variable~description~\msg_line_context:. } + { + The~argument~'#1'\\ + is~not~of~the~form~'<variable>'~or~'global~<variable>'.\\ + It~must~be~given~in~one~of~these~formats~to~be~used~in~a~template. } \msg_kernel_new:nnnn { xtemplate } { choice-not-implemented } - {The choice `#1' has no implementation \msg_line_context:.} - {% - Each choice listed in the interface for a template must\\% - have an implementation.\\% - I did not find an implementation for `#1'.% + { The~choice~'#1'~has~no~implementation~\msg_line_context:. } + { + Each~choice~listed~in~the~interface~for~a~template~must\\ + have~an~implementation.\\ + I~did~not~find~an~implementation~for~'#1'. } \msg_kernel_new:nnnn { xtemplate } { choice-unknown-reserved } - {The choice `unknown' cannot be given for a template key.} - {% - The `unknown' choice is automatically checked by template when\\% - a choice key is given with an unknown value. It should not be\\% - included in the list of named choices for a key, and is always\\% - given last in the implementation of choices.% + { The~choice~'unknown'~cannot~be~given~for~a~template~key.} + { + The~'unknown'~choice~is~automatically~checked~by~template~when \\ + a~choice~key~is~given with~an~unknown~value.~It~should~not~be \\ + included~in~the~list~of~named~choices~for~a~key,~and~is~always \\ + given~last~in~the~implementation~of~choices. } \msg_kernel_new:nnnn { xtemplate } { duplicate-key-interface } - {Key `#1' appears twice in interface definition \msg_line_context:.} - {% - Each key can only have one interface declared in a template.\\% - I found two interfaces for `#1': probably a typing error.% + { Key~'#1'~appears~twice~in~interface~definition~\msg_line_context:. } + { + Each~key~can~only~have~one~interface~declared~in~a~template.\\ + I~found~two~interfaces~for~'#1':~probably~a~typing~error. } \msg_kernel_new:nnnn { xtemplate } { empty-key-name } - {No key name found in `#1' \msg_line_context:.} - {% - A template key name and type is given in the form:\\% - \msg_space: <name> : <type> \\% - Parsing your input, I found a `:' but nothing before - it!% + { No~key~name~found~in~'#1'~\msg_line_context:. } + { + A~template~key~name~and~type~is~given~in~the~form:\\ + \c_space_tl <name>~:~<type> \\ + Parsing~your~input~I~found~a~:'~but~nothing~before~it! } \msg_kernel_new:nnnn { xtemplate } { key-no-value } - {The key `#1' has no value \msg_line_context:.} - {% - When creating an instance of a template\\% - every key listed must include a value: - \msg_two_spaces: <key> = <value> + { The~key~'#1'~has~no~value~\msg_line_context:.} + { + When~creating~an~instance~of~a~template\\ + every~key~listed~must~include~a~value: + \c_space_tl \c_space_tl <key>~=~<value> } \msg_kernel_new:nnnn { xtemplate } { key-no-variable } - {The key `#1' requires implementation details \msg_line_context:.} - {% - When creating template code using - \token_to_str:N \DeclareTemplateCode,\\% - each key name must have an associated implementation.\\% - This should be given after an `=' sign: I did not find one.% + { The~key~'#1'~requires~implementation~details~\msg_line_context:. } + { + When~creating~template~code~using~ + \token_to_str:N \DeclareTemplateCode,\\ + each~key~name~must~have~an~associated~implementation.\\ + This~should~be~given~after~a~'='~sign:~I~did~not~find~one. } \msg_kernel_new:nnnn { xtemplate } { key-not-implemented } - {Key `#1' has no implementation \msg_line_context:.} - {% - The definition of key implementations for template `#2'\\% - of object type `#3' does not include any details for key `#1'.\\% - The key was declared in the interface definition,\\% - and so an implementation is required.% + { Key~'#1'~has~no~implementation~\msg_line_context:. } + { + The~definition~of key implementations~for~template~'#2'\\ + of~object~type~'#3'~does not~include~any~details~for~key~'#1'.\\ + The~key was declared~in~the~interface definition,\\ + and~so~an~implementation~is~required. } \msg_kernel_new:nnnn { xtemplate } { keytype-requires-argument } - {The keytype `#1' requires an argument \msg_line_context:} - {% - You should have put:\\% - \msg_two_spaces: <key-name> : #1 - \token_to_str:N { <argument> \token_to_str:N } \\% - but I did not find an <argument>.% + { The~keytype~'#1'~requires~an~argument~\msg_line_context:. } + { + You~should~have~put:\\ + \c_space_tl \c_space_tl <key-name>~:~#1 + \token_to_str:N {~<argument>~\token_to_str:N } \\ + but~I~did~not~find~an~<argument>. } \msg_kernel_new:nnnn { xtemplate } { no-keytype } - {The key `#1' is missing a keytype \msg_line_context:} + { The~key~'#1'~is missing~a~keytype~\msg_line_context:. } {% - You should have put:\\% - \msg_two_spaces: #1 : <keytype>\\% - but I did not find an <keytype>.% + You~should~have~put:\\ + \c_space_tl \c_space_tl #1~:~<keytype>\\ + but~I~did~not~find~a~<keytype>. } \msg_kernel_new:nnnn { xtemplate } { no-template-code } - {% - The template `#2' of type `#1' is unknown\\% - or has no implementation.% + { + The~template~'#2'~of~type~'#1'~is~unknown\\ + or~has~no~implementation. } - {% - You need to declare a template with - \token_to_str:N \DeclareTemplateInterface \\% - and its code with - \token_to_str:N \DeclareTemplateCode \msg_space: - prior to using it.% + { + You~need~to~declare~a~templat~with + \token_to_str:N \DeclareTemplateInterface \\ + and~its~code~with + \token_to_str:N \DeclareTemplateCode \c_space_tl + prior~to~using~it. } \msg_kernel_new:nnnn { xtemplate } { type-mismatch } - {Object types `#1' and `#2' do not agree.} - {% - You are trying to use a template directly with - \token_to_str:N \UseInstance \\% - (or a similar function), but the object types do not match.% + { Object~types~'#1'~and~'#2'~do~not~agree. } + { + You~are~trying~to~use~a~template~directly~with + \token_to_str:N \UseInstance \\ + (or~a~similar~function),~but~the~object~types~do~not~match. } \msg_kernel_new:nnnn { xtemplate } { undeclared-variable } - {The variable #1has not been declared.} - {% - Before declaring an instance, all of the required variables\\% - used in template keys must be created.% + {The~variable~#1~has~not~been~declared. } + { + Before~declaring~an~instance,~all~of~the~required~variables\\ + used~in~template~keys~must~be~created. } \msg_kernel_new:nnnn { xtemplate } { unknown-attribute } - {The template attribute `#1' is unknown.} - {% - There is a definition in the current template reading\\% + { The~template~attribute~'#1'~is~unknown. } + { + There~is~a~definition~in~the~current~template~reading\\ \token_to_str:N \KeyValue - \token_to_str:N { #1 \token_to_str:N }\\% - but there is no key called `#1'.% + \token_to_str:N {~#1~\token_to_str:N }\\ + but~there~is~no~key~called~'#1'. } \msg_kernel_new:nnnn { xtemplate } { unknown-choice } - {The choice `#1' was not declared for key `#2' \msg_line_context:.} - {% - The key `#2' takes a fixed number of choices:\\% + { The~choice~'#1'~was~not~declared~for~key~'#2'~\msg_line_context:. } + { + The~key '#2'~takes~a~fixed~number~of~choices:\\ \clist_map_function:NN #3 \xtemplate_unknown_choice_aux:n - and this list does not include `#1'.% + and~this~list~does~not~include~'#1'. } \cs_new:Npn \xtemplate_unknown_choice_aux:n #1 { -~ #1 ;\\} \msg_kernel_new:nnnn { xtemplate } { unknown-keytype } - {The keytype `#1' is unknown \msg_line_context:.} - {% - Valid keytypes are:\\% - - boolean;\\% - - choice;\\% - - code;\\% - - commalist;\\% - - function;\\% - - instance;\\% - - integer;\\% - - length;\\% - - skip;\\% - - tokenlist.% + { The~keytype '#1'~is~unknown~\msg_line_context:. } + { + Valid~keytypes~are:\\ + -~boolean;\\ + -~choice;\\ + -~code;\\ + -~commalist;\\ + -~function;\\ + -~instance;\\ + -~integer;\\ + -~length;\\ + -~skip;\\ + -~tokenlist. } \msg_kernel_new:nnnn { xtemplate } { unknown-object-type } - {The object type `#1' is unknown \msg_line_context:.} - {% - An object type needs to be declared with - \token_to_str:N \DeclareObjectType \msg_space: - prior to using it.% + { The ~object~type~'#1'~is~unknown~\msg_line_context:. } + { + An~object~type~needs~to~be~declared~with + \token_to_str:N \DeclareObjectType \c_space_tl + prior~to~using~it. } \msg_kernel_new:nnnn { xtemplate } { unknown-instance } - {The instance `#2' of type `#1' is unknown.} - {% - You have asked to use an instance `#2',\\% - but this has not been created.% + { The~instance~'#2'~of~type~'#1'~is~unknown. } + { + You~have~asked~to~use~an~instance~'#2',\\ + but~this~has~not~been~created. } \msg_kernel_new:nnnn { xtemplate } { unknown-key } - {Unknown template key `#1' \msg_line_context:.} - {% - The key `#1' was not declared in the interface\\% - for the current template.\\% - Probably you have misspelled the key name.% + { Unknown~template~key~'#1'~\msg_line_context:. } + { + The~key~'#1'~was~not~declared~in~the~interface\\ + for~the~current~template.\\ + Probably~you~have~misspelled~the~key~name. } \msg_kernel_new:nnnn { xtemplate } { unknown-template } - {The template `#2' of type `#1' is unknown \msg_line_context:.} - {% - No interface has been declared for a template\\% - `#2' of object type `#1'.% + { The~template~'#2'~of~type~'#1'~is~unknown~\msg_line_context:. } + { + No~interface~has~been~declared~for~a~template\\ + '#2'~of~object~type~'#1'. } \msg_kernel_new:nnn { xtemplate } { define-template-code } - {Defining template code for `#1' \msg_line_context:.} + {Defining~template~code~for~'#1'~\msg_line_context:.} \msg_kernel_new:nnn { xtemplate } { define-template-interface } - {Defining template interface for `#1' \msg_line_context:.} + {Defining~template~interface~for~'#1'~\msg_line_context:.} \msg_kernel_new:nnn { xtemplate } { define-object-type } - {Defining object type `#1' with #2 argument(s) \msg_line_context:.} + {Defining~object~type~'#1'~with~#2~argument(s)~\msg_line_context:.} \msg_kernel_new:nnn { xtemplate } { redefine-template-code } - {Redefining template code for `#1' \msg_line_context:.} + {Redefining~template~code~for~'#1'~\msg_line_context:.} \msg_kernel_new:nnn { xtemplate } { redefine-template-interface } - {Redefining template interface for `#1' \msg_line_context:.} + {Redefining~template~interface~for~'#1'~\msg_line_context:.} \msg_kernel_new:nnn { xtemplate } { redefine-object-type } - {Redefining object type `#1' with #2 argument(s) \msg_line_context:.} + {Redefining~object~type~'#1'~with~#2~argument(s)~\msg_line_context:.} \cs_new_protected_nopar:Npn \DeclareObjectType #1#2 { \xtemplate_declare_object_type:nn {#1} {#2} } |