summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty')
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty73
1 files changed, 63 insertions, 10 deletions
diff --git a/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty b/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty
index a5204eeef15..18e704e88cd 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 1876 2010-03-27 07:20:51Z joseph $
+\GetIdInfo$Id: xparse.dtx 1897 2010-04-26 05:56:56Z joseph $
{Generic document command parser}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -654,16 +654,60 @@
\tl_to_str:n {#1}
}
}
-\cs_new:Npn \xparse_process_comma_split:n #1 {
- \tl_if_in:nnTF {#1} { , } {
- \xparse_process_comma_split_aux:w #1 \q_stop
- }{
- \tl_set:Nn \ProcessedArgument { {#1} { \NoValue } }
- }
-}
-\cs_new:Npn \xparse_process_comma_split_aux:w #1 , #2 \q_stop {
- \tl_set:Nn \ProcessedArgument { {#1} {#2} }
+\cs_new_protected:Npn \_xparse_bool_reverse:N #1 {
+ \bool_if:NTF #1
+ { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+ { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
}
+\tl_new:N \_l_xparse_split_argument_tl
+\group_begin:
+ \char_make_active:N \@
+ \cs_gset_protected:Npn \_xparse_split_argument:nnn #1#2#3
+ {
+ \tl_set:Nn \_l_xparse_split_argument_tl {#3}
+ \group_begin:
+ \char_set_lccode:nn { `\@ } { `#2}
+ \tl_to_lowercase:n
+ {
+ \group_end:
+ \tl_replace_all_in:Nnn \_l_xparse_split_argument_tl { @ } {#2}
+ }
+ \cs_set_protected:Npn \_xparse_split_argument_aux_i:w
+ ##1 \q_nil ##2 #2 ##3 \q_stop
+ {
+ \tl_put_right:Nn \ProcessedArgument { {##2} }
+ ##1 \q_nil ##3 \q_stop
+ }
+ \cs_set_protected:Npn \_xparse_split_argument_aux_iii:w
+ ##1 #2 ##2 \q_stop
+ {
+ \IfNoValueF {##1}
+ {
+ \msg_kernel_error:nnxxx { xparse } { split-excess-tokens }
+ { \exp_not:n {#2} } {#1} { \exp_not:n {#3} }
+ }
+ }
+ \tl_set:Nx \_l_xparse_tmp_tl
+ {
+ \prg_replicate:nn { #1 + 1 }
+ { \_xparse_split_argument_aux_i:w }
+ \_xparse_split_argument_aux_ii:w
+ \exp_not:N \q_nil
+ \exp_not:V \_l_xparse_split_argument_tl
+ \prg_replicate:nn {#1} { \exp_not:n {#2} \NoValue }
+ \exp_not:n { #2 \q_stop }
+ }
+ \_l_xparse_tmp_tl
+ }
+\group_end:
+\cs_set_protected:Npn \_xparse_split_argument_aux_i:w { }
+\cs_set_protected:Npn \_xparse_split_argument_aux_ii:w
+ #1 \q_nil #2 \q_stop
+ {
+ \tl_if_empty:nF {#2}
+ { \_xparse_split_argument_aux_iii:w #2 \q_stop }
+ }
+\cs_set_protected:Npn \_xparse_split_argument_aux_iii:w { }
\cs_new:Npn \xparse_exp_add_type_d:w #1#2 {
\xparse_exp_add_type_D:w #1 #2 { \NoValue }
}
@@ -938,6 +982,13 @@
Argument~specification~'#1'~contains~a~processor~function:\\
this~is~only~supported~for~standard~robust~functions.
}
+\msg_kernel_set:nnnn { xparse } { split-excess-tokens }
+ { Too~many~'#1'~tokens~when~trying~to~split~argument. }
+ {
+ LaTeX~was~asked~to~split~the~input~'#3'\\
+ at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~tokens.\\
+ There~were~too~many~'#1'~tokens.
+ }
\msg_kernel_new:nnnn { xparse } { unknown-argument-type }
{ Unknown~argument~type~'#1'~replaced~by~'m'.~Fingers~crossed~... }
{
@@ -1036,6 +1087,8 @@
}
\cs_new_protected:Npn \NoValue { -NoValue- }
\cs_new:Npn \ProcessedArgument { }
+\cs_new_eq:NN \ReverseBoolean \_xparse_bool_reverse:N
+\cs_new_eq:NN \SplitArgument \_xparse_split_argument:nnn
\endinput
%%
%% End of file `xparse.sty'.