%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                         %
%                               \eightpoint                               %
%                               \ninepoint                                %
%                               \tenpoint                                 %
%                               \elevenpoint                              %
%                               \twelvepoint                              %
%                               \fourteenpoint                            %
%                               \seventeenpoint                           %
%                                                                         %
%  A macro to provide different type sizes.                               %
%  Ref.: The TeXbook, pp. 413--415, 360.                                  %
%                                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
% Get fonts not already in PLAIN TeX
\font\ninerm=cmr9   \font\eightrm=cmr8   \font\sixrm=cmr6
\font\ninei=cmmi9   \font\eighti=cmmi8   \font\sixi=cmmi6
\font\ninesy=cmsy9  \font\eightsy=cmsy8  \font\sixsy=cmsy6
\font\ninebf=cmbx9  \font\eightbf=cmbx8  \font\sixbf=cmbx6
\font\ninett=cmtt9  \font\eighttt=cmtt8
\font\nineit=cmti9  \font\eightit=cmti8
\font\ninesl=cmsl9  \font\eightsl=cmsl8
 
\font\twlrm=cmr12           \font\elvrm=cmr10 scaled 1095
\font\twli=cmmi12           \font\elvi=cmmi10 scaled 1095
\font\twlsy=cmsy10 at 12pt  \font\elvsy=cmsy10 scaled 1095
\font\twlbf=cmbx12          \font\elvbf=cmbx10 scaled 1095
\font\twltt=cmtt12          \font\elvtt=cmtt10 scaled 1095
\font\twlit=cmti12          \font\elvit=cmti10 scaled 1095
\font\twlsl=cmsl12          \font\elvsl=cmsl10 scaled 1095
\font\twlex=cmex10 at 12pt  \font\elvex=cmex10 scaled 1095
 
\font\sevenhrm=cmr7 scaled 1095   \font\fivehrm=cmr5 scaled 1095
\font\sevenhi=cmmi7 scaled 1095   \font\fivehi=cmmi5 scaled 1095
\font\sevenhsy=cmsy7 scaled 1095  \font\fivehsy=cmsy5 scaled 1095
\font\sevenhbf=cmbx7 scaled 1095  \font\fivehbf=cmbx5 scaled 1095
 
\font\ftnrm=cmr12 at 14.4pt  \font\stnrm=cmr17
\font\ftni=cmmi12 at 14.4pt  \font\stni=cmmi12 at 17.28pt
\font\ftnsy=cmsy10 at 14.4pt \font\stnsy=cmsy10 at 17.28pt
\font\ftnbf=cmbx12 at 14.4pt \font\stnbf=cmbx12 at 17.28pt
\font\ftntt=cmtt12 at 14.4pt \font\stntt=cmtt12 at 17.28pt
\font\ftnit=cmti12 at 14.4pt \font\stnit=cmti12 at 17.28pt
\font\ftnsl=cmsl12 at 14.4pt \font\stnsl=cmsl12 at 17.28pt
\font\ftnex=cmex10 at 14.4pt \font\stnex=cmex10 at 17.28pt
 
\font\twnrm=cmr12 at 20.74pt
\font\twni=cmmi12 at 20.74pt
\font\twnsy=cmsy10 at 20.74pt
\font\twnbf=cmbx12 at 20.74pt
\font\twntt=cmtt12 at 20.74pt
\font\twnit=cmti12 at 20.74pt
\font\twnsl=cmsl12 at 20.74pt
\font\twnex=cmex10 at 20.74pt
 
\font\tensc=cmcsc10
\font\elvsc=cmcsc10 scaled 1095
\font\twlsc=cmcsc10 at 12pt
\font\ftnsc=cmcsc10 at 14.4pt
\font\stnsc=cmcsc10 at 17.28pt
\font\twnsc=cmcsc10 at 20.74pt
 
% Set skew and hyphenation characters
\skewchar\ninei='177    \skewchar\eighti='177  \skewchar\sixi='177
\skewchar\ninesy='60    \skewchar\eightsy='60  \skewchar\sixsy='60
\skewchar\twli='177     \skewchar\elvi='177
\skewchar\twlsy='60     \skewchar\elvsy='60
\skewchar\sevenhi='177  \skewchar\fivehi='177
\skewchar\sevenhsy='60  \skewchar\fivehsy='60
\hyphenchar\twltt=-1  \hyphenchar\elvtt=-1
\hyphenchar\ninett=-1 \hyphenchar\eighttt=-1 \hyphenchar\tentt=-1
\skewchar\ftni='177     \skewchar\stni='177
\skewchar\ftnsy='60     \skewchar\stnsy='60
\skewchar\twnsy='60
\hyphenchar\ftntt=-1  \hyphenchar\stntt=-1
\hyphenchar\twntt=-1
 
 
\catcode`@=11 % borrow the private macros of PLAIN (with care)
\newskip\ttglue
 
\def\eightpoint{\def\rm{\fam0\eightrm}% switch to 8-point type
  \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
  \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei
  \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\eightit  \def\it{\fam\itfam\eightit}%
  \textfont\slfam=\eightsl  \def\sl{\fam\slfam\eightsl}%
  \textfont\ttfam=\eighttt  \def\tt{\fam\ttfam\eighttt}%
  \textfont\bffam=\eightbf  \scriptfont\bffam=\sixbf
   \scriptscriptfont\bffam=\fivebf  \def\bf{\fam\bffam\eightbf}%
  \def\oldstyle{\fam1\eighti}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height7pt depth2pt width\z@}%
  \def\big##1{{\hbox{$\left##1\vbox to6.5\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to9\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to14\p@{}\right.\n@space$}}}%
  \normalbaselineskip=9pt
  \normalbaselines\rm}
 
\def\ninepoint{\def\rm{\fam0\ninerm}% switch to 9-point type
  \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
  \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei
  \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\nineit  \def\it{\fam\itfam\nineit}%
  \textfont\slfam=\ninesl  \def\sl{\fam\slfam\ninesl}%
  \textfont\ttfam=\ninett  \def\tt{\fam\ttfam\ninett}%
  \textfont\bffam=\ninebf  \scriptfont\bffam=\sixbf
   \scriptscriptfont\bffam=\fivebf  \def\bf{\fam\bffam\ninebf}%
  \def\oldstyle{\fam1\ninei}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height8pt depth3pt width\z@}%
  \def\big##1{{\hbox{$\left##1\vbox to7.5\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to10.25\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to13\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to15.75\p@{}\right.\n@space$}}}%
  \normalbaselineskip=11pt
  \normalbaselines\rm}
 
\def\tenpoint{\def\rm{\fam0\tenrm}% switch to 10-point type
  \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
  \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
  \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\tenit  \def\it{\fam\itfam\tenit}%
  \textfont\slfam=\tensl  \def\sl{\fam\slfam\tensl}%
  \textfont\ttfam=\tentt  \def\tt{\fam\ttfam\tentt}%
  \textfont\bffam=\tenbf  \scriptfont\bffam=\sevenbf
   \scriptscriptfont\bffam=\fivebf  \def\bf{\fam\bffam\tenbf}%
  \def\oldstyle{\fam1\teni}%
  \def\sc{\tensc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}%
  \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}%
  \normalbaselineskip=12pt
  \normalbaselines\rm}
 
\def\elevenpoint{\def\rm{\fam0\elvrm}% switch to 11-point type
  \textfont0=\elvrm \scriptfont0=\sevenhrm \scriptscriptfont0=\fivehrm
  \textfont1=\elvi \scriptfont1=\sevenhi \scriptscriptfont1=\fivehi
  \textfont2=\elvsy \scriptfont2=\sevenhsy \scriptscriptfont2=\fivehsy
  \textfont3=\elvex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\elvit  \def\it{\fam\itfam\elvit}%
  \textfont\slfam=\elvsl  \def\sl{\fam\slfam\elvsl}%
  \textfont\ttfam=\elvtt  \def\tt{\fam\ttfam\elvtt}%
  \textfont\bffam=\elvbf  \scriptfont\bffam=\sevenhbf
   \scriptscriptfont\bffam=\fivehbf  \def\bf{\fam\bffam\elvbf}%
  \def\oldstyle{\fam1\elvi}%
  \def\sc{\elvsc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height9pt depth4pt width\z@}%
  \def\big##1{{\hbox{$\left##1\vbox to9\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to12.5\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to16\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to19\p@{}\right.\n@space$}}}%
  \normalbaselineskip=13pt
  \normalbaselines\rm}
 
\def\twelvepoint{\def\rm{\fam0\twlrm}% switch to 12-point type
  \textfont0=\twlrm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm
  \textfont1=\twli \scriptfont1=\eighti \scriptscriptfont1=\sixi
  \textfont2=\twlsy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy
  \textfont3=\twlex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\twlit  \def\it{\fam\itfam\twlit}%
  \textfont\slfam=\twlsl  \def\sl{\fam\slfam\twlsl}%
  \textfont\ttfam=\twltt  \def\tt{\fam\ttfam\twltt}%
  \textfont\bffam=\twlbf  \scriptfont\bffam=\eightbf
   \scriptscriptfont\bffam=\sixbf  \def\bf{\fam\bffam\twlbf}%
  \def\oldstyle{\fam1\twli}%
  \def\sc{\twlsc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height10pt depth4pt width\z@}%
  \def\big##1{{\hbox{$\left##1\vbox to10\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to14\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to21\p@{}\right.\n@space$}}}%
  \normalbaselineskip=14.4pt
  \normalbaselines\rm}
 
\def\fourteenpoint{\def\rm{\fam0\ftnrm}% switch to 14-point type
  \textfont0=\ftnrm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm
  \textfont1=\ftni \scriptfont1=\teni \scriptscriptfont1=\seveni
  \textfont2=\ftnsy \scriptfont2=\tensy \scriptscriptfont2=\sevensy
  \textfont3=\ftnex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \textfont\itfam=\ftnit  \def\it{\fam\itfam\ftnit}%
  \textfont\slfam=\ftnsl  \def\sl{\fam\slfam\ftnsl}%
  \textfont\ttfam=\ftntt  \def\tt{\fam\ttfam\ftntt}%
  \textfont\bffam=\ftnbf  \scriptfont\bffam=\tenbf
   \scriptscriptfont\bffam=\sevenbf  \def\bf{\fam\bffam\ftnbf}%
  \def\oldstyle{\fam1\ftni}%
  \def\sc{\ftnsc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height12pt depth4.5pt width0pt}%
  \def\big##1{{\hbox{$\left##1\vbox to12\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to16.5\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to21\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to25\p@{}\right.\n@space$}}}%
  \normalbaselineskip=17.28pt
  \normalbaselines\rm}
 
\def\seventeenpoint{\def\rm{\fam0\stnrm}% switch to 11-point type
  \textfont0=\stnrm \scriptfont0=\twlrm \scriptscriptfont0=\ninerm
  \textfont1=\stni \scriptfont1=\twli \scriptscriptfont1=\ninei
  \textfont2=\stnsy \scriptfont2=\twlsy \scriptscriptfont2=\ninesy
  \textfont3=\stnex \scriptfont3=\twlex \scriptscriptfont3=\tenex
  \textfont\itfam=\stnit  \def\it{\fam\itfam\stnit}%
  \textfont\slfam=\stnsl  \def\sl{\fam\slfam\stnsl}%
  \textfont\ttfam=\stntt  \def\tt{\fam\ttfam\stntt}%
  \textfont\bffam=\stnbf  \scriptfont\bffam=\twlbf
   \scriptscriptfont\bffam=\ninebf  \def\bf{\fam\bffam\stnbf}%
  \def\oldstyle{\fam1\stni}%
  \def\sc{\stnsc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height15pt depth6pt width0pt}%
  \def\big##1{{\hbox{$\left##1\vbox to15\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to20\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to25\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to30\p@{}\right.\n@space$}}}%
  \normalbaselineskip=20.74pt
  \normalbaselines\rm}
 
\def\twentypoint{\def\rm{\fam0\twnrm}% switch to 21-point type
  \textfont0=\twnrm \scriptfont0=\ftnrm \scriptscriptfont0=\tenrm
  \textfont1=\twni \scriptfont1=\ftni \scriptscriptfont1=\teni
  \textfont2=\twnsy \scriptfont2=\ftnsy \scriptscriptfont2=\tensy
  \textfont3=\twnex \scriptfont3=\ftnex \scriptscriptfont3=\tenex
  \textfont\itfam=\twnit  \def\it{\fam\itfam\twnit}%
  \textfont\slfam=\twnsl  \def\sl{\fam\slfam\twnsl}%
  \textfont\ttfam=\twntt  \def\tt{\fam\ttfam\twntt}%
  \textfont\bffam=\twnbf  \scriptfont\bffam=\ftnbf
   \scriptscriptfont\bffam=\tenbf  \def\bf{\fam\bffam\twnbf}%
  \def\oldstyle{\fam1\twni}%
  \def\sc{\twnsc}%
  \tt \ttglue=.5em plus.25em minus.15em
  \setbox\strutbox=\hbox{\vrule height17.5pt depth6pt width0pt}%
  \def\big##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}%
  \def\Big##1{{\hbox{$\left##1\vbox to24\p@{}\right.\n@space$}}}%
  \def\bigg##1{{\hbox{$\left##1\vbox to30\p@{}\right.\n@space$}}}%
  \def\Bigg##1{{\hbox{$\left##1\vbox to36\p@{}\right.\n@space$}}}%
  \normalbaselineskip=24.88pt
  \abovedisplayskip 18pt plus 3pt minus 9pt
  \belowdisplayskip 18pt plus 3pt minus 9pt
  \normalbaselines\rm}
 
\catcode`@=12  % Back to normal
