
% This file is part of the NFSS (New Font Selection Scheme) package.
% ------------------------------------------------------------------

%%
%% This file contains more or less the original article. Look into the
%% README.MZ3 file for information on how to process it successfully.
%%
%
%	tb27fontselect.latex


\ifx\selectfont\undefined\else
\let\ixpt\relax
\let\viiipt\relax
\fi

\ifx\selectfont\undefined
\documentstyle[array%
              ,ltugboat%  Comment out this line and scroll errors if you
                       %          don't have the ltugboat option.
              ]{article}
\else
\documentstyle[array%
%              ,concrete% Uncomment this line if you have the euler fonts.
              ,ltugboat%  Comment out this line and scroll errors if you
              ,newlfont%          don't have the ltugboat option.
              ]{article}
\fi




\setcounter {page}{297}
\addtolength{\textheight}{1pc}


%%%% for ltugbot.sty:

\ifx\selectfont\undefined\else
\def\tensl{\fontfamily{cmr}\fontseries{m}\fontshape{sl}%
           \fontsize{10}{12pt}\selectfont}
\def\tubfont{\shape{sl}\selectfont}
\fi

\def\tubissue#1#2{\TUB#1\##2}

% specials for this article:

% changes in Providence

\makeatletter

% to remove \leaders from entries of the TOC
\def\@dotsep{-20}
\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
  \vskip \z@ plus .2pt
  {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
    \parindent #2\relax\@afterindenttrue
   \interlinepenalty\@M
   \leavevmode
   \@tempdima #3\relax \advance\leftskip \@tempdima \hbox{}\hskip -\leftskip
    #4\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep
       mu$}\hfill \nobreak %\hbox to\@pnumwidth{\hfil\rm #5}
                            \hbox{}\par}\fi}

% to make section entries \raggedright in the toc
\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
 \@tempdima 1.5em \begingroup
 \parindent \z@ \rightskip 0pt plus 1000pt
 \parfillskip -\rightskip \nohyphens
 \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil
 \nobreak\hbox to\@pnumwidth{\hss #2}\par
 \endgroup}

\def\@makefnmark{\raise 1ex\hbox{\scriptsize\@thefnmark}}

%FMi you found a bug in the new font selection
%FMi I changed the leading below to overcome the problem
%FMi for the moment. Your solution above doesn't work in all
%FMi circumstances.
\def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
\abovedisplayskip=3pt plus 3pt minus 1pt
\belowdisplayskip=\abovedisplayskip
\abovedisplayshortskip=\z@ plus3pt
\belowdisplayshortskip=1pt plus3pt minus1pt}



\makeatother


% alphabets in this article:

\ifx\selectfont\undefined
\let\sfmath\sf
\let\sfslmath\sf
\def\mathversion#1{}
\else
 \newmathalphabet\sfmath
 \newmathalphabet*\sfslmath{cmss}{m}{sl}

 \addtoversion{normal}\sfmath{cmss}{m}{n}
 \addtoversion{bold}\sfmath{cmss}{bx}{n}
\fi

% reset all mathcodes for the special examples in normal version:
\def\resetmathcodes{%
\mathcode`\0="7030
\mathcode`\1="7031
\mathcode`\2="7032
\mathcode`\3="7033
\mathcode`\4="7034
\mathcode`\5="7035
\mathcode`\6="7036
\mathcode`\7="7037
\mathcode`\8="7038
\mathcode`\9="7039
\mathchardef\sum="1350
}

\ifx\selectfont\undefined\else
% use bold medium series from cmss for headings:
\def\bf{\fontfamily{cmss}\fontseries{bx}\selectfont}
\fi


\def\meta#1{$\langle${\it#1\/$\rangle$}}


% just for the moment
\def\Metafont{{\sf METAFONT}}

\chardef\bslash=`\\

% missing text in quotations
\def\missing{[\ldots]\ }

\widowpenalty 1000
\clubpenalty   1000

% \pretitleremarks{\rm\noindent\EdNote We regret to say that a large piece
% of Frank and Rainer's article below was inadvertently deleted from
% the file used to publish the article in \tubissue {11}{1}.
% Under the section-numbering presented here, the previously missing
% portion extends from the end of section~1 to subsection~3.2.
% We feel it is best to reprint the article entirely, and apologize for
% any confusion or misunderstanding this has caused our readership.}


 \title{{\it Reprint {\rm(}with corrections\/{\rm):}}\\
        The New Font Family Selection\Dash \\
        User Interface to Standard \LaTeX}

 \author{Frank Mittelbach \and
         Rainer Sch\"opf}%




\begin{document}

% If you do have the concrete fonts comment out the next line
% of code and remove the comment on the line following.

\ifx\selectfont\undefined\else
\fontfamily{cmss}\fontsize{10}{13pt}\selectfont
% \fontfamily{ccr}\fontsize{10}{13pt}\selectfont
\fi



 \maketitle


 \tableofcontents

 \begin{abstract}
   In this article we describe the use of the new font selection scheme
   in the standard \LaTeX{} environment.
   The main characteristics are:
   \begin{itemize}
      \item
        The possibility to change family, series, shape and sizes
        independently of one another.
      \item
        The existence of a style file to process older documents
        without any changes to their layout and their input files.
      \item
	A macro setup which is consistent with existing standard
        document styles.\footnote{However, small changes in the document
                                  styles would make font changes a bit
                                  faster.}
   \end{itemize}
   %FMi
   It is planned to incorporate this font selection scheme into
   \LaTeX{} version 2.10.
 \end{abstract}

 \section{General remarks}

 In \tubissue{10}{2} we presented a new scheme to select fonts in \TeX{}
 macro packages.  This article describes the use of this new scheme in
 the \LaTeX{} environment.  The technical parts of the interface (which
 are of some interest to readers who plan to use our scheme with
 other fonts or with other macro packages) will be published in a
 separate article.

 The necessary macros are distributed by the AMS together with the
 {\tt amstex.sty} option which was announced in \tubissue{10}{3}.
 %FMi %RmS
 The availability of the new font selection scheme at the usual
 servers will be announced separately in \TeX{}hax, etc. Please
 refrain from asking for personal distribution.

 To get a better understanding of this \LaTeX{} interface, some words on
 the organisation of font families are in order.  Readers of our
 article about the basic macros will notice that our understanding of
 these matters increased while working on this interface and the {\tt
 amstex.sty} project; in some regards we have changed our point of view
 rather drastically.
 Surprisingly, only a few internal details within the basic
 macros needed adjustment; it seems that even without the real
 understanding, we
 instinctively got most of the things right when we designed them.  (But
 probably we  are still ignorant of the underlying concepts.)

 In his book about ``Methods of Book Design'' Hugh Williamson writes
 \cite{Williamson}
 \begin{quote}
   \missing
   To the printer, an alphabet is a set of twenty-six letters of a
   certain design and body, together with a few additional
   combinations of letters. A {\em fount\/} is usually made up of a
   set of alphabets of one size and based on one design. It may
   consist of one alphabet only, if no more alphabets exist in that
   design and size.  Usually however a text fount will comprise five
   alphabets --- roman and italic upper and lower-case, and small
   capitals.
   \missing
   A {\em series\/} is a set of founts closely related to each other
   in design, and usually very similar to each other, but graded in
   size.  If only one alphabet has been made in a certain design, that
   alphabet alone may be a series.  A {\em family\/} is a group of
   series compatible for composition, but loosely related in design.  A
   family may include excerpts from more than one series.
 \end{quote}

 Since \TeX{}'s physical fonts (which is the American word for
 fount) all contain exactly two alphabets, namely the upper and
 lower-case alphabets of a certain design, we will use the word font
 for physical \TeX{} fonts, and fount for bundles of \TeX{} fonts
 consisting for example of roman (upright or normal), italic and small
 capitals shapes.

 The above quotation gives a good clue how to organize fonts in our
 font selection scheme.  Hence we use the \verb+\shape+ command from
 the basic macros to distinguish between normal (n), italic (it),
 small caps (sc), sloped or slanted (sl) and upright italic (u)
 typefaces within one fount.  Founts of different sizes form a series,
 so we use \verb+\size+ to access these.  We think that the weight and
 the width of a series are good candidates to distinguish between
 individual series, therefore we combine them in the \verb+\series+
 command.  Again we use one and two letter abbreviations as shown in
 table~\ref{tab:series}.  One or more of these series form a family
 which is accessed via the \verb+\family+ command.

 \begin{table*}
   \begin{center}
     \begin{tabular}{ll}
       \multicolumn{2}{c}{Weight Class} \\[2pt]
       Ultralight     &  ul \\
       Extralight     &  el \\
       Light          &  l  \\
       Semilight      &  sl \\
       Medium (normal)&  m  \\
       Semibold       &  sb \\
       Bold           &  b  \\
       Extrabold      &  eb \\
       Ultrabold      &  ub \\
     \end{tabular}
     \hfil
     \begin{tabular}{lll}
       \multicolumn{3}{c}{Width Class} \\[2pt]
       Ultracondensed  &  50\%    &       uc  \\
       Extracondensed  &  62.5\%  &       ec  \\
       Condensed       &  75\%    &       c   \\
       Semicondensed   &  87.5\%  &       sc  \\
       Medium          &  100\%   &        m  \\
       Semiexpanded    &  112.5\% &       sx  \\
       Expanded        &  125\%   &        x  \\
       Extraexpanded   &  150\%   &       ex  \\
       Ultraexpanded   &  200\%   &       ux
     \end{tabular}
   \end{center}
   \caption{Weight and width classification for fonts.
            The percent values are derived from \protect\cite{IBM}.
            To combine the abbreviations in the {\tt\bslash series}
            command, weight is used first and any instance of medium
            ({\tt m}) is dropped except when weight and width are both
            medium.  In this case one single {\tt m} is used. So bold
            expanded would be {\tt bx} whereas medium expanded would
            be {\tt x}.}
   \label{tab:series}
 \end{table*}




 To give some practical example, we arranged the most important
 families of the Computer Modern fonts according to this
 classification in table~\ref{tab:fonts}. Please note that some
 families like `computer modern funny roman' ({\tt cmff}) or `computer
 modern sans serif
 quotation' ({\tt cmssq}) are unclassified.  These special
 purpose fonts are not accessible in the standard distribution of the
 new font selection scheme, although they could be added easily in a
 style file.

 \begin{table*}
   \begin{center}
 \setlength\extrarowheight{3pt}
 \begin{tabular}{|l|l|l|>{\tt}l|}
  \multicolumn{4}{c}{\bf Computer Modern families } \\[15pt]
 \hline
      \multicolumn{1}{|c|}{\bf family}
      &  \multicolumn{1}{c|}{\bf series}
      &  \multicolumn{1}{c|}{\bf shape(s)}
      &  \multicolumn{1}{c|}{\bf Example of external names}\\[1pt]
 \hline
\noalign{\vskip 2pt}
 \hline
   \multicolumn{4}{|c|}{\it Computer modern roman} \\[1pt]
 \hline
   cmr   & m     & n, it, sl, sc,
                               u & cmr10, cmti10,
                                   cmsl10, cmcsc10, cmu10   \\
   cmr   & bx    & n, it, sl     & cmbx10, cmbxti, cmbxsl           \\
   cmr   & b     & n             & cmb10                       \\[1pt]
 \hline
 \hline
   \multicolumn{4}{|c|}{\it Computer modern sans serif} \\[1pt]
 \hline
   cmss  & m     & n, sl         & cmss10, cmssi10 \\
   cmss  & bx    & n             & cmssbx10 \\
   cmss  & sbc   & n             & cmssdc10 \\[1pt]
 \hline
 \hline
   \multicolumn{4}{|c|}{\it Computer modern typewriter} \\[1pt]
 \hline
   cmtt  & m     & n, it, sl, sc & cmtt10, cmitt10, cmsltt, cmtcsc10 \\[1pt]
 \hline
 \hline
   \multicolumn{4}{|c|}{\it Computer modern fibonacci} \\[1pt]
 \hline
   cmfi  & m     & n             & cmfib8            \\
 \hline
 \end{tabular}
   \end{center}
   \caption{Classification of the Computer modern fonts.
            You will notice that not all possible combinations of
            family, series and shape are available. E.g.\ there is
            no small capitals shape in the medium series of the
            computer modern sans serif.  However, Philip Taylor
            announced recently that he has filled some of the holes.
            It might be a good idea to include such additional parameter
            files for \MF{} into the general distributions.}
   \label{tab:fonts}
 \end{table*}

 Given this overview about the classification of fonts it should be
 clear how to select a specific font with the primitive commands
 \verb+\family+, \verb+\series+, \verb+\shape+, \verb+\size+, and
 \verb+\selectfont+.  As described in \cite{basic}, the
 {\tt\bslash size} macro takes two arguments: the size
 in printer's points as a numeral (i.e.~without the
 dimension) and the corresponding {\tt\bslash
 baselineskip} value (with a dimension).  {\tt\bslash
 selectfont} finally selects the font using values of
 the surrounding environment if some of the commands
 are missing.
 For example statements like ``Concrete roman condensed
 slanted font at 9pt with 11pt leading''\footnote{This
 is pronounced ``ledding'' and measures the distance
 between the baselines of succeeding lines. To \TeX{}
 users it is known as {\tt\bslash baselineskip}.} will
 be translated into   command sequences of the form:
\begin{verbatim}
\family{ccr}\series{c}\shape{sl}%
       \size{9}{11pt}\selectfont
\end{verbatim}
 This will explicitly load the font mentioned above,
 provided the necessary font shapes are known to the
 system.\footnote{Among the AMS distribution an example
 style option `{\tt concrete.sty}' is provided which
 makes the Concrete roman as well as the Euler math
 fonts available. These fonts were used to
 typeset~\cite{ConcreteMath}
%FMi
 and this article.}


 However, in the normal case, the \LaTeX{} user can safely rely on the
 standard \LaTeX{} font selection commands defined in terms
 of these primitive commands. These standard commands are discussed
 in the next sections.


 \section{Choosing a new text font}

 In standard \LaTeX{}, different fonts (of the same size) are selected
 by commands like \verb+\rm+, \verb+\bf+, \verb+\it+, etc.  These
 commands, however, select a specific font regardless of surrounding
 conditions.  E.g., if you write \verb+\sf\bf+ you don't get the `bold
 extended' {\em series\/} of the `sans serif' {\em family\/} (i.e.\
 {\tt cmssbx}), instead you get the `bold extended' {\em series\/} of
 the `roman' {\em family\/} (i.e.\ {\tt cmbx}).  In our
 implementation this will be different.


 Commands like \verb+\bf+ (or \verb+\sf+) are now implemented to
 switch to the wanted {\em series\/} (or {\em family}, respectively),
 but to leave
 the other font characteristics untouched.  However, this concept has
 one drawback in the current \LaTeX{} version: commands like
 \verb+\footnote+ might switch to a smaller size but will inherit
 other characteristics for the font to use from the environment where
 they are used.  E.g., a footnote appearing in the scope of a theorem
 environment will erroneously be typeset in italic shape.  This
 problem will vanish in \LaTeX{} version 2.10.  Until then all font
 characteristics in such special circumstances must be reset by hand
 using the commands given below.  However, this is not necessary if
 one uses the `{\tt oldlfont}' style option described in
 sections~\ref{sec:oldlfont} and~\ref{sec:formats}.
 This option defines the font selection
 commands to behave in the same way as they do now in \LaTeX{} 2.09.


 \subsection{Choosing a new {\em family}}

 To switch to another {\em family\/} one may use \verb+\rm+,
 \verb+\sf+ or \verb+\tt+ denoting the `cmroman', `cmsansserif' or
 `cmtypewriter' {\em family}, respectively.  The new font is selected
 without changing the current {\em series}, {\em shape}, and {\em
 size}.  E.g., if the current font is {\tt cmbx10} (that is {\em
 family\/} `computer modern roman', {\em series\/} `bold extended',
 {\em shape\/} `normal', and {\em size\/} `10pt') then \verb+\sf+ will
 change to {\tt cmssbx10} (that is {\em family\/} `computer modern
 sansserif', {\em series\/} `bold extended', {\em shape\/} `normal', and
 {\em size\/} `10pt').  Using, e.g., \verb+\tt+ afterward will
 produce a warning and switch to {\tt cmtt10} because the `computer
 modern typewriter' {\em family\/} does not contain a `bold extended'
 {\em series}; therefore the default (`medium') {\em series\/} is tried.

 \subsection{Choosing a new {\em series}}

 To switch between `medium' and `bold extended' {\em series\/} the
 commands \verb+\mediumseries+ and \verb+\bf+ are provided.

 \subsection{Choosing a new {\em shape}}

 Analogously the commands \verb+\sl+, \verb+\it+, and \verb+\sc+ are
 used to switch to the {\em shapes\/} `sloped', `italic' and
 `smallcaps', this time leaving {\em family}, {\em series}, and {\em
 size\/} alone.

 In addition, we introduce the \verb+\normalshape+ command, in case
 one wants to switch back to the `normal' {\em shape}. If font changes
 are done only inside of groups this command is necessary only to
 reset a shape in a footnote or a similar context to avoid the
 problem mentioned above.


 \subsection{Choosing a new {\em size}}

 To change to another {\em size\/} the standard \LaTeX{} commands
 \begin{center}
   \begin{tabular}{lll}
      \verb+\tiny+  & \verb+\scriptsize+ & \verb+\footnotesize+ \\
      \verb+\small+ & \verb+\normalsize+ & \verb+\large+        \\
      \verb+\Large+ & \verb+\LARGE+ &      \verb+\huge+
                                           and \verb+\Huge+
   \end{tabular}
 \end{center}
 may be used. These commands also set the parameter
 \verb+\baselineskip+ and the \verb+\strutbox+ as well as the
 script and scriptscript {\em sizes\/} for
 the new text {\em size}.  But once again they will not change other
 font characteristics.  So, for example, it doesn't matter whether one
 writes
 \verb+\large\tt+ or \verb+\tt\large+, the same font will be selected.


 \subsection{Doing it by hand}

 As mentioned before, primitive font selection commands like
 \verb+\family+, \verb+\series+, \verb+\shape+, \verb+\size+, and
 \verb+\selectfont+ are also available to carry out the change.
 E.g.,
 \begin{verbatim}
   \shape{n}\family{cmss}\selectfont
\end{verbatim}
%FMi removed space before \end{verbatim}
 will
 switch to the `cmsansserif' family with `normal' shape.\footnote{For
 full details of the usage of these primitive commands see the article
 about the basic macros~\cite{basic}.}
 This article was set in concrete roman type
 by simply writing \verb+\family{ccr}+\verb+\selectfont+
% rfw removed word for less spacey break %immediately
 following the \verb+\begin{document}+
 %FMi
 command.\footnote{Actually we also said
 {\tt\bslash size\string{10\string}\string{13pt\string}} to
 establish a larger {\tt\bslash baselineskip}.}
 Of course, the
 \verb+\documentstyle+ command also specifies a style option (`{\tt
 concrete}') which sets up the internal tables for these fonts.

 \subsection{Changing the meaning of {\tt \protect\bslash rm},
 {\tt \protect\bslash sf} etc.}

  To make it easy to typeset documents with other font
  families (like Times Roman, Optima etc.) we maintain
  seven additional macros
  \begin{verbatim}
\rmdefault \sfdefault \ttdefault \bfdefault
\itdefault \scdefault \sldefault
\end{verbatim}
%FMi removed space before \end{verbatim}
%FMi also removed space before first line(produced break) BUG!
  denoting the family chosen by
  \verb=\rm=, \verb=\sf=, \verb=\tt= or the series chosen
  by \verb=\bf= or the shape for \verb=\it=,
  \verb=\sc= and \verb=\sl=, respectively.\footnote{This
  was suggested by Sebastian Rahtz who was one of the
  first users of our prototype version.}
  If, for example, a document should be typeset in sans serif
  one could add in the preamble (between \verb=\documentstyle=
  and \verb=\begin{document}=) the following redefinitions:
\begin{verbatim}
\renewcommand{\rmdefault}{cmss}
\renewcommand{\itdefault}{sl}
\end{verbatim}
The first line means that whenever \verb=\rm= is called the
family {\tt cmss} (i.e.\ computer modern sans serif) is chosen
and the second line redefines \verb=\it= to switch to the slanted
shape since this family hasn't got an {\it italic} shape.
Another possible use is to say
\begin{verbatim}
\renewcommand{\bfdefault}{b}
\end{verbatim}
This will redefine \verb=\bf= to select the bold instead of the
bold extended series which is the current default.
However these commands are
probably ignored by document styles for journals which decide to
use their own font families in the final print.

 \section{Fonts for Math}

 The selection of a specific typeface in a math formula should not
 depend on the surrounding
 environment.  Characters in math normally denote special
               things which should stay fixed even if the surrounding
               text is set in another {\em shape\/} or {\em series}.
 Therefore the strategy for selecting math fonts is somewhat
 different.

 \subsection{Simple formulas}

 Normal letters and standard symbols are typeset simply by using the
 letters directly or using a command that denotes the wanted symbol. So
 \verb+$\sum A_{i}$+ will produce $\sum A_{i}$. The typeface chosen
 will depend on the current \meta{math version}. You can switch
 between \meta{math versions} outside of math mode,\footnote{This is done
 with the command\hfil\break {\tt\bslash mathversion\string{}\meta{version
 name}{\tt\string}}.}  thereby changing the overall layout of the
 following formulas.

% \LaTeX{} knows about two versions called `normal' and `bold'. As the
% name indicates, \verb+\mathversion{normal}+ is the default. In contrast,
% the bold version will produce bolder letters and symbols.  This might
% be suitable in certain situations, but recall that changing the
% version means changing the appearance (and perhaps the meaning)
% of the whole formula.
% For historical reasons \LaTeX{} maintains two abbreviations to switch
% to its math versions: \verb+\boldmath+ and \verb+\unboldmath+.
%
% Other versions could be provided in special style options. For
% example the `{\tt concrete}' option mentioned before sets up
% a version called `euler' to typeset formulas in the same way as it
% was done in~\cite{ConcreteMath}.
%

 \LaTeX{} knows about two versions called `normal' and `bold'. As the
 name indicates, \verb+\mathversion{normal}+ is the default. In contrast,
 the bold version will produce bolder letters and symbols.  This might
 be suitable in certain situations like headings,
 but recall that changing the
 version means changing the appearance (and perhaps the meaning)
 of the whole formula.
 If you want to bolden only some symbols or characters within
 one formula you should not change the \verb=\mathversion=.
 Instead you should
 define a special math alphabet for characters
 (see below) and/or use the command \verb=\boldsymbol= which is
 provided by the document style option {\tt amsbsy}.
 For historical reasons \LaTeX{} maintains two abbrivations to switch
 to its math versions: \verb+\boldmath+ and \verb+\unboldmath+.

 Other versions could be provided in special style options. For
 example the `{\tt concrete}' option mentioned before sets up
 a version called `euler' to typeset formulas in the same way as it
 was done in~\cite{ConcreteMath}.


 \subsection{Special math alphabets}

 But simple formulas with one alphabet and a huge number of symbols
 are not sufficient for mathematicians to expose their thoughts
 properly.  They tend to use every available typeface to denote
 special things.

 To cope with this need for special alphabets in formulas,' we introduce
 the concept of \meta{math alphabet identifiers}.  These constructs are
 special commands which switch to a specific typeface.  They might
 correspond to different typefaces in different math versions but
 within one version they always select the same typeface regardless of
 surrounding conditions.

 A \meta{math alphabet identifier} can be defined according to
 the users' needs but standard \LaTeX{} already has a few of them built
 in. They are described in table~\ref{tab:math-id}.
\begin{table*}
\leftskip25pt \rightskip\leftskip
  \LaTeX{} knows about three \meta{math alphabet
  identifier}s.  \verb=\cal= will select calligraphic
  letters like $\cal A \cal B \cal C \cal D$,
  \verb=\mathrm= will select upright roman letters for
  use in functions like $\max_i$, and finally
  \verb=\mit= selects the default math italic alphabet.
\caption{Predefined \meta{math alphabet identifiers} in \LaTeX}
\label{tab:math-id}
\end{table*}

 When using such an \meta{alphabet identifier} two
 syntax variants are available:  one can understand a
 command like \verb+\cal+ as a switch to a different
 font, i.e.\ using a syntax \verb+{\cal ...}+ as the
 old \LaTeX{} does, but we prefer to view the
 \meta{math alphabet identifier}  as a command with one
 argument, i.e.\ to use a syntax of the form
 \verb+..\cal{A}..+ To select the first alternative a
 style option `{\tt nomargid}' is provided.  This option
 is automatically selected if the `{\tt oldlfont}' option
 is used since this option is supposed to produce
 identical results for older documents.

 New \meta{math alphabet identifiers} are defined in
 two steps. First the identifier is made known to the
 system with the \verb+\newmathalphabet+ command. Then
 specific typefaces in some or all \meta{math versions}
 are assigned by means of the \verb+\addtoversion+
 command.

 Let us discuss this process in detail. Suppose that
 you want to make a sans serif typeface available as a
 math alphabet. First we choose a new command name
 (e.g.\ \verb+\sfmath+) and tell \LaTeX{} about it with
 the line
\begin{verbatim}
 \newmathalphabet{\sfmath}
\end{verbatim}
%FMi braces added around arguments
 Then we consult table~\ref{tab:fonts} to find suitable
 fonts to assign to this alphabet identifier.  As you
 find out, the computer modern sans serif family
 consists of three series, a medium, semi bold
 condensed and a bold extended one. The medium and the
 bold extended series both contain a normal shape
 typeface. So we add the line:
\begin{verbatim}
 \addtoversion{normal}{\sfmath}{cmss}{m}{n}
 \addtoversion{bold}{\sfmath}{cmss}{bx}{n}
\end{verbatim}
%FMi braces added around arguments
Now our alphabet identifier is ready for use in these two versions.
We demonstrate this with the formula
{\mathversion{normal} \resetmathcodes
\[  \sum \sfmath{A}_{i} = \tan \alpha \]}%
which was produced by
\begin{verbatim}
\mathversion{normal}
\[  \sum \sfmath{A}_{i} = \tan \alpha \]
\end{verbatim}
 Note that we first switched back to the normal version. This was
 necessary since this article is typeset with a third version (Euler)
 in force. If we had tried to use \verb+\sfmath+ in this version
 we would have gotten an error message stating that this
 \meta{math alphabet identifier}
 isn't defined for the Euler version.\footnote{Actually we cheated a
 bit more in this article: we had to reset the {\tt\bslash mathcode}
 of certain characters because they are in different places in the
 Euler version.  A few more details can be found in Don Knuth's
 article~\protect\cite{art:euler}. However, this is not a real problem
 because such changes can be done in commands similar to {\tt\bslash
 boldmath} if such incompatible versions are to coexist in real
 applications.}

 If we are interested in a slanted shape we have to face a
 problem: there is no slanted shape in the bold extended series of the
 Computer Modern sans serif family.  So, if we make the identifier
 known only in the normal version then it would produce an error message
 when encountered in the bold (or any other) version. Of course we
 can get by
 %FMi I don't know english but shouldn't it be this way around?
 using always
 the same typeface in all
 versions.  To make this task a bit easier there is also a \verb+*+
  variant
 of the \verb+\newmathalphabet+ command which takes three more
 arguments: the default values for family, series and shape for all
 math versions in which the alphabet identifier is not explicitly
 defined via an \verb+\addtoversion+ command. So our second example
 can be set up simply by stating
\begin{verbatim}
 \newmathalphabet*{\sfslmath}{cmss}{m}{sl}
\end{verbatim}
 This would have the additional advantage that this math alphabet
 identifier is also allowed in math versions which are defined in style
 files or document styles (like the Euler version mentioned earlier).
 Any explicit \verb+\addtoversion+ command overwrites the defaults
 given by \verb+\newmathalphabet*+; so, it might be a good idea always
 to specify default values.

 Here we show the same formula as above, but this time in the Euler
 version and with \verb+\sfslmath+ instead of \verb+\sfmath+:
\[  \sum \sfslmath{A}_{i} = \tan \alpha \]

 \section{Processing older documents}
 \label{sec:oldlfont}

 To typeset documents which are written with the old \LaTeX{}
 (i.e.\ with a format using the old font selection scheme)
  only the source line containing the
 \verb+\documentstyle+ command has to be changed.
 More exactly the `oldlfont' option must be added to the list of
 document style options if the new font selection scheme is in
 force.\footnote{This means that it is the default
                (see next section).}


 \section{Setting up a new format}
 \label{sec:formats}

 This section is written for people called `local wizards' by the
 \LaTeX{} manual, which simply refers to the (poor) guys who
 are always being pestered
 if things do not work.\footnote{YOU might belong to this group!}
 If you are using \LaTeX{} on your own PC you might have to read this
 section, too, even if you don't feel like being a wizard.

 \subsection{Preparations}
 Before generating a new format it is necessary to rename a few files.
 This enables you to customize the format to the special needs of your
 site.

\begin{description}
  \item [\tt lfonts.tex]
    First of all you should rename the file {\tt lfonts.tex} (supplied
    with the standard distribution of \LaTeX{}); otherwise you
    will always end up with an old format.  Call it, say,
    {\tt lfonts.ori}.
  \item [\tt hyphen.tex]
    Another file which should probably be renamed is {\tt hyphen.tex}
    (the original American \verb+\pattern+$\,$s from Don Knuth) because
    this enables you to insert your favourite \verb+\pattern+ package
    when Ini\TeX{} is asking for this file. This might even be useful
    if you use \TeX{} version 3.0 which is multilingual (assuming that
    your computer has only a limited memory).
\end{description}


\subsubsection{Preloading Fonts}

 Now you have to decide which fonts to preload in your format.  Unlike
 the old font selection scheme of \LaTeX{}, where only preloaded fonts
 could be used in math applications (like subscripts etc.), the new
 font selection scheme poses no restriction at all; documents will
 always come out the same.\TBremark{Not sure what this means.}
 So you have to take your pick by weighing
 the two conflicting principles:
\begin{itemize}
  \item
    Preloading often used fonts might make your \TeX{} run a bit faster.
  \item
    Using more load-on-demand fonts will make your format much more
    flexible, because you can switch to different families far more easily.
    After all, there is an upper limit to the number of fonts \TeX{}
    can use in one run and every preloaded font will count even if it
    is never accessed.
\end{itemize}
 On the PC at home we nowadays always use formats with only 5 fonts
 preloaded.\footnote{This is the absolute minimum. These fonts are
 accessed by {\tt lplain.tex} and {\tt latex.tex} when the format is
 generated.} We don't think that \TeX{} is actually running much
 more slowly than before.

 Together with the new font selection scheme two files {\tt
 preload.min} and {\tt preload.ori} are distributed. The first one
 will preload next to nothing while the second will preload the same
 fonts as the old {\tt lfonts.tex}. You can copy either of these files
 to {\tt preload.tex} and then change it if you want to preload some
 other fonts. But please make sure that you don't change one of the
 original files of the distribution.


\subsubsection{Making more fonts available}

 Besides deciding which fonts to preload, you also have to tell the
 \TeX{} sytem which external fonts are available and how they are
 organized in families, series, shapes and sizes. In short you have to
 set up internal tables giving informations like ``family {\tt cmr},
 series {\tt b}, shape {\tt n}, size {\tt 10} is associated with the
 external font {\tt cmb10} but there is no font with similar
 characteristics in size {\tt 9}''. This is done with the
 \verb+\new@fontshape+ command, either in a style file (see `{\tt
 concrete.sty}' as an example) or when dumping a format.

 Again two files {\tt fontdef.ori} and {\tt fontdef.max} are
 distributed.  You can copy one of them to {\tt fontdef.tex}.  The
 file {\tt fontdef.ori} defines all fonts which are necessary to run
 standard \LaTeX{} documents while {\tt fontdef.max} also defines
 certain fonts from the AMSFonts collection.
 To make other font families available you can
 either append appropriate \verb+\new@fontshape+ definitions to {\tt
 fontdef.tex} (again, leave the originals untouched!) or add them in a
 style file.\footnote{The latter alternative might be better if you
 use these fonts very rarely (e.g., at sites with many users) to
 avoid filling \TeX{}'s memory with unnecessary definitions.} For a
 detailed description of how to set up new families with the
 \verb+\new@fontshape+ command, see \cite{basic} about the basic
 macros or one of the example files.


\subsection{Running Ini\TeX}
%FMi changed to subsection (typo)

 When setting up a new format one has to start Ini\TeX{} with
 {\tt lplain.tex} as the input file. After displaying some progress
 report
 on the terminal, {\tt lplain.tex} will try to \verb+\input+ the files
 {\tt hyphen.tex} and {\tt lfonts.tex}.

 As we said above,
 it seems a good idea to rename these files because, when \TeX{}
 complains that it cannot find them and asks you to type in another
 file name, you get the chance to substitute
 your favourite hyphenation patterns without changing {\tt lplain.tex}
 or copying something to {\tt hyphen.tex}.
 The transcript file
 will show the name of the file used which is very useful to debug
 weird errors (later).

 When the point is reached where \TeX{} wants to read in {\tt
 lfonts.tex}, you now have to specify `{\tt lfonts.new}'. This file
 will \verb+\input+ some other files.  After processing them
 (which will take some time), Ini\TeX{} stops once more since it cannot
 find the file {\tt xxxlfont.sty}.  This is intentional; 
 in this way
 you may now specify the desired default by entering one of the following
 file names:
\begin{description}
 \item[{\tt oldlfont.sty}]
    If you choose this file, your format will be identical to the
     standard \LaTeX{} version 2.09 except that a few additional
     commands (like \verb+\normalshape+) are available.  Of course,
     documents or style options which explicitly refer to things like
     \verb+\tentt+ will produce error messages since such internal
     commands are no longer defined.\footnote{By the way, such
     documents were at no time portable since Leslie Lamport stated
     that it was always permissible to customize {\tt lfonts.tex}
     according to the local needs. Therefore this is {\em not\/} an
     incompatible change.} Nevertheless it is easy to fix the
     problem in such a case: if we know that \verb+\tentt+ referred to
     {\tt cmtt10}, i.e.\ Computer modern typewriter normal at 10pt,
     we can define it as
    \begin{verbatim}
 \newcommand{\tentt}{\family{cmtt}
     \series{m}\shape{n}\size{10}{12pt}
     \selectfont}
\end{verbatim}
    Since we assume the `{\tt oldlfont}' option as default, where
     \verb+\tt+ resets series and shape, the definition could be
     shortened to
    \begin{verbatim}
\newcommand{\tentt}{\size{10}{12pt}\tt}
\end{verbatim}
    To get the new way of font selection as described in the previous
     sections (e.g.\ where \verb+\tt+ simply means to switch to another
     family) you only have to add the `{\tt newlfont}' style option to
     the \verb+\documentstyle+ command in your document.

  \item[\tt newlfont.sty]
    This is just the counterpart to {\tt oldlfont.sty}: it will make
     the new mechanism the default and you have to add `{\tt oldlfont}'
     as a style option if you want to process older documents which
     depend on the old mechanism.

  \item[\tt basefnt.tex]
    This file is similar to {\tt newlfont.sty} but does not define the
     \LaTeX{} symbol fonts. These fonts contain only a few characters
     which are also included in the AMS symbol fonts.  Therefore we
     provided the possibility of generating a format which doesn't
     unnecessarily occupy one of the (only) sixteen math groups within
     one math version. Using this file you can easily switch to the
     old scheme (adding `{\tt oldlfont}' as an option), to the new
     scheme with \LaTeX{} symbol fonts (using `{\tt newlfont}') or to
     the new scheme with additional AMS fonts by using either the
     style option `{\tt amsfonts}' (fonts only) or the style option `{\tt
     amstex}' (defining the whole set of \AmSTeX{} macros in a \LaTeX{}
     like syntax).
 \end{description}
We suggest using the {\tt basefnt.tex} file since the new font
 selection scheme will be incorporated into \LaTeX{} version 2.10, but
 on installations with many users it might be better to switch
 smoothly to the new font
 selection scheme by first using `{\tt oldlfont}' as a default.

Anyway, after reading the file chosen, \TeX{} will continue by
 processing {\tt latex.tex} and finally displaying the message ``Input
 any local modifications here''.  If you don't dare to do so, use
 \verb+\dump+ to finish the run.  This will leave you with a new {\tt
 .fmt} file (to be put into \TeX's format area) and the corresponding
 transcript file.  It isn't a very good idea to delete this one
 because you might need it later to find out what you did when you
 dumped the format!


 \section{Remarks on the development of this interface}

 We started designing the  new font selection scheme
 around April 1989.  A first implementation was
 available after one month's work and thereafter the
 prototype version ran successfully for some months at a
 few sites in Germany and the UK\null. Frank's visit to
 Stanford as well as our work on the `{\tt amstex}' style
 option brought new aspects to our view. The result was
 a more or less complete redefinition of the \LaTeX{}
 interface for this font mechanism.  It was a long way
 from the first sketch (which was about five pages in
 Frank's notebook) to the current implementation
 %FMi missing word?
 of
 the
 interface which now consists of nearly 2000 lines of code
 and about 4000 lines of internal documentation. The
 \AmSTeX{} project itself, which triggered this
 reimplemenation, has about the same dimensions. Surely
 in such a huge software package one will find typos
 and bugs. But we hope that most of the bugs in the
 code are found by now. It is planned that the new font selection
 scheme will replace the old one in \LaTeX{} version 2.10.
 We therefore hope that this pre-release which runs in version
 2.09 will help to find all remaining  problems so that the switch
 to version 2.10 will be without discomfort to the user.

 %FMi section added
 \section{Acknowledgements}
      %RmS comma added , typo and wording
During this project we got help from many people. A big `thank you'
to all of them, especially to Michael Downes from the AMS for his
cooperation and help, to Stefan Lindner for his help with the
Atari \TeX{} and to Sebastian Rahtz for playing a willing
guinea-pig. Finally we also want to thank Ron Whitney who did a
marvelous job on all our articles so far. This time we posed some
extra problems because he had to first make a new format in
order to read how to make a new format.

 \section{List of distributed files}

 \begin{description}
  \item[\tt lfonts.new]
   The new version of {\tt lfonts.tex}, to be copied to a file of
   this name after the old {\tt lfonts.tex} has been renamed.
  \item[\tt fontdef.ori]
   The font definitions for the computer modern fonts in the
   distribution by
   Donald~E. Knuth.  To be copied to {\tt fontdef.tex} if this
   selection is to be used.
  \item[\tt fontdef.max]
   Complete font definitions for the computer modern fonts and the
   AMSFonts collections.  To be copied to {\tt fontdef.tex} if this
   selection is to be used.
  \item[\tt preload.ori]
   Preloads the same fonts as the old {\tt
   lfonts.tex} does.  To be copied
   to {\tt preload.tex} if this is desired.
  \item[\tt preload.min]
   Preloads only the absolute minimum of fonts.  To be copied
   to {\tt preload.tex} if this is desired.
  \item[\tt fam.tex]
   The basic macros for the new font selection scheme.
   Automatically read by {\tt lfonts.new}.
  \item[\tt latint.tex]
   \LaTeX{} interface for the new font selection scheme.
   Automatically read by {\tt lfonts.new}.
  \item[\tt setsize.tex]
   Size definitions for the \LaTeX{} interface.
   Automatically read by {\tt lfonts.new}.
  \item[\tt newlfont.sty]
   Selects new version of font selection for \LaTeX.
  \item[\tt oldlfont.sty]
   Selects old version of font selection for \LaTeX.
  \item[\tt basefnt.tex]
   Like {\tt newlfont.sty}, but does not define the \LaTeX{} symbol
   fonts.
  \item[\tt margid.sty]
   Style file that
   defines all \meta{math alphabet identifiers} to have one argument.
   This is the default that is built in into the new font selection
   scheme.  Therefore this style file is only necessary if the
   installation decided to load `{\tt nomargid.sty}' at dump time.
  \item[\tt nomargid.sty]
   In contrast to {\tt margid.sty}, defines all
   \meta{math alphabet identifiers} to switch to the
   alphabet.  This style option is necessary if you want to be
   compatible to the old \LaTeX{} syntax {\em in math mode only}.
  \item[\tt plf_tracefnt.sty]
  %FMi
   Style file that allows the tracing of font usage.
   Use \verb=\tracingfonts= with values 1 to 3 and watch
   what happens.
  \item[\tt syntonly.sty]
   Defines the \verb+\syntaxonly+ declaration.  This can be used
   in the preamble of a document to suppress all output.
  \item[\tt amsfonts.sty]
   Defines the commands to select symbols from the AMSFonts
   collection.
  \item[\tt amsbsy.sty]
   Defines the \verb+\boldsymbol+ command.
  \item[\tt amssymb.sty]
   Defines additional \AmSTeX{} symbols.
  \item[\tt amstex.sty]
   Defines special \AmSTeX{} structures (like alignments in math mode)
   with \LaTeX{} syntax.
  \item[\tt amstext.sty]
   Defines the \AmSTeX{} \verb+\text+ command.
  \item[\tt euscript.sty]
   Contains the definitions to use the Euler script fonts.
 \end{description}

%FMi either place the bibliography at the end or give it a number
%FMi What do you think?
 \begin{thebibliography}{9}
 \raggedright
 \bibitem{Williamson} Hugh Williamson,
 %FMi
      {\sl Methods of Book Design},\newblock
      Yale University Press,
      New Haven, London,\newblock
      Third Edition, 1985.

 \bibitem{IBM} International Business Machines Corporation,\newblock
      Font Object Content Architecture Reference,\newblock
      First Edition, December 1988.

 \bibitem{art:euler} Donald~E. Knuth, ``Typesetting {\sl Concrete
      Mathematics},'' \tubissue{10}{1}, 1989, pp.~31--36.

 \bibitem{ConcreteMath} Ronald~L. Graham. Donald~E. Knuth, and
      Oren Patashnik, {\sl Concrete Mathematics}.  \AW, 1989.

 \bibitem{basic} Frank Mittelbach and Rainer Sch\"opf,
      ``A New Font Selection Scheme for \TeX{} Macro Packages,''
      \tubissue{10}{2}, 1989, pp.~222--238.

 \end{thebibliography}

\authornumber=0
 \author{Frank Mittelbach}
 \address{Electronic Data Systems \\
	(Deutschland) GmbH\\
        Eisenstra\ss e 56 (N15) \\
	D-6090 R\"usselsheim \\
	Federal Republic of Germany}

 \author{Rainer Sch\"opf}
 \address {Institut f\"ur Theoretische Physik
	der Universit\"at Heidelberg\\
	Philosophenweg 16\\
	D-6900 Heidelberg\\
	Federal Republic of Germany}

% \signaturewidth\hsize  % SEEMS to be missing in the distributed ltugboat
\signature{%
  \hbox to\hsize{\hskip1pc\vtop{\hsize=0.5\hsize
    \signaturemark
    \theauthor{1}\\
    \theaddress{1}\\
    \thenetaddress{1}\\}%
    \vtop{\hsize=0.5\hsize
    \signaturemark
    \theauthor{2}\\
    \theaddress{2}\\
    \thenetaddress{2}\\}\hss}}

\makesignature

\end{document}
