Revision cac4d888d8e2c640ef292a09f04ed665ce2fff13 authored by Joseph Wright on 24 June 2022, 13:22:21 UTC, committed by Joseph Wright on 24 June 2022, 13:22:21 UTC
ltfsscmp.dtx
% \iffalse meta-comment
%
% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% 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 2008 or later.
%
% This file has the LPPL maintenance status "maintained".
%
% The list of all files belonging to the LaTeX base distribution is
% given in the file `manifest.txt'. See also `legal.txt' for additional
% information.
%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
%
% \fi
% \iffalse
%%% From File: ltfsscmp.dtx
%% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
%
%<*driver>
% \fi
%
%
\ProvidesFile{ltfsscmp.dtx}
[2020/12/05 v3.0f LaTeX Kernel (NFSS1 Compatibility)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
\DocInput{ltfsscmp.dtx}
\end{document}
%</driver>
% \fi
%
% \iffalse
%<+checkmem>\def\CHECKMEM{\tracingstats=2
%<+checkmem> \newlinechar=`\^^J
%<+checkmem> \message{^^JMemory usage: \filename}\shipout\hbox{}}
%<+checkmem>\CHECKMEM
% \fi
%
%
%
% \GetFileInfo{ltfsscmp.dtx}
% \title{A new font selection scheme for \TeX{} macro packages\\
% (Compatibility with NFSS1)\thanks
% {This file has version number
% \fileversion\ dated \filedate}}
%
% \author{Frank Mittelbach \and Rainer Sch\"opf}
%
% \MaintainedByLaTeXTeam{latex}
% \maketitle
%
% This file contains the implementation of commands giving
% compatibility with the original `NFSS1' release of the Font Selection
% Scheme.
%
% \begin{quote}
% \textbf{Warning:}
% The macro documentation is still basically the documentation from the
% first NFSS release and therefore in some cases probably not
% completely accurate.
% \end{quote}
%
% Version 1 of NFSS is obsolete now for about 20 years (and was
% ``current'' only for a short intermediate time) so with the 2015
% release these internal interface commands are removed from the
% kernel and made available via \textsf{latexrelease} package so that
% backward compatibility remains ensured for very old documents.
%
% \MaybeStop{}
%
%
% \changes{v3.0b}{1995/06/15}
% {(DPC) minor documentation edits}
% \changes{v3.0a}{1995/05/24}
% {(DPC) Make file from previous file, fam.dtx 1995/05/20 v2.2d}
% \changes{v3.0d}{2015/02/21}
% {Removed autoload code}
% \changes{v3.0e}{2015/02/22}
% {Moved all code into latexrelease - obsolete commands are no
% longer automatically part of the kernel}
%
%
% \begin{macrocode}
%<*latexrelease>
\IncludeInRelease{2015/01/01}{\new@fontshape}%
{NFSS version1 commands}%
\let\new@fontshape\@undefined
\let\warn@rel@i\@undefined
\let\scan@fontshape\@undefined
\let\scan@@fontshape\@undefined
\let\subst@fontshape\@undefined
\let\extra@def\@undefined
\let\default@mextra\@undefined
\let\preload@sizes\@undefined
\let\err@rel@i\@undefined
\let\newmathalphabet\@undefined
\let\newmathalphabet@\@undefined
\let\newmathalphabet@@@\@undefined
\let\if@no@font@opt\@undefined
\let\@no@font@optfalse\@undefined
\let\define@mathalphabet\@undefined
\let\define@mathgroup\@undefined
\let\addtoversion\@undefined
\EndIncludeInRelease
% \end{macrocode}
%
% In older releases we provide the original definitions.
%
% \begin{macrocode}
\IncludeInRelease{0000/00/00}{\new@fontshape}%
{NFSS version1 commands}%
% \end{macrocode}
%
% \begin{macro}{\new@fontshape}
% The interface is now |\DeclareFontShape|.
% \begin{macrocode}
\gdef\new@fontshape#1#2#3#4{%
\warn@rel@i\new@fontshape\DeclareFontShape
\expandafter\scan@fontshape\@gobble#4<\@nil><<%
\DeclareFontShape U{#1}{#2}{#3}\reserved@f}%
\@onlypreamble\new@fontshape
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\warn@rel@i}
% The warning message used above.
% \begin{macrocode}
\gdef\warn@rel@i#1#2{%
\@font@warning{*** NFSS release 1 command
\noexpand#1found\MessageBreak
*** Update by using release 2 command
\string#2.\MessageBreak
*** Recovery is probably possible}%
}%
\@onlypreamble\warn@rel@i
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\scan@fontshape}
% This will scan the old font shape definition syntax.
% \begin{macrocode}
\gdef\scan@fontshape{%
\let\reserved@f\@empty
\let\reserved@e\@empty % holds last info
\scan@@fontshape
}%
\@onlypreamble\scan@fontshape
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\scan@@fontshape}
% \begin{macrocode}
\gdef\scan@@fontshape#1>#2#3<{%
\ifx\@nil#1%
\edef\reserved@f{\reserved@f\reserved@e}%
\else
\def\reserved@b{#1}% nick names
\def\reserved@c{#3}%
\in@{ at}{#3}%
\ifin@
\in@{pt}{#3}% not a proof but a good chance
\ifin@
% \end{macrocode}
% We grab also everything after pt and discard it if people have
% forgotten to place a percent sign there.
% \changes{v2.1d}{1994/02/10}{scan away stuff after pt}
% \begin{macrocode}
\def\reserved@a##1 at##2pt##3\@nil{%
\def\reserved@b{##2}%
\def\reserved@c{##1}%
}%
\reserved@a#3\@nil
\fi
\fi
\ifnum 0<0#2
\edef\reserved@d{subf*\reserved@c}%
\ifcase #2\or
\or
\else
\errmessage{*** What's this? NFSS release 0? ***}%
\fi
\else
\edef\reserved@d{#2\reserved@c}%
\fi
\ifx\reserved@d\reserved@e
\edef\reserved@f{\reserved@f<\reserved@b>}%
\else
\edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
\let\reserved@e\reserved@d
\fi
\expandafter\scan@@fontshape
\fi
}%
\@onlypreamble\scan@@fontshape
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\subst@fontshape}
% This is now also handled by the extend syntax of
% |\DeclareFontShape|.
% \begin{macrocode}
\gdef\subst@fontshape#1#2#3#4#5#6{%
\warn@rel@i\subst@fontshape\DeclareFontShape
\DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}%
\@onlypreamble\subst@fontshape
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\extra@def}
% This was replaced by |\DeclareFontFamily|.
% \begin{macrocode}
\gdef\extra@def#1#2#3{%
\warn@rel@i\extra@def\DeclareFontFamily
\DeclareFontFamily{U}{#1}{}%
}%
\@onlypreamble\extra@def
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\default@mextra}
% The new name is |\DeclareFontEncodingDefaults| but in this case
% we don't feel comfortable with this either.
% \begin{macrocode}
\gdef\default@mextra{%
\warn@rel@i\default@mextra\DeclareFontEncodingDefaults
% \end{macrocode}
% We pick up the argument to |\default@mextra| implicitly as
% the second argument of |\DeclareFontEncodingDefaults|.
% \begin{macrocode}
\DeclareFontEncodingDefaults\relax
}%
\@onlypreamble\default@mextra
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\preload@sizes}
% The new interface is |\DeclarePreloadSizes|.
% \begin{macrocode}
\gdef\preload@sizes{%
\warn@rel@i\preload@sizes\DeclarePreloadSizes
\DeclarePreloadSizes U%
}%
\@onlypreamble\preload@sizes
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\err@rel@i}
% This macro is used in cases where emulation with NFSS2 features
% is not really possible.
% \begin{macrocode}
\gdef\err@rel@i#1#2{%
\@latex@error{*** NFSS release 1 command \noexpand#1found%
^^J*** Recovery not possible. Use \string#2}%
{The new release of NFSS doesn't support the
\noexpand#1command^^Jany longer.
Please upgrade your file to the syntax of NFSS
release 2^^Jusing the \noexpand#2command.}%
% \end{macrocode}
% Let's die.
% \begin{macrocode}
\batchmode\input.\relax
}%
\@onlypreamble\err@rel@i
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\newmathalphabet}
% \begin{macro}{\newmathalphabet@@}
% \begin{macro}{\newmathalphabet@@@}
% |\newmathalphabet| is the old form.
% \begin{macrocode}
\gdef\newmathalphabet{%
\if@no@font@opt
\@latex@error{*** NFSS release 1 command
\noexpand\newmathalphabet found%
^^J \space*** Automatic recovery not possible.%
^^J \space*** TYPE H for Help%
}%
{Please look at the file usrguide.tex for hints on
how to resolve this problem.}%
\else
\warn@rel@i\newmathalphabet\DeclareMathAlphabet
\fi
\@ifstar\newmathalphabet@@@
\newmathalphabet@@}%
\gdef\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}%
\gdef\newmathalphabet@@@#1#2#3#4{%
\DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}%
\@onlypreamble\newmathalphabet
\@onlypreamble\newmathalphabet@@
\@onlypreamble\newmathalphabet@@@
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\if@no@font@opt}
% \begin{macro}{\@no@font@optfalse}
% \begin{macrocode}
\global\let\if@no@font@opt\iftrue
\gdef\@no@font@optfalse{\let\if@no@font@opt\iffalse}%
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\define@mathalphabet}
% This is a case where dying is best.
% \begin{macrocode}
\gdef\define@mathalphabet{%
\err@rel@i\define@mathalphabet\DeclareMathAlphabet
}%
\@onlypreamble\define@mathalphabet
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\define@mathgroup}
% And here is another one
% \begin{macrocode}
\gdef\define@mathgroup{%
\err@rel@i\define@mathgroup\DeclareSymbolFont
}%
\@onlypreamble\define@mathgroup
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\addtoversion}
% |\addtoversion| is the old form.
% \begin{macrocode}
\def\addtoversion#1#2{%
\warn@rel@i\addtoversion\SetMathAlphabet
\SetMathAlphabet#2{#1}{U}}%
\@onlypreamble\addtoversion
% \end{macrocode}
% \end{macro}
%
% Finishing off this huge |\IncludeInRelease| argument:
% \begin{macrocode}
\EndIncludeInRelease
%</latexrelease>
% \end{macrocode}
%
% \Finale
%
Computing file changes ...