
% The New Font Selection Schem ported to plain

\def\makeatletter{\catcode`\@=11 }
\makeatletter           % used, as in PLAIN, in protected control sequences

\def\@spaces{\space\space\space\space}
\def\@gobble#1{}
\def\@empty{}
\def\@height{height}
\def\@depth{depth}
\def\@width{width}
\def\@nomath#1{\relax\ifmmode \font@warning{Don't use \string#1 in
                                           math mode}\fi}
\def\no@alphabet@error#1#2{\relax \ifmmode
    \errmessage{Math alphabet identifier \string#2 is undefined
                in math version `#1'.} \fi}

\def\new@mathgroup{\alloc@8\mathgroup\chardef\sixt@@n}
\let\mathgroup\fam
\let\newfam\new@mathgroup
\def\new@fontshape#1#2#3#4#5{\expandafter
     \edef\csname#1/#2/#3\endcsname{\expandafter\noexpand
                                 \csname #4\endcsname}}
\def\subst@fontshape#1#2#3#4#5#6{\expandafter
     \def\csname#1/#2/#3\endcsname{%
       \font@warning{Font/shape `#1/#2/#3' not available}%
       \font@warning{Substituting `#4/#5/#6' instead}%
       \global\expandafter\let
         \csname#1/#2/#3\expandafter\endcsname
         \csname#4/#5/#6\endcsname}}
\def\extra@def#1#2#3{%
     \def\@tempa##1{#2}%
     \ifx \@tempa\@gobble
       \expandafter\let\csname +#1\endcsname\@gobble
     \else \expandafter\def\csname +#1\endcsname##1{#2}\fi
        \expandafter\def\csname =#1\endcsname{\default@mextra#3}%
}
\let\default@mextra\@empty
\def\preload@sizes#1#2#3#4{{
    \def\next##1,{%
        \if>##1>%
          \let\next\relax
        \else
          \xdef\font@name{\csname#1/#2/#3/##1\endcsname}%
          \pickup@font
          \global\expandafter\let\font@name\relax
        \fi
        \next}%
     \next#4,,}}
\newif\ifdefine@mathfonts \define@mathfontstrue
\def\define@mathsizes#1#2#3{\expandafter \def
    \csname S@#1\endcsname{\gdef\sf@size{#2}\gdef\ssf@size{#3}%
                           \define@mathfontstrue}}
\def\define@nomathsize#1{\expandafter \let
    \csname S@#1\endcsname \define@mathfontsfalse}
\def\fontfamily#1{\edef\f@family{#1}}
\def\fontseries#1{\edef\f@series{#1}}
\def\fontshape#1{\edef\f@shape{#1}}
\let\family=\fontfamily
\let\series=\fontseries
\let\shape=\fontshape
\def\fontsize#1#2{%
    \edef\f@size{#1}%
    \edef\setnew@baselineskip{\baselineskip #2\relax}%
    \edef\lcl@currsize{#1#2}}
\let\size=\fontsize
\def\mathversion#1{\@nomath\mathversion
          \expandafter\ifx\csname mv@#1\endcsname\relax
          \font@warning{The requested version `#1' is unknown}\else
          \edef\math@version{#1}\glb@settings\aftergroup\glb@settings
          \fi}
\def\pickup@font{%
    \expandafter \ifx \font@name \relax
       \define@newfont
    \fi}
{\catcode`\/=12
\gdef\split@name#1/#2/#3/#4\@nil{\def\f@family{#1}%
                                    \def\f@series{#2}%
                                    \def\f@shape{#3}%
                                    \def\f@size{#4}}}
\def\define@newfont{%
  \begingroup
    \escapechar\m@ne
    \expandafter\expandafter\expandafter
       \split@name\expandafter\string\font@name\@nil
    \expandafter\ifx
        \csname\f@family/\f@series/\f@shape\endcsname \relax
      \wrong@fontshape\else
      \csname\f@family/\f@series/\f@shape\endcsname
      \extract@font\fi
  \endgroup}
\def\wrong@fontshape{%
    \edef\@tempa{\csname\f@family/\f@series/\f@shape\endcsname}%
    \font@warning{Font/shape `\@tempa' undefined}%
    \let\f@shape\default@shape
    \expandafter\ifx\csname\f@family/\f@series/\f@shape\endcsname\relax
       \let\f@series\default@series
        \expandafter
          \ifx\csname\f@family/\f@series/\f@shape\endcsname\relax
           \let\f@family\default@family
        \fi \fi
    \font@warning{Using `\f@family/\f@series/\f@shape' instead}%
    \global\expandafter\expandafter\expandafter\let\expandafter\@tempa
           \csname\f@family/\f@series/\f@shape\endcsname
    \xdef\font@name{%
      \csname\f@family/\f@series/\f@shape/\f@size\endcsname}%
    \pickup@font}
\def\strip@prefix#1>{}

\def\addstuffto@version#1#2{%
    \ifx#1\undefined
           \toks@{}%
         \else
           \toks@\expandafter{#1}%
         \fi
    \xdef#1{%
            \the\toks@
             #2}%
    \gdef\glb@currsize{}}
\def\define@mathalphabet#1#2#3#4#5#6{%
    \def\@tempa{#6}%
    \addstuffto@version#1{%
             \gdef\noexpand#2%
             \ifx\@tempa\@empty
                {\noexpand\no@alphabet@error
                 \noexpand\math@version
                 \noexpand#2}%
             \else
                {\noexpand\select@group
                 \noexpand#2#3%
                 \expandafter\noexpand\csname =#4\endcsname
                 \expandafter\noexpand\csname #4/#5/#6\endcsname}%
             \fi}}
\def\define@mathgroup#1#2#3#4#5{%
         \addstuffto@version#1{%
             \noexpand\getanddefine@fonts#2%
             \expandafter\noexpand\csname #3/#4/#5\endcsname}}
\def\select@group#1#2#3#4{\relax\ifmmode
  \begingroup
    \let\math@fonts\@empty  \escapechar\m@ne
    \getanddefine@fonts#2#4%
    \globaldefs\@ne  \math@fonts
  \endgroup
  \gdef#1{\use@mathgroup#3{#2}}%
\expandafter #1\fi}
\let\math@bgroup\begingroup
\def\math@egroup#1{#1\endgroup}
\def\glb@settings{\begingroup
    \let\math@fonts\@empty
    \ifmath@fonts
     \csname S@\f@size\endcsname
      \ifdefine@mathfonts
        \escapechar\m@ne
        \csname mv@\math@version \endcsname \fi
    \fi
    \globaldefs\@ne
    \math@fonts
    \let \glb@currsize \lcl@currsize
  \endgroup}
\newif\ifmath@fonts
\math@fontstrue
\def\default@fontshape{\fontfamily\default@family
  \fontseries\default@series\fontshape\default@shape}
\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen
  \default@fontshape\selectfont
  \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1}}
\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
\ifx\inputlineno\undefined
  \let\on@line\@empty
\else
  \ifnum\inputlineno=\m@ne
    \let\on@line\@empty
  \else
    \def\on@line{ on input line \the\inputlineno}
  \fi
\fi

\def\extract@font{%
    \def\@tempa{\def\extract@fontinfo####1}%
    \edef\@tempb{<\expandafter\strip@prefix\meaning\f@size>}%
    \expandafter\@tempa\@tempb##2##3<##4\@nil{%
      \global\expandafter\font \font@name
           \ifcase0##2##3\relax\or
                   ##3
                    \font@warning{Font/shape
                              `\f@family/\f@series/\f@shape'
                              in size \@tempb\space  not available}%
                    \font@warning{Using external font `##3'
                                    instead}\else
                         \write16{Font \expandafter
                                    \string\font@name\space
                                    not found}%
               \fi
              }%
    \edef\font@info{\expandafter\expandafter\expandafter\string
        \csname \f@family/\f@series/\f@shape \endcsname\@tempb}%
    \expandafter\extract@fontinfo\font@info 3<\@nil
    \csname +\f@family \expandafter
       \endcsname \font@name \relax}

\def\selectfont{%
    \xdef\font@name{%
      \csname\f@family/\f@series/\f@shape/\f@size\endcsname}%
    \pickup@font
    \font@name
    \ifx \glb@currsize \lcl@currsize
     \else
    \setnew@baselineskip
    \baselineskip\baselinestretch\baselineskip
    \setbox\strutbox\hbox{\vrule\@height.7\baselineskip
        \@depth.3\baselineskip \@width\z@}%
    \normalbaselineskip\baselineskip
     \glb@settings \the\every@size
       \aftergroup\glb@settings \fi
    }
\def\baselinestretch{1}
\newtoks\every@size
\every@size={}
\def\use@mathgroup#1#2{\relax\ifmmode
     \math@bgroup
         #1\mathgroup#2\relax
     \expandafter\math@egroup\fi}%
\def\getanddefine@fonts#1#2{%
  \xdef\font@name{\csname \string#2/\f@size\endcsname}%
  \pickup@font \let\textfont@name\font@name
  \xdef\font@name{\csname \string#2/\sf@size\endcsname}%
  \pickup@font \let\scriptfont@name\font@name
  \xdef\font@name{\csname \string#2/\ssf@size\endcsname}%
  \pickup@font
  \edef\math@fonts{\math@fonts
               \textfont#1\textfont@name
               \scriptfont#1\scriptfont@name
               \scriptscriptfont#1\font@name}%
    }
\def\tracingfonts{\font@warning{\string\tracingfonts\space
                  command not provided.^^J
                  Use `tracefnt' option in \string\documentstyle\space
                  command.^^J Command found:}%
                  \count@}
\def\font@warning#1{%
          \immediate\write\sixt@@n{Warning: #1\on@line.}%
          }


 \def\normalsize{\@normalsize}
 \def\@vpt{5}
 \def\@vipt{6}
 \def\@viipt{7}
 \def\@viiipt{8}
 \def\@ixpt{9}
 \def\@xpt{10}
 \def\@xipt{11}
 \def\@xiipt{12}
 \def\@xivpt{14}
 \def\@xviipt{17}
 \def\@xxpt{20}
 \def\@xxvpt{25}
 \define@mathsizes{5}{5}{5}
 \define@mathsizes{6}{5}{5}
 \define@mathsizes{7}{6}{5}
 \define@mathsizes{8}{6}{5}
 \define@mathsizes{9}{6}{5}
 \define@mathsizes{10}{7}{5}
 \define@mathsizes{11}{7}{5}
 \define@mathsizes{12}{8}{6}
\define@mathsizes{14}{10}{7}
\define@mathsizes{17}{12}{10}
\define@mathsizes{20}{14}{12}
 \define@mathsizes{25}{20}{17}
\def\fileversion{v1.1h}
\def\filedate{90/06/26}
\def\docdate {90/06/26}



\newif\if@tempswa
\def\in@#1#2{%
 \def\in@@##1#1##2##3\in@@{%
  \ifx\in@##2\in@false\else\in@true\fi}%
 \in@@#2#1\in@\in@@}
\newif\ifin@
\let\version@list=\@empty
\def\@gobblefour#1#2#3#4{}
\def\new@mathversion#1{%
%% \changes{v1.1c}{89/11/27}{`versionlist enclosed in braces.}
  \expandafter\in@\expandafter#1\expandafter{\version@list}%
  \ifin@
    \@latexerr{Math version
               `\expandafter\@gobblefour\string#1'
               already defined}\@eha
  \else
     \def\@tempa{\noexpand\@tempa\noexpand}%
     \edef\version@list{\version@list\@tempa#1}%
     \def\@tempc{\noexpand\@tempc\noexpand}%
     \let\@tempe\relax
     \def\@tempb##1##2##3{%
          \edef##1{\expandafter\remove@nil##1%
                   \@tempc
                   #1%
                   \@tempe
                   \noexpand\@nil}}%
     \alpha@list
  \fi}
\def\remove@nil#1#2\@nil{%
  \noexpand#1\noexpand#2}
\def\newmathalphabet{%
  \@ifstar{\newmathalphabet@@@}%
          {\newmathalphabet@@}}
\def\newmathalphabet@@#1{%
  \newmathalphabet@@@#1{}{}{}}
\def\newmathalphabet@@@#1#2#3#4{%
 \edef\group@number{\expandafter
  \noexpand\csname\expandafter\@gobble
  \string #1@group\endcsname}%
   \expandafter\ifx\group@number\relax
     \@tempswafalse
     \ifx\undefined#1\else\@tempswatrue\fi
   \else
     \@tempswatrue
   \fi
   \if@tempswa
     \@latexerr{Math alphabet
                `\string#1' already defined}\@eha
   \else
   \expandafter\new@mathgroup\group@number
   \new@internalmathalphabet{#1}%
      {\group@number}{#2}{#3}{#4}%
  \fi}
\let\alpha@list\@empty
%% \changes{v1.1h}{90/06/26}{Macro added.}
\let\used@alpha@list\@empty
\def\new@internalmathalphabet#1#2#3#4#5{%
    \def\@tempb{\noexpand\@tempb\noexpand}%
    \edef\alpha@list{\alpha@list\@tempb#1%
                              {#2}%
                              {{#3}{#4}{#5}}}%
    \let\@tempe\relax
    \let\@tempc\relax
    \def\@tempa##1{\@tempc
                   \noexpand##1%
                   \@tempe}%
    \edef#1{\noexpand\set@alpha
            \noexpand#1%
            \version@list
            \noexpand\@nil}%
}
\def\addtoversion#1{%
  \expandafter\addtoversion@
    \csname mv@#1\endcsname}
\def\addtoversion@#1#2#3#4#5{%
%% \changes{v1.1c}{89/11/27}{`versionlist and `alphalist enclosed
%%          in braces.}
  \expandafter\in@\expandafter#1\expandafter{\version@list}%
  \ifin@
    \expandafter\in@\expandafter#2\expandafter{\alpha@list}%
    \ifin@
      \def\next##1#1##2##3\@nil{%
        \ifx##2\@tempe
          \def#2{##1#1{{#3}{#4}{#5}}##3\@nil}%
        \else
          \@latexerr{%
             Math alphabet identifier `\string#2' already
             defined for math version `\expandafter
             \@gobblefour\string#1'}%
             {Maybe you typed the same command twice?}%
        \fi}%
     \expandafter\next#2%
%% \changes{v1.1h}{90/06/26}{Extra check and error message for
%%                           already used math alphabet identifiers.}
    \else
      \expandafter\in@\expandafter#2\expandafter{\used@alpha@list}%
      \ifin@
        \@latexerr{%
           Math alphabet identifier `\string#2' already used
           to produce text}%
           {A math alphabet identifier can only be added to a
            math version^^Jbefore its first use in math.^^J%
            Remedy: Move this \string\addtoversion
            \space declaration up.}%
      \else
        \@latexerr{%
           Math alphabet identifier `\string#2' not defined}%
           {Use \string\newmathalphabet\space to define it.}%
      \fi
    \fi
  \else
    \@latexerr{%
       Math version `\expandafter\@gobblefour\string#1' is not
       defined}{You probably mispelled the name of the math
       version.^^JOr you have to specify another document
       style option^^Jin the \string\documentstyle\space
       command.}%
  \fi
}
\def\process@table{%
    \def\@tempc{\noexpand\@tempc\noexpand}%
    \def\@tempb##1##2##3{\def\@tempe{{##3}}%
                         \edef##1{##1}}%
    \let\set@alpha\@gobble
    \let\@nil\@empty
    \alpha@list
%% \changes{v1.1f}{90/01/18}{Changed to set math all alphabet
%%           identifiers to `relax.}
    \def\@tempb##1##2##3{%
      \def\@tempc####1####2{%
        \define@mathalphabet####1##1##2####2}%
      ##1%
      \let ##1\relax}%
%% \changes{v1.1h}{90/06/26}{Added clearing of `used@alpha@list.}
    \alpha@list
    \let\used@alpha@list\@empty}
%% \changes{v1.1e}{89/12/16}{Completely revised.}
\def\set@alpha#1#2\@nil{%
   \relax\ifmmode
%% \changes{v1.1h}{90/06/26}{Added updating of `used@alpha@list.}
   \expandafter\gdef\expandafter\used@alpha@list\expandafter
     {\used@alpha@list#1}%
   \def\next##1\@tempb#1##2##3##4\@nil{%
       \def\@tempd{##2}%
       \def\@tempe{{##3}}%
       \gdef\alpha@list{##1##4}}%
   \expandafter\next\alpha@list\@nil
   \begingroup
    \def\@tempc{\noexpand\@tempc\noexpand}%
    \let\set@alpha\@gobble
    \let\@nil\@empty
    \xdef#1{#1}%
   \endgroup
   \def\@tempc##1##2{%
          \define@mathalphabet##1#1\@tempd##2}%
%% \changes{v1.1e}{89/12/16}{Argument \#1 called twice in the end.}
   #1%
   \glb@settings
   \expandafter #1\fi}


\input fontdef.tex
\input preload.tex
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@fontfamily=\fontfamily
\def\fontfamily{\p@fontfamily}
\let\family=\fontfamily
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@fontseries=\fontseries
\def\fontseries{\p@fontseries}
\let\series=\fontseries
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@fontshape=\fontshape
\def\fontshape{\p@fontshape}
\let\shape=\fontshape
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@fontsize=\fontsize
\def\fontsize{\p@fontsize}
\let\size=\fontsize
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@selectfont=\selectfont
\def\selectfont{\p@selectfont}
%% \changes{v1.1g}{90/02/08}{Macro added.}
\let\p@mathversion=\mathversion
\def\mathversion{\p@mathversion}
\new@mathversion\mv@normal
\new@mathversion\mv@bold
%% \changes{v1.0k}{89/11/08}{Changed first argument according to
%% \changes{v1.0l}{89/11/14}{Changes in naming of math  and \LaTeX{}
\define@mathgroup\mv@normal{0}
                 {cmr}{m}{n}
\define@mathgroup\mv@normal{1}
                 {cmm}{m}{it}
\define@mathgroup\mv@normal{2}
                 {cmsy}{m}{n}

\define@mathgroup\mv@bold{0}
                 {cmr}{bx}{n}
\define@mathgroup\mv@bold{1}
                 {cmm}{b}{it}
\define@mathgroup\mv@bold{2}
                 {cmsy}{b}{n}
\textfont 3 = \csname cmex/m/n/10\endcsname
\scriptfont 3 = \csname cmex/m/n/10\endcsname
\scriptscriptfont 3 = \csname cmex/m/n/10\endcsname
\expandafter\let\expandafter\tenex \the\textfont 3
%% \changes{v1.1e}{90/01/21}{Use new interface: `use@mathgroup.}
%% \changes{v1.1e}{90/01/21}{Use new interface: `use@mathgroup.}
%% \changes{v1.1e}{90/01/21}{Use new interface: `use@mathgroup.}
%% \changes{v1.1b}{89/11/28}{`rmmath $\to$ `mathrm.}
{\catcode`\= 11
\gdef\mathrm{\use@mathgroup \=cmr \z@}
\gdef\mit{\use@mathgroup \=cmm \@ne}
\gdef\cal{\use@mathgroup \=cmsy \tw@}
}
\def\rm{\prm}
\def\sf{\psf}
\def\tt{\ptt}
\def\bf{\pbf}
\def\sl{\psl}
\def\sc{\psc}
\def\it{\pit}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1f}{90/01/28}{Macro added.}
%% \changes{v1.1h}{90/02/17}{Macro added.}
%% \changes{v1.1h}{90/02/17}{Macro added.}
\def\rmdefault{cmr}
\def\sfdefault{cmss}
\def\ttdefault{cmtt}
\def\bfdefault{bx}
\def\itdefault{it}
\def\sldefault{sl}
\def\scdefault{sc}
\def\mediumseriesdefault{m}
\def\normalshapedefault{n}
%% \changes{v1.1e}{90/01/21}{Renamed to `mediumseries.}
%% \changes{v1.0h}{89/08/15}{Introduced `normalshape and
%% \changes{v1.1h}{90/02/17}{Now user default used.}
\def\mediumseries{\pmediumseries}
\def\pmediumseries{\fontseries\mediumseriesdefault\selectfont}
\def\normalshape{\pnormalshape}
\def\pnormalshape{\fontshape\normalshapedefault\selectfont}
\def\boldmath{\@nomath\boldmath
              \mathversion{bold}}
\def\unboldmath{\@nomath\unboldmath
                \mathversion{normal}}
\def\math@version{normal}
\def\hexnumber@#1{\ifcase#1 \z@
 \or \@ne \or \tw@ \or \thr@@
 \or 4\or 5\or 6\or 7\or 8\or
 9\or A\or B\or C\or D\or E\or F\fi}
%% \changes{v1.1e}{90/01/25}{Macro added for math operators.}
\def\operator@font{\mathgroup\z@}
%% \changes{v1.1e}{90/01/25}{All math operators added and changed.}
\def\log{\mathop{\operator@font log}\nolimits}
\def\lg{\mathop{\operator@font lg}\nolimits}
\def\ln{\mathop{\operator@font ln}\nolimits}
\def\lim{\mathop{\operator@font lim}}
\def\limsup{\mathop{\operator@font lim\,sup}}
\def\liminf{\mathop{\operator@font lim\,inf}}
\def\sin{\mathop{\operator@font sin}\nolimits}
\def\arcsin{\mathop{\operator@font arcsin}\nolimits}
\def\sinh{\mathop{\operator@font sinh}\nolimits}
\def\cos{\mathop{\operator@font cos}\nolimits}
\def\arccos{\mathop{\operator@font arccos}\nolimits}
\def\cosh{\mathop{\operator@font cosh}\nolimits}
\def\tan{\mathop{\operator@font tan}\nolimits}
\def\arctan{\mathop{\operator@font arctan}\nolimits}
\def\tanh{\mathop{\operator@font tanh}\nolimits}
\def\cot{\mathop{\operator@font cot}\nolimits}
\def\coth{\mathop{\operator@font coth}\nolimits}
\def\sec{\mathop{\operator@font sec}\nolimits}
\def\csc{\mathop{\operator@font csc}\nolimits}
\def\max{\mathop{\operator@font max}}
\def\min{\mathop{\operator@font min}}
\def\sup{\mathop{\operator@font sup}}
\def\inf{\mathop{\operator@font inf}}
\def\arg{\mathop{\operator@font arg}\nolimits}
\def\ker{\mathop{\operator@font ker}\nolimits}
\def\dim{\mathop{\operator@font dim}\nolimits}
\def\hom{\mathop{\operator@font hom}\nolimits}
\def\det{\mathop{\operator@font det}}
\def\exp{\mathop{\operator@font exp}\nolimits}
\def\Pr{\mathop{\operator@font Pr}}
\def\gcd{\mathop{\operator@font gcd}}
\def\deg{\mathop{\operator@font deg}\nolimits}

\def\bmod{\mskip-\medmuskip\mkern5mu
  \mathbin{\operator@font mod}\penalty900\mkern5mu\mskip-\medmuskip}
\def\pmod#1{\allowbreak\mkern18mu({\operator@font mod}\,\,#1)}
%% \changes{v1.1e}{90/01/25}{Completely redefined.}
\def\${\pdollar}
\def\pdollar{\text{\ifdim \fontdimen\@ne\font >\z@
              \sl \else \normalshape \fi\char`\$}}
\def\pounds{{\ppounds}}
\def\ppounds{\text{\ifdim \fontdimen\@ne\font >\z@
    \it \else \fontshape u\selectfont \fi \char'44}}
%% \changes{v1.1e}{90/01/25}{Macro added.}
%% \changes{v1.1k}{90/06/23}{Changed to `mbox.}
\def\text{\mbox}

\def\copyright{{\pcopyright}}
\def\pcopyright{\ooalign{\hfil
     \raise.07ex\hbox{\mediumseries\normalshape c}\hfil\crcr
     \mathhexbox20D}}
\input basefont.tex
%%  \changes{v1.1n}{91/09/28}{Cleanup for new LaTeX version.}
\newif\if@twocolumn
\newif\if@filesw
\newif\if@specialpage
\newif \if@twoside
\ifx\undefined\reset@font

\def\xpt{{\def\do{\noexpand\do\noexpand}%
   \xdef\@preamblecmds{\@preamblecmds
%% \changes{v1.1j}{90/06/03}{Removed `xpt from `@preamblecmds}
%% \changes{v1.1k}{90/06/23}{`addstuffto@version added to `preamblecmds.}
              \do\addtoversion
              \do\addtoversion@
              \do\addstuffto@version
              \do\define@mathalphabet
              \do\define@mathgroup
              \do\define@mathsizes
              \do\define@nomathsize
              \do\extra@def
              \do\hexnumber@
              \do\new@fontshape
              \do\new@internalmathalphabet
              \do\new@mathgroup
              \do\new@mathversion
              \do\newmathalphabet
              \do\newmathalphabet@@
              \do\newmathalphabet@@@
              \do\preload@sizes
              \do\process@table
              \do\remove@nil
              \do\set@alpha
              \do\subst@fontshape
              }}%
   \def\@tabclassz{\ifcase \@lastchclass
          \@acolampacol \or \@ampacol \or
          \or \or \@addamp \or
          \@acolampacol \or
          \@firstampfalse \@acol \fi
    \edef\@preamble{\@preamble{%
      \ifcase \@chnum
        \hfil\ignorespaces\@sharp\unskip\hfil
       \or \ignorespaces\@sharp\unskip\hfil
       \or \hfil\hskip\z@
          \ignorespaces\@sharp\unskip\fi}}}%
  \def\@ishortstack##1{\halign{\mb@l {####}%
           \unskip\mb@r\cr ##1\crcr}\egroup}%
  \def\cases##1{\left\{\,\vcenter{%
      \normalbaselines\m@th\ialign{%
         $####\hfil$&\quad{####}\hfil\crcr
         ##1\crcr}}\right.}%
\def\document{\endgroup
  \@colht\textheight  \@colroom\textheight \vsize\textheight
   \columnwidth\textwidth \@clubpenalty\clubpenalty
   \if@twocolumn \advance\columnwidth -\columnsep
      \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
   \fi
  \hsize\columnwidth \linewidth\hsize
  \begingroup\@floatplacement\@dblfloatplacement
   \makeatletter\let\@writefile\@gobbletwo
   \@input{\jobname.aux}\endgroup
  \if@filesw \immediate\openout\@mainaux=\jobname.aux
    \immediate\write\@mainaux{\relax}\fi
  \process@table
%% \changes{v1.1l}{90/10/12}{Force `baselineskip initialisation.}
  \let\glb@currsize\@empty
  \def\do####1{\let ####1\@notprerr}%
  \@preamblecmds
  \let\do\noexpand
  \@normalsize\everypar{}}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bf ##1\ ##2}]\it}%
  \def\@opargbegintheorem##1##2##3{\trivlist
      \item[\hskip \labelsep{\bf ##1\ ##2\ (##3)}]\it}%
%% \changes{v1.1h}{90/02/17}{`@outputpage redefined.}
  \def\@outputpage{\begingroup %\catcode`\ =10
     \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
    \if@specialpage
     \global\@specialpagefalse
          \csname ps@\@specialstyle\endcsname\fi
     \if@twoside
       \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
            \let\@themargin\oddsidemargin
          \else \let\@thehead\@evenhead
          \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
     \fi\fi
     \shipout\vbox{%
           \rm \mediumseries \normalshape
           \normalsize
           \baselineskip\z@ \lineskip\z@
           \let\par\@@par %% 15 Sep 87
           \vskip \topmargin \moveright\@themargin
           \vbox{\setbox\@tempboxa
                   \vbox to\headheight{\vfil \hbox to\textwidth
                                       {\let\label\@gobble \let\index\@gobble
                                         \@thehead}}%% 22 Feb 87
                 \dp\@tempboxa\z@
                 \box\@tempboxa
                 \vskip \headsep
                 \box\@outputbox
                 \baselineskip\footskip
                 \hbox to\textwidth{\let\label\@gobble
                           \let\index\@gobble  %% 22 Feb 87
                           \@thefoot}}}\global\@colht\textheight
           \endgroup\stepcounter{page}\let\firstmark\botmark}%
%% \changes{v1.1j}{90/06/03}{Redefined `xpt for letter.sty}
        \def\xpt{\fontsize{10}{12pt}\selectfont}}
\else
\def\xpt{{\def\do{\noexpand\do\noexpand}%
   \xdef\@preamblecmds{\@preamblecmds
              \do\addtoversion
              \do\addtoversion@
              \do\addstuffto@version
              \do\define@mathalphabet
              \do\define@mathgroup
              \do\define@mathsizes
              \do\define@nomathsize
              \do\extra@def
              \do\hexnumber@
              \do\new@fontshape
              \do\new@internalmathalphabet
              \do\new@mathgroup
              \do\new@mathversion
              \do\newmathalphabet
              \do\newmathalphabet@@
              \do\newmathalphabet@@@
              \do\preload@sizes
              \do\process@table
              \do\remove@nil
              \do\set@alpha
              \do\subst@fontshape
              }}}
\fi
%% \changes{v1.1n}{91/08/26}{Macro introduced.}
%% \changes{v1.1o}{91/11/21}{Changed to protected version of macro.}
%% \changes{v1.1o}{91/11/21}{Added extra braces for robustness.}
\def\reset@font{\p@reset@font}
\def\p@reset@font{\fontfamily{\rmdefault}%
                  \fontseries{\mediumseriesdefault}%
                  \fontshape{\normalshapedefault}\selectfont}
%\makeother\@

\endinput
