From fed27f633aadbacbd3d1221da7993fed8d4efffe Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Sun, 15 Sep 2019 03:00:57 +0000
Subject: CTAN sync 201909150300

---
 macros/latex-dev/base/ltfssdcl.dtx | 199 ++++++++++++++++++++++++++++++++++---
 1 file changed, 187 insertions(+), 12 deletions(-)

(limited to 'macros/latex-dev/base/ltfssdcl.dtx')

diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx
index cca3df4693..d1284a08e8 100644
--- a/macros/latex-dev/base/ltfssdcl.dtx
+++ b/macros/latex-dev/base/ltfssdcl.dtx
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright 1993-2016
+% Copyright (C) 1993-2019
 % The LaTeX3 Project and any individual authors listed elsewhere
 % in this file.
 %
@@ -13,7 +13,7 @@
 % The latest version of this license is in
 %    https://www.latex-project.org/lppl.txt
 % and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
+% version 2008 or later.
 %
 % This file has the LPPL maintenance status "maintained".
 %
@@ -36,7 +36,7 @@
 %
 %
 \ProvidesFile{ltfssdcl.dtx}
-            [2016/02/18 v3.0r LaTeX Kernel (NFSS Declarative Interface)]
+            [2019/08/27 v3.0s LaTeX Kernel (NFSS Declarative Interface)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -1078,12 +1078,17 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\DeclareMathAlphabet}
-% could do with more checks like allowing single number in |#4|
-% lowercase in |#4| etc
+% \begin{macro}{\DeclareMathAccent}
+%    Could do with more checks like allowing single number in |#4|
+%    lowercase in |#4| etc
 % \changes{v3.0r}{2016/02/18}
 %         {Check for mathaccent not \cs{mathaccemt}}
+% \changes{v3.0s}{2019/08/27}{Make math accents robust}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {DeclareMathAccent}{Make math accents robust}%
 \def\DeclareMathAccent#1#2#3#4{%
   \expandafter\in@\csname sym#3\expandafter\endcsname
      \expandafter{\group@list}%
@@ -1097,9 +1102,14 @@
       \advance\count\tw@-\count@
       \if\relax\noexpand#1% is command?
         \edef\reserved@a{\noexpand\in@
-           {\expandafter\@gobble\string\mathaccent}{\meaning#1}}%
+          {\expandafter\@gobble\string\mathaccent}
+          {\expandafter\meaning
+           \csname\expandafter\@gobble\string#1\space\endcsname}}%        
         \reserved@a
         \ifin@
+          \expandafter\let
+            \csname\expandafter\@gobble\string#1\space\endcsname
+            \@undefined
           \expandafter\set@mathaccent
              \csname sym#3\endcsname#1#2%
              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
@@ -1123,21 +1133,87 @@
     \@latex@error{Symbol font `#3' is not defined}\@eha
   \fi
 }
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {DeclareMathAccent}{Make math accents robust}%
+%<latexrelease>\def\DeclareMathAccent#1#2#3#4{%
+%<latexrelease>  \expandafter\in@\csname sym#3\expandafter\endcsname
+%<latexrelease>     \expandafter{\group@list}%
+%<latexrelease>  \ifin@
+%<latexrelease>    \begingroup
+%<latexrelease>      \count\z@=#4\relax
+%<latexrelease>      \count\tw@\count\z@
+%<latexrelease>      \divide\count\z@\sixt@@n
+%<latexrelease>      \count@\count\z@
+%<latexrelease>      \multiply\count@\sixt@@n
+%<latexrelease>      \advance\count\tw@-\count@
+%<latexrelease>      \if\relax\noexpand#1% is command?
+%<latexrelease>        \edef\reserved@a{\noexpand\in@
+%<latexrelease>           {\expandafter\@gobble\string\mathaccent}{\meaning#1}}%
+%<latexrelease>        \reserved@a
+%<latexrelease>        \ifin@
+%<latexrelease>          \expandafter\set@mathaccent
+%<latexrelease>             \csname sym#3\endcsname#1#2%
+%<latexrelease>             {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
+%<latexrelease>          \@font@info{Redeclaring math accent \string#1}%
+%<latexrelease>        \else
+%<latexrelease>          \expandafter\ifx
+%<latexrelease>          \csname\expandafter\@gobble\string#1\endcsname
+%<latexrelease>          \relax
+%<latexrelease>            \expandafter\set@mathaccent
+%<latexrelease>               \csname sym#3\endcsname#1#2%
+%<latexrelease>               {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
+%<latexrelease>          \else
+%<latexrelease>            \@latex@error{Command `\string#1' already defined}\@eha
+%<latexrelease>          \fi
+%<latexrelease>        \fi
+%<latexrelease>      \else
+%<latexrelease>       \@latex@error{Not a command name: `\noexpand#1'}\@eha
+%<latexrelease>      \fi
+%<latexrelease>    \endgroup
+%<latexrelease>  \else
+%<latexrelease>    \@latex@error{Symbol font `#3' is not defined}\@eha
+%<latexrelease>  \fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@onlypreamble\DeclareMathAccent
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\set@mathaccent}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {\set@mathaccent}{makemath accents robust}%
 \def\set@mathaccent#1#2#3#4{%
-  \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+  \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}%
+  \MakeRobust#2%
+}
 \@onlypreamble\set@mathaccent
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\set@mathaccent}{makemath accents robust}%
+%<latexrelease>
+%<latexrelease>\def\set@mathaccent#1#2#3#4{%
+%<latexrelease>  \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\DeclareMathSymbol}
 % \changes{v3.0r}{2016/02/18}
 %         {Check for mathchar not \cs{mathchar}}
+% \changes{v3.0s}{2019/09/09}{Allow definition if the math symbol was
+%                             a command already robust}
 %    \begin{macrocode}
 \def\DeclareMathSymbol#1#2#3#4{%
   \expandafter\in@\csname sym#3\expandafter\endcsname
@@ -1151,17 +1227,30 @@
       \multiply\count@\sixt@@n
       \advance\count\tw@-\count@
       \if\relax\noexpand#1% is command?
+%    \end{macrocode}
+%    Store the command name with a space attached inside
+%    \cs{reserved@@b} in case we look at a robust definition.
+%    \begin{macrocode}
+        \edef\reserved@b{\expandafter\noexpand
+                         \csname\expandafter\@gobble\string#1\space\endcsname}%
+%    \end{macrocode}
+%    Test both \verb=#1= and \verb*=#1 = for containing \texttt{mathchar}.
+%    \begin{macrocode}
         \edef\reserved@a
           {\noexpand\in@{\expandafter\@gobble\string\mathchar}%
-                        {\meaning#1}}%
+                        {\meaning#1\expandafter\meaning\reserved@b}}%
         \reserved@a
+%    \end{macrocode}
+%    Drop  \verb*=#1 = in case it was defined before.
+%    \begin{macrocode}
+        \global\expandafter\let\reserved@b\@undefined
         \ifin@
           \expandafter\set@mathsymbol
              \csname sym#3\endcsname#1#2%
              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
           \@font@info{Redeclaring math symbol \string#1}%
         \else
-            \expandafter\ifx
+          \expandafter\ifx
             \csname\expandafter\@gobble\string#1\endcsname
             \relax
             \expandafter\set@mathsymbol
@@ -1278,7 +1367,12 @@
 % \begin{macro}{\@DeclareMathDelimiter}
 % \changes{v3.0r}{2016/02/18}
 %         {Check for delimiter not \cs{delimiter}}
+% \changes{v3.0s}{2019/08/27}{Make math delimiters robust}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {\@DeclareMathDelimiter}{Make math delimiters robust}%
 \def\@DeclareMathDelimiter#1#2#3#4#5#6{%
   \expandafter\in@\csname sym#3\expandafter\endcsname
      \expandafter{\group@list}%
@@ -1304,9 +1398,11 @@
         \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
       %
         \edef\reserved@a{\noexpand\in@
-            {\expandafter\@gobble\string\delimiter}{\meaning#1}}%
+          {\expandafter\@gobble\string\delimiter}%
+          {\expandafter\meaning\csname\expandafter\@gobble\string#1\space\endcsname}}%
         \reserved@a
         \ifin@
+          \expandafter\let\csname\expandafter\@gobble\string#1\space\endcsname\@undefined
           \expandafter\set@mathdelimiter
              \csname sym#3\expandafter\endcsname
              \csname sym#5\endcsname#1#2%
@@ -1332,6 +1428,68 @@
     \@latex@error{Symbol font `#3' is not defined}\@eha
   \fi
 }
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@DeclareMathDelimiter}{Make math delimiters robust}%
+%<latexrelease>\def\@DeclareMathDelimiter#1#2#3#4#5#6{%
+%<latexrelease>  \expandafter\in@\csname sym#3\expandafter\endcsname
+%<latexrelease>     \expandafter{\group@list}%
+%<latexrelease>  \ifin@
+%<latexrelease>    \expandafter\in@\csname sym#5\expandafter\endcsname
+%<latexrelease>       \expandafter{\group@list}%
+%<latexrelease>    \ifin@
+%<latexrelease>      \begingroup
+%<latexrelease>        \count\z@=#4\relax
+%<latexrelease>        \count\tw@\count\z@
+%<latexrelease>        \divide\count\z@\sixt@@n
+%<latexrelease>        \count@\count\z@
+%<latexrelease>        \multiply\count@\sixt@@n
+%<latexrelease>        \advance\count\tw@-\count@
+%<latexrelease>        \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
+%<latexrelease>      %
+%<latexrelease>        \count\z@=#6\relax
+%<latexrelease>        \count\tw@\count\z@
+%<latexrelease>        \divide\count\z@\sixt@@n
+%<latexrelease>        \count@\count\z@
+%<latexrelease>        \multiply\count@\sixt@@n
+%<latexrelease>        \advance\count\tw@-\count@
+%<latexrelease>        \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
+%<latexrelease>      %
+%<latexrelease>        \edef\reserved@a{\noexpand\in@
+%<latexrelease>            {\expandafter\@gobble\string\delimiter}{\meaning#1}}%
+%<latexrelease>        \reserved@a
+%<latexrelease>        \ifin@
+%<latexrelease>          \expandafter\set@mathdelimiter
+%<latexrelease>             \csname sym#3\expandafter\endcsname
+%<latexrelease>             \csname sym#5\endcsname#1#2%
+%<latexrelease>             \reserved@c\reserved@d
+%<latexrelease>          \@font@info{Redeclaring math delimiter \string#1}%
+%<latexrelease>        \else
+%<latexrelease>            \expandafter\ifx
+%<latexrelease>            \csname\expandafter\@gobble\string#1\endcsname
+%<latexrelease>            \relax
+%<latexrelease>            \expandafter\set@mathdelimiter
+%<latexrelease>              \csname sym#3\expandafter\endcsname
+%<latexrelease>              \csname sym#5\endcsname#1#2%
+%<latexrelease>              \reserved@c\reserved@d
+%<latexrelease>          \else
+%<latexrelease>            \@latex@error{Command `\string#1' already defined}\@eha
+%<latexrelease>          \fi
+%<latexrelease>        \fi
+%<latexrelease>      \endgroup
+%<latexrelease>    \else
+%<latexrelease>      \@latex@error{Symbol font `#5' is not defined}\@eha
+%<latexrelease>    \fi
+%<latexrelease>  \else
+%<latexrelease>    \@latex@error{Symbol font `#3' is not defined}\@eha
+%<latexrelease>  \fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@onlypreamble\@DeclareMathDelimiter
 %    \end{macrocode}
 % \end{macro}
@@ -1384,10 +1542,27 @@
 %
 % \changes{v2.1q}{1995/04/02}{fix pr/1329}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2019/10/01}%
+%<latexrelease>                 {\set@mathdelimiter}{make delimiters robust}%
 \def\set@mathdelimiter#1#2#3#4#5#6{%
   \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
-                                     \hexnumber@#2#6 }}
+    \hexnumber@#2#6 }%
+  \MakeRobust#3%
+}
 \@onlypreamble\set@mathdelimiter
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\set@mathdelimiter}{make delimiters robust}%
+%<latexrelease>
+%<latexrelease>\def\set@mathdelimiter#1#2#3#4#5#6{%
+%<latexrelease>  \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
+%<latexrelease>    \hexnumber@#2#6 }}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
 %    \end{macrocode}
 % \end{macro}
 %
-- 
cgit v1.2.3

