[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.