[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: Update l3kernel and l3backend to 2022-08-05 (39665a6e)

Joseph Wright joseph.wright at morningstar2.co.uk
Fri Aug 5 19:17:59 CEST 2022


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

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

commit 39665a6eecdc27768e036b1a785227d077a8b821
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Aug 5 18:17:59 2022 +0100

    Update l3kernel and l3backend to 2022-08-05


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

39665a6eecdc27768e036b1a785227d077a8b821
 texmf/tex/latex/l3backend/l3backend-dvipdfmx.def |   2 +-
 texmf/tex/latex/l3backend/l3backend-dvips.def    |   2 +-
 texmf/tex/latex/l3backend/l3backend-dvisvgm.def  |  12 +-
 texmf/tex/latex/l3backend/l3backend-luatex.def   |   2 +-
 texmf/tex/latex/l3backend/l3backend-pdftex.def   |   2 +-
 texmf/tex/latex/l3backend/l3backend-xetex.def    |   2 +-
 texmf/tex/latex/l3kernel/expl3-code.tex          | 514 +++++++++++++++++++++--
 texmf/tex/latex/l3kernel/expl3-generic.tex       |   2 +-
 texmf/tex/latex/l3kernel/expl3.ltx               |   2 +-
 texmf/tex/latex/l3kernel/expl3.sty               |   2 +-
 10 files changed, 498 insertions(+), 44 deletions(-)

diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
index f9e2421b..3f0a4e3c 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2022-07-01}{}
+  {l3backend-dvipdfmx.def}{2022-08-05}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def
index 0e1c5358..4d561e6b 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvips.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvips.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2022-07-01}{}
+  {l3backend-dvips.def}{2022-08-05}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
index 12c8c2e3..b9a97cca 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2022-07-01}{}
+  {l3backend-dvisvgm.def}{2022-08-05}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -651,6 +651,16 @@
   { \cs_new_eq:NN \__graphics_backend_get_pagecount:n \__graphics_get_pagecount:n }
 %% File: l3backend-pdf.dtx
 \box_new:N \l__pdf_internal_box
+\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 { }
+\cs_new:Npn \__pdf_backend_annotation_last: { }
+\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_link_begin:nnnw #1#2#3 { }
+\cs_new_protected:Npn \__pdf_backend_link_end: { }
+\cs_new:Npx \__pdf_backend_link_last: { }
+\cs_new_protected:Npn \__pdf_backend_link_margin:n #1 { }
+\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { }
 \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 { }
diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def
index 1b0525ee..8b056a25 100644
--- a/texmf/tex/latex/l3backend/l3backend-luatex.def
+++ b/texmf/tex/latex/l3backend/l3backend-luatex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2022-07-01}{}
+  {l3backend-luatex.def}{2022-08-05}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def
index 49fff4e7..2bcf56a2 100644
--- a/texmf/tex/latex/l3backend/l3backend-pdftex.def
+++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2022-07-01}{}
+  {l3backend-pdftex.def}{2022-08-05}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def
index dfa1bf06..2fa8d2ce 100644
--- a/texmf/tex/latex/l3backend/l3backend-xetex.def
+++ b/texmf/tex/latex/l3backend/l3backend-xetex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2022-07-01}{}
+  {l3backend-xetex.def}{2022-08-05}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index a6117989..3ef89d63 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -70,7 +70,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2022-07-15}%
+\def\ExplFileDate{2022-08-05}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -7625,6 +7625,11 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           }
       }
   }
+\cs_new_protected:Npn \sys_ensure_backend:
+  {
+    \str_if_exist:NF \c_sys_backend_str
+      { \sys_load_backend:n { } }
+  }
 \bool_new:N \g__sys_debug_bool
 \cs_new_protected:Npn \sys_load_debug:
   {
@@ -10866,7 +10871,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \int_step_inline:nnn
   { 0 }
   {
-    \cs_if_exist:NTF \normalend
+    \cs_if_exist:NTF \contextversion
       { \tex_count:D 38 ~ }
       {
         \tex_count:D 16 ~ %
@@ -10896,10 +10901,10 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \prg_generate_conditional_variant:Nnn \ior_open:Nn { c } { T , F , TF }
 \exp_args:NNf \cs_new_protected:Npn \__ior_new:N
   { \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } }
-\cs_if_exist:NT \normalend
+\cs_if_exist:NT \contextversion
   {
     \cs_new_eq:NN \__ior_new_aux:N \__ior_new:N
-    \cs_set_protected:Npn \__ior_new:N #1
+    \cs_gset_protected:Npn \__ior_new:N #1
       {
         \cs_undefine:N #1
         \__ior_new_aux:N #1
@@ -11096,7 +11101,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \int_step_inline:nnn
   { 0 }
   {
-    \cs_if_exist:NTF \normalend
+    \cs_if_exist:NTF \contextversion
       { \tex_count:D 39 ~ }
       {
         \tex_count:D 17 ~
@@ -11116,6 +11121,15 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \iow_new:N \g_tmpb_iow
 \exp_args:NNf \cs_new_protected:Npn \__iow_new:N
   { \exp_args:NNc \exp_after:wN \exp_stop_f: { newwrite } }
+\cs_if_exist:NT \contextversion
+  {
+    \cs_new_eq:NN \__iow_new_aux:N \__iow_new:N
+    \cs_gset_protected:Npn \__iow_new:N #1
+      {
+        \cs_undefine:N #1
+        \__iow_new_aux:N #1
+      }
+  }
 \tl_new:N \l__iow_file_name_tl
 \cs_new_protected:Npn \iow_open:Nn #1#2
   {
@@ -29021,14 +29035,21 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   {
     \peek_remove_filler:n
       {
+        \group_align_safe_begin:
         \peek_catcode:NTF \c_alignment_token
-          { \__color_math_scan_end: }
-          { \__color_math_scan_auxi: }
+          {
+            \group_align_safe_end:
+            \__color_math_scan_end:
+          }
+          {
+            \group_align_safe_end:
+            \__color_math_scan_auxi:
+          }
       }
   }
 \cs_new_protected:Npn \__color_math_scan_auxi:
   {
-    \token_case_meaning:NnTF \l_peek_token
+    \token_case_catcode:NnTF \l_peek_token
       {
         \c_math_subscript_token   { }
         \c_math_superscript_token { }
@@ -31726,7 +31747,19 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \quark_new:N \q__text_recursion_stop
 \cs_new:Npn \__text_use_i_delimit_by_q_recursion_stop:nw
   #1 #2 \q__text_recursion_stop {#1}
-\__kernel_quark_new_test:N \__text_if_recursion_tail_stop_do:Nn
+\__kernel_quark_new_test:N \__text_if_q_recursion_tail_stop_do:Nn
+\scan_new:N \s__text_recursion_tail
+\scan_new:N \s__text_recursion_stop
+\cs_new:Npn \__text_use_i_delimit_by_s_recursion_stop:nw
+  #1 #2 \s__text_recursion_stop {#1}
+\cs_new:Npn \__text_if_s_recursion_tail_stop_do:Nn #1
+  {
+    \bool_lazy_and:nnTF
+      { \cs_if_eq_p:NN \s__text_recursion_tail #1 }
+      { \str_if_eq_p:nn { \s__text_recursion_tail } {#1} }
+      { \__text_use_i_delimit_by_s_recursion_stop:nw }
+      { \use_none:n }
+  }
 \group_begin:
   \char_set_catcode_active:n { 0 }
   \cs_new:Npn \__text_token_to_explicit:N #1
@@ -31942,7 +31975,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   {
     \group_align_safe_begin:
     \__text_expand_loop:w #1
-      \q__text_recursion_tail \q__text_recursion_stop
+      \s__text_recursion_tail \s__text_recursion_stop
     \__text_expand_result:n { }
   }
 \cs_new:Npn \__text_expand_store:n #1
@@ -31956,7 +31989,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     \exp_end:
     #2
   }
-\cs_new:Npn \__text_expand_loop:w #1 \q__text_recursion_stop
+\cs_new:Npn \__text_expand_loop:w #1 \s__text_recursion_stop
   {
     \tl_if_head_is_N_type:nTF {#1}
       { \__text_expand_N_type:N }
@@ -31965,7 +31998,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           { \__text_expand_group:n }
           { \__text_expand_space:w }
       }
-    #1 \q__text_recursion_stop
+    #1 \s__text_recursion_stop
   }
 \cs_new:Npn \__text_expand_group:n #1
   {
@@ -31986,7 +32019,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npx \__text_expand_N_type:N #1
   {
-    \exp_not:N \__text_if_recursion_tail_stop_do:Nn #1
+    \exp_not:N \__text_if_s_recursion_tail_stop_do:Nn #1
       { \exp_not:N \__text_expand_end:w }
     \exp_not:N \bool_lazy_any:nTF
       {
@@ -32048,7 +32081,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_expand_math_search:NNN #1#2#3
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_expand_explicit:N #1 }
     \token_if_eq_meaning:NNTF #1 #2
       {
@@ -32060,7 +32093,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
       }
       { \__text_expand_math_search:NNN #1 }
   }
-\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \q__text_recursion_stop
+\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \s__text_recursion_stop
   {
     \tl_if_head_is_N_type:nTF {#2}
       { \__text_expand_math_N_type:NN }
@@ -32069,11 +32102,11 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           { \__text_expand_math_group:Nn }
           { \__text_expand_math_space:Nw }
       }
-    #1#2 \q__text_recursion_stop
+    #1#2 \s__text_recursion_stop
   }
 \cs_new:Npn \__text_expand_math_N_type:NN #1#2
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_s_recursion_tail_stop_do:Nn #2
       { \__text_expand_end:w }
     \__text_expand_store:n {#2}
     \token_if_eq_meaning:NNTF #2 #1
@@ -32140,7 +32173,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_expand_exclude:NN #1#2
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_expand_accent:N #1 }
     \str_if_eq:nnTF {#1} {#2}
       {
@@ -32164,7 +32197,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_expand_accent:NN #1#2
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_expand_letterlike:N #1 }
     \cs_if_eq:NNTF #2 #1
       {
@@ -32184,7 +32217,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_expand_letterlike:NN #1#2
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_expand_cs:N #1 }
     \cs_if_eq:NNTF #2 #1
       {
@@ -32208,7 +32241,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           { \exp_not:N \__text_expand_replace:N #1 }
       }
   }
-\cs_new:Npn \__text_expand_protect:w #1 \q__text_recursion_stop
+\cs_new:Npn \__text_expand_protect:w #1 \s__text_recursion_stop
   {
     \tl_if_head_is_N_type:nTF {#1}
       { \__text_expand_protect:N }
@@ -32216,11 +32249,11 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
         \__text_expand_store:n { \protect }
         \__text_expand_loop:w
       }
-        #1 \q__text_recursion_stop
+        #1 \s__text_recursion_stop
   }
 \cs_new:Npn \__text_expand_protect:N #1
   {
-    \__text_if_recursion_tail_stop_do:Nn #1
+    \__text_if_s_recursion_tail_stop_do:Nn #1
       {
         \__text_expand_store:n { \protect }
         \__text_expand_end:w
@@ -32295,7 +32328,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     \exp_after:wN \__text_expand_unexpanded_test:w
     \exp:w \exp_end_continue_f:w
   }
-\cs_new:Npn \__text_expand_unexpanded_test:w #1 \q__text_recursion_stop
+\cs_new:Npn \__text_expand_unexpanded_test:w #1 \s__text_recursion_stop
   {
     \tl_if_head_is_group:nTF {#1}
       { \__text_expand_unexpanded:n }
@@ -32303,7 +32336,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
         \__text_expand_unexpanded:w
         \tl_if_head_is_N_type:nT {#1} { \__text_expand_unexpanded:N }
       }
-    #1 \q__text_recursion_stop
+    #1 \s__text_recursion_stop
   }
 \cs_new:Npn \__text_expand_unexpanded:N #1
   {
@@ -32456,7 +32489,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_change_case_N_type:nnN #1#2#3
   {
-    \__text_if_recursion_tail_stop_do:Nn #3
+    \__text_if_q_recursion_tail_stop_do:Nn #3
       { \__text_change_case_end:w }
     \__text_change_case_N_type_aux:nnN {#1} {#2} #3
   }
@@ -32473,7 +32506,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_change_case_math_search:nnNNN #1#2#3#4#5
   {
-    \__text_if_recursion_tail_stop_do:Nn #4
+    \__text_if_q_recursion_tail_stop_do:Nn #4
       { \__text_change_case_cs_check:nnN {#1} {#2} #3 }
     \token_if_eq_meaning:NNTF #3 #4
       {
@@ -32498,7 +32531,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_change_case_math_N_type:nnNN #1#2#3#4
   {
-    \__text_if_recursion_tail_stop_do:Nn #4
+    \__text_if_q_recursion_tail_stop_do:Nn #4
       { \__text_change_case_end:w }
     \__text_change_case_store:n {#4}
     \token_if_eq_meaning:NNTF #4 #3
@@ -32542,7 +32575,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_change_case_exclude:nnNN #1#2#3#4
   {
-    \__text_if_recursion_tail_stop_do:Nn #4
+    \__text_if_q_recursion_tail_stop_do:Nn #4
       { \__text_change_case_replace:nnN {#1} {#2} #3 }
     \str_if_eq:nnTF {#3} {#4}
       {
@@ -32864,7 +32897,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new_eq:cc { __text_change_case_upper_de-alt:nnnN }
   { __text_change_case_upper_de-x-eszett:nnnN }
-\bool_lazy_or:nnT
+\bool_lazy_or:nnTF
   { \sys_if_engine_luatex_p: }
   { \sys_if_engine_xetex_p: }
   {
@@ -33040,6 +33073,37 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           { \__text_change_case_upper_el_gobble:nnw {#1} {#2} }
       }
   }
+  {
+    \cs_new:Npn \__text_change_case_upper_el:nnnN #1#2#3#4
+      {
+        \int_compare:nNnTF { `#4 } > { "80 }
+          {
+            \int_compare:nNnTF { `#4 } < { "E0 }
+              { \__text_change_case_upper_el:nnnNN }
+              {
+                 \int_compare:nNnTF { `#4 } < { "F0 }
+                  { \__text_change_case_upper_el:nnnNNN }
+                  { \__text_change_case_char:nnnN }
+              }
+          }
+          { \__text_change_case_char:nnnN }
+             {#1} {#2} {#3} #4
+      }
+    \cs_new:Npn \__text_change_case_upper_el:nnnNN #1#2#3#4#5
+      { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4#5} }
+    \cs_new:Npn \__text_change_case_upper_el:nnnNNN #1#2#3#4#5#6
+      { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4#5#6} }
+    \cs_new:Npn \__text_change_case_upper_el:nnnn #1#2#3#4
+      {
+        \cs_if_exist:cTF { c__text_uppercase_el_ \tl_to_str:n {#4} _tl }
+          {
+            \__text_change_case_store:v
+              { c__text_uppercase_el_ \tl_to_str:n {#4} _tl }
+            \__text_change_case_loop:nnw {#1} {#3}
+          }
+          { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 }
+      }
+  }
 \prg_new_conditional:Npnn \__text_change_case_if_greek:n #1 { TF }
   {
     \if_int_compare:w #1 < "0370 \exp_stop_f:
@@ -33831,6 +33895,24 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
       \__text_tmp:w { 03F1 } { 03A1 } { upper }
       \__text_tmp:w { 03F4 } { 03B8 } { lower }
       \__text_tmp:w { 03F5 } { 0395 } { upper }
+      \__text_tmp:w { 01C4 } { 01C5 } { title }
+      \__text_tmp:w { 01C4 } { 01C6 } { lower }
+      \__text_tmp:w { 01C5 } { 01C4 } { upper }
+      \__text_tmp:w { 01C5 } { 01C6 } { lower }
+      \__text_tmp:w { 01C6 } { 01C4 } { upper }
+      \__text_tmp:w { 01C6 } { 01C5 } { title }
+      \__text_tmp:w { 01C7 } { 01C8 } { title }
+      \__text_tmp:w { 01C7 } { 01C9 } { lower }
+      \__text_tmp:w { 01C8 } { 01C7 } { upper }
+      \__text_tmp:w { 01C8 } { 01C9 } { lower }
+      \__text_tmp:w { 01C9 } { 01C7 } { upper }
+      \__text_tmp:w { 01C9 } { 01C8 } { title }
+      \__text_tmp:w { 01CA } { 01CB } { title }
+      \__text_tmp:w { 01CA } { 01CC } { lower }
+      \__text_tmp:w { 01CB } { 01CA } { upper }
+      \__text_tmp:w { 01CB } { 01CC } { lower }
+      \__text_tmp:w { 01CC } { 01CA } { upper }
+      \__text_tmp:w { 01CC } { 01CB } { title }
       \cs_set_protected:Npn \__text_tmp:w #1#2#3
         {
           \group_begin:
@@ -34020,6 +34102,368 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
           \group_end:
         }
     \__text_tmp:w { 1FBE } { 0399 } { upper }
+      \cs_set_protected:Npn \__text_tmp:w #1#2#3#4#5#6#7#8
+        {
+          \tl_const:cx
+            {
+              c__text_uppercase_el_
+              \char_generate:nn {#1} { 12 }
+              \char_generate:nn {#2} { 12 }
+              _tl
+            }
+            {
+              \exp_after:wN \exp_after:wN \exp_after:wN
+                \exp_not:N \char_generate:nn {#5} { 13 }
+              \exp_after:wN \exp_after:wN \exp_after:wN
+                \exp_not:N \char_generate:nn {#6} { 13 }
+            }
+        }
+      \__text_loop:nn
+        { 0370 } { 0370 }
+        { 0371 } { 0370 }
+        { 0372 } { 0372 }
+        { 0373 } { 0372 }
+        { 0376 } { 0376 }
+        { 0377 } { 0376 }
+        { 03FD } { 03FD }
+        { 037B } { 03FD }
+        { 03FE } { 03FE }
+        { 037C } { 03FE }
+        { 03FF } { 03FF }
+        { 037D } { 03FF }
+        { 0386 } { 0391 }
+        { 0388 } { 0395 }
+        { 0389 } { 0397 }
+        { 038A } { 0399 }
+        { 038C } { 039F }
+        { 038E } { 03A5 }
+        { 038F } { 03A9 }
+        { 0390 } { 03AA }
+        { 0391 } { 0391 }
+        { 0392 } { 0392 }
+        { 0393 } { 0393 }
+        { 0394 } { 0394 }
+        { 0395 } { 0395 }
+        { 0396 } { 0396 }
+        { 0397 } { 0397 }
+        { 0398 } { 0398 }
+        { 0399 } { 0399 }
+        { 039A } { 039A }
+        { 039B } { 039B }
+        { 039C } { 039C }
+        { 039D } { 039D }
+        { 039E } { 039E }
+        { 039F } { 039F }
+        { 03A0 } { 03A0 }
+        { 03A1 } { 03A1 }
+        { 03A3 } { 03A3 }
+        { 03A4 } { 03A4 }
+        { 03A5 } { 03A5 }
+        { 03A6 } { 03A6 }
+        { 03A7 } { 03A7 }
+        { 03A8 } { 03A8 }
+        { 03A9 } { 03A9 }
+        { 03AA } { 03AA }
+        { 03AB } { 03AB }
+        { 03AC } { 0391 }
+        { 03AD } { 0395 }
+        { 03AE } { 0397 }
+        { 03AF } { 0399 }
+        { 03B0 } { 03AB }
+        { 03B1 } { 0391 }
+        { 03B2 } { 0392 }
+        { 03B3 } { 0393 }
+        { 03B4 } { 0394 }
+        { 03B5 } { 0395 }
+        { 03B6 } { 0396 }
+        { 03B7 } { 0397 }
+        { 03B8 } { 0398 }
+        { 03B9 } { 0399 }
+        { 03BA } { 039A }
+        { 03BB } { 039B }
+        { 03BC } { 039C }
+        { 03BD } { 039D }
+        { 03BE } { 039E }
+        { 03BF } { 039F }
+        { 03C0 } { 03A0 }
+        { 03C1 } { 03A1 }
+        { 03C2 } { 03A3 }
+        { 03C3 } { 03A3 }
+        { 03C4 } { 03A4 }
+        { 03C5 } { 03A5 }
+        { 03C6 } { 03A6 }
+        { 03C7 } { 03A7 }
+        { 03C8 } { 03A8 }
+        { 03C9 } { 03A9 }
+        { 03CA } { 03AA }
+        { 03CB } { 03AB }
+        { 03CC } { 039F }
+        { 03CD } { 03A5 }
+        { 03CE } { 03A9 }
+        { 03D0 } { 0392 }
+        { 03D1 } { 0398 }
+        { 03D2 } { 03A5 }
+        { 03D3 } { 03A5 }
+        { 03D4 } { 03AB }
+        { 03D5 } { 03A6 }
+        { 03D6 } { 03A0 }
+        { 03DA } { 03DA }
+        { 03DB } { 03DA }
+        { 03DC } { 03DC }
+        { 03DD } { 03DC }
+        { 03DE } { 03DE }
+        { 03DF } { 03DE }
+        { 03E0 } { 03E0 }
+        { 03E1 } { 03E0 }
+        { 03F0 } { 039A }
+        { 03F1 } { 03A1 }
+        { 03F2 } { 03F9 }
+        { 03F9 } { 03F9 }
+        \q_recursion_tail ?
+        \q_recursion_stop
+      \cs_set_protected:Npn \__text_tmp:w #1#2#3#4#5#6#7#8
+        {
+          \tl_const:cx
+            {
+              c__text_uppercase_el_
+              \char_generate:nn {#1} { 12 }
+              \char_generate:nn {#2} { 12 }
+              \char_generate:nn {#3} { 12 }
+              _tl
+            }
+            {
+              \exp_after:wN \exp_after:wN \exp_after:wN
+                \exp_not:N \char_generate:nn {#5} { 13 }
+              \exp_after:wN \exp_after:wN \exp_after:wN
+                \exp_not:N \char_generate:nn {#6} { 13 }
+              \tl_if_blank:nF {#7}
+                {
+                  \exp_after:wN \exp_after:wN \exp_after:wN
+                    \exp_not:N \char_generate:nn {#7} { 13 }
+                }
+            }
+        }
+      \__text_loop:nn
+        { 1F00 } { 0391 }
+        { 1F01 } { 0391 }
+        { 1F02 } { 0391 }
+        { 1F03 } { 0391 }
+        { 1F04 } { 0391 }
+        { 1F05 } { 0391 }
+        { 1F06 } { 0391 }
+        { 1F07 } { 0391 }
+        { 1F08 } { 0391 }
+        { 1F09 } { 0391 }
+        { 1F0A } { 0391 }
+        { 1F0B } { 0391 }
+        { 1F0C } { 0391 }
+        { 1F0D } { 0391 }
+        { 1F0E } { 0391 }
+        { 1F0F } { 0391 }
+        { 1F10 } { 0395 }
+        { 1F11 } { 0395 }
+        { 1F12 } { 0395 }
+        { 1F13 } { 0395 }
+        { 1F14 } { 0395 }
+        { 1F15 } { 0395 }
+        { 1F18 } { 0395 }
+        { 1F19 } { 0395 }
+        { 1F1A } { 0395 }
+        { 1F1B } { 0395 }
+        { 1F1C } { 0395 }
+        { 1F1D } { 0395 }
+        { 1F20 } { 0397 }
+        { 1F21 } { 0397 }
+        { 1F22 } { 0397 }
+        { 1F23 } { 0397 }
+        { 1F24 } { 0397 }
+        { 1F25 } { 0397 }
+        { 1F26 } { 0397 }
+        { 1F27 } { 0397 }
+        { 1F28 } { 0397 }
+        { 1F29 } { 0397 }
+        { 1F2A } { 0397 }
+        { 1F2B } { 0397 }
+        { 1F2C } { 0397 }
+        { 1F2D } { 0397 }
+        { 1F2E } { 0397 }
+        { 1F2F } { 0397 }
+        { 1F30 } { 0399 }
+        { 1F31 } { 0399 }
+        { 1F32 } { 0399 }
+        { 1F33 } { 0399 }
+        { 1F34 } { 0399 }
+        { 1F35 } { 0399 }
+        { 1F36 } { 0399 }
+        { 1F37 } { 0399 }
+        { 1F38 } { 0399 }
+        { 1F39 } { 0399 }
+        { 1F3A } { 0399 }
+        { 1F3B } { 0399 }
+        { 1F3C } { 0399 }
+        { 1F3D } { 0399 }
+        { 1F3E } { 0399 }
+        { 1F3F } { 0399 }
+        { 1F40 } { 039F }
+        { 1F41 } { 039F }
+        { 1F42 } { 039F }
+        { 1F43 } { 039F }
+        { 1F44 } { 039F }
+        { 1F45 } { 039F }
+        { 1F48 } { 039F }
+        { 1F49 } { 039F }
+        { 1F4A } { 039F }
+        { 1F4B } { 039F }
+        { 1F4C } { 039F }
+        { 1F4D } { 039F }
+        { 1F50 } { 03A5 }
+        { 1F51 } { 03A5 }
+        { 1F52 } { 03A5 }
+        { 1F53 } { 03A5 }
+        { 1F54 } { 03A5 }
+        { 1F55 } { 03A5 }
+        { 1F56 } { 03A5 }
+        { 1F57 } { 03A5 }
+        { 1F59 } { 03A5 }
+        { 1F5B } { 03A5 }
+        { 1F5D } { 03A5 }
+        { 1F5F } { 03A5 }
+        { 1F60 } { 03A9 }
+        { 1F61 } { 03A9 }
+        { 1F62 } { 03A9 }
+        { 1F63 } { 03A9 }
+        { 1F64 } { 03A9 }
+        { 1F65 } { 03A9 }
+        { 1F66 } { 03A9 }
+        { 1F67 } { 03A9 }
+        { 1F68 } { 03A9 }
+        { 1F69 } { 03A9 }
+        { 1F6A } { 03A9 }
+        { 1F6B } { 03A9 }
+        { 1F6C } { 03A9 }
+        { 1F6D } { 03A9 }
+        { 1F6E } { 03A9 }
+        { 1F6F } { 03A9 }
+        { 1F70 } { 0391 }
+        { 1F71 } { 0391 }
+        { 1F72 } { 0395 }
+        { 1F73 } { 0395 }
+        { 1F74 } { 0397 }
+        { 1F75 } { 0397 }
+        { 1F76 } { 0399 }
+        { 1F77 } { 0399 }
+        { 1F78 } { 039F }
+        { 1F79 } { 039F }
+        { 1F7A } { 03A5 }
+        { 1F7B } { 03A5 }
+        { 1F7C } { 03A9 }
+        { 1F7D } { 03A9 }
+        { 1F80 } { 1FBC }
+        { 1F81 } { 1FBC }
+        { 1F82 } { 1FBC }
+        { 1F83 } { 1FBC }
+        { 1F84 } { 1FBC }
+        { 1F85 } { 1FBC }
+        { 1F86 } { 1FBC }
+        { 1F87 } { 1FBC }
+        { 1F88 } { 1FBC }
+        { 1F89 } { 1FBC }
+        { 1F8A } { 1FBC }
+        { 1F8B } { 1FBC }
+        { 1F8C } { 1FBC }
+        { 1F8D } { 1FBC }
+        { 1F8E } { 1FBC }
+        { 1F8F } { 1FBC }
+        { 1F90 } { 1FCC }
+        { 1F91 } { 1FCC }
+        { 1F92 } { 1FCC }
+        { 1F93 } { 1FCC }
+        { 1F94 } { 1FCC }
+        { 1F95 } { 1FCC }
+        { 1F96 } { 1FCC }
+        { 1F97 } { 1FCC }
+        { 1F98 } { 1FCC }
+        { 1F99 } { 1FCC }
+        { 1F9A } { 1FCC }
+        { 1F9B } { 1FCC }
+        { 1F9C } { 1FCC }
+        { 1F9D } { 1FCC }
+        { 1F9E } { 1FCC }
+        { 1F9F } { 1FCC }
+        { 1FA0 } { 1FFC }
+        { 1FA1 } { 1FFC }
+        { 1FA2 } { 1FFC }
+        { 1FA3 } { 1FFC }
+        { 1FA4 } { 1FFC }
+        { 1FA5 } { 1FFC }
+        { 1FA6 } { 1FFC }
+        { 1FA7 } { 1FFC }
+        { 1FA8 } { 1FFC }
+        { 1FA9 } { 1FFC }
+        { 1FAA } { 1FFC }
+        { 1FAB } { 1FFC }
+        { 1FAC } { 1FFC }
+        { 1FAD } { 1FFC }
+        { 1FAE } { 1FFC }
+        { 1FAF } { 1FFC }
+        { 1FB0 } { 1FB8 }
+        { 1FB1 } { 1FB9 }
+        { 1FB2 } { 1FBC }
+        { 1FB3 } { 1FBC }
+        { 1FB4 } { 1FBC }
+        { 1FB6 } { 0391 }
+        { 1FB7 } { 1FBC }
+        { 1FB8 } { 1FB8 }
+        { 1FB9 } { 1FB9 }
+        { 1FBA } { 0391 }
+        { 1FBB } { 0391 }
+        { 1FBC } { 1FBC }
+        { 1FBD } { 1FBD }
+        { 1FC2 } { 1FCC }
+        { 1FC3 } { 1FCC }
+        { 1FC4 } { 1FCC }
+        { 1FC6 } { 0397 }
+        { 1FC7 } { 1FCC }
+        { 1FC8 } { 0395 }
+        { 1FC9 } { 0395 }
+        { 1FCA } { 0397 }
+        { 1FCB } { 0397 }
+        { 1FCC } { 1FCC }
+        { 1FD0 } { 1FD8 }
+        { 1FD1 } { 1FD9 }
+        { 1FD2 } { 03AA }
+        { 1FD3 } { 03AA }
+        { 1FD6 } { 0399 }
+        { 1FD7 } { 03AA }
+        { 1FD8 } { 1FD8 }
+        { 1FD9 } { 1FD9 }
+        { 1FDA } { 0399 }
+        { 1FDB } { 0399 }
+        { 1FE0 } { 1FE8 }
+        { 1FE1 } { 1FE9 }
+        { 1FE2 } { 03AB }
+        { 1FE3 } { 03AB }
+        { 1FE4 } { 03A1 }
+        { 1FE5 } { 03A1 }
+        { 1FE6 } { 03A5 }
+        { 1FE7 } { 03AB }
+        { 1FE8 } { 1FE8 }
+        { 1FE9 } { 1FE9 }
+        { 1FEA } { 03A5 }
+        { 1FEB } { 03A5 }
+        { 1FEC } { 1FEC }
+        { 1FF2 } { 1FFC }
+        { 1FF3 } { 1FFC }
+        { 1FF4 } { 1FFC }
+        { 1FF6 } { 03A9 }
+        { 1FF7 } { 1FFC }
+        { 1FF8 } { 039F }
+        { 1FF9 } { 039F }
+        { 1FFA } { 03A9 }
+        { 1FFB } { 03A9 }
+        { 1FFC } { 1FFC }
+        \q_recursion_tail ?
+        \q_recursion_stop
   }
 \group_end:
 \group_begin:
@@ -34132,7 +34576,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_purify_N_type:N #1
   {
-    \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w }
+    \__text_if_q_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w }
     \__text_purify_N_type_aux:N #1
   }
 \cs_new:Npn \__text_purify_N_type_aux:N #1
@@ -34144,7 +34588,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_purify_math_search:NNN #1#2#3
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_purify_math_cmd:N #1 }
     \token_if_eq_meaning:NNTF #1 #2
       {
@@ -34185,7 +34629,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_purify_math_N_type:NNN #1#2#3
   {
-    \__text_if_recursion_tail_stop_do:Nn #3
+    \__text_if_q_recursion_tail_stop_do:Nn #3
       { \__text_purify_math_stop:Nw #1 }
     \token_if_eq_meaning:NNTF #3 #2
       { \__text_purify_math_end:w }
@@ -34213,7 +34657,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_purify_math_cmd:NN #1#2
   {
-    \__text_if_recursion_tail_stop_do:Nn #2
+    \__text_if_q_recursion_tail_stop_do:Nn #2
       { \__text_purify_replace:N #1 }
     \cs_if_eq:NNTF #2 #1
       {
@@ -34256,7 +34700,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_new:Npn \__text_purify_protect:N #1
   {
-    \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w }
+    \__text_if_q_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w }
     \__text_purify_loop:w
   }
 \cs_new:Npn \__text_purify_encoding:N #1
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index b1818647..88cd00c7 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{2022-07-15}%
+\def\ExplFileDate{2022-08-05}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index a443e4ce..98aeaab7 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{2022-07-15}%
+\def\ExplFileDate{2022-08-05}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index d75eba2b..bb4e1763 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{2022-07-15}%
+\def\ExplFileDate{2022-08-05}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%





More information about the latex3-commits mailing list.