From 42ae3845f0172233885a1e6895a92093a68c2711 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 6 Mar 2020 21:30:29 +0000 Subject: latex-base-dev (6mar20) git-svn-id: svn://tug.org/texlive/trunk@54129 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex-dev/base/ltclass.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltdefns.dtx | 6 +- Master/texmf-dist/source/latex-dev/base/ltexpl.dtx | 58 +++++++++++------ .../texmf-dist/source/latex-dev/base/ltfssaxes.dtx | 65 +++++++++++++++++-- .../texmf-dist/source/latex-dev/base/ltfssbas.dtx | 74 ++++++++++++++++++++-- .../texmf-dist/source/latex-dev/base/ltfssini.dtx | 50 +++++++++++++-- Master/texmf-dist/source/latex-dev/base/ltvers.dtx | 12 +++- 7 files changed, 227 insertions(+), 44 deletions(-) (limited to 'Master/texmf-dist/source/latex-dev') diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index 578443921b8..f43e8f0c0d6 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2020/02/20 v1.3j LaTeX Kernel (Class & Package Interface)] + [2020/03/02 v1.3j LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -161,7 +161,7 @@ % option \texttt{nosearch} will only check the current directory % when looking if the file exists. This can be useful if you want to % generate a local (modified) copy of some file that is already in the -% search tree of \TeX{}. Finally, you can use \texttt{nopremable} to +% search tree of \TeX{}. Finally, you can use \texttt{noheader} to % prevent it from writing the standard blurb at the top of the file % (this is actually the same as using the star form of the environment). % @@ -1817,7 +1817,7 @@ \filec@ntents } % \end{macrocode} -% Option \texttt{force}) (or \texttt{overwrite}) changes the +% Option \texttt{force} (or \texttt{overwrite}) changes the % overwriting switch % \begin{macrocode} \let\filec@ntents@force\@fileswfalse diff --git a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx index ae472966d57..303b9e5604b 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltdefns.dtx} - [2019/08/27 v1.5f LaTeX Kernel (definition commands)] + [2020/02/27 v1.5g LaTeX Kernel (definition commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdefns.dtx} @@ -888,17 +888,21 @@ % % \begin{macro}{\@gobble} % \begin{macro}{\@gobbletwo} +% \begin{macro}{\@gobblethree} +% \changes{v1.5g}{2020/02/27}{Macro added} % \begin{macro}{\@gobblefour} % \changes{v1.2n}{1995/05/26}{(CAR) Added \cs{long}s} % The |\@gobble| macro is used to get rid of its argument. % \begin{macrocode} \long\def \@gobble #1{} \long\def \@gobbletwo #1#2{} +\long\def \@gobblethree #1#2#3{} \long\def \@gobblefour #1#2#3#4{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@firstofone} % \begin{macro}{\@firstoftwo} diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx index 230cd911588..e86b80acaf6 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltexpl.dtx} - [2019-10-02 v0.0 LaTeX Kernel (expl3-dependent code)] + [2020-03-05 v1.1 LaTeX Kernel (expl3-dependent code)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -68,25 +68,47 @@ %<*2ekernel|latexrelease> %\IncludeInRelease{2020/02/02}% % {expl3}{Pre-load expl3}% -\IfFileExists{expl3.ltx} - {% - \ifnum0% - \ifdefined\pdffilesize 1\fi - \ifdefined\filesize 1\fi - \ifdefined\luatexversion\ifnum\luatexversion>94 1\fi\fi - >0 % - \else - \message{Skipping expl3-dependent extensions} +% \end{macrocode} +% If we are doing a rollback with a format containing expl3 we +% aren't reloading it as that creates havoc. This may need a +% refined version! +% \changes{v1.0a}{2020/03/02} +% {Don't load expl3 if already in the format (gh/295)} +% \changes{v1.1}{2020/03/05} +% {Load xparse.ltx if \cs{NewDocumentCommand} is not defined by expl3.ltx} +% \begin{macrocode} +\expandafter\ifx\csname tex\string _let:D\endcsname\relax + \IfFileExists{expl3.ltx} + {% + \ifnum0% + \ifdefined\pdffilesize 1\fi + \ifdefined\filesize 1\fi + \ifdefined\luatexversion\ifnum\luatexversion>94 1\fi\fi + >0 % + \expandafter\@firstofone + \else + \message{Skipping expl3-dependent extensions} %<2ekernel> \expandafter\endinput -% \expandafter\@gobbletwo - \fi - } - {% - \message{Skipping expl3-dependent extensions}% +% \expandafter\@gobble + \fi + } + {% + \message{Skipping expl3-dependent extensions}% %<2ekernel> \endinput -% \@gobbletwo - }% -\input{expl3.ltx} +% \@gobble + }% + {% + \input{expl3.ltx} + \ifdefined\NewDocumentCommand + \else + \IfFileExists{xparse.ltx} + {\input{xparse.ltx}} + {}% + \fi + }% +\else + \GenericInfo{}{Skipping: expl3 code already part of the format} +\fi % %\EndIncludeInRelease %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx index 1a8dbd9cfba..58d9aa159e3 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssaxes.dtx} - [2020/02/18 v1.0c LaTeX Kernel (NFSS Axes handing)] + [2020/03/02 v1.0e LaTeX Kernel (NFSS Axes handing)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -827,7 +827,6 @@ % % % \begin{macro}{\set@target@series} -% \begin{macro}{\series@drop@one@m} % % Finally the code for normalizing the \cs{f@series} value. % @@ -845,21 +844,69 @@ \def\set@target@series#1{% % \end{macrocode} % We need to \cs{edef} the argument first in case it starts with a -% conditional. +% conditional. Then we check (and perhaps drop) an ``m'' from the +% value andassign the result to \cs{f@series}. +% \changes{v1.0d}{2020/02/27}{Drop ``m'' only in a specific set of values (gh/293)} % \begin{macrocode} \edef\f@series{#1}% - \edef\f@series{\expandafter\series@drop@one@m\f@series mm\series@drop@one@m}% + \series@maybe@drop@one@m\f@series\f@series +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\series@maybe@drop@one@m} +% If the series value is in NFSS notation then it should not +% contain any ``m'' unless it is just an ``m'' by it own. So we +% need to drop surplus ``m''s. But we better don't do this for full +% names, such as ``\texttt{semibold}'' as used by +% \texttt{autoinst}, for example. So we test against the possible +% explicit values that should drop an ``m''. +% After that we assign the result to \verb=#2= for further use. +% \changes{v1.0d}{2020/02/27}{Drop ``m'' in certain values from a +% fixed list (gh/293)} +% \begin{macrocode} +\def\series@maybe@drop@one@m#1{% + \expandafter\series@maybe@drop@one@m@x\expandafter{#1}} +% \end{macrocode} +% +% \begin{macrocode} + +\def\series@maybe@drop@one@m@x#1#2{% +% \end{macrocode} +% The code below is an inline version of the \cs{in@} macro without +% the group, so that it works in \cs{accent}. +% \begin{macrocode} + \def\in@@##1,#1,{}% + \series@check@toks\expandafter{\in@@ + ,ulm,elm,lm,slm,mm,sbm,bm,ebm,ubm,muc,mec,mc,msc,msx,mx,mex,mux,{}{},#1,}% + \edef\in@@{\the\series@check@toks}% + \ifx\in@@\@empty + \def#2{#1}% + \else + \edef#2{\expandafter\series@drop@one@m #1m\series@drop@one@m}% + \fi } % \end{macrocode} +% As a precaution we use a private toks register not \cs{toks@} as +% that is no longer hidden inside the group. +% \begin{macrocode} +\newtoks\series@check@toks +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\series@drop@one@m} % Drop up to two \texttt{m}s but keep one if that makes the series -% value empty. +% value empty. Actually, with the current implementation we know +% that there is at least one in the series value itself and we +% added one after it, so all we have to do is now returning +% \verb=#1#2= and dropping the rest. % \begin{macrocode} \def\series@drop@one@m#1m#2m#3\series@drop@one@m{% - \ifx\relax#1#2\relax m\else#1#2\fi +% \ifx\relax#1#2\relax m\else#1#2\fi + #1#2% } % \end{macrocode} % \end{macro} -% \end{macro} @@ -908,6 +955,7 @@ \DeclareRobustCommand\ulcshape {\not@math@alphabet\ulcshape\relax \fontshape\ulcdefault\selectfont} +\let\ulcdefault\@undefined % for rollback \newcommand\ulcdefault{ulc} % \end{macrocode} % \end{macro} @@ -928,6 +976,7 @@ \DeclareRobustCommand\swshape {\not@math@alphabet\swshape\relax \fontshape\swdefault\selectfont} +\let\swdefault\@undefined % for rollback \newcommand\swdefault{sw} % \end{macrocode} % \end{macro} @@ -951,6 +1000,7 @@ \DeclareRobustCommand\sscshape {\not@math@alphabet\sscshape\relax \fontshape\sscdefault\selectfont} +\let\sscdefault\@undefined % for rollback \newcommand\sscdefault{ssc} % \end{macrocode} % \end{macro} @@ -1215,6 +1265,7 @@ %\let\@font@shape@subst@warning\@undefined %\let\maybe@load@fontshape\@undefined %\let\set@target@series\@undefined +%\let\series@maybe@drop@one@m\@undefined %\let\series@drop@one@m\@undefined %\let\DeclareFontShapeChangeRule\@undefined %\let\merge@font@shape\@undefined diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx index b59b0fafdd6..5715106ca63 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2019/12/17 v3.2e LaTeX Kernel (NFSS Basic Macros)] + [2020/02/27 v3.2g LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -245,24 +245,59 @@ % We use |\expandafter| |\endgroup| to restore catcode in case % something goes wrong with the argument parsing (suggested by Tim % Van Zandt) +% \begin{macrocode} + \expandafter\endgroup + \DeclareFontShape@} +% \end{macrocode} % \end{macro} % % % -% \begin{macro}{\DeclareFontShape} +% \begin{macro}{\DeclareFontShape@} % \changes{v2.1c}{1994/02/07}{revert catcode settings earlier} % \changes{v3.0m}{1995/11/01} % {(DPC) Test for \cs{relax} not \cs{undefined}, internal/1933} % \begin{macrocode} - \expandafter\endgroup - \DeclareFontShape@} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontShape@}{Maybe drop one m}% \def\DeclareFontShape@#1#2#3#4#5#6{% \expandafter\ifx\csname #1+#2\endcsname\relax \@latex@error{Font family `#1+#2' unknown}\@eha \else +% \end{macrocode} +% If the series value is incorrectly specified with an extra ``m'', +% e.g., ``mc'' instead of just ``c'', drop the surplus ``m'' but +% keep the ``m'' if it is by its own. In that case also issue a +% warning that the declaration needs correction. +% \changes{v3.2f}{2020/02/24}{Drop surplus ``m'' in series when +% defining fontshape (gh/289)} +% \changes{v3.2g}{2020/02/27}{Only ``m'' if the series value is a member +% of a fixed list and issue warning if doing it (gh/293)} +% +% For this we compare the given value \verb=#3= with one where we +% may have dropped an ``m''. If nothing has changes, +% fine. Otherwise there was a wrong value which is now corrected in +% \cs{reservedb} so we use that and also issue a warning. +% \begin{macrocode} + \edef\reserved@a{#3}% + \series@maybe@drop@one@m\reserved@a\reserved@b + \ifx\reserved@a\reserved@b\else + \@latex@warning{Font shape declaration has incorrect series + value `#3'.\MessageBreak It should not contain an `m'! + Please correct it.\MessageBreak Found}% + \fi \expandafter - \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand - \csname #5\endcsname}% + \xdef\csname#1/#2/\reserved@b/#4\endcsname + {\expandafter\noexpand\csname #5\endcsname}% +% +% \end{macrocode} +% Most of the time \verb=#6= is empty so using \cs{let} to +% \cs{@empty} saves on space compared to using \cs{def}. That's +% really one of the old space saving techniques and probably not +% necessary these days. +% \begin{macrocode} \def\reserved@a{#6}% \global \expandafter\let\csname#5\expandafter\endcsname @@ -274,6 +309,33 @@ \fi } % \end{macrocode} +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontShape@}{Maybe drop one m}% +% +%\def\DeclareFontShape@#1#2#3#4#5#6{% +% \expandafter\ifx\csname #1+#2\endcsname\relax +% \@latex@error{Font family `#1+#2' unknown}\@eha +% \else +% \expandafter +% \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand +% \csname #5\endcsname}% +% \def\reserved@a{#6}% +% \global +% \expandafter\let\csname#5\expandafter\endcsname +% \ifx\reserved@a\@empty +% \@empty +% \else +% \reserved@a +% \fi +% \fi +% } +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} % \end{macro} % % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx index bdf5f5e6e91..3947b4d9538 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssini.dtx} - [2020/02/18 v3.1i LaTeX Kernel (NFSS Initialisation)] + [2020/03/02 v3.1k LaTeX Kernel (NFSS Initialisation)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -244,7 +244,7 @@ % \DescribeMacro\DeclareFontSeriesDefault % We now support this concept directly from within \LaTeX{} and for % use in font packages (or the document preamble) we offer -% \cs{DeclareSeriesDefault}. This declaration takes three +% \cs{DeclareFontSeriesDefault}. This declaration takes three % arguments: % \begin{description} % \item[document family interface:] Can either be \texttt{rm}, @@ -278,6 +278,7 @@ % The command to declare font series defaults for the ``rm'', ``sf'' or % ``tt'' family. % \begin{macrocode} +\let\DeclareFontSeriesDefault\@undefined % for rollback \newcommand\DeclareFontSeriesDefault[3][]{% \def\reserved@a{#1}% % \end{macrocode} @@ -393,8 +394,14 @@ \edef\rmdef@ult{\rmdefault}% \edef\sfdef@ult{\sfdefault}% \edef\ttdef@ult{\ttdefault}% - \edef\bfdef@ult{\bfdefault}% - \edef\mddef@ult{\mddefault}% +% \end{macrocode} +% The series defaults may contain some surplus \texttt{m} that we +% need to drop here. +% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from \cs{bfdef@ult} +% and \cs{mddef@ult} (gh/291)} +% \begin{macrocode} + \series@maybe@drop@one@m\bfdefault\bfdef@ult + \series@maybe@drop@one@m\mddefault\mddef@ult \edef\famdef@ult{\familydefault}% } % \end{macrocode} @@ -718,7 +725,16 @@ \maybe@load@fontshape %<+debug> \series@change@debug{Target series: %<+debug> \f@series \space -> \target@series@value}% - \let\f@series\target@series@value +% \end{macrocode} +% The \cs{target@series@value} may contain something like +% \texttt{cm} (coming from a default) and so we can't directly +% asign it to \cs{f@series} be have to drop any surplus \texttt{m} +% first. +% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from +% \cs{target@series@value} (gh/291)} +% \begin{macrocode} +% \let\f@series\target@series@value + \series@maybe@drop@one@m\target@series@value\f@series \fi \fi \fi @@ -776,10 +792,30 @@ % \cs{rmfamily}. This is now covered by looping and stopping the % loop when a match was found. % \begin{macrocode} - \expandafter\ifx\csname mdseries@#1\endcsname\f@series +% \end{macrocode} +% We have to sanitize the default value first because it may +% contain something like \texttt{mc} and that would never match +% \cs{f@series} because there it would be called \texttt{c} with +% the \texttt{m} dropped. It would be probably better to do that +% differently these days, but it is hard to adjust without causing +% a lot of issues, so we do the dropping in various places instead. +% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from \cs{reserved@d} +% (gh/291)} +% \begin{macrocode} + \expandafter\series@maybe@drop@one@m + \csname mdseries@#1\endcsname\reserved@d + \ifx\reserved@d\f@series %<+debug> \series@change@debug{mdseries@#1 matched -> \reserved@b}% \let\target@series@value\reserved@b - \else\expandafter\ifx\csname bfseries@#1\endcsname\f@series + \else +% \end{macrocode} +% Again do some sanitizing. +% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from \cs{reserved@d} +% (gh/291)} +% \begin{macrocode} + \expandafter\series@maybe@drop@one@m + \csname bfseries@#1\endcsname\reserved@d + \ifx\reserved@d\f@series %<+debug> \series@change@debug{bfseries@#1 matched -> \reserved@c}% \let\target@series@value\reserved@c \else\ifx\f@series\mddef@ult \let\target@series@value\reserved@b diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx index 2b54638bc42..ed2abe1088b 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltvers.dtx} - [2020/01/31 v1.1e LaTeX Kernel (Version Info)] + [2020/03/02 v1.1e LaTeX Kernel (Version Info)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltvers.dtx} @@ -115,7 +115,7 @@ {2020-10-01} % %<*2ekernel> -\def\patch@level{-4} +\def\patch@level{-5} % \end{macrocode} % % \begin{macro}{\development@branch@name} @@ -250,6 +250,14 @@ \def\@IncludeInRele@se#1#2#3{% \toks@{[#1] #3}% \expandafter\ifx\csname\string#2+\@currname+IIR\endcsname\relax +% \end{macrocode} +% If we roll back and the first patch already match then applying +% that is actually reapplying what is already in the format, i.e., +% it is useless and possibly allocating new registers. However, it +% makes the logic simpler so this is the way it is for now. In +% theory we could always jump overthe first patch because that is +% only really needed for rolling forward. So maybe one day \dots +% \begin{macrocode} \ifnum\expandafter\@parse@version#1//00\@nil >\expandafter\@parse@version\fmtversion//00\@nil \GenericInfo{}{Skipping: \the\toks@}% -- cgit v1.2.3