% This file has been converted to use the PostScript fonts
% Graeme McKinstry October 1986
% Modified further by Mario Wolczko, April 1988 - Oct 1989

% File LFONTS - Version of 6 May 1986.
%
% This version of LFONTS.TEX is for the CMR fonts.  It was converted
% from the AMR version by David Fuchs on 18 December 1985.
%
% This file needs to be customized for the fonts available at a particular
% site.  There are three places where changes need to be made.  They
% can be found by searching this file for the string  FONT-CUSTOMIZING.
%
% FONT CONVENTIONS
%
% A TYPESTYLE COMMAND is something like \it that defines a type style.
% Each style command \xx is defined to be \protect\pxx, where 
% \pxx is defined to choose the correct font for the current size.
% This allows style commands to appear in 'unsafe' arguments where
% protection is required.
%
% A SIZE COMMAND is something like \normalsize that defines a type size.
% It is defined by the document style.  However, \normalsize is handled
% somewhat differently because it is called so often--e.g., on every
% page by the output routine.  The document style defines \@normalsize
% instead of \normalsize.
% 
% A ONE-SIZE typestyle is one that exists only in the \normalsize size.
%
% A FONT-SIZE COMMAND is one that defines \textfont, \scriptfont and 
% \scriptscriptfont for the font families corresponding to preloaded fonts,
% as well as the typestyle commands for the preloaded fonts.  Each
% font-size command has an associated @fontsize command, having the same
% name except for an '@' at the front.   All font-size commands are defined 
% in LFONTS.  The naming convention is that a fifteenpt font has a font-size
% name \xvpt, and so on.
%
% Each size command \SIZE executes the command
%             \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE
% which does the following.
%   0. Executes \@nomath\SIZE to issue warning if in math mode.
%   1. \let \@currsize = \SIZE  
%   2. Sets \strutbox to a strut of height .7 * BASELINESKIP and
%      depth .3 * BASELINESKIP
%   3. Sets \baselineskip to \baselinestretch * BASELINESKIP 
%      and 
%   4. Calls \FONTSIZE 
%   5. Executes the \@FONTSIZE command.
% It should then define all the typestyle commands not defined by the font-size
% command, except for the one-size type styles. A typestyle command for which
% the corresponding font exists but is not preloaded is defined to expand to a
% \@getfont command.  A typestyle whose font does not exist is defined to 
% expand to a \@subfont command.
%
% A one-size typestyle whose font is not preloaded is defined to expand to
% a \@onesizefont command.
%
% \em is defined to be \it inside an unslanted style and \rm inside a
% slanted style.  An \em command in a section title will produce a \pem
% command in the table of contents.
%

% USES PS (PostScript) fonts
% this command is used when the user has asked for something that is
% unavailable in the PostScript fonts
\def\@PSignore#1{\@warning{\string#1 not supported in PS-LaTeX; ignoring it}}
\def\@PSsub#1#2{#2%
  \@warning{\string#1 not supported in PS-LaTeX; substituting \string#2}}

% this is used if PS-LaTeX is built without CMSY, CMMI or LASY
\def\@PSnofont#1{\@warning{\string#1 requires extra fonts in PS-LaTeX}}

\def\em{\protect\pem{}}
\def\pem{\ifdim \fontdimen\@ne\font >\z@ \rm \else \it \fi}

% the following magic is used to ensure that all font styles in the
% normal size are loaded as soon as the job starts
\def\normalsize{\@normalsize\bf\sl\tt\sf\sc\rm
  \global\let\normalsize\@@normalsize}
\def\@@normalsize{\ifx\@currsize\normalsize \rm \else \@normalsize\fi}

% \load{SIZE}{STYLE} : Solves anomaly of loaded-on-demand font
%    used for first time in math mode.  Give this command outside math
%    mode, before formula using it for first time.
\def\load#1#2{\let\@tempa\@currsize \let\@currsize\relax #1#2\@tempa}

% \newfont{\CMD}{FONT} defines \CMD to be the font FONT.
%    It is equivalent to \font \CMD = FONT
% \symbol{NUM} == \char NUM

\def\newfont#1#2{\@ifdefinable #1{\font #1=#2\relax}}
\def\symbol#1{\char #1\relax}



% \@getfont \STYLE \FAM \@FONTSIZE{LOADING.INFO}
%   \STYLE       = style command
%   \FAM         = a control sequence defined by \newfam\FAM
%   \@FONTSIZE   = the @fontsize command for the current size. 
%   LOADING.INFO = information needed to load the font--e.g., 
%                  cmtti10 \magstep 2
%   Does the following, where \FONTNAME denotes a new unique, untypeable
%   font name:
%    1. Executes  \font \FONTNAME = LOADING.INFO 
%    2. Appends '\textfont FAM \FONTNAME \def\STYLE{\fam \FAM \FONTNAME}' 
%       to the definition of \@FONTSIZE.
%    3. Executes \@FONTSIZE \STYLE.
%
% \@nohyphens\STYLE\@FONTSIZE
%   Used right after \@getfont to set \hyphenchar of the new font to -1,
%   thereby prohibiting hyphenation.  It is used with \tt fonts.
%   (\@nohyphens was added on 12/18/85)
%
% \@subfont \STYLE \REPSTYLE 
%   \STYLE, \REPSTYLE = type style commands.
%   Types warning message and defines uses \REPSTYLE.
%
% \@onesizefont \STYLE {LOADING.INFO}
%   Defines \STYLE to be a typestyle that exists only for the \normalsize
%   size.  It produces the font specified by LOADING.INFO
%
% \@addfontinfo\@FONTSIZE{DEFS}
%    Expands DEFS and adds to the definition of \@FONTSIZE. Items that should 
%    not be expanded should be protected with \@prtct---except no protection
%    is needed for '\def\foo', only for the contents of the definition.
%
% \@nomath\CS : Types a warning '\CS used in math mode' if encountered
%    in math mode.

% Remove \outer from definition of \newfam
\def\newfam{\alloc@8\fam\chardef\sixt@@n}

\def\@setsize#1#2#3#4{\@nomath#1\let\@currsize#1\baselineskip
   #2\setbox\strutbox\hbox{\vrule height.7\baselineskip
      depth.3\baselineskip width\z@}\baselineskip\baselinestretch\baselineskip
   \normalbaselineskip\baselineskip#3#4}

\newif\if@bold

\let\@prtct=\relax

\def\@addfontinfo#1#2{{\def\@prtct{\noexpand\@prtct\noexpand}\def\def{\noexpand
    \def\noexpand}\xdef#1{#1#2}}}

\def\@getfont#1#2#3#4{\@ifundefined{\string #1\string #3}{\global\expandafter
    \font \csname \string #1\string #3\endcsname #4\relax 
     \@addfontinfo#3{\textfont #2\csname \string #1\string #3\endcsname 
     \scriptfont #2\csname \string #1\string #3\endcsname 
     \scriptscriptfont #2\csname \string #1\string #3\endcsname 
     \def#1{\fam #2\csname\string #1\string #3\endcsname}}}{}#3#1}

\def\@nohyphens#1#2{\global\expandafter \hyphenchar\csname 
   \string #1\string #2\endcsname \m@ne}

\def\@subfont#1#2{\@warning{No \string#1\space typeface in 
        this size, using \string#2}#2}

\def\@onesizefont#1#2{\expandafter\newfam\csname fm\string#1\endcsname
  \global\expandafter\font\csname ft\string#1\endcsname #2\relax
  \gdef#1{\ifx \@currsize\normalsize \@ftfam#1\else
  \@warning{Typeface \string#1\space available only in 
  \string\normalsize, using \string\rm}\gdef #1{\ifx \@currsize\normalsize 
  \textfont\@fontfam#1 \scriptfont\@fontfam#1 \scriptscriptfont
  \@fontfam#1\@ftfam#1\else \rm\fi}#1\fi}#1}

\def\@ftfam#1{\fam\csname fm\string#1\endcsname\csname ft\string#1\endcsname}

\def\@nomath#1{\ifmmode \@warning{\string#1\space in math mode.}\fi}
\def\@nomathbold{\ifmmode \@warning{\string\mathbold\space in math mode.}\fi}

% The following definitions save token space.  E.g., using \@height 
% instead of height saves 5 tokens at the cost in time of one macro 
% expansion.

\def\@height{height}
\def\@depth{depth}
\def\@width{width}

\def\@magscale#1{ scaled \magstep #1}
\def\@halfmag{ scaled \magstephalf}
\def\@ptscale#1{ scaled #100}

% FONT-CUSTOMIZING see contents of fntchoice.tex
\input fntchoice

% none of the CM fonts (except cmex10) are accessible unless the
% following are true 
\newif\if@usecmsy \@usecmsytrue	% is the CMSY font available
\newif\if@usecmmi \@usecmmitrue	% is CMMI font available
% same for LaTeX symbols font
\newif\if@uselasy \@uselasytrue	% is LASY font available

% There are no alternative choices for these fonts at the present
\def\@msyten{cmsy10}
\def\@mmiten{cmmi10}
\def\@lasyten{lasy10}

% \@font\NAME{LOADING.INFO}
% Defines \NAME so that when expanded for the first time it executes
% 	\global\font\NAME=LOADING.INFO \NAME
% This cannot be used for fonts that have characters referenced by
% \mathchardef, such as the Symbol, CMSY, CMMI, CMEX, and LASY fonts
\def\@font#1#2{\def#1{\global\font#1=#2#1}}
% \@ttfont
%	same as \@font, but sets \hyphenchar to -1
\def\@ttfont#1#2{\def#1{\global\font#1=#2#1\hyphenchar#1=-1}}

% font loading commands for specific (unusual) fonts
\def\@loadcmsy#1#2{\if@usecmsy \font#1=#2 \skewchar#1='60 \fi}
\def\@loadcmmi#1#2{\if@usecmmi \font#1=#2 \skewchar#1='177 \fi}
\def\@loadsy#1#2{\font#1=#2 \skewchar#1='242 }
\def\@loadtt#1#2{\font#1=#2 \hyphenchar#1=-1 }

%% FONT-CUSTOMIZING:  The following \font commands define the
%% preloaded LaTeX fonts.  Font names should be changed to cause
%% different fonts to be loaded in place of these particular fonts.
%% \font commands can be replaced with \@font commands to reduce the
%% number of preloaded fonts.

% five point
 \font\fivrm  =  \@rm\@ptscale5
 \font\fivit  =  \@it\@ptscale5
 \@loadsy\fivsy	{\@sy\@ptscale5}
 \@font\fivbf	{\@bf\@ptscale5}
 \@font\fivsl	{\@sl\@ptscale5}
 \@ttfont\fivtt	{\@tt\@ptscale5}
 \@font\fivsf	{\@sf\@ptscale5}
 \@font\fivsc	{\@sc\@ptscale5}
 \font\fivms  =  \@ms\@ptscale5
 \@loadcmsy\fivcmsy{cmsy5}
 \@loadcmmi\fivmi{cmmi5}
 \font\fivly  =  lasy5

% six point
 \font\sixrm  =  \@rm\@ptscale6
 \font\sixit  =  \@it\@ptscale6
 \@loadsy\sixsy	{\@sy\@ptscale6}
 \@font\sixbf	{\@bf\@ptscale6}
 \@font\sixsl	{\@sl\@ptscale6}
 \@ttfont\sixtt	{\@tt\@ptscale6}
 \@font\sixsf	{\@sf\@ptscale6}
 \@font\sixsc	{\@sc\@ptscale6}
 \font\sixms  =  \@ms\@ptscale6
 \@loadcmsy\sixcmsy{cmsy6}
 \@loadcmmi\sixmi{cmmi6}
 \font\sixly  =  lasy6

% seven point 
 \font\sevrm  =  \@rm\@ptscale7
 \font\sevit  =  \@it\@ptscale7
 \@loadsy\sevsy	{\@sy\@ptscale7}
 \@font\sevbf	{\@bf\@ptscale7}
 \@font\sevsl	{\@sl\@ptscale7}
 \@ttfont\sevtt	{\@tt\@ptscale7}
 \@font\sevsf	{\@sf\@ptscale7}
 \@font\sevsc	{\@sc\@ptscale7}
 \font\sevms  =  \@ms\@ptscale7
 \@loadcmsy\sevcmsy{cmsy7}
 \@loadcmmi\sevmi{cmmi7}
 \font\sevly  =  lasy7

% eight point
 \font\egtrm  =  \@rm\@ptscale8
 \font\egtit  =  \@it\@ptscale8
 \@loadsy\egtsy	{\@sy\@ptscale8}
 \@font\egtbf	{\@bf\@ptscale8}
 \@font\egtsl	{\@sl\@ptscale8}
 \@ttfont\egttt	{\@tt\@ptscale8}
 \@font\egtsf	{\@sf\@ptscale8}
 \@font\egtsc	{\@sc\@ptscale8}
 \font\egtms  =  \@ms\@ptscale8
 \@loadcmsy\egtcmsy{cmsy8}
 \@loadcmmi\egtmi{cmmi8}
 \font\egtly  =  lasy8

% nine point
 \font\ninrm  =  \@rm\@ptscale9
 \font\ninit  =  \@it\@ptscale9
 \@loadsy\ninsy	{\@sy\@ptscale9}
 \font\ninbf  =  \@bf\@ptscale9 
 \@font\ninsl	{\@sl\@ptscale9}
 \@loadtt\nintt	{\@tt\@ptscale9}
 \@font\ninsf	{\@sf\@ptscale9}
 \@font\ninsc	{\@sc\@ptscale9}
 \font\ninms  =  \@ms\@ptscale9
 \@loadcmsy\nincmsy{cmsy9}
 \@loadcmmi\ninmi{cmmi9}
 \font\ninly  =  lasy9

% ten point
 \font\tenrm  =  \@rm\@magscale0
 \font\tenit  =  \@it\@magscale0
 \@loadsy\tensy	{\@sy\@magscale0}
 \font\tenbf  =  \@bf\@magscale0
 \font\tensl  =  \@sl\@magscale0
 \@loadtt\tentt	{\@tt\@magscale0}
 \font\tensf  =  \@sf\@magscale0
 \font\tensc  =  \@sc\@magscale0
 \font\tenms  =  \@ms\@magscale0
 \@loadcmsy\tencmsy{\@msyten}
 \@loadcmmi\tenmi{\@mmiten}
 \font\tenly  =  \@lasyten

% eleven point
 \font\elvrm  =  \@rm\@halfmag
 \font\elvit  =  \@it\@halfmag
 \@loadsy\elvsy	{\@sy\@halfmag}
 \font\elvbf  =  \@bf\@halfmag
 \font\elvsl  =  \@sl\@halfmag
 \@loadtt\elvtt	{\@tt\@halfmag}
 \font\elvsf  =  \@sf\@halfmag
 \font\elvsc  =  \@sc\@halfmag
 \font\elvms  =  \@ms\@halfmag
 \@loadcmsy\elvcmsy{\@msyten\@halfmag}
 \@loadcmmi\elvmi{\@mmiten\@halfmag}
 \font\elvly  =  \@lasyten\@halfmag

% twelve point
 \font\twlrm  =  \@rm\@magscale1
 \font\twlit  =  \@it\@magscale1
 \@loadsy\twlsy	{\@sy\@magscale1}
 \font\twlbf  =  \@bf\@magscale1
 \font\twlsl  =  \@sl\@magscale1
 \@loadtt\twltt	{\@tt\@magscale1}
 \font\twlsf  =  \@sf\@magscale1
 \font\twlsc  =  \@sc\@magscale1
 \font\twlms  =  \@ms\@magscale1
 \@loadcmsy\twlcmsy{\@msyten\@magscale1}
 \@loadcmmi\twlmi{cmmi12}
 \font\twlly  =  \@lasyten\@magscale1

% fourteen point
 \font\frtnrm  = \@rm\@magscale2
 \font\frtnit  = \@it\@magscale2
 \@loadsy\frtnsy{\@sy\@magscale2}
 \font\frtnbf  = \@bf\@magscale2
 \@font\frtnsl	{\@sl\@magscale2}
 \@font\frtntt	{\@tt\@magscale2}
 \@font\frtnsf	{\@sf\@magscale2}
 \@font\frtnsc	{\@sc\@magscale2}
 \font\frtnms  = \@ms\@magscale2
 \@loadcmsy\frtncmsy{\@msyten\@magscale2}
 \@loadcmmi\frtnmi{cmmi12\@magscale1}
 \font\frtnly  = \@lasyten\@magscale2

% seventeen point
 \font\svtnrm  = \@rm\@magscale3
 \font\svtnit  = \@it\@magscale3
 \@loadsy\svtnsy{\@sy \@magscale3}
 \font\svtnbf  = \@bf\@magscale3
 \@font\svtnsl	{\@sl\@magscale3}
 \@font\svtntt	{\@tt\@magscale3}
 \@font\svtnsf	{\@sf\@magscale3}
 \@font\svtnsc	{\@sc\@magscale3}
 \font\svtnms  = \@ms\@magscale3
 \@loadcmsy\svtncmsy{\@msyten\@magscale3}
 \@loadcmmi\svtnmi{cmmi12\@magscale2}
 \font\svtnly  = \@lasyten\@magscale3

% twenty point
 \font\twtyrm  = \@rm\@magscale4
 \font\twtyit  = \@it\@magscale4
 \@loadsy\twtysy{\@sy \@magscale4}
 \@font\twtybf	{\@bf\@magscale4}
 \@font\twtysl	{\@sl\@magscale4}
 \@font\twtytt	{\@tt\@magscale4}
 \@font\twtysf	{\@sf\@magscale4}
 \@font\twtysc	{\@sc\@magscale4}
 \font\twtyms  = \@ms\@magscale4
 \@loadcmsy\twtycmsy{\@msyten \@magscale4}
 \@loadcmmi\twtymi{\@mmiten \@magscale4}
 \font\twtyly  = \@lasyten \@magscale4

% twenty-five point
 \font\twfvrm  = \@rm\@magscale5
 \font\twfvit  = \@it\@magscale5
 \@loadsy\twfvsy{\@sy \@magscale5}
 \@font\twfvbf	{\@bf\@magscale5}
 \@font\twfvsl	{\@sl\@magscale5}
 \@font\twfvtt	{\@tt\@magscale5}
 \@font\twfvsf	{\@sf\@magscale5}
 \@font\twfvsc	{\@sc\@magscale5}
 \font\twfvms  = \@ms\@magscale5
 \@loadcmsy\twfvcmsy{\@msyten \@magscale5}
 \@loadcmmi\twfvmi{\@mmiten \@magscale5}
 \font\twfvly  = \@lasyten\@magscale5

% Math extension
 \font\tenex   = cmex10

\if@uselasy
 % line & circle fonts
 \font\tenln    = line10
 \font\tenlnw   = linew10
 \font\tencirc  = circle10
 \font\tencircw = circlew10

 % Change made 6 May 86: `\@warning' replaced by `\immediate\write 15' 
 % since it's not defined when lfonts.tex is read by lplain.tex.
 %
 \ifnum\fontdimen8\tenln=\fontdimen8\tencirc \else 
   \immediate\write 15{Incompatible thin line and circle fonts}\fi
 \ifnum\fontdimen8\tenlnw=\fontdimen8\tencircw \else 
   \immediate\write 15{Incompatible thick line and circle fonts}\fi
\fi

% protected font names
\def\rm{\protect\prm}
\def\it{\protect\pit}
\def\bf{\protect\pbf}
\def\sl{\protect\psl}
\def\sf{\protect\psf}
\def\sc{\protect\psc}
\def\tt{\protect\ptt}

% families

\def\hexnumber@#1{\ifnum#1<10 \number#1\else
 \ifnum#1=10 A\else\ifnum#1=11 B\else\ifnum#1=12 C\else
 \ifnum#1=13 D\else\ifnum#1=14 E\else
 \ifnum#1=15 F\fi\fi\fi\fi\fi\fi\fi}

% since math italic and text italic are the same, \itfam is not required
\let\itfam\@ne
\newfam\slfam      % \sl is family 4
\newfam\bffam      % \bf is family 5
\newfam\ttfam      % \tt is family 6
\newfam\sffam      % \sf is family 7
\newfam\scfam      % \sc is family 8
\newfam\msfam      % \ms is family 9 (slanted Symbol)
\edef\ms@{\hexnumber@\msfam}

\if@uselasy
 \newfam\lyfam
 \edef\lasy@{\hexnumber@\lyfam}
\fi

\if@usecmsy
 \newfam\cmsyfam
 \def\cal{\fam\cmsyfam}
 \edef\cmsy@{\hexnumber@\cmsyfam}
\else
 \def\cal{\@PSnofont\cal}
\fi

\if@usecmmi
 \newfam\cmmifam
 \edef\cmmi@{\hexnumber@\cmmifam}
\fi

\def\mit{\fam\msfam} % slanted uppercase Greek


\def\@setstrut{\setbox\strutbox=\hbox{\vrule \@height .7\baselineskip
    \@depth .3\baselineskip \@width\z@}}

% no bold math available in PostScript
\def\boldmath{\@PSignore\boldmath}
\def\unboldmath{\@PSignore\unboldmath}

%% FONT-CUSTOMIZING: The commands \vpt, \vipt, ... , \xxvpt perform all
%% the declarations needed to change the type size to 5pt, 6pt, ... ,
%% 25pt.  To see how this works, consider the definition of \ixpt,
%% which determines the fonts used in a 9pt type size.  The command
%%    \def\prm{\fam\rmfam\ninrm}
%% means that the \rm command causes the preloaded \ninrm font to
%% be used--this font was defined earlier with a \font\ninrm...
%% command.  The command
%%     \@setfam\rmfam\ninrm\sixrm\fivrm
%% tell TeX to use the \ninrm, \sixrm and \fivrm fonts for
%% text, script and scriptscript math size for the 9pt size.  
%% 
%% The command 
%%     \def\pbf{\@getfam\pbf\bffam\@ixpt\ninbf\sixbf\fivbf}
%% declares \bf to use either pre-loaded or loaded-on-demand
%% fonts--namely, the fonts \ninbf, \sixbf and \fivbf.  Presumably,
%% they were earlier declared using the \font or \@font commands.
%%
%% If you decided that preloading the fonts for a bold, 9pt size was
%% unnecessary, then you would alter the declaration of \ninbf to use
%% \@font rather than \font.
%% Note that you can only do this for the \bf, \sl, \tt, \sf and \sc
%% families; the other fonts are used in math mode and must be
%% preloaded. 
%%
%% The command
%%     \def\ptt{\@subfont\tt\rm}
%% declares that the \tt font is unavailable in the 7pt size, so
%% the \rm font is used instead.  (The substituted type style should
%% correspond to a preloaded size.)

% \@getfam\STYLE\FAM\SIZE\TFONT\SFONT\SSFONT\CMND
%  Defines \def\STYLE{\fam\FAM\TFONT\CMND}
%  Executes
%	\fam\FAM
%	\SSFONT\scriptscriptfont\FAM\SSFONT
%	\SFONT\scriptfont\FAM\SFONT
%	\TFONT\textfont\FAM\TFONT\CMND
% (the extra invocations of \SSFONT etc cause preloaded fonts to be
% loaded.)
% Tests to see if the unique name madee from \STYLE and \SIZE is
% defined.  If not, defines it and adds the definition
%	 \def\STYLE{\fam\FAM\TFONT\CMND} \textfont\FAM\TFONT
%		\scriptfont\FAM\SFONT \scriptscriptfont\FAM\SSFONT
% to the definition of \SIZE
\def\@getfam#1#2#3#4#5#6#7{%
  \def#1{\fam#2#4#7}%
  \fam#2\relax #6\scriptscriptfont#2#6%
  #5\scriptfont#2#5\relax #4\textfont#2#4#7%
  \@ifundefined{\string#1\string#3}{%
    \global\expandafter\def\csname\string#1\string#3\endcsname{}%
    \@addfontinfo#3{\def#1{\fam#2#4\@prtct#7}\textfont#2\noexpand#4%
      \scriptfont#2\noexpand#5\scriptscriptfont#2\noexpand#6}}{}}

% \setfam\FAM\TFONT\SFONT\SSFONT
%	set \TFONT, \SFONT and \SSFONT as the text, script and
% scriptscript fonts in family \FAM.
\def\@setfam#1#2#3#4{#2\textfont#1#2\relax #3\scriptfont#1#3\relax
  #4\scriptscriptfont#1#4}

% These are constant throughout the life of LaTeX ... must not
% reassign to any of them anywhere.
\textfont\thr@@\tenex
\scriptfont\thr@@\tenex
\scriptscriptfont\thr@@\tenex

\def\vpt{%
\def\prm{\fam\z@\fivrm\@dononsf}\@setfam\z@\fivrm\fivrm\fivrm
\def\pit{\fam\@ne\fivit\@dononsf}\@setfam\@ne\fivit\fivit\fivit
\@setfam\tw@\fivsy\fivsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@vpt\fivbf\fivbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@vpt\fivsl\fivsl\fivsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@vpt\fivtt\fivtt\fivtt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@vpt\fivsf\fivsf\fivsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@vpt\fivsc\fivsc\fivsc\@dononsf}%
\@setfam\msfam\fivms\fivms\fivms
\@setfam\cmsyfam\fivcmsy\fivcmsy\fivcmsy
\@setfam\cmmifam\fivmi\fivmi\fivmi
\@setfam\lyfam\fivly\fivly\fivly
\@setstrut\rm}

\def\@vpt{}

\def\vipt{%
\def\prm{\fam\z@\sixrm\@dononsf}\@setfam\z@\sixrm\fivrm\fivrm
\def\pit{\fam\@ne\sixit\@dononsf}\@setfam\@ne\sixit\fivit\fivit
\@setfam\tw@\sixsy\fivsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@vipt\sixbf\fivbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@vipt\sixsl\sixsl\sixsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@vipt\sixtt\sixtt\sixtt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@vipt\sixsf\sixsf\sixsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@vipt\sixsc\sixsc\sixsc\@dononsf}%
\@setfam\msfam\sixms\fivms\fivms
\@setfam\cmsyfam\sixcmsy\fivcmsy\fivcmsy
\@setfam\cmmifam\sixmi\fivmi\fivmi
\@setfam\lyfam\sixly\fivly\fivly
\@setstrut\rm}

\def\@vipt{}

\def\viipt{%
\def\prm{\fam\z@\sevrm\@dononsf}\@setfam\z@\sevrm\fivrm\fivrm
\def\pit{\fam\@ne\sevit\@dononsf}\@setfam\@ne\sevit\fivit\fivit
\@setfam\tw@\sevsy\fivsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@viipt\sevbf\fivbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@viipt\sevsl\sevsl\sevsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@viipt\sevtt\sevtt\sevtt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@viipt\sevsf\sevsf\sevsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@viipt\sevsc\sevsc\sevsc\@dononsf}%
\@setfam\msfam\sevms\fivms\fivms
\@setfam\cmsyfam\sevcmsy\fivcmsy\fivcmsy
\@setfam\cmmifam\sevmi\fivmi\fivmi
\@setfam\lyfam\sevly\fivly\fivly
\@setstrut\rm}

\def\@viipt{}

\def\viiipt{%
\def\prm{\fam\z@\egtrm\@dononsf}\@setfam\z@\egtrm\sixrm\fivrm
\def\pit{\fam\@ne\egtit\@dononsf}\@setfam\@ne\egtit\sixit\fivit
\@setfam\tw@\egtsy\sixsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@viiipt\egtbf\sixbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@viiipt\egtsl\egtsl\egtsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@viiipt\egttt\egttt\egttt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@viiipt\egtsf\egtsf\egtsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@viiipt\egtsc\egtsc\egtsc\@dononsf}%
\@setfam\msfam\egtms\sixms\fivms
\@setfam\cmsyfam\egtcmsy\sixcmsy\fivcmsy
\@setfam\cmmifam\egtmi\sixmi\fivmi
\@setfam\lyfam\egtly\sixly\fivly
\@setstrut\rm}

\def\@viiipt{}

\def\ixpt{%
\def\prm{\fam\z@\ninrm\@dononsf}\@setfam\z@\ninrm\sixrm\fivrm
\def\pit{\fam\@ne\ninit\@dononsf}\@setfam\@ne\ninit\sixit\fivit
\@setfam\tw@\ninsy\sixsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@ixpt\ninbf\sixbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@ixpt\ninsl\ninsl\ninsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@ixpt\nintt\nintt\nintt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@ixpt\ninsf\ninsf\ninsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@ixpt\ninsc\ninsc\ninsc\@dononsf}%
\@setfam\msfam\ninms\sixms\fivms
\@setfam\cmsyfam\nincmsy\sixcmsy\fivcmsy
\@setfam\cmmifam\ninmi\sixmi\fivmi
\@setfam\lyfam\ninly\sixly\fivly
\@setstrut\rm}

\def\@ixpt{}

\def\xpt{%
\def\prm{\fam\z@\tenrm\@dononsf}\@setfam\z@\tenrm\sevrm\fivrm
\def\pit{\fam\@ne\tenit\@dononsf}\@setfam\@ne\tenit\sevit\fivit
\@setfam\tw@\tensy\sevsy\fivsy
\def\pbf{\@getfam\pbf\bffam\@xpt\tenbf\sevbf\fivbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xpt\tensl\tensl\tensl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xpt\tentt\tentt\tentt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xpt\tensf\tensf\tensf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xpt\tensc\tensc\tensc\@dononsf}%
\@setfam\msfam\tenms\sevms\fivms
\@setfam\cmsyfam\tencmsy\sevcmsy\fivcmsy
\@setfam\cmmifam\tenmi\sevmi\fivmi
\@setfam\lyfam\tenly\sevly\fivly
\@setstrut\rm}

\def\@xpt{}

\def\xipt{%
\def\prm{\fam\z@\elvrm\@dononsf}\@setfam\z@\elvrm\egtrm\sixrm
\def\pit{\fam\@ne\elvit\@dononsf}\@setfam\@ne\elvit\egtit\sixit
\@setfam\tw@\elvsy\egtsy\sixsy
\def\pbf{\@getfam\pbf\bffam\@xipt\elvbf\egtbf\sixbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xipt\elvsl\elvsl\elvsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xipt\elvtt\elvtt\elvtt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xipt\elvsf\elvsf\elvsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xipt\elvsc\elvsc\elvsc\@dononsf}%
\@setfam\msfam\elvms\egtms\sixms
\@setfam\cmsyfam\elvcmsy\egtcmsy\sixcmsy
\@setfam\cmmifam\elvmi\egtmi\sixmi
\@setfam\lyfam\elvly\egtly\sixly
\@setstrut\rm}

\def\@xipt{}

\def\xiipt{%
\def\prm{\fam\z@\twlrm\@dononsf}\@setfam\z@\twlrm\egtrm\sixrm
\def\pit{\fam\@ne\twlit\@dononsf}\@setfam\@ne\twlit\egtit\sixit
\@setfam\tw@\twlsy\egtsy\sixsy
\def\pbf{\@getfam\pbf\bffam\@xiipt\twlbf\egtbf\sixbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xiipt\twlsl\twlsl\twlsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xiipt\twltt\twltt\twltt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xiipt\twlsf\twlsf\twlsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xiipt\twlsc\twlsc\twlsc\@dononsf}%
\@setfam\msfam\twlms\egtms\sixms
\@setfam\cmsyfam\twlcmsy\egtcmsy\sixcmsy
\@setfam\cmmifam\twlmi\egtmi\sixmi
\@setfam\lyfam\twlly\egtly\sixly
\@setstrut\rm}

\def\@xiipt{}

\def\xivpt{%
\def\prm{\fam\z@\frtnrm\@dononsf}\@setfam\z@\frtnrm\tenrm\sevrm
\def\pit{\fam\@ne\frtnit\@dononsf}\@setfam\@ne\frtnit\tenit\sevit
\@setfam\tw@\frtnsy\tensy\sevsy
\def\pbf{\@getfam\pbf\bffam\@xivpt\frtnbf\tenbf\sevbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xivpt\frtnsl\frtnsl\frtnsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xivpt\frtntt\frtntt\frtntt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xivpt\frtnsf\frtnsf\frtnsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xivpt\frtnsc\frtnsc\frtnsc\@dononsf}%
\@setfam\msfam\frtnms\tenms\sevms
\@setfam\cmsyfam\frtncmsy\tencmsy\sevcmsy
\@setfam\cmmifam\frtnmi\tenmi\sevmi
\@setfam\lyfam\frtnly\tenly\sevly
\@setstrut\rm}

\def\@xivpt{}

\def\xviipt{%
\def\prm{\fam\z@\svtnrm\@dononsf}\@setfam\z@\svtnrm\twlrm\tenrm
\def\pit{\fam\@ne\svtnit\@dononsf}\@setfam\@ne\svtnit\twlit\tenit
\@setfam\tw@\svtnsy\twlsy\tensy
\def\pbf{\@getfam\pbf\bffam\@xviipt\svtnbf\twlbf\tenbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xviipt\svtnsl\svtnsl\svtnsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xviipt\svtntt\svtntt\svtntt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xviipt\svtnsf\svtnsf\svtnsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xviipt\svtnsc\svtnsc\svtnsc\@dononsf}%
\@setfam\msfam\svtnms\twlms\tenms
\@setfam\cmsyfam\svtncmsy\twlcmsy\tencmsy
\@setfam\cmmifam\svtnmi\twlmi\tenmi
\@setfam\lyfam\svtnly\twlly\tenly
\@setstrut\rm}

\def\@xviipt{}

\def\xxpt{%
\def\prm{\fam\z@\twtyrm\@dononsf}\@setfam\z@\twtyrm\frtnrm\twlrm
\def\pit{\fam\@ne\twtyit\@dononsf}\@setfam\@ne\twtyit\frtnit\twlit
\@setfam\tw@\twtysy\frtnsy\twlsy
\def\pbf{\@getfam\pbf\bffam\@xxpt\twtybf\frtnbf\twlbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xxpt\twtysl\twtysl\twtysl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xxpt\twtytt\twtytt\twtytt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xxpt\twtysf\twtysf\twtysf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xxpt\twtysc\twtysc\twtysc\@dononsf}%
\@setfam\msfam\twtyms\frtnms\twlms
\@setfam\cmsyfam\twtycmsy\frtncmsy\twlcmsy
\@setfam\cmmifam\twtymi\frtnmi\twlmi
\@setfam\lyfam\twtyly\frtnly\twlly
\@setstrut\rm}

\def\@xxpt{}

\def\xxvpt{%
\def\prm{\fam\z@\twfvrm\@dononsf}\@setfam\z@\twfvrm\svtnrm\svtnrm
\def\pit{\fam\@ne\twfvit\@dononsf}\@setfam\@ne\twfvit\svtnit\svtnit
\@setfam\tw@\twfvsy\svtnsy\svtnsy
\def\pbf{\@getfam\pbf\bffam\@xxvpt\twfvbf\svtnbf\svtnbf\@dononsf}%
\def\psl{\@getfam\psl\slfam\@xxvpt\twfvsl\twfvsl\twfvsl\@dononsf}%
\def\ptt{\@getfam\ptt\ttfam\@xxvpt\twfvtt\twfvtt\twfvtt\@dononsf}%
\def\psf{\@getfam\psf\sffam\@xxvpt\twfvsf\twfvsf\twfvsf\@dosfchars}%
\def\psc{\@getfam\psc\scfam\@xxvpt\twfvsc\twfvsc\twfvsc\@dononsf}%
\@setfam\msfam\twfvms\svtnms\svtnms
\@setfam\cmsyfam\twfvcmsy\svtncmsy\svtncmsy
\@setfam\cmmifam\twfvmi\svtnmi\svtnmi
\@setfam\lyfam\twfvly\svtnly\svtnly
\@setstrut\rm}

\def\@xxvpt{}

% SPECIAL LaTeX character definitions

% Definitions of math operators added by LaTeX
\if@uselasy
 \mathchardef\mho"0\lasy@30
 \mathchardef\Join"3\lasy@31
 \mathchardef\Box"0\lasy@32
 \mathchardef\Diamond"0\lasy@33
 \mathchardef\leadsto"3\lasy@3B
 \mathchardef\sqsubset"3\lasy@3C
 \mathchardef\sqsupset"3\lasy@3D
\else
 \def\mho{\@PSnofont\mho}
 \def\Join{\@PSnofont\Join}
 \def\Box{\@PSnofont\Box}
 \def\Diamond{\@PSnofont\Diamond}
 \def\leadsto{\@PSnofont\leadsto}
 \def\sqsubset{\@PSnofont\sqsubset}
 \def\sqsupset{\@PSnofont\sqsupset}
\fi

\def\lhd{\mathbin{< \hbox to -.43em{}\hbox{\vrule 
      \@width .065em \@height .55em \@depth .05em}\hbox to .2em{}}}
\def\rhd{\mathbin{\hbox to .3em{}\hbox{\vrule \@width .065em \@height 
       .55em \@depth .05em}\hbox to -.43em{}>}}
\def\unlhd{\mathbin{\leq \hbox to -.43em{}\hbox
        {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to .2em{}}}
\def\unrhd{\mathbin{ \hbox to .3em{}\hbox
 {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to -.43em{}\geq}}

% The dollar sign is in the same place in all the PostScript fonts

\def\${{\char`\$}}

% Definition of pound sterling sign.

\def\pounds{{\it \char"A3}}

% Definition of \copyright changed so it works in other type styles,
% and so it is robust
\def\copyright{\protect\pcopyright}
\def\registered{\protect\pregistered}
\def\trademark{\protect\ptrademark}
% see pslplain.tex for definitions of \pcopyright, \pregistered, \ptrademark

% provide the correct f when a font change takes place in mathmode
\def\@fixf{\ifmmode\mathcode`\f="7166\relax\fi}
