From 68000a49928e6bb364140f025edf109855b643b2 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Fri, 22 Oct 2021 21:41:02 +0000
Subject: latex-dev (22oct21)

git-svn-id: svn://tug.org/texlive/trunk@60842 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/tex/latex-dev/base/latexrelease.sty | 276 ++++++++++++++++++---
 1 file changed, 246 insertions(+), 30 deletions(-)

(limited to 'Master/texmf-dist/tex/latex-dev/base/latexrelease.sty')

diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 0e580141cd2..96c73e3caa2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -4441,8 +4441,8 @@ of this package available from CTAN}
 \catcode`\^^@=\@latexrelease@catcode@null\relax
 
 %%% From File: lthooks.dtx
-\def\lthooksversion{v1.0r}
-\def\lthooksdate{2021/09/06}
+\def\lthooksversion{v1.0s}
+\def\lthooksdate{2021/09/28}
 \ExplSyntaxOn
 \NewModuleRelease{2020/10/01}{lthooks}
                  {The~hook~management~system}
@@ -4844,7 +4844,7 @@ of this package available from CTAN}
   }
 \cs_new_protected:Npn \__hook_try_declaring_generic_hook:nNNnn #1
   {
-    \__hook_if_file_hook:wTF #1 / \s__hook_mark {#1}
+    \__hook_if_file_hook:wTF #1 / \s__hook_mark
       {
         \exp_args:Ne \__hook_try_declaring_generic_hook_split:nNNnn
           { \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
@@ -5617,7 +5617,7 @@ of this package available from CTAN}
   }
 \cs_new_protected:Npn \__hook_try_file_hook:n #1
   {
-    \__hook_if_file_hook:wTF #1 / \s__hook_mark {#1}
+    \__hook_if_file_hook:wTF #1 / \s__hook_mark
       {
         \exp_args:Ne \__hook_if_usable_use:n
           { \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
@@ -5997,16 +5997,21 @@ of this package available from CTAN}
 %% File: ltcmdhooks.dtx (C) Copyright 2020-2021
 %%       Frank Mittelbach, Phelype Oleinik, LaTeX Team
 %%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0d}
-\def\ltcmdhooksdate{2021/08/25}
+\def\ltcmdhooksversion{v1.0f}
+\def\ltcmdhooksdate{2021/10/20}
 \ExplSyntaxOn
 \NewModuleRelease{2021/06/01}{ltcmdhooks}
                  {The~hook~management~system~for~commands}
 \tl_new:N \g_hook_patch_action_list_tl
 \int_new:N \l__hook_patch_num_args_int
 \tl_new:N \l__hook_patch_prefixes_tl
-\tl_new:N \l__hook_patch_param_text_tl
-\tl_new:N \l__hook_patch_replacement_tl
+\tl_new:N \l__hook_param_text_tl
+\tl_new:N \l__hook_replace_text_tl
+\tl_const:Nn \c__hook_hash_tl { # # }
+\cs_new_eq:NN \__hook_exp_not:NN ?
+\cs_new_eq:NN \__hook_def_cmd:w ?
+\quark_new:N \q__hook_recursion_tail
+\quark_new:N \q__hook_recursion_stop
 \prop_new:N \g__hook_delayed_patches_prop
 \cs_new_protected:Npn \__hook_patch_debug:x #1
   { \__hook_debug:n { \iow_term:x { [lthooks]~#1 } } }
@@ -6154,19 +6159,40 @@ of this package available from CTAN}
       }
     \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int }
       {
-        \tl_set:Nx \l__hook_patch_param_text_tl
-          { \bool_if:NTF #1 { [####1] } {  ####1  } }
-        \tl_set:Nx \l__hook_patch_replacement_tl
-          { \bool_if:NTF #1 { [####1] } { {####1} } }
+        \tl_set:Nx \l__hook_tmpa_tl { \bool_if:NTF #1 { [ ] } { { } } }
         \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+          { \tl_put_right:Nn \l__hook_tmpa_tl { { } } }
+        \exp_args:NNo \exp_args:No \__hook_if_has_hash:nTF
+            { \exp_after:wN #2 \l__hook_tmpa_tl }
+          { \cs_set_eq:NN \__hook_exp_not:n \exp_not:n }
+          { \cs_set_eq:NN \__hook_exp_not:n \use:n }
+        \cs_set_protected:Npn \__hook_tmp:w ##1 ##2
           {
-            \tl_put_right:Nn \l__hook_patch_param_text_tl    { ## ####1 }
-            \tl_put_right:Nn \l__hook_patch_replacement_tl { { ## ####1 } }
+            ##1 \l__hook_param_text_tl   { \use:n ##2 }
+            ##1 \l__hook_replace_text_tl { \__hook_exp_not:n {##2} }
           }
+        \bool_if:NTF #1
+          { \__hook_tmp:w \tl_set:Nx { [ \c__hook_hash_tl 1 ] } }
+          { \__hook_tmp:w \tl_set:Nx { { \c__hook_hash_tl 1 } } }
+        \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+          { \__hook_tmp:w \tl_put_right:Nx { { \c__hook_hash_tl ##1 } } }
+        \tl_set:Nx \l__hook_replace_text_tl
+          { \exp_not:N #2 \exp_not:V \l__hook_replace_text_tl }
+        \tl_set:Nx \l__hook_replace_text_tl
+          {
+            \token_if_eq_meaning:NNTF \__hook_exp_not:n \exp_not:n
+              { \exp_args:NNV \exp_args:No \__hook_double_hashes:n }
+              { \exp_args:NV \exp_not:o }
+                  \l__hook_replace_text_tl
+          }
+        \cs_set_eq:NN \__hook_def_cmd:w \tex_gdef:D
+        \cs_set_eq:NN \__hook_exp_not:NN \prg_do_nothing:
       }
       {
-        \tl_clear:N \l__hook_patch_param_text_tl
-        \tl_clear:N \l__hook_patch_replacement_tl
+        \tl_clear:N \l__hook_param_text_tl
+        \tl_set_eq:NN \l__hook_replace_text_tl #2
+        \cs_set_eq:NN \__hook_def_cmd:w \tex_xdef:D
+        \cs_set:Npn \__hook_exp_not:NN ##1 { \exp_not:N ##1 \exp_not:N }
       }
     \group_begin:
       \int_set:Nn \tex_escapechar:D { `\/ }
@@ -6178,18 +6204,22 @@ of this package available from CTAN}
         }
     \use:x
       {
-        \l__hook_patch_prefixes_tl \tex_def:D
-            \exp_not:N #2 \exp_not:V \l__hook_patch_param_text_tl
-          {
-            \str_if_eq:nnT {#4} { before }
-              { \exp_not:N \UseHook { cmd / #3 / #4 } }
-            \exp_args:No \exp_not:o
-              { \exp_after:wN #2 \l__hook_patch_replacement_tl }
-            \str_if_eq:nnT {#4} { after }
-              { \exp_not:N \UseHook { cmd / #3 / #4 } }
-          }
+        \__hook_redefine_with_hooks:Nnnn \exp_not:N #2
+        \str_if_eq:nnTF {#4} { after }
+          { \use_ii_i:nn }
+          { \use:nn }
+            { { \__hook_exp_not:NN \exp_not:N \UseHook { cmd / #3 / #4 } } }
+            { { } }
+            { \__hook_exp_not:NN \exp_not:V \l__hook_replace_text_tl }
       }
   }
+\cs_new_protected:Npn \__hook_redefine_with_hooks:Nnnn #1 #2 #3 #4
+  {
+    \l__hook_patch_prefixes_tl
+      \exp_after:wN \__hook_def_cmd:w
+        \exp_after:wN #1 \l__hook_param_text_tl
+      { #2  #4  #3 }
+  }
 \cs_new:Npn \__hook_make_prefixes:w / #1 /
   {
     \tl_if_empty:nF {#1}
@@ -6198,6 +6228,58 @@ of this package available from CTAN}
         \__hook_make_prefixes:w /
       }
   }
+\prg_new_conditional:Npnn \__hook_if_has_hash:n #1 { TF }
+  { \__hook_if_has_hash:w #1 ## \s__hook_mark }
+\cs_new:Npn \__hook_if_has_hash:w #1
+  {
+    \tl_if_single_token:nTF {#1}
+      {
+        \token_if_eq_catcode:NNTF ## #1
+          { \__hook_if_has_hash_check:w }
+          { \__hook_if_has_hash:w }
+      }
+      { \__hook_if_has_hash:w #1 }
+  }
+\cs_new:Npn \__hook_if_has_hash_check:w #1 \s__hook_mark
+  { \tl_if_empty:nTF {#1} { \prg_return_false: } { \prg_return_true: } }
+\cs_new:Npn \__hook_double_hashes:n #1
+  { \__hook_double_hashes:w #1 \q__hook_recursion_tail \q__hook_recursion_stop }
+\cs_new:Npn \__hook_double_hashes:w #1 \q__hook_recursion_stop
+  {
+    \tl_if_head_is_N_type:nTF {#1}
+      { \__hook_double_hashes_output:N }
+      {
+        \tl_if_head_is_group:nTF {#1}
+          { \__hook_double_hashes_group:n }
+          { \__hook_double_hashes_space:w }
+      }
+    #1 \q__hook_recursion_stop
+  }
+\cs_new:Npn \__hook_double_hashes_output:N #1
+  {
+    \if_meaning:w \q__hook_recursion_tail #1
+      \__hook_double_hashes_stop:w
+    \fi:
+    \if_meaning:w \c__hook_hash_tl #1
+      \use_i:nnnn
+    \fi:
+    \use:n
+      {
+        \if_catcode:w ## \exp_not:N #1
+          \exp_after:wN \use_ii:nnnn
+        \fi:
+        \use_none:n
+          { \exp_not:n { #1 #1 } }
+      }
+    \exp_not:N #1
+    \__hook_double_hashes:w
+  }
+\cs_new:Npn \__hook_double_hashes_stop:w #1 \q__hook_recursion_stop { \fi: }
+\cs_new:Npn \__hook_double_hashes_group:n #1
+  { { \__hook_double_hashes:n {#1} } \__hook_double_hashes:w }
+\exp_last_unbraced:NNo
+\cs_new:Npn \__hook_double_hashes_space:w \c_space_tl
+  { ~ \__hook_double_hashes:w }
 \cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3
   {
     \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
@@ -6298,7 +6380,7 @@ of this package available from CTAN}
           { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
       }
     \tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
-    \cs_set_eq:NN #1 \kerneltmpDoNotUse
+    \cs_gset_eq:NN #1 \kerneltmpDoNotUse
   }
 \IncludeInRelease{2021/11/15}{wrong-cmd-hook}%
                  {Standardise~generic~hook~names}
@@ -6387,8 +6469,8 @@ of this package available from CTAN}
 %%% From File: ltpar.dtx
 %% File: ltpara.dtx (C) Copyright 2020-2021
 %%% From File: ltpara.dtx
-\def\ltparaversion{v1.0j}
-\def\ltparadate{2021/09/18}
+\def\ltparaversion{v1.0k}
+\def\ltparadate{2021/10/19}
 
 
 \ExplSyntaxOn
@@ -6526,6 +6608,9 @@ of this package available from CTAN}
 \cs_set_eq:NN \@@par   \tex_par:D
 \cs_set_eq:NN \endgraf \tex_par:D
 
+\tex_everypar:D {}
+\cs_set_eq:NN \everypar \tex_everypar:D
+
 \EndModuleRelease
 \ExplSyntaxOff
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7118,6 +7203,7 @@ of this package available from CTAN}
 \IncludeInRelease{2020/10/01}%
                  {\@include}{Spaces in file names and hooks}%
 \def\@include#1 {%
+\ifx\@nodocument\relax
   \clearpage
   \if@filesw
     \immediate\write\@mainaux{\string\@input{#1.aux}}%
@@ -7153,7 +7239,12 @@ of this package available from CTAN}
     \deadcycles\z@
     \@nameuse{cp@#1}%
   \fi
-  \let\@auxout\@mainaux}
+  \let\@auxout\@mainaux
+\else
+\@latex@warning{%
+  \noexpand\include should only be used after \string\begin{document}}%
+\@input@{#1}%
+\fi}
 \NewHook{include/before}
 \NewReversedHook{include/end}
 \NewReversedHook{include/after}
@@ -8839,8 +8930,86 @@ of this package available from CTAN}
  }%
 }
 \EndIncludeInRelease
+\IncludeInRelease{2021/11/15}
+  {\document@select@group}{\document@select@group}%
+\ifx\c@localmathalphabets\@undefined
+  \newcount\c@localmathalphabets
+  \setcounter{localmathalphabets}{2}
+\fi
+\def\document@select@group#1#2#3#4{%
+ \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+ {%
+ \ifmmode
+   \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top
+     \ifnum \numexpr\e@mathgroup@top-\c@localmathalphabets
+              >\csname c@mv@\math@version\endcsname
+     \else
+       \ifcsname mv@\math@version @frozen\endcsname \else
+         \expandafter\freeze@math@version\expandafter{\math@version}%
+       \fi
+     \fi
+     \begingroup
+       \escapechar\m@ne
+       \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
+       \globaldefs\@ne  \math@fonts
+     \endgroup
+     \expandafter\extract@alph@from@version
+         \csname mv@\math@version\expandafter\endcsname
+         \expandafter{\number\csname
+                       c@mv@\math@version\endcsname}%
+          #1%
+     \global\advance\csname c@mv@\math@version\endcsname\@ne
+   \else
+     \let#1\relax
+     \@latex@error{Too many math alphabets used in
+                   version \math@version}%
+        \@eha
+  \fi
+ \else \expandafter\expandafter\expandafter\non@alpherr\fi
+ \expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi
+ }%
+}
+\ExplSyntaxOn
+\cs_new_protected:Npn\freeze@math@version #1 {
+  \@font@info{Freeze~ math~ alphabet~ allocation~ in~ version~
+              #1.\MessageBreak
+              Allocated~math~groups:~\int_use:c{ c@mv@ #1 }~
+              (local:~  \int_use:N\c@localmathalphabets)      }
+  \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 }
+  \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } }
+  \group_insert_after:N \__nfss_init_mv_freeze:N \exp_after:wN
+    \group_insert_after:N \cs:w mv@#1@reset \cs_end:
+  \tl_gput_right:No \check@mathfonts
+       {
+         \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end:
+       }
+  \cs_gset:cpn{mv@#1@reset}
+     {
+         \int_compare:nNnTF { \int_use:c{c@mv@#1} } >
+                            { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} }
+             {
+               \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1}
+               \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen }
+               \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} }
+               \group_begin:
+                 \cs_set_eq:NN \getanddefine@fonts \use_none:nn
+                 \use:c {mv@#1}
+               \group_end:
+             }
+             {
+               \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1}
+             }
+    }
+}
+\cs_new_protected:Npn \__nfss_init_mv_freeze:N #1 {%
+  \mode_if_math:T { \group_insert_after:N \__nfss_init_mv_freeze:N
+                    \group_insert_after:N } #1
+}
+\ExplSyntaxOff
+\EndIncludeInRelease
 \IncludeInRelease{2020/10/01}
   {\document@select@group}{\document@select@group}%
+
 \def\document@select@group#1#2#3#4{%
  \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
  {%
@@ -8930,6 +9099,18 @@ of this package available from CTAN}
  }%
 }
 \EndIncludeInRelease
+\IncludeInRelease{2021/11/15}%
+                 {\DeclareMathVersion}{local alphabets}%
+\def\DeclareMathVersion#1{%
+  \@namedef{g__nfss_frozen_mv_#1_tl}{}%
+  \expandafter\new@mathversion\csname mv@#1\endcsname}
+\@onlypreamble\DeclareMathVersion
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\DeclareMathVersion}{local alphabets}%
+\def\DeclareMathVersion#1{%
+  \expandafter\new@mathversion\csname mv@#1\endcsname}
+\EndIncludeInRelease
 \IncludeInRelease{2019/10/01}%
                  {DeclareMathAccent}{Make math accents robust}%
 \def\DeclareMathAccent#1#2#3#4{%
@@ -11372,6 +11553,23 @@ of this package available from CTAN}
   \baselineskip\normalbaselineskip
   \sloppy}
 \EndIncludeInRelease
+\IncludeInRelease{2021/11/15}%
+                 {\@mpfootnotetext}{footnotetext tagging}%
+\long\def\@mpfootnotetext#1{%
+  \global\setbox\@mpfootins\vbox{%
+    \unvbox\@mpfootins
+    \reset@font\footnotesize
+    \hsize\columnwidth
+    \@parboxrestore
+    \def\@currentcounter{mpfootnote}%
+    \protected@edef\@currentlabel
+         {\csname p@mpfootnote\endcsname\@thefnmark}%
+    \color@begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
+    \color@endgroup}}
+\EndIncludeInRelease
 \IncludeInRelease{2021/06/01}%
                  {\@mpfootnotetext}{footnotetext tagging}%
 \long\def\@mpfootnotetext#1{%
@@ -12427,6 +12625,24 @@ of this package available from CTAN}
                  {\@textsubscript}{subscript baseline}%
 \let\@textsubscript\@undefined
 \EndIncludeInRelease
+\IncludeInRelease{2021/11/15}%
+                 {\@footnotetext}{footnotetext tagging}%
+\long\def\@footnotetext#1{\insert\footins{%
+    \reset@font\footnotesize
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+    \hsize\columnwidth \@parboxrestore
+    \def\@currentcounter{footnote}%
+    \protected@edef\@currentlabel{%
+       \csname p@footnote\endcsname\@thefnmark
+    }%
+    \color@begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
+    \color@endgroup}}%
+\EndIncludeInRelease
 \IncludeInRelease{2021/06/01}%
                  {\@footnotetext}{footnotetext tagging}%
 \long\def\@footnotetext#1{\insert\footins{%
-- 
cgit v1.2.3

