diff options
author | Karl Berry <karl@freefriends.org> | 2017-05-14 22:40:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-05-14 22:40:58 +0000 |
commit | e0c5d6d38a1f285f20a66692e46d2e607d6ff1dd (patch) | |
tree | 977232bc088d27b46d9a6330c8f4f47aa98dbb78 /Master/texmf-dist/tex/latex/l3packages/xparse | |
parent | 4407d96af752e6e79a48c25c5189bd1a63fbd125 (diff) |
l3 (14may17)
git-svn-id: svn://tug.org/texlive/trunk@44351 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3packages/xparse')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty | 101 |
1 files changed, 27 insertions, 74 deletions
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index d266150d793..14e8e59eec0 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -23,8 +23,8 @@ %% (C) Copyright 2004-2008 Frank Mittelbach, %% The LaTeX3 Project %% (C) Copyright 2009-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/04/01] -\@ifpackagelater{expl3}{2017/04/01} +\RequirePackage{expl3}[2017/05/13] +\@ifpackagelater{expl3}{2017/05/13} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2017/04/01}{} +\ProvidesExplPackage{xparse}{2017/05/13}{} {L3 Experimental document command parser} \tl_const:Nx \c__xparse_no_value_tl { \char_generate:nn { `\- } { 11 } NoValue- } @@ -285,36 +285,18 @@ } \cs_new_protected:Npn \__xparse_defaults_def:nnn #1#2#3 { - \tl_if_head_is_group:nTF {#3} + \tl_put_right:Nx \l__xparse_tmpa_tl { - \tl_put_right:Nn \l__xparse_tmpa_tl - { + { + \exp_not:N \exp_not:n { - \exp_args:Nf \__xparse_tl_mapthread_function:nnN - { \tl_item:Nn \l__xparse_args_tl {#1} } - {#3} - \__xparse_defaults_def_aux:nn + \__xparse_if_no_value:nTF {#2} + { \exp_not:o {#3} } + { \exp_not:n { ## #1 } } } - } - } - { - \__xparse_if_no_value:nTF {#2} - { - \tl_put_right:Nx \l__xparse_tmpa_tl - { { \exp_not:N \exp_not:n { \exp_not:o {#3} } } } - } - { - \tl_put_right:Nn \l__xparse_tmpa_tl - { { \exp_not:n { ## #1 } } } - } + } } } -\cs_new:Npn \__xparse_defaults_def_aux:nn #1#2 - { - \__xparse_if_no_value:nTF {#1} - { { \exp_not:n {#2} } } - { { \exp_not:n {#1} } } - } \cs_new_protected:Npn \__xparse_args_process: { \tl_clear:N \l__xparse_args_ii_tl @@ -367,28 +349,9 @@ } \cs_new:Npn \__xparse_end_expandable_defaults:nnw #1#2 { - \tl_if_head_is_group:nTF {#1} - { - \__xparse_end_expandable_defaults_E:nnw { } - #1 \q_nil \q_mark - #2 \q_nil - } - { - \__xparse_if_no_value:nTF {#2} - { \exp_args:No \__xparse_end_expandable_defaults:nw {#1} } - { \__xparse_end_expandable_defaults:nw {#2} } - } - } -\cs_new:Npn \__xparse_end_expandable_defaults_E:nnw #1#2#3 \q_mark #4 - { - \quark_if_nil:nTF {#2} - { \__xparse_end_expandable_defaults:nw {#1} } - { - \__xparse_if_no_value:nTF {#4} - { \__xparse_end_expandable_defaults_E:nnw { #1 {#2} } } - { \__xparse_end_expandable_defaults_E:nnw { #1 {#4} } } - #3 \q_mark - } + \__xparse_if_no_value:nTF {#2} + { \exp_args:No \__xparse_end_expandable_defaults:nw {#1} } + { \__xparse_end_expandable_defaults:nw {#2} } } \cs_new:Npn \__xparse_end_expandable_defaults:nw #1#2 \__xparse_end_expandable_defaults:nnnNNn #3 @@ -506,6 +469,7 @@ \__xparse_add_arg_spec:n { E {#1} {#2} } \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} \bool_set_false:N \l__xparse_grab_expandably_bool + \int_add:Nn \l__xparse_current_arg_int { \tl_count:n {#1} - 1 } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_E_unique_check:w #1#2 \q_stop @@ -672,7 +636,6 @@ \cs_new_protected:Npn \__xparse_prepare_signature_bypass:N #1 { \quark_if_recursion_tail_stop:N #1 - \int_incr:N \l__xparse_current_arg_int \use:c { __xparse_add @@ -685,7 +648,6 @@ \__xparse_flush_m_args: \bool_set_true:N \l__xparse_long_bool \bool_set_true:N \l__xparse_prefixed_bool - \int_decr:N \l__xparse_current_arg_int \__xparse_prepare_signature_bypass:N } \cs_new_protected:cpn { __xparse_add_type_>:w } #1 @@ -693,7 +655,6 @@ \__xparse_flush_m_args: \bool_set_true:N \l__xparse_prefixed_bool \bool_set_true:N \l__xparse_process_some_bool - \int_decr:N \l__xparse_current_arg_int \tl_put_left:Nn \l__xparse_process_one_tl { {#1} } \__xparse_prepare_signature_bypass:N } @@ -814,30 +775,26 @@ \__xparse_if_no_value:nTF {#1} { \__xparse_add_default: } { + \int_incr:N \l__xparse_current_arg_int \bool_set_true:N \l__xparse_defaults_bool \tl_put_right:Nn \l__xparse_defaults_tl { { \prg_do_nothing: #1 } } } } \cs_new_protected:Npn \__xparse_add_default: - { \tl_put_right:Nn \l__xparse_defaults_tl { \c__xparse_no_value_tl } } + { + \int_incr:N \l__xparse_current_arg_int + \tl_put_right:Nn \l__xparse_defaults_tl { \c__xparse_no_value_tl } + } \cs_new_protected:Npn \__xparse_add_default_E:nn #1#2 { - \bool_set_true:N \l__xparse_defaults_bool - \tl_put_right:Nx \l__xparse_defaults_tl - { - { - \tl_map_function:nN {#2} \__xparse_add_default_E_aux:n - \prg_replicate:nn - { \tl_count:n {#1} - \tl_count:n {#2} } - { { \c__xparse_no_value_tl } } - } - } + \tl_map_function:nN {#2} \__xparse_add_default:n + \prg_replicate:nn + { \tl_count:n {#1} - \tl_count:n {#2} } + { \__xparse_add_default: } } -\cs_new:Npn \__xparse_add_default_E_aux:n #1 { \exp_not:n { {#1} } } \cs_new_protected:cpn { __xparse_add_expandable_type_+:w } { \bool_set_true:N \l__xparse_long_bool - \int_decr:N \l__xparse_current_arg_int \__xparse_prepare_signature:N } \cs_new_protected:Npn \__xparse_add_expandable_type_D:w @@ -1091,18 +1048,14 @@ \tl_set:Nn \l__xparse_signature_tl {#2} \cs_set_protected:Npn \__xparse_grab_E_finalise: { - \tl_clear:N \l__xparse_tmpa_tl \tl_map_inline:nn {#1} { \prop_get:NnNF \l__xparse_tmp_prop {####1} \l__xparse_tmpb_tl { \tl_set_eq:NN \l__xparse_tmpb_tl \c__xparse_no_value_tl } - \tl_set:Nx \l__xparse_tmpa_tl - { - \exp_not:V \l__xparse_tmpa_tl - { \exp_not:V \l__xparse_tmpb_tl } - } + \tl_put_right:Nx \l__xparse_args_tl + { { \exp_not:V \l__xparse_tmpb_tl } } } - \__xparse_add_arg:V \l__xparse_tmpa_tl + \l__xparse_signature_tl \__xparse_run_code: } \__xparse_grab_E_loop:nnN {#4} { } #1 \q_recursion_tail \q_recursion_stop } @@ -1540,7 +1493,7 @@ \cs_new:Npn \__xparse_expandable_grab_E_find:nnw #1#2#3 \q_nil #4 \q__xparse #5#6#7#8 { \__xparse_expandable_grab_E_aux:w {#1} { #2 {#8} #3 } #4 \q__xparse #5 #6 #7 } \cs_new:Npn \__xparse_expandable_grab_E_end:nnw #1#2#3 \q__xparse #4#5#6 - { #3 {#2} \q__xparse #4 #5 {#1} } + { #3 #2 \q__xparse #4 #5 {#1} } \cs_new:Npn \__xparse_expandable_grab_m:w #1 \q__xparse #2#3 { #3 { \__xparse_expandable_grab_m_aux:wNn #1 \q__xparse #2 #3 } } \cs_new:Npn \__xparse_expandable_grab_m_long:w #1 \q__xparse #2#3 |