diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-15 03:00:57 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-15 03:00:57 +0000 |
commit | fed27f633aadbacbd3d1221da7993fed8d4efffe (patch) | |
tree | 3cae3cde89de26b178894a2e88d9ef5ba89dafcc /macros/latex-dev/base/ltfssdcl.dtx | |
parent | 0eea86bf18826522b3686f54fc3afb8ddc31e62a (diff) |
CTAN sync 201909150300
Diffstat (limited to 'macros/latex-dev/base/ltfssdcl.dtx')
-rw-r--r-- | macros/latex-dev/base/ltfssdcl.dtx | 199 |
1 files changed, 187 insertions, 12 deletions
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} % |