[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: Update l3kernel to 2020-05-05 (65ba9184)
Joseph Wright
joseph.wright at morningstar2.co.uk
Tue May 5 12:14:59 CEST 2020
Repository : https://github.com/latex3/latex2e
On branch : develop
Link : https://github.com/latex3/latex2e/commit/65ba9184309096707855f6c7344caa19547cd396
>---------------------------------------------------------------
commit 65ba9184309096707855f6c7344caa19547cd396
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Tue May 5 11:14:25 2020 +0100
Update l3kernel to 2020-05-05
>---------------------------------------------------------------
65ba9184309096707855f6c7344caa19547cd396
texmf/tex/latex/l3kernel/expl3-code.tex | 654 +++++++++++++++++++++++++++--
texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +-
texmf/tex/latex/l3kernel/expl3.ltx | 2 +-
texmf/tex/latex/l3kernel/expl3.sty | 2 +-
4 files changed, 625 insertions(+), 35 deletions(-)
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index 2a8cd314..7c496cc6 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -50,6 +50,7 @@
%% l3unicode.dtx (with options: `package')
%% l3text.dtx (with options: `package')
%% l3text-case.dtx (with options: `package')
+%% l3text-purify.dtx (with options: `package')
%% l3candidates.dtx (with options: `package')
%% l3legacy.dtx (with options: `package')
%% l3deprecation.dtx (with options: `package,kernel')
@@ -67,7 +68,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-03-03}%
+\def\ExplFileDate{2020-05-05}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -5924,9 +5925,11 @@
}
{
\group_begin:
- \cs_set_eq:NN \__seq_item:n \__seq_shuffle_item:n
\int_zero:N \l__seq_internal_a_int
+ \__seq_push_item_def:
+ \cs_gset_eq:NN \__seq_item:n \__seq_shuffle_item:n
#2
+ \__seq_pop_item_def:
\seq_gset_from_inline_x:Nnn \g__seq_internal_seq
{ \int_step_function:nN { \l__seq_internal_a_int } }
{ \tex_the:D \tex_toks:D ##1 }
@@ -15361,7 +15364,7 @@
}
\cs_new:Npn \__fp_parse_exponent:N #1
{
- \if:w e \exp_not:N #1
+ \if:w e \if:w E \exp_not:N #1 e \else: \exp_not:N #1 \fi:
\exp_after:wN \__fp_parse_exponent_aux:N
\exp:w
\else:
@@ -28234,6 +28237,8 @@
}
\cs_generate_variant:Nn \text_declare_expand_equivalent:Nn { c }
%% File: l3text-case.dtx
+\bool_new:N \l_text_titlecase_check_letter_bool
+\bool_set_true:N \l_text_titlecase_check_letter_bool
\cs_new:Npn \text_lowercase:n #1
{ \__text_change_case:nnn { lower } { } {#1} }
\cs_new:Npn \text_uppercase:n #1
@@ -28522,17 +28527,21 @@
}
\cs_new:Npx \__text_change_case_char_title:nnN #1#2#3
{
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- { \exp_not:N \token_if_letter:NTF #3 }
+ \exp_not:N \bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \exp_not:N \bool_lazy_or:nnTF
- { \exp_not:N \token_if_letter_p:N #3 }
- { \exp_not:N \token_if_active_p:N #3 }
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ { \exp_not:N \token_if_letter:NTF #3 }
+ {
+ \exp_not:N \bool_lazy_or:nnTF
+ { \exp_not:N \token_if_letter_p:N #3 }
+ { \exp_not:N \token_if_active_p:N #3 }
+ }
+ { \exp_not:N \use:c { __text_change_case_char_ #1 :nN } }
+ { \exp_not:N \__text_change_case_char_title:nnnN { title } {#1} }
}
{ \exp_not:N \use:c { __text_change_case_char_ #1 :nN } }
- { \exp_not:N \__text_change_case_char_title:nnnN { title } {#1} }
{#2} #3
}
\cs_new_eq:NN \__text_change_case_char_titleonly:nnN
@@ -28550,19 +28559,23 @@
}
{#1} {#2} {#3} #4
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\cs_new:Npn \__text_change_case_char:nnnN #1#2#3#4
{
- \cs_new:Npn \__text_change_case_char:nnnN #1#2#3#4
+ \token_if_active:NTF #4
+ { \__text_change_case_store:n {#4} }
{
\__text_change_case_store:e
{ \use:c { char_ #1 case :N } #4 }
- \use:c { __text_change_case_char_next_ #2 :nn } {#2} {#3}
}
+ \use:c { __text_change_case_char_next_ #2 :nn } {#2} {#3}
}
+\bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
{
- \cs_new:Npn \__text_change_case_char:nnnN #1#2#3#4
+ \cs_new_eq:NN \__text_change_case_char_aux:nnnN
+ \__text_change_case_char:nnnN
+ \cs_gset:Npn \__text_change_case_char:nnnN #1#2#3#4
{
\int_compare:nNnTF { `#4 } > { "80 }
{
@@ -28575,10 +28588,7 @@
}
{#1} {#2} {#3} #4
}
- {
- \__text_change_case_store:e{ \use:c { char_ #1 case :N } #4 }
- \use:c { __text_change_case_char_next_ #2 :nn } {#2} {#3}
- }
+ { \__text_change_case_char_aux:nnnN {#1} {#2} {#3} #4 }
}
\cs_new:Npn \__text_change_case_char_UTFviii:nnnNN #1#2#3#4#5
{ \__text_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5} }
@@ -28921,7 +28931,7 @@
\cs_new:Npn \__text_change_case_lower_tr:nnNw #1#2#3#4 \q_recursion_stop
{
\tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_lower_tr:nnN }
+ { \__text_change_case_lower_tr:NnnN #3 }
{
\__text_change_case_store:e
{ \char_generate:nn { "0131 } { \__text_char_catcode:N #3 } }
@@ -28929,20 +28939,20 @@
}
{#1} {#2} #4 \q_recursion_stop
}
- \cs_new:Npn \__text_change_case_lower_tr:nnN #1#2#3
+ \cs_new:Npn \__text_change_case_lower_tr:NnnN #1#2#3#4
{
\bool_lazy_or:nnTF
- { \token_if_cs_p:N #3 }
- { ! \int_compare_p:nNn { `#3 } = { "0307 } }
+ { \token_if_cs_p:N #4 }
+ { ! \int_compare_p:nNn { `#4 } = { "0307 } }
{
\__text_change_case_store:e
- { \char_generate:nn { "0131 } { \__text_char_catcode:N #3 } }
- \__text_change_case_loop:nnw {#1} {#2} #3
+ { \char_generate:nn { "0131 } { \__text_char_catcode:N #1 } }
+ \__text_change_case_loop:nnw {#2} {#3} #4
}
{
\__text_change_case_store:e
- { \char_generate:nn { "0069 } { \__text_char_catcode:N #3 } }
- \__text_change_case_loop:nnw {#1} {#2}
+ { \char_generate:nn { "0069 } { \__text_char_catcode:N #1 } }
+ \__text_change_case_loop:nnw {#2} {#3}
}
}
}
@@ -29347,6 +29357,586 @@
\group_end:
}
}
+%% File: l3text-purify.dtx
+\cs_new:Npn \text_purify:n #1
+ {
+ \group_align_safe_begin:
+ \exp_args:Ne \__text_purify:n
+ { \text_expand:n {#1} }
+ \group_align_safe_end:
+ }
+\cs_new:Npn \__text_purify:n #1
+ { \__text_purify_loop:w #1 \q_recursion_tail \q_recursion_stop }
+\cs_new:Npn \__text_purify_loop:w #1 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#1}
+ { \__text_purify_N_type:N }
+ {
+ \tl_if_head_is_group:nTF {#1}
+ { \__text_purify_group:n }
+ { \__text_purify_space:w }
+ }
+ #1 \q_recursion_stop
+ }
+\cs_new:Npn \__text_purify_group:n #1 { \__text_purify_loop:w #1 }
+\exp_last_unbraced:NNo \cs_new:Npn \__text_purify_space:w \c_space_tl
+ {
+ \c_space_tl
+ \__text_purify_loop:w
+ }
+\cs_new:Npn \__text_purify_N_type:N #1
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \__text_purify_N_type_aux:N #1
+ }
+\cs_new:Npn \__text_purify_N_type_aux:N #1
+ {
+ \exp_after:wN \__text_purify_math_search:NNN
+ \exp_after:wN #1 \l_text_math_delims_tl
+ \q_recursion_tail ?
+ \q_recursion_stop
+ }
+\cs_new:Npn \__text_purify_math_search:NNN #1#2#3
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+ { \__text_purify_math_cmd:N #1 }
+ \token_if_eq_meaning:NNTF #1 #2
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ { \__text_purify_math_start:NNw #2 #3 }
+ }
+ { \__text_purify_math_search:NNN #1 }
+ }
+\cs_new:Npn \__text_purify_math_start:NNw #1#2#3 \q_recursion_stop
+ {
+ \__text_purify_math_loop:NNw #1#2#3 \q_recursion_stop
+ \__text_purify_math_result:n { }
+ }
+\cs_new:Npn \__text_purify_math_store:n #1
+ { \__text_purify_math_store:nw {#1} }
+\cs_new:Npn \__text_purify_math_store:nw #1#2 \__text_purify_math_result:n #3
+ { #2 \__text_purify_math_result:n { #3 #1 } }
+\cs_new:Npn \__text_purify_math_end:w #1 \__text_purify_math_result:n #2
+ {
+ \exp_not:n { $ #2 $ }
+ \__text_purify_loop:w #1
+ }
+\cs_new:Npn \__text_purify_math_stop:Nw #1 \__text_purify_math_result:n #2
+ { \exp_not:n {#1#2} }
+\cs_new:Npn \__text_purify_math_loop:NNw #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \__text_purify_math_N_type:NNN }
+ {
+ \tl_if_head_is_group:nTF {#3}
+ { \__text_purify_math_group:NNn }
+ { \__text_purify_math_space:NNw }
+ }
+ #1#2#3 \q_recursion_stop
+ }
+\cs_new:Npn \__text_purify_math_N_type:NNN #1#2#3
+ {
+ \quark_if_recursion_tail_stop_do:Nn #3
+ { \__text_purify_math_stop:Nw #1 }
+ \token_if_eq_meaning:NNTF #3 #2
+ { \__text_purify_math_end:w }
+ {
+ \__text_purify_math_store:n {#3}
+ \__text_purify_math_loop:NNw #1#2
+ }
+ }
+\cs_new:Npn \__text_purify_math_group:NNn #1#2#3
+ {
+ \__text_purify_math_store:n { {#3} }
+ \__text_purify_math_loop:NNw #1#2
+ }
+\exp_after:wN \cs_new:Npn \exp_after:wN \__text_purify_math_space:NNw
+ \exp_after:wN # \exp_after:wN 1
+ \exp_after:wN # \exp_after:wN 2 \c_space_tl
+ {
+ \__text_purify_math_store:n { ~ }
+ \__text_purify_math_loop:NNw #1#2
+ }
+\cs_new:Npn \__text_purify_math_cmd:N #1
+ {
+ \exp_after:wN \__text_purify_math_cmd:NN \exp_after:wN #1
+ \l_text_math_arg_tl \q_recursion_tail \q_recursion_stop
+ }
+\cs_new:Npn \__text_purify_math_cmd:NN #1#2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+ { \__text_purify_replace:N #1 }
+ \cs_if_eq:NNTF #2 #1
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ { \__text_purify_math_cmd:n }
+ }
+ { \__text_purify_math_cmd:NN #1 }
+ }
+\cs_new:Npn \__text_purify_math_cmd:n #1
+ { \__text_purify_math_end:w \__text_purify_math_result:n {#1} }
+\cs_new:Npn \__text_purify_replace:N #1
+ {
+ \bool_lazy_and:nnTF
+ { \cs_if_exist_p:c { l__text_purify_ \token_to_str:N #1 _tl } }
+ {
+ \bool_lazy_or_p:nn
+ { \token_if_cs_p:N #1 }
+ { \token_if_active_p:N #1 }
+ }
+ {
+ \exp_args:Nv \__text_purify_replace:n
+ { l__text_purify_ \token_to_str:N #1 _tl }
+ }
+ {
+ \token_if_cs:NTF #1
+ { \__text_purify_expand:N #1 }
+ {
+ \__text_token_to_explicit:N #1
+ \__text_purify_loop:w
+ }
+ }
+ }
+\cs_new:Npn \__text_purify_replace:n #1 { \__text_purify_loop:w #1 }
+\cs_new:Npn \__text_purify_expand:N #1
+ {
+ \str_if_eq:nnTF {#1} { \protect }
+ { \__text_purify_protect:N }
+ {
+ \__text_if_expandable:NTF #1
+ { \exp_after:wN \__text_purify_loop:w #1 }
+ { \__text_purify_loop:w }
+ }
+ }
+\cs_new:Npn \__text_purify_protect:N #1
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \__text_purify_loop:w
+ }
+\cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2
+ {
+ \tl_clear_new:c { l__text_purify_ \token_to_str:N #1 _tl }
+ \tl_set:cn { l__text_purify_ \token_to_str:N #1 _tl } {#2}
+ }
+\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx }
+\tl_map_inline:nn
+ {
+ \fontencoding
+ \fontfamily
+ \fontseries
+ \fontshape
+ }
+ { \text_declare_purify_equivalent:Nn #1 { \use_none:n } }
+\text_declare_purify_equivalent:Nn \fontsize { \use_none:nn }
+\text_declare_purify_equivalent:Nn \selectfont { }
+\text_declare_purify_equivalent:Nn \usefont { \use_none:nnnn }
+\tl_map_inline:nn
+ {
+ \emph
+ \text
+ \textnormal
+ \textrm
+ \textsf
+ \texttt
+ \textbf
+ \textmd
+ \textit
+ \textsl
+ \textup
+ \textsc
+ \textulc
+ }
+ { \text_declare_purify_equivalent:Nn #1 { \use:n } }
+\tl_map_inline:nn
+ {
+ \normalfont
+ \rmfamily
+ \sffamily
+ \ttfamily
+ \bfseries
+ \mdseries
+ \itshape
+ \scshape
+ \slshape
+ \upshape
+ \em
+ \Huge
+ \LARGE
+ \Large
+ \footnotesize
+ \huge
+ \large
+ \normalsize
+ \scriptsize
+ \small
+ \tiny
+ }
+ { \text_declare_purify_equivalent:Nn #1 { } }
+\text_declare_purify_equivalent:Nn \begin { \use:c }
+\text_declare_purify_equivalent:Nn \end { \use:c }
+\text_declare_purify_equivalent:Nn \\ { }
+\tl_map_inline:nn
+ { \{ \} \# \$ \% \_ }
+ { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } }
+\text_declare_purify_equivalent:Nn \label { \use_none:n }
+\group_begin:
+\char_set_catcode_active:N \~
+\use:n
+ {
+ \group_end:
+ \text_declare_purify_equivalent:Nx ~ { \c_space_tl }
+ }
+\text_declare_purify_equivalent:Nn \nobreakspace { ~ }
+\text_declare_purify_equivalent:Nn \ { ~ }
+\text_declare_purify_equivalent:Nn \, { ~ }
+\bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_set_protected:Npn \__text_loop:Nn #1#2
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \text_declare_purify_equivalent:Nx #1
+ {
+ \char_generate:nn { "#2 }
+ { \char_value_catcode:n { "#2 } }
+ }
+ \__text_loop:Nn
+ }
+ }
+ {
+ \cs_set_protected:Npn \__text_loop:Nn #1#2
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \text_declare_purify_equivalent:Nx #1
+ {
+ \exp_args:Ne \__text_tmp:n
+ { \char_to_utfviii_bytes:n { "#2 } }
+ }
+ \__text_loop:Nn
+ }
+ \cs_set:Npn \__text_tmp:n #1 { \__text_tmp:nnnn #1 }
+ \cs_set:Npn \__text_tmp:nnnn #1#2#3#4
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#1} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#2} { 13 }
+ }
+ }
+\__text_loop:Nn
+ \AA { 00C5 }
+ \AE { 00C6 }
+ \DH { 00D0 }
+ \DJ { 0110 }
+ \IJ { 0132 }
+ \L { 0141 }
+ \NG { 014A }
+ \O { 00D8 }
+ \OE { 0152 }
+ \TH { 00DE }
+ \aa { 00E5 }
+ \ae { 00E6 }
+ \dh { 00F0 }
+ \dj { 0111 }
+ \i { 0131 }
+ \j { 0237 }
+ \ij { 0132 }
+ \l { 0142 }
+ \ng { 014B }
+ \o { 00F8 }
+ \oe { 0153 }
+ \ss { 00DF }
+ \th { 00FE }
+ \q_recursion_tail ?
+ \q_recursion_stop
+\text_declare_purify_equivalent:Nn \SS { SS }
+\cs_new:Npn \__text_purify_accent:NN #1#2
+ {
+ \cs_if_exist:cTF
+ { c__text_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
+ {
+ \exp_not:v
+ { c__text_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
+ }
+ {
+ \exp_not:n {#2}
+ \exp_not:v { c__text_purify_ \token_to_str:N #1 _tl }
+ }
+ }
+\tl_map_inline:Nn \l_text_accents_tl
+ { \text_declare_purify_equivalent:Nn #1 { \__text_purify_accent:NN #1 } }
+\group_begin:
+ \cs_set_protected:Npn \__text_loop:Nn #1#2
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \tl_const:cx { c__text_purify_ \token_to_str:N #1 _tl }
+ { \__text_tmp:n {#2} }
+ \__text_loop:Nn
+ }
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_set:Npn \__text_tmp:n #1
+ {
+ \char_generate:nn { "#1 }
+ { \char_value_catcode:n { "#1 } }
+ }
+ }
+ {
+ \cs_set:Npn \__text_tmp:n #1
+ {
+ \exp_args:Ne \__text_tmp_aux:n
+ { \char_to_utfviii_bytes:n { "#1 } }
+ }
+ \cs_set:Npn \__text_tmp_aux:n #1 { \__text_tmp:nnnn #1 }
+ \cs_set:Npn \__text_tmp:nnnn #1#2#3#4
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#1} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#2} { 13 }
+ }
+ }
+ \__text_loop:Nn
+ \` { 0300 }
+ \' { 0301 }
+ \^ { 0302 }
+ \~ { 0303 }
+ \= { 0304 }
+ \u { 0306 }
+ \. { 0307 }
+ \" { 0308 }
+ \r { 030A }
+ \H { 030B }
+ \v { 030C }
+ \d { 0323 }
+ \c { 0327 }
+ \k { 0328 }
+ \b { 0331 }
+ \t { 0361 }
+ \q_recursion_tail { }
+ \q_recursion_stop
+ \cs_set_protected:Npn \__text_loop:NNn #1#2#3
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \tl_const:cx
+ { c__text_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
+ { \__text_tmp:n {#3} }
+ \__text_loop:NNn
+ }
+ \__text_loop:NNn
+ \` A { 00C0 }
+ \' A { 00C1 }
+ \^ A { 00C2 }
+ \~ A { 00C3 }
+ \" A { 00C4 }
+ \r A { 00C5 }
+ \c C { 00C7 }
+ \` E { 00C8 }
+ \' E { 00C9 }
+ \^ E { 00CA }
+ \" E { 00CB }
+ \` I { 00CC }
+ \' I { 00CD }
+ \^ I { 00CE }
+ \" I { 00CF }
+ \~ N { 00D1 }
+ \` O { 00D2 }
+ \' O { 00D3 }
+ \^ O { 00D4 }
+ \~ O { 00D5 }
+ \" O { 00D6 }
+ \` U { 00D9 }
+ \' U { 00DA }
+ \^ U { 00DB }
+ \" U { 00DC }
+ \' Y { 00DD }
+ \` a { 00E0 }
+ \' a { 00E1 }
+ \^ a { 00E2 }
+ \~ a { 00E3 }
+ \" a { 00E4 }
+ \r a { 00E5 }
+ \c c { 00E7 }
+ \` e { 00E8 }
+ \' e { 00E9 }
+ \^ e { 00EA }
+ \" e { 00EB }
+ \` i { 00EC }
+ \` \i { 00EC }
+ \' i { 00ED }
+ \' \i { 00ED }
+ \^ i { 00EE }
+ \^ \i { 00EE }
+ \" i { 00EF }
+ \" \i { 00EF }
+ \~ n { 00F1 }
+ \` o { 00F2 }
+ \' o { 00F3 }
+ \^ o { 00F4 }
+ \~ o { 00F5 }
+ \" o { 00F6 }
+ \` u { 00F9 }
+ \' u { 00FA }
+ \^ u { 00FB }
+ \" u { 00FC }
+ \' y { 00FD }
+ \" y { 00FF }
+ \= A { 0100 }
+ \= a { 0101 }
+ \u A { 0102 }
+ \u a { 0103 }
+ \k A { 0104 }
+ \k a { 0105 }
+ \' C { 0106 }
+ \' c { 0107 }
+ \^ C { 0108 }
+ \^ c { 0109 }
+ \. C { 010A }
+ \. c { 010B }
+ \v C { 010C }
+ \v c { 010D }
+ \v D { 010E }
+ \v d { 010F }
+ \= E { 0112 }
+ \= e { 0113 }
+ \u E { 0114 }
+ \u e { 0115 }
+ \. E { 0116 }
+ \. e { 0117 }
+ \k E { 0118 }
+ \k e { 0119 }
+ \v E { 011A }
+ \v e { 011B }
+ \^ G { 011C }
+ \^ g { 011D }
+ \u G { 011E }
+ \u g { 011F }
+ \. G { 0120 }
+ \. g { 0121 }
+ \c G { 0122 }
+ \c g { 0123 }
+ \^ H { 0124 }
+ \^ h { 0125 }
+ \~ I { 0128 }
+ \~ i { 0129 }
+ \~ \i { 0129 }
+ \= I { 012A }
+ \= i { 012B }
+ \= \i { 012B }
+ \u I { 012C }
+ \u i { 012D }
+ \u \i { 012D }
+ \k I { 012E }
+ \k i { 012F }
+ \k \i { 012F }
+ \. I { 0130 }
+ \^ J { 0134 }
+ \^ j { 0135 }
+ \^ \j { 0135 }
+ \c K { 0136 }
+ \c k { 0137 }
+ \' L { 0139 }
+ \' l { 013A }
+ \c L { 013B }
+ \c l { 013C }
+ \v L { 013D }
+ \v l { 013E }
+ \. L { 013F }
+ \. l { 0140 }
+ \' N { 0143 }
+ \' n { 0144 }
+ \c N { 0145 }
+ \c n { 0146 }
+ \v N { 0147 }
+ \v n { 0148 }
+ \= O { 014C }
+ \= o { 014D }
+ \u O { 014E }
+ \u o { 014F }
+ \H O { 0150 }
+ \H o { 0151 }
+ \' R { 0154 }
+ \' r { 0155 }
+ \c R { 0156 }
+ \c r { 0157 }
+ \v R { 0158 }
+ \v r { 0159 }
+ \' S { 015A }
+ \' s { 015B }
+ \^ S { 015C }
+ \^ s { 015D }
+ \c S { 015E }
+ \c s { 015F }
+ \v S { 0160 }
+ \v s { 0161 }
+ \c T { 0162 }
+ \c t { 0163 }
+ \v T { 0164 }
+ \v t { 0165 }
+ \~ U { 0168 }
+ \~ u { 0169 }
+ \= U { 016A }
+ \= u { 016B }
+ \u U { 016C }
+ \u u { 016D }
+ \r U { 016E }
+ \r u { 016F }
+ \H U { 0170 }
+ \H u { 0171 }
+ \k U { 0172 }
+ \k u { 0173 }
+ \^ W { 0174 }
+ \^ w { 0175 }
+ \^ Y { 0176 }
+ \^ y { 0177 }
+ \" Y { 0178 }
+ \' Z { 0179 }
+ \' z { 017A }
+ \. Z { 017B }
+ \. z { 017C }
+ \v Z { 017D }
+ \v z { 017E }
+ \v A { 01CD }
+ \v a { 01CE }
+ \v I { 01CF }
+ \v \i { 01D0 }
+ \v i { 01D0 }
+ \v O { 01D1 }
+ \v o { 01D2 }
+ \v U { 01D3 }
+ \v u { 01D4 }
+ \v G { 01E6 }
+ \v g { 01E7 }
+ \v K { 01E8 }
+ \v k { 01E9 }
+ \k O { 01EA }
+ \k o { 01EB }
+ \v \j { 01F0 }
+ \v j { 01F0 }
+ \' G { 01F4 }
+ \' g { 01F5 }
+ \` N { 01F8 }
+ \` n { 01F9 }
+ \' \AE { 01FC }
+ \' \ae { 01FD }
+ \' \O { 01FE }
+ \' \o { 01FF }
+ \v H { 021E }
+ \v h { 021F }
+ \. A { 0226 }
+ \. a { 0227 }
+ \c E { 0228 }
+ \c e { 0229 }
+ \. O { 022E }
+ \. o { 022F }
+ \= Y { 0232 }
+ \= y { 0233 }
+ \q_recursion_tail ? { }
+ \q_recursion_stop
+\group_end:
%% File: l3candidates.dtx
\cs_new_protected:Npn \box_clip:N #1
{ \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
@@ -29731,7 +30321,7 @@
\__kernel_msg_error:nnx
{ kernel } { quote-in-shell } {#1}
}
- { \__kernel_ior_open:Nn #2 { "|#1" } }
+ { \__kernel_ior_open:Nn #2 { |#1 } }
}
\__kernel_msg_new:nnnn { kernel } { pipe-failed }
{ Cannot~run~piped~system~commands. }
@@ -30054,8 +30644,8 @@
}
\__kernel_msg_new:nnn { kernel } { deprecated-command }
{
- '#2'~deprecated~on~#1.
- \tl_if_empty:nF {#3} { ~Use~'#3'. }
+ \tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
+ #2~deprecated~on~#1.
\str_if_eq:nnT {#4} { grace }
{
\c_space_tl
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index e406ede9..e90fd568 100644
--- a/texmf/tex/latex/l3kernel/expl3-generic.tex
+++ b/texmf/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-03-03}%
+\def\ExplFileDate{2020-05-05}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index 978a95d7..3308eb7f 100644
--- a/texmf/tex/latex/l3kernel/expl3.ltx
+++ b/texmf/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-03-03}%
+\def\ExplFileDate{2020-05-05}%
\let\ExplLoaderFileDate\ExplFileDate
\everyjob\expandafter{\the\everyjob
\message{L3 programming layer <\ExplFileDate>}%
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index 50b2f0b4..0817fbd6 100644
--- a/texmf/tex/latex/l3kernel/expl3.sty
+++ b/texmf/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-03-03}%
+\def\ExplFileDate{2020-05-05}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
More information about the latex3-commits
mailing list.