summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty')
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty101
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