% \iffalse meta-comment
%
% Copyright 1993 1994 1995 1996 1997 1998 1999
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX2e system.
% ----------------------------------------
%
% It may be distributed under the terms of the LaTeX Project Public
% License, as described in lppl.txt in the base LaTeX distribution.
% Either version 1.0 or, at your option, any later version.
%
% \fi
% \iffalse
%%% From File: ltfsscmp.dtx
%% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
%
%<*driver>
% \fi
%
%
\ProvidesFile{ltfsscmp.dtx}
[1995/08/26 v3.0c 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
%
% \CheckSum{235}
%
%
% \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}
%
% \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}
%
% \StopEventually{}
%
%
% \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}
%
%
%
% \section{Compatibility code for NFSS release 1}
%
% There have been a couple of commands which became obsolete with NFSS2.
% In the past they have been still part of the kernel code to make it
% possible to process old packages using those commands but since they
% take up valuable space we decided to remove them and instead
% auto-load their definitions if they are actually encountered in some
% file.
%
% Thus the following code doesn't really belong to this file but I put
% it here for the moment until finally a documented version of
% \texttt{ltfss.dtx} is available.
%
% [ auto-loading not activated ]
%
% \begin{macro}{\new@fontshape}
% \begin{macro}{\subst@fontshape}
% \begin{macro}{\extra@def}
% \begin{macro}{\default@mextra}
% \begin{macro}{\define@mathalphabet}
% \begin{macro}{\define@mathgroup}
% These macros are the interfaces in NFSS1 which shouldn't be used
% any longer. We all define them to call the macro
% |\scan@fontshape| which is an internal macro that loads the real
% definitions and then to execute themselves again. Once this
% auto-loading has happened they have the definition shown below and
% thus execute their real code directly.
% \begin{macrocode}
%<*autoload>
\def\new@fontshape{\scan@fontshape\new@fontshape}
\def\subst@fontshape{\scan@fontshape\subst@fontshape}
\def\extra@def{\scan@fontshape\extra@def}
\def\default@mextra{\scan@fontshape\default@mextra}
\def\define@mathalphabet{\scan@fontshape\define@mathalphabet}
\def\define@mathgroup{\scan@fontshape\define@mathgroup}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\scan@fontshape}
% Here is the kernel definition for |\scan@fontshape| which loads
% the actual definitions from the file \texttt{nfsscmp.def}.
% \begin{macrocode}
\def\scan@fontshape{\input{nfsscmp.def}}
% \end{macrocode}
% \end{macro}
%
%
% The following definitions are now placed into the auto-load file.
% \begin{macrocode}
% \end{macrocode}
%
% Since we don't know when this file will be read in we need to
% provide ourselves with standard |\catcode| settings. This is done
% by placing all definitions in a group and calling
% |\nfss@catcodes|. But this macro will also disable spaces which
% isn't very appropriate for the following code because it contains
% a lot of helper messages. Therefore we change this back.
% \begin{macrocode}
\begingroup
\nfss@catcodes
\catcode`\ =10\relax
%</autoload>
%<*compat>
% \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 grap 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
%</compat>
% \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}
%
%
%
% That finishes the definitions for the old interfaces --- but first
% we better finish the group.
% \begin{macrocode}
%<*autoload>
\endgroup
%</autoload>
% \end{macrocode}
%
% \Finale
%
|