[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: Update l3kernel and l3backend to 2020-06-03 (e71289ee)

Joseph Wright joseph.wright at morningstar2.co.uk
Thu Jun 18 14:38:29 CEST 2020


Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/e71289ee98362cd7de2f1fe0401b939423c5113d

>---------------------------------------------------------------

commit e71289ee98362cd7de2f1fe0401b939423c5113d
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Thu Jun 18 13:38:29 2020 +0100

    Update l3kernel and l3backend to 2020-06-03


>---------------------------------------------------------------

e71289ee98362cd7de2f1fe0401b939423c5113d
 texmf/tex/latex/l3backend/l3backend-dvipdfmx.def  |  86 ++++---------
 texmf/tex/latex/l3backend/l3backend-dvips.def     |  90 ++++----------
 texmf/tex/latex/l3backend/l3backend-dvisvgm.def   |  77 ++++--------
 texmf/tex/latex/l3backend/l3backend-pdfmode.def   |  99 ++++-----------
 texmf/tex/latex/l3backend/l3backend-xdvipdfmx.def |  86 ++++---------
 texmf/tex/latex/l3kernel/expl3-code.tex           | 143 +++++++++++-----------
 texmf/tex/latex/l3kernel/expl3-generic.tex        |   2 +-
 texmf/tex/latex/l3kernel/expl3.ltx                |  73 +++++++----
 texmf/tex/latex/l3kernel/expl3.sty                |  81 ++++++++----
 texmf/tex/latex/l3kernel/l3deprecation.def        |   4 +
 10 files changed, 310 insertions(+), 431 deletions(-)

diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
index a82491c6..8f5e5c40 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2020-06-03}{}
+  {l3backend-dvipdfmx.def}{2020-06-18}{}
   {L3 backend support: dvipdfmx}
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -52,8 +52,8 @@
               {
                 \tl_set:Nx #1
                    {
-                     spot ~
-                     \exp_after:wN \use:n \current at color \c_space_tl 1
+                     { spot }
+                     { \exp_after:wN \use:n \current at color \c_space_tl 1 }
                    }
               }
               {
@@ -62,33 +62,22 @@
               }
           }
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
-          { \tl_set:Nn #3 { #1 ~ #2 } }
+          { \tl_set:Nn #3 { {#1} {#2} } }
       }
   }
-\cs_new_protected:Npn \__color_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
-  {
-    \__color_backend_select:x
-      {
-        cmyk~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
-  }
-\cs_new_protected:Npn \__color_backend_gray:w #1 \s__color_stop
-  { \__color_backend_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__color_backend_rgb:w #1 ~ #2 ~ #3 \s__color_stop
-  {
-    \__color_backend_select:x
-      { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
-\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
-  { \__color_backend_select:n { #1 } }
+\cs_new_protected:Npn \__color_backend_cmyk:n #1
+  { \__color_backend_select:n { cmyk ~ #1 } }
+\cs_new_protected:Npn \__color_backend_gray:n #1
+  { \__color_backend_select:n { gray ~ #1 } }
+\cs_new_protected:Npn \__color_backend_rgb:n #1
+  { \__color_backend_select:n { rgb ~ #1 } }
+\cs_new_protected:Npn \__color_backend_spot:n #1
+  { \__color_backend_select:n {#1} }
 \cs_new_protected:Npn \__color_backend_select:n #1
   {
     \__kernel_backend_literal:n { color~push~ #1 }
     \group_insert_after:N \__color_backend_reset:
   }
-\cs_generate_variant:Nn \__color_backend_select:n { x }
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 %% File: l3backend-box.dtx
@@ -219,7 +208,7 @@
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { \fp_eval:n {#1} ~ M } }
+  { \__draw_backend_literal:x { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -232,38 +221,18 @@
   { \__draw_backend_literal:n { 1 ~ j } }
 \cs_new_protected:Npn \__draw_backend_join_bevel:
   { \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ k } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ K } }
 \cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ g } }
+  { \__draw_backend_color_select:n { #1 ~ g } }
 \cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
-  }
+  { \__draw_backend_color_select:n { #1 ~ G } }
+\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ rg } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ RG } }
 \cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n
 \cs_generate_variant:Nn \__draw_backend_color_select:n { x }
 \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
@@ -339,13 +308,8 @@
 \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
-      {
-        pdf:btrans~matrix~
-        \fp_eval:n {#2} ~ \fp_eval:n {#3} ~
-        \fp_eval:n {#4} ~ \fp_eval:n {#5} ~
-        0 ~ 0
-      }
+    \__kernel_backend_literal:n
+      { pdf:btrans~matrix~ #2 ~ #3 ~ #4 ~ #5 ~ 0 ~ 0 }
     \hbox_overlap_right:n { \box_use:N #1 }
     \__kernel_backend_literal:n { pdf:etrans }
     \__kernel_backend_scope_end:
diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def
index 4c768d96..bf161ed1 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvips.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvips.def
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2020-06-03}{}
+  {l3backend-dvips.def}{2020-06-18}{}
   {L3 backend support: dvips}
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -73,8 +73,8 @@
               {
                 \tl_set:Nx #1
                    {
-                     spot ~
-                     \exp_after:wN \use:n \current at color \c_space_tl 1
+                     { spot }
+                     { \exp_after:wN \use:n \current at color \c_space_tl 1 }
                    }
               }
               {
@@ -83,34 +83,23 @@
               }
           }
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
-          { \tl_set:Nn #3 { #1 ~ #2 } }
+          { \tl_set:Nn #3 { {#1} {#2} } }
       }
   }
-\cs_new_protected:Npn \__color_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
-  {
-    \__color_backend_select:x
-      {
-        cmyk~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
-  }
-\cs_new_protected:Npn \__color_backend_gray:w #1 \s__color_stop
-  { \__color_backend_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__color_backend_rgb:w #1 ~ #2 ~ #3 \s__color_stop
-  {
-    \__color_backend_select:x
-      { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
-\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
-  { \__color_backend_select:n { #1 } }
+\cs_new_protected:Npn \__color_backend_cmyk:n #1
+  { \__color_backend_select:n { cmyk ~ #1 } }
+\cs_new_protected:Npn \__color_backend_gray:n #1
+  { \__color_backend_select:n { gray ~ #1 } }
+\cs_new_protected:Npn \__color_backend_rgb:n #1
+  { \__color_backend_select:n { rgb ~ #1 } }
+\cs_new_protected:Npn \__color_backend_spot:n #1
+  { \__color_backend_select:n {#1} }
 \cs_new_protected:Npn \__color_backend_select:n #1
   {
     \__kernel_backend_literal:n { color~push~ #1 }
     \__kernel_backend_postscript:n { /color.fc~{ }~def }
     \group_insert_after:N \__color_backend_reset:
   }
-\cs_generate_variant:Nn \__color_backend_select:n { x }
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 %% File: l3backend-box.dtx
@@ -324,7 +313,7 @@
       { \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { \fp_eval:n {#1} ~ setmiterlimit } }
+  { \__draw_backend_literal:n { #1 ~ setmiterlimit } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ setlinecap } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -337,61 +326,32 @@
   { \__draw_backend_literal:n { 1 ~ setlinejoin } }
 \cs_new_protected:Npn \__draw_backend_join_bevel:
   { \__draw_backend_literal:n { 2 ~ setlinejoin } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_fill:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        setcmykcolor
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_stroke:x
-      {
-        cmyk ~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
-  { \__draw_backend_color_fill:x { \fp_eval:n {#1} ~ setgray } }
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
+  { \__draw_backend_color_fill:n { #1 ~ setcmykcolor } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
+  { \__draw_backend_color_stroke:n { cmyk ~ #1 } }
 \cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
-  { \__draw_backend_color_stroke:x { gray ~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_fill:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ setrgbcolor }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_stroke:x
-      { rgb ~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
+  { \__draw_backend_color_fill:n { #1 ~ setgray } }
+\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
+  { \__draw_backend_color_stroke:n { gray ~ #1 } }
+\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
+  { \__draw_backend_color_fill:n { #1 ~ setrgbcolor } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
+  { \__draw_backend_color_stroke:n { rgb ~ #1 } }
 \cs_new_protected:Npn \__draw_backend_color_fill:n #1
   {
     \__kernel_backend_postscript:n
       { /color.fc ~ { #1 } ~ def }
   }
-\cs_generate_variant:Nn \__draw_backend_color_fill:n { x }
 \cs_new_protected:Npn \__draw_backend_color_stroke:n #1
   {
     \__kernel_backend_literal:n { color~push~#1 }
     \group_insert_after:N \__draw_color_reset:
   }
-\cs_generate_variant:Nn \__draw_backend_color_stroke:n { x }
 \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
   {
     \__draw_backend_literal:n
-      {
-        [
-          \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-          \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-          0 ~ 0
-        ] ~
-        concat
-      }
+      { [ #1 ~ #2 ~ #3 ~ #4 ~ 0 ~ 0 ] ~ concat }
   }
 \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
index 06d084a2..a8c31ce3 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2020-06-03}{}
+  {l3backend-dvisvgm.def}{2020-06-18}{}
   {L3 backend support: dvisvgm}
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -53,8 +53,8 @@
               {
                 \tl_set:Nx #1
                    {
-                     spot ~
-                     \exp_after:wN \use:n \current at color \c_space_tl 1
+                     { spot }
+                     { \exp_after:wN \use:n \current at color \c_space_tl 1 }
                    }
               }
               {
@@ -63,33 +63,22 @@
               }
           }
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
-          { \tl_set:Nn #3 { #1 ~ #2 } }
+          { \tl_set:Nn #3 { {#1} {#2} } }
       }
   }
-\cs_new_protected:Npn \__color_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
-  {
-    \__color_backend_select:x
-      {
-        cmyk~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
-  }
-\cs_new_protected:Npn \__color_backend_gray:w #1 \s__color_stop
-  { \__color_backend_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__color_backend_rgb:w #1 ~ #2 ~ #3 \s__color_stop
-  {
-    \__color_backend_select:x
-      { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
-\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
-  { \__color_backend_select:n { #1 } }
+\cs_new_protected:Npn \__color_backend_cmyk:n #1
+  { \__color_backend_select:n { cmyk ~ #1 } }
+\cs_new_protected:Npn \__color_backend_gray:n #1
+  { \__color_backend_select:n { gray ~ #1 } }
+\cs_new_protected:Npn \__color_backend_rgb:n #1
+  { \__color_backend_select:n { rgb ~ #1 } }
+\cs_new_protected:Npn \__color_backend_spot:n #1
+  { \__color_backend_select:n {#1} }
 \cs_new_protected:Npn \__color_backend_select:n #1
   {
     \__kernel_backend_literal:n { color~push~ #1 }
     \group_insert_after:N \__color_backend_reset:
   }
-\cs_generate_variant:Nn \__color_backend_select:n { x }
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 %% File: l3backend-box.dtx
@@ -353,7 +342,7 @@
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   { \__draw_backend_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_scope:x { stroke-miterlimit=" \fp_eval:n {#1} " } }
+  { \__draw_backend_scope:x { stroke-miterlimit=" #1 " } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_scope:n { stroke-linecap="butt" } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -366,25 +355,21 @@
   { \__draw_backend_scope:n { stroke-linejoin="round" } }
 \cs_new_protected:Npn \__draw_backend_join_bevel:
   { \__draw_backend_scope:n { stroke-linejoin="bevel" } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:nnnn #1#2#3#4
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
+  { \__draw_backend_color_fill_cmyk:w #1 \s__draw_stop }
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:w
+  #1 ~ #2 ~ #3 ~ #4 \s__draw_stop
   {
     \use:x
       {
         \__draw_backend_color_fill:nnn
-          { \fp_eval:n { -100 * ( (#1) * ( 1 - (#4) ) - 1 ) } }
-          { \fp_eval:n { -100 * ( (#2) * ( 1 - (#4) ) + #4 - 1 ) } }
-          { \fp_eval:n { -100 * ( (#3) * ( 1 - (#4) ) + #4 - 1 ) } }
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_select:x
-      {
-        cmyk~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
+          { \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } }
+          { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #4 ) ) } }
+          { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #4 ) ) } }
       }
   }
+\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
+  { \__draw_backend_select:n { cmyk ~ #1 } }
 \cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
   {
     \use:x
@@ -397,7 +382,7 @@
   { \__draw_backend_color_fill:nnn {#1} {#1} {#1} }
 \cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
   { \__draw_backend_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:nnn #1#2#3
+\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
   {
     \use:x
       {
@@ -422,24 +407,14 @@
          "
       }
   }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:nnn #1#2#3
-  {
-    \__draw_backend_select:x
-      { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
+\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
+  { \__draw_backend_select:n { rgb ~ #1 } }
 \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
   {
     \__draw_backend_scope:n
       {
        transform =
-         "
-           matrix
-             (
-               \fp_eval:n {#1} , \fp_eval:n {#2} ,
-               \fp_eval:n {#3} , \fp_eval:n {#4} ,
-               0pt , 0pt
-             )
-         "
+         " matrix ( #1 , #2 , #3 , #4 , 0pt , 0pt ) "
       }
   }
 \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5#6#7
diff --git a/texmf/tex/latex/l3backend/l3backend-pdfmode.def b/texmf/tex/latex/l3backend/l3backend-pdfmode.def
index 1e89dc85..688d84b9 100644
--- a/texmf/tex/latex/l3backend/l3backend-pdfmode.def
+++ b/texmf/tex/latex/l3backend/l3backend-pdfmode.def
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdfmode.def}{2020-06-03}{}
+  {l3backend-pdfmode.def}{2020-06-18}{}
   {L3 backend support: PDF mode}
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -82,20 +82,20 @@
           #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
           {
             \str_if_eq:nnTF {#2} { g }
-              { \tl_set:Nn #7 { gray ~ #1 } }
+              { \tl_set:Nn #7 { { gray } {#1} } }
               {
                 \str_if_eq:nnTF {#4} { rg }
-                  { \tl_set:Nn #7 { rgb ~ #1 ~ #2 ~ #3 } }
+                  { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
                   {
                      \str_if_eq:nnTF {#5} { k }
-                       { \tl_set:Nn #7 { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } }
+                       { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
                        {
                          \str_if_eq:nnTF {#2} { cs }
                            {
-                             \tl_set:Nx #7 { spot ~ \use_none:n #1 ~ #5 }
+                             \tl_set:Nx #7 { { spot } { \use_none:n #1 ~ #5 } }
                            }
                            {
-                             \tl_set:Nn #7 { gray ~ 0 }
+                             \tl_set:Nn #7 { { gray } { 0 } }
                            }
                        }
                   }
@@ -104,40 +104,16 @@
       }
   }
 \int_new:N \l__kernel_color_stack_int
-\cs_new_protected:Npn \__color_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
-  {
-     \use:x
-       {
-         \__color_backend_cmyk:nnnn
-           { \fp_eval:n {#1} }
-           { \fp_eval:n {#2} }
-           { \fp_eval:n {#3} }
-           { \fp_eval:n {#4} }
-       }
-  }
-\cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4
-  {
-    \__color_backend_select:n
-      { #1 ~ #2 ~ #3 ~ #4 ~ k ~ #1 ~ #2 ~ #3 ~ #4 ~ K }
-  }
-\cs_new_protected:Npn \__color_backend_gray:w #1 \s__color_stop
-  { \exp_args:Nx \__color_backend_gray:n { \fp_eval:n {#1} } }
+\cs_new_protected:Npn \__color_backend_cmyk:n #1
+  { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } }
 \cs_new_protected:Npn \__color_backend_gray:n #1
   { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } }
-\cs_new_protected:Npn \__color_backend_rgb:w #1~ #2 ~ #3 \s__color_stop
-  {
-     \use:x
-       {
-         \__color_backend_rgb:nnn
-           { \fp_eval:n {#1} }
-           { \fp_eval:n {#2} }
-           { \fp_eval:n {#3} }
-       }
-  }
-\cs_new_protected:Npn \__color_backend_rgb:nnn #1#2#3
-  { \__color_backend_select:n { #1 ~ #2 ~ #3 ~ rg ~ #1 ~ #2 ~ #3 ~ RG } }
+\cs_new_protected:Npn \__color_backend_rgb:n #1
+  { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_spot:n #1
+  { \__color_backend_spot:w #1 \s__color_stop }
 \cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
-  { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ sc ~ #2 ~ SC } }
+  { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
 \cs_new_protected:Npx \__color_backend_select:n #1
   {
     \cs_if_exist:NTF \tex_pdfextension:D
@@ -146,7 +122,6 @@
         \exp_not:N \l__kernel_color_stack_int push {#1}
       \group_insert_after:N \exp_not:N \__color_backend_reset:
   }
-\cs_generate_variant:Nn \__color_backend_select:n { x }
 \cs_new_protected:Npx \__color_backend_reset:
   {
     \cs_if_exist:NTF \tex_pdfextension:D
@@ -295,7 +270,7 @@
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { \fp_eval:n {#1} ~ M } }
+  { \__draw_backend_literal:x { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -308,38 +283,18 @@
   { \__draw_backend_literal:n { 1 ~ j } }
 \cs_new_protected:Npn \__draw_backend_join_bevel:
   { \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ k } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ K } }
 \cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ g } }
+  { \__draw_backend_color_select:n { #1 ~ g } }
 \cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
-  }
+  { \__draw_backend_color_select:n { #1 ~ G } }
+\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ rg } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ RG } }
 \cs_new_protected:Npx \__draw_backend_color_select:n #1
   {
     \cs_if_exist:NTF \tex_pdfextension:D
@@ -358,11 +313,7 @@
 \cs_generate_variant:Nn \__draw_backend_color_select:n { x }
 \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
   {
-    \__kernel_backend_matrix:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
+    \__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
   }
 \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-xdvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-xdvipdfmx.def
index e385c1bc..2a093aae 100644
--- a/texmf/tex/latex/l3backend/l3backend-xdvipdfmx.def
+++ b/texmf/tex/latex/l3backend/l3backend-xdvipdfmx.def
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xdvipdfmx.def}{2020-06-03}{}
+  {l3backend-xdvipdfmx.def}{2020-06-18}{}
   {L3 backend support: xdvipdfmx}
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -52,8 +52,8 @@
               {
                 \tl_set:Nx #1
                    {
-                     spot ~
-                     \exp_after:wN \use:n \current at color \c_space_tl 1
+                     { spot }
+                     { \exp_after:wN \use:n \current at color \c_space_tl 1 }
                    }
               }
               {
@@ -62,33 +62,22 @@
               }
           }
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
-          { \tl_set:Nn #3 { #1 ~ #2 } }
+          { \tl_set:Nn #3 { {#1} {#2} } }
       }
   }
-\cs_new_protected:Npn \__color_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
-  {
-    \__color_backend_select:x
-      {
-        cmyk~
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4}
-      }
-  }
-\cs_new_protected:Npn \__color_backend_gray:w #1 \s__color_stop
-  { \__color_backend_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__color_backend_rgb:w #1 ~ #2 ~ #3 \s__color_stop
-  {
-    \__color_backend_select:x
-      { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
-  }
-\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
-  { \__color_backend_select:n { #1 } }
+\cs_new_protected:Npn \__color_backend_cmyk:n #1
+  { \__color_backend_select:n { cmyk ~ #1 } }
+\cs_new_protected:Npn \__color_backend_gray:n #1
+  { \__color_backend_select:n { gray ~ #1 } }
+\cs_new_protected:Npn \__color_backend_rgb:n #1
+  { \__color_backend_select:n { rgb ~ #1 } }
+\cs_new_protected:Npn \__color_backend_spot:n #1
+  { \__color_backend_select:n {#1} }
 \cs_new_protected:Npn \__color_backend_select:n #1
   {
     \__kernel_backend_literal:n { color~push~ #1 }
     \group_insert_after:N \__color_backend_reset:
   }
-\cs_generate_variant:Nn \__color_backend_select:n { x }
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 %% File: l3backend-box.dtx
@@ -219,7 +208,7 @@
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { \fp_eval:n {#1} ~ M } }
+  { \__draw_backend_literal:x { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -232,38 +221,18 @@
   { \__draw_backend_literal:n { 1 ~ j } }
 \cs_new_protected:Npn \__draw_backend_join_bevel:
   { \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:nnnn #1#2#3#4
-  {
-    \__draw_backend_color_select:x
-      {
-        \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
-        \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
-        k
-      }
-  }
+\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ k } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
+  { \__draw_backend_color_select:n { #1 ~ K } }
 \cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ g } }
+  { \__draw_backend_color_select:n { #1 ~ g } }
 \cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
-  { \__draw_backend_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
-  }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:nnn #1#2#3
-  {
-    \__draw_backend_color_select:x
-      { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
-  }
+  { \__draw_backend_color_select:n { #1 ~ G } }
+\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ rg } }
+\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
+  { \__draw_backend_color_select:n { #1 ~ RG } }
 \cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n
 \cs_generate_variant:Nn \__draw_backend_color_select:n { x }
 \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
@@ -339,13 +308,8 @@
 \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
-      {
-        pdf:btrans~matrix~
-        \fp_eval:n {#2} ~ \fp_eval:n {#3} ~
-        \fp_eval:n {#4} ~ \fp_eval:n {#5} ~
-        0 ~ 0
-      }
+    \__kernel_backend_literal:n
+      { pdf:btrans~matrix~ #2 ~ #3 ~ #4 ~ #5 ~ 0 ~ 0 }
     \hbox_overlap_right:n { \box_use:N #1 }
     \__kernel_backend_literal:n { pdf:etrans }
     \__kernel_backend_scope_end:
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index d1eab62b..c954b30d 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -68,7 +68,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-06-03}%
+\def\ExplFileDate{2020-06-18}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -6410,6 +6410,39 @@
   }
 \cs_generate_variant:Nn \seq_map_variable:NNn {     Nc }
 \cs_generate_variant:Nn \seq_map_variable:NNn { c , cc }
+\cs_new:Npn \seq_map_indexed_function:NN #1#2
+  {
+    \__seq_map_indexed:NN #1#2
+    \prg_break_point:Nn \seq_map_break: { }
+  }
+\cs_new_protected:Npn \seq_map_indexed_inline:Nn #1#2
+  {
+    \int_gincr:N \g__kernel_prg_map_int
+    \cs_gset_protected:cpn
+      { __seq_map_ \int_use:N \g__kernel_prg_map_int :w } ##1##2 {#2}
+    \exp_args:NNc \__seq_map_indexed:NN #1
+      { __seq_map_ \int_use:N \g__kernel_prg_map_int :w }
+    \prg_break_point:Nn \seq_map_break:
+      { \int_gdecr:N \g__kernel_prg_map_int }
+  }
+\cs_new:Npn \__seq_map_indexed:NN #1#2
+  {
+    \exp_after:wN \__seq_map_indexed:Nw
+    \exp_after:wN #2
+    \int_value:w 1
+    \exp_after:wN \use_i:nn
+    \exp_after:wN ;
+    #1
+    \prg_break: \__seq_item:n { } \prg_break_point:
+  }
+\cs_new:Npn \__seq_map_indexed:Nw #1#2 ; #3 \__seq_item:n #4
+  {
+    #3
+    #1 {#2} {#4}
+    \exp_after:wN \__seq_map_indexed:Nw
+    \exp_after:wN #1
+    \int_value:w \int_eval:w 1 + #2 ;
+  }
 \cs_new:Npn \seq_count:N #1
   {
     \int_eval:n
@@ -10823,6 +10856,37 @@
 \cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnn { nnfff }
 \cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnn { nnff }
 \cs_generate_variant:Nn \__kernel_msg_expandable_error:nnn { nnf }
+\cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
+  {
+    \exp_args:Ne \__msg_expandable_error_module:nn
+      {
+        \exp_args:Nc \exp_args:Noooo
+          { \c__msg_text_prefix_tl #1 / #2 }
+          { \tl_to_str:n {#3} }
+          { \tl_to_str:n {#4} }
+          { \tl_to_str:n {#5} }
+          { \tl_to_str:n {#6} }
+      }
+      {#1}
+  }
+\cs_new:Npn \msg_expandable_error:nnnnn #1#2#3#4#5
+  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
+\cs_new:Npn \msg_expandable_error:nnnn #1#2#3#4
+  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} { } { } }
+\cs_new:Npn \msg_expandable_error:nnn #1#2#3
+  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} { } { } { } }
+\cs_new:Npn \msg_expandable_error:nn #1#2
+  { \msg_expandable_error:nnnnnn {#1} {#2} { } { } { } { } }
+\cs_generate_variant:Nn \msg_expandable_error:nnnnnn { nnffff }
+\cs_generate_variant:Nn \msg_expandable_error:nnnnn  { nnfff }
+\cs_generate_variant:Nn \msg_expandable_error:nnnn   { nnff }
+\cs_generate_variant:Nn \msg_expandable_error:nnn    { nnf }
+\cs_new:Npn \__msg_expandable_error_module:nn #1#2
+  {
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN \__msg_use_none_delimit_by_s_stop:w
+    \use:n { \::error ! ~ #2 : ~ #1 } \s__msg_stop
+  }
 %% File: l3file.dtx
 \tl_new:N  \l__ior_internal_tl
 \int_const:Nn \c__ior_term_ior { 16 }
@@ -26688,16 +26752,15 @@
 \cs_new_protected:Npn \color_ensure_current:
   {
     \__color_backend_pickup:N \l__color_current_tl
-    \__color_select:V \l__color_current_tl
+    \__color_select:N \l__color_current_tl
   }
 \scan_new:N \s__color_stop
-\cs_new_protected:Npn \__color_select:n #1
-  { \__color_select:w #1 \s__color_stop }
-\cs_generate_variant:Nn \__color_select:n { V }
-\cs_new_protected:Npn \__color_select:w #1 ~ #2 \s__color_stop
-  { \use:c { __color_backend_ #1 :w } #2 \s__color_stop }
+\cs_new_protected:Npn \__color_select:N #1
+  { \exp_after:wN \__color_select:nn #1 }
+\cs_new_protected:Npn \__color_select:nn #1#2
+  { \use:c { __color_backend_ #1 :n } {#2} }
 \tl_new:N \l__color_current_tl
-\tl_set:Nn \l__color_current_tl { gray~0 }
+\tl_set:Nn \l__color_current_tl { { gray } { 0 } }
 %% File: l3coffins.dtx
 \box_new:N \l__coffin_internal_box
 \dim_new:N \l__coffin_internal_dim
@@ -30448,37 +30511,6 @@
       \cs:w flag~#1 \cs_end: 0 ;
     \fi:
   }
-\cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
-  {
-    \exp_args:Ne \__msg_expandable_error_module:nn
-      {
-        \exp_args:Nc \exp_args:Noooo
-          { \c__msg_text_prefix_tl #1 / #2 }
-          { \tl_to_str:n {#3} }
-          { \tl_to_str:n {#4} }
-          { \tl_to_str:n {#5} }
-          { \tl_to_str:n {#6} }
-      }
-      {#1}
-  }
-\cs_new:Npn \msg_expandable_error:nnnnn #1#2#3#4#5
-  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
-\cs_new:Npn \msg_expandable_error:nnnn #1#2#3#4
-  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} { } { } }
-\cs_new:Npn \msg_expandable_error:nnn #1#2#3
-  { \msg_expandable_error:nnnnnn {#1} {#2} {#3} { } { } { } }
-\cs_new:Npn \msg_expandable_error:nn #1#2
-  { \msg_expandable_error:nnnnnn {#1} {#2} { } { } { } { } }
-\cs_generate_variant:Nn \msg_expandable_error:nnnnnn { nnffff }
-\cs_generate_variant:Nn \msg_expandable_error:nnnnn  { nnfff }
-\cs_generate_variant:Nn \msg_expandable_error:nnnn   { nnff }
-\cs_generate_variant:Nn \msg_expandable_error:nnn    { nnf }
-\cs_new:Npn \__msg_expandable_error_module:nn #1#2
-  {
-    \exp_after:wN \exp_after:wN
-    \exp_after:wN \__msg_use_none_delimit_by_s_stop:w
-    \use:n { \::error ! ~ #2 : ~ #1 } \s__msg_stop
-  }
 \cs_new_protected:Npn \msg_show_eval:Nn #1#2
   { \exp_args:Nf \__msg_show_eval:nnN { #1 {#2} } {#2} \tl_show:n }
 \cs_new_protected:Npn \msg_log_eval:Nn #1#2
@@ -30619,39 +30651,6 @@
   { \seq_set_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
 \cs_new_protected:Npn \seq_gset_from_function:NnN #1#2#3
   { \seq_gset_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
-\cs_new:Npn \seq_indexed_map_function:NN #1#2
-  {
-    \__seq_indexed_map:NN #1#2
-    \prg_break_point:Nn \seq_map_break: { }
-  }
-\cs_new_protected:Npn \seq_indexed_map_inline:Nn #1#2
-  {
-    \int_gincr:N \g__kernel_prg_map_int
-    \cs_gset_protected:cpn
-      { __seq_map_ \int_use:N \g__kernel_prg_map_int :w } ##1##2 {#2}
-    \exp_args:NNc \__seq_indexed_map:NN #1
-      { __seq_map_ \int_use:N \g__kernel_prg_map_int :w }
-    \prg_break_point:Nn \seq_map_break:
-      { \int_gdecr:N \g__kernel_prg_map_int }
-  }
-\cs_new:Npn \__seq_indexed_map:NN #1#2
-  {
-    \exp_after:wN \__seq_indexed_map:Nw
-    \exp_after:wN #2
-    \int_value:w 1
-    \exp_after:wN \use_i:nn
-    \exp_after:wN ;
-    #1
-    \prg_break: \__seq_item:n { } \prg_break_point:
-  }
-\cs_new:Npn \__seq_indexed_map:Nw #1#2 ; #3 \__seq_item:n #4
-  {
-    #3
-    #1 {#2} {#4}
-    \exp_after:wN \__seq_indexed_map:Nw
-    \exp_after:wN #1
-    \int_value:w \int_eval:w 1 + #2 ;
-  }
 \str_const:Nx \c_sys_engine_version_str
   {
     \str_case:on \c_sys_engine_str
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index cb8d09c4..52f1e1ed 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-06-03}%
+\def\ExplFileDate{2020-06-18}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \def\tempa{LaTeX2e}%
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index 538c3fdd..b385a59b 100644
--- a/texmf/tex/latex/l3kernel/expl3.ltx
+++ b/texmf/tex/latex/l3kernel/expl3.ltx
@@ -19,26 +19,34 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-06-03}%
+\def\ExplFileDate{2020-06-18}%
 \let\ExplLoaderFileDate\ExplFileDate
 \everyjob\expandafter{\the\everyjob
   \message{L3 programming layer <\ExplFileDate>}%
 }
-\protected\def\ProvidesExplPackage#1#2#3#4%
+\protected\def\ProvidesExplPackage
+  {\@expl at provides@file@@Nnnnnn\ProvidesPackage{Package}}
+\protected\def\ProvidesExplClass
+  {\@expl at provides@file@@Nnnnnn\ProvidesClass{Document Class}}
+\protected\def\ProvidesExplFile
+  {\@expl at provides@file@@Nnnnnn\ProvidesFile{File}}
+\protected\long\def\@expl at provides@file@@Nnnnnn#1#2#3#4#5#6%
   {%
-    \ProvidesPackage{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
+    \ifnum0%
+        \ifdefined#11\fi
+        \ifx\relax#1\else1\fi
+        =11
+      \expandafter#1%
+    \else
+      \@expl at provides@generic@@wnnw{#2}%
+    \fi
+      {#3}[{#4 \ifx\relax#5\relax\else v#5\space\fi #6}]%
     \ExplSyntaxOn
-  }%
-\protected\def\ProvidesExplClass#1#2#3#4%
-  {%
-    \ProvidesClass{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
-    \ExplSyntaxOn
-  }%
-\protected\def\ProvidesExplFile#1#2#3#4%
+  }
+\protected\long\def\@expl at provides@generic@@wnnw#1\fi#2[#3]%
   {%
-    \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
-    \ExplSyntaxOn
-  }%
+    \immediate\write-1{#1: #2 #3}%
+  }
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\@firstofone
@@ -50,10 +58,13 @@
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\endinput
 \fi
-\ifdefined\@pushfilenameaux
+\ifcsname\detokenize{g__expl_reload_bool}\endcsname
   \ExplSyntaxOn
+  \bool_gset_true:N \g__expl_reload_bool
+\else
+  \bool_new:N \g__expl_reload_bool
 \fi
-\cs_if_exist:NF \c__expl_def_ext_tl
+\tl_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
   {
@@ -88,12 +99,19 @@
         \sys_load_deprecation:
       }
   }
-\tl_put_left:Nn \document
+\cs_if_exist:NF \@expl at sys@load at backend@@
+  {
+    \tl_put_left:Nn \document
+      {
+        \endgroup
+        \@expl at sys@load at backend@@
+        \begingroup
+      }
+  }
+\cs_gset_protected:Npn \@expl at sys@load at backend@@
   {
-    \endgroup
     \str_if_exist:NF \c_sys_backend_str
       { \sys_load_backend:n { } }
-    \begingroup
   }
 \cs_if_free:cTF { ver at expl3.sty }
   {
@@ -107,11 +125,16 @@
 \reverse_if:N \if_cs_exist:N \s__expl_stop
   \scan_new:N \s__expl_stop
 \fi:
-\tl_put_left:Nn \@pushfilename
+\cs_if_exist:NF \@expl at push@filename@@
+  {
+    \tl_put_left:Nn  \@pushfilename { \@expl at push@filename@@ }
+    \tl_put_right:Nn \@pushfilename { \@expl at push@filename at aux@@ }
+  }
+\cs_gset_protected:Npn \@expl at push@filename@@
   {
     \exp_args:Nx \__kernel_file_input_push:n
       {
-        \tl_to_str:N \@currname
+        \tl_to_str:N \@currname .
         \tl_to_str:N \@currext
       }
     \tl_put_left:Nx \l__expl_status_stack_tl
@@ -122,13 +145,17 @@
       }
     \ExplSyntaxOff
   }
-\tl_put_right:Nn \@pushfilename { \@pushfilenameaux }
-\cs_set_protected:Npn \@pushfilenameaux #1#2#3
+\cs_gset_protected:Npn \@expl at push@filename at aux@@ #1#2#3
   {
     \str_gset:Nn \g_file_curr_name_str {#3}
     #1 #2 {#3}
   }
-\tl_put_right:Nn \@popfilename
+\cs_if_exist:NF \@expl at pop@filename@@
+  {
+    \tl_put_right:Nn \@popfilename
+      { \@expl at pop@filename@@ }
+  }
+\cs_gset_protected:Npn \@expl at pop@filename@@
   {
     \__kernel_file_input_pop:
     \tl_if_empty:NTF \l__expl_status_stack_tl
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index 4ded77ab..17df13ad 100644
--- a/texmf/tex/latex/l3kernel/expl3.sty
+++ b/texmf/tex/latex/l3kernel/expl3.sty
@@ -19,28 +19,36 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-06-03}%
+\def\ExplFileDate{2020-06-18}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%
     \ExplFileDate\space
     L3 programming layer (loader)
   ]%
-\protected\def\ProvidesExplPackage#1#2#3#4%
+\protected\def\ProvidesExplPackage
+  {\@expl at provides@file@@Nnnnnn\ProvidesPackage{Package}}
+\protected\def\ProvidesExplClass
+  {\@expl at provides@file@@Nnnnnn\ProvidesClass{Document Class}}
+\protected\def\ProvidesExplFile
+  {\@expl at provides@file@@Nnnnnn\ProvidesFile{File}}
+\protected\long\def\@expl at provides@file@@Nnnnnn#1#2#3#4#5#6%
   {%
-    \ProvidesPackage{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
+    \ifnum0%
+        \ifdefined#11\fi
+        \ifx\relax#1\else1\fi
+        =11
+      \expandafter#1%
+    \else
+      \@expl at provides@generic@@wnnw{#2}%
+    \fi
+      {#3}[{#4 \ifx\relax#5\relax\else v#5\space\fi #6}]%
     \ExplSyntaxOn
-  }%
-\protected\def\ProvidesExplClass#1#2#3#4%
-  {%
-    \ProvidesClass{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
-    \ExplSyntaxOn
-  }%
-\protected\def\ProvidesExplFile#1#2#3#4%
+  }
+\protected\long\def\@expl at provides@generic@@wnnw#1\fi#2[#3]%
   {%
-    \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
-    \ExplSyntaxOn
-  }%
+    \immediate\write-1{#1: #2 #3}%
+  }
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\@firstofone
@@ -52,10 +60,13 @@
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\endinput
 \fi
-\ifdefined\@pushfilenameaux
+\ifcsname\detokenize{g__expl_reload_bool}\endcsname
   \ExplSyntaxOn
+  \bool_gset_true:N \g__expl_reload_bool
+\else
+  \bool_new:N \g__expl_reload_bool
 \fi
-\cs_if_exist:NF \c__expl_def_ext_tl
+\tl_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
   {
@@ -71,7 +82,7 @@
     \@onefilewithoptions {#1} [ ] [ ]
       \c__expl_def_ext_tl
   }
-\cs_if_exist:NF \l__expl_options_clist
+\clist_if_exist:NF \l__expl_options_clist
   { \clist_new:N \l__expl_options_clist }
 \DeclareOption*
   { \clist_put_right:NV \l__expl_options_clist \CurrentOption }
@@ -103,14 +114,29 @@
         \sys_load_deprecation:
       }
   }
+\cs_if_exist:NF \@expl at sys@load at backend@@
+  {
+    \tl_put_left:Nn \document
+      {
+        \endgroup
+        \@expl at sys@load at backend@@
+        \begingroup
+      }
+  }
+\cs_gset_protected:Npn \@expl at sys@load at backend@@
+  {
+    \str_if_exist:NF \c_sys_backend_str
+      { \sys_load_backend:n { } }
+  }
 \keys_set:nV { sys } \l__expl_options_clist
 \str_if_exist:NF \c_sys_backend_str
   { \sys_load_backend:n { } }
-\cs_if_exist:NT \@pushfilenameaux
+\bool_if:NT \g__expl_reload_bool
   {
     \cs_gset_eq:NN \__kernel_sys_configuration_load:n
       \__kernel_sys_configuration_load_std:n
-    \endinput
+    \ExplSyntaxOff
+    \file_input_stop:
   }
 \cs_if_free:cTF { ver at expl3.sty }
   {
@@ -124,11 +150,16 @@
 \reverse_if:N \if_cs_exist:N \s__expl_stop
   \scan_new:N \s__expl_stop
 \fi:
-\tl_put_left:Nn \@pushfilename
+\cs_if_exist:NF \@expl at push@filename@@
+  {
+    \tl_put_left:Nn  \@pushfilename { \@expl at push@filename@@ }
+    \tl_put_right:Nn \@pushfilename { \@expl at push@filename at aux@@ }
+  }
+\cs_gset_protected:Npn \@expl at push@filename@@
   {
     \exp_args:Nx \__kernel_file_input_push:n
       {
-        \tl_to_str:N \@currname
+        \tl_to_str:N \@currname .
         \tl_to_str:N \@currext
       }
     \tl_put_left:Nx \l__expl_status_stack_tl
@@ -139,13 +170,17 @@
       }
     \ExplSyntaxOff
   }
-\tl_put_right:Nn \@pushfilename { \@pushfilenameaux }
-\cs_set_protected:Npn \@pushfilenameaux #1#2#3
+\cs_gset_protected:Npn \@expl at push@filename at aux@@ #1#2#3
   {
     \str_gset:Nn \g_file_curr_name_str {#3}
     #1 #2 {#3}
   }
-\tl_put_right:Nn \@popfilename
+\cs_if_exist:NF \@expl at pop@filename@@
+  {
+    \tl_put_right:Nn \@popfilename
+      { \@expl at pop@filename@@ }
+  }
+\cs_gset_protected:Npn \@expl at pop@filename@@
   {
     \__kernel_file_input_pop:
     \tl_if_empty:NTF \l__expl_status_stack_tl
diff --git a/texmf/tex/latex/l3kernel/l3deprecation.def b/texmf/tex/latex/l3kernel/l3deprecation.def
index 2eb91079..f088cf38 100644
--- a/texmf/tex/latex/l3kernel/l3deprecation.def
+++ b/texmf/tex/latex/l3kernel/l3deprecation.def
@@ -207,6 +207,10 @@
 \cs_gset:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
 \__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_if_eq:eeTF }
 \cs_gset:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
+\__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_inline:Nn }
+\cs_gset:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
+\__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_function:NN }
+\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
 \__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
 \cs_gset_protected:Npn \tl_set_from_file:Nnn #1#2#3
   { \file_get:nnN {#3} {#2} #1 }





More information about the latex3-commits mailing list.