summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-03-31 00:05:09 +0000
committerKarl Berry <karl@freefriends.org>2010-03-31 00:05:09 +0000
commita41411cfff0a41be6e8d9b793009b47e67d6f9b3 (patch)
treec10afd18e4e8e6bd3f6ea04d6da79bdec787b1e0 /Master/texmf-dist/tex/latex
parent3ab55a61f6f8d2218a8f3175bc7481ce162b60d3 (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')
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty370
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty349
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}
}