summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-03-05 01:01:48 +0000
committerKarl Berry <karl@freefriends.org>2020-03-05 01:01:48 +0000
commit5887a5eebe6eb65039f6e778d037d710d689a42d (patch)
tree22e48c9efc121c745c8074ae8c67c647ebb604ad /Master/texmf-dist/tex/latex
parentf8152bb4973cbd7164575615158c822d9e33f6d3 (diff)
l3 (4mar20)
git-svn-id: svn://tug.org/texlive/trunk@54099 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex268
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx16
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty13
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty131
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty2
9 files changed, 267 insertions, 171 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index f70cee03eb5..2a8cd31429e 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -67,7 +67,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-25}%
+\def\ExplFileDate{2020-03-03}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -928,6 +928,8 @@
\__kernel_primitive:NN \dviextension \tex_dviextension:D
\__kernel_primitive:NN \dvifeedback \tex_dvifeedback:D
\__kernel_primitive:NN \dvivariable \tex_dvivariable:D
+ \__kernel_primitive:NN \eTeXglueshrinkorder \tex_eTeXglueshrinkorder:D
+ \__kernel_primitive:NN \eTeXgluestretchorder \tex_eTeXgluestretchorder:D
\__kernel_primitive:NN \etoksapp \tex_etoksapp:D
\__kernel_primitive:NN \etokspre \tex_etokspre:D
\__kernel_primitive:NN \exceptionpenalty \tex_exceptionpenalty:D
@@ -1236,9 +1238,11 @@
\__kernel_primitive:NN \hfi \tex_hfi:D
\__kernel_primitive:NN \ifdbox \tex_ifdbox:D
\__kernel_primitive:NN \ifddir \tex_ifddir:D
+ \__kernel_primitive:NN \ifjfont \tex_ifjfont:D
\__kernel_primitive:NN \ifmbox \tex_ifmbox:D
\__kernel_primitive:NN \ifmdir \tex_ifmdir:D
\__kernel_primitive:NN \iftbox \tex_iftbox:D
+ \__kernel_primitive:NN \iftfont \tex_iftfont:D
\__kernel_primitive:NN \iftdir \tex_iftdir:D
\__kernel_primitive:NN \ifybox \tex_ifybox:D
\__kernel_primitive:NN \ifydir \tex_ifydir:D
@@ -1280,6 +1284,7 @@
\__kernel_primitive:NN \ybaselineshift \tex_ybaselineshift:D
\__kernel_primitive:NN \yoko \tex_yoko:D
\__kernel_primitive:NN \vfi \tex_vfi:D
+ \__kernel_primitive:NN \currentcjktoken \tex_currentcjktoken:D
\__kernel_primitive:NN \disablecjktoken \tex_disablecjktoken:D
\__kernel_primitive:NN \enablecjktoken \tex_enablecjktoken:D
\__kernel_primitive:NN \forcecjktoken \tex_forcecjktoken:D
@@ -8856,7 +8861,9 @@
{ \tl_to_str:n {#2} }
{ \char_generate:nn {#1} { 12 } }
}
-\cs_if_exist:NF \tex_Uchar:D
+\bool_lazy_or:nnF
+ { \cs_if_exist_p:N \tex_luatexversion:D }
+ { \cs_if_exist_p:N \tex_XeTeXversion:D }
{
\cs_set:Npn \__char_str_change_case:nN #1#2
{ \tl_to_str:n {#2} }
@@ -12523,147 +12530,159 @@
\muskip_new:N \g_tmpa_muskip
\muskip_new:N \g_tmpb_muskip
%% File: l3keys.dtx
-\tl_new:N \l__keyval_key_tl
-\tl_new:N \l__keyval_value_tl
-\tl_new:N \l__keyval_sanitise_tl
-\cs_new_protected:Npn \keyval_parse:NNn #1#2#3
- {
- \tl_set:Nn \l__keyval_sanitise_tl {#3}
- \__keyval_sanitise_equals:
- \__keyval_sanitise_comma:
- \exp_after:wN \__keyval_loop:NNw \exp_after:wN #1 \exp_after:wN #2
- \exp_after:wN \q_mark \l__keyval_sanitise_tl , \q_recursion_tail ,
- }
+\scan_new:N \s__keyval_nil
+\scan_new:N \s__keyval_mark
+\scan_new:N \s__keyval_stop
+\scan_new:N \s__keyval_tail
\group_begin:
- \char_set_catcode_active:n { `\= }
- \char_set_catcode_active:n { `\, }
- \cs_new_protected:Npn \__keyval_sanitise_equals:
+ \cs_set_protected:Npn \__keyval_tmp:NN #1#2
{
- \exp_after:wN \__keyval_sanitise_equals_auxi:w \l__keyval_sanitise_tl
- \q_mark = \q_nil =
- \exp_after:wN \__keyval_sanitise_aux:w \l__keyval_sanitise_tl
- }
- \cs_new_protected:Npn \__keyval_sanitise_equals_auxi:w #1 =
- {
- \tl_set:Nn \l__keyval_sanitise_tl {#1}
- \__keyval_sanitise_equals_auxii:w
- }
- \cs_new_protected:Npn \__keyval_sanitise_equals_auxii:w #1 =
- {
- \if_meaning:w \q_nil #1 \scan_stop:
- \else:
- \tl_set:Nx \l__keyval_sanitise_tl
+ \cs_new:Npn \keyval_parse:NNn ##1 ##2 ##3
+ {
+ \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark ##3 #1 \s__keyval_tail #1
+ }
+ \cs_new:Npn \__keyval_loop_active:NNw ##1 ##2 ##3 #1
+ {
+ \__keyval_if_recursion_tail:w ##3
+ \__keyval_end_loop_active:w \s__keyval_mark \s__keyval_tail
+ \__keyval_loop_other:NNw ##1 ##2 ##3 , \s__keyval_tail ,
+ \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark
+ }
+ \cs_new:Npn \__keyval_loop_other:NNw ##1 ##2 ##3 ,
+ {
+ \__keyval_if_recursion_tail:w ##3
+ \__keyval_end_loop_other:w \s__keyval_mark \s__keyval_tail
+ \__keyval_if_has_equal_other:w ##3 = \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
{
- \exp_not:o \l__keyval_sanitise_tl
- \token_to_str:N =
- \exp_not:n {#1}
+ \__keyval_if_has_equal_active:w ##3 #2 \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
+ \__keyval_misplaced_equal_error:
+ { \__keyval_split_other:w ##3 = \s__keyval_stop ##2 }
}
- \exp_after:wN \__keyval_sanitise_equals_auxii:w
- \fi:
- }
- \cs_new_protected:Npn \__keyval_sanitise_comma:
- {
- \exp_after:wN \__keyval_sanitise_comma_auxi:w \l__keyval_sanitise_tl
- \q_mark , \q_nil ,
- \exp_after:wN \__keyval_sanitise_aux:w \l__keyval_sanitise_tl
- }
- \cs_new_protected:Npn \__keyval_sanitise_comma_auxi:w #1 ,
- {
- \tl_set:Nn \l__keyval_sanitise_tl {#1}
- \__keyval_sanitise_comma_auxii:w
- }
- \cs_new_protected:Npn \__keyval_sanitise_comma_auxii:w #1 ,
- {
- \if_meaning:w \q_nil #1 \scan_stop:
- \else:
- \tl_set:Nx \l__keyval_sanitise_tl
{
- \exp_not:o \l__keyval_sanitise_tl
- \token_to_str:N ,
- \exp_not:n {#1}
+ \__keyval_if_has_equal_active:w ##3 #2 \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
+ { \__keyval_split_active:w ##3 #2 \s__keyval_stop ##2 }
+ {
+ \__keyval_if_blank:w ##3 \s__keyval_nil \s__keyval_stop
+ \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \use:n
+ { \__keyval_trim:nN { ##3 } \__keyval_key:nN ##1 }
+ }
}
- \exp_after:wN \__keyval_sanitise_comma_auxii:w
- \fi:
- }
+ \__keyval_loop_other:NNw ##1 ##2 \s__keyval_mark
+ }
+ \cs_new:Npn \__keyval_split_active:w ##1 #2
+ {
+ \__keyval_trim:nN { ##1 } \__keyval_split_active:nw \s__keyval_mark
+ }
+ \cs_new:Npn \__keyval_split_active:nw ##1 ##2 #2 ##3 \s__keyval_stop
+ {
+ \__keyval_if_empty:w \s__keyval_mark ##3 \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
+ { \__keyval_misplaced_equal_error: \use_none:n }
+ { \__keyval_trim:nN { ##2 } \__keyval_key_val:nnN { ##1 } }
+ }
+ \cs_new:Npn \__keyval_if_has_equal_active:w ##1 #2
+ {
+ \__keyval_if_empty:w \s__keyval_mark
+ }
+ }
+ \char_set_catcode_active:n { `\, }
+ \char_set_catcode_active:n { `\= }
+ \__keyval_tmp:NN , =
\group_end:
-\cs_new_protected:Npn \__keyval_sanitise_aux:w #1 \q_mark
- { \tl_set:Nn \l__keyval_sanitise_tl {#1} }
-\cs_new_protected:Npn \__keyval_loop:NNw #1#2#3 ,
+\cs_new:Npn \__keyval_end_loop_active:w
+ \s__keyval_mark \s__keyval_tail
+ \__keyval_loop_other:NNw #1 , \s__keyval_tail ,
+ \__keyval_loop_active:NNw #2 \s__keyval_mark
+ {}
+\cs_new:Npn \__keyval_end_loop_other:w
+ \s__keyval_mark \s__keyval_tail
+ \__keyval_if_has_equal_other:w #1 = \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
+ #2
+ \__keyval_loop_other:NNw #3 \s__keyval_mark
+ {}
+\cs_new:Npn \__keyval_split_other:w #1 =
{
- \exp_after:wN \if_meaning:w \exp_after:wN \q_recursion_tail
- \use_none:n #3 \prg_do_nothing:
- \else:
- \__keyval_split:NNw #1#2#3 == \q_stop
- \exp_after:wN \__keyval_loop:NNw \exp_after:wN #1 \exp_after:wN #2
- \exp_after:wN \q_mark
- \fi:
+ \__keyval_trim:nN { #1 } \__keyval_split_other:nw \s__keyval_mark
}
-\cs_new_protected:Npn \__keyval_split:NNw #1#2#3 =
+ \cs_new:Npn \__keyval_split_other:nw #1 #2 = #3 \s__keyval_stop
+ {
+ \__keyval_if_empty:w \s__keyval_mark #3 \s__keyval_stop
+ \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn
+ { \__keyval_misplaced_equal_error: \use_none:n }
+ { \__keyval_trim:nN { #2 } \__keyval_key_val:nnN { #1 } }
+ }
+\cs_new:Npn \__keyval_key:nN #1 #2
{
- \__keyval_def:Nn \l__keyval_key_tl {#3}
- \if_meaning:w \l__keyval_key_tl \c_empty_tl
- \exp_after:wN \__keyval_split_tidy:w
- \else:
- \exp_after:wN \__keyval_split_value:NNw
- \exp_after:wN #1
- \exp_after:wN #2
- \exp_after:wN \q_mark
- \fi:
+ \exp_not:n { #2 { #1 } }
}
-\cs_new_protected:Npn \__keyval_split_value:NNw #1#2#3 = #4 \q_stop
+\cs_new:Npn \__keyval_key_val:nnN #1 #2 #3
{
- \if:w \scan_stop: \tl_to_str:n {#4} \scan_stop:
- \cs_set:Npx \__keyval_action:
- { \exp_not:N #1 { \exp_not:o \l__keyval_key_tl } }
- \else:
- \if:w
- \scan_stop:
- \__kernel_tl_to_str:w \exp_after:wN { \use_none:n #4 }
- \scan_stop:
- \__keyval_def:Nn \l__keyval_value_tl {#3}
- \cs_set:Npx \__keyval_action:
- {
- \exp_not:N #2
- { \exp_not:o \l__keyval_key_tl }
- { \exp_not:o \l__keyval_value_tl }
- }
- \else:
- \cs_set:Npn \__keyval_action:
- {
- \__kernel_msg_error:nn { kernel }
- { misplaced-equals-sign }
- }
- \fi:
- \fi:
- \__keyval_action:
+ \__keyval_if_empty:w \s__keyval_mark #2 \s__keyval_stop
+ \__keyval_empty_key:w \s__keyval_mark \s__keyval_stop
+ \exp_not:n { #3 { #2 } { #1 } }
}
-\cs_new_protected:Npn \__keyval_split_tidy:w #1 \q_stop
+\cs_new:Npn \__keyval_if_empty:w #1 \s__keyval_mark \s__keyval_stop {}
+\cs_new:Npn \__keyval_if_blank:w \s__keyval_mark #1 { \__keyval_if_empty:w \s__keyval_mark }
+\cs_new:Npn \__keyval_if_recursion_tail:w #1 \s__keyval_mark \s__keyval_tail {}
+\cs_new:Npn \__keyval_has_false:w \s__keyval_mark \s__keyval_stop \use_i:nn #1 #2 { #2 }
+\cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \use:n #1 {}
+\cs_new:Npn \__keyval_empty_key:w \s__keyval_mark \s__keyval_stop \exp_not:n #1
{
- \if:w
- \scan_stop:
- \__kernel_tl_to_str:w \exp_after:wN { \use_none:n #1 }
- \scan_stop:
- \else:
- \exp_after:wN \__keyval_empty_key:
- \fi:
+ \__keyval_misplaced_equal_error:
}
-\cs_new:Npn \__keyval_action: { }
-\cs_new_protected:Npn \__keyval_empty_key:
- { \__kernel_msg_error:nn { kernel } { misplaced-equals-sign } }
-\cs_new_protected:Npn \__keyval_def:Nn #1#2
+\cs_new:Npn \__keyval_if_has_equal_other:w #1 =
{
- \tl_set:Nx #1
- { \tl_trim_spaces_apply:oN { \use_none:n #2 } \__keyval_def_aux:n }
+ \__keyval_if_empty:w \s__keyval_mark
}
-\cs_new:Npn \__keyval_def_aux:n #1
- { \__keyval_def_aux:w #1 \q_stop }
-\cs_new:Npn \__keyval_def_aux:w #1 \q_stop { \exp_not:n {#1} }
-\__kernel_msg_new:nnnn { kernel } { misplaced-equals-sign }
- { Misplaced~equals~sign~in~key-value~input~\msg_line_context: }
+\cs_new:Npn \__keyval_misplaced_equal_error:
{
- LaTeX~is~attempting~to~parse~some~key-value~input~but~found~
- two~equals~signs~not~separated~by~a~comma.
+ \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign }
}
+\__kernel_msg_new:nnn { kernel } { misplaced-equals-sign }
+ { Misplaced~equals~sign~in~key-value~input~\msg_line_context: }
+\group_begin:
+ \cs_set_protected:Npn \__keyval_tmp:n #1
+ {
+ \cs_new:Npn \__keyval_trim:nN ##1
+ {
+ \__keyval_trim_auxi:w
+ ##1
+ \s__keyval_nil
+ \s__keyval_mark #1 {}
+ \s__keyval_mark \__keyval_trim_auxii:w
+ \__keyval_trim_auxiii:w
+ #1 \s__keyval_nil
+ \__keyval_trim_auxiv:w
+ \s__keyval_stop
+ }
+ \cs_new:Npn \__keyval_trim_auxi:w ##1 \s__keyval_mark #1 ##2 \s__keyval_mark ##3
+ {
+ ##3
+ \__keyval_trim_auxi:w
+ \s__keyval_mark
+ ##2
+ \s__keyval_mark #1 {##1}
+ }
+ \cs_new:Npn \__keyval_trim_auxii:w \__keyval_trim_auxi:w \s__keyval_mark \s__keyval_mark ##1
+ {
+ \__keyval_trim_auxiii:w
+ ##1
+ }
+ \cs_new:Npn \__keyval_trim_auxiii:w ##1 #1 \s__keyval_nil ##2
+ {
+ ##2
+ ##1 \s__keyval_nil
+ \__keyval_trim_auxiii:w
+ }
+ \cs_new:Npn \__keyval_trim_auxiv:w \s__keyval_mark ##1 \s__keyval_nil ##2 \s__keyval_stop ##3
+ { ##3 { ##1 } }
+ }
+ \__keyval_tmp:n { ~ }
+\group_end:
\str_const:Nn \c__keys_code_root_str { key~code~>~ }
\str_const:Nn \c__keys_default_root_str { key~default~>~ }
\str_const:Nn \c__keys_groups_root_str { key~groups~>~ }
@@ -13590,7 +13609,6 @@
{
\exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n {#1}
/ \q_nil \q_stop
-
}
\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \q_stop
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 656b30eb931..e406ede95eb 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-25}%
+\def\ExplFileDate{2020-03-03}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 541df3b46eb..978a95d7f3f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-25}%
+\def\ExplFileDate{2020-03-03}%
\let\ExplLoaderFileDate\ExplFileDate
\everyjob\expandafter{\the\everyjob
\message{L3 programming layer <\ExplFileDate>}%
@@ -50,6 +50,9 @@
\expandafter\ifx\csname tex\string _let:D\endcsname\relax
\expandafter\endinput
\fi
+\ifdefined\@pushfilenameaux
+ \ExplSyntaxOn
+\fi
\cs_if_exist:NF \c__expl_def_ext_tl
{ \tl_const:Nn \c__expl_def_ext_tl { def } }
\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
@@ -76,7 +79,7 @@
\sys_load_debug:
\debug_on:n { log-functions }
} ,
- suppress-backend-headers .bool_set_inverse:N
+ suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
undo-recent-deprecations .code:n =
@@ -129,15 +132,18 @@
{ \ExplSyntaxOff }
{ \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop }
}
-\cs_new_protected:Npn \__expl_status_pop:w #1#2 \q_stop
+\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \q_stop
{
\tl_set:Nn \l__expl_status_stack_tl {#2}
\int_if_odd:nTF {#1}
{ \ExplSyntaxOn }
{ \ExplSyntaxOff }
}
-\tl_new:N \l__expl_status_stack_tl
-\tl_set:Nn \l__expl_status_stack_tl { 0 }
+\tl_if_exist:NF \l__expl_status_stack_tl
+ {
+ \tl_new:N \l__expl_status_stack_tl
+ \tl_set:Nn \l__expl_status_stack_tl { 0 }
+ }
\ExplSyntaxOff
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 0e730c8395e..50b2f0b478c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-25}%
+\def\ExplFileDate{2020-03-03}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
@@ -94,7 +94,7 @@
\sys_load_debug:
\debug_on:n { log-functions }
} ,
- suppress-backend-headers .bool_set_inverse:N
+ suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
undo-recent-deprecations .code:n =
@@ -149,15 +149,18 @@
{ \ExplSyntaxOff }
{ \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop }
}
-\cs_new_protected:Npn \__expl_status_pop:w #1#2 \q_stop
+\cs_gset_protected:Npn \__expl_status_pop:w #1#2 \q_stop
{
\tl_set:Nn \l__expl_status_stack_tl {#2}
\int_if_odd:nTF {#1}
{ \ExplSyntaxOn }
{ \ExplSyntaxOff }
}
-\tl_new:N \l__expl_status_stack_tl
-\tl_set:Nn \l__expl_status_stack_tl { 0 }
+\tl_if_exist:NF \l__expl_status_stack_tl
+ {
+ \tl_new:N \l__expl_status_stack_tl
+ \tl_set:Nn \l__expl_status_stack_tl { 0 }
+ }
\cs_gset_eq:NN \__kernel_sys_configuration_load:n
\__kernel_sys_configuration_load_std:n
%%
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index 9efae7c423e..61eba78735f 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}{2020-02-25}{}
+\ProvidesExplPackage{l3keys2e}{2020-03-03}{}
{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 47575d64cd9..3dec6878540 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}{2020-02-25}{}
+\ProvidesExplPackage{xfp}{2020-03-03}{}
{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 8cd79cadcb4..b7e157493c7 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}{2020-02-25}{}
+\ProvidesExplPackage{xfrac}{2020-03-03}{}
{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 38b099379ce..4965ed65475 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xparse}{2020-02-25}{}
+\ProvidesExplPackage{xparse}{2020-03-03}{}
{L3 Experimental document command parser}
\tl_new:N \l__xparse_arg_spec_tl
\tl_new:N \l__xparse_args_tl
@@ -503,8 +503,8 @@
\cs_new_protected:Npn \__xparse_normalize_type_D:w #1#2#3
{
\quark_if_recursion_tail_stop_do:nn {#3} { \__xparse_bad_arg_spec:wn }
- \__xparse_single_char_check:n {#1}
- \__xparse_single_char_check:n {#2}
+ \__xparse_single_token_check:n {#1} \__xparse_allowed_token_check:N #1
+ \__xparse_single_token_check:n {#2}
\__xparse_add_arg_spec:n { D #1 #2 {#3} }
\tl_put_right:Nn \l__xparse_last_delimiters_tl {#1}
\bool_set_false:N \l__xparse_grab_expandably_bool
@@ -514,7 +514,8 @@
{
\quark_if_recursion_tail_stop_do:nn {#2} { \__xparse_bad_arg_spec:wn }
\tl_if_blank:nT {#1} { \__xparse_bad_arg_spec:wn }
- \tl_map_function:nN {#1} \__xparse_single_char_check:n
+ \tl_map_function:nN {#1} \__xparse_single_token_check:n
+ \tl_map_function:nN {#1} \__xparse_allowed_token_check:N
\__xparse_normalize_E_unique_check:w #1 \q_nil \q_stop
\int_compare:nNnT { \tl_count:n {#2} } > { \tl_count:n {#1} }
{ \__xparse_bad_arg_spec:wn }
@@ -543,7 +544,7 @@
\cs_new_protected:Npn \__xparse_normalize_type_t:w #1
{
\quark_if_recursion_tail_stop_do:Nn #1 { \__xparse_bad_arg_spec:wn }
- \__xparse_single_char_check:n {#1}
+ \__xparse_single_token_check:n {#1} \__xparse_allowed_token_check:N #1
\tl_put_right:Nx \l__xparse_arg_spec_tl
{
\bool_if:NT \l__xparse_obey_spaces_bool { ! }
@@ -570,8 +571,8 @@
\cs_new_protected:Npn \__xparse_normalize_type_R:w #1#2#3
{
\quark_if_recursion_tail_stop_do:nn {#3} { \__xparse_bad_arg_spec:wn }
- \__xparse_single_char_check:n {#1}
- \__xparse_single_char_check:n {#2}
+ \__xparse_single_token_check:n {#1} \__xparse_allowed_token_check:N #1
+ \__xparse_single_token_check:n {#2}
\__xparse_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} }
\bool_set_false:N \l__xparse_grab_expandably_bool
\__xparse_add_arg_spec_mandatory:n { R #1 #2 {#3} }
@@ -607,23 +608,32 @@
{ \tl_to_str:n {#1} }
\__xparse_bad_def:wn
}
-\cs_new_protected:Npn \__xparse_single_char_check:n #1
+\cs_new_protected:Npn \__xparse_single_token_check:n #1
{
- \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nTF
+ \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nF
{
- \group_begin:
- \tex_escapechar:D = 92 \scan_stop:
- \exp_args:Nx \tl_if_single_token:nF
- { \exp_args:No \tl_to_str:n { \use:nn #1 { } } }
- {
- \__kernel_msg_warning:nnxx { xparse } { not-single-char }
- { \__xparse_environment_or_command: } { \tl_to_str:n {#1} }
- }
- \group_end:
+ \__kernel_msg_error:nnxx { xparse } { not-single-token }
+ { \__xparse_environment_or_command: } { \tl_to_str:n {#1} }
+ \__xparse_bad_def:wn
}
+ }
+\cs_new_protected:Npn \__xparse_allowed_token_check:N #1
+ {
+ \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+ { \use:n }
+ {
+ \token_if_eq_meaning:NNTF #1 \c_group_end_token
+ { \use:n }
+ { \use_none:n }
+ }
{
- \__kernel_msg_error:nnxx { xparse } { not-single-char }
+ \__kernel_msg_error:nnxxx
+ { xparse } { forbidden-implicit-group-token }
{ \__xparse_environment_or_command: } { \tl_to_str:n {#1} }
+ {
+ \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+ { begin } { end }
+ }
\__xparse_bad_def:wn
}
}
@@ -1055,12 +1065,12 @@
\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
+ \__xparse_peek_meaning_remove:NTF
}
\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
+ \__xparse_peek_meaning_remove:NTF
}
\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNN #1#2#3#4#5
{
@@ -1134,8 +1144,15 @@
\l__xparse_fn_tl \char_generate:nn { `#1 } { 11 }
}
{
- \exp_after:wN \l__xparse_fn_tl
- \token_to_str:N #1
+ \__xparse_token_if_cs:NTF #1
+ {
+ \exp_after:wN \l__xparse_fn_tl
+ \cs:w \cs_to_str:N #1 ~ \cs_end:
+ }
+ {
+ \exp_after:wN \l__xparse_fn_tl
+ \token_to_str:N #1
+ }
}
}
\cs_new_protected:Npn \__xparse_grab_E:w #1#2 \__xparse_run_code:
@@ -1154,13 +1171,13 @@
{
\__xparse_grab_E:nnNN {#1} {#2}
\cs_set_protected_nopar:Npn
- \peek_meaning_remove:NTF
+ \__xparse_peek_meaning_remove:NTF
}
\cs_new_protected:Npn \__xparse_grab_E_long_obey_spaces:w #1#2 \__xparse_run_code:
{
\__xparse_grab_E:nnNN {#1} {#2}
\cs_set_protected:Npn
- \peek_meaning_remove:NTF
+ \__xparse_peek_meaning_remove:NTF
}
\cs_new_protected:Npn \__xparse_grab_E:nnNN #1#2#3#4
{
@@ -1327,7 +1344,7 @@
\cs_new_protected:Npn \__xparse_grab_t: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 }
+ { \__xparse_grab_t_aux:NNw \__xparse_peek_meaning_remove:NTF }
\cs_new_protected:Npn \__xparse_grab_t_aux:NNw #1#2#3 \__xparse_run_code:
{
\tl_set:Nn \l__xparse_signature_tl {#3}
@@ -1878,6 +1895,15 @@
}
}
\group_end:
+\cs_new_protected:Npn \__xparse_token_if_cs:NTF #1
+ {
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \exp_args:Nx \tl_if_empty:nTF
+ { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+ { \group_end: \use_ii:nn }
+ { \group_end: \use_i:nn }
+ }
\cs_new:Npn \__xparse_tl_mapthread_function:NNN #1#2#3
{
\exp_after:wN \exp_after:wN
@@ -1922,15 +1948,51 @@
}
\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 }
+ { \__xparse_peek_nonspace_aux:nNNTF { } \__xparse_peek_meaning:NTF }
\cs_new_protected:Npn \__xparse_peek_nonspace_remove:NTF
- { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning_remove:NTF }
+ { \__xparse_peek_nonspace_aux:nNNTF { } \__xparse_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 } }
}
+\cs_new_protected:Npn \__xparse_peek_meaning:NTF
+ { \__xparse_peek_meaning_aux:NNTF \c_false_bool }
+\cs_new_protected:Npn \__xparse_peek_meaning_remove:NTF
+ { \__xparse_peek_meaning_aux:NNTF \c_true_bool }
+\cs_new_protected:Npn \__xparse_peek_meaning_aux:NNTF #1#2#3#4
+ {
+ \tl_set:Nn \l__xparse_tmpa_tl {#3}
+ \tl_set:Nn \l__xparse_tmpb_tl {#4}
+ \peek_meaning:NTF #2
+ {
+ \token_if_eq_meaning:NNTF #2 \c_group_begin_token
+ { \__xparse_peek_true_remove:Nw #1 }
+ {
+ \__xparse_token_if_cs:NTF #2
+ { \__xparse_peek_cs_check_equal:NNN #1 #2 }
+ { \__xparse_peek_true_remove:Nw #1 }
+ }
+ }
+ { \l__xparse_tmpb_tl }
+ }
+\cs_new_protected:Npn \__xparse_peek_cs_check_equal:NNN #1#2#3
+ {
+ \str_if_eq:nnTF {#2} {#3}
+ { \__xparse_peek_true_remove:Nw #1 }
+ { \l__xparse_tmpb_tl }
+ #3
+ }
+\cs_new_protected:Npn \__xparse_peek_true_remove:Nw #1
+ {
+ \bool_if:NTF #1
+ {
+ \tex_afterassignment:D \l__xparse_tmpa_tl
+ \cs_set_eq:NN \__xparse_tmp:w
+ }
+ { \l__xparse_tmpa_tl }
+ }
\cs_new:Npn \__xparse_environment_or_command:
{
\bool_if:NTF \l__xparse_environment_bool
@@ -2049,14 +2111,21 @@
token.~Perhaps~a~backslash~is~missing?
\c__xparse_ignore_def_tl
}
-\__kernel_msg_new:nnnn { xparse } { not-single-char }
+\__kernel_msg_new:nnnn { xparse } { not-single-token }
{
Argument~delimiter~'#2'~for~the~#1~should~be~
- a~single~character.
+ a~single~non-space~token.
}
{
The~argument~specification~provided~was~not~valid:~in~a~place~
- where~a~single~character~is~required,~LaTeX~found~'#2'.
+ where~a~single~token~is~required,~LaTeX~found~'#2'.
+ \c__xparse_ignore_def_tl
+ }
+\__kernel_msg_new:nnnn { xparse } { forbidden-implicit-group-token }
+ { Argument~delimiter~'#2'~for~the~#1~is~not~allowed. }
+ {
+ The~argument~specification~provided~was~not~valid:~the~implicit~
+ #3-group~token~'#2'~is~not~allowed~as~an~argument~delimiter.
\c__xparse_ignore_def_tl
}
\__kernel_msg_new:nnnn { xparse } { processor-in-expandable }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index f2a76f35ec2..539568fc4a7 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xtemplate}{2020-02-25}{}
+\ProvidesExplPackage{xtemplate}{2020-03-03}{}
{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~>~ }