diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3packages')
5 files changed, 132 insertions, 82 deletions
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index aea02783a52..00afbb1d7aa 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2018-08-23}{} +\ProvidesExplPackage{l3keys2e}{2018-09-24}{} {LaTeX2e option processing using LaTeX3 keys} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } \cs_generate_variant:Nn \keys_if_exist:nnT { nx } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty index cc364a280c1..3c2cf74d5ca 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -33,7 +33,7 @@ \endinput } \RequirePackage{xparse} -\ProvidesExplPackage{xfp}{2018-08-23}{} +\ProvidesExplPackage{xfp}{2018-09-24}{} {L3 Floating point unit} \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} } \NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index 3a5e7940987..12cac2d08a9 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -34,7 +34,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2018-08-23}{} +\ProvidesExplPackage{xfrac}{2018-09-24}{} {L3 Experimental split-level fractions} \keys_define:nn { xfrac } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 82ae71afa2c..4c7ef80fcfb 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2018-08-23}{} +\ProvidesExplPackage{xparse}{2018-09-24}{} {L3 Experimental document command parser} \tl_new:N \l__xparse_arg_spec_tl \tl_new:N \l__xparse_args_tl @@ -58,9 +58,9 @@ \tl_new:N \l__xparse_fn_code_tl \tl_new:N \l__xparse_function_tl \bool_new:N \l__xparse_grab_expandably_bool +\bool_new:N \l__xparse_obey_spaces_bool \tl_new:N \l__xparse_last_delimiters_tl \bool_new:N \l__xparse_long_bool -\bool_new:N \l__xparse_ignore_spaces_bool \int_new:N \l__xparse_m_args_int \int_new:N \l__xparse_mandatory_args_int \bool_new:N \l__xparse_prefixed_bool @@ -68,6 +68,7 @@ \tl_new:N \l__xparse_process_one_tl \bool_new:N \l__xparse_process_some_bool \tl_new:N \l__xparse_signature_tl +\bool_new:N \l__xparse_some_obey_spaces_bool \bool_new:N \l__xparse_some_long_bool \bool_new:N \l__xparse_some_short_bool \prop_new:N \l__xparse_tmp_prop @@ -362,10 +363,11 @@ \tl_clear:N \l__xparse_last_delimiters_tl \tl_clear:N \l__xparse_arg_spec_tl \bool_set_true:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_some_obey_spaces_bool \bool_set_false:N \l__xparse_some_long_bool \bool_set_false:N \l__xparse_some_short_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool \__xparse_normalize_arg_spec_loop:n #1 \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop \int_compare:nNnT \l__xparse_current_arg_int > 9 @@ -443,7 +445,12 @@ \cs_new_protected:cpn { __xparse_normalize_type_+:w } #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } - \tl_put_right:Nn \l__xparse_arg_spec_tl { + } + \bool_if:NT \l__xparse_long_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \iow_char:N \\ \l__xparse_function_tl } { + } + \__xparse_bad_def:wn + } \bool_set_true:N \l__xparse_long_bool \int_decr:N \l__xparse_current_arg_int \__xparse_normalize_arg_spec_loop:n {#1} @@ -451,7 +458,14 @@ \cs_new_protected:cpn { __xparse_normalize_type_!:w } #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } - \tl_put_right:Nn \l__xparse_arg_spec_tl { ! } + \bool_if:NT \l__xparse_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \iow_char:N \\ \l__xparse_function_tl } { ! } + \__xparse_bad_def:wn + } + \bool_set_true:N \l__xparse_obey_spaces_bool + \bool_set_true:N \l__xparse_some_obey_spaces_bool \int_decr:N \l__xparse_current_arg_int \__xparse_normalize_arg_spec_loop:n {#1} } @@ -499,26 +513,27 @@ { \quark_if_recursion_tail_stop_do:Nn #1 { \__xparse_bad_arg_spec:wn } \__xparse_single_char_check:n {#1} - \tl_put_right:Nn \l__xparse_arg_spec_tl { t #1 } + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + t \exp_not:n {#1} + } \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} \bool_set_false:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \bool_set_false:N \l__xparse_long_bool \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_l:w { \__xparse_normalize_check_lu:N l - \__xparse_add_arg_spec:n { l } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { l } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_m:w { \__xparse_delimiter_check:nnn { } { m } { \iow_char:N \{ } - \__xparse_add_arg_spec:n { m } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { m } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_R:w #1#2#3 @@ -527,27 +542,21 @@ \__xparse_single_char_check:n {#1} \__xparse_single_char_check:n {#2} \__xparse_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} } - \__xparse_add_arg_spec:n { R #1 #2 {#3} } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl \bool_set_false:N \l__xparse_grab_expandably_bool + \__xparse_add_arg_spec_mandatory:n { R #1 #2 {#3} } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_u:w #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } \__xparse_normalize_check_lu:N u - \__xparse_add_arg_spec:n { u {#1} } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { u {#1} } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_v:w { \__xparse_normalize_check_gv:N v - \__xparse_add_arg_spec:n { v } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { v } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_single_char_check:n #1 @@ -628,14 +637,32 @@ \bool_if:NTF \l__xparse_long_bool { \bool_set_true:N \l__xparse_some_long_bool } { \bool_set_true:N \l__xparse_some_short_bool } + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_long_bool { + } + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + \exp_not:n {#1} + } \bool_set_false:N \l__xparse_long_bool - \tl_put_right:Nn \l__xparse_arg_spec_tl {#1} + \bool_set_false:N \l__xparse_obey_spaces_bool + } +\cs_new_protected:Npn \__xparse_add_arg_spec_mandatory:n #1 + { + \bool_if:NT \l__xparse_some_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { non-trailing-obey-spaces } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \int_incr:N \l__xparse_mandatory_args_int + \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec:n {#1} } \cs_new_protected:Npn \__xparse_prepare_signature:n #1 { \int_zero:N \l__xparse_current_arg_int \bool_set_false:N \l__xparse_long_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \int_zero:N \l__xparse_m_args_int \bool_set_false:N \l__xparse_defaults_bool \tl_clear:N \l__xparse_defaults_tl @@ -671,7 +698,7 @@ \cs_new_protected:cpn { __xparse_add_type_!:w } { \__xparse_flush_m_args: - \bool_set_true:N \l__xparse_ignore_spaces_bool + \bool_set_true:N \l__xparse_obey_spaces_bool \bool_set_true:N \l__xparse_prefixed_bool \__xparse_prepare_signature_bypass:N } @@ -766,15 +793,7 @@ } \cs_new_protected:Npn \__xparse_add_grabber_mandatory:N #1 { - \tl_put_right:Nx \l__xparse_signature_tl - { - \exp_not:c - { __xparse_grab_ #1 \bool_if:NT \l__xparse_long_bool { _long } :w } - } - \bool_set_false:N \l__xparse_long_bool - \tl_put_right:Nx \l__xparse_process_all_tl - { { \exp_not:o \l__xparse_process_one_tl } } - \tl_clear:N \l__xparse_process_one_tl + \__xparse_add_grabber_optional:N #1 \int_decr:N \l__xparse_mandatory_args_int } \cs_new_protected:Npn \__xparse_add_grabber_optional:N #1 @@ -785,15 +804,12 @@ { __xparse_grab_ #1 \bool_if:NT \l__xparse_long_bool { _long } - \bool_lazy_and:nnT - { \l__xparse_ignore_spaces_bool } - { \int_compare_p:nNn \l__xparse_mandatory_args_int = 0 } - { _ignore_spaces } + \bool_if:NT \l__xparse_obey_spaces_bool { _obey_spaces } :w } } \bool_set_false:N \l__xparse_long_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \tl_put_right:Nx \l__xparse_process_all_tl { { \exp_not:o \l__xparse_process_one_tl } } \tl_clear:N \l__xparse_process_one_tl @@ -953,22 +969,28 @@ } \cs_new_protected:Npn \__xparse_grab_D:w #1#2#3 \__xparse_run_code: { - \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace_remove:NTF } \cs_new_protected:Npn \__xparse_grab_D_long:w #1#2#3 \__xparse_run_code: { - \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected:Npn - { _ignore_spaces } + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_D_ignore_spaces:w #1#2#3 \__xparse_run_code: - { \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected_nopar:Npn { } } -\cs_new_protected:Npn \__xparse_grab_D_long_ignore_spaces:w #1#2#3 \__xparse_run_code: - { \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected:Npn { } } -\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNn #1#2#3#4#5 +\cs_new_protected:Npn \__xparse_grab_D_long_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNN #1#2#3#4#5 { \__xparse_grab_D_aux:NNnN #1#2 {#3} #4 - \use:c { peek_meaning_remove #5 :NTF } #1 + #5 #1 { \__xparse_grab_D_call:Nw #1 } { \__xparse_add_arg:o \c_novalue_tl } } @@ -1043,34 +1065,34 @@ } \cs_new_protected:Npn \__xparse_grab_E:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_peek_nonspace_remove:NTF } \cs_new_protected:Npn \__xparse_grab_E_long:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected:Npn - { _ignore_spaces } + \__xparse_peek_nonspace_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E_ignore_spaces:w #1#2 \__xparse_run_code: +\cs_new_protected:Npn \__xparse_grab_E_obey_spaces:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected_nopar:Npn - { } + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E_long_ignore_spaces:w #1#2 \__xparse_run_code: +\cs_new_protected:Npn \__xparse_grab_E_long_obey_spaces:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected:Npn - { } + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E:nnNn #1#2#3#4 +\cs_new_protected:Npn \__xparse_grab_E:nnNN #1#2#3#4 { \exp_after:wN #3 \l__xparse_fn_tl ##1##2##3 { \prop_put:Nnn \l__xparse_tmp_prop {##1} {##3} - \__xparse_grab_E_loop:nnN {#4} { } ##2 \q_recursion_stop + \__xparse_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop } \prop_clear:N \l__xparse_tmp_prop \tl_set:Nn \l__xparse_signature_tl {#2} @@ -1085,38 +1107,45 @@ } \l__xparse_signature_tl \__xparse_run_code: } - \__xparse_grab_E_loop:nnN {#4} { } #1 \q_recursion_tail \q_recursion_stop + \__xparse_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop } -\cs_new_protected:Npn \__xparse_grab_E_loop:nnN #1#2#3#4 \q_recursion_stop +\cs_new_protected:Npn \__xparse_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop { \cs_if_eq:NNTF #3 \q_recursion_tail { \__xparse_grab_E_finalise: } { - \use:c { peek_meaning_remove #1 :NTF } #3 + #1 #3 { \l__xparse_fn_tl #3 {#2#4} } - { \__xparse_grab_E_loop:nnN {#1} {#2#3} #4 \q_recursion_stop } + { \__xparse_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop } } } \cs_new_protected:Npn \__xparse_grab_E_finalise: { } \cs_new_protected:Npn \__xparse_grab_G:w #1 \__xparse_run_code: { - \__xparse_grab_G_aux:nNn {#1} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace:NTF } \cs_new_protected:Npn \__xparse_grab_G_long:w #1 \__xparse_run_code: { - \__xparse_grab_G_aux:nNn {#1} \cs_set_protected:Npn { _ignore_spaces } + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \__xparse_peek_nonspace:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \peek_meaning:NTF } -\cs_new_protected:Npn \__xparse_grab_G_ignore_spaces:w #1 \__xparse_run_code: - { \__xparse_grab_G_aux:nNn {#1} \cs_set_protected_nopar:Npn { } } -\cs_new_protected:Npn \__xparse_grab_G_long_ignore_spaces:w #1 \__xparse_run_code: - { \__xparse_grab_G_aux:nNn {#1} \cs_set_protected:Npn { } } -\cs_new_protected:Npn \__xparse_grab_G_aux:nNn #1#2#3 +\cs_new_protected:Npn \__xparse_grab_G_long_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \peek_meaning:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_aux:nNN #1#2#3 { \tl_set:Nn \l__xparse_signature_tl {#1} \exp_after:wN #2 \l__xparse_fn_tl ##1 { \__xparse_add_arg:n {##1} } - \use:c { peek_meaning #3 :NTF } \c_group_begin_token + #3 \c_group_begin_token { \l__xparse_fn_tl } { \__xparse_add_arg:o \c_novalue_tl } } @@ -1211,7 +1240,7 @@ \cs_new_protected:Npn \__xparse_grab_R_aux:NNnN #1#2#3#4 { \__xparse_grab_D_aux:NNnN #1 #2 {#3} #4 - \peek_meaning_remove_ignore_spaces:NTF #1 + \__xparse_peek_nonspace_remove:NTF #1 { \__xparse_grab_D_call:Nw #1 } { \__kernel_msg_error:nnxx { xparse } { missing-required } @@ -1221,11 +1250,9 @@ } } \cs_new_protected:Npn \__xparse_grab_t:w - { \__xparse_grab_t_aux:NNw \peek_meaning_remove_ignore_spaces:NTF } -\cs_new_eq:NN \__xparse_grab_t_long:w \__xparse_grab_t:w -\cs_new_protected:Npn \__xparse_grab_t_ignore_spaces:w + { \__xparse_grab_t_aux:NNw \__xparse_peek_nonspace_remove:NTF } +\cs_new_protected:Npn \__xparse_grab_t_obey_spaces:w { \__xparse_grab_t_aux:NNw \peek_meaning_remove:NTF } -\cs_new_eq:NN \__xparse_grab_t_long_ignore_spaces:w \__xparse_grab_t_ignore_spaces:w \cs_new_protected:Npn \__xparse_grab_t_aux:NNw #1#2#3 \__xparse_run_code: { \tl_set:Nn \l__xparse_signature_tl {#3} @@ -1810,6 +1837,16 @@ } } \cs_new:Npn \__xparse_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1} +\cs_new_protected:Npn \__xparse_peek_nonspace:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_remove:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning_remove:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_aux:nNNTF #1#2#3#4#5 + { + \peek_meaning_remove:NTF \c_space_token + { \__xparse_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} } + { #2 #3 { #4 } { #5 #1 } } + } \__kernel_msg_new:nnnn { xparse } { bad-arg-spec } { Bad~argument~specification~'#2'~for~command~'#1'. } { @@ -1898,6 +1935,13 @@ The~current~command~'#1'~expects~an~argument~starting~with~'#2'.~ LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed. } +\__kernel_msg_new:nnnn { xparse } { non-trailing-obey-spaces } + { Prefix~'!'~used~before~mandatory~argument~'#2'~of~command~'#1'. } + { + The~prefix~'!'~can~only~apply~to~trailing~optional~arguments. + \\ \\ + LaTeX~will~ignore~this~entire~definition. + } \__kernel_msg_new:nnnn { xparse } { non-xparse-command } { Command~'#1'~not~defined~using~xparse. } { @@ -1959,6 +2003,12 @@ This~cannot~be~implemented. \\ \\ LaTeX~will~ignore~this~entire~definition. } +\__kernel_msg_new:nnnn { xparse } { two-markers } + { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~command~'#1'. } + { + The~argument~specification~provided~has~two~markers~'#2'~applying~ + to~the~same~argument;~these~are~redundant. + } \__kernel_msg_new:nnnn { xparse } { unknown-argument-type } { Unknown~argument~type~'#2'~for~the~command~'#1'. } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 912ddd9a897..b233a8b362f 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2018-08-23}{} +\ProvidesExplPackage{xtemplate}{2018-09-24}{} {L3 Experimental prototype document functions} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } \tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ } |