diff options
Diffstat (limited to 'macros/latex/contrib/l3packages/xparse.dtx')
-rw-r--r-- | macros/latex/contrib/l3packages/xparse.dtx | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx index 62ac19ff25..ac0ee03d3f 100644 --- a/macros/latex/contrib/l3packages/xparse.dtx +++ b/macros/latex/contrib/l3packages/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-08-16} % % \maketitle % @@ -1079,7 +1079,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2024-05-08}{} +\ProvidesExplPackage{xparse}{2024-08-16}{} {L3 Experimental document command parser} % \end{macrocode} % @@ -1436,13 +1436,30 @@ % % \begin{macro}{\@@_get_arg_spec:NTF} % If the command is not an \pkg{xparse} command, complain. If it is, -% its second \enquote{item} is the argument specification. +% its second \enquote{item} is the argument specification unless the +% command is optimised: in the latter case, we can reconstruct the +% spec. % \begin{macrocode} \cs_gset_protected:Npn \@@_get_arg_spec:NTF #1#2#3 { \__kernel_cmd_if_xparse:NTF #1 { - \tl_set:Ne \ArgumentSpecification { \tl_item:Nn #1 { 2 } } + \tl_set:Ne \ArgumentSpecification + { + \exp_args:No \tl_if_head_eq_meaning:nNTF {#1} \@@_start_optimized: + { + \prg_replicate:nn + { + \str_count:e + { + \exp_args:Nc \cs_parameter_spec:N + { \cs_to_str:N #1 \c_space_tl code } + } / 2 + } + { m } + } + { \tl_item:Nn #1 { 2 } } + } #2 } {#3} |